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,8 +45,24 @@
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
# 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; inherit system;
specialArgs = { specialArgs = {
@@ -61,18 +77,7 @@
hostModule hostModule
./nixos/default.nix ./nixos/default.nix
] ++ hmModules;
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
@@ -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
# ]; ];
# }; };
}; };
# ============================================ # ============================================