summaryrefslogtreecommitdiff
path: root/ext/terranix/tailscale/acl.nix
blob: d27d3e1404cdcf107ece72b9adfa7cf77de1d83d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{lib, ...}: {
  resource.tailscale_acl.default = {
    acl = toString (builtins.toJSON {
      tagOwners = let
        me = ["getchoo@github"];
        tags = map (name: "tag:${name}") ["server" "personal" "gha"];
      in
        lib.genAttrs tags (_: me);

      acls = let
        mkAcl = action: src: dst: {inherit action src dst;};
      in [
        (mkAcl "accept" ["tag:personal"] ["*:*"])
        (mkAcl "accept" ["tag:server" "tag:gha"] ["tag:server:*"])
      ];

      ssh = let
        mkSshAcl = action: src: dst: users: {inherit action src dst users;};
      in [
        (mkSshAcl "accept" ["tag:personal"] ["tag:server" "tag:personal"] ["autogroup:nonroot" "root"])
        (mkSshAcl "accept" ["tag:gha"] ["tag:server"] ["root"])
      ];
    });
  };
}