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