direnv: add config option

This commit is contained in:
Mario Rodas 2018-10-07 10:16:43 -05:00 committed by Robert Helgesson
parent 68d3cdd722
commit f947fafec9
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -5,6 +5,12 @@ with lib;
let
cfg = config.programs.direnv;
configFile = config:
pkgs.runCommand "config.toml" { buildInputs = [ pkgs.remarshal ]; } ''
remarshal -if json -of toml \
< ${pkgs.writeText "config.json" (builtins.toJSON config)} \
> $out
'';
in
@ -14,11 +20,28 @@ in
options.programs.direnv = {
enable = mkEnableOption "direnv, the environment switcher";
config = mkOption {
type = types.attrs;
default = {};
description = ''
Configuration written to
<filename>~/.config/direnv/config.toml</filename>.
</para><para>
See
<citerefentry>
<refentrytitle>direnv.toml</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry>.
for the full list of options.
'';
};
stdlib = mkOption {
type = types.lines;
default = "";
description = ''
Custom stdlib written to <filename>~/.config/direnv/direnvrc</filename>.
Custom stdlib written to
<filename>~/.config/direnv/direnvrc</filename>.
'';
};
@ -50,6 +73,10 @@ in
config = mkIf cfg.enable {
home.packages = [ pkgs.direnv ];
xdg.configFile."direnv/config.toml" = mkIf (cfg.config != {}) {
source = configFile cfg.config;
};
xdg.configFile."direnv/direnvrc" = mkIf (cfg.stdlib != "") {
text = cfg.stdlib;
};