diff options
author | Mario Rodas <marsam@users.noreply.github.com> | 2018-10-07 10:16:43 -0500 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2018-10-10 23:05:30 +0200 |
commit | f947fafec9313ade1b87b14e194833836ed261ab (patch) | |
tree | 577a30fcb339397f7e609401cb5ac98b4b1fc7e0 /modules/programs/direnv.nix | |
parent | 68d3cdd722c86b737cc45d9961ef94baa1299168 (diff) |
direnv: add config option
Diffstat (limited to 'modules/programs/direnv.nix')
-rw-r--r-- | modules/programs/direnv.nix | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index 4707c6ce5b8..bfac5333471 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -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; }; |