diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fb7ca984d..9ffb82ed1 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -201,6 +201,9 @@ /modules/programs/powerline-go.nix @DamienCassou +/modules/programs/pubs.nix @loicreynier +/tests/modules/programs/pubs @loicreynier + /modules/programs/rbw.nix @ambroisie /tests/modules/programs/rbw @ambroisie diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 5789c62a7..37486e84a 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -83,6 +83,12 @@ github = "kubukoz"; githubId = 894884; }; + loicreynier = { + name = "Loïc Reynier"; + email = "loic@loireynier.fr"; + github = "loicreynier"; + githubId = 88983487; + }; matrss = { name = "Matthias Riße"; email = "matrss@users.noreply.github.com"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 6efdcae81..d45b2c32f 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -2449,6 +2449,13 @@ in A new module is available: 'programs.just'. ''; } + + { + time = "2022-03-06T09:40:17+00:00"; + message = '' + A new module is available: 'programs.pubs'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 8450fcf65..ff8fd6227 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -130,6 +130,7 @@ let ./programs/pidgin.nix ./programs/piston-cli.nix ./programs/powerline-go.nix + ./programs/pubs.nix ./programs/qutebrowser.nix ./programs/rbw.nix ./programs/readline.nix diff --git a/modules/programs/pubs.nix b/modules/programs/pubs.nix new file mode 100644 index 000000000..5a597deab --- /dev/null +++ b/modules/programs/pubs.nix @@ -0,0 +1,60 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.pubs; + +in { + meta.maintainers = [ hm.maintainers.loicreynier ]; + + options.programs.pubs = { + enable = mkEnableOption "pubs"; + + package = mkOption { + type = types.package; + default = pkgs.pubs; + defaultText = literalExpression "pkgs.pubs"; + description = "The package to use for the pubs script."; + }; + + extraConfig = mkOption { + type = types.lines; + default = ""; + example = literalExpression '' + ''' + [main] + pubsdir = ''${config.home.homeDirectory}/.pubs + docsdir = ''${config.home.homeDirectory}/.pubs/doc + doc_add = link + open_cmd = xdg-open + + [plugins] + active = git,alias + + [[alias]] + + [[[la]]] + command = list -a + description = lists papers in lexicographic order + + [[git]] + quiet = True + manual = False + force_color = False + '''''; + description = '' + Configuration using syntax written to + $HOME/.pubsrc. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + + home.file.".pubsrc" = + mkIf (cfg.extraConfig != "") { text = cfg.extraConfig; }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index 7287bc41b..35cbe1d9e 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -86,6 +86,7 @@ import nmt { ./modules/programs/pandoc ./modules/programs/pet ./modules/programs/powerline-go + ./modules/programs/pubs ./modules/programs/qutebrowser ./modules/programs/readline ./modules/programs/sagemath diff --git a/tests/modules/programs/pubs/default.nix b/tests/modules/programs/pubs/default.nix new file mode 100644 index 000000000..db68bb118 --- /dev/null +++ b/tests/modules/programs/pubs/default.nix @@ -0,0 +1 @@ +{ pubs-example-settings = ./pubs-example-settings.nix; } diff --git a/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc b/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc new file mode 100644 index 000000000..ba1fa88ff --- /dev/null +++ b/tests/modules/programs/pubs/pubs-example-settings-expected-pubsrc @@ -0,0 +1,19 @@ +[main] +pubsdir = ~/.pubs +docsdir = ~/.pubs/doc +doc_add = link +open_cmd = xdg-open + +[plugins] +active = git,alias + +[[alias]] + +[[[la]]] +command = list -a +description = lists papers in lexicographic order + +[[git]] +quiet = True +manual = False +force_color = False diff --git a/tests/modules/programs/pubs/pubs-example-settings.nix b/tests/modules/programs/pubs/pubs-example-settings.nix new file mode 100644 index 000000000..59f228009 --- /dev/null +++ b/tests/modules/programs/pubs/pubs-example-settings.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +{ + programs.pubs = { + enable = true; + + extraConfig = '' + [main] + pubsdir = ~/.pubs + docsdir = ~/.pubs/doc + doc_add = link + open_cmd = xdg-open + + [plugins] + active = git,alias + + [[alias]] + + [[[la]]] + command = list -a + description = lists papers in lexicographic order + + [[git]] + quiet = True + manual = False + force_color = False + ''; + }; + + test.stubs.pubs = { }; + + nmt.script = '' + assertFileContent \ + home-files/.pubsrc ${./pubs-example-settings-expected-pubsrc} + ''; +}