Skip to main content

Cross-distribution Linux setup backup, migration, restoration, and sharing tool

Project description

SetupVault

Cross-distribution Linux setup backup, migration, restoration, and sharing tool.

SetupVault GUI

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

setupvault-0.1.0.dev0.tar.gz (87.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

setupvault-0.1.0.dev0-py3-none-any.whl (128.8 kB view details)

Uploaded Python 3

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

Hashes for setupvault-0.1.0.dev0.tar.gz
Algorithm Hash digest
SHA256 222b92f3f13a952d26bf24b117f3cf4cf2a8f84348334339a109e5acbb39900b
MD5 1b16c194db517aaad3640e2774c858c7
BLAKE2b-256 fa2c620386a495dd6ba842bfe613b476ca92cad803e68aa036ec090b79248f68

See more details on using hashes here.

File details

Details for the file setupvault-0.1.0.dev0-py3-none-any.whl.

File metadata

File hashes

Hashes for setupvault-0.1.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 aba94c8999240082a224c95e8f87df6e764ed3d6d5329d7a0d50b3a5171c54aa
MD5 094de5c1f7321f741b6c11784eee1dbc
BLAKE2b-256 0b0a8303fcae4d22de7667b217cfad2477a9bcbedbe67ba562c0ee90b25160d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page