mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-02-12 06:19:00 +00:00
setups: allow home-manager and NixOS to set individual modules
This commit is contained in:
parent
e234807139
commit
7a3b5404ec
59
flake.nix
59
flake.nix
@ -338,9 +338,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# A function that generates a Nix module from host metadata.
|
# A function that generates a Nix module from host metadata.
|
||||||
hostSpecificModule = host: metadata:
|
hostSpecificModule = host: metadata: let
|
||||||
|
modules = metadata.modules or [];
|
||||||
|
in
|
||||||
{ lib, ... }: {
|
{ lib, ... }: {
|
||||||
imports = [
|
imports = modules ++ [
|
||||||
inputs.${metadata.home-manager-channel or "home-manager"}.nixosModules.home-manager
|
inputs.${metadata.home-manager-channel or "home-manager"}.nixosModules.home-manager
|
||||||
|
|
||||||
hostSharedConfig
|
hostSharedConfig
|
||||||
@ -358,6 +360,32 @@
|
|||||||
{ networking.domain = lib.mkForce metadata.domain; })
|
{ networking.domain = lib.mkForce metadata.domain; })
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# A function that generates a home-manager module from a given user
|
||||||
|
# metadata.
|
||||||
|
userSpecificModule = user: metadata: let
|
||||||
|
name = metadata.username or metadata._name or user;
|
||||||
|
modules = metadata.modules or [];
|
||||||
|
in
|
||||||
|
{ lib, pkgs, config, ... }: {
|
||||||
|
imports = modules ++ [
|
||||||
|
userSharedConfig
|
||||||
|
nixSettingsSharedConfig
|
||||||
|
./users/home-manager/${name}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Don't create the user directories since they are assumed to
|
||||||
|
# be already created by a pre-installed system (which should
|
||||||
|
# already handle them).
|
||||||
|
xdg.userDirs.createDirectories = lib.mkForce false;
|
||||||
|
|
||||||
|
# Setting the homely options.
|
||||||
|
home.username = lib.mkForce name;
|
||||||
|
home.homeDirectory = lib.mkForce (metadata.home-directory or "/home/${config.home.username}");
|
||||||
|
|
||||||
|
programs.home-manager.enable = lib.mkForce true;
|
||||||
|
targets.genericLinux.enable = true;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Exposes only my library with the custom functions to make it easier to
|
# Exposes only my library with the custom functions to make it easier to
|
||||||
@ -383,33 +411,12 @@
|
|||||||
# NICE!
|
# NICE!
|
||||||
homeConfigurations =
|
homeConfigurations =
|
||||||
lib'.mapAttrs
|
lib'.mapAttrs
|
||||||
(filename: metadata:
|
(user: metadata:
|
||||||
let
|
mkHome {
|
||||||
name = metadata.username or metadata._name or filename;
|
|
||||||
pkgs = import inputs.${metadata.nixpkgs-channel or "nixpkgs"} {
|
pkgs = import inputs.${metadata.nixpkgs-channel or "nixpkgs"} {
|
||||||
system = metadata._system;
|
system = metadata._system;
|
||||||
};
|
};
|
||||||
extraModules = [
|
extraModules = [(userSpecificModule user metadata)];
|
||||||
({ lib, pkgs, config, ... }: {
|
|
||||||
# Don't create the user directories since they are assumed to
|
|
||||||
# be already created by a pre-installed system (which should
|
|
||||||
# already handle them).
|
|
||||||
xdg.userDirs.createDirectories = lib.mkForce false;
|
|
||||||
|
|
||||||
# Setting the homely options.
|
|
||||||
home.username = lib.mkForce name;
|
|
||||||
home.homeDirectory = lib.mkForce (metadata.home-directory or "/home/${config.home.username}");
|
|
||||||
|
|
||||||
programs.home-manager.enable = lib.mkForce true;
|
|
||||||
targets.genericLinux.enable = true;
|
|
||||||
})
|
|
||||||
userSharedConfig
|
|
||||||
nixSettingsSharedConfig
|
|
||||||
./users/home-manager/${name}
|
|
||||||
];
|
|
||||||
in
|
|
||||||
mkHome {
|
|
||||||
inherit pkgs extraModules;
|
|
||||||
home-manager-channel = metadata.home-manager-channel or "home-manager";
|
home-manager-channel = metadata.home-manager-channel or "home-manager";
|
||||||
})
|
})
|
||||||
(listImagesWithSystems users);
|
(listImagesWithSystems users);
|
||||||
|
Loading…
Reference in New Issue
Block a user