aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArpit Chakladar <arpit@chakladar.me>2026-10-10 04:38:01 +0530
committerArpit Chakladar <arpit@chakladar.me>2026-10-10 04:38:01 +0530
commit01ed9f886597b7be16a4952534aebbbbaac810b1 (patch)
treea01336684fabbc23a21e644a3ddaa0365be07b00
parentd6a630e86487542e322946fd7d5dab6a37a3354c (diff)
downloadhome-manager-config-01ed9f886597b7be16a4952534aebbbbaac810b1.tar.gz
home-manager-config-01ed9f886597b7be16a4952534aebbbbaac810b1.zip
feat(office): migrate calendar module to khal
-rw-r--r--modules/desktop/icons/default.nix6
-rw-r--r--modules/office/default.nix2
-rw-r--r--modules/office/khal/default.nix69
-rw-r--r--users/arpit/default.nix3
4 files changed, 77 insertions, 3 deletions
diff --git a/modules/desktop/icons/default.nix b/modules/desktop/icons/default.nix
index d310268..e4f7d7b 100644
--- a/modules/desktop/icons/default.nix
+++ b/modules/desktop/icons/default.nix
@@ -10,6 +10,11 @@ in
{
options.desktop.icons = {
apps = {
+ khal = lib.mkOption {
+ type = lib.types.str;
+ default = "calendar";
+ description = "Icon for khal calendar app";
+ };
calcurse = lib.mkOption {
type = lib.types.str;
default = "calendar";
@@ -164,6 +169,7 @@ in
config = lib.mkIf cfg.enable {
desktop.icons = {
apps = {
+ khal = "calendar";
calcurse = "calendar";
git = "git";
gopass = "password-manager";
diff --git a/modules/office/default.nix b/modules/office/default.nix
index 669ff22..0a19fcd 100644
--- a/modules/office/default.nix
+++ b/modules/office/default.nix
@@ -2,7 +2,7 @@
{ ... }:
{
imports = [
- ./calcurse
+ ./khal
./zathura
];
}
diff --git a/modules/office/khal/default.nix b/modules/office/khal/default.nix
new file mode 100644
index 0000000..8d924f5
--- /dev/null
+++ b/modules/office/khal/default.nix
@@ -0,0 +1,69 @@
+# CLI calendar application (khal)
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ cfg = config.office.khal;
+ icons = config.desktop.icons.apps;
+ calendarPath = "${config.xdg.dataHome}/khal/calendars";
+ base16Colors = import ../../colors/base16 { inherit config lib pkgs; };
+in
+{
+ options.office.khal = {
+ enable = lib.mkEnableOption "khal, a CLI calendar application";
+ package = lib.mkOption {
+ type = lib.types.package;
+ readOnly = true;
+ default = config.programs.khal.package;
+ description = "The khal package to use.";
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ programs.khal = {
+ enable = true;
+ locale = {
+ timeformat = "%H:%M";
+ dateformat = "%Y-%m-%d";
+ longdateformat = "%Y-%m-%d";
+ datetimeformat = "%Y-%m-%d %H:%M";
+ longdatetimeformat = "%Y-%m-%d %H:%M";
+ };
+ settings.default = {
+ default_calendar = "personal";
+ default_dayevent_duration = "1d";
+ default_event_duration = "1h";
+ enable_mouse = true;
+ timedelta = "2d";
+ };
+ settings.view.theme = "dark";
+ };
+
+ accounts.calendar = {
+ basePath = calendarPath;
+ accounts.personal = {
+ khal = {
+ enable = true;
+ color = base16Colors.colorsWithHashPrefix.base0D;
+ };
+ local.type = "filesystem";
+ };
+ };
+
+ xdg.desktopEntries."khal" = lib.mkIf (config.terminal.kitty.enable && cfg.package != null) {
+ name = "khal";
+ exec = "${lib.getExe config.terminal.kitty.package} --class khal -e ${lib.getExe' cfg.package "khal"} interactive";
+ icon = icons.khal or "calendar";
+ categories = [
+ "Office"
+ "Calendar"
+ ];
+ comment = "CLI calendar application";
+ terminal = false;
+ type = "Application";
+ };
+ };
+}
diff --git a/users/arpit/default.nix b/users/arpit/default.nix
index 75cfcbc..de168be 100644
--- a/users/arpit/default.nix
+++ b/users/arpit/default.nix
@@ -66,8 +66,7 @@
networking.usque.warp.enable = true;
# Office
- office.calcurse.enable = true;
- office.calcurse.sync.enable = true;
+ office.khal.enable = true;
office.zathura.enable = true;
# Security