diff --git a/home/modules/default.nix b/home/modules/default.nix index 4585136..0d851e0 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -13,9 +13,6 @@ ++ lib.youthlic.loadImports ./.; config = { - programs.direnv = { - enable = true; - nix-direnv.enable = true; - }; + youthlic.programs.direnv.enable = true; }; } diff --git a/home/modules/programs/direnv/default.nix b/home/modules/programs/direnv/default.nix new file mode 100644 index 0000000..6571be7 --- /dev/null +++ b/home/modules/programs/direnv/default.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: +let + cfg = config.youthlic.programs.direnv; +in +{ + options = { + youthlic.programs.direnv = { + enable = lib.mkEnableOption "direnv"; + }; + }; + config = lib.mkIf cfg.enable { + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; + xdg.configFile."direnvrc" = { + target = "direnv/direnvrc"; + source = ./direnvrc.sh; + }; + }; +} diff --git a/home/modules/programs/direnv/direnvrc.sh b/home/modules/programs/direnv/direnvrc.sh new file mode 100644 index 0000000..951d015 --- /dev/null +++ b/home/modules/programs/direnv/direnvrc.sh @@ -0,0 +1,10 @@ +: "${XDG_CACHE_HOME:=$HOME/.cache}" +declare -A direnv_layout_dirs +function direnv_layout_dir() { + local hash path + echo "${direnv_layout_dirs[$PWD]:=$( + hash="$(sha1sum - <<<"$PWD" | head -c40)" + path="${PWD//[^a-zA-Z0-9]/-}" + echo "${XDG_CACHE_HOME}/direnv/layouts/${hash}${path}" + )}" +}