DistroForge
A TUI application that automates the boring parts of a fresh Linux install — package setup, dotfile sync, and post-install configuration in one reproducible script.
- Python
- CLI
- Linux
- Automation
- Developer Tooling
A TUI application that automates the boring parts of a fresh Linux install — package setup, dotfile sync, and post-install configuration in one reproducible script.
Every time I reinstall a Linux distro — a new laptop, a fresh VM, a broken setup — I lose an whole day to the same routine: install the same package manager extras, pull the same dotfiles, re-enable the same systemd services, and remember which neovim plugins I actually use.
The existing solutions are either too heavy (full configuration management like Ansible) or too fragile (a personal shell script that breaks the moment a package name changes upstream).
DistroForge is a TUI application that has been developed with Python to brings a fresh install of a linux machine to a beast, for version 2.0.0, it don't get declarative YAML files, the development tools will be asked during execution process. currently identify all major Linux Distros and their families like Fedora, Debian and Ubuntu based and Arch like CachyOS.
It's intentionally not a configuration management framework. The goal is "post-install, in one command, without yak-shaving" — not "manage a fleet of servers."
apt, pacman, and dnf so the same profile
works across distros.The CLI is a thin orchestration layer over a few focused modules:
profile/ — parses and validates the YAML config (Pydantic schemas, fails fast on
typos).distro/ — detects the host and picks the right package-manager adapter.steps/ — each step (packages, dotfiles, services, shell) implements the same
plan() → apply() interface so dry-run is just "plan only."cli/ — click entrypoint, logging, and exit handling.Every step is unit-tested against fake adapters; the integration tests run inside throwaway Docker containers so I don't have to trash a real machine to verify behavior.
click, pydantic, rich, and pytestDistroForge is a work in progress. The current focus is making the package and dotfile steps rock-solid before adding more.
distroforge export to snapshot a working machine back into a profileIf you have ideas, the repo is the best place — issues and PRs welcome.