- New managed configs: .config/bat (ANSI theme so bat follows the
terminal palette) and .claude/settings.json, with a .gitignore guard
so only settings.json under .claude/ is trackable.
- dotfiles.sh: drive linking from a single link map and add
unlink_dotfiles; install.sh grows --unlink to cleanly remove every
symlink pointing into the repo.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The configs (wezterm.lua font, starship symbols, eza icons) assume
'JetBrainsMono Nerd Font', which was an Arch package in the old setup.
Ubuntu's fonts-jetbrains-mono is the plain family without Nerd glyphs,
so WezTerm fell back to a default font and warned on every launch.
lib/fonts.sh downloads the official nerd-fonts release tarball into
~/.local/share/fonts/JetBrainsMonoNerdFont and runs fc-cache. Skips if
fc-list already reports the family. fontconfig added to the apt base
list for fc-list/fc-cache.
Ubuntu 24.04's apt versions of fzf/fd/bat/eza/zoxide/ripgrep/tmux/nvim/
lazygit/starship are frozen at April 2024 — and the previous GitHub-
release downloads went stale the moment you stopped re-running the
installer. Homebrew on Linux fixes both: always-latest releases and a
single 'brew upgrade' to update the whole CLI stack.
Two-tier install:
apt - zsh + base plumbing + WezTerm (vendor repo) + Brave Beta
(vendor repo). Vendor repos auto-update via 'apt upgrade'.
brew - fzf fd bat eza zoxide ripgrep tmux neovim lazygit starship
gh zsh-syntax-highlighting zsh-autosuggestions
nvm - official installer (pinned NVM_VERSION)
tpm - tmux plugin manager clone
New files:
install/Brewfile - bundle for 'brew bundle'
install/lib/brew.sh - Homebrew bootstrap + brew bundle
install/lib/extras.sh - nvm + tpm
install/install.sh - rewired entry point with --packages-only,
--dotfiles-only, --help
install/README.md - new docs for the two-tier strategy
.zshrc:
- Source brew shellenv first when present, so brew bins win on PATH
- 'update' alias now: brew upgrade && sudo apt update && sudo apt upgrade
(previously apt-only; before that pacman-only)
Drops install/lib/packages.sh entries that the now-Brewfile-managed tools
duplicated, and removes the GitHub-release tarball install path.
Adds lib/vbox.sh that runs systemd-detect-virt and, on VirtualBox guests:
- installs virtualbox-guest-utils + enables vboxservice
- links files/hypr/vbox.conf into ~/.config/hypr/ which sets
WLR_NO_HARDWARE_CURSORS=1, WLR_RENDERER_ALLOW_SOFTWARE=1,
LIBGL_ALWAYS_SOFTWARE=1 and overrides the monitor rule to
preferred mode (3440x1440@120 doesn't exist in VBox)
On bare metal an empty stub is linked instead, so the source= line in
hyprland.conf always resolves.
README adds a 'Testing in VirtualBox first' section listing the host-side
VBox settings (3D Acceleration on, 128MB video mem, VMSVGA, 8GB RAM, 40GB
disk) and the known-broken pieces (bluetooth, gpu-screen-recorder).
The previous wallpaper.sh probed wallhaven URLs at install time and
generated hyprpaper.conf dynamically — fragile in low-connectivity
environments and adds a step that has nothing to do with config.
Simpler model:
- install/files/wallpapers/default.jpg — bundled wallpaper (binary in repo)
- install/files/hypr/hyprpaper.conf — static, points to ~/.config/hypr/wallpapers/default.jpg
- install/files/bin/fetch-wallpaper — one-shot helper to populate the bundled
image from a URL (default: wallhaven.cc/w/2133ly). Run once, git add+commit,
every subsequent install gets the wallpaper offline.
- lib/hyprland.sh: symlinks both files; warns if the bundled image is missing
- lib/wallpaper.sh: removed
Note: this sandbox cannot reach wallhaven (host_not_allowed), so I cannot
include the actual JPG in this commit. Run fetch-wallpaper on your Arch box
then commit install/files/wallpapers/default.jpg.
- lib/wallpaper.sh: downloads the default wallpaper at install time
(tries .jpg then .png against the wallhaven CDN path) into
~/.config/hypr/wallpapers/default.<ext> and writes hyprpaper.conf
pointing at it
- Override the source with WALLPAPER_URL=<direct-image-url> or just the
URL stem with WALLPAPER_URL_BASE
- Existing hyprpaper.conf is backed up to .pre-install.<timestamp>
unless it's already ours (marker comment)
- files/hypr/autostart.conf: exec-once = hyprpaper
- install.sh: wire setup_wallpaper into do_dotfiles_and_config
Tried to fetch from this sandbox to verify the extension but wallhaven
blocks datacenter IPs (403); the installer probes .jpg first then .png
when it actually runs on a residential network.
Drops the omarchy/ directory and adds install/ - a direct Arch + Hyprland
installer oriented around these dotfiles, no framework on top:
- install/install.sh: entry point with --packages-only / --dotfiles-only
- install/lib/{common,packages,dotfiles,hyprland,services}.sh: modules
- install/files/hypr/: starter Hyprland config (monitors, env, input,
keybinds, autostart, top-level) - symlinked to ~/.config/hypr/
- Pacman packages: full Hyprland desktop + dotfile dependencies
- AUR: bootstraps yay, installs brave-beta-bin
- Symlinks all dotfiles, installs tpm + nvm, switches login shell to zsh
- Enables sddm, NetworkManager, bluetooth, pipewire user stack
No btrfs / Limine / Secure Boot constraints (unlike Omarchy). 3440x1440@120
monitor + JetBrainsMono Nerd Font preserved. Hyprland border colors use the
Kanagawa Wave palette to match the rest of the stack.
wezterm.lua restored to standalone Kanagawa wave/dragon switching via
$WEZTERM_THEME, since there's no Omarchy theme source anymore.
All shell scripts shellcheck-clean; wezterm.lua passes luac.