diff options
Diffstat (limited to 'modules/lib/default.nix')
| -rw-r--r-- | modules/lib/default.nix | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/modules/lib/default.nix b/modules/lib/default.nix new file mode 100644 index 0000000..fd54fa2 --- /dev/null +++ b/modules/lib/default.nix @@ -0,0 +1,48 @@ +# Internal aggregation for script modules registered via mkScriptModule +{ + config, + lib, + ... +}: +{ + options.scriptPaths = lib.mkOption { + type = lib.types.listOf (lib.types.listOf lib.types.str); + default = [ ]; + internal = true; + description = "Attr paths of script modules registered via mkScriptModule."; + }; + + config = { + home.packages = lib.filter (p: p != null) ( + map (path: (lib.getAttrFromPath path config).package) config.scriptPaths + ); + + xdg.desktopEntries = lib.listToAttrs ( + map + ( + path: + let + name = lib.last path; + sc = lib.getAttrFromPath path config; + in + lib.nameValuePair name { + name = sc.desktop.displayName; + exec = "${lib.getExe config.terminal.kitty.package} --class ${name} -e ${lib.getExe sc.package}"; + icon = sc.desktop.icon; + categories = [ "Utility" ]; + terminal = false; + type = "Application"; + } + ) + ( + lib.filter ( + path: + let + sc = lib.getAttrFromPath path config; + in + sc.enable && sc.desktop.enable + ) config.scriptPaths + ) + ); + }; +} |
