diff options
| author | Quentin Aristote <quentin@aristote.fr> | 2022-08-31 14:32:14 +0200 |
|---|---|---|
| committer | Quentin Aristote <quentin@aristote.fr> | 2022-08-31 14:32:14 +0200 |
| commit | 142e09b930ff4ce2f3afeaa1cbb70674f27b0111 (patch) | |
| tree | 09617dc953f0e1ceaffded4a3193cc1d7316a247 /nixos/services.nix | |
| parent | 338c0e24b923a6cc0aff4af1b44999441cdb281e (diff) | |
nixos: services: add service to reload direnvs after auto nixos upgrades
Diffstat (limited to 'nixos/services.nix')
| -rw-r--r-- | nixos/services.nix | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/nixos/services.nix b/nixos/services.nix index 984eace..1d9d850 100644 --- a/nixos/services.nix +++ b/nixos/services.nix @@ -1,23 +1,38 @@ -{ pkgs, config, ... }: +{ lib, config, pkgs, ... }: -{ +let + direnv-reload-service = user: { + description = "Update virtual environments of user ${user}"; + + restartIfChanged = false; + unitConfig.X-StopOnRemoval = false; + serviceConfig = { + Type = "oneshot"; + User = user; + }; + + environment = { + inherit (config.environment.sessionVariables) NIX_PATH; + HOME = config.users.users."${user}".home; + }; + + path = with pkgs; [ direnv ]; + script = '' + find $HOME -type d -name .nix-gc-roots -execdir direnv exec . true \; + ''; + + after = [ "nixos-upgrade.service" ]; + wantedBy = [ "nixos-upgrade.service" ]; + }; +in { # List services that you want to enable: # Enable the OpenSSH daemon. # services.openssh.enable = true; - services = { - fcron = { - enable = true; - allow = [ "root" "qaristote" ]; - systab = '' - # Update the system. - # @daily root ${pkgs.nix}/bin/nix-channel --update; ${pkgs.nixos-rebuild}/bin/nixos-rebuild switch - # Update virtual environments - @daily qaristote find /home/qaristote -type d -name .nix-gc-roots -execdir ${pkgs.direnv}/bin/direnv exec . true \; - ''; - }; - }; + systemd.services.direnv-reload = lib.mkIf config.system.autoUpgrade.enable + (direnv-reload-service "qaristote"); + systemd.services.nix-gc.after = [ "direnv-reload.service" ]; # virtualisation.docker.enable = true; } |
