)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6f3c2011_3b776a52","updated":"2021-04-12 23:40:22.000000000","message":"hoo boy","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"}],"ops/machines/whitby/default.nix":[{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":392,"context_line":"        auth \u003d {"},{"line_number":393,"context_line":"          generic_oauth \u003d {"},{"line_number":394,"context_line":"            enabled \u003d true;"},{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"57c6e258_fffaed62","line":395,"range":{"start_line":395,"start_character":43,"end_line":395,"end_character":53},"updated":"2021-04-12 23:40:22.000000000","message":"is this just a random string?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"caaf0c83fba7b428225a6b2596ece221f33c5e38","unresolved":true,"context_lines":[{"line_number":392,"context_line":"        auth \u003d {"},{"line_number":393,"context_line":"          generic_oauth \u003d {"},{"line_number":394,"context_line":"            enabled \u003d true;"},{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"ea6eb447_6fab213a","line":395,"range":{"start_line":395,"start_character":43,"end_line":395,"end_character":53},"in_reply_to":"57c6e258_fffaed62","updated":"2021-04-12 23:48:21.000000000","message":"I\u0027m guessing this is the client ID CAS generated?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        auth \u003d {"},{"line_number":393,"context_line":"          generic_oauth \u003d {"},{"line_number":394,"context_line":"            enabled \u003d true;"},{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"cce81759_d2ee477b","line":395,"range":{"start_line":395,"start_character":43,"end_line":395,"end_character":53},"in_reply_to":"57c6e258_fffaed62","updated":"2021-04-12 23:53:52.000000000","message":"Yeah, it has to match the value in the CAS services config. There\u0027s no real reason for putting a unique string here but I do it just because then it\u0027s super easy to grep for.\n\nIf you\u0027re curious as to what the CAS service config looks like, there\u0027s one in /etc/cas/services/grafana-6.json.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"0fae00b65138929dace70dc4a22eda9e940a0a60","unresolved":true,"context_lines":[{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"36046147_202d516c","line":398,"range":{"start_line":398,"start_character":106,"end_line":398,"end_character":112},"updated":"2021-04-12 23:34:41.000000000","message":"Do we want to make everyone with TVL accounts Admin, or Editor, or something else?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"4905f23a_f8e9c662","line":398,"range":{"start_line":398,"start_character":106,"end_line":398,"end_character":112},"in_reply_to":"36046147_202d516c","updated":"2021-04-12 23:40:22.000000000","message":"we may want to actually have a grafana role attribute in ldap (if that\u0027s easy) - I would be nervous about everyone even being editor.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"caaf0c83fba7b428225a6b2596ece221f33c5e38","unresolved":true,"context_lines":[{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"6bf449a9_4e824df2","line":398,"range":{"start_line":398,"start_character":106,"end_line":398,"end_character":112},"in_reply_to":"4905f23a_f8e9c662","updated":"2021-04-12 23:48:21.000000000","message":"I think everyone being editor is fine. In the long run, we should figure out if there\u0027s an ergonomic way to put \"important\" dashboards into git.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"06e9d5d8_1c6e21b9","line":398,"range":{"start_line":398,"start_character":106,"end_line":398,"end_character":112},"in_reply_to":"4905f23a_f8e9c662","updated":"2021-04-12 23:53:52.000000000","message":"It\u0027s not easy _yet_.\n\nFiled https://b.tvl.fyi/issues/120 to follow up, I\u0027ll leave this as-is for the moment.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"bb082be72c6cf32eab232e6167481da32de35c34","unresolved":true,"context_lines":[{"line_number":395,"context_line":"            client_id \u003d \"OAUTH-TVL-grafana-f1A1EmHLDT\";"},{"line_number":396,"context_line":"            scopes \u003d \"openid profile email\";"},{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"3bf765d4_b9fb1004","line":398,"range":{"start_line":398,"start_character":106,"end_line":398,"end_character":112},"in_reply_to":"6bf449a9_4e824df2","updated":"2021-04-12 23:53:40.000000000","message":"there is! the grafana \"provision\" key in the gerrit nixos module supports embedding entire dashboards.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"},{"line_number":402,"context_line":"            allow_sign_up \u003d true;"},{"line_number":403,"context_line":"            auth_url \u003d \"https://login.tvl.fyi/oidc/authorize\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"ffb88dc9_e78f33c4","line":400,"updated":"2021-04-12 23:40:22.000000000","message":"is this true? do we not want dn?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            name \u003d \"TVL\";"},{"line_number":398,"context_line":"            role_attribute_path \u003d \"((sub \u003d\u003d \u0027lukegb\u0027 || sub \u003d\u003d \u0027grfn\u0027 || sub \u003d\u003d \u0027tazjin\u0027) \u0026\u0026 \u0027Admin\u0027) || \u0027Viewer\u0027\";"},{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"},{"line_number":402,"context_line":"            allow_sign_up \u003d true;"},{"line_number":403,"context_line":"            auth_url \u003d \"https://login.tvl.fyi/oidc/authorize\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"fe57249c_bbd9608f","line":400,"in_reply_to":"ffb88dc9_e78f33c4","updated":"2021-04-12 23:53:52.000000000","message":"Probably not: I\u0027m kinda avoiding using DNs in places and preferring to use usernames instead.\n\nThey can\u0027t conflict, anyway, because you need to log into CAS with a unique username.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"},{"line_number":402,"context_line":"            allow_sign_up \u003d true;"},{"line_number":403,"context_line":"            auth_url \u003d \"https://login.tvl.fyi/oidc/authorize\";"},{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"97991899_ad944948","line":402,"updated":"2021-04-12 23:40:22.000000000","message":"do we want this?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":399,"context_line":"            email_attribute_path \u003d \"mail\";"},{"line_number":400,"context_line":"            login_attribute_path \u003d \"sub\";"},{"line_number":401,"context_line":"            name_attribute_path \u003d \"displayName\";"},{"line_number":402,"context_line":"            allow_sign_up \u003d true;"},{"line_number":403,"context_line":"            auth_url \u003d \"https://login.tvl.fyi/oidc/authorize\";"},{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"22e6f774_41e310f2","line":402,"in_reply_to":"97991899_ad944948","updated":"2021-04-12 23:53:52.000000000","message":"Yeah, this means \"allow creating new Grafana accounts if the identity isn\u0027t one I\u0027ve seen before\", basically.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"0fae00b65138929dace70dc4a22eda9e940a0a60","unresolved":true,"context_lines":[{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"},{"line_number":406,"context_line":"          };"},{"line_number":407,"context_line":"          anonymous \u003d {"},{"line_number":408,"context_line":"            enabled \u003d true;"},{"line_number":409,"context_line":"            org_name \u003d \"The Virus Lounge\";"},{"line_number":410,"context_line":"            org_role \u003d \"Viewer\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"eaafb773_a7d94388","line":407,"range":{"start_line":407,"start_character":10,"end_line":407,"end_character":20},"updated":"2021-04-12 23:34:41.000000000","message":"This also enables anonymous access so you can view everything without being logged in.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"},{"line_number":406,"context_line":"          };"},{"line_number":407,"context_line":"          anonymous \u003d {"},{"line_number":408,"context_line":"            enabled \u003d true;"},{"line_number":409,"context_line":"            org_name \u003d \"The Virus Lounge\";"},{"line_number":410,"context_line":"            org_role \u003d \"Viewer\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"fc4e19e6_fecc2c1e","line":407,"range":{"start_line":407,"start_character":10,"end_line":407,"end_character":20},"in_reply_to":"968a479d_8dda983f","updated":"2021-04-12 23:53:52.000000000","message":"Ack","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"caaf0c83fba7b428225a6b2596ece221f33c5e38","unresolved":false,"context_lines":[{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"},{"line_number":406,"context_line":"          };"},{"line_number":407,"context_line":"          anonymous \u003d {"},{"line_number":408,"context_line":"            enabled \u003d true;"},{"line_number":409,"context_line":"            org_name \u003d \"The Virus Lounge\";"},{"line_number":410,"context_line":"            org_role \u003d \"Viewer\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"408467a6_0d1bdb3b","line":407,"range":{"start_line":407,"start_character":10,"end_line":407,"end_character":20},"in_reply_to":"968a479d_8dda983f","updated":"2021-04-12 23:48:21.000000000","message":"Neat!","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":404,"context_line":"            token_url \u003d \"https://login.tvl.fyi/oidc/accessToken\";"},{"line_number":405,"context_line":"            api_url \u003d \"https://login.tvl.fyi/oidc/profile\";"},{"line_number":406,"context_line":"          };"},{"line_number":407,"context_line":"          anonymous \u003d {"},{"line_number":408,"context_line":"            enabled \u003d true;"},{"line_number":409,"context_line":"            org_name \u003d \"The Virus Lounge\";"},{"line_number":410,"context_line":"            org_role \u003d \"Viewer\";"}],"source_content_type":"text/x-nix","patch_set":1,"id":"968a479d_8dda983f","line":407,"range":{"start_line":407,"start_character":10,"end_line":407,"end_character":20},"in_reply_to":"eaafb773_a7d94388","updated":"2021-04-12 23:40:22.000000000","message":"Ack","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":416,"context_line":"      };"},{"line_number":417,"context_line":"      inherit (builtins) typeOf replaceStrings listToAttrs concatLists;"},{"line_number":418,"context_line":"      inherit (lib) toUpper mapAttrsToList nameValuePair concatStringsSep;"},{"line_number":419,"context_line":"      encodeName \u003d bits: replaceStrings [\".\"] [\"_\"] (toUpper (concatStringsSep \"_\" bits));"},{"line_number":420,"context_line":"      optionToString \u003d value:"},{"line_number":421,"context_line":"        if (typeOf value) \u003d\u003d \"bool\" then if value then \"true\" else \"false\""},{"line_number":422,"context_line":"        else builtins.toString value;"}],"source_content_type":"text/x-nix","patch_set":1,"id":"a4709b1c_b67da188","line":419,"range":{"start_line":419,"start_character":19,"end_line":419,"end_character":23},"updated":"2021-04-12 23:40:22.000000000","message":"\"raw\", maybe?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":416,"context_line":"      };"},{"line_number":417,"context_line":"      inherit (builtins) typeOf replaceStrings listToAttrs concatLists;"},{"line_number":418,"context_line":"      inherit (lib) toUpper mapAttrsToList nameValuePair concatStringsSep;"},{"line_number":419,"context_line":"      encodeName \u003d bits: replaceStrings [\".\"] [\"_\"] (toUpper (concatStringsSep \"_\" bits));"},{"line_number":420,"context_line":"      optionToString \u003d value:"},{"line_number":421,"context_line":"        if (typeOf value) \u003d\u003d \"bool\" then if value then \"true\" else \"false\""},{"line_number":422,"context_line":"        else builtins.toString value;"}],"source_content_type":"text/x-nix","patch_set":1,"id":"ff64f82e_581b5598","line":419,"range":{"start_line":419,"start_character":19,"end_line":419,"end_character":23},"in_reply_to":"a4709b1c_b67da188","updated":"2021-04-12 23:53:52.000000000","message":"Done","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":418,"context_line":"      inherit (lib) toUpper mapAttrsToList nameValuePair concatStringsSep;"},{"line_number":419,"context_line":"      encodeName \u003d bits: replaceStrings [\".\"] [\"_\"] (toUpper (concatStringsSep \"_\" bits));"},{"line_number":420,"context_line":"      optionToString \u003d value:"},{"line_number":421,"context_line":"        if (typeOf value) \u003d\u003d \"bool\" then if value then \"true\" else \"false\""},{"line_number":422,"context_line":"        else builtins.toString value;"},{"line_number":423,"context_line":"      encodeOptions \u003d prefix: inp: concatLists (mapAttrsToList (name: value:"},{"line_number":424,"context_line":"        if (typeOf value) \u003d\u003d \"set\""}],"source_content_type":"text/x-nix","patch_set":1,"id":"b0320f85_0b6b7e03","line":421,"updated":"2021-04-12 23:40:22.000000000","message":"bwoaugh\n\nsome \\n here might be nice.","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":418,"context_line":"      inherit (lib) toUpper mapAttrsToList nameValuePair concatStringsSep;"},{"line_number":419,"context_line":"      encodeName \u003d bits: replaceStrings [\".\"] [\"_\"] (toUpper (concatStringsSep \"_\" bits));"},{"line_number":420,"context_line":"      optionToString \u003d value:"},{"line_number":421,"context_line":"        if (typeOf value) \u003d\u003d \"bool\" then if value then \"true\" else \"false\""},{"line_number":422,"context_line":"        else builtins.toString value;"},{"line_number":423,"context_line":"      encodeOptions \u003d prefix: inp: concatLists (mapAttrsToList (name: value:"},{"line_number":424,"context_line":"        if (typeOf value) \u003d\u003d \"set\""}],"source_content_type":"text/x-nix","patch_set":1,"id":"ad7f3946_3320507c","line":421,"in_reply_to":"b0320f85_0b6b7e03","updated":"2021-04-12 23:53:52.000000000","message":"Done","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000010,"name":"aspen","email":"root@gws.fyi","username":"aspen"},"change_message_id":"9d7c7ea45325c7646b69f6f251b43dee20dbdc2b","unresolved":true,"context_lines":[{"line_number":436,"context_line":"      }];"},{"line_number":437,"context_line":"    };"},{"line_number":438,"context_line":"  };"},{"line_number":439,"context_line":"  systemd.services.grafana.serviceConfig.EnvironmentFile \u003d \"/etc/secrets/grafana\";"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"  security.sudo.extraRules \u003d ["},{"line_number":442,"context_line":"    {"}],"source_content_type":"text/x-nix","patch_set":1,"id":"d7f7ada7_37489945","line":439,"updated":"2021-04-12 23:40:22.000000000","message":"just a thought - maybe we could have a convention of commenting the *keys* that are present in an /etc/secrets EnvironmentFile at least, so we don\u0027t have to go ssh to whitby to see what\u0027s in there?","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"},{"author":{"_account_id":1000000,"name":"lukegb","email":"lukegb@tvl.fyi","username":"lukegb","status":"zzz"},"change_message_id":"83fed0514fdcb6fe18657785f387b1a7961edea2","unresolved":false,"context_lines":[{"line_number":436,"context_line":"      }];"},{"line_number":437,"context_line":"    };"},{"line_number":438,"context_line":"  };"},{"line_number":439,"context_line":"  systemd.services.grafana.serviceConfig.EnvironmentFile \u003d \"/etc/secrets/grafana\";"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"  security.sudo.extraRules \u003d ["},{"line_number":442,"context_line":"    {"}],"source_content_type":"text/x-nix","patch_set":1,"id":"77b73c33_852838e9","line":439,"in_reply_to":"d7f7ada7_37489945","updated":"2021-04-12 23:53:52.000000000","message":"But then I\u0027d have to admit that I\u0027ve put the entire CAS config into the secrets file...","commit_id":"58893c678babab9a6baa14f2144bb446ffb88709"}]}
