nixos/configuration.nix
2023-09-11 21:20:14 +02:00

47 lines
1.1 KiB
Nix

{lib, ...}:
with builtins;
with lib; let
fn = import (toString ./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 (toString <secretPath>)).value
(toString <secretPath>)
(toString /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;
}