mirror of
https://gitlab.com/rensa-nix/utils.git
synced 2025-12-10 22:50:12 +01:00
78 lines
2.3 KiB
Nix
78 lines
2.3 KiB
Nix
{lib}: userConfig: let
|
|
inherit (lib) evalModules types assertMsg isAttrs optionals mkDefault;
|
|
|
|
evaled = evalModules {
|
|
modules = [
|
|
./ren-module.nix
|
|
userConfig
|
|
{
|
|
config._module.check = true;
|
|
config._module.freeformType = types.unspecified;
|
|
}
|
|
];
|
|
};
|
|
|
|
isDarwin = evaled.options.ren.nix-darwin.isDefined;
|
|
nix-darwin = assert assertMsg (isAttrs evaled.config.ren.nix-darwin) "nix-darwin input unset"; evaled.config.ren.nix-darwin;
|
|
|
|
baseModules = [./ren-module.nix userConfig];
|
|
|
|
nixosModules = import (evaled.config.ren.pkgs.path + "/nixos/modules/module-list.nix");
|
|
darwinModules = import (evaled.config.ren.nix-darwin + "/modules/module-list.nix");
|
|
|
|
extraNixosConfig = {
|
|
nixpkgs = {
|
|
inherit (evaled.config.ren) system pkgs;
|
|
};
|
|
imports =
|
|
# add home-manager if the input is passed
|
|
optionals evaled.options.ren.home-manager.isDefined [
|
|
evaled.config.ren.home-manager.nixosModules.home-manager
|
|
{
|
|
home-manager.useGlobalPkgs = mkDefault true;
|
|
home-manager.useUserPackages = mkDefault false;
|
|
}
|
|
]
|
|
# add nixos-wsl if the input is passed
|
|
++ optionals evaled.options.ren.nixos-wsl.isDefined [
|
|
evaled.config.ren.nixos-wsl.nixosModules.wsl
|
|
{
|
|
wsl.enable = mkDefault true;
|
|
}
|
|
]
|
|
# add disko if the input is passed
|
|
++ optionals evaled.options.ren.disko.isDefined [
|
|
evaled.config.ren.disko.nixosModules.disko
|
|
];
|
|
};
|
|
extraDarwinConfig = {
|
|
# add home-manager if the input is passed
|
|
imports = optionals evaled.options.ren.home-manager.isDefined [
|
|
evaled.config.ren.home-manager.darwinModules.home-manager
|
|
{
|
|
home-manager.useGlobalPkgs = mkDefault true;
|
|
home-manager.useUserPackages = mkDefault false;
|
|
}
|
|
];
|
|
};
|
|
|
|
systemConfig = import (evaled.config.ren.pkgs.path + "/nixos/lib/eval-config.nix") {
|
|
system = null;
|
|
modules = baseModules ++ [extraNixosConfig] ++ nixosModules;
|
|
};
|
|
darwinConfig = nix-darwin.lib.darwinSystem {
|
|
inherit (evaled.config.ren) system pkgs;
|
|
modules = baseModules ++ [extraDarwinConfig] ++ darwinModules;
|
|
};
|
|
in
|
|
(
|
|
if isDarwin
|
|
then darwinConfig
|
|
else systemConfig
|
|
)
|
|
// {
|
|
inherit userConfig;
|
|
innerConfig = {
|
|
imports = [userConfig ./ren-module.nix];
|
|
};
|
|
}
|