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:
final: prev: { unstable = mkPkgsUnstable system; };
# Helper that builds a full NixOS configuration for a given host + arch
mkNixosSystem = { system, hostModule }: nixpkgs.lib.nixosSystem {
inherit system;
# Helper that builds a full NixOS configuration for a given host + arch.
# 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;
specialArgs = {
inherit sops-nix disko;
pkgs-unstable = mkPkgsUnstable system;
specialArgs = {
inherit sops-nix disko;
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
defaultSystem = "x86_64-linux";
pkgs = mkPkgs defaultSystem;
@@ -93,10 +98,11 @@
hostModule = ./hosts/laptop/default.nix;
};
# x86_64 server
# x86_64 server (no home-manager — minimal system-only config)
server = mkNixosSystem {
system = "x86_64-linux";
hostModule = ./hosts/server/default.nix;
enableHomeManager = false;
};
# Example: ARM64 host (e.g. Raspberry Pi 4, Apple Silicon VM)
@@ -112,7 +118,7 @@
homeConfigurations = {
# x86_64 Linux
"youruser@linux" = home-manager.lib.homeManagerConfiguration {
"eliaskohout@linux" = home-manager.lib.homeManagerConfiguration {
pkgs = mkPkgs "x86_64-linux";
extraSpecialArgs = {
pkgs-unstable = mkPkgsUnstable "x86_64-linux";
@@ -124,18 +130,18 @@
];
};
# aarch64 Linux (e.g. Raspberry Pi, ARM servers)
# "youruser@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
# ];
# };
# 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
];
};
};
# ============================================