diff options
Diffstat (limited to 'custom')
| -rw-r--r-- | custom/tinc/yggdrasil.nix | 61 |
1 files changed, 35 insertions, 26 deletions
diff --git a/custom/tinc/yggdrasil.nix b/custom/tinc/yggdrasil.nix index 035b9b10..d4bf26f1 100644 --- a/custom/tinc/yggdrasil.nix +++ b/custom/tinc/yggdrasil.nix | |||
| @@ -4,8 +4,26 @@ with lib; | |||
| 4 | 4 | ||
| 5 | let | 5 | let |
| 6 | cfg = config.services.yggdrasilTinc; | 6 | cfg = config.services.yggdrasilTinc; |
| 7 | in { | ||
| 8 | 7 | ||
| 8 | borealis-up = pkgs.writeScript "borealis-up.sh" '' | ||
| 9 | #!${pkgs.stdenv.shell} | ||
| 10 | ${pkgs.nettools}/bin/route add -net 10.141.1.0 netmask 255.255.255.0 gw 10.141.1.1 dev $INTERFACE metric 9999 | ||
| 11 | ${optionalString cfg.useDNS '' | ||
| 12 | ${pkgs.openresolv}/bin/resolvconf -m 0 -a tinc.yggdrasil <<EOF | ||
| 13 | domain yggdrasil | ||
| 14 | nameserver 10.141.1.1 | ||
| 15 | EOF | ||
| 16 | ''} | ||
| 17 | ''; | ||
| 18 | |||
| 19 | borealis-down = pkgs.writeScript "borealis-down.sh" '' | ||
| 20 | #!${pkgs.stdenv.shell} | ||
| 21 | ${pkgs.nettools}/bin/route del -net 10.141.1.0 netmask 255.255.255.0 gw 10.141.1.1 dev $INTERFACE | ||
| 22 | ${optionalString cfg.useDNS '' | ||
| 23 | ${pkgs.openresolv}/bin/resolvconf -d tinc.yggdrasil | ||
| 24 | ''} | ||
| 25 | ''; | ||
| 26 | in { | ||
| 9 | options = { | 27 | options = { |
| 10 | services.yggdrasilTinc = { | 28 | services.yggdrasilTinc = { |
| 11 | enable = mkEnableOption "yggdrasil tinc network"; | 29 | enable = mkEnableOption "yggdrasil tinc network"; |
| @@ -20,7 +38,7 @@ in { | |||
| 20 | 38 | ||
| 21 | useDNS = mkOption { | 39 | useDNS = mkOption { |
| 22 | default = true; | 40 | default = true; |
| 23 | types = types.bool; | 41 | type = types.bool; |
| 24 | description = '' | 42 | description = '' |
| 25 | Use borealis as primary dns server | 43 | Use borealis as primary dns server |
| 26 | ''; | 44 | ''; |
| @@ -28,7 +46,7 @@ in { | |||
| 28 | 46 | ||
| 29 | name = mkOption { | 47 | name = mkOption { |
| 30 | default = config.networking.hostName; | 48 | default = config.networking.hostName; |
| 31 | types = types.str; | 49 | type = types.str; |
| 32 | description = '' | 50 | description = '' |
| 33 | Node identifier | 51 | Node identifier |
| 34 | ''; | 52 | ''; |
| @@ -44,6 +62,13 @@ in { | |||
| 44 | }; | 62 | }; |
| 45 | 63 | ||
| 46 | config = mkIf cfg.enable { | 64 | config = mkIf cfg.enable { |
| 65 | security.sudo = { | ||
| 66 | enable = true; | ||
| 67 | extraConfig = '' | ||
| 68 | tinc.yggdrasil ${config.networking.hostName} = (root) ${borealis-up}, ${borealis-down} | ||
| 69 | ''; | ||
| 70 | }; | ||
| 71 | |||
| 47 | services.customTinc.networks."yggdrasil" = { | 72 | services.customTinc.networks."yggdrasil" = { |
| 48 | inherit (cfg) name interfaceConfig; | 73 | inherit (cfg) name interfaceConfig; |
| 49 | debugLevel = 2; | 74 | debugLevel = 2; |
| @@ -53,31 +78,15 @@ in { | |||
| 53 | ${optionalString cfg.connect "ConnectTo = ymir"} | 78 | ${optionalString cfg.connect "ConnectTo = ymir"} |
| 54 | ''; | 79 | ''; |
| 55 | scripts = { | 80 | scripts = { |
| 56 | "hosts/borealis-up" = "${config.security.wrapperDir}/borealis-up"; | 81 | "hosts/borealis-up" = '' |
| 57 | "hosts/borealis-down" = "${config.security.wrapperDir}/borealis-down"; | 82 | #!${pkgs.stdenv.shell} |
| 58 | }; | ||
| 59 | }; | ||
| 60 | 83 | ||
| 61 | security.wrappers = { | 84 | exec ${pkgs.sudo}/bin/sudo ${borealis-up} |
| 62 | "borealis-up" = { | ||
| 63 | source = pkgs.writeScript "borealis-up.sh" '' | ||
| 64 | #!${stdenv.shell} | ||
| 65 | ${nettools}/bin/route add -net 10.141.1.0 netmask 255.255.255.0 gw 10.141.1.1 dev $INTERFACE metric 9999 | ||
| 66 | ${optionalString cfg.useDNS '' | ||
| 67 | ${openresolv}/bin/resolvconf -m 0 -a tinc.yggdrasil <<EOF | ||
| 68 | domain yggdrasil | ||
| 69 | nameserver 10.141.1.1 | ||
| 70 | EOF | ||
| 71 | ''} | ||
| 72 | ''; | 85 | ''; |
| 73 | }; | 86 | "hosts/borealis-down" = '' |
| 74 | "borealis-down" = { | 87 | #!${pkgs.stdenv.shell} |
| 75 | source = pkgs.writeScript "borealis-down.sh" '' | 88 | |
| 76 | #!${stdenv.shell} | 89 | exec ${pkgs.sudo}/bin/sudo ${borealis-down} |
| 77 | ${nettools}/bin/route del -net 10.141.1.0 netmask 255.255.255.0 gw 10.141.1.1 dev $INTERFACE | ||
| 78 | ${optionalString cfg.useDNS '' | ||
| 79 | ${openresolv}/bin/resolvconf -d tinc.yggdrasil | ||
| 80 | ''} | ||
| 81 | ''; | 90 | ''; |
| 82 | }; | 91 | }; |
| 83 | }; | 92 | }; |
