██████ ██ ██████
██ ██ ██ ██
██████ ██ ██ ███
██ ██ ██ ██ ██
██ ██ ██ ██████
Automated system setup for Fedora Linux and macOS.
eval "$(curl -fsSL https://raw.githubusercontent.com/pixincreate/rig/main/unix/setup)"The installer automatically:
- Detect your platform (Fedora or macOS)
- Clone the dotfiles repository to
~/dev/.dotfiles - Clone this repository to
~/dev/.rig - Prompt you for Git name/email, NextDNS config, etc.
- Run the complete setup
Settings are read from config.json first. Edit before running:
vim unix/fedora/config.json # or unix/macos/config.json{
"git": {
"user_name": "Your Name",
"user_email": "your@email.com"
},
"secureboot": true
}Optional: Override via environment variables:
export RIG_GIT_NAME='Your Name'
export RIG_GIT_EMAIL='your@email.com'
export RIG_NEXTDNS_ID='abc123'
export RIG_SECUREBOOT='true' # Fedora only
eval "$(curl -fsSL https://raw.githubusercontent.com/pixincreate/rig/main/unix/setup)"# macOS
git clone https://github.com/pixincreate/dotfiles.git ~/.dotfiles
git clone https://github.com/pixincreate/rig.git ~/.rig
cd ~/.rig/unix/macos
./macos-setup
# Fedora
git clone https://github.com/pixincreate/dotfiles.git ~/.dotfiles
git clone https://github.com/pixincreate/rig.git ~/.rig
cd ~/.rig/unix/fedora
./fedora-setupRig includes a unified CLI dispatcher on both Fedora and macOS. Run it from anywhere after setup:
rig # List all available commands with descriptions
rig add base neovim # Add a package to a list
rig pkg-manage # Interactive package manager
rig stow --all # Stow all dotfiles
rig install skillset # Install rig skill to skillset repo
rig webapp-install "ChatGPT" "https://chat.openai.com" "icon.png"The dispatcher uses multi-word prefix routing (inspired by omarchy):
rig install skillset dispatches to rig-install-skillset. Run rig without
arguments to see all available commands.
Each platform has its own dispatcher (unix/fedora/bin/rig and
unix/macos/bin/rig) which discovers local rig-* scripts plus shared
commands from unix/common/bin/.
Both macOS and Fedora support running specific modules:
./macos-setup --only <module-path> # macOS
./fedora-setup --only <module-path> # Fedora./macos-setup --only dotfiles/stow # Stow all packages
./macos-setup --only dotfiles/zsh # Configure ZSH
./macos-setup --only dotfiles/fonts # Install fonts
./macos-setup --only packaging/homebrew # Install Homebrew
./macos-setup --only packaging/brew # Install brew packages
./macos-setup --only packaging/cask # Install cask apps
./macos-setup --only config/git # Git & SSH
./macos-setup --only config/nextdns # NextDNS./fedora-setup --only dotfiles/stow
./fedora-setup --only dotfiles/zsh
./fedora-setup --only packaging/base # Base packages
./fedora-setup --only packaging/flatpak # Flatpak apps
./fedora-setup --only packaging/rust # Rust tools
./fedora-setup --only config/git
./fedora-setup --only config/kde # KDE Plasma defaults
./fedora-setup --only config/services # Enable services
./fedora-setup --only config/performance # Performance tuning (zram, shutdown timeout)
./fedora-setup --only config/secureboot # Secure Boot setup
./fedora-setup --only config/hardware/asus # ASUS laptop (sleep hooks, GPU power)
./fedora-setup --only config/hardware/nvidia # NVIDIA drivers
./fedora-setup --only external/skillset # External repo (skillset)# Stow all packages
rig stow --all
# or: ./bin/rig-stow --all
# Stow specific packages
rig stow config zsh # Only config and zsh
# Restow (useful after updates)
rig stow -R config # Restow config
rig stow -R --all # Restow allcd ~/.dotfiles
stow --no-folding --restow --target=$HOME home/config
stow --no-folding --restow --target=$HOME home/zsh# macOS
rig add brew neovim # Add CLI tool
rig add cask firefox # Add GUI app
./macos-setup --only packaging/brew # Install new packages
# Fedora
rig add base neovim # Add to base packages
rig add flatpak com.spotify.Client # Add Flatpak
./fedora-setup --only packaging/base # Install new packagesrig pkg-managerig resetInteractive menu to reset specific components.
# Install
rig webapp-install "App Name" "https://example.com" "icon.png"
# Remove
rig webapp-remove ChatGPT # Specific app
.
├── unix/
│ ├── setup # Common entry point (OS detection)
│ ├── common/ # Cross-platform scripts
│ │ ├── bin/ # Shared CLI commands (rig-install-skillset)
│ │ ├── helpers/ # Logging, common functions
│ │ ├── dotfiles/ # Stow, fonts, zsh
│ │ ├── config/ # Git, NextDNS, Rust
│ │ └── external/ # External git repos (skillset)
│ ├── fedora/ # Fedora-specific setup
│ │ ├── bin/ # Fedora CLI commands (rig-add, rig-stow, ...)
│ │ ├── install/
│ │ │ ├── config/ # System config (KDE, hardware, performance)
│ │ │ ├── dotfiles/ # Dotfiles management
│ │ │ └── external/ # External repos
│ │ └── packages/ # Package lists
│ └── macos/ # macOS-specific setup
│ ├── bin/ # macOS CLI commands (rig-add, rig-stow, ...)
├── windows/ # Windows configuration (see windows/README.md)
├── default/ # Default configs (skills, wallpapers)
└── docs/ # Documentation
- Git & SSH: ed25519 keys with automatic configuration
- Shell: ZSH with zgenom plugin manager
- Dotfiles: GNU Stow for symlink management
- Fonts: Iosevka, CaskaydiaCove Nerd Font, Meslo Nerd Font, JetBrains Mono, Inter, Geist
- Rust: Rustup with configurable cargo tools
- NextDNS: Automated DNS configuration
- KDE Plasma: Keybindings, Krohnkite tiling, theme defaults, KDE config symlink management
- KDE Config: Config files (
kwinrc,kdeglobals,kglobalshortcutsrc,kwinrulesrc,plasmaparc) are symlinked viakde.shso changes stay tracked in the repo - Package Management: DNF optimization, Flatpak, Rust tools
- Repositories: RPM Fusion, COPR, Terra
- Web Applications: Twitter, ChatGPT (incognito), Grok (incognito)
- Hardware Support: ASUS laptops, NVIDIA drivers
- Performance: zram, fstrim, systemd-oomd
- Services: PostgreSQL, Redis, Docker
- Security: Firmware updates, Secure Boot
- Package Management: Homebrew, Cask, Rust tools
- Applications: CLI tools and GUI applications
- System: Hostname and system preferences
Each platform has a config.json for declarative configuration:
unix/macos/config.json- macOS configurationunix/fedora/config.json- Fedora configuration
Setup logs are stored at ~/.local/state/rig/install.log.
Check logs if something fails:
tail -50 ~/.local/state/rig/install.log- Fedora Setup Guide - Fedora-specific documentation
- macOS Setup Guide - macOS-specific documentation
CC0 1.0 Universal