From 142e09b930ff4ce2f3afeaa1cbb70674f27b0111 Mon Sep 17 00:00:00 2001 From: Quentin Aristote Date: Wed, 31 Aug 2022 14:32:14 +0200 Subject: nixos: services: add service to reload direnvs after auto nixos upgrades --- nixos/services.nix | 43 +++++++++++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 14 deletions(-) (limited to 'nixos/services.nix') 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; } -- cgit v1.2.3