1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2024-12-14 11:57:55 +00:00

programs.khal: add settings option (#4375)

This commit is contained in:
arjan-s 2023-08-30 11:57:47 +02:00 committed by GitHub
parent 8bde7a651b
commit a7eab56be5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 62 additions and 4 deletions

View file

@ -7,6 +7,8 @@ let
cfg = config.programs.khal; cfg = config.programs.khal;
iniFormat = pkgs.formats.ini { };
khalCalendarAccounts = khalCalendarAccounts =
filterAttrs (_: a: a.khal.enable) config.accounts.calendar.accounts; filterAttrs (_: a: a.khal.enable) config.accounts.calendar.accounts;
@ -147,6 +149,7 @@ let
in { in {
options.programs.khal = { options.programs.khal = {
enable = mkEnableOption "khal, a CLI calendar application"; enable = mkEnableOption "khal, a CLI calendar application";
locale = mkOption { locale = mkOption {
type = lib.types.submodule { options = localeOptions; }; type = lib.types.submodule { options = localeOptions; };
description = '' description = ''
@ -154,6 +157,25 @@ in {
''; '';
default = { }; default = { };
}; };
settings = mkOption {
type = iniFormat.type;
default = { };
example = literalExpression ''
{
default = {
default_calendar = "Calendar";
timedelta = "5d";
};
view = {
agenda_event_format =
"{calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol}{reset}";
};
}'';
description = ''
Configuration options to add to the various sections in the configuration file.
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -161,7 +183,7 @@ in {
xdg.configFile."khal/config".text = concatStringsSep "\n" ([ "[calendars]" ] xdg.configFile."khal/config".text = concatStringsSep "\n" ([ "[calendars]" ]
++ mapAttrsToList genCalendarStr khalAccounts ++ [ ++ mapAttrsToList genCalendarStr khalAccounts ++ [
(generators.toINI { } { (generators.toINI { } (recursiveUpdate cfg.settings {
locale = definedAttrs (cfg.locale // { _module = null; }); locale = definedAttrs (cfg.locale // { _module = null; });
default = optionalAttrs (!isNull primaryAccount) { default = optionalAttrs (!isNull primaryAccount) {
@ -171,7 +193,7 @@ in {
else else
primaryAccount.primaryCollection; primaryAccount.primaryCollection;
}; };
}) }))
]); ]);
}; };
} }

View file

@ -1,7 +1,15 @@
{ ... }: { ... }:
{ {
programs.khal.enable = true; programs.khal = {
enable = true;
settings = {
default.timedelta = "5d";
view.agenda_event_format =
"{calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol}{reset}";
};
};
accounts.calendar = { accounts.calendar = {
basePath = "$XDG_CONFIG_HOME/cal"; basePath = "$XDG_CONFIG_HOME/cal";
accounts = { accounts = {
@ -27,6 +35,8 @@
test.stubs = { khal = { }; }; test.stubs = { khal = { }; };
nmt.script = '' nmt.script = ''
assertFileExists home-files/.config/khal/config configFile=home-files/.config/khal/config
assertFileExists $configFile
assertFileContent $configFile ${./khal-config-expected}
''; '';
} }

View file

@ -0,0 +1,26 @@
[calendars]
[[test]]
path = /home/hm-user/$XDG_CONFIG_HOME/cal/test/
readonly = True
priority=10
type=calendar
[default]
default_calendar=test
highlight_event_days=true
timedelta=5d
[locale]
dateformat=%x
datetimeformat=%c
firstweekday=0
longdateformat=%x
longdatetimeformat=%c
timeformat=%X
unicode_symbols=true
weeknumbers=off
[view]
agenda_event_format={calendar-color}{cancelled}{start-end-time-style} {title}{repeat-symbol}{reset}