diff options
| author | Arpit Chakladar <arpit@chakladar.me> | 2026-10-10 04:38:01 +0530 |
|---|---|---|
| committer | Arpit Chakladar <arpit@chakladar.me> | 2026-10-10 04:38:01 +0530 |
| commit | 01ed9f886597b7be16a4952534aebbbbaac810b1 (patch) | |
| tree | a01336684fabbc23a21e644a3ddaa0365be07b00 | |
| parent | d6a630e86487542e322946fd7d5dab6a37a3354c (diff) | |
| download | home-manager-config-01ed9f886597b7be16a4952534aebbbbaac810b1.tar.gz home-manager-config-01ed9f886597b7be16a4952534aebbbbaac810b1.zip | |
feat(office): migrate calendar module to khal
| -rw-r--r-- | modules/desktop/icons/default.nix | 6 | ||||
| -rw-r--r-- | modules/office/default.nix | 2 | ||||
| -rw-r--r-- | modules/office/khal/default.nix | 69 | ||||
| -rw-r--r-- | users/arpit/default.nix | 3 |
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 |
