Files
server-cli-tools/.agents/handoff/2026-06-04-1854-initial-setup.md
Marek Paulik 6fe8529d10 Add server CLI tools installer for Ubuntu/Debian servers
Introduce a self-contained repo with an interactive install.sh that
provisions zsh, oh-my-zsh, aliases, bat/yazi configs, docker shortcuts,
and git-delta pager setup. Configs are adapted from dotfiles for SSH-only
servers — no desktop or neovim dependencies.

Installer supports --all, --update (git pull + re-run), and --uninstall
with backup restore. Core packages include vim (default editor), yazi via
apt, and idempotent apt installs with warnings for eza and git-delta when
repos lack them.
2026-06-04 20:52:54 +02:00

3.9 KiB

Handoff: Server CLI Tools — initial setup complete

Date: 2026-06-04T18:54+02:00 Focus for next session: Initial commit, push to remote, and any refinements to the installer or configs.

Context

Standalone repo for provisioning Ubuntu/Debian servers with a consistent CLI environment — zsh, aliases, git config, Docker shortcuts, and core tools. Extracted and adapted from the user's personal dotfiles repo, stripped of desktop/neovim/GUI items to be server-SSH-only.

Current state

  • Working directory: /home/elvis/code/server_cli_tools
  • Branch / commit: master — repo initialized, all files staged, no commits yet
  • Last action taken: git init && git add .
  • Build/test status: bash -n install.sh passes; ./install.sh --help works

Artifacts

Key files

  • install.sh — main installer (6 components, interactive menu or --all)
  • configs/aliases/.aliases — general aliases (server-adapted, no neovim/opencode/SyncSuite)
  • configs/aliases/.functions.sh — helper functions, alias help system, uses ${EDITOR:-nano}
  • configs/aliases/.git_aliases — git shortcuts (removed lazygit, hardcoded gp path)
  • configs/aliases/.docker_aliases — docker management (unchanged from dotfiles)
  • configs/aliases/.git_bash_autocomplete — bash git completion
  • configs/custom_tools/backup_dotfiles.sh — backup conflicting dotfiles
  • configs/custom_tools/get_ip.sh — get+copy interface IP
  • configs/custom_tools/strip_file.sh — strip comments/blanks from configs
  • configs/bat/config — bat theme (base16)
  • configs/yazi/yazi.toml — yazi file manager config
  • configs/zsh/zhann-elvis.zsh-theme — custom git-aware zsh prompt
  • configs/zshrc — .zshrc with oh-my-zsh, plugins, fzf integration
  • README.md — repo documentation
  • .gitignore — swap files, DS_Store

Uncommitted changes

Everything is staged (git add .), awaiting initial commit. 15 files total.

What's done

  • Analyzed dotfiles repo structure and identified server-relevant components
  • Created self-contained repo with all configs bundled (no dependency on dotfiles repo)
  • Adapted aliases: removed nv, noc, fnv, nvc, oc, rtr, rfm, gp, lg, xc, dot, ape
  • Adapted functions: replaced nv with ${EDITOR:-nano}, removed fuzzy_nvim, activate_poetry_env
  • Changed py alias from python3.12 to python3
  • Created .zshrc with portable fzf sourcing (tries multiple paths)
  • Built interactive installer with toggle menu, --all mode, backup system, idempotent checks
  • Installer components: core packages, zsh+oh-my-zsh, aliases+tools, terminal configs (bat/yazi), docker aliases, git config (delta)

What's next

  1. Create initial commit
  2. Set up remote (Gitea at git.mpx.sk or GitHub) and push
  3. Test on a fresh server (e.g. Hetzner VPS from the re_kit project)
  4. Consider: add uninstall.sh or --uninstall flag?
  5. Consider: add update.sh to pull latest and re-run selective installs?

Open questions / decisions pending

  • Remote location: where to host this repo (Gitea vs GitHub)
  • Branch name: currently master (git default), may want to rename to main
  • yazi installation: currently only installs config; consider adding cargo-based yazi install to the script

Gotchas

  • The eza package is not available in all Ubuntu versions (e.g. older than 24.04). The installer warns and suggests manual install.
  • Same for git-delta — not in all apt repos. Falls back to a warning with a link.
  • The bat binary is batcat on Debian/Ubuntu — the installer creates a symlink at /usr/local/bin/bat.
  • The .zshrc sets EDITOR=nano by default since this is server-only (no neovim).
  • fzf shell integration varies across distro versions — the zshrc tries both the packaged path and fzf --zsh.

Suggested skills

  • create-commit-message — for the initial commit
  • copy-to-clipboard — if user wants to copy commands for server testing