)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"b1929f9d2d67678504e3011f9db5f0936706c084","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"77c46b27_4299b874","updated":"2021-12-27 01:33:40.000000000","message":"It would be nice if this got yants\u0027d, but it wasn\u0027t before so...","commit_id":"5532dcafee99ce1c6d4ddd472c672ded85ef3f7c"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"796d6d9027c02030eafdfd8807e36b8359cb836e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1a9df842_140ffac4","in_reply_to":"39b369fe_0073cead","updated":"2021-12-27 03:00:38.000000000","message":"Done","commit_id":"5532dcafee99ce1c6d4ddd472c672ded85ef3f7c"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"6d387d55e23e7844b60af3aefe4ccd8a7bcb34d6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"39b369fe_0073cead","in_reply_to":"77c46b27_4299b874","updated":"2021-12-27 01:59:15.000000000","message":"What should be/is the return type of `drvTargets`?","commit_id":"5532dcafee99ce1c6d4ddd472c672ded85ef3f7c"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"c570cc4ee9d7390f9dc817e36daa42b361770a8e","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"6d26f62a_da228f77","updated":"2021-12-27 03:59:20.000000000","message":"needs rebase.","commit_id":"65f1c20a6ae1a54590db1893359840bf44e743c8"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"25c5d6f9aea7768ae177e808394b6c84de57af32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"e0cb5c15_6623857f","in_reply_to":"6d26f62a_da228f77","updated":"2021-12-27 04:05:42.000000000","message":"Done","commit_id":"65f1c20a6ae1a54590db1893359840bf44e743c8"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"25c5d6f9aea7768ae177e808394b6c84de57af32","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"5618411e_5c38e8e9","updated":"2021-12-27 04:05:42.000000000","message":"I also split out the debug-aid change to `yants.restrict`, because it is strictly independent.","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"7c823924b32686a3a1f761e1dd3ecfaacdf2470c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"dc35a1a3_5f089c6b","updated":"2021-12-27 22:59:00.000000000","message":"Naming nitpick, otherwise LGTM.","commit_id":"17064eec3cb74aacd4201dd479d99a24cdef443c"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"38ce77de4411dd48eb3acef4b2f5440f83144fd9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"8c291792_725d4f08","updated":"2021-12-27 20:10:25.000000000","message":"got rid of yants\u0027 drvTargets type","commit_id":"17064eec3cb74aacd4201dd479d99a24cdef443c"}],"nix/readTree/default.nix":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d904c20a1b9b907a8392c85505a70e93fbc03182","unresolved":true,"context_lines":[{"line_number":221,"context_line":"  # derivations."},{"line_number":222,"context_line":"  #"},{"line_number":223,"context_line":"  # Type: attrs -\u003e attrs"},{"line_number":224,"context_line":"  # TODO: use yants for type-checking of this function,"},{"line_number":225,"context_line":"  #  but this requires moving it out of readTree, which is cumbersome."},{"line_number":226,"context_line":"  drvTargets \u003d attrs: attrs // {"},{"line_number":227,"context_line":"    meta \u003d {"},{"line_number":228,"context_line":"      targets \u003d builtins.filter"},{"line_number":229,"context_line":"      (x: isDerivation attrs.\"${x}\")"}],"source_content_type":"text/x-nix","patch_set":17,"id":"d00c04e2_c13cb234","line":226,"range":{"start_line":224,"start_character":0,"end_line":226,"end_character":0},"updated":"2021-12-27 08:08:05.000000000","message":"This is part of readTree\u0027s external interface (which is used outside of depot) and should not use yants.","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"38ce77de4411dd48eb3acef4b2f5440f83144fd9","unresolved":false,"context_lines":[{"line_number":221,"context_line":"  # derivations."},{"line_number":222,"context_line":"  #"},{"line_number":223,"context_line":"  # Type: attrs -\u003e attrs"},{"line_number":224,"context_line":"  # TODO: use yants for type-checking of this function,"},{"line_number":225,"context_line":"  #  but this requires moving it out of readTree, which is cumbersome."},{"line_number":226,"context_line":"  drvTargets \u003d attrs: attrs // {"},{"line_number":227,"context_line":"    meta \u003d {"},{"line_number":228,"context_line":"      targets \u003d builtins.filter"},{"line_number":229,"context_line":"      (x: isDerivation attrs.\"${x}\")"}],"source_content_type":"text/x-nix","patch_set":17,"id":"7cea9e87_dd8438d8","line":226,"range":{"start_line":224,"start_character":0,"end_line":226,"end_character":0},"in_reply_to":"d00c04e2_c13cb234","updated":"2021-12-27 20:10:25.000000000","message":"Ack","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"}],"nix/yants/default.nix":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"d904c20a1b9b907a8392c85505a70e93fbc03182","unresolved":true,"context_lines":[{"line_number":107,"context_line":"  function \u003d typedef \"function\" (x: isFunction x || (isAttrs x \u0026\u0026 x ? \"__functor\""},{"line_number":108,"context_line":"                                                 \u0026\u0026 isFunction x.__functor));"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  drvTargets \u003d typedef\u0027 rec {"},{"line_number":111,"context_line":"    name \u003d \"drvTargets\";"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    checkType \u003d vset: if isAttrs vset \u0026\u0026 vset ? \"meta\" \u0026\u0026 vset.meta ? \"targets\""}],"source_content_type":"text/x-nix","patch_set":17,"id":"ada5421a_21556b8b","line":110,"range":{"start_line":110,"start_character":0,"end_line":110,"end_character":29},"updated":"2021-12-27 08:08:05.000000000","message":"I don\u0027t think this should be here, it isn\u0027t really part of yants\u0027 core. Maybe there should be a //nix/typed or something where we put wrappers and other types for otherwise untyped Nix constructs?","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"},{"author":{"_account_id":1000034,"name":"sterni","email":"sternenseemann@systemli.org","username":"sterni"},"change_message_id":"1415fa800633b104b80c7e8ef774770df319dadd","unresolved":true,"context_lines":[{"line_number":107,"context_line":"  function \u003d typedef \"function\" (x: isFunction x || (isAttrs x \u0026\u0026 x ? \"__functor\""},{"line_number":108,"context_line":"                                                 \u0026\u0026 isFunction x.__functor));"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  drvTargets \u003d typedef\u0027 rec {"},{"line_number":111,"context_line":"    name \u003d \"drvTargets\";"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    checkType \u003d vset: if isAttrs vset \u0026\u0026 vset ? \"meta\" \u0026\u0026 vset.meta ? \"targets\""}],"source_content_type":"text/x-nix","patch_set":17,"id":"f34b9ab1_822afe35","line":110,"range":{"start_line":110,"start_character":0,"end_line":110,"end_character":29},"in_reply_to":"ada5421a_21556b8b","updated":"2021-12-27 12:13:16.000000000","message":"Also I think this type is relatively unnecessary as it just checks things that are already guaranteed to be the case when using drvTargets. With the performance penalty of yants I don\u0027t think this is really worth it.","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"38ce77de4411dd48eb3acef4b2f5440f83144fd9","unresolved":false,"context_lines":[{"line_number":107,"context_line":"  function \u003d typedef \"function\" (x: isFunction x || (isAttrs x \u0026\u0026 x ? \"__functor\""},{"line_number":108,"context_line":"                                                 \u0026\u0026 isFunction x.__functor));"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"  drvTargets \u003d typedef\u0027 rec {"},{"line_number":111,"context_line":"    name \u003d \"drvTargets\";"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    checkType \u003d vset: if isAttrs vset \u0026\u0026 vset ? \"meta\" \u0026\u0026 vset.meta ? \"targets\""}],"source_content_type":"text/x-nix","patch_set":17,"id":"e704ba1e_55ad080b","line":110,"range":{"start_line":110,"start_character":0,"end_line":110,"end_character":29},"in_reply_to":"f34b9ab1_822afe35","updated":"2021-12-27 20:10:25.000000000","message":"Ack","commit_id":"c8625a0f40e9c2d215ea54f6c1fb31475671db44"}],"ops/secrets/mkSecrets.nix":[{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"8ad8ab6bcd20da15ab3030ba99c81c6b96ddc9ec","unresolved":true,"context_lines":[{"line_number":11,"context_line":"  secret-bunch \u003d y.struct { publicKeys \u003d y.list ssh-pubkey; };"},{"line_number":12,"context_line":"in"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"y.defun [ y.path (y.attrs secret-bunch) (y.drvTargets) ]"},{"line_number":15,"context_line":"  (path: secrets:"},{"line_number":16,"context_line":"    depot.nix.readTree.drvTargets"},{"line_number":17,"context_line":"      # Import each secret into the Nix store"}],"source_content_type":"text/x-nix","patch_set":15,"id":"ad60d415_da5313a7","line":14,"updated":"2021-12-27 03:48:08.000000000","message":"I think inherit\u0027ing things from `y` would make this all a bit more readable","commit_id":"65f1c20a6ae1a54590db1893359840bf44e743c8"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"25c5d6f9aea7768ae177e808394b6c84de57af32","unresolved":false,"context_lines":[{"line_number":11,"context_line":"  secret-bunch \u003d y.struct { publicKeys \u003d y.list ssh-pubkey; };"},{"line_number":12,"context_line":"in"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"y.defun [ y.path (y.attrs secret-bunch) (y.drvTargets) ]"},{"line_number":15,"context_line":"  (path: secrets:"},{"line_number":16,"context_line":"    depot.nix.readTree.drvTargets"},{"line_number":17,"context_line":"      # Import each secret into the Nix store"}],"source_content_type":"text/x-nix","patch_set":15,"id":"fe466436_e185fe32","line":14,"in_reply_to":"ad60d415_da5313a7","updated":"2021-12-27 04:05:42.000000000","message":"Done","commit_id":"65f1c20a6ae1a54590db1893359840bf44e743c8"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"7c823924b32686a3a1f761e1dd3ecfaacdf2470c","unresolved":true,"context_lines":[{"line_number":17,"context_line":"    struct"},{"line_number":18,"context_line":"    ;"},{"line_number":19,"context_line":"  ssh-pubkey \u003d restrict \"SSH pubkey\" (lib.hasPrefix \"ssh-\") string;"},{"line_number":20,"context_line":"  secret-bunch \u003d struct { publicKeys \u003d list ssh-pubkey; };"},{"line_number":21,"context_line":"in"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"defun [ path (attrs secret-bunch) (attrs any) ]"}],"source_content_type":"text/x-nix","patch_set":18,"id":"6308965e_79c0861e","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":23},"updated":"2021-12-27 22:59:00.000000000","message":"I\u0027d name this something like \"agenixSecret\" and pass that as `struct \"agenixSecret\"` as well (which creates nicer error messages)","commit_id":"17064eec3cb74aacd4201dd479d99a24cdef443c"},{"author":{"_account_id":1000046,"name":"fogti","email":"fogti+devel@ytrizja.de","username":"fogti"},"change_message_id":"0469563e4902f8c90e71fef2cc4e4257f3327e6d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    struct"},{"line_number":18,"context_line":"    ;"},{"line_number":19,"context_line":"  ssh-pubkey \u003d restrict \"SSH pubkey\" (lib.hasPrefix \"ssh-\") string;"},{"line_number":20,"context_line":"  secret-bunch \u003d struct { publicKeys \u003d list ssh-pubkey; };"},{"line_number":21,"context_line":"in"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"defun [ path (attrs secret-bunch) (attrs any) ]"}],"source_content_type":"text/x-nix","patch_set":18,"id":"aa618a3e_7825ee05","line":20,"range":{"start_line":20,"start_character":2,"end_line":20,"end_character":23},"in_reply_to":"6308965e_79c0861e","updated":"2021-12-27 23:15:23.000000000","message":"Done","commit_id":"17064eec3cb74aacd4201dd479d99a24cdef443c"}]}
