diff --git a/.config/emacs/init.el b/.config/emacs/init.el index de9791c..94dbd23 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -8,11 +8,6 @@ (zerop (call-process "git" nil nil nil "-C" dirname "ls-files" "--error-unmatch" filename)))) -(defun should-auto-save-current-buffer-p () - "Check whether the current buffer should be autosaved." - (when buffer-file-name - (git-tracked-file-p buffer-file-name))) - (defun find-init-file () "Find the user's init file" (interactive) @@ -47,7 +42,7 @@ ; keep-sorted start (auto-save-interval 20) (auto-save-visited-mode t) - (auto-save-visited-predicate #'should-auto-save-current-buffer) + (auto-save-visited-predicate (lambda () (git-tracked-file-p buffer-file-name))) (column-number-mode t) (dired-dwim-target 'dired-dwim-target-next) (display-time-24hr-format t) diff --git a/.config/setup/04-install-deb-packages.sh b/.config/setup/01-install-packages.sh similarity index 77% rename from .config/setup/04-install-deb-packages.sh rename to .config/setup/01-install-packages.sh index d1e8af7..0b56d5b 100755 --- a/.config/setup/04-install-deb-packages.sh +++ b/.config/setup/01-install-packages.sh @@ -10,7 +10,6 @@ DEB_PKGS=( audacity avahi-daemon awscli - blueman bluez borgbackup build-essential @@ -54,7 +53,6 @@ DEB_PKGS=( mesa-utils minicom mpv - network-manager-applet network-manager-openvpn nmap ntfs-3g @@ -106,5 +104,33 @@ META_PKGS=( # keep-sorted end ) +PIPX_PKGS=( + # keep-sorted start + python-lsp-server + rshell + ruff + # keep-sorted end +) + sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --yes "${DEB_PKGS[@]}" sudo DEBIAN_FRONTEND=noninteractive apt-get install --install-recommends --yes "${META_PKGS[@]}" + +echo 'kernel.perf_event_paranoid=1' | sudo tee '/etc/sysctl.d/51-enable-perf-events.conf' + +if (( "${#PIPX_PKGS[@]}" != 0 )); then + pipx install "${PIPX_PKGS[@]}" +fi + +PYLSP_PLUGINS=( + # keep-sorted start + fs + podman + pydantic + pylsp-mypy + pylsp-rope + pytest + types-pyxdg + # keep-sorted end +) + +pipx inject python-lsp-server "${PYLSP_PLUGINS[@]}" diff --git a/.config/setup/02-install-debian-testing.sh b/.config/setup/02-install-debian-testing.sh deleted file mode 100755 index 7cf2c21..0000000 --- a/.config/setup/02-install-debian-testing.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' - -sudo cp "$(systemd-path user-configuration)"/setup/sources.list.d/debian.sources /etc/apt/sources.list.d/ -sudo rm /etc/apt/sources.list - -sudo apt update -sudo apt --yes full-upgrade diff --git a/.config/setup/12-setup-packages.sh b/.config/setup/02-setup-packages.sh similarity index 53% rename from .config/setup/12-setup-packages.sh rename to .config/setup/02-setup-packages.sh index 48c0136..859047f 100755 --- a/.config/setup/12-setup-packages.sh +++ b/.config/setup/02-setup-packages.sh @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh systemctl --user enable --now syncthing.service @@ -10,5 +7,3 @@ mkdir --parents ~/Pictures/screenshots pre-commit install sudo usermod --append --groups dialout "${USER}" - -echo 'kernel.perf_event_paranoid=1' | sudo tee '/etc/sysctl.d/51-enable-perf-events.conf' diff --git a/.config/setup/14-install-cron-jobs.sh b/.config/setup/03-install-cron-jobs.sh similarity index 79% rename from .config/setup/14-install-cron-jobs.sh rename to .config/setup/03-install-cron-jobs.sh index 22851b8..829ad9b 100755 --- a/.config/setup/14-install-cron-jobs.sh +++ b/.config/setup/03-install-cron-jobs.sh @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh # keep-sorted start systemctl --user enable --now backup.timer diff --git a/.config/setup/16-install-tor.sh b/.config/setup/05-install-tor.sh similarity index 90% rename from .config/setup/16-install-tor.sh rename to .config/setup/05-install-tor.sh index 5688ea2..4c1e33b 100755 --- a/.config/setup/16-install-tor.sh +++ b/.config/setup/05-install-tor.sh @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh sudo cp "$(systemd-path user-configuration)"/setup/sources.list.d/tor.sources /etc/apt/sources.list.d/ sudo chmod 644 /etc/apt/sources.list.d/tor.sources diff --git a/.config/setup/06-install-git-sync.sh b/.config/setup/06-install-git-sync.sh new file mode 100755 index 0000000..ac57a8f --- /dev/null +++ b/.config/setup/06-install-git-sync.sh @@ -0,0 +1,3 @@ +#! /usr/bin/sh + +resync-git-sync diff --git a/.config/setup/06-install-pipx-packages.sh b/.config/setup/06-install-pipx-packages.sh deleted file mode 100755 index 91d04f3..0000000 --- a/.config/setup/06-install-pipx-packages.sh +++ /dev/null @@ -1,30 +0,0 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' - -PIPX_PKGS=( - # keep-sorted start - python-lsp-server - rshell - ruff - # keep-sorted end -) - -if (( "${#PIPX_PKGS[@]}" != 0 )); then - pipx install "${PIPX_PKGS[@]}" -fi - -PYLSP_PLUGINS=( - # keep-sorted start - fs - podman - pydantic - pylsp-mypy - pylsp-rope - pytest - types-pyxdg - # keep-sorted end -) - -pipx inject python-lsp-server "${PYLSP_PLUGINS[@]}" diff --git a/.config/setup/20-install-zoom.sh b/.config/setup/10-install-zoom.sh similarity index 77% rename from .config/setup/20-install-zoom.sh rename to .config/setup/10-install-zoom.sh index d1260cc..72dd1f9 100755 --- a/.config/setup/20-install-zoom.sh +++ b/.config/setup/10-install-zoom.sh @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh curl --location --output-dir /tmp --remote-name https://zoom.us/client/latest/zoom_amd64.deb sudo apt-get install --no-install-recommends --yes /tmp/zoom_amd64.deb diff --git a/.config/setup/31-initialize-backup-repository.sh b/.config/setup/11-initialize-backup-repository.sh similarity index 56% rename from .config/setup/31-initialize-backup-repository.sh rename to .config/setup/11-initialize-backup-repository.sh index fe2c0cf..26c475e 100755 --- a/.config/setup/31-initialize-backup-repository.sh +++ b/.config/setup/11-initialize-backup-repository.sh @@ -1,9 +1,6 @@ -#! /usr/bin/bash +#! /usr/bin/sh -set -euo pipefail -IFS=$'\n\t' - -sudo mkdir --parents "${BORG_REPO}" +sudo mkdir -p "${BORG_REPO}" sudo chown "${USER}":"${USER}" "${BORG_REPO}" sudo chmod 700 "${BORG_REPO}" diff --git a/.config/setup/18-install-git-sync.sh b/.config/setup/18-install-git-sync.sh deleted file mode 100755 index c5824c1..0000000 --- a/.config/setup/18-install-git-sync.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' - -resync-git-sync diff --git a/.config/setup/22-install-github-packages.sh b/.config/setup/22-install-github-packages.sh new file mode 100755 index 0000000..13d5478 --- /dev/null +++ b/.config/setup/22-install-github-packages.sh @@ -0,0 +1,3 @@ +#! /usr/bin/sh + +ghup diff --git a/.config/setup/43-install-emacs-lilypond-mode.sh b/.config/setup/23-install-emacs-lilypond-mode.sh similarity index 62% rename from .config/setup/43-install-emacs-lilypond-mode.sh rename to .config/setup/23-install-emacs-lilypond-mode.sh index cf53bf2..97855fd 100755 --- a/.config/setup/43-install-emacs-lilypond-mode.sh +++ b/.config/setup/23-install-emacs-lilypond-mode.sh @@ -1,11 +1,8 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh projdir="$(systemd-path user)"/Projects -mkdir --parents "${projdir}" -rm --force --recursive "${projdir}/lilypond" +mkdir -p "${projdir}" +rm -rf "${projdir}/lilypond" cd "${projdir}" || exit git clone --depth=1 https://github.com/lilypond/lilypond cd lilypond || exit diff --git a/.config/setup/30-install-cargo-packages.sh b/.config/setup/30-install-cargo-packages.sh new file mode 100755 index 0000000..e46a08d --- /dev/null +++ b/.config/setup/30-install-cargo-packages.sh @@ -0,0 +1,3 @@ +#! /usr/bin/sh + +cargo install zellij diff --git a/.config/setup/42-install-github-packages.sh b/.config/setup/42-install-github-packages.sh deleted file mode 100755 index 1ebd793..0000000 --- a/.config/setup/42-install-github-packages.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' - -ghup diff --git a/.config/setup/50-install-cargo-packages.sh b/.config/setup/50-install-cargo-packages.sh deleted file mode 100755 index b8856e7..0000000 --- a/.config/setup/50-install-cargo-packages.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' - -cargo install zellij diff --git a/.config/sway/config b/.config/sway/config index 43bcd99..b76ca8f 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -294,9 +294,6 @@ bar { } } -exec blueman-applet -exec nm-applet - workspace_layout tabbed for_window [class="."] inhibit_idle fullscreen for_window [app_id="."] inhibit_idle fullscreen diff --git a/.local/bin/ghup b/.local/bin/ghup index d198be9..74de4a3 100755 --- a/.local/bin/ghup +++ b/.local/bin/ghup @@ -1,10 +1,7 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh STATE_DIR="$(systemd-path user-state-private)"/github-versions -mkdir --parents "${STATE_DIR}" +mkdir -p "${STATE_DIR}" github_update() { package="$1" diff --git a/.local/bin/git-resign b/.local/bin/git-resign index 6d45d8e..90a7a05 100755 --- a/.local/bin/git-resign +++ b/.local/bin/git-resign @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh rebase_marker="$(git rev-parse --show-toplevel)/.git/rebase-merge/done" while [ -f "${rebase_marker}" ] diff --git a/.local/bin/kill-current-zellij-session b/.local/bin/kill-current-zellij-session index 378e1bf..ac22ec5 100755 --- a/.local/bin/kill-current-zellij-session +++ b/.local/bin/kill-current-zellij-session @@ -1,6 +1,3 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh zellij delete-session --force "${ZELLIJ_SESSION_NAME}" diff --git a/.local/bin/leave b/.local/bin/leave index 438c45e..7d51b3f 100755 --- a/.local/bin/leave +++ b/.local/bin/leave @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh listopts() { echo "⏼ Shut down" diff --git a/.local/bin/make-backup b/.local/bin/make-backup index 251a77c..7d05e48 100755 --- a/.local/bin/make-backup +++ b/.local/bin/make-backup @@ -1,11 +1,8 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh TS_DIR="$(systemd-path user-state-private)"/backup -mkdir --parents "${TS_DIR}" +mkdir -p "${TS_DIR}" backup () { target=$1 diff --git a/.local/bin/no-ipv6 b/.local/bin/no-ipv6 index 3ad8edb..e1192d5 100755 --- a/.local/bin/no-ipv6 +++ b/.local/bin/no-ipv6 @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh sudo sysctl net.ipv6.conf.all.disable_ipv6=1 "$@" diff --git a/.local/bin/package-alert b/.local/bin/package-alert index 2d11eb9..1bce7c2 100755 --- a/.local/bin/package-alert +++ b/.local/bin/package-alert @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh WATCHLIST="$(systemd-path user-shared)"/package-alert/watchlist diff --git a/.local/bin/pull-emacs-tide b/.local/bin/pull-emacs-tide index f41212c..2ceaac9 100755 --- a/.local/bin/pull-emacs-tide +++ b/.local/bin/pull-emacs-tide @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh podman run \ --rm \ diff --git a/.local/bin/resync-git-sync b/.local/bin/resync-git-sync index f167ca8..5486d52 100755 --- a/.local/bin/resync-git-sync +++ b/.local/bin/resync-git-sync @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh REPO_DIR="$(systemd-path user-state-private)"/git-sync if [ -d "${REPO_DIR}" ] diff --git a/.local/bin/sync-backup b/.local/bin/sync-backup index 97edd7a..8e6574a 100755 --- a/.local/bin/sync-backup +++ b/.local/bin/sync-backup @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh export BORG_REPO="/media/backup/" diff --git a/.local/bin/sync-git-repos b/.local/bin/sync-git-repos index f8ba4c4..d1fce9e 100755 --- a/.local/bin/sync-git-repos +++ b/.local/bin/sync-git-repos @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh REPO_ROOT_FILE="$(systemd-path user-state-private)"/repo-roots/repo-roots @@ -19,21 +16,14 @@ sync_repo () { echo } -case "${1:-sync}" in - "list") - while read -r repo_root; do - list_repos "${repo_root}" - done < "${REPO_ROOT_FILE}" - ;; - "sync") - while read -r repo_root; do - for repo in $(list_repos "${repo_root}"); do - sync_repo "${repo}" - done - done < "${REPO_ROOT_FILE}" - ;; - *) - echo Unknown option \""$1"\" - exit 1 - ;; -esac +if [ "list" = "$1" ]; then + while read -r repo_root; do + list_repos "${repo_root}" + done < "${REPO_ROOT_FILE}" +else + while read -r repo_root; do + for repo in $(list_repos "${repo_root}"); do + sync_repo "${repo}" + done + done < "${REPO_ROOT_FILE}" +fi diff --git a/.local/bin/take-screenshot b/.local/bin/take-screenshot index f2cf7c2..a586a10 100755 --- a/.local/bin/take-screenshot +++ b/.local/bin/take-screenshot @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh listopts() { echo "📷 Focused monitor" diff --git a/.local/bin/update-weather b/.local/bin/update-weather index 25d37c3..6acdf66 100755 --- a/.local/bin/update-weather +++ b/.local/bin/update-weather @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh # Documentation available in https://github.com/chubin/wttr.in curl --http1.1 --show-error --silent 'https://wttr.in/?0&m&q&T&format=3' > /tmp/weather-report.txt diff --git a/.local/bin/upgrade b/.local/bin/upgrade index 95784aa..6acd66c 100755 --- a/.local/bin/upgrade +++ b/.local/bin/upgrade @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh apt_update() { sudo --reset-timestamp diff --git a/.local/bin/vaulter b/.local/bin/vaulter index f12dd73..f3f17b9 100755 --- a/.local/bin/vaulter +++ b/.local/bin/vaulter @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh podman --transient-store run --rm -ti \ --env WAYLAND_DISPLAY \ diff --git a/.local/share/github-versions/dolt b/.local/share/github-versions/dolt index 21ac93a..72b1559 100755 --- a/.local/share/github-versions/dolt +++ b/.local/share/github-versions/dolt @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh package=dolt repo=dolthub/dolt diff --git a/.local/share/github-versions/kingfisher b/.local/share/github-versions/kingfisher index 92eb753..116183e 100755 --- a/.local/share/github-versions/kingfisher +++ b/.local/share/github-versions/kingfisher @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh package=kingfisher repo=mongodb/kingfisher diff --git a/.local/share/github-versions/minikube b/.local/share/github-versions/minikube index 733d6f3..8bbc23c 100755 --- a/.local/share/github-versions/minikube +++ b/.local/share/github-versions/minikube @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh package=minikube repo=kubernetes/minikube diff --git a/.local/share/github-versions/rust-analyzer b/.local/share/github-versions/rust-analyzer index 69196c7..9452be9 100755 --- a/.local/share/github-versions/rust-analyzer +++ b/.local/share/github-versions/rust-analyzer @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh package=rust-analyzer repo=rust-lang/rust-analyzer diff --git a/.local/share/github-versions/uv b/.local/share/github-versions/uv index 3a03d30..856c4c7 100755 --- a/.local/share/github-versions/uv +++ b/.local/share/github-versions/uv @@ -1,7 +1,4 @@ -#! /usr/bin/bash - -set -euo pipefail -IFS=$'\n\t' +#! /usr/bin/sh package=uv repo=astral-sh/uv