/ 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"