Skip to content

Releases: VimukthiShohan/ubuntu-server-dotfiles

v1.3.0

Choose a tag to compare

@VimukthiShohan VimukthiShohan released this 21 Jul 07:59

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 dotf CLI
  • developer — everything (the historical behavior; also the non-interactive default)
  • custom — core + groups you pick, expanded through dependency closure (picking nvim also pulls in build + 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

Choose a tag to compare

@VimukthiShohan VimukthiShohan released this 20 Jul 11:25

Highlights

  • dotf CLI: a stowed veneer over the repo scripts (dotf apply|doctor|update|test).
  • Curl-able bootstrap.sh for fresh Ubuntu servers, with hardened, upstream-verified clones (download-then-run one-liner).
  • doctor.sh dotf 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; enable errtrace so the ERR trap fires.
  • dotf: fail closed when git status errors during update.
  • doctor: resolve both symlink sides to avoid false dotf drift.
  • gitignore: restrict the .local unignore to the dotf package so XDG .local dirs stay committable.

Docs

  • Document the bootstrap one-liner, dotf, safe bootstrap invocation, and dotf update semantics.
  • Add instructions for removing a user and deleting its home directory.

Full changelog: v1.1.1...v1.2.0

v1.1.1

Choose a tag to compare

@VimukthiShohan VimukthiShohan released this 15 Jul 09:24

Fixes Neovim failing to load on a freshly provisioned machine.

Fixed

  • tree-sitter-cli now installs from npm instead of apt. Ubuntu 24.04 (Noble) ships tree-sitter-cli 0.20.8, which predates the tree-sitter build subcommand that nvim-treesitter (main branch) uses to compile parsers. Every parser install failed on startup with error: The subcommand 'build' wasn't recognized. The CLI moved from setup/apt-packages.txt to setup/tools/npm.txt, which provides a current (0.25.x) prebuilt binary.

Guards

  • tests/ubuntu-config.bash now fails if tree-sitter-cli reappears in the apt manifest or goes missing from the npm manifest.
  • AGENTS.md records 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 +TSUpdate

v1.1.0

Choose a tag to compare

@VimukthiShohan VimukthiShohan released this 14 Jul 06:30

Fixed

  • apply.sh now 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.shapply.sh --fresh recovery path.
  • Static guard checks enforcing stow's position in apply.sh and the non-fatal clone helper.

v1.0.0

Choose a tag to compare

@VimukthiShohan VimukthiShohan released this 11 Jul 19:23

First release: Ubuntu 24.04 server dotfiles — GNU Stow packages, idempotent apply/doctor scripts, and tool manifests.