mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
* flake: ensure passed pkgs with overlays and config is used
In the pkgsModule inside modules/modules.nix it will try to use the
<nixpkgs> 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.
46 lines
1.6 KiB
Nix
46 lines
1.6 KiB
Nix
{
|
|
description = "Home Manager for Nix";
|
|
|
|
outputs = { self, nixpkgs }:
|
|
let
|
|
# List of systems supported by home-manager binary
|
|
supportedSystems = nixpkgs.lib.platforms.unix;
|
|
|
|
# Function to generate a set based on supported systems
|
|
forAllSystems = f:
|
|
nixpkgs.lib.genAttrs supportedSystems (system: f system);
|
|
|
|
nixpkgsFor = forAllSystems (system: import nixpkgs { inherit system; });
|
|
in rec {
|
|
nixosModules.home-manager = import ./nixos;
|
|
nixosModule = self.nixosModules.home-manager;
|
|
|
|
darwinModules.home-manager = import ./nix-darwin;
|
|
darwinModule = self.darwinModules.home-manager;
|
|
|
|
packages = forAllSystems (system: {
|
|
home-manager = nixpkgsFor.${system}.callPackage ./home-manager { };
|
|
});
|
|
|
|
defaultPackage =
|
|
forAllSystems (system: self.packages.${system}.home-manager);
|
|
|
|
lib = {
|
|
hm = import ./modules/lib { lib = nixpkgs.lib; };
|
|
homeManagerConfiguration = { configuration, system, homeDirectory
|
|
, username, extraModules ? [ ], extraSpecialArgs ? { }
|
|
, pkgs ? builtins.getAttr system nixpkgs.outputs.legacyPackages
|
|
, check ? true, stateVersion ? "20.09" }@args:
|
|
assert nixpkgs.lib.versionAtLeast stateVersion "20.09";
|
|
|
|
import ./modules {
|
|
inherit pkgs check extraSpecialArgs;
|
|
configuration = { ... }: {
|
|
imports = [ configuration ] ++ extraModules;
|
|
home = { inherit homeDirectory stateVersion username; };
|
|
nixpkgs = { inherit (pkgs) config overlays; };
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|