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