████▄ ▄████▄ ▄████▄ ██▄ ▄██ ▄█████ ████▄ ▄████▄ ██ ██
██ ██ ██ ██ ██ ██ ██ ▀▀ ██ ▀▀▀▄▄▄ ██ ██ ██▄▄██ ▀██▀
████▀ ▀████▀ ▀████▀ ██ ██ █████▀ ████▀ ██ ██ ██
▄█████ ██ ██ ▄█████ ██████ ██████ ██▄ ▄██
▀▀▀▄▄▄ ▀██▀ ▀▀▀▄▄▄ ██ ██▄▄ ██ ▀▀ ██
█████▀ ██ █████▀ ██ ██▄▄▄▄ ██ ██
A one-command Void Linux bootstrapper for a fresh post-install system. It supports both official Void variants: glibc and musl.
This repository is intentionally a meta-repo. It does not vendor the individual
projects or require git submodules. The installer clones each selected module
from GitHub, installs only the Void packages needed by those modules, builds the
suckless tools, and installs the dotfiles through their own installer. It also
applies the tracked /etc overlay so a fresh Void base install can be brought
back to the same DOOMSDAY baseline with less manual setup.
| Flag | Module name | Installs | Source |
|---|---|---|---|
--system |
Void system | Package manifests and tracked /etc files |
This repo |
--dots |
DoomDots | Shell, X11, editor, media, browser, and helper-script dotfiles | iamb4uc/DoomDots |
--desktop |
Desktop bundle | DoomWM, DoomMenu, DoomTerm, DoomStatus, and DoomLock | All desktop module sources |
--wm |
DoomWM | doomwm window manager |
iamb4uc/DoomWM |
--menu |
DoomMenu | doommenu, doommenu_run, doommenu_path, and stest |
iamb4uc/DoomMenu |
--term |
DoomTerm | doomterm terminal build |
iamb4uc/DoomTerm |
--status |
DoomStatus | doomstatus bar status monitor |
iamb4uc/DoomStatus |
--lock |
DoomLock | doomlock screen locker |
iamb4uc/DoomLock |
--all |
All modules | Every module above | All sources above |
With no module flag, install.sh defaults to --all.
Straight install:
curl -fsSL https://raw.githubusercontent.com/iamb4uc/DOOMSDAY_SYSTEM/main/install.sh | shFor unattended installs:
curl -fsSL https://raw.githubusercontent.com/iamb4uc/DOOMSDAY_SYSTEM/main/install.sh | sh -s -- --yes --allInstall only selected modules:
curl -fsSL https://raw.githubusercontent.com/iamb4uc/DOOMSDAY_SYSTEM/main/install.sh | sh -s -- --desktop
curl -fsSL https://raw.githubusercontent.com/iamb4uc/DOOMSDAY_SYSTEM/main/install.sh | sh -s -- --dots --termLocal checkout:
git clone https://github.com/iamb4uc/DOOMSDAY_SYSTEM.git
cd DOOMSDAY_SYSTEM
./install.sh--system install Void packages and tracked /etc files
--dots install dotfiles
--desktop install the interactive desktop modules
--wm install DoomWM
--menu install DoomMenu
--term install DoomTerm
--status install DoomStatus
--lock install DoomLock
--all install everything, also the default
-y, --yes run non-interactively
--dry-run print planned actions without changing the system
--list list modules and exit
--uninstall uninstall selected modules
--no-verify skip post-install command verification
--no-deps skip package-manager dependency installation
--no-etc skip tracked /etc file installation
--no-update do not git pull existing module checkouts
--build-root DIR clone/build modules under DIR
--packages-dir DIR read Void package manifests from DIR
--etc-root DIR read tracked /etc files from DIR
--prefix DIR install C projects under DIR, default /usr/local
--dotfiles-prefix DIR install dotfile symlinks under DIR, default $HOME
--repo-base URL use a different GitHub/user base URL
Legacy aliases --sst, --slstatus, and --slock still work, but the
preferred family flags are --term, --status, and --lock.
This meta-repo ships manual pages for the installer and each named module:
doomsday-system(1)
doomdots(1)
doomwm(1)
doommenu(1)
doomterm(1)
doomstatus(1)
doomlock(1)
The module repositories may also install command manual pages such as
doomwm(1), doommenu(1), doomterm(1), doomstatus(1), and doomlock(1).
Pull requests use Void Linux containers only as test harnesses. The end goal of
the repo is still the real-machine bootstrap flow above. CI runs the bootstrap
checks against both voidlinux/voidlinux and voidlinux/voidlinux-musl.
- shell syntax checks for the installer
shellcheck, when available- manual page rendering with
mandoc - package availability checks for every manifest entry
- installer dry-run smoke tests
- cross-repo module checks that clone, build, install into a temporary prefix,
and verify
doomwm,doommenu,doomterm,doomstatus, anddoomlock - DoomDots
make lint
The default build root is:
${XDG_CACHE_HOME:-$HOME/.cache}/doomsday-systemThis repo is Void Linux exclusive and targets both glibc and musl installs. The
package manifests live in packages/void:
00-buildhas compiler, bash, git, shellcheck, mandoc, and X11/PAM headers.10-sessionhas the X11 session, service, audio, network, and compositor packages used by DoomDots and DoomWM.20-workflowhas applications and CLI tools referenced by DoomWM bindings, DoomDots scripts, and editor/media configs.
Tracked /etc files live under etc and are installed to matching absolute
paths. For example, etc/issue installs to /etc/issue.
Dependency installation can be skipped with --no-deps, and /etc installation
can be skipped with --no-etc.
Before installing the manifest packages, the bootstrap updates xbps and then
updates the base Void system. This avoids partial-upgrade dependency conflicts
on fresh installs.
Preview an install:
./install.sh --dry-run --allList modules:
./install.sh --listUninstall selected modules:
./install.sh --uninstall --desktopBy default, the installer verifies selected command modules after install:
doomwm, doommenu, doomterm, doomstatus, and doomlock.
The script can make these kinds of changes:
- clones module repositories into the build root
- installs Void packages with
xbps-install - installs tracked files from
etcinto/etc - installs compiled tools into
PREFIX, usually/usr/local - symlinks dotfiles into
DOTFILES_PREFIX, usually$HOME
The dotfile installer backs up conflicts before linking. Read the module repositories before installing on a machine you care about, especially the dotfiles and helper scripts.
This repo should stay small:
README.md project overview and usage
install.sh installer for all modules
packages/void/ Void package manifests
etc/ tracked /etc overlay
man/ meta manual pages
.gitignore ignores local module checkouts and build outputs
The actual desktop configuration lives in the linked module repositories.