chore: initial commit

This commit is contained in:
technofab 2025-10-04 17:32:44 +02:00
commit e832157e68
No known key found for this signature in database
14 changed files with 666 additions and 0 deletions

77
lib/mkSystem.nix Normal file
View file

@ -0,0 +1,77 @@
{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
)
// {
innerConfig = {
imports = [userConfig ./ren-module.nix];
};
}