60 lines
1.9 KiB
Nix
60 lines
1.9 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:
|
|
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
|
|
flake.inputs.cookied.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 (mgmt)
|
|
"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";
|
|
|
|
# prod hosts (public user)
|
|
"cookies.eh22.intern" = mkSystem "x86_64-linux" "cookies.eh22.intern";
|
|
"jool.eh22.intern" = mkSystem "x86_64-linux" "jool.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";
|
|
}
|