{ lib, inputs, nixpkgs, home-manager, user, configDir, ... }: let system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; lib = nixpkgs.lib; configImports = [ inputs.apis.nixosModules.default ./configuration.nix ]; hmImports = [ (import ./home.nix) inputs.nixvim.homeManagerModules.nixvim ]; desktopHmImports = hmImports ++ [ (import ./home-desktop.nix) ]; hmArgs = { inherit user configDir; }; in { desktop = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./desktop ./desktop.nix { boot.loader.grub.gfxmodeEfi = "1920x1080"; networking.hostName = "${user}"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = hmArgs; users.${user} = { imports = desktopHmImports ++ [ (import ./desktop/home.nix) ]; }; }; } ]; }; pang13 = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./pang13 ./desktop.nix { boot.loader.grub.gfxmodeEfi = "1920x1080"; networking.hostName = "pang13"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = hmArgs; users.${user} = { imports = desktopHmImports ++ [ (import ./pang13/home.nix) ]; }; }; } ]; }; x220 = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./thinkpads ./desktop.nix { # 1024x768 is the closest supported resolution to X220's native 1366x768 # To see a list of supported GRUB resolutions, enter GRUB, # press e, F2 to enter command mode, and then type videoinfo to see list boot.loader.grub.gfxmodeEfi = "1024x768"; networking.hostName = "x220"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = hmArgs; users.${user} = { imports = desktopHmImports ++ [ (import ./thinkpads/home.nix) ]; }; }; } ]; }; t430 = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./thinkpads ./desktop.nix { boot.loader.grub.gfxmodeEfi = "1600x900"; networking.hostName = "t430"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = hmArgs; users.${user} = { imports = desktopHmImports ++ [ (import ./thinkpads/home.nix) ]; }; }; } ]; }; t480 = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./thinkpads ./desktop.nix { boot.loader.grub.gfxmodeEfi = "1920x1080"; networking.hostName = "t480"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = hmArgs; users.${user} = { imports = desktopHmImports ++ [ (import ./thinkpads/home.nix) ]; }; }; } ]; }; virtualbox = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./virtualbox ./desktop.nix { networking.hostName = "virtualbox"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = { inherit user; }; users.${user} = { imports = desktopHmImports ++ [ (import ./virtualbox/home.nix) ]; }; }; } ]; }; elnudrop = lib.nixosSystem { inherit system; specialArgs = { inherit user; enableSSL = true; }; modules = configImports ++ [ ./elnudrop { networking.hostName = "elnudrop"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = { inherit user; }; users.${user} = { imports = hmImports ++ [ (import ./elnudrop/home.nix) ]; }; }; } ]; }; elnucentre = lib.nixosSystem { inherit system; specialArgs = { inherit user; }; modules = configImports ++ [ ./elnucentre { networking.hostName = "elnucentre"; } home-manager.nixosModules.home-manager { home-manager = { useUserPackages = true; extraSpecialArgs = { inherit user; }; users.${user} = { imports = hmImports ++ [ (import ./elnucentre/home.nix) ]; }; }; } ]; }; }