nox/systems/default.nix
2025-02-18 22:44:53 +01:00

49 lines
1.4 KiB
Nix

{ flake }:
let
nixpkgs = flake.inputs.nixpkgs;
# utility function to create a new nixos configuration
# call like `mkSystem "x86_64-linux" "<hostname>.eh22.intern"`
mkSystem =
systemType: name:
nixpkgs.lib.nixosSystem {
system = systemType;
specialArgs = flake.inputs;
modules = [
flake.inputs.home-manager.nixosModules.home-manager
flake.inputs.sops-nix.nixosModules.default
flake.inputs.lix.nixosModules.lixFromNixpkgs
flake.inputs.disko.nixosModules.default
../modules/base_system.nix
../modules/user_account.nix
#../modules/mail_relay.nix
./${name}.nix
(
let
fqdnParts = nixpkgs.lib.strings.splitString "." name;
in
{
networking.hostName = builtins.head fqdnParts;
networking.domain =
if ((builtins.length fqdnParts) > 1) then
(builtins.concatStringsSep "." (builtins.tail fqdnParts))
else
null;
}
)
];
};
in
{
# prod hosts
"auth-dns.noc.eh22.intern" = mkSystem "x86_64-linux" "auth-dns.noc.eh22.intern";
# staging temp infra
"sketchy-router.noc.eh22.intern" = mkSystem "x86_64-linux" "sketchy-router.noc.eh22.intern";
# misc hosts
"test.eh22.intern" = mkSystem "x86_64-linux" "test.eh22.intern";
"installer" = mkSystem "x86_64-linux" "installer";
}