diff options
Diffstat (limited to 'modules/home-manager/personal/programs/direnv.nix')
| -rw-r--r-- | modules/home-manager/personal/programs/direnv.nix | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/modules/home-manager/personal/programs/direnv.nix b/modules/home-manager/personal/programs/direnv.nix new file mode 100644 index 0000000..7d87dc2 --- /dev/null +++ b/modules/home-manager/personal/programs/direnv.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.programs.direnv; +in { + programs.direnv.nix-direnv.enable = true; + + systemd.user = lib.mkIf cfg.enable + (pkgs.personal.lib.homeManager.serviceWithTimer "direnv-clean-update" { + Unit = { + Description = + "Remove old virtual environments and update the current ones"; + After = [ "network-online.target" ]; + }; + Service = { + Type = "oneshot"; + ExecSearchPath = + "${pkgs.coreutils}/bin:${pkgs.findutils}/bin:${pkgs.direnv}/bin:/bin/sh"; + WorkingDirectory = "${config.home.homeDirectory}"; + ExecStart = '' + find -type d -name .direnv \ + -execdir /bin/sh -c "rm -f .direnv/{nix,flake}-profile*" \; \ + -execdir direnv exec . true \; + ''; + }; + Timer = { + Persistent = true; + OnCalendar = "daily"; + }; + Install = { WantedBy = [ "default.target " ]; }; + }); +} |
