From a0465697435800c2ce2a62236b837f42dec281b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:00:30 +0000 Subject: [PATCH] flake: home-manager: use a more modular design This means I can easily add new hosts now. --- flake/home-manager.nix | 76 +++++++++++++++++-------------- hosts/homes/ambroisie/default.nix | 5 ++ 2 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 hosts/homes/ambroisie/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index df5b3e2..ce6791d 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -1,40 +1,50 @@ -{ self, inputs, ... }: +{ self, inputs, lib, ... }: +let + defaultModules = [ + # Include generic settings + "${self}/home" + { + # Basic user information defaults + home.username = lib.mkDefault "ambroisie"; + home.homeDirectory = lib.mkDefault "/home/ambroisie"; + + # Make it a Linux installation by default + targets.genericLinux.enable = lib.mkDefault true; + + # Enable home-manager + programs.home-manager.enable = true; + } + ]; + + mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import inputs.nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlay + ]; + }; + + modules = defaultModules ++ [ + "${self}/hosts/homes/${name}" + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; +in { perSystem = { system, ... }: { # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { - homeConfigurations = { - ambroisie = inputs.home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import inputs.nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay - ]; - }; - - modules = [ - "${self}/home" - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; + homeConfigurations = lib.mapAttrs mkHome { + ambroisie = system; }; }; }; diff --git a/hosts/homes/ambroisie/default.nix b/hosts/homes/ambroisie/default.nix new file mode 100644 index 0000000..42ea5b8 --- /dev/null +++ b/hosts/homes/ambroisie/default.nix @@ -0,0 +1,5 @@ +# Default home-manager configuration +{ ... }: +{ + # Default configuration, nothing to do +}