diff options
Diffstat (limited to 'krebs/3modules')
| -rw-r--r-- | krebs/3modules/retiolum.nix | 46 | 
1 files changed, 23 insertions, 23 deletions
| diff --git a/krebs/3modules/retiolum.nix b/krebs/3modules/retiolum.nix index e0e2692a8..08ac96461 100644 --- a/krebs/3modules/retiolum.nix +++ b/krebs/3modules/retiolum.nix @@ -1,6 +1,4 @@  { config, pkgs, lib, ... }: - -with builtins;  with lib;  let    cfg = config.krebs.retiolum; @@ -40,7 +38,7 @@ let        '';      }; -    network = mkOption { +    netname = mkOption {        type = types.str;        default = "retiolum";        description = '' @@ -65,10 +63,13 @@ let      };      hosts = mkOption { -      type = with types; either package path; -      default = ../Zhosts; +      type = with types; attrsOf host; +      default = +        filterAttrs (_: h: hasAttr cfg.netname h.nets) config.krebs.hosts;        description = '' -        If a path is given, then it will be used to generate an ad-hoc package. +        Hosts which should be part of the tinc configuration. +        Note that these hosts must have a correspondingly named network +        configured, see <literal>config.krebs.retiolum.netname</literal>.        '';      }; @@ -104,7 +105,7 @@ let    };    imp = { -    environment.systemPackages = [ tinc hosts iproute ]; +    environment.systemPackages = [ tinc iproute ];      networking.extraHosts = retiolumExtraHosts; @@ -140,17 +141,16 @@ let    tinc = cfg.tincPackage; -  hosts = getAttr (typeOf cfg.hosts) { -    package = cfg.hosts; -    path = pkgs.stdenv.mkDerivation { -      name = "custom-retiolum-hosts"; -      src = cfg.hosts; -      installPhase = '' -        mkdir $out -        find . -name .git -prune -o -type f -print0 \ -          | xargs -0 cp --target-directory $out -      ''; -    }; +  tinc-hosts = pkgs.stdenv.mkDerivation { +    name = "${cfg.netname}-tinc-hosts"; +    phases = [ "installPhase" ]; +    installPhase = '' +      mkdir $out +      ${concatStrings (mapAttrsToList (_: host: '' +        echo ${shell.escape host.nets.${cfg.netname}.tinc.config} \ +          > $out/${shell.escape host.name} +      '') cfg.hosts)} +    '';    };    iproute = cfg.iproutePackage; @@ -159,7 +159,7 @@ let      { }      ''        generate() { -        (cd ${hosts} +        (cd ${tinc-hosts}            printf \'\'            for i in `ls`; do              names=$(hostnames $i) @@ -180,11 +180,11 @@ let            generate            ;;          long) -          hostnames() { echo "$1.${cfg.network}"; } +          hostnames() { echo "$1.${cfg.netname}"; }            generate            ;;          both) -          hostnames() { echo "$1.${cfg.network} $1"; } +          hostnames() { echo "$1.${cfg.netname} $1"; }            generate            ;;          *) @@ -203,12 +203,12 @@ let      mkdir -p $out -    ln -s ${hosts} $out/hosts +    ln -s ${tinc-hosts} $out/hosts      cat > $out/tinc.conf <<EOF      Name = ${cfg.name}      Device = /dev/net/tun -    Interface = ${cfg.network} +    Interface = ${cfg.netname}      ${concatStrings (map (c : "ConnectTo = " + c + "\n") cfg.connectTo)}      PrivateKeyFile = /tmp/retiolum-rsa_key.priv      ${cfg.extraConfig} | 
