Cross-distribution Linux setup backup, migration, restoration, and sharing tool
Project description
SetupVault
Cross-distribution Linux setup backup, migration, restoration, and sharing tool.
Features
- Export — capture system configuration (packages, dotfiles, services) into a portable JSON snapshot
- Restore — apply a snapshot on the same or a different distribution (cross-distro package mapping built-in)
- Validate — check snapshots for schema correctness and semantic issues
- Report — generate human-readable reports in Markdown, JSON, or HTML
- Diff — compare two snapshots to see what changed
- Doctor — run environment diagnostics to verify the tool is ready
- Third-party package detection — identify packages installed outside the official repositories
- HTML reports — standalone self-contained HTML pages with embedded CSS
- Dotfile full backup — file contents stored as base64 inside the snapshot
Supported distributions: Arch Linux, Debian, Fedora, Ubuntu, openSUSE.
Installation
pip install setupvault
For the GUI:
pip install "setupvault[gui]"
Development
git clone <repo>
cd setupvault
python -m venv .venv && source .venv/bin/activate
pip install -e ".[gui,dev]"
Usage
CLI
setupvault --help
setupvault export --profile full
setupvault restore /path/to/snapshot.json
setupvault info /path/to/snapshot.json
setupvault validate /path/to/snapshot.json
setupvault report /path/to/snapshot.json --format html
setupvault doctor
setupvault diff left.json right.json
setupvault list
GUI
setupvault gui
# or
setupvault-gui
# With a specific theme:
setupvault gui --style dark
The GUI provides the same functionality through a point-and-click interface with sidebar navigation, persistent settings (theme, accent color, density), and keyboard shortcuts (Ctrl+1..9).
Keyboard shortcuts
| Shortcut | Panel |
|---|---|
| Ctrl+1 | Export |
| Ctrl+2 | Restore |
| Ctrl+3 | Info |
| Ctrl+4 | Validate |
| Ctrl+5 | Report |
| Ctrl+6 | Doctor |
| Ctrl+7 | Diff |
| Ctrl+8 | List |
| Ctrl+9 | Settings |
Development
# Lint
ruff check src/ tests/
# Format
ruff format src/ tests/
# Type check
mypy src/ --strict
# Test (CLI + core)
python -m pytest tests/ --ignore=tests/gui/ -v
# Test (GUI only, headless)
QT_QPA_PLATFORM=offscreen python -m pytest tests/gui/ -v
# All tests
python -m pytest tests/ -v
Project structure
src/setupvault/
cli/ CLI commands and argument parsing
core/ Domain models (snapshot, package, system, dotfile)
distro_adapters/ Distribution-specific logic (pacman, apt, dnf, zypper)
storage/ Snapshot read/write (JSON, gzip)
services/ Business logic (export, restore, validate, etc.)
reports/ Report generation (markdown, json, html)
doctor/ Environment diagnostics
gui/ PySide6 graphical interface
panels.py Command panels (Export, Restore, Info, Validate, etc.)
mainwindow.py Sidebar navigation, status bar, theme management
styles.py Light/dark theme definitions and QSS generation
settings.py Persisted GUI preferences
widgets.py Reusable widgets (FilePicker, ComboField, LoadingIndicator, HtmlViewer)
worker.py QThread-based async worker
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file setupvault-0.1.0.dev0.tar.gz.
File metadata
- Download URL: setupvault-0.1.0.dev0.tar.gz
- Upload date:
- Size: 87.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
222b92f3f13a952d26bf24b117f3cf4cf2a8f84348334339a109e5acbb39900b
|
|
| MD5 |
1b16c194db517aaad3640e2774c858c7
|
|
| BLAKE2b-256 |
fa2c620386a495dd6ba842bfe613b476ca92cad803e68aa036ec090b79248f68
|
File details
Details for the file setupvault-0.1.0.dev0-py3-none-any.whl.
File metadata
- Download URL: setupvault-0.1.0.dev0-py3-none-any.whl
- Upload date:
- Size: 128.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aba94c8999240082a224c95e8f87df6e764ed3d6d5329d7a0d50b3a5171c54aa
|
|
| MD5 |
094de5c1f7321f741b6c11784eee1dbc
|
|
| BLAKE2b-256 |
0b0a8303fcae4d22de7667b217cfad2477a9bcbedbe67ba562c0ee90b25160d5
|