Compare commits

...

2 commits

Author SHA1 Message Date
3cc556fd33
services: Remove left-over systemd services 2025-09-16 21:37:04 +02:00
93394129c0
neomutt: Rename neomutt-adjacent scripts
Renamed `mutt2task` to `neomutt-2task`, and renamed `sync-mail` to
`neomutt-syncmail`.

Changed key maps accordingly. Also systemd service even though I don't
think I'll use it again.
2025-09-16 21:37:04 +02:00
21 changed files with 4 additions and 238 deletions

View file

@ -86,8 +86,8 @@ bind index,pager ro reply
macro index,pager \CU "<enter-command> unset pipe_decode<enter><pipe-message>extract_url | fzf | clip<enter>" "get URLs"
# Refresh far imap email
macro index O "<sync-mailbox><shell-escape>export MBSYNC_PRE=true; sync-mail<enter>" "refresh all e-mail"
macro index O "<sync-mailbox><shell-escape>export MBSYNC_PRE=true; neomutt-syncmail<enter>" "refresh all e-mail"
# Send mail to taskwarrior
macro index,pager ,T "<pipe-message>mutt2task -c -d -t<enter>" "add mail as task to taskwarrior with custom description and tags"
macro index,pager ,t "<pipe-message>mutt2task -c<enter>" "add mail as task to taskwarrior"
macro index,pager ,T "<pipe-message>neomutt-2task -c -d -t<enter>" "add mail as task to taskwarrior with custom description and tags"
macro index,pager ,t "<pipe-message>neomutt-2task -c<enter>" "add mail as task to taskwarrior"

View file

@ -16,7 +16,7 @@ Take care that most of the credential/account setup of course is highly specific
## mail
The current mail setup uses `mbsync` (from the isync project) to locally mirror the GMail imap folder.
It is run through a `sync-mail` script which can invoke pre- and post-sync hooks
It is run through a `neomutt-syncmail` script which can invoke pre- and post-sync hooks
(e.g. run your incoming mail through filters as soon as they arrive or ingest them into full-text search engines).[^1]
The sync script also automatically unlocks any pass directory so that credentials can be put into their respective applications and the directory closes again after use.
`msmtp` is used for mail sending by neomutt (and git if using git send-email).

View file

@ -1,8 +0,0 @@
[Unit]
Description=GnuPG network certificate management daemon
Documentation=man:dirmngr(8)
Requires=dirmngr.socket
[Service]
ExecStart=/usr/bin/dirmngr --supervised
ExecReload=/usr/bin/gpgconf --reload dirmngr

View file

@ -1,11 +0,0 @@
[Unit]
Description=GnuPG network certificate management daemon
Documentation=man:dirmngr(8)
[Socket]
ListenStream=%t/gnupg/S.dirmngr
SocketMode=0600
DirectoryMode=0700
[Install]
WantedBy=sockets.target

View file

@ -1,13 +0,0 @@
[Unit]
Description=GnuPG cryptographic agent and passphrase cache (access for web browsers)
Documentation=man:gpg-agent(1)
[Socket]
ListenStream=%t/gnupg/S.gpg-agent.browser
FileDescriptorName=browser
Service=gpg-agent.service
SocketMode=0600
DirectoryMode=0700
[Install]
WantedBy=sockets.target

View file

@ -1,13 +0,0 @@
[Unit]
Description=GnuPG cryptographic agent and passphrase cache (restricted)
Documentation=man:gpg-agent(1)
[Socket]
ListenStream=%t/gnupg/S.gpg-agent.extra
FileDescriptorName=extra
Service=gpg-agent.service
SocketMode=0600
DirectoryMode=0700
[Install]
WantedBy=sockets.target

View file

@ -1,13 +0,0 @@
[Unit]
Description=GnuPG cryptographic agent (ssh-agent emulation)
Documentation=man:gpg-agent(1) man:ssh-add(1) man:ssh-agent(1) man:ssh(1)
[Socket]
ListenStream=%t/gnupg/S.gpg-agent.ssh
FileDescriptorName=ssh
Service=gpg-agent.service
SocketMode=0600
DirectoryMode=0700
[Install]
WantedBy=sockets.target

View file

@ -1,8 +0,0 @@
[Unit]
Description=GnuPG cryptographic agent and passphrase cache
Documentation=man:gpg-agent(1)
Requires=gpg-agent.socket
[Service]
ExecStart=/usr/bin/gpg-agent --supervised
ExecReload=/usr/bin/gpgconf --reload gpg-agent

View file

@ -1,12 +0,0 @@
[Unit]
Description=GnuPG cryptographic agent and passphrase cache
Documentation=man:gpg-agent(1)
[Socket]
ListenStream=%t/gnupg/S.gpg-agent
FileDescriptorName=std
SocketMode=0600
DirectoryMode=0700
[Install]
WantedBy=sockets.target

View file

@ -1,9 +0,0 @@
[Unit]
Description=Mailbox synchronization service
Wants=network-online.target gpg-agent.socket
After=network.target network-online.target dbus.socket gpg-agent.socket
[Service]
Type=oneshot
# workaround to allow relative executable invocation (i.e. current users' home dir)
ExecStart=/bin/bash -c '%h/.local/bin/sync-mail'

View file

@ -1,10 +0,0 @@
[Unit]
Description=Mailbox synchronization timer
[Timer]
OnBootSec=1m
OnUnitActiveSec=1h
Unit=mbsync.service
[Install]
WantedBy=timers.target

View file

@ -1 +0,0 @@
../gpg-agent-browser.socket

View file

@ -1 +0,0 @@
../gpg-agent-extra.socket

View file

@ -1,111 +0,0 @@
#!/usr/bin/env sh
#
# Keeps a git directory synced by automatically committing every x seconds.
# After y number of runs without changes automatically pushes the directory to a remote.
# time in seconds to check for changes to commit
TIME_TO_COMMIT=${GS_TIME_TO_COMMIT:-120}
# amount of times to check for changes *without changes occurring* to push to origin
UNCHANGED_RUNS_TO_PUSH=${GS_UNCHANGED_RUNS_TO_PUSH:-30}
# logging verbosity level -- 0=error, 1=info, 2=debug
VERBOSITY=${GS_LOG_VERBOSITY:-1}
set_target() {
[ -z "$GS_TARGETDIR" ] && [ -z "$1" ] && {
msg "ERROR: git-sync requires a target directory to keep in sync to be passed in." 0
exit 1
}
DIR="${GS_TARGETDIR:-$1}"
}
pull() {
msg "Pulling upstream changes into $DIR"
run_git pull --ff-only --ff
}
commit() {
msg "Committing changes to $DIR"
run_git add .
# shellcheck disable=2039
run_git commit --no-gpg-sign -m "Git sync: $(date +%F_%R) from ${HOSTNAME:-"${HOST:-undefined}"}"
}
push() {
msg "No changes for $((UNCHANGED_RUNS_TO_PUSH * TIME_TO_COMMIT)) seconds, pushing to origin"
run_git push
}
should_commit() {
if [ "$(run_git diff-files --name-only | wc -l)" -eq 0 ]; then
msg "No changes to commit in $DIR" 2
false
else
msg "Found changes to commit in $DIR" 2
true
fi
}
should_push() {
if [ "$no_change_cycle" -ge "$UNCHANGED_RUNS_TO_PUSH" ]; then
true
else
false
fi
}
should_pull() {
run_git fetch
# shellcheck disable=1083
if [ "$(run_git rev-parse HEAD)" = "$(run_git rev-parse @{u})" ]; then
false
else
true
fi
}
run_git() {
git -C "$DIR" "$@"
}
# echos its first argument
# verbosity level optionally set through second argument
# default verbosity 1 (info), can be set to 2 (debug), or 0 (error)
msg() {
lvl=${2:-1}
[ "$lvl" -gt "$VERBOSITY" ] && return 0
echo "$1"
}
watch_changes() {
no_change_cycle=0
while true; do
if should_pull; then
pull
fi
if should_commit; then
commit
no_change_cycle=0
fi
if should_push; then
push
no_change_cycle=-9999
fi
msg "No changes for $((no_change_cycle * TIME_TO_COMMIT)) of $((UNCHANGED_RUNS_TO_PUSH * TIME_TO_COMMIT)) seconds, going back to sleep for $((TIME_TO_COMMIT)) seconds." 2
no_change_cycle=$((no_change_cycle + 1))
sleep "$TIME_TO_COMMIT"
done
}
main() {
set_target "$1"
watch_changes
}
main "$1"

View file

@ -1,20 +0,0 @@
#!/usr/bin/env bash
# from: https://superuser.com/questions/759759/writing-a-service-that-depends-on-xorg/1351489#1351489
COUNTER=0
while true; do
# Check whether or not socket exists
if [ -S /tmp/.X11-unix/X0 ]; then
exit 0
fi
((++COUNTER))
if [ "$COUNTER" -gt 20 ]; then
printf "X did not start in time\n"
exit 1
fi
printf "X not yet started, counter at %s\n" "$COUNTER"
sleep 1
done