Deduplicate home config and optimize mkPkgsUnstable calls

This commit is contained in:
2026-04-07 03:08:12 +02:00
parent 090989e581
commit 795df94928

View File

@@ -30,7 +30,6 @@
outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, home-manager, sops-nix, disko }: outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, home-manager, sops-nix, disko }:
let let
# Helper to build per-host pkgs for a given system string
mkPkgs = system: import nixpkgs { mkPkgs = system: import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
@@ -41,23 +40,21 @@
config.allowUnfree = true; config.allowUnfree = true;
}; };
# Utility to overlay unstable packages (takes system as arg)
mkOverlayUnstable = system: mkOverlayUnstable = system:
final: prev: { unstable = mkPkgsUnstable system; }; final: prev: { unstable = mkPkgsUnstable system; };
# Helper that builds a full NixOS configuration for a given host + arch.
# Set enableHomeManager = false for servers or minimal installs that # Set enableHomeManager = false for servers or minimal installs that
# don't need user-level dotfile/package management. # don't need user-level dotfile/package management.
mkNixosSystem = { system, hostModule, enableHomeManager ? true }: mkNixosSystem = { system, hostModule, enableHomeManager ? true }:
let let
pkgs-unstable = mkPkgsUnstable system;
hmModules = if enableHomeManager then [ hmModules = if enableHomeManager then [
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit sops-nix; inherit sops-nix pkgs-unstable;
pkgs-unstable = mkPkgsUnstable system;
}; };
home-manager.users.youruser = import ./home/default.nix; home-manager.users.youruser = import ./home/default.nix;
} }
@@ -66,8 +63,7 @@
inherit system; inherit system;
specialArgs = { specialArgs = {
inherit sops-nix disko; inherit sops-nix disko pkgs-unstable;
pkgs-unstable = mkPkgsUnstable system;
}; };
modules = [ modules = [
@@ -80,7 +76,18 @@
] ++ hmModules; ] ++ hmModules;
}; };
# Default system for devShell and standalone home-manager mkHomeConfig = system: home-manager.lib.homeManagerConfiguration {
pkgs = mkPkgs system;
extraSpecialArgs = {
pkgs-unstable = mkPkgsUnstable system;
inherit sops-nix;
};
modules = [
(mkOverlayUnstable system)
./home/default.nix
];
};
defaultSystem = "x86_64-linux"; defaultSystem = "x86_64-linux";
pkgs = mkPkgs defaultSystem; pkgs = mkPkgs defaultSystem;
@@ -117,31 +124,8 @@
# ============================================ # ============================================
homeConfigurations = { homeConfigurations = {
# x86_64 Linux "eliaskohout@linux" = mkHomeConfig "x86_64-linux";
"eliaskohout@linux" = home-manager.lib.homeManagerConfiguration { "eliaskohout@linux-arm" = mkHomeConfig "aarch64-linux";
pkgs = mkPkgs "x86_64-linux";
extraSpecialArgs = {
pkgs-unstable = mkPkgsUnstable "x86_64-linux";
sops-nix = sops-nix;
};
modules = [
(mkOverlayUnstable "x86_64-linux")
./home/default.nix
];
};
# aarch64 Linux
"eliaskohout@linux-arm" = home-manager.lib.homeManagerConfiguration {
pkgs = mkPkgs "aarch64-linux";
extraSpecialArgs = {
pkgs-unstable = mkPkgsUnstable "aarch64-linux";
sops-nix = sops-nix;
};
modules = [
(mkOverlayUnstable "aarch64-linux")
./home/default.nix
];
};
}; };
# ============================================ # ============================================