{ config, lib, pkgs, ... }: with pkgs; let emacs-vterm = ((emacsPackagesFor emacs28NativeComp).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 = { ExecStartPre = "/home/coolneng/.local/share/scripts/mail-sync ugent"; 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 = { ExecStartPre = "/home/coolneng/.local/share/scripts/mail-sync gmail"; Type = "simple"; Restart = "always"; RestartSec = 20; }; after = [ "network.target" ]; }; systemd.user.services.goimapnotify-disroot = { description = "Sync disroot mail using IMAP IDLE"; wantedBy = [ "default.target" ]; path = [ goimapnotify pass-wayland isync-oauth2 notmuch ]; script = '' ${pkgs.goimapnotify}/bin/goimapnotify -conf /home/coolneng/.config/goimapnotify/disroot.conf ''; serviceConfig = { ExecStartPre = "/home/coolneng/.local/share/scripts/mail-sync disroot"; 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"; }; # HACK Change home partition permissions for mopidy systemd.services.chmod-home = { description = "Change home partition permissions for Mopidy"; wantedBy = [ "default.target" ]; script = "chmod 751 /home/coolneng"; serviceConfig.Type = "oneshot"; after = [ "home-coolneng.mount" ]; before = [ "mopidy.service" "mopidy-scan.service" ]; }; }