1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-12-29 13:19:47 +01:00
home-manager/modules/programs/pubs.nix
Loïc Reynier afe96e7433
pubs: add module
Note, the pubs configuration file uses ConfigObj syntax, which is
similar to the INI files syntax but with extra functionalities like
nested sections. This prevents it from using Nix's INI format
generator. Here is an example of pubs configuration that cannot be
generated using Nix's INI format generator:

    [plugins]

    [[git]]
    manual=False

For this reason, we opted for a stringly-typed configuration since the
use of a structured `settings` option would require a custom parser.
2022-03-06 10:40:28 +01:00

60 lines
1.2 KiB
Nix

{ 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
<filename>$HOME/.pubsrc</filename>.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ cfg.package ];
home.file.".pubsrc" =
mkIf (cfg.extraConfig != "") { text = cfg.extraConfig; };
};
}