From 239e44d70459905334ef14f8763143b2c010a8f4 Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Sun, 15 Dec 2024 19:09:07 +0000 Subject: [PATCH] Add direnv cache Signed-off-by: Nikolaos Karaolidis --- .envrc | 1 + .../configs/console/nix-direnv/default.nix | 22 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 .envrc 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" = { }; + }; }