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;
};