133 lines
3.3 KiB
Nix
133 lines
3.3 KiB
Nix
{ inputs, namespace, ... }:
|
|
let
|
|
inherit (inputs.self.${namespace}-lib.system.common)
|
|
mkExtendedLib
|
|
mkNixpkgsConfig
|
|
mkHomeConfigs
|
|
mkHomeManagerConfig
|
|
mkSpecialArgs
|
|
;
|
|
in
|
|
{
|
|
# Example of creating NixOS configurations
|
|
nixosConfigurations =
|
|
let
|
|
# Get all systems
|
|
allSystems = inputs.self.${namespace}-lib.file.scanSystems ../systems;
|
|
|
|
# Filter for NixOS systems
|
|
nixosSystems = inputs.self.${namespace}-lib.file.filterNixOSSystems allSystems;
|
|
in
|
|
inputs.nixpkgs.lib.mapAttrs' (
|
|
_name:
|
|
{ system, hostname, ... }:
|
|
let
|
|
# Create extended lib with mjallen-lib
|
|
extendedLib = mkExtendedLib inputs.self inputs.nixpkgs;
|
|
|
|
# Find matching home configurations for this system
|
|
matchingHomes = mkHomeConfigs {
|
|
flake = inputs.self;
|
|
inherit system hostname;
|
|
};
|
|
|
|
# Create home-manager configuration
|
|
homeManagerConfig = mkHomeManagerConfig {
|
|
inherit
|
|
extendedLib
|
|
inputs
|
|
system
|
|
matchingHomes
|
|
;
|
|
isNixOS = true;
|
|
};
|
|
in
|
|
{
|
|
name = hostname;
|
|
value = inputs.nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
|
|
# Pass special arguments to modules
|
|
specialArgs = mkSpecialArgs {
|
|
inherit inputs hostname extendedLib;
|
|
username = "mjallen";
|
|
};
|
|
|
|
modules = [
|
|
# Set lib to extended lib
|
|
{ _module.args.lib = extendedLib; }
|
|
|
|
# Configure nixpkgs
|
|
{
|
|
nixpkgs = {
|
|
inherit system;
|
|
}
|
|
// mkNixpkgsConfig inputs.self;
|
|
}
|
|
|
|
# Import home-manager module
|
|
inputs.home-manager.nixosModules.home-manager
|
|
|
|
# Auto-inject home configurations
|
|
homeManagerConfig
|
|
|
|
# Import all nixos modules recursively
|
|
../${system}/${hostname}
|
|
]
|
|
++ (extendedLib.${namespace}.file.importModulesRecursive ../modules/nixos);
|
|
};
|
|
}
|
|
) nixosSystems;
|
|
|
|
# Example of creating home-manager configurations
|
|
homeConfigurations =
|
|
let
|
|
# Get all homes
|
|
allHomes = inputs.self.${namespace}-lib.file.scanHomes ../homes;
|
|
in
|
|
inputs.nixpkgs.lib.mapAttrs' (
|
|
_name:
|
|
{
|
|
system,
|
|
username,
|
|
hostname,
|
|
userAtHost,
|
|
path,
|
|
...
|
|
}:
|
|
let
|
|
# Create extended lib with mjallen-lib
|
|
extendedLib = mkExtendedLib inputs.self inputs.nixpkgs;
|
|
in
|
|
{
|
|
name = userAtHost;
|
|
value = inputs.home-manager.lib.homeManagerConfiguration {
|
|
pkgs = import inputs.nixpkgs {
|
|
inherit system;
|
|
inherit ((mkNixpkgsConfig inputs.self)) config overlays;
|
|
};
|
|
|
|
extraSpecialArgs = {
|
|
inherit
|
|
inputs
|
|
hostname
|
|
username
|
|
system
|
|
;
|
|
inherit (inputs) self;
|
|
lib = extendedLib;
|
|
};
|
|
|
|
modules = [
|
|
# Set lib to extended lib
|
|
{ _module.args.lib = extendedLib; }
|
|
|
|
# Import the home configuration
|
|
path
|
|
]
|
|
++ (extendedLib.${namespace}.file.importModulesRecursive ../modules/home);
|
|
};
|
|
}
|
|
) allHomes;
|
|
}
|