/ justfile
justfile
1 ## Justfile (https://github.com/casey/justfile) 2 ## 3 ## Helps automate various homelab tasks. 4 5 set export 6 distro := `grep -G "\bID\b" /etc/os-release | awk -F= '{print $2}'` 7 id_like := `grep -G "\bID_LIKE\b" /etc/os-release | awk -F= '{print $2}'` 8 release := `grep "VERSION_CODENAME" /etc/os-release | awk -F= '{print $2}'` 9 run_user := env_var("USER") 10 11 caddy: 12 #!/usr/bin/env bash 13 if [ "$distro" == "debian" ]; then 14 sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl 15 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg 16 curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list 17 sudo apt update 18 sudo apt install caddy 19 elif echo "$id_like" | grep "rhel"; then 20 sudo dnf install -y 'dnf-command(copr)' 21 sudo dnf copr enable -y @caddy/caddy 22 sudo dnf install -y caddy 23 elif [ "$distro" == "freebsd" ]; then 24 sudo pkg install -y caddy 25 fi 26 27 thelounge: 28 #!/usr/bin/env bash 29 if [ "$distro" == "debian" ]; then 30 curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "browser_download_url.*deb" | cut -d : -f 2,3 | tr -d '"' | wget -qi - 31 sudo apt install -y ./thelounge*.deb 32 rm -fv ./thelounge*.deb 33 else 34 echo "This justfile only supports The Lounge on Debian systems." 35 fi 36 37 tailscale: 38 curl -fsSL https://tailscale.com/install.sh | sh 39 sudo tailscale up 40 41 scihub: 42 mkdir ~/scihub-torrent-urls 43 lynx -dump -nonumbers -listonly=on https://libgen.rs/repository_torrent/ | grep "\.torrent" | tee ~/scihub-torrent-urls/urls.txt 44 cd ~/scihub-torrent-urls && split -l 60 ~/scihub-torrent-urls/urls.txt torrent- 45 rm -fv ~/scihub-torrent-urls/urls.txt 46 47 docker: 48 #!/usr/bin/env bash 49 if [ "$distro" == "debian" ]; then 50 for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt remove $pkg; done 51 sudo apt update 52 sudo apt install -y ca-certificates curl 53 sudo install -m 0755 -d /etc/apt/keyrings 54 sudo curl -fsSL https://download.docker.com/linux/{{distro}}/gpg -o /etc/apt/keyrings/docker.asc 55 sudo chmod a+r /etc/apt/keyrings/docker.asc 56 echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{distro}} {{release}} stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 57 sudo apt update 58 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose docker-compose-plugin 59 sudo systemctl enable --now docker.service 60 sudo usermod -aG docker {{run_user}} 61 else 62 echo "This justfile only supports Docker on Debian systems." 63 fi 64 65 rustup: 66 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 67 68 neovim: 69 sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ 70 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' 71 72 mkdir -p "${HOME}/.config/nvim" 73 wget https://files.hyperreal.coffee/init.vim -O "${HOME}/.config/nvim/init.vim" 74 75 neovim-root: 76 sudo sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ 77 https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' 78 79 sudo mkdir -p /root/.config/nvim 80 sudo wget https://files.hyperreal.coffee/init.vim -O /root/.config/nvim/init.vim 81 82 install-dust: 83 #!/usr/bin/env bash 84 set -euo pipefail 85 dl_url=$(curl -s "https://api.github.com/repos/bootandy/dust/releases/latest" | jq '.assets | .[].browser_download_url' | grep "x86_64-unknown-linux-gnu.tar.gz" | tr -d '"') 86 wget "$dl_url" 87 filename=$(basename -s .tar.gz dust*) 88 tar xvf "${filename}.tar.gz" 89 sudo cp -v "${filename}/dust" /usr/local/bin/ 90 sudo chown root:root /usr/local/bin/dust 91 rm -rf "$filename" "${filename}.tar.gz"