{ config, pkgs, lib, ... }: let daysBeforeDeletion = 2; in { config = { systemd.user.services.clean-neovim-swap-files = { Unit = { Description = "Clean old swap files for neovim"; }; Service = { Type = "oneshot"; CPUSchedulingPolicy = "idle"; IOSchedulingClass = "idle"; ExecStart = lib.getExe (pkgs.writeShellApplication { name = "clean-neovim-swap-files"; runtimeInputs = with pkgs; [ findutils ]; text = '' echo "Cleaning old swap files for neovim" OLD_SWAPFILES=$(find "${config.xdg.stateHome}/nvim/swap" -type f -name '*.swp' -mtime +${toString daysBeforeDeletion}) if [ -z "$OLD_SWAPFILES" ]; then echo "No old swap files found" exit 0 fi for swapfile in $OLD_SWAPFILES; do echo "Removing $swapfile" rm -- "$swapfile" || echo "Could not remove $swapfile, is it still in use?" done echo "Done" ''; }); }; }; systemd.user.timers.clean-neovim-swap-files = { Unit = { Description = "Clean old swap files for neovim"; }; Timer = { Unit = "clean-neovim-swap-files.service"; OnCalendar = "daily"; Persistent = true; }; Install = { WantedBy = [ "timers.target" ]; }; }; }; }