From 7846b4e7450900acb743db9276e40662cbe1b7dd Mon Sep 17 00:00:00 2001 From: ulic-youthlic Date: Sun, 2 Nov 2025 12:50:13 +0800 Subject: [PATCH] feat: Add direnv module and add configuration --- home/modules/default.nix | 5 +---- home/modules/programs/direnv/default.nix | 21 +++++++++++++++++++++ home/modules/programs/direnv/direnvrc.sh | 10 ++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 home/modules/programs/direnv/default.nix create mode 100644 home/modules/programs/direnv/direnvrc.sh 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}" + )}" +}