justfiles for automating various tasks on my workstation
1# Setup systemd services 2[group('setup')] 3setup-services: 4 #!/usr/bin/env bash 5 enable_services=( 6 "atop.service" 7 "atopacct.service" 8 "atop-rotate.timer" 9 "firewalld.service" 10 "snapper-cleanup.timer" 11 "snapper-timeline.timer" 12 "tailscaled.service" 13 ) 14 for svc in "${enable_services[@]}"; do 15 if ! sudo systemctl is-active --quiet "$svc"; then 16 sudo systemctl enable --now "$svc" 17 fi 18 done 19 20 disable_services=( 21 "bluetooth.service" 22 "cups.service" 23 "cups-browsed.service" 24 "ufw.service" 25 ) 26 for svc in "${disable_services[@]}"; do 27 if ! sudo systemctl is-active --quiet "$svc"; then 28 sudo systemctl disable --now "$svc" 29 fi 30 done 31 32# Setup XDG user dirs 33[group('setup')] 34setup-xdg-user-dirs: 35 #!/usr/bin/env bash 36 cat <<EOF | sudo tee /etc/xdg/user-dirs.defaults 37 DESKTOP=desktop 38 DOWNLOAD=downloads 39 TEMPLATES= 40 PUBLICSHARE=nextcloud 41 DOCUMENTS=documents 42 MUSIC= 43 PICTURES=pictures 44 VIDEOS= 45 EOF 46 47 rm -fv "${HOME}/.config/user-dirs.dirs" 48 for dir in "Desktop" "Documents" "Downloads" "Music" "Pictures" "Public" "Templates" "Videos"; do 49 rm -rfv "${HOME}/${dir}" 50 done 51 ln -sf "${HOME}/nextcloud/Documents" "${HOME}/documents" 52 ln -sf "${HOME}/nextcloud/Pictures" "${HOME}/pictures" 53 xdg-user-dirs-update 54 55# Setup git repos locally 56[group('setup')] 57setup-repos: 58 #!/usr/bin/env bash 59 set -euo pipefail 60 61 if [ ! -f "${HOME}/.ssh/id_ed25519" ]; then 62 echo "SSH key not found. Please ensure your SSH key is available." 63 exit 1 64 fi 65 66 echo "Preparing local git directories..." 67 mkdir -p "${HOME}/repos/knot.moonshadow.dev" 68 mkdir -p "${HOME}/repos/tildegit.org/hyperreal" 69 70 echo "Cloning repos from knot.moonshadow.dev..." 71 tangled_repos=( 72 "ansible-homelab" 73 "dotfiles" 74 "hyperreal.coffee" 75 ) 76 for repo in "${tangled_repos[@]}"; do 77 if [ -d "${HOME}/repos/knot.moonshadow.dev/${repo}" ]; then 78 rm -rf "${HOME}/repos/knot.moonshadow.dev/${repo}" 79 fi 80 git clone "git@knot.moonshadow.dev:hyperreal.bsky.moonshadow.dev/${repo}.git" "${HOME}/repos/knot.moonshadow.dev/${repo}" 81 done 82 echo "Cloning repos from tildegit.org/hyperreal..." 83 tildegit_repos=( 84 "feelslog" 85 ) 86 for repo in "${tildegit_repos[@]}"; do 87 if [ -d "${HOME}/repos/tildegit.org/hyperreal/${repo}" ]; then 88 rm -rf "${HOME}/repos/tildegit.org/hyperreal/${repo}" 89 fi 90 git clone "git@tildegit.org:hyperreal/${repo}" "${HOME}/repos/tildegit.org/hyperreal/${repo}" 91 done 92 93# Setup hyperreal configs 94[group('setup')] 95setup-cli: 96 #!/usr/bin/env bash 97 set -euo pipefail 98 99 DOTFILES_DIR="${HOME}/repos/knot.moonshadow.dev/dotfiles" 100 if [ ! -d "$DOTFILES_DIR" ]; then 101 echo "${DOTFILES_DIR} not found." 102 exit 1 103 fi 104 105 find "${DOTFILES_DIR}/config" -maxdepth 1 -mindepth 1 -exec ln -sf {} "${HOME}/.config" \; 106 find "${DOTFILES_DIR}/zsh" -maxdepth 1 -mindepth 1 -exec ln -sf {} "${HOME}" \; 107 108# vim: ts=4 sts=4 sw=4 et ft=just