summaryrefslogtreecommitdiff
path: root/terranix/tailscale/acl.nix
blob: 80e3537e70e88aee7c5c7d45db22a0ba3bdfbdbe (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{ lib, ... }:
{
  resource.tailscale_acl.default = {
    acl = toString (
      builtins.toJSON {
        tagOwners =
          let
            me = [ "getchoo@github" ];
            tags = map (name: "tag:${name}") [
              "server"
              "personal"
            ];
          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: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"
              ]
            )
          ];
      }
    );
  };
}