0c236e13bc
* 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.
47 lines
1.6 KiB
Nix
47 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; };
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|