Skip to content

Latest commit

History

997 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Headless

Bootstrap scripts for a headless-first Debian dev machine. Each script is standalone, prompts before making changes, and is numbered so they read in a sensible install order.

Install order

Run the numbered scripts as a normal user (they call sudo where needed):

Base system (0020)

ScriptWhat it does
00_git_setup.shGlobal git config
01_shrc.shShell runcom (~/.shrc)
02_basics.shBasic apt packages
03_zsh.shZsh + oh-my-zsh
04_tmux.shtmux + tmuxp
20_basic_build_tools.shCompilers / build essentials

Language SDKs (3034) — cores only

Install the runtime/compiler and wire up PATH. Node lands before nvim so its LSP servers exist by the time the editor is set up.

ScriptSDK
30_node.shnvm + Node LTS
31_python.shuv + a uv-managed Python
32_go.shGo toolchain
33_rust.shrustup + stable toolchain
34_zig.shZig + zls (uses sdk/zig/zls.json)

SDK tooling (40)

ScriptWhat it does
40_sdk_tools.shPost-install tooling for node / python / go in one pass; pass --rust to also build the rust cargo subcommands (opt-in since they're slow to compile). Each language is a wrapped section, so one failure doesn't abort the rest.

Editor (5052) — runs last

Depends on every SDK above (LSPs, formatters, DAP adapters).

ScriptWhat it does
50_nvim.shNeovim
51_astro_nvim.shAstroNvim config + utils
52_tui_tools.shMisc TUI tools (lazygit, superfile, harlequin)

Local config (6062)

Machine-local hardware/system tweaks.

ScriptWhat it does
60_network_udev_rule.shPin NICs to eth0 / wlan0 by MAC (writes a persistent-net udev rule)
61_cpu_gpu_low_freq_cron_rule.shCap CPU/GPU max frequency via a root helper + cron. GPU handling is driver-aware (amdgpu / i915 / xe / devfreq)
62_swap_16gb.shCreate a 16 GB swapfile (/opt/swapfile) and enable it

External services (90)

ScriptWhat it does
90_external_services.shTailscale (mesh VPN) + Claude Code (Anthropic CLI)

Layout

  • sdk/ — SDKs outside the daily core:
    • sdk/embedded/ — rust-embedded, esp32, arduino
    • sdk/android/, sdk/flutter/, sdk/zig/ (zls template)
  • dotfiles/ — all dotfiles, numbered, copied into place by the scripts: 01_shrc, 02_tmux.conf (by the base scripts) and the Sway desktop files 10_sway_config, 11_lockman.sh, 15_sway_zprofile, 20_kitty.conf, 30_waybar_config, 31_waybar_style.css, 35_wofi_style.css (by sway/01_sway.sh)
  • sway/ — Sway desktop setup: install/config scripts (compositor, fcitx, keyring, chrome, vscode, waydroid, etc.)
  • infra/ — infrastructure snippets
  • archlinux/ — Arch-specific notes/scripts

About

My Debian/Ubuntu bootstrapping

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages