diff options
| author | aristote <quentin.aristote@irif.fr> | 2025-07-29 18:09:28 +0200 |
|---|---|---|
| committer | aristote <quentin.aristote@irif.fr> | 2025-07-30 00:12:05 +0200 |
| commit | b3686c3a4848ea3f99c7735b4da21a4677a6e321 (patch) | |
| tree | 8bb545967bbc4232bfe464f88005242a0e4a6a49 /modules | |
| parent | fc019d789523ce5f89436b8dbc458cf3b79abf43 (diff) | |
home: devenv: update envs when nixos-upgrading
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/home-manager/personal/programs/devenv.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/modules/home-manager/personal/programs/devenv.nix b/modules/home-manager/personal/programs/devenv.nix index dbe5aab..29494f9 100644 --- a/modules/home-manager/personal/programs/devenv.nix +++ b/modules/home-manager/personal/programs/devenv.nix @@ -7,6 +7,40 @@ let cfg = config.personal.programs.devenv; importedDevenv = pkgs ? devenv; + devenvUpdateScript = pkgs.callPackage ( + { + bash, + devenv, + direnv, + findutils, + git, + gnugrep, + }: + pkgs.writeShellApplication { + name = "devenv-update"; + + runtimeInputs = [ + bash + devenv + direnv + findutils + git + gnugrep + ]; + + text = '' + find . -name '.envrc' -execdir bash -c ' + if [[ $(direnv status | grep "Found RC allowed 0") ]] + then + echo Updating shell $(pwd)... + devenv update + devenv shell echo Shell $(pwd) updated! + echo + fi + ' \; + ''; + } + ) { devenv = pkgs.devenv; }; in { options.personal.programs.devenv.enable = lib.mkEnableOption "devenv"; @@ -19,5 +53,26 @@ in } ]; home.packages = lib.optional importedDevenv pkgs.devenv; + + systemd.user = pkgs.personal.lib.homeManager.serviceWithTimer "devenv-update" { + Unit = { + Description = "Update devenv shells"; + After = [ + "network-online.target" + ]; + }; + Service = { + Type = "oneshot"; + WorkingDirectory = "${config.home.homeDirectory}"; + ExecStart = "${devenvUpdateScript}/bin/devenv-update"; + }; + Timer = { + Persistent = true; + OnCalendar = "daily"; + }; + Install = { + WantedBy = [ "default.target" ]; + }; + }; }; } |
