about summary refs log tree commit diff
path: root/pkgs/profpatsch/xdg-open/default.nix
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2021-10-04 18:16:01 +0200
committerProfpatsch <mail@profpatsch.de>2021-10-26 20:44:13 +0200
commitc8045aa11f4d9a56f72955f1189dbea3f46deef7 (patch)
tree20e000b3cccbd179391c26bbb63bc99d28104d1d /pkgs/profpatsch/xdg-open/default.nix
parent6c53c759b156be978462c4b82d83952cc850a694 (diff)
xdg-open: add ics files to the calendar & sync to webdav
Sync the calendar every 15 minutes with a user service, and add ics
file support to xdg-open.
Diffstat (limited to 'pkgs/profpatsch/xdg-open/default.nix')
-rw-r--r--pkgs/profpatsch/xdg-open/default.nix22
1 files changed, 21 insertions, 1 deletions
diff --git a/pkgs/profpatsch/xdg-open/default.nix b/pkgs/profpatsch/xdg-open/default.nix
index 97418958..30ff275e 100644
--- a/pkgs/profpatsch/xdg-open/default.nix
+++ b/pkgs/profpatsch/xdg-open/default.nix
@@ -26,6 +26,7 @@ let
       // getBins pkgs.firefox [ "firefox" ]
       // getBins pkgs.lilyterm-git [ "lilyterm" ]
       // getBins pkgs.ranger [ "ranger" ]
+      // getBins pkgs.khal [ "khal" ]
       ;
 
   notify = msg: {
@@ -54,7 +55,24 @@ let
     args = file: [ file ];
   };
 
-
+  # TODO: interactive adding? Don’t want to add all ics files to my calendar
+  add-to-calendar = {
+    exe = writeExecline "add-to-calendar" { readNArgs = 1; } [
+      "if" [
+        bins.khal
+          "import"
+          "--batch"
+          # the private calendar is called calendar
+          "--include-calendar" "calendar"
+          "$1"
+      ]
+      "systemctl" "--user"
+        "start"
+        # defined as a user service (TODO: config variable?)
+        "calendar-sync"
+    ];
+    args = file: [ file ];
+  };
 
   open-in-browser = {
     exe = bins.firefox;
@@ -120,6 +138,7 @@ let
       , open-in-browser : Command
       , open-in-editor : Command
       , notify : Text -> Command
+      , add-to-calendar : Command
       }
     )
 → Text
@@ -150,6 +169,7 @@ let
         dmenu-list-binaries-and-exec
         exec-in-terminal-emulator
         notify
+        add-to-calendar
         ;
     };