# Allow switching to a specific environment when going into a directory { config, lib, pkgs, ... }: { config = { programs = { direnv = { enable = true; enableBashIntegration = true; enableZshIntegration = true; nix-direnv.enable = true; }; git.ignores = [ ".envrc" ".direnv" ]; }; systemd.user.services.direnv_ignore = { Service = { Type = "oneshot"; ExecStart = lib.getExe ( pkgs.writeShellApplication { name = "direnv_ignore"; text = '' ignore_direnv() { dir="$1" if [ ! -f "$dir/.stignore" ] then touch "$dir/.stignore" fi rule="**/.direnv" if ! grep -qFx "$rule" "$dir/.stignore" then echo "$rule" >> "$dir/.stignore" fi } '' + (lib.trivial.pipe config.frogeye.folders [ builtins.attrValues (builtins.filter (folder: folder.syncthing.enable)) (builtins.map (folder: '' ignore_direnv ${lib.strings.escapeShellArg folder.fullPath} '')) lib.strings.concatLines ]); } ); }; Install = { WantedBy = [ "default.target" ]; }; }; }; }