Releases: VimukthiShohan/ubuntu-server-dotfiles
Release list
v1.3.0
Everything below is new since v1.2.0.
Profiles: minimal / developer / custom
setup.sh (and the bootstrap one-liner) now asks once which profile to converge to:
- minimal — core only: a working shell, git, tmux, and the
dotfCLI - developer — everything (the historical behavior; also the non-interactive default)
- custom — core + groups you pick, expanded through dependency closure (picking
nvimalso pulls inbuild+node); the interactive picker shows each group's contents and dependencies
Groups: ergonomics (ripgrep, fd, fzf, bat, eza, delta, zoxide, btop, direnv, just, thefuck, shellcheck, gh, yazi, lazygit, imagemagick, poppler-utils) · build · services (Docker, postgres/redis clients) · nvim · node · rust · go-tools · python · ai-clis (claude, opencode, codex, rtk) · cloud (AWS CLI v2). Toolchain dependencies follow automatically (ergonomics → rust, go-tools · nvim → build, node · ai-clis → node, rust · rust → build).
The choice is saved to ~/.config/dotf/profile (parsed, never sourced — state-file content can never execute). Every manifest is now group-sectioned (## group: <name> headers, guard-enforced), and apply.sh / install-tools.sh / installers.sh / doctor.sh gate apt, stow, runtimes, curl installers, and the docker service by the active groups. Skipped groups are logged explicitly, so a minimal run reads as exactly what it did.
New dotf subcommands
dotf profile— re-select profile/groups, then converge (reports newly-orphaned stow packages, never removes them)dotf skills— optional AI skill frameworks, installed user-globally and unattended-safe: SuperClaude, Superpowers (obra), mattpocock/skills, Graphify, Callstack react-devtools + agent-skills
Bootstrap: optional new-user creation
bootstrap.sh can create a fresh sudo user and hand the whole install off to it: hardened authorized_keys copy (install, never cp; refuses symlinked .ssh), one-shot guarded re-exec in the new user's home, prompts on /dev/tty with a reliable open-probe for non-interactive detection. The fresh-machine one-liner is unchanged.
Minimal keeps a working shell
Optional-tool zsh aliases and EDITOR are command -v-guarded, and the delta/nvim git config moved to a new git-dev stow package (ergonomics), included by core ~/.gitconfig only when present — so a minimal machine never has aliases pointing at absent binaries.
Verification
Field-tested end-to-end on fresh Ubuntu 24.04 EC2 (minimal and developer, with the new-user step). Guard test passes under bash 3.2 and 5.x; tests/profile-lib-test.bash (40+ checks) wired into the guard.
v1.2.0
Highlights
dotfCLI: a stowed veneer over the repo scripts (dotf apply|doctor|update|test).- Curl-able
bootstrap.shfor fresh Ubuntu servers, with hardened, upstream-verified clones (download-then-run one-liner). doctor.shdotf drift check to catch stow/symlink drift.
Fixes
install-tools: self-clear the Neovim cleanup trap so it no longer aborts on main return.bootstrap: verify every clone against upstream through a hardened check; bind the clone URL in the guard and stop it failing open; verify the target repo exactly before use.apply: validate repos, parse args strictly, treat retryable clone failures as success, and harden error handling; enableerrtraceso theERRtrap fires.dotf: fail closed whengit statuserrors during update.doctor: resolve both symlink sides to avoid false dotf drift.gitignore: restrict the.localunignore to thedotfpackage so XDG.localdirs stay committable.
Docs
- Document the bootstrap one-liner,
dotf, safe bootstrap invocation, anddotf updatesemantics. - Add instructions for removing a user and deleting its home directory.
Full changelog: v1.1.1...v1.2.0
v1.1.1
Fixes Neovim failing to load on a freshly provisioned machine.
Fixed
tree-sitter-clinow installs from npm instead of apt. Ubuntu 24.04 (Noble) shipstree-sitter-cli0.20.8, which predates thetree-sitter buildsubcommand that nvim-treesitter (mainbranch) uses to compile parsers. Every parser install failed on startup witherror: The subcommand 'build' wasn't recognized. The CLI moved fromsetup/apt-packages.txttosetup/tools/npm.txt, which provides a current (0.25.x) prebuilt binary.
Guards
tests/ubuntu-config.bashnow fails iftree-sitter-clireappears in the apt manifest or goes missing from the npm manifest.AGENTS.mdrecords the constraint alongside the existing apt-hygiene rules (same class of problem as apt's outdated Neovim).
Upgrading an already-provisioned machine
The converge step installs but never uninstalls, so remove the stale apt binary first:
sudo apt remove -y tree-sitter-cli
cd ~/.dotfiles && git pull && ./apply.sh
tree-sitter --version # expect >= 0.25
nvim +TSUpdatev1.1.0
Fixed
apply.shnow stows dotfiles early — right after the apt/shim steps — so a failure in any later step (installers, docker, chsh, repo clones) can no longer leave a machine with tools installed but no shell config linked (the "y: command not found" / bare-prompt state after a partial first run).- Repo clones (fzf-git, tpm, powerlevel10k) are non-fatal: a network flake prints a warning and the run completes, exiting 1 with a retry hint instead of aborting mid-run.
Added
- README Troubleshooting section covering the partial-run symptom signature and the
doctor.sh→apply.sh --freshrecovery path. - Static guard checks enforcing stow's position in
apply.shand the non-fatal clone helper.
v1.0.0
First release: Ubuntu 24.04 server dotfiles — GNU Stow packages, idempotent apply/doctor scripts, and tool manifests.