diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..5a0e219 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake self#nix diff --git a/hosts/common/user/configs/console/nix-direnv/default.nix b/hosts/common/user/configs/console/nix-direnv/default.nix index 391c194..5a66151 100644 --- a/hosts/common/user/configs/console/nix-direnv/default.nix +++ b/hosts/common/user/configs/console/nix-direnv/default.nix @@ -4,14 +4,30 @@ }: { inputs, ... }: { - home-manager.users.${user} = { - programs.direnv = { + home-manager.users.${user}.programs = { + direnv = { enable = true; silent = true; nix-direnv.enable = true; enableZshIntegration = true; }; + + # https://github.com/direnv/direnv/wiki/Customizing-cache-location + zsh.initExtra = '' + declare -A direnv_layout_dirs + direnv_layout_dir() { + local hash path + echo "''${direnv_layout_dirs[$PWD]:=$( + hash="$(sha1sum - <<< "$PWD" | head -c40)" + path="''${PWD//[^a-zA-Z0-9]/-}" + echo "${home}/.cache/direnv/layouts/''${hash}''${path}" + )}" + } + ''; }; - environment.persistence."/persist"."${home}/.config/direnv/direnv.toml" = { }; + environment.persistence = { + "/persist"."${home}/.config/direnv/direnv.toml" = { }; + "/cache"."${home}/.cache/direnv" = { }; + }; }