config/justfile
2025-07-29 02:17:54 +10:00

126 lines
4.7 KiB
Makefile

[private]
default:
@just --list
_echoerror text:
@echo -e "{{ style("error") }}{{ text }}{{ NORMAL }}"
_echowarning text:
@echo -e "{{ style("warning") }}{{ text }}{{ NORMAL }}"
# Full auto installation
full-auto: packages dev-setup fish-shell helix-editor yazi-file-manager fastfetch
# Fuller auto (graphical) installation
full-auto-gui: full-auto kitty-terminal niri-window-manager
# (Run first unless running full-auto) Setup Flatpak, pacman mirrors, Chaotic AUR, and paru AUR helper
packages:
@just _echowarning "1) Installing Flatpak and adding Flathub repository"
sudo pacman -S flatpak flatpak-xdg-utils
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
@just _echowarning "\n2) Installing reflector (automatic mirror configuration)"
sudo pacman -S reflector
@just _echoerror "\n\n----- IMPORTANT -----\nPlease modify /etc/xdg/reflector/reflector.conf before continuing\n---------------------"
@read -p "Press enter to continue"
sudo systemctl enable --now reflector.timer
@just _echowarning "\n3) Adding Chaotic AUR repository to pacman"
sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key 3056513887B78AEB
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
@just _echoerror "\n\n----- IMPORTANT -----\nPlease add the following 2 lines to the end of /etc/pacman.conf before continuing\n\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist\n---------------------"
@read -p "Press enter to continue"
@just _echowarning "\n4) Installing paru AUR helper"
sudo pacman -Sy paru
# Programming languages, runtimes, toolchains, and git
[group("essentials")]
dev-setup:
@just _echowarning "1) Installing languages, runtimes, and toolchains"
paru -S aspnet-runtime aspnet-targeting-pack dotnet-sdk nodejs npm python3 rustup zig
@just _echowarning "\n2) Installing Rust language"
rustup toolchain add stable-x86_64-unknown-linux-gnu
@just _echowarning "\n3) Setting git global config"
git config --global init.defaultBranch "main"
[group("other")]
fastfetch:
@just _echowarning "1) Installing fastfetch and dependencies"
paru -S fastfetch imagemagick
@just _echowarning "\n2) Stowing fastfetch config"
stow --dotfiles -S fastfetch
# fish shell and plugins
[group("essentials")]
fish-shell:
@just _echowarning "1) Installing fish, fish plugin manager, and Starship prompt"
paru -S fisher fish starship
@just _echowarning "\n2) Stowing fish config"
stow --dotfiles -S fish
@just _echowarning "\n3) Setting user shell"
chsh -s /usr/bin/fish
@just _echowarning "\n4) Installing fish plugins"
fish -c "fisher update"
[group("essentials")]
helix-editor:
@just _echowarning "1) Installing Helix and dependencies"
paru -S bash-language-server clang fish-lsp helix just-lsp lemminx marksman python-lsp-server shfmt taplo-cli typescript-language-server vscode-css-languageserver vscode-html-languageserver vscode-json-languageserver yaml-language-server zls
@just _echowarning "\n2) Stowing Helix config"
stow --dotfiles -S helix
[group("graphical")]
kitty-terminal:
@just _echowarning "1) Installing Kitty and dependencies"
paru -S imagemagick kitty python-pygments ttf-firacode-nerd
@just _echowarning "\n2) Stowing Kitty config"
stow --dotfiles -S kitty
# Install niri and tools used with it
[group("graphical")]
niri-window-manager:
@just _echowarning "1) Installing niri and related tools"
paru -S cliphist fuzzel gdm gnome-keyring inter-font mako niri-git noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra polkit-kde-agent swayidle swaylock ttf-firacode-nerd ttf-font-awesome waybar wl-clipboard wlsunset wpaperd xdg-desktop-portal-gnome xwayland-satellite-git
@just _echowarning "\n2) Stowing niri config"
stow --dotfiles -S niri
@just _echowarning "\n3) Enabling GNOME display manager service"
sudo systemctl enable gdm
[group("other")]
syncthing-file-sync:
@just _echowarning "1) Installing Syncthing"
paru -S syncthing
@just _echowarning "\n2) Enabling and starting Syncthing user service"
systemctl enable --now --user syncthing
# Yazi terminal file manager and plugins
[group("essentials")]
yazi-file-manager:
@just _echowarning "1) Installing Yazi and dependencies"
paru -S 7zip fd ffmpeg fzf imagemagick jq poppler resvg ripgrep wl-clipboard yazi zoxide
@just _echowarning "\n2) Stowing Yazi config"
stow --dotfiles -S yazi
@just _echowarning "\n3) Installing Yazi plugins"
ya pkg install