nix: expose modular configuration combinators

This commit is contained in:
Primrose 2024-07-13 13:39:17 +02:00
parent 61678660ff
commit 457d196041
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
3 changed files with 85 additions and 63 deletions

View file

@ -1,11 +1,68 @@
{
mkDarwins,
mkHomeManagers,
mkNixOSes,
self,
inputs,
many,
mkDarwin,
mkHomeManager,
mkNixOS,
...
}:
let
nixpkgsRegistry = {
# https://yusef.napora.org/blog/pinning-nixpkgs-flake/
# Has to be done here because hm-modules don't have access to flake inputs
nix.registry.nixpkgs.flake = inputs.nixpkgs;
};
mkNixOSes = many (
mkNixOS
(name: _: [
self.nixosModules._
self.nixosModules.layouts
./host/${name}
inputs.agenix.nixosModules.default
inputs.home-manager.nixosModules.home-manager
])
(
name: _: [
self.homeModules._
./home/${name}
nixpkgsRegistry
]
)
);
mkDarwins = many (
mkDarwin
(name: sys: [
{ nixpkgs.hostPlatform = sys; }
self.nixosModules._
self.darwinModules._
./host/${name}
inputs.home-manager.darwinModules.home-manager
])
(
name: _: [
self.homeModules._
./home/${name}
nixpkgsRegistry
]
)
);
mkHomeManagers = many (
mkHomeManager (
name: _: [
self.homeModules._
./home/${name}
nixpkgsRegistry
self.homeModules.auto-gc # Enable user gc only when home-manager is used standalone
]
)
);
in
{
imports = [ ./combinators.nix ];
imports = [ ./combinators ];
flake = {
darwinConfigurations = mkDarwins {