From 8b0ac143055f3ccf1cbb73afa463ffdba9714e18 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Fri, 11 Jul 2025 17:11:49 +0300 Subject: [PATCH 01/10] Create a named function for the autosave predicate --- .config/emacs/init.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 94dbd23..591c9dd 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -8,6 +8,10 @@ (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." + (git-tracked-file-p buffer-file-name)) + (defun find-init-file () "Find the user's init file" (interactive) @@ -42,7 +46,7 @@ ; keep-sorted start (auto-save-interval 20) (auto-save-visited-mode t) - (auto-save-visited-predicate (lambda () (git-tracked-file-p buffer-file-name))) + (auto-save-visited-predicate #'should-auto-save-current-buffer) (column-number-mode t) (dired-dwim-target 'dired-dwim-target-next) (display-time-24hr-format t) From 23f1ca1adab22b3baffa9df9ed56365059689629 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Fri, 11 Jul 2025 17:12:53 +0300 Subject: [PATCH 02/10] Handle non-file-visiting buffers gracefully --- .config/emacs/init.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/emacs/init.el b/.config/emacs/init.el index 591c9dd..de9791c 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -10,7 +10,8 @@ (defun should-auto-save-current-buffer-p () "Check whether the current buffer should be autosaved." - (git-tracked-file-p buffer-file-name)) + (when buffer-file-name + (git-tracked-file-p buffer-file-name))) (defun find-init-file () "Find the user's init file" From 7099263341d4eaec5157ebf44874ca016baf2840 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Fri, 11 Jul 2025 18:17:04 +0300 Subject: [PATCH 03/10] Display tray icons for wireless connectivity --- .config/setup/01-install-packages.sh | 2 ++ .config/sway/config | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.config/setup/01-install-packages.sh b/.config/setup/01-install-packages.sh index 0b56d5b..860bd33 100755 --- a/.config/setup/01-install-packages.sh +++ b/.config/setup/01-install-packages.sh @@ -10,6 +10,7 @@ DEB_PKGS=( audacity avahi-daemon awscli + blueman bluez borgbackup build-essential @@ -53,6 +54,7 @@ DEB_PKGS=( mesa-utils minicom mpv + network-manager-applet network-manager-openvpn nmap ntfs-3g diff --git a/.config/sway/config b/.config/sway/config index b76ca8f..43bcd99 100644 --- a/.config/sway/config +++ b/.config/sway/config @@ -294,6 +294,9 @@ bar { } } +exec blueman-applet +exec nm-applet + workspace_layout tabbed for_window [class="."] inhibit_idle fullscreen for_window [app_id="."] inhibit_idle fullscreen From 137fcd6e77052c8a24968416ad620a59cbdb1335 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 22:20:28 +0300 Subject: [PATCH 04/10] Move setup step to the installation script --- .config/setup/01-install-packages.sh | 2 -- .config/setup/02-setup-packages.sh | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/setup/01-install-packages.sh b/.config/setup/01-install-packages.sh index 860bd33..5653bd4 100755 --- a/.config/setup/01-install-packages.sh +++ b/.config/setup/01-install-packages.sh @@ -117,8 +117,6 @@ PIPX_PKGS=( 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 diff --git a/.config/setup/02-setup-packages.sh b/.config/setup/02-setup-packages.sh index 859047f..267e217 100755 --- a/.config/setup/02-setup-packages.sh +++ b/.config/setup/02-setup-packages.sh @@ -7,3 +7,5 @@ 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' From cf4e828b1b91efe370f0df5f7756086348f123c6 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 22:24:55 +0300 Subject: [PATCH 05/10] Renumber installation scripts --- .config/setup/{02-setup-packages.sh => 12-setup-packages.sh} | 0 .../setup/{03-install-cron-jobs.sh => 14-install-cron-jobs.sh} | 0 .config/setup/{05-install-tor.sh => 16-install-tor.sh} | 0 .config/setup/{06-install-git-sync.sh => 18-install-git-sync.sh} | 0 .config/setup/{10-install-zoom.sh => 20-install-zoom.sh} | 0 ...ze-backup-repository.sh => 31-initialize-backup-repository.sh} | 0 ...2-install-github-packages.sh => 42-install-github-packages.sh} | 0 ...l-emacs-lilypond-mode.sh => 43-install-emacs-lilypond-mode.sh} | 0 ...{30-install-cargo-packages.sh => 50-install-cargo-packages.sh} | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename .config/setup/{02-setup-packages.sh => 12-setup-packages.sh} (100%) rename .config/setup/{03-install-cron-jobs.sh => 14-install-cron-jobs.sh} (100%) rename .config/setup/{05-install-tor.sh => 16-install-tor.sh} (100%) rename .config/setup/{06-install-git-sync.sh => 18-install-git-sync.sh} (100%) rename .config/setup/{10-install-zoom.sh => 20-install-zoom.sh} (100%) rename .config/setup/{11-initialize-backup-repository.sh => 31-initialize-backup-repository.sh} (100%) rename .config/setup/{22-install-github-packages.sh => 42-install-github-packages.sh} (100%) rename .config/setup/{23-install-emacs-lilypond-mode.sh => 43-install-emacs-lilypond-mode.sh} (100%) rename .config/setup/{30-install-cargo-packages.sh => 50-install-cargo-packages.sh} (100%) diff --git a/.config/setup/02-setup-packages.sh b/.config/setup/12-setup-packages.sh similarity index 100% rename from .config/setup/02-setup-packages.sh rename to .config/setup/12-setup-packages.sh diff --git a/.config/setup/03-install-cron-jobs.sh b/.config/setup/14-install-cron-jobs.sh similarity index 100% rename from .config/setup/03-install-cron-jobs.sh rename to .config/setup/14-install-cron-jobs.sh diff --git a/.config/setup/05-install-tor.sh b/.config/setup/16-install-tor.sh similarity index 100% rename from .config/setup/05-install-tor.sh rename to .config/setup/16-install-tor.sh diff --git a/.config/setup/06-install-git-sync.sh b/.config/setup/18-install-git-sync.sh similarity index 100% rename from .config/setup/06-install-git-sync.sh rename to .config/setup/18-install-git-sync.sh diff --git a/.config/setup/10-install-zoom.sh b/.config/setup/20-install-zoom.sh similarity index 100% rename from .config/setup/10-install-zoom.sh rename to .config/setup/20-install-zoom.sh diff --git a/.config/setup/11-initialize-backup-repository.sh b/.config/setup/31-initialize-backup-repository.sh similarity index 100% rename from .config/setup/11-initialize-backup-repository.sh rename to .config/setup/31-initialize-backup-repository.sh diff --git a/.config/setup/22-install-github-packages.sh b/.config/setup/42-install-github-packages.sh similarity index 100% rename from .config/setup/22-install-github-packages.sh rename to .config/setup/42-install-github-packages.sh diff --git a/.config/setup/23-install-emacs-lilypond-mode.sh b/.config/setup/43-install-emacs-lilypond-mode.sh similarity index 100% rename from .config/setup/23-install-emacs-lilypond-mode.sh rename to .config/setup/43-install-emacs-lilypond-mode.sh diff --git a/.config/setup/30-install-cargo-packages.sh b/.config/setup/50-install-cargo-packages.sh similarity index 100% rename from .config/setup/30-install-cargo-packages.sh rename to .config/setup/50-install-cargo-packages.sh From ea09e028d4deb1b4af19e8eaf6199f014a903981 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 22:25:54 +0300 Subject: [PATCH 06/10] Separate installation of deb and pipx packages --- ...packages.sh => 04-install-deb-packages.sh} | 26 ---------------- .config/setup/06-install-pipx-packages.sh | 30 +++++++++++++++++++ 2 files changed, 30 insertions(+), 26 deletions(-) rename .config/setup/{01-install-packages.sh => 04-install-deb-packages.sh} (81%) create mode 100755 .config/setup/06-install-pipx-packages.sh diff --git a/.config/setup/01-install-packages.sh b/.config/setup/04-install-deb-packages.sh similarity index 81% rename from .config/setup/01-install-packages.sh rename to .config/setup/04-install-deb-packages.sh index 5653bd4..d1e8af7 100755 --- a/.config/setup/01-install-packages.sh +++ b/.config/setup/04-install-deb-packages.sh @@ -106,31 +106,5 @@ 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[@]}" - -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/06-install-pipx-packages.sh b/.config/setup/06-install-pipx-packages.sh new file mode 100755 index 0000000..91d04f3 --- /dev/null +++ b/.config/setup/06-install-pipx-packages.sh @@ -0,0 +1,30 @@ +#! /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[@]}" From c349ad77381638967e0d4fc78482bb2886164acf Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 22:30:25 +0300 Subject: [PATCH 07/10] Add an installation script that upgrades to Debian testing --- .config/setup/02-install-debian-testing.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 .config/setup/02-install-debian-testing.sh diff --git a/.config/setup/02-install-debian-testing.sh b/.config/setup/02-install-debian-testing.sh new file mode 100755 index 0000000..7cf2c21 --- /dev/null +++ b/.config/setup/02-install-debian-testing.sh @@ -0,0 +1,10 @@ +#! /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 From 8ca04dec25af42ba87af1d84ba8ee22c00374b0e Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 22:43:18 +0300 Subject: [PATCH 08/10] Use long option names for commands --- .config/setup/31-initialize-backup-repository.sh | 2 +- .config/setup/43-install-emacs-lilypond-mode.sh | 4 ++-- .local/bin/ghup | 2 +- .local/bin/make-backup | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.config/setup/31-initialize-backup-repository.sh b/.config/setup/31-initialize-backup-repository.sh index 26c475e..d384732 100755 --- a/.config/setup/31-initialize-backup-repository.sh +++ b/.config/setup/31-initialize-backup-repository.sh @@ -1,6 +1,6 @@ #! /usr/bin/sh -sudo mkdir -p "${BORG_REPO}" +sudo mkdir --parents "${BORG_REPO}" sudo chown "${USER}":"${USER}" "${BORG_REPO}" sudo chmod 700 "${BORG_REPO}" diff --git a/.config/setup/43-install-emacs-lilypond-mode.sh b/.config/setup/43-install-emacs-lilypond-mode.sh index 97855fd..a3fce38 100755 --- a/.config/setup/43-install-emacs-lilypond-mode.sh +++ b/.config/setup/43-install-emacs-lilypond-mode.sh @@ -1,8 +1,8 @@ #! /usr/bin/sh projdir="$(systemd-path user)"/Projects -mkdir -p "${projdir}" -rm -rf "${projdir}/lilypond" +mkdir --parents "${projdir}" +rm --force --recursive "${projdir}/lilypond" cd "${projdir}" || exit git clone --depth=1 https://github.com/lilypond/lilypond cd lilypond || exit diff --git a/.local/bin/ghup b/.local/bin/ghup index 74de4a3..1941987 100755 --- a/.local/bin/ghup +++ b/.local/bin/ghup @@ -1,7 +1,7 @@ #! /usr/bin/sh STATE_DIR="$(systemd-path user-state-private)"/github-versions -mkdir -p "${STATE_DIR}" +mkdir --parents "${STATE_DIR}" github_update() { package="$1" diff --git a/.local/bin/make-backup b/.local/bin/make-backup index 7d05e48..eb6bbe1 100755 --- a/.local/bin/make-backup +++ b/.local/bin/make-backup @@ -2,7 +2,7 @@ TS_DIR="$(systemd-path user-state-private)"/backup -mkdir -p "${TS_DIR}" +mkdir --parents "${TS_DIR}" backup () { target=$1 From e0c33b01b7426b70b3586e5d6d9872c95d9542d0 Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 23:32:33 +0300 Subject: [PATCH 09/10] Use bash strict mode in most shell scripts --- .config/setup/12-setup-packages.sh | 5 ++++- .config/setup/14-install-cron-jobs.sh | 5 ++++- .config/setup/16-install-tor.sh | 5 ++++- .config/setup/18-install-git-sync.sh | 5 ++++- .config/setup/20-install-zoom.sh | 5 ++++- .config/setup/31-initialize-backup-repository.sh | 5 ++++- .config/setup/42-install-github-packages.sh | 5 ++++- .config/setup/43-install-emacs-lilypond-mode.sh | 5 ++++- .config/setup/50-install-cargo-packages.sh | 5 ++++- .local/bin/ghup | 5 ++++- .local/bin/git-resign | 5 ++++- .local/bin/kill-current-zellij-session | 5 ++++- .local/bin/leave | 5 ++++- .local/bin/make-backup | 5 ++++- .local/bin/no-ipv6 | 5 ++++- .local/bin/package-alert | 5 ++++- .local/bin/pull-emacs-tide | 5 ++++- .local/bin/resync-git-sync | 5 ++++- .local/bin/sync-backup | 5 ++++- .local/bin/take-screenshot | 5 ++++- .local/bin/update-weather | 5 ++++- .local/bin/upgrade | 5 ++++- .local/bin/vaulter | 5 ++++- .local/share/github-versions/dolt | 5 ++++- .local/share/github-versions/kingfisher | 5 ++++- .local/share/github-versions/minikube | 5 ++++- .local/share/github-versions/rust-analyzer | 5 ++++- .local/share/github-versions/uv | 5 ++++- 28 files changed, 112 insertions(+), 28 deletions(-) diff --git a/.config/setup/12-setup-packages.sh b/.config/setup/12-setup-packages.sh index 267e217..48c0136 100755 --- a/.config/setup/12-setup-packages.sh +++ b/.config/setup/12-setup-packages.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' systemctl --user enable --now syncthing.service diff --git a/.config/setup/14-install-cron-jobs.sh b/.config/setup/14-install-cron-jobs.sh index 829ad9b..22851b8 100755 --- a/.config/setup/14-install-cron-jobs.sh +++ b/.config/setup/14-install-cron-jobs.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' # keep-sorted start systemctl --user enable --now backup.timer diff --git a/.config/setup/16-install-tor.sh b/.config/setup/16-install-tor.sh index 4c1e33b..5688ea2 100755 --- a/.config/setup/16-install-tor.sh +++ b/.config/setup/16-install-tor.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' 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/18-install-git-sync.sh b/.config/setup/18-install-git-sync.sh index ac57a8f..c5824c1 100755 --- a/.config/setup/18-install-git-sync.sh +++ b/.config/setup/18-install-git-sync.sh @@ -1,3 +1,6 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' resync-git-sync diff --git a/.config/setup/20-install-zoom.sh b/.config/setup/20-install-zoom.sh index 72dd1f9..d1260cc 100755 --- a/.config/setup/20-install-zoom.sh +++ b/.config/setup/20-install-zoom.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' 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/31-initialize-backup-repository.sh index d384732..fe2c0cf 100755 --- a/.config/setup/31-initialize-backup-repository.sh +++ b/.config/setup/31-initialize-backup-repository.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' sudo mkdir --parents "${BORG_REPO}" sudo chown "${USER}":"${USER}" "${BORG_REPO}" diff --git a/.config/setup/42-install-github-packages.sh b/.config/setup/42-install-github-packages.sh index 13d5478..1ebd793 100755 --- a/.config/setup/42-install-github-packages.sh +++ b/.config/setup/42-install-github-packages.sh @@ -1,3 +1,6 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' ghup diff --git a/.config/setup/43-install-emacs-lilypond-mode.sh b/.config/setup/43-install-emacs-lilypond-mode.sh index a3fce38..cf53bf2 100755 --- a/.config/setup/43-install-emacs-lilypond-mode.sh +++ b/.config/setup/43-install-emacs-lilypond-mode.sh @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' projdir="$(systemd-path user)"/Projects mkdir --parents "${projdir}" diff --git a/.config/setup/50-install-cargo-packages.sh b/.config/setup/50-install-cargo-packages.sh index e46a08d..b8856e7 100755 --- a/.config/setup/50-install-cargo-packages.sh +++ b/.config/setup/50-install-cargo-packages.sh @@ -1,3 +1,6 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' cargo install zellij diff --git a/.local/bin/ghup b/.local/bin/ghup index 1941987..d198be9 100755 --- a/.local/bin/ghup +++ b/.local/bin/ghup @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' STATE_DIR="$(systemd-path user-state-private)"/github-versions mkdir --parents "${STATE_DIR}" diff --git a/.local/bin/git-resign b/.local/bin/git-resign index 90a7a05..6d45d8e 100755 --- a/.local/bin/git-resign +++ b/.local/bin/git-resign @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' 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 ac22ec5..378e1bf 100755 --- a/.local/bin/kill-current-zellij-session +++ b/.local/bin/kill-current-zellij-session @@ -1,3 +1,6 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' zellij delete-session --force "${ZELLIJ_SESSION_NAME}" diff --git a/.local/bin/leave b/.local/bin/leave index 7d51b3f..438c45e 100755 --- a/.local/bin/leave +++ b/.local/bin/leave @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' listopts() { echo "⏼ Shut down" diff --git a/.local/bin/make-backup b/.local/bin/make-backup index eb6bbe1..251a77c 100755 --- a/.local/bin/make-backup +++ b/.local/bin/make-backup @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' TS_DIR="$(systemd-path user-state-private)"/backup diff --git a/.local/bin/no-ipv6 b/.local/bin/no-ipv6 index e1192d5..3ad8edb 100755 --- a/.local/bin/no-ipv6 +++ b/.local/bin/no-ipv6 @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' sudo sysctl net.ipv6.conf.all.disable_ipv6=1 "$@" diff --git a/.local/bin/package-alert b/.local/bin/package-alert index 1bce7c2..2d11eb9 100755 --- a/.local/bin/package-alert +++ b/.local/bin/package-alert @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' WATCHLIST="$(systemd-path user-shared)"/package-alert/watchlist diff --git a/.local/bin/pull-emacs-tide b/.local/bin/pull-emacs-tide index 2ceaac9..f41212c 100755 --- a/.local/bin/pull-emacs-tide +++ b/.local/bin/pull-emacs-tide @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' podman run \ --rm \ diff --git a/.local/bin/resync-git-sync b/.local/bin/resync-git-sync index 5486d52..f167ca8 100755 --- a/.local/bin/resync-git-sync +++ b/.local/bin/resync-git-sync @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' 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 8e6574a..97edd7a 100755 --- a/.local/bin/sync-backup +++ b/.local/bin/sync-backup @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' export BORG_REPO="/media/backup/" diff --git a/.local/bin/take-screenshot b/.local/bin/take-screenshot index a586a10..f2cf7c2 100755 --- a/.local/bin/take-screenshot +++ b/.local/bin/take-screenshot @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' listopts() { echo "📷 Focused monitor" diff --git a/.local/bin/update-weather b/.local/bin/update-weather index 6acdf66..25d37c3 100755 --- a/.local/bin/update-weather +++ b/.local/bin/update-weather @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' # 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 6acd66c..95784aa 100755 --- a/.local/bin/upgrade +++ b/.local/bin/upgrade @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' apt_update() { sudo --reset-timestamp diff --git a/.local/bin/vaulter b/.local/bin/vaulter index f3f17b9..f12dd73 100755 --- a/.local/bin/vaulter +++ b/.local/bin/vaulter @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' podman --transient-store run --rm -ti \ --env WAYLAND_DISPLAY \ diff --git a/.local/share/github-versions/dolt b/.local/share/github-versions/dolt index 72b1559..21ac93a 100755 --- a/.local/share/github-versions/dolt +++ b/.local/share/github-versions/dolt @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' package=dolt repo=dolthub/dolt diff --git a/.local/share/github-versions/kingfisher b/.local/share/github-versions/kingfisher index 116183e..92eb753 100755 --- a/.local/share/github-versions/kingfisher +++ b/.local/share/github-versions/kingfisher @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' package=kingfisher repo=mongodb/kingfisher diff --git a/.local/share/github-versions/minikube b/.local/share/github-versions/minikube index 8bbc23c..733d6f3 100755 --- a/.local/share/github-versions/minikube +++ b/.local/share/github-versions/minikube @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' package=minikube repo=kubernetes/minikube diff --git a/.local/share/github-versions/rust-analyzer b/.local/share/github-versions/rust-analyzer index 9452be9..69196c7 100755 --- a/.local/share/github-versions/rust-analyzer +++ b/.local/share/github-versions/rust-analyzer @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' package=rust-analyzer repo=rust-lang/rust-analyzer diff --git a/.local/share/github-versions/uv b/.local/share/github-versions/uv index 856c4c7..3a03d30 100755 --- a/.local/share/github-versions/uv +++ b/.local/share/github-versions/uv @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' package=uv repo=astral-sh/uv From 9f8e6edf2343d10aebc62b2165475d0b1588697a Mon Sep 17 00:00:00 2001 From: Ohad Livne Date: Sat, 12 Jul 2025 23:32:20 +0300 Subject: [PATCH 10/10] Refactor the repo sync script --- .local/bin/sync-git-repos | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/.local/bin/sync-git-repos b/.local/bin/sync-git-repos index d1fce9e..f8ba4c4 100755 --- a/.local/bin/sync-git-repos +++ b/.local/bin/sync-git-repos @@ -1,4 +1,7 @@ -#! /usr/bin/sh +#! /usr/bin/bash + +set -euo pipefail +IFS=$'\n\t' REPO_ROOT_FILE="$(systemd-path user-state-private)"/repo-roots/repo-roots @@ -16,14 +19,21 @@ sync_repo () { echo } -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 +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