aboutsummaryrefslogtreecommitdiff
path: root/modules/programs/direnv.nix
diff options
context:
space:
mode:
authorMario Rodas <marsam@users.noreply.github.com>2018-10-07 10:16:43 -0500
committerRobert Helgesson <robert@rycee.net>2018-10-10 23:05:30 +0200
commitf947fafec9313ade1b87b14e194833836ed261ab (patch)
tree577a30fcb339397f7e609401cb5ac98b4b1fc7e0 /modules/programs/direnv.nix
parent68d3cdd722c86b737cc45d9961ef94baa1299168 (diff)
direnv: add config option
Diffstat (limited to 'modules/programs/direnv.nix')
-rw-r--r--modules/programs/direnv.nix29
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;
};