33 lines
1.0 KiB
Nix
33 lines
1.0 KiB
Nix
{ lib, ... }:
|
|
|
|
with builtins;
|
|
with lib;
|
|
|
|
let
|
|
fn = import ./fn.nix { inherit lib; };
|
|
# Cannot use <hostName> here as those evaluations only work with existing paths >.<
|
|
# hostName and secretPtah can be set with -I hostName=$HOSTNAME and -I secretPath=$SECRETPATH respectively
|
|
# , defaults to the contents of /secret/hostName
|
|
secretPath = fn.ifelse ((tryEval <secretPath>).value != false)
|
|
<secretPath>
|
|
/secret;
|
|
hostName = (findFirst
|
|
(elem: elem.prefix == "hostName")
|
|
{ path = (fileContents "${secretPath}/hostName"); }
|
|
nixPath
|
|
).path;
|
|
machinePath = (builtins.toPath ( ./machines + ("/" + hostName)));
|
|
machineFiles = fn.lst { p = machinePath; b = true; };
|
|
configFiles = fn.lst { p = (toString ./config); b = true; };
|
|
pkgsFiles = fn.lst { p = (toString ./pkgs); b = true; };
|
|
serviceFiles = fn.lst { p = (toString ./services); b = true; };
|
|
in {
|
|
imports = [
|
|
./options/machine.nix
|
|
./services/mailserver/default.nix
|
|
] ++ machineFiles
|
|
++ configFiles
|
|
++ pkgsFiles
|
|
++ serviceFiles;
|
|
}
|