Skip to content
Izunim edited this page Feb 27, 2026 · 4 revisions

SYNX

A fast CLI tool for managing dotfiles with git-based version control, multi-machine support, and full system bootstrapping. Written in Go.

Note: The bootstrap feature is designed for Arch Linux and Arch-based distributions. Core syncing works on any Unix-like system.

Quick Start

Installation

git clone https://github.com/Blumenwagen/synx.git
cd synx
./install.sh

Requires Go and git. The installer builds the binary and symlinks it to ~/.local/bin/synx.

Basic Usage

synx                       # Sync dotfiles to GitHub
synx -r                    # Restore from GitHub
synx -s                    # Show what changed since last sync
synx -n                    # Preview sync without making changes
synx --doctor              # Run health checks

What It Does

  1. Copies your tracked ~/.config directories into ~/dotfiles/
  2. Commits and pushes them to your git remote
  3. On restore, pulls and copies them back

Synx handles symlinks, profiles, exclude patterns, and auto-reloads Hyprland when restoring hypr configs.

Documentation

  • Commands — Full command reference
  • Packages — Track installed packages (pacman + AUR)
  • Services — Track enabled systemd services
  • Profiles — Named config presets for quick switching and multi-machine tracking
  • Hooks — Custom scripts that run during sync/restore
  • Bootstrap — Provision a new machine from a declarative config
  • Doctor — Health checks and diagnostics

Configuration

File Purpose
~/.config/synx/synx.conf Tracked dotfiles (base)
~/.config/synx/exclude.conf Exclude patterns
~/.config/synx/packages.native Saved native package list
~/.config/synx/packages.foreign Saved AUR package list
~/.config/synx/services.system Saved system services list
~/.config/synx/services.user Saved user services list
~/.config/synx/bootstrap.conf Bootstrap config
~/.config/synx/profiles/ Profile overlay files
~/.config/synx/hooks/ Hook scripts
~/dotfiles/ Dotfiles git repository

Requirements

  • Go (for building)
  • Git

Clone this wiki locally