diff options
| author | Quentin Aristote <quentin@aristote.fr> | 2023-02-22 22:39:56 +0100 |
|---|---|---|
| committer | Quentin Aristote <quentin@aristote.fr> | 2023-02-28 17:47:49 +0100 |
| commit | 70d60e5ee6d1092f765807b8483c9c16d2afa678 (patch) | |
| tree | edeb7a91de348d6fc5dd0e43b9ca7bef794b322c /modules/home-manager/personal/programs/direnv.nix | |
| parent | bbb2f5e7cefb970b3e4994ee51bb2c3a18a073c2 (diff) | |
add home-manager modules
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 " ]; }; + }); +} |
