diff --git a/flake.nix b/flake.nix index 8814f03..762686e 100644 --- a/flake.nix +++ b/flake.nix @@ -145,6 +145,7 @@ shellAliases = ./home/modules/shellAliases.nix; colors = ./home/modules/colors.nix; gpg = ./home/modules/programs/gpg; + neovim-auto-clean-swapfiles = ./home/modules/programs/neovim/auto-clean-swapfiles.nix; }; homeConfigurations = { diff --git a/home/home.nix b/home/home.nix index 64cd26e..53e6938 100644 --- a/home/home.nix +++ b/home/home.nix @@ -50,6 +50,7 @@ in { ./modules/shellAliases.nix ./modules/uidGid.nix ./modules/programs/gpg + ./modules/programs/neovim/auto-clean-swapfiles.nix ] ++ (optionals graphics [ ./config/gtk.nix diff --git a/home/programs/neovim/auto-clean-swapfiles.nix b/home/modules/programs/neovim/auto-clean-swapfiles.nix similarity index 63% rename from home/programs/neovim/auto-clean-swapfiles.nix rename to home/modules/programs/neovim/auto-clean-swapfiles.nix index f279636..da7c155 100644 --- a/home/programs/neovim/auto-clean-swapfiles.nix +++ b/home/modules/programs/neovim/auto-clean-swapfiles.nix @@ -1,9 +1,29 @@ { config, pkgs, lib, ... }: let daysBeforeDeletion = 2; + cfg = config.programs.neovim.auto-clean-swapfiles; in { - config = { + options.programs.neovim.auto-clean-swapfiles = { + enable = lib.mkEnableOption "automatic cleanup of neovim swapfiles"; + + daysBeforeDeletion = lib.mkOption { + type = lib.types.ints.positive; + default = 2; + example = 7; + description = "How long many days old the swapfile should be before it gets cleaned up"; + }; + + onCalendar = lib.mkOption { + type = lib.types.str; + default = "daily"; + example = "weekly"; + # TODO: link to systemd manpage for format. + description = "How often to run the cleanup."; + }; + }; + + config = lib.mkIf cfg.enable { systemd.user.services.clean-neovim-swap-files = { Unit = { Description = "Clean old swap files for neovim"; @@ -19,7 +39,7 @@ in text = '' echo "Cleaning old swap files for neovim" - OLD_SWAPFILES=$(find "${config.xdg.stateHome}/nvim/swap" -type f -name '*.swp' -mtime +${toString daysBeforeDeletion}) + OLD_SWAPFILES=$(find "${config.xdg.stateHome}/nvim/swap" -type f -name '*.swp' -mtime +${toString cfg.daysBeforeDeletion}) if [ -z "$OLD_SWAPFILES" ]; then echo "No old swap files found" @@ -44,7 +64,7 @@ in Timer = { Unit = "clean-neovim-swap-files.service"; - OnCalendar = "daily"; + OnCalendar = cfg.onCalendar; Persistent = true; }; diff --git a/home/programs/neovim/default.nix b/home/programs/neovim/default.nix index 2e3c56e..9cfa9c9 100644 --- a/home/programs/neovim/default.nix +++ b/home/programs/neovim/default.nix @@ -1,12 +1,10 @@ { pkgs, lib, machineVars, ... }: { - imports = [ - ./auto-clean-swapfiles.nix - ]; - programs.neovim = { enable = true; + auto-clean-swapfiles.enable = true; + viAlias = true; vimAlias = true; vimdiffAlias = true;