{pkgs, ...}: { # Add a udev rule that launches a backup using restic when a specific USB device (the backup drive) is plugged in environment.systemPackages = with pkgs; [ restic ]; # the udev rule: services.udev.extraRules = '' ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="backup-restic", TAG+="systemd", ENV{SYSTEMD_WANTS}="backup-restic.service" ''; # the systemd service: systemd.services.backup-restic = { description = "Backup using restic (triggered when USB drive is plugged in)"; after = [ "local-fs.target" ]; wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "oneshot"; # TODO: adapt command ExecStart = "${pkgs.restic}/bin/restic backup /home/username"; }; }; }