diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index 4707c6ce5..bfac53334 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 + ~/.config/direnv/config.toml. + + See + + direnv.toml + 1 + . + for the full list of options. + ''; + }; + stdlib = mkOption { type = types.lines; default = ""; description = '' - Custom stdlib written to ~/.config/direnv/direnvrc. + Custom stdlib written to + ~/.config/direnv/direnvrc. ''; }; @@ -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; };