nix-dots/flakes/nixos.nix

119 lines
2.5 KiB
Nix

{
inputs,
self,
withSystem,
...
}: let
mkNixos = {
system ? "x86_64-linux",
nixpkgs ? inputs.nixpkgs,
config ? {},
overlays ? [],
modules ? [],
}:
withSystem system (
{
inputs',
lib,
pkgs,
system,
...
}: let
customPkgs = import nixpkgs (
lib.recursiveUpdate {
inherit system;
overlays = (builtins.attrValues self.overlays) ++ overlays;
config.allowUnfree = true;
} {inherit config;}
);
in
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs inputs' lib;
pkgs =
if (nixpkgs != inputs.nixpkgs || config != {} || overlays != [])
then customPkgs
else pkgs;
};
modules = [../nixos] ++ modules;
}
);
in {
flake.nixosConfigurations = let
defaultModules = [
../modules
inputs.agenix.nixosModules.default
{
environment.systemPackages = [
inputs.agenix.packages.x86_64-linux.default
];
}
];
baseHomeModule = {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {inherit inputs;};
};
fullNixOSModules =
defaultModules
++ [
baseHomeModule
{
home-manager.users.michael = import ../user/environments/nixos/home.nix;
}
];
in {
kitchen = mkNixos {
modules =
fullNixOSModules
++ [
../modules/common.nix
../modules/containers.nix
../machines/kitchen/configuration.nix
];
};
thinkcentre = mkNixos {
modules =
fullNixOSModules
++ [
../modules/common.nix
../modules/containers.nix
../machines/thinkcentre/configuration.nix
];
};
terra = mkNixos {
modules =
fullNixOSModules
++ [
../modules/common.nix
../modules/hyprland.nix
../modules/containers.nix
../modules/applications/libreoffice
../modules/applications/steam
../machines/terra/configuration.nix
];
};
oracle = mkNixos {
modules =
defaultModules
++ [
../modules/nix.nix
baseHomeModule
{
home-manager.users.michael = import ../user/environments/nixos-server/home.nix;
}
../machines/oracle/configuration.nix
];
};
};
}