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:
parent
8bde7a651b
commit
a7eab56be5
3 changed files with 62 additions and 4 deletions
|
@ -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;
|
||||||
};
|
};
|
||||||
})
|
}))
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
26
tests/modules/programs/khal/khal-config-expected
Normal file
26
tests/modules/programs/khal/khal-config-expected
Normal 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}
|
Loading…
Reference in a new issue