Merge mkComputer and mkVM

With this I only need one function to build all my x86 based systems.
This commit is contained in:
Andreas Zweili 2022-04-16 16:08:05 +02:00
parent 353646ac91
commit cb5aa6ace1
1 changed files with 25 additions and 44 deletions

View File

@ -48,7 +48,7 @@
]; ];
}; };
mkComputer = { hostname, system ? "x86_64-linux" }: nixpkgs.lib.nixosSystem { mkComputer = { hostname, system ? "x86_64-linux", home-module ? "headless" }: nixpkgs.lib.nixosSystem {
inherit system pkgs; inherit system pkgs;
specialArgs = { inherit custom inputs; }; specialArgs = { inherit custom inputs; };
modules = ( modules = (
@ -57,30 +57,7 @@
"${self}/systems/${hostname}" "${self}/systems/${hostname}"
# Common configuration # Common configuration
(import ./modules/common-x86 { inherit custom inputs pkgs system; }) "${self}/modules/common-x86"
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.${custom.username}.imports = [
(import ./home-manager/desktop.nix { inherit custom pkgs inputs; })
];
}
]);
};
mkVM = { hostname, system ? "x86_64-linux" }: nixpkgs.lib.nixosSystem {
inherit system pkgs;
specialArgs = {
inherit custom inputs;
};
modules = (
[
# System configuration for this host
"${self}/systems/${hostname}"
# Common configuration
./modules/common-x86
agenix.nixosModules.age agenix.nixosModules.age
{ environment.systemPackages = [ agenix.defaultPackage.${system} ]; } { environment.systemPackages = [ agenix.defaultPackage.${system} ]; }
@ -90,7 +67,7 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.${custom.username}.imports = [ home-manager.users.${custom.username}.imports = [
(import ./home-manager/management.nix { inherit custom pkgs inputs; }) (import "${self}/home-manager/${home-module}.nix" { inherit custom pkgs inputs; })
]; ];
} }
]); ]);
@ -124,70 +101,74 @@
nixosConfigurations = { nixosConfigurations = {
gwyn = mkComputer { gwyn = mkComputer {
hostname = "gwyn"; hostname = "gwyn";
home-module = "desktop";
}; };
nixos-vm = mkComputer { nixos-vm = mkComputer {
hostname = "desktop-vm"; hostname = "desktop-vm";
home-module = "desktop";
}; };
staubfinger = mkComputer { staubfinger = mkComputer {
hostname = "staubfinger"; hostname = "staubfinger";
home-module = "desktop";
}; };
# Servers # Servers
git = mkVM { git = mkComputer {
hostname = "git"; hostname = "git";
}; };
grav = mkVM { grav = mkComputer {
hostname = "grav"; hostname = "grav";
}; };
heimdall = mkVM { heimdall = mkComputer {
hostname = "heimdall"; hostname = "heimdall";
}; };
jdownloader = mkVM { jdownloader = mkComputer {
hostname = "jdownloader"; hostname = "jdownloader";
}; };
k3s-master1 = mkVM { k3s-master1 = mkComputer {
hostname = "k3s-master1"; hostname = "k3s-master1";
}; };
k3s-node1 = mkVM { k3s-node1 = mkComputer {
hostname = "k3s-node1"; hostname = "k3s-node1";
}; };
k3s-node2 = mkVM { k3s-node2 = mkComputer {
hostname = "k3s-node2"; hostname = "k3s-node2";
}; };
mail = mkVM { mail = mkComputer {
hostname = "mail"; hostname = "mail";
}; };
nextcloud = mkVM { nextcloud = mkComputer {
hostname = "nextcloud"; hostname = "nextcloud";
}; };
nixos-management = mkVM { nixos-management = mkComputer {
hostname = "nixos-management"; hostname = "nixos-management";
home-module = "management";
}; };
nomad-master1 = mkVM { nomad-master1 = mkComputer {
hostname = "nomad-master1"; hostname = "nomad-master1";
}; };
nomad-client1 = mkVM { nomad-client1 = mkComputer {
hostname = "nomad-client1"; hostname = "nomad-client1";
}; };
pihole = mkVM { pihole = mkComputer {
hostname = "pihole"; hostname = "pihole";
}; };
plex = mkVM { plex = mkComputer {
hostname = "plex"; hostname = "plex";
}; };
proxy = mkVM { proxy = mkComputer {
hostname = "proxy"; hostname = "proxy";
}; };
raspi-test = mkRaspi { raspi-test = mkRaspi {
hostname = "raspi-test"; hostname = "raspi-test";
home-module = "management"; home-module = "management";
}; };
restic-server = mkVM { restic-server = mkComputer {
hostname = "restic-server"; hostname = "restic-server";
}; };
rss-bridge = mkVM { rss-bridge = mkComputer {
hostname = "rss-bridge"; hostname = "rss-bridge";
}; };
ttrss = mkVM { ttrss = mkComputer {
hostname = "ttrss"; hostname = "ttrss";
}; };
}; };