Skip to main content

TuxSync

Profile Sync for Linux Users - Like Apple's Migration Assistant or Chrome Sync, but for your Linux packages and configurations.

Features

  • Multi-Distro Support: Works on Ubuntu/Debian (apt), Fedora (dnf), and Arch (pacman)
  • Privacy First: Choose between GitHub Gists (convenient) or your own custom server (private)
  • Loose Coupling: Uses tuxmate-cli as an external executor - no embedded code
  • Smart Scanning: Only backs up user-installed packages, filters out libraries
  • Magic Restore: One-liner command to restore your setup on any Linux machine

Quick Start

Installation

```bash

Clone the repository

git clone https://github.com/Gururagavendra/tuxsync.git cd tuxsync

Install with uv (recommended)

uv sync

Or use the wrapper script

chmod +x tuxsync.sh ./tuxsync.sh help ```

Create a Backup

```bash

Interactive mode (recommended)

./tuxsync.sh backup

Or using uv

uv run tuxsync backup

Skip bashrc backup

uv run tuxsync backup --no-bashrc

Direct to GitHub (non-interactive)

uv run tuxsync backup --github --non-interactive ```

Restore on New Machine

```bash

Using the magic command (shown after backup)

curl -sL https://raw.githubusercontent.com/Gururagavendra/tuxsync/main/restore.sh | bash -s -- <GIST_ID>

Or install TuxSync and restore

uv run tuxsync restore <GIST_ID>

Dry run to see what would happen

uv run tuxsync restore <GIST_ID> --dry-run

Skip package installation, only restore bashrc

uv run tuxsync restore <GIST_ID> --skip-packages ```

List Your Backups

```bash uv run tuxsync list ```

Requirements

The wrapper script (`tuxsync.sh`) will help install these if missing.

Architecture

TuxSync follows a loose coupling principle:

``` ┌─────────────────────────────────────────────────────────┐ │ TuxSync │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Scanner │ │ Storage │ │ Restore │ │ │ │ (Brain) │ │ Backend │ │ Manager │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ [apt/dnf/ [GitHub/ [tuxmate-cli] │ │ pacman] Custom] Executor │ └─────────────────────────────────────────────────────────┘ ```

  • TuxSync = The Brain (orchestrates everything)
  • tuxmate-cli = The Hands (does the actual package installation)
  • If tuxmate-cli isn't installed, TuxSync will fail gracefully with installation instructions

Configuration

TuxSync creates backups with two files:

`tuxsync.yaml`

```yaml version: "1.0" created_at: "2024-12-28T10:30:00Z" distro: "Ubuntu" distro_version: "24.04" package_manager: "apt" package_count: 142 packages:

  • vim
  • git
  • docker.io
  • nodejs

... more packages

has_bashrc: true ```

`bashrc`

Your raw `~/.bashrc` content (if backed up).

Custom Server API

If using `--server`, your server should implement:

POST `/api/backup`

```json { "metadata": { /* tuxsync.yaml content */ }, "bashrc": "# .bashrc content..." } ``` Response: `{"backup_id": "unique-id"}`

GET `/api/backup/{backup_id}`

Response: ```json { "metadata": { /* tuxsync.yaml content */ }, "bashrc": "# .bashrc content..." } ```

Development

```bash

Install dev dependencies

uv sync --all-extras

Run tests

uv run pytest

Lint

uv run ruff check src/

Type check

uv run mypy src/ ```

License

MIT License - See LICENSE for details.

  • tuxmate-cli - Cross-distro package installer CLI (used as executor)

Metadata

Release files for tuxsync 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tuxsync 0.1.0
File Size Uploaded Provenance Actions
tuxsync-0.1.0.tar.gz 12.9 kB Without provenance Details for tuxsync-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for tuxsync 0.1.0
File Interpreter ABI Platform Actions
tuxsync-0.1.0-py3-none-any.whl Python 3 none any Details for tuxsync-0.1.0-py3-none-any.whl

Total release size: 29.4 kB

Release files / tuxsync-0.1.0.tar.gz

Download URL tuxsync-0.1.0.tar.gz
Size 12.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b732a4389f859b457c8a41d030de0177f0ad443f36c0ca814e2e3e4708061de8
BLAKE2b-256 checksum
How to use checksums
1eb9f229400e1350bba125f9caa16fea6f6b3c2b5285f06f4d07b7356ade298d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Release files / tuxsync-0.1.0-py3-none-any.whl

Download URL tuxsync-0.1.0-py3-none-any.whl
Size 16.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee8df2533035067161b6fe3cc3581dcf97b0f1df82ff7ac2ea52100227f58d5c
BLAKE2b-256 checksum
How to use checksums
e698d7965fd00740f3bb47b32a22e3755cc9304b6dc980ec1a3a3d032917ae7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.7

Security for tuxsync 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page