{ 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: let lib = nixpkgs.lib; systemModule = if lib.pathIsDirectory ./${name} then ./${name}/system.nix else ./${name}.nix; in 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/alloy.nix systemModule ( 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"; "resolv-dns.noc.eh22.intern" = mkSystem "x86_64-linux" "resolv-dns.noc.eh22.intern"; "monitoring.noc.eh22.intern" = mkSystem "x86_64-linux" "monitoring.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"; }