1
0
Fork 0
nixos/configuration.nix

34 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 != false)
(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;
}