{ config, lib, pkgs, ... }: with pkgs; let emacs-vterm = ((emacsPackagesFor emacsPgtkGcc).emacsWithPackages (epkgs: [ epkgs.vterm ])); isync-oauth2 = isync.overrideAttrs (div: rec { buildInputs = [ openssl patched-cyrus-sasl-oauth2 zlib ]; }); in { # Upgrade Doom Emacs daily systemd.user.services.doom-upgrade = { description = "Upgrade Doom Emacs"; path = [ bash emacs-vterm git coreutils ]; script = '' ${pkgs.bash}/bin/bash -c "/home/coolneng/.emacs.d/bin/doom -y upgrade" ''; serviceConfig.Type = "oneshot"; startAt = "22:00:00"; }; # Clean up Doom Emacs monthly systemd.user.services.doom-purge = { description = "Purge Doom Emacs"; path = [ bash emacs-vterm git coreutils ]; script = '' ${pkgs.bash}/bin/bash -c "/home/coolneng/.emacs.d/bin/doom -y purge" ''; serviceConfig.Type = "oneshot"; startAt = "*-*-13 20:00:00"; }; # Upgrade Neovim plugins weekly systemd.user.services.vim-plug-upgrade = { description = "Upgrade Vim-Plug"; path = [ git neovim ]; script = "${pkgs.neovim}/bin/nvim +PlugUpgrade +PlugUpdate +qa"; serviceConfig.Type = "oneshot"; startAt = "Wed 18:00:00"; }; # Push password-store changes to git daily systemd.user.services.password-store-push = { description = "Push password-store changes to git"; path = [ pass-wayland git gitAndTools.pass-git-helper ]; script = "${pkgs.pass-wayland}/bin/pass git push"; serviceConfig.Type = "oneshot"; startAt = "18:00:00"; }; # Sync mail using IDLE systemd.user.services.goimapnotify-ugent = { description = "Sync UGent mail using IMAP IDLE"; wantedBy = [ "default.target" ]; path = [ goimapnotify pass-wayland isync-oauth2 notmuch python39 gnupg ]; script = '' ${pkgs.goimapnotify}/bin/goimapnotify -conf /home/coolneng/.config/goimapnotify/ugent.conf ''; serviceConfig = { Type = "simple"; Restart = "always"; RestartSec = 20; }; after = [ "network.target" ]; }; systemd.user.services.goimapnotify-gmail = { description = "Sync gmail mail using IMAP IDLE"; wantedBy = [ "default.target" ]; path = [ goimapnotify pass-wayland isync-oauth2 notmuch ]; script = '' ${pkgs.goimapnotify}/bin/goimapnotify -conf /home/coolneng/.config/goimapnotify/gmail.conf ''; serviceConfig = { Type = "simple"; Restart = "always"; RestartSec = 20; }; after = [ "network.target" ]; }; # Garbage collect git repositories on a monthly basis systemd.user.services.git-gc = { description = "Garbage collect git repositories"; path = [ git fd ]; script = '' ${pkgs.fd}/bin/fd -g -H --type directory '.git' /home/coolneng/Documents --exec git -C '{}' gc ${pkgs.fd}/bin/fd -g -H --type directory '.git' /home/coolneng/Projects --exec git -C '{}' gc ${pkgs.fd}/bin/fd -g -H --type directory '.git' /home/coolneng/Repos --exec git -C '{}' gc ''; serviceConfig.Type = "oneshot"; startAt = "*-*-13 17:00:00"; }; }