From 0c236e13bc6b07a138a7a31fa408a73202cff28c Mon Sep 17 00:00:00 2001 From: Terje Larsen Date: Tue, 20 Apr 2021 22:19:24 +0200 Subject: [PATCH] flake: add extraModules option, inherit nixpkgs config and overlays in homeManagerConfiguration (#1767) * flake: ensure passed pkgs with overlays and config is used In the pkgsModule inside modules/modules.nix it will try to use the from NIX_PATH if home.stateVersion is not set. This is not available when using flakes so we need to require at least 20.09 and we might as well default to that. Also if you have added overlays and config to your pkgs it will be lost so we need to transfer those as well. This is an alternative to passing pkgs to extraSpecialArgs which will break the usage of things like nixpkgs.config.packageOverrides. * flake: add extraModules If you want to add some extra home-manager modules, you have to mix them with the configuration as such: configuration = { imports = [ emacs-config.homeManagerModules.emacsConfig ./home.nix ]; }; Instead of: configuration = ./home.nix; extraModules = [ emacs-config.homeManagerModules.emacsConfig ]; Which separates these two concerns. --- flake.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index a3afaab3..486562b4 100644 --- a/flake.nix +++ b/flake.nix @@ -28,14 +28,17 @@ lib = { hm = import ./modules/lib { lib = nixpkgs.lib; }; homeManagerConfiguration = { configuration, system, homeDirectory - , username, extraSpecialArgs ? { } + , username, extraModules ? [ ], extraSpecialArgs ? { } , pkgs ? builtins.getAttr system nixpkgs.outputs.legacyPackages - , check ? true }@args: + , check ? true, stateVersion ? "20.09" }@args: + assert nixpkgs.lib.versionAtLeast stateVersion "20.09"; + import ./modules { inherit pkgs check extraSpecialArgs; configuration = { ... }: { - imports = [ configuration ]; - home = { inherit homeDirectory username; }; + imports = [ configuration ] ++ extraModules; + home = { inherit homeDirectory stateVersion username; }; + nixpkgs = { inherit (pkgs) config overlays; }; }; }; };