99 lines
2 KiB
Nix
99 lines
2 KiB
Nix
{
|
|
inputs,
|
|
nixpkgs,
|
|
nixpkgs-old,
|
|
nixpkgs-latest,
|
|
}:
|
|
deviceName:
|
|
{
|
|
hostName,
|
|
userName,
|
|
additionalOverlays ? [ ],
|
|
systemArch ? builtins.currentSystem,
|
|
}:
|
|
let
|
|
inherit (nixpkgs) lib;
|
|
|
|
DeviceCustomOptions = ../options/device;
|
|
HostCustomOptions = ../options/host;
|
|
HomeCustomOptions = ../options/home;
|
|
|
|
DeviceConfig = ../devices/${deviceName};
|
|
HostConfig = ../users/${hostName}/host;
|
|
HomeConfig = ../users/${userName}/home;
|
|
|
|
customFunctions = import ./utils.nix { inherit lib; };
|
|
|
|
baseOverlays =
|
|
import ../overlays {
|
|
inherit
|
|
systemArch
|
|
nixpkgs-old
|
|
nixpkgs-latest
|
|
packagesConfig
|
|
;
|
|
}
|
|
|> builtins.attrValues;
|
|
overlays = baseOverlays ++ additionalOverlays;
|
|
|
|
userData = import ../users/${userName}/data.nix {
|
|
inherit
|
|
deviceName
|
|
hostName
|
|
userName
|
|
systemArch
|
|
;
|
|
};
|
|
|
|
userPackagesConfig = import ../users/${hostName}/packages_config.nix { inherit lib; };
|
|
|
|
additionalArgs = { inherit inputs customFunctions userData; };
|
|
|
|
sops = {
|
|
defaultSopsFormat = "yaml";
|
|
defaultSopsFile = ../secrets/main.yaml;
|
|
age.keyFile = "${userData.paths.sopsKeyFile}";
|
|
};
|
|
in
|
|
lib.nixosSystem {
|
|
system = systemArch;
|
|
specialArgs = additionalArgs;
|
|
|
|
modules = [
|
|
DeviceCustomOptions
|
|
HostCustomOptions
|
|
|
|
CustomOptions
|
|
DeviceConfig
|
|
HostConfig
|
|
|
|
{
|
|
nixpkgs = {
|
|
inherit overlays;
|
|
config = userPackagesConfig;
|
|
};
|
|
|
|
networking.hostName = hostName;
|
|
}
|
|
|
|
inputs.home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager = {
|
|
users.${userName} = import HomeConfig;
|
|
users.${userName} = import HomeCustomOptions;
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
extraSpecialArgs = additionalArgs;
|
|
sharedModules = [
|
|
inputs.sops-nix.homeManagerModules.sops
|
|
];
|
|
};
|
|
}
|
|
|
|
inputs.sops-nix.nixosModules.sops
|
|
{
|
|
inherit sops;
|
|
home-manager.users.${userName} = { inherit sops; };
|
|
}
|
|
];
|
|
}
|