Make home-manager optional per-host via enableHomeManager flag

This commit is contained in:
2026-04-07 03:05:24 +02:00
parent 517bc8d2f8
commit 090989e581

View File

@@ -45,36 +45,41 @@
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 # Helper that builds a full NixOS configuration for a given host + arch.
mkNixosSystem = { system, hostModule }: nixpkgs.lib.nixosSystem { # Set enableHomeManager = false for servers or minimal installs that
inherit system; # don't need user-level dotfile/package management.
mkNixosSystem = { system, hostModule, enableHomeManager ? true }:
let
hmModules = if enableHomeManager then [
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit sops-nix;
pkgs-unstable = mkPkgsUnstable system;
};
home-manager.users.youruser = import ./home/default.nix;
}
] else [];
in nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { specialArgs = {
inherit sops-nix disko; inherit sops-nix disko;
pkgs-unstable = mkPkgsUnstable system; pkgs-unstable = mkPkgsUnstable system;
};
modules = [
(mkOverlayUnstable system)
sops-nix.nixosModules.sops
disko.nixosModules.disko
hostModule
./nixos/default.nix
] ++ hmModules;
}; };
modules = [
(mkOverlayUnstable system)
sops-nix.nixosModules.sops
disko.nixosModules.disko
hostModule
./nixos/default.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit sops-nix;
pkgs-unstable = mkPkgsUnstable system;
};
home-manager.users.youruser = import ./home/default.nix;
}
];
};
# Default system for devShell and standalone home-manager # Default system for devShell and standalone home-manager
defaultSystem = "x86_64-linux"; defaultSystem = "x86_64-linux";
pkgs = mkPkgs defaultSystem; pkgs = mkPkgs defaultSystem;
@@ -93,10 +98,11 @@
hostModule = ./hosts/laptop/default.nix; hostModule = ./hosts/laptop/default.nix;
}; };
# x86_64 server # x86_64 server (no home-manager — minimal system-only config)
server = mkNixosSystem { server = mkNixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
hostModule = ./hosts/server/default.nix; hostModule = ./hosts/server/default.nix;
enableHomeManager = false;
}; };
# Example: ARM64 host (e.g. Raspberry Pi 4, Apple Silicon VM) # Example: ARM64 host (e.g. Raspberry Pi 4, Apple Silicon VM)
@@ -112,7 +118,7 @@
homeConfigurations = { homeConfigurations = {
# x86_64 Linux # x86_64 Linux
"youruser@linux" = home-manager.lib.homeManagerConfiguration { "eliaskohout@linux" = home-manager.lib.homeManagerConfiguration {
pkgs = mkPkgs "x86_64-linux"; pkgs = mkPkgs "x86_64-linux";
extraSpecialArgs = { extraSpecialArgs = {
pkgs-unstable = mkPkgsUnstable "x86_64-linux"; pkgs-unstable = mkPkgsUnstable "x86_64-linux";
@@ -124,18 +130,18 @@
]; ];
}; };
# aarch64 Linux (e.g. Raspberry Pi, ARM servers) # aarch64 Linux
# "youruser@linux-arm" = home-manager.lib.homeManagerConfiguration { "eliaskohout@linux-arm" = home-manager.lib.homeManagerConfiguration {
# pkgs = mkPkgs "aarch64-linux"; pkgs = mkPkgs "aarch64-linux";
# extraSpecialArgs = { extraSpecialArgs = {
# pkgs-unstable = mkPkgsUnstable "aarch64-linux"; pkgs-unstable = mkPkgsUnstable "aarch64-linux";
# sops-nix = sops-nix; sops-nix = sops-nix;
# }; };
# modules = [ modules = [
# (mkOverlayUnstable "aarch64-linux") (mkOverlayUnstable "aarch64-linux")
# ./home/default.nix ./home/default.nix
# ]; ];
# }; };
}; };
# ============================================ # ============================================