mirror of
https://github.com/nix-community/home-manager
synced 2025-01-11 03:29:50 +01:00
todoman: add todoman module (#5252)
* todoman: add todoman module Adds Mikilio as maintainer for new module for todoman a standards-based task manager based on iCalendar Apply suggestions from code review Co-authored-by: Robert Helgesson <robert@rycee.net> Update modules/programs/todoman.nix Co-authored-by: Robert Helgesson <robert@rycee.net> * fix: correct config name * chore: add test --------- Co-authored-by: Robert Helgesson <robert@rycee.net>
This commit is contained in:
parent
01f40d52d6
commit
d4aebb947a
6 changed files with 94 additions and 0 deletions
|
@ -478,6 +478,12 @@
|
|||
github = "mainrs";
|
||||
githubId = 5113257;
|
||||
};
|
||||
mikilio = {
|
||||
name = "mikilio";
|
||||
email = "official.mikilio+dev@gmail.com";
|
||||
github = "mikilio";
|
||||
githubId = 86004375;
|
||||
};
|
||||
kmaasrud = {
|
||||
name = "Knut Magnus Aasrud";
|
||||
email = "km@aasrud.com";
|
||||
|
|
|
@ -246,6 +246,7 @@ let
|
|||
./programs/tmate.nix
|
||||
./programs/tmux.nix
|
||||
./programs/tofi.nix
|
||||
./programs/todoman.nix
|
||||
./programs/topgrade.nix
|
||||
./programs/translate-shell.nix
|
||||
./programs/urxvt.nix
|
||||
|
|
62
modules/programs/todoman.nix
Normal file
62
modules/programs/todoman.nix
Normal file
|
@ -0,0 +1,62 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.programs.todoman;
|
||||
|
||||
format = pkgs.formats.keyValue { };
|
||||
|
||||
in {
|
||||
|
||||
meta.maintainers = [ hm.maintainers.mikilio ];
|
||||
|
||||
options.programs.todoman = {
|
||||
enable = lib.mkEnableOption "todoman";
|
||||
|
||||
glob = mkOption {
|
||||
type = types.str;
|
||||
default = "*";
|
||||
description = ''
|
||||
The glob expansion which matches all directories relevant.
|
||||
'';
|
||||
example = "*/*";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Text for configuration of todoman.
|
||||
The syntax is Python.
|
||||
|
||||
See [docs](`https://todoman.readthedocs.io/en/stable/man.html#id5`).
|
||||
for the full list of options.
|
||||
'';
|
||||
example = ''
|
||||
date_format = "%Y-%m-%d";
|
||||
time_format = "%H:%M";
|
||||
default_list = "Personal";
|
||||
default_due = 48;
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [{
|
||||
assertion = config.accounts.calendar ? basePath;
|
||||
message = ''
|
||||
A base directory for calendars must be specified via
|
||||
`accounts.calendar.basePath` to generate config for todoman
|
||||
'';
|
||||
}];
|
||||
|
||||
home.packages = [ pkgs.todoman ];
|
||||
|
||||
xdg.configFile."todoman/config.py".text = lib.concatLines [
|
||||
''path = "${config.accounts.calendar.basePath}/${cfg.glob}"''
|
||||
cfg.extraConfig
|
||||
];
|
||||
};
|
||||
}
|
21
tests/modules/programs/todoman/config.nix
Normal file
21
tests/modules/programs/todoman/config.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
programs.todoman = {
|
||||
enable = true;
|
||||
glob = "*/*";
|
||||
extraConfig = ''
|
||||
date_format = "%d.%m.%Y"
|
||||
default_list = "test"
|
||||
'';
|
||||
};
|
||||
|
||||
accounts.calendar.basePath = "base/path/calendar";
|
||||
|
||||
test.stubs = { todoman = { }; };
|
||||
|
||||
nmt.script = ''
|
||||
configFile=home-files/.config/todoman/config.py
|
||||
assertFileExists $configFile
|
||||
assertFileContent $configFile ${./todoman-config-expected}
|
||||
'';
|
||||
}
|
||||
|
1
tests/modules/programs/todoman/default.nix
Normal file
1
tests/modules/programs/todoman/default.nix
Normal file
|
@ -0,0 +1 @@
|
|||
{ todoman-config = ./config.nix; }
|
3
tests/modules/programs/todoman/todoman-config-expected
Normal file
3
tests/modules/programs/todoman/todoman-config-expected
Normal file
|
@ -0,0 +1,3 @@
|
|||
path = "/home/hm-user/base/path/calendar/*/*"
|
||||
date_format = "%d.%m.%Y"
|
||||
default_list = "test"
|
Loading…
Reference in a new issue