Fixed system wide configuration system for user specific modules

This commit is contained in:
Jan Bulthuis 2024-07-18 07:09:56 +02:00
parent 1b4f8911fd
commit f80047be52
4 changed files with 12 additions and 23 deletions

View File

@ -41,8 +41,8 @@ in {
# Import home manager # Import home manager
<home-manager/nixos> <home-manager/nixos>
# Import system configuration setup # Import system wide configuration required for user modules
# ./system.nix ./systemwide/waylock.nix
]; ];
options = { options = {

View File

@ -6,17 +6,9 @@ let
in { in {
options.modules.waylock = { options.modules.waylock = {
enable = mkEnableOption "waylock"; enable = mkEnableOption "waylock";
system = mkOption {
type = types.attrsOf types.anything;
description = "System wide configuration to apply if module is enabled";
};
}; };
config = { config = {
modules.waylock.system = mkForce {
security.pam.services.waylock = {};
};
home.packages = mkIf cfg.enable (with pkgs; [ home.packages = mkIf cfg.enable (with pkgs; [
waylock waylock
]); ]);

View File

@ -1,13 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
users = config.home-manager.users;
allModules = flatten (map (user: (attrValues user.modules)) (attrValues users));
modules = filter (module: module?system && module?enable) allModules;
configs = map (module: module.system) modules;
combined = (foldl (a: b: recursiveUpdate a b) {} configs);
in {
# Add the combined systemwide config required by the user modules.
config = combined;
}

View File

@ -0,0 +1,10 @@
{ lib, config, pkgs, ... }:
with lib;
let
enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users);
in {
config = mkIf enabled {
security.pam.services.waylock = {};
};
}