From 090989e5819b4177183443e8695d6f0bdaa0a00a Mon Sep 17 00:00:00 2001 From: Elias Kohout Date: Tue, 7 Apr 2026 03:05:24 +0200 Subject: [PATCH] Make home-manager optional per-host via enableHomeManager flag --- flake.nix | 88 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 47 insertions(+), 41 deletions(-) diff --git a/flake.nix b/flake.nix index 9a9ec4e..047fdb6 100644 --- a/flake.nix +++ b/flake.nix @@ -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 + ]; + }; }; # ============================================