diff options
Diffstat (limited to 'modules/default.nix')
| -rw-r--r-- | modules/default.nix | 64 |
1 files changed, 43 insertions, 21 deletions
diff --git a/modules/default.nix b/modules/default.nix index d32d8f6..d32cbe4 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -2,26 +2,48 @@ let inherit (lib) mkOption mkEnableOption types; inherit (flake-parts-lib) mkPerSystemOption; -in { - options.perSystem = mkPerSystemOption ({ pkgs, system, config, ... }: { - options.koreader = mkOption { - default = {}; - type = types.lazyAttrsOf <| types.submoduleWith { - shorthandOnlyDefinesConfig = true; - modules = [ - { - _module.args = { - inherit pkgs lib; - }; - } - ({ name, ... }: { - imports = [ ./main.nix ]; - options = { - enable = mkEnableOption name // { default = true; }; - }; - }) - ]; +in +{ + options.perSystem = mkPerSystemOption ( + { + pkgs, + system, + config, + ... + }: + { + options.koreader = mkOption { + default = { }; + type = + types.lazyAttrsOf + <| types.submoduleWith { + shorthandOnlyDefinesConfig = true; + modules = [ + { + _module.args = { + inherit pkgs lib; + }; + } + ({ name, ... }: { + imports = [ ./main.nix ]; + options = { + enable = mkEnableOption name // { + default = true; + }; + }; + }) + ]; + }; }; - }; - }); + + config.packages = + let + koreaders = lib.filterAttrs (_: v: v.enable) config.koreader; + in + lib.mapAttrs' (name: value: { + name = "koreader-${name}"; + value = value.koreader.finalPackage; + }) koreaders; + } + ); } |
