zathura: add module

Add the zathura document viewer as a program option with support for
managing the zathurarc configuration file.
This commit is contained in:
Adam Washington 2018-09-13 17:25:53 +01:00 committed by Robert Helgesson
parent 5ff03ce5ac
commit d27bccdff1
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
3 changed files with 69 additions and 0 deletions

View file

@ -786,6 +786,13 @@ in
A new module is available: 'programs.taskwarrior'.
'';
}
{
time = "2018-09-18T21:43:54+00:00";
message = ''
A new module is available: 'programs.zathura'.
'';
}
];
};
}

View file

@ -57,6 +57,7 @@ let
./programs/termite.nix
./programs/texlive.nix
./programs/vim.nix
./programs/zathura.nix
./programs/zsh.nix
./services/blueman-applet.nix
./services/compton.nix

View file

@ -0,0 +1,61 @@
{ config, lib, pkgs, ...}:
with lib;
let
cfg = config.programs.zathura;
formatLine = n: v:
let
formatValue = v:
if isBool v then (if v then "true" else "false")
else toString v;
in
"set ${n}\t\"${formatValue v}\"";
in
{
meta.maintainers = [ maintainers.rprospero ];
options.programs.zathura = {
enable = mkEnableOption ''
Zathura, a highly customizable and funtional document viewer
focused on keyboard interaction'';
options = mkOption {
default = {};
type = with types; attrsOf (either str (either bool int));
description = ''
Add <option>:set</option> command options to zathura and make
them permanent. See
<citerefentry>
<refentrytitle>zathurarc</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry>
for the full list of options.
'';
example = { default-bg = "#000000"; default-fg = "#FFFFFF"; };
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Additional commands for zathura that will be added to the
<filename>zathurarc</filename> file.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ pkgs.zathura ];
xdg.configFile."zathura/zathurarc".text =
concatStringsSep "\n" ([]
++ optional (cfg.extraConfig != "") cfg.extraConfig
++ mapAttrsToList formatLine cfg.options
) + "\n";
};
}