flake: home-manager: use a more modular design
This means I can easily add new hosts now.
This commit is contained in:
parent
2fb3d0f9cf
commit
a046569743
|
@ -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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
5
hosts/homes/ambroisie/default.nix
Normal file
5
hosts/homes/ambroisie/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Default home-manager configuration
|
||||
{ ... }:
|
||||
{
|
||||
# Default configuration, nothing to do
|
||||
}
|
Loading…
Reference in a new issue