aboutsummaryrefslogtreecommitdiffstats
path: root/modules/lib/default.nix
diff options
context:
space:
mode:
authorArpit Chakladar <arpitchakladar+git@gmail.com>2026-08-29 02:02:23 +0530
committerArpit Chakladar <arpitchakladar+git@gmail.com>2026-08-29 03:50:32 +0530
commit41bdeb88009dd232808edee9fc0e4ae94358d8d6 (patch)
treec1a41f54e086064dac178ebed24d36ab34087c32 /modules/lib/default.nix
parent530299d97926d45939f831dc3ea5e444d2839d08 (diff)
downloadhome-manager-config-41bdeb88009dd232808edee9fc0e4ae94358d8d6.tar.gz
home-manager-config-41bdeb88009dd232808edee9fc0e4ae94358d8d6.zip
refactor: moving script into modules that makes sense
- instead of collecting all scripts into modules/scripts we are moving them to modules that makes sense (yazi-file-chooser.sh into yazi)
Diffstat (limited to 'modules/lib/default.nix')
-rw-r--r--modules/lib/default.nix48
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
+ )
+ );
+ };
+}