From 9c0ade560cb7cffca732cc8e1327f8da7f9dd583 Mon Sep 17 00:00:00 2001 From: Bryan Roessler Date: Wed, 11 Jun 2025 21:43:40 -0400 Subject: [PATCH] Deploy scripts with stow --- scripts/script-deploy-manual | 47 --------------- scripts/script-deploy-scripts | 17 ------ stow/README | 2 + .../etc/dconf/db/local.d/99-hartmanlab | 0 .../etc/dconf/db/local.d/locks/99-hartmanlab | 0 stow/{ => config}/etc/fail2ban/jail.local | 0 stow/{ => config}/etc/fstab | 0 stow/{ => config}/etc/samba/smb.conf | 0 stow/{ => config}/etc/ssh/sshd_config | 0 .../schemas/50-tweaks.gschema.override | 0 .../mate-panel/layouts/hartmanlab.layout | 0 .../smartd_warning.d/99-smartd-notify-all | 0 stow/deploy | 3 + .../scripts/usr/local/bin}/README.md | 0 .../usr/local/bin/script-deploy-manual | 57 +++++++++++++++++++ .../local/bin}/script-drives-fix-btrfs-full | 0 .../local/bin}/script-files-permissions-reset | 0 .../local/bin}/script-files-permissions-set | 0 .../scripts/usr/local/bin}/script-functions | 0 .../bin}/script-install-btrfsmaintenance | 0 .../usr/local/bin}/script-install-motd | 0 .../bin}/script-system-scheduled-restart | 0 .../usr/local/bin}/script-system-update | 0 .../scripts/usr/local/bin}/script-user-add | 0 .../scripts/usr/local/bin}/script-user-remove | 0 .../usr/local/bin}/script-user-reset-desktop | 0 .../usr/local/bin}/script-user-reset-password | 0 .../usr/local/bin}/script-user-reset-x2go | 0 .../scripts/usr/local/bin}/script-user-unban | 0 29 files changed, 62 insertions(+), 64 deletions(-) delete mode 100644 scripts/script-deploy-manual delete mode 100755 scripts/script-deploy-scripts create mode 100644 stow/README rename stow/{ => config}/etc/dconf/db/local.d/99-hartmanlab (100%) rename stow/{ => config}/etc/dconf/db/local.d/locks/99-hartmanlab (100%) rename stow/{ => config}/etc/fail2ban/jail.local (100%) rename stow/{ => config}/etc/fstab (100%) rename stow/{ => config}/etc/samba/smb.conf (100%) rename stow/{ => config}/etc/ssh/sshd_config (100%) rename stow/{usr => config/usr/local}/share/glib-2.0/schemas/50-tweaks.gschema.override (100%) rename stow/{usr => config/usr/local}/share/mate-panel/layouts/hartmanlab.layout (100%) rename stow/{usr => config/usr/local}/share/smartmontools/smartd_warning.d/99-smartd-notify-all (100%) create mode 100644 stow/deploy rename {scripts => stow/scripts/usr/local/bin}/README.md (100%) create mode 100755 stow/scripts/usr/local/bin/script-deploy-manual rename {scripts => stow/scripts/usr/local/bin}/script-drives-fix-btrfs-full (100%) rename {scripts => stow/scripts/usr/local/bin}/script-files-permissions-reset (100%) rename {scripts => stow/scripts/usr/local/bin}/script-files-permissions-set (100%) rename {scripts => stow/scripts/usr/local/bin}/script-functions (100%) rename {scripts => stow/scripts/usr/local/bin}/script-install-btrfsmaintenance (100%) rename {scripts => stow/scripts/usr/local/bin}/script-install-motd (100%) rename {scripts => stow/scripts/usr/local/bin}/script-system-scheduled-restart (100%) rename {scripts => stow/scripts/usr/local/bin}/script-system-update (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-add (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-remove (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-reset-desktop (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-reset-password (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-reset-x2go (100%) rename {scripts => stow/scripts/usr/local/bin}/script-user-unban (100%) diff --git a/scripts/script-deploy-manual b/scripts/script-deploy-manual deleted file mode 100644 index 7296b370..00000000 --- a/scripts/script-deploy-manual +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -# This script installs the Hartman Lab Server Manual to each user's desktop -# Usage: script-deploy-manual USERNAME|--all -# Copyright 2021-2025 Bryan C. Roessler -# Licensed under the Apache License, Version 2.0 - -script-deploy-manual() { - local user_arg="$1" - local manual_url="https://docs.google.com/document/d/1K_KwAlv8Zljmy-enwmhT6gMTFutlAFglixvpLGBx0VY" - local remove=("manual.pdf" "manual.odt" "Notes.pdf" "Notes.odt" \ - "README.html" "Link to Manual.desktop" "manual-images" \ - "manual.html" "Manual.desktop" "manual.desktop") - local users=() - - if [[ "$user_arg" == "--all" ]]; then - for d in /home/*; do [[ -d $d ]] && users+=("${d##*/}"); done - else - users+=("$user_arg") - fi - - for user in "${users[@]}"; do - desktop="/home/$user/Desktop" - [[ -d $desktop ]] || continue - echo "Scanning $desktop for old manuals" - for f in "${remove[@]}"; do - if [[ -e $desktop/$f || -L $desktop/$f ]]; then - echo "Removing $desktop/$f" - rm -f "${desktop:?}/$f" - fi - done - echo "Installing manual to $desktop/manual.desktop" - cat <<-EOF > "$desktop/manual.desktop" - [Desktop Entry] - Encoding=UTF-8 - Name=Hartman Lab Server Manual - Type=Link - URL=$manual_url - Icon=text-html - EOF - done -} - -# Allow script to be safely sourced -if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then - script-deploy-manual "$@" - exit $? -fi \ No newline at end of file diff --git a/scripts/script-deploy-scripts b/scripts/script-deploy-scripts deleted file mode 100755 index 768be36a..00000000 --- a/scripts/script-deploy-scripts +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -# Adds the scripts directory to the global PATH -# Copyright 2021-2025 Bryan C. Roessler -# Licensed under the Apache License, Version 2.0 -p="${BASH_SOURCE[0]%/*}"; [[ -r $p/script-functions ]] && . "$p"/script-functions || exit 1 - -script-deploy-scripts() { - local profile_file="/etc/profile.d/99-hartmanlab_server_scripts.sh" - echo "Adding $p to global PATH in $profile_file" - sudo bash -c "echo 'export PATH=\"\$PATH:$p\"' > '$profile_file'" -} - -# Allow script to be safely sourced -if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then - script-deploy-scripts - exit -fi diff --git a/stow/README b/stow/README new file mode 100644 index 00000000..3d6090ae --- /dev/null +++ b/stow/README @@ -0,0 +1,2 @@ +To deploy everything (from this dir): `sudo stow -t / config scripts` +To only deploy scripts: `sudo stow -t / scripts` \ No newline at end of file diff --git a/stow/etc/dconf/db/local.d/99-hartmanlab b/stow/config/etc/dconf/db/local.d/99-hartmanlab similarity index 100% rename from stow/etc/dconf/db/local.d/99-hartmanlab rename to stow/config/etc/dconf/db/local.d/99-hartmanlab diff --git a/stow/etc/dconf/db/local.d/locks/99-hartmanlab b/stow/config/etc/dconf/db/local.d/locks/99-hartmanlab similarity index 100% rename from stow/etc/dconf/db/local.d/locks/99-hartmanlab rename to stow/config/etc/dconf/db/local.d/locks/99-hartmanlab diff --git a/stow/etc/fail2ban/jail.local b/stow/config/etc/fail2ban/jail.local similarity index 100% rename from stow/etc/fail2ban/jail.local rename to stow/config/etc/fail2ban/jail.local diff --git a/stow/etc/fstab b/stow/config/etc/fstab similarity index 100% rename from stow/etc/fstab rename to stow/config/etc/fstab diff --git a/stow/etc/samba/smb.conf b/stow/config/etc/samba/smb.conf similarity index 100% rename from stow/etc/samba/smb.conf rename to stow/config/etc/samba/smb.conf diff --git a/stow/etc/ssh/sshd_config b/stow/config/etc/ssh/sshd_config similarity index 100% rename from stow/etc/ssh/sshd_config rename to stow/config/etc/ssh/sshd_config diff --git a/stow/usr/share/glib-2.0/schemas/50-tweaks.gschema.override b/stow/config/usr/local/share/glib-2.0/schemas/50-tweaks.gschema.override similarity index 100% rename from stow/usr/share/glib-2.0/schemas/50-tweaks.gschema.override rename to stow/config/usr/local/share/glib-2.0/schemas/50-tweaks.gschema.override diff --git a/stow/usr/share/mate-panel/layouts/hartmanlab.layout b/stow/config/usr/local/share/mate-panel/layouts/hartmanlab.layout similarity index 100% rename from stow/usr/share/mate-panel/layouts/hartmanlab.layout rename to stow/config/usr/local/share/mate-panel/layouts/hartmanlab.layout diff --git a/stow/usr/share/smartmontools/smartd_warning.d/99-smartd-notify-all b/stow/config/usr/local/share/smartmontools/smartd_warning.d/99-smartd-notify-all similarity index 100% rename from stow/usr/share/smartmontools/smartd_warning.d/99-smartd-notify-all rename to stow/config/usr/local/share/smartmontools/smartd_warning.d/99-smartd-notify-all diff --git a/stow/deploy b/stow/deploy new file mode 100644 index 00000000..db2d1364 --- /dev/null +++ b/stow/deploy @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +sudo stow -t / usr etc \ No newline at end of file diff --git a/scripts/README.md b/stow/scripts/usr/local/bin/README.md similarity index 100% rename from scripts/README.md rename to stow/scripts/usr/local/bin/README.md diff --git a/stow/scripts/usr/local/bin/script-deploy-manual b/stow/scripts/usr/local/bin/script-deploy-manual new file mode 100755 index 00000000..65c016b1 --- /dev/null +++ b/stow/scripts/usr/local/bin/script-deploy-manual @@ -0,0 +1,57 @@ +#!/usr/bin/env bash +# This script installs the Hartman Lab Server Manual to each user's desktop +# Usage: script-deploy-manual USERNAME|--all +# Copyright 2021-2025 Bryan C. Roessler +# Licensed under the Apache License, Version 2.0 + +script-deploy-manual() { + local user_arg="$1" + local manual_url="https://docs.google.com/document/d/1K_KwAlv8Zljmy-enwmhT6gMTFutlAFglixvpLGBx0VY" + local remove=("manual.pdf" "manual.odt" "Notes.pdf" "Notes.odt" \ + "README.html" "Link to Manual.desktop" "manual-images" \ + "manual.html" "Manual.desktop" "manual.desktop") + local users=() + + if [[ -z "$user_arg" || "$user_arg" == "--help" ]]; then + cat <<-EOF + Usage: script-deploy-manual USERNAME|--all + + USERNAME: Specify a single user's name. + --all: Deploy the manual to all users with a Desktop directory. + EOF + return 1 + fi + + if [[ "$user_arg" == "--all" ]]; then + for d in /home/*; do [[ -d $d ]] && users+=("${d##*/}"); done + else + users+=("$user_arg") + fi + + for user in "${users[@]}"; do + desktop="/home/$user/Desktop" + [[ -d $desktop ]] || continue + echo "Scanning $desktop for old manuals" + for f in "${remove[@]}"; do + if [[ -e $desktop/$f || -L $desktop/$f ]]; then + echo "Removing $desktop/$f" + rm -f "${desktop:?}/$f" + fi + done + echo "Installing manual to $desktop/manual.desktop" + cat <<-EOF > "$desktop/manual.desktop" + [Desktop Entry] + Encoding=UTF-8 + Name=Hartman Lab Server Manual + Type=Link + URL=$manual_url + Icon=text-html + EOF + done +} + +# Allow script to be safely sourced +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + script-deploy-manual "$@" + exit $? +fi \ No newline at end of file diff --git a/scripts/script-drives-fix-btrfs-full b/stow/scripts/usr/local/bin/script-drives-fix-btrfs-full similarity index 100% rename from scripts/script-drives-fix-btrfs-full rename to stow/scripts/usr/local/bin/script-drives-fix-btrfs-full diff --git a/scripts/script-files-permissions-reset b/stow/scripts/usr/local/bin/script-files-permissions-reset similarity index 100% rename from scripts/script-files-permissions-reset rename to stow/scripts/usr/local/bin/script-files-permissions-reset diff --git a/scripts/script-files-permissions-set b/stow/scripts/usr/local/bin/script-files-permissions-set similarity index 100% rename from scripts/script-files-permissions-set rename to stow/scripts/usr/local/bin/script-files-permissions-set diff --git a/scripts/script-functions b/stow/scripts/usr/local/bin/script-functions similarity index 100% rename from scripts/script-functions rename to stow/scripts/usr/local/bin/script-functions diff --git a/scripts/script-install-btrfsmaintenance b/stow/scripts/usr/local/bin/script-install-btrfsmaintenance similarity index 100% rename from scripts/script-install-btrfsmaintenance rename to stow/scripts/usr/local/bin/script-install-btrfsmaintenance diff --git a/scripts/script-install-motd b/stow/scripts/usr/local/bin/script-install-motd similarity index 100% rename from scripts/script-install-motd rename to stow/scripts/usr/local/bin/script-install-motd diff --git a/scripts/script-system-scheduled-restart b/stow/scripts/usr/local/bin/script-system-scheduled-restart similarity index 100% rename from scripts/script-system-scheduled-restart rename to stow/scripts/usr/local/bin/script-system-scheduled-restart diff --git a/scripts/script-system-update b/stow/scripts/usr/local/bin/script-system-update similarity index 100% rename from scripts/script-system-update rename to stow/scripts/usr/local/bin/script-system-update diff --git a/scripts/script-user-add b/stow/scripts/usr/local/bin/script-user-add similarity index 100% rename from scripts/script-user-add rename to stow/scripts/usr/local/bin/script-user-add diff --git a/scripts/script-user-remove b/stow/scripts/usr/local/bin/script-user-remove similarity index 100% rename from scripts/script-user-remove rename to stow/scripts/usr/local/bin/script-user-remove diff --git a/scripts/script-user-reset-desktop b/stow/scripts/usr/local/bin/script-user-reset-desktop similarity index 100% rename from scripts/script-user-reset-desktop rename to stow/scripts/usr/local/bin/script-user-reset-desktop diff --git a/scripts/script-user-reset-password b/stow/scripts/usr/local/bin/script-user-reset-password similarity index 100% rename from scripts/script-user-reset-password rename to stow/scripts/usr/local/bin/script-user-reset-password diff --git a/scripts/script-user-reset-x2go b/stow/scripts/usr/local/bin/script-user-reset-x2go similarity index 100% rename from scripts/script-user-reset-x2go rename to stow/scripts/usr/local/bin/script-user-reset-x2go diff --git a/scripts/script-user-unban b/stow/scripts/usr/local/bin/script-user-unban similarity index 100% rename from scripts/script-user-unban rename to stow/scripts/usr/local/bin/script-user-unban