Run as your normal user:
curl -fsSL https://raw.githubusercontent.com/AntoineGS/configurations/main/setup.sh | bashSee Ubuntu Server Installation for details and next steps.
sudo pacman -S texlive-basic texlive-xetex texlive-latexextra texlive-fontsextra
texlive-fontsrecommended texlive-bin texlive-doc sudo pacman -S
texlive-fontsrecommended texlive-latexextra texlive-fontsextra sudo pacman -S
texlive-fontsextra sudo ln -s /usr/share/texmf-dist/fonts/opentype
/usr/share/fonts/texmf-opentype; fc-cache -f
!! Add Everything config and MultiCommander config !! Add
/etc/pam.d/system-local-login
- Nerdfonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip- Download and install with right click.
winget install nushellcargo install nu_plugin_semver nu_plugin_regexFrom Nushell:plugin add ~\.cargo\bin\nu_plugin_regex.exeplugin add ~\.cargo\bin\nu_plugin_semver.exe
- Install Everything as a service:
https://www.voidtools.com/
https://www.ghisler.com/download.htm
- Plugins:
https://www.ghisler.ch/board/viewtopic.php?t=33740
https://github.com/BluePointLilac/ContextMenuManager/releases
Download the bootstrap and preview it as your normal user:
curl -fsSL https://raw.githubusercontent.com/AntoineGS/configurations/main/setup.sh -o setup.sh
bash setup.sh --dry-run
bash setup.sh
export PATH="$HOME/.local/bin:$PATH"setup.sh installs missing apt prerequisites, clones the two repositories into
~/gits/configurations and ~/gits/tidydots, and reuses existing checkouts without
pulling or resetting them. It reads tidydots' minimum Go version from go.mod.
When necessary, it downloads a stable Go release for amd64/arm64, verifies its
published SHA-256, and installs it under ~/.local/share/go with commands in
~/.local/bin. It then builds ~/.local/bin/tidydots and runs
tidydots init ~/gits/configurations.
Install Homebrew first, then start a new installation preview so tidydots can discover it. Review each preview before running the following apply command:
tidydots install homebrew -n
tidydots install homebrew
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
tidydots install -n
tidydots install
tidydots restore -n
tidydots restoreNew Linux hostnames receive this terminal baseline:
- Homebrew, Bash, Zsh, Starship, tmux, Neovim, Herdr.
- fzf, zoxide, ripgrep, fd, bat, eza, jq.
- Git, Git LFS, lazygit, delta, Yazi, btop, gdu.
- Supporting Zsh plugins, Carapace, tpack, and Catppuccin bat/delta themes.
Ubuntu uses apt for system tools and Homebrew for current CLI versions (including Neovim, tmux and fzf). Homebrew's apt prerequisites include a C compiler/make; the bootstrap also installs Go for building tidydots. Language toolchains and coding agents are otherwise opt-in. The source-building tidydots updater and shell-picker are workstation-only; server shells use native fzf bindings. Herdr retains its SSH attachment and Vim navigation, with desktop notifications and workstation connection profiles restricted to workstations.
Edit that application's when condition in tidydots.yaml to include the server
hostname, preserving its existing workstation conditions. For example, to add
gopls on ubuntu-server:
when: '{{ and (eq .OS "linux") (or (eq .Hostname "omarchbook") (eq .Hostname "antoinews") (eq .Hostname "antoinews-linux") (eq .Hostname "DESKTOP-E07VTRN") (eq .Hostname "ubuntu-server")) }}'Also add an Ubuntu-compatible package mapping (for example, brew: gopls) and
any required dependencies, then preview tidydots install gopls -n. Targeting an
application by name does not bypass its condition. Add individual service
entries rather than enabling the whole workstation service bundle.
The hostnames: list supplies TUI choices only. YAML anchors centralize the
shared workstation conditions; expanding an anchor's host list opts that host
into every application using it. The existing server hostname still has its
explicit Tailscale installation, service and subnet-router configuration.
Excluding an application skips future management;
it does not uninstall previously installed packages or disable existing services.
- Follow the reproducible Arch installation guide for the ISO workflow.
- After reboot, run
Linux/install/bootstrapas the sole post-reboot setup entry point. - Run
Linux/install/bootstrap --dry-runbefore applying changes. Iftidydotsis unavailable, the command reports an incomplete preview with exit status4, explicitly skips its package and configuration phases, and must be rerun after installing the prerequisite.
tidydots.yaml is desired package state.
pkglist-pacman-<hostname>.txt and pkglist-aur-<hostname>.txt are generated audit snapshots.
- Graphical packages/configs and shared system services target
omarchbook,antoinews-linux, andDESKTOP-E07VTRNon non-WSL Linux. Hostname selection works over SSH and does not depend on an active display or forwarded X11. - Extra terminal/development tools target known workstations, including
antoinews; other Linux hosts receive the server baseline above. - Pacman maintenance and boot/snapshot packages additionally require Arch.
Hardware and machine policy use exact hostname conditions.
antoinews-linuxis the Intel desktop profile.
Focused previews such as tidydots --dir "$REPO_DIR" install hyprland -n are
intentionally limited to that application and may install only its package.
The canonical complete bootstrap package preview is the unscoped command:
tidydots --dir "$REPO_DIR" install -n.
Review only the relevant profile with a worktree-scoped dry-run. Set REPO_DIR
to the checkout being reviewed; every command below is non-mutating:
REPO_DIR=/path/to/configurations
# Shared desktop baseline
tidydots --dir "$REPO_DIR" install hyprland -n
tidydots --dir "$REPO_DIR" install pipewire-audio -n
tidydots --dir "$REPO_DIR" install linux-services-packages -n
# Intel desktop profile
tidydots --dir "$REPO_DIR" install antoinews-linux-intel -n
# Network stack
tidydots --dir "$REPO_DIR" install antoinews-linux-network -n
tidydots --dir "$REPO_DIR" restore antoinews-linux-network -n
# Limine and Snapper
tidydots --dir "$REPO_DIR" install limine -n
tidydots --dir "$REPO_DIR" install limine-snapper-sync -n
tidydots --dir "$REPO_DIR" restore limine-config -n
tidydots --dir "$REPO_DIR" install snapper -n
tidydots --dir "$REPO_DIR" restore snapper -nHostname-gated previews can report a condition mismatch when intentionally run on another host; that is the expected exclusion behavior.
DESKTOP-E07VTRN and omarchbook use the host-scoped tailmix application
for a work SOCKS proxy alongside the existing personal Tailscale client. See
setup, login, and connection instructions.
Daily timer to backup enabled services and timers to
Linux/systemd/units-enabled.txt:
sudo systemctl daemon-reload
sudo systemctl enable --now units-backup.timersystemctl --user daemon-reload; systemctl --user enable --now watch-rustdesk-submap.servicesudo chmod +x ~/.config/hypr/rustdesk-submap-watch.sh
Systemd socket-activated ssh-agent with 4-hour key lifetime. Keys are
automatically added on first use via AddKeysToAgent yes in ~/.ssh/config.
systemctl --user daemon-reload
systemctl --user enable --now ssh-agent.socketLog out and back in (or
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket" in the current
session) for the environment variable to take effect.
- NodeJS
sudo npm install -g shelljs typescript
- Nerdfonts
- Go in a temp directory
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zipunzip JetBrainsMono.ziprm JetBrainsMono.zipsudo mv JetBrainsMono* /usr/share/fonts/fc-cache -f -v
- Bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"echo >> ~/.bashrcecho 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
xdg-mime default com.mitchellh.ghostty.desktop x-scheme-handler/terminal
sudo update-alternatives --install /usr/bin/editor editor /home/linuxbrew/.linuxbrew/bin/nvim 1 && \ sudo update-alternatives --set editor /home/linuxbrew/.linuxbrew/bin/nvim- If error when copying to "+ then:
sudo apt install xclip- Through ssh it is said to install lemonade
- Install Nerd Fonts (JetBrains Mono Nerd Font)
brew install starship
which nu | sudo tee -a /etc/shellschsh -s "$(which nu)"From Nushell, most likely not needed:
brew install yazi ffmpegthumbnailer sevenzip jq poppler fd ripgrep fzf zoxide imagemagick
- Add nushell LSP/Formatter
- Add pwsh Formatter