aboutsummaryrefslogtreecommitdiff
path: root/module/tasker.nix
diff options
context:
space:
mode:
Diffstat (limited to 'module/tasker.nix')
-rw-r--r--module/tasker.nix59
1 files changed, 59 insertions, 0 deletions
diff --git a/module/tasker.nix b/module/tasker.nix
new file mode 100644
index 0000000..8b51d94
--- /dev/null
+++ b/module/tasker.nix
@@ -0,0 +1,59 @@
+{ pkgs, config, ... }:
+
+let
+ taskivations = pkgs.lib.mapAttrsToList (name: conf: let
+ command = pkgs.writeTextFile {
+ name = "tasker_cmd_" + name;
+ executable = true;
+ destination = "/bin/tasker_cmd_" + name;
+ text = pkgs.lib.attrByPath [ conf.type ] "" {
+ launcher = ''
+ #!/bin/sh
+ pushd ${conf.directory}
+ exec ${conf.command}
+ popd
+ '';
+ terminal = ''
+ #!/bin/sh
+ exec ${pkgs.kitty}/bin/kitty -d ${conf.directory} ${conf.command}
+ '';
+ local-shell = ''
+ #!/bin/sh
+ exec ${pkgs.kitty}/bin/kitty -d ${conf.directory} nix-shell --command fish
+ '';
+ local-editor = ''
+ #!/bin/sh
+ pushd ${conf.directory}
+ exec nix-shell --run 'nvim-qt --no-ext-tabline'
+ popd
+ '';
+ environment = ''
+ #!/bin/sh
+ exec ${pkgs.kitty}/bin/kitty -d ${conf.directory} nix-shell \
+ ${builtins.unsafeDiscardStringContext conf.environment.drvPath} --command fish
+ '';
+ };
+ };
+
+ shortcut = pkgs.writeTextFile {
+ name = "tasker_shortcut_" + name;
+ executable = false;
+ destination = "/share/applications/tasker_shortcut_" + name + ".desktop";
+ text = ''
+ [Desktop Entry]
+ Type=Application
+ Name=${conf.description}
+ GenericName=Tasker
+ Exec=${command}/bin/tasker_cmd_${name}
+ Terminal=false
+ '';
+ };
+
+ in pkgs.symlinkJoin {
+ name = "tasker_task_" + name;
+ paths = [ shortcut ];
+ }) config.custom.tasks;
+
+in {
+ home.packages = taskivations;
+}