about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/module-list.nix1
-rw-r--r--modules/user/aszlig/programs/taskwarrior/config.patch48
-rw-r--r--modules/user/aszlig/programs/taskwarrior/default.nix36
3 files changed, 85 insertions, 0 deletions
diff --git a/modules/module-list.nix b/modules/module-list.nix
index 2b7e31b6..0608c1b5 100644
--- a/modules/module-list.nix
+++ b/modules/module-list.nix
@@ -7,6 +7,7 @@
   ./user/aszlig/programs/gajim
   ./user/aszlig/programs/git
   ./user/aszlig/programs/mpv
+  ./user/aszlig/programs/taskwarrior
   ./user/aszlig/programs/vim
   ./user/aszlig/programs/zsh
   ./user/aszlig/services/i3
diff --git a/modules/user/aszlig/programs/taskwarrior/config.patch b/modules/user/aszlig/programs/taskwarrior/config.patch
new file mode 100644
index 00000000..d2dde96f
--- /dev/null
+++ b/modules/user/aszlig/programs/taskwarrior/config.patch
@@ -0,0 +1,48 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ee5b6c7..7f7bdef 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -46,6 +46,9 @@ SET (TASK_DOCDIR  share/doc/task CACHE STRING "Installation directory for doc fi
+ SET (TASK_RCDIR "${TASK_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files")
+ SET (TASK_BINDIR  bin            CACHE STRING "Installation directory for the binary")
+ 
++SET (SYSTEM_TASKRC "${CMAKE_INSTALL_PREFIX}/etc/taskrc"
++     CACHE STRING "System-wide taskrc")
++
+ message ("-- Looking for SHA1 references")
+ if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
+   set (HAVE_COMMIT true)
+diff --git a/cmake.h.in b/cmake.h.in
+index fbeb807..001a450 100644
+--- a/cmake.h.in
++++ b/cmake.h.in
+@@ -16,6 +16,7 @@
+ 
+ /* Installation details */
+ #define TASK_RCDIR "${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}"
++#define SYSTEM_TASKRC "${SYSTEM_TASKRC}"
+ 
+ /* Localization */
+ #define PACKAGE_LANGUAGE ${PACKAGE_LANGUAGE}
+diff --git a/src/Context.cpp b/src/Context.cpp
+index 6dedd5e..04ced17 100644
+--- a/src/Context.cpp
++++ b/src/Context.cpp
+@@ -148,7 +148,8 @@ int Context::initialize (int argc, const char** argv)
+     }
+ 
+     config.clear ();
+-    config.load (rc_file);
++    config.load (SYSTEM_TASKRC);
++    config.load (rc_file, 2);
+     CLI::applyOverrides (argc, argv);
+ 
+     ////////////////////////////////////////////////////////////////////////////
+@@ -173,7 +174,6 @@ int Context::initialize (int argc, const char** argv)
+     }
+ 
+     tdb2.set_location (data_dir);
+-    createDefaultConfig ();
+ 
+     ////////////////////////////////////////////////////////////////////////////
+     //
diff --git a/modules/user/aszlig/programs/taskwarrior/default.nix b/modules/user/aszlig/programs/taskwarrior/default.nix
new file mode 100644
index 00000000..99d428de
--- /dev/null
+++ b/modules/user/aszlig/programs/taskwarrior/default.nix
@@ -0,0 +1,36 @@
+{ config, pkgs, lib, ... }:
+
+let
+  cfg = config.vuizvui.user.aszlig.programs.taskwarrior;
+
+  taskrc = pkgs.writeText "taskrc.in" ''
+    data.location=~/.task
+    include @out@/share/doc/task/rc/dark-yellow-green.theme
+
+    color=on
+    dateformat=Y-m-d
+    dateformat.annotation=Y-m-d
+    dateformat.edit=Y-m-d H:N:S
+    dateformat.holiday=YMD
+    dateformat.info=Y-m-d H:N:S
+    dateformat.report=Y-m-d
+    weekstart=Monday
+  '';
+
+  taskwarrior = pkgs.taskwarrior.overrideDerivation (t: {
+    patches = (t.patches or []) ++ [ ./config.patch ];
+    postInstall = (t.postInstall or "") + ''
+      mkdir -p "$out/etc"
+      substituteAll "${taskrc}" "$out/etc/taskrc"
+    '';
+  });
+
+in {
+  options.vuizvui.user.aszlig.programs.taskwarrior = {
+    enable = lib.mkEnableOption "aszlig's TaskWarrior";
+  };
+
+  config = lib.mkIf cfg.enable {
+    environment.systemPackages = lib.singleton taskwarrior;
+  };
+}