{ 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 ../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 { # exposed hosts at myroot "test.eh22.intern" = mkSystem "x86_64-linux" "test.eh22.intern"; }