{ config, lib, pkgs, ... }: with pkgs; let emacs-vterm = ((emacsPackagesNgGen emacsPgtkGcc).emacsWithPackages (epkgs: [ epkgs.vterm ])); 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" emacsclient --eval "(pdf-tools-install)" ''; 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 notmuch ]; 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 notmuch ]; script = '' ${pkgs.goimapnotify}/bin/goimapnotify -conf /home/coolneng/.config/goimapnotify/gmail.conf ''; serviceConfig = { Type = "simple"; Restart = "always"; RestartSec = 20; }; after = [ "network.target" ]; }; }