A lightweight, extensible tool for automating and replicating Arch Linux system configurations. Rekonfig helps you maintain consistent environments across multiple machines by detecting and applying system settings, packages, and themes.
-
🔍 System Detection
- Automatically detects current shell, desktop environment, and terminal
- Identifies installed packages and categorizes them
- Captures locale settings and system preferences
-
📦 Package Management
- Manages both system (pacman) and AUR packages
- Intelligent package categorization
- Validates package existence before installation
-
🎨 Theme Management
- KDE Plasma theme configuration
- Kvantum theme support
- Global theme application
-
⚙️ System Configuration
- Shell configuration
- Locale and timezone settings
- Keyboard layout preferences
- Arch Linux or compatible distribution
- Rust toolchain (for building)
- Base development tools:
sudo pacman -S base-devel git rust
-
Clone the repository:
git clone https://github.com/yourusername/rekonfig cd rekonfig -
Build the project:
cargo build --release
-
Install the binary (optional):
sudo install -Dm755 target/release/rekonfig /usr/local/bin/rekonfig
Detect current system settings and create a configuration file:
rekonfig init [--hard]The --hard flag includes all installed packages, including dependencies.
Apply settings from a configuration file:
rekonfig config.tomlApply specific sections only:
rekonfig config.toml -s system # Apply only system settings
rekonfig config.toml -s packages # Install only packages
rekonfig config.toml -s themes # Configure only themesAdd a new package to the configuration:
rekonfig add-package pacman neovim development # Add a pacman package
rekonfig add-package yay paru-bin system # Add an AUR packageRekonfig uses TOML for configuration. Here's an example config.toml:
[system]
shell = "zsh"
desktop_environment = "plasma"
terminal = "konsole"
terminal_font = "Fira Code"
icons = "Papirus-Dark"
theme = "Breeze-Dark"
splash_screen = "Breeze"
login_screen = "SDDM"
[locale]
language = "en_US.UTF-8"
timezone = "UTC"
keyboard_layout = "us"
[packages]
system = ["base", "linux", "nano"]
development = ["git", "neovim", "docker"]
graphics = ["gimp", "inkscape"]
[themes]
kvantum = "Sweet"
global = "Breeze-Dark"
[widgets]
- "Event Calendar"
- "Notes".
├── Cargo.toml # Project manifest
├── src/
│ ├── main.rs # Entry point and CLI
│ ├── commands/ # Command implementations
│ │ ├── init.rs # System detection
│ │ ├── apply.rs # Configuration application
│ │ └── add_package.rs # Package management
│ ├── config/ # Configuration structures
│ │ └── mod.rs # TOML configuration
│ ├── system/ # System interaction
│ │ └── mod.rs # System detection functions
│ └── utils/ # Utility functions
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
-
Package Installation Fails
- Check internet connection
- Verify package exists in repositories
- Run
sudo pacman -Syuto update system
-
Theme Application Fails
- Ensure KDE/Kvantum is installed
- Verify theme package names
- Check theme file permissions
-
System Detection Issues
- Verify required tools are installed
- Check environment variables
- Run with elevated privileges if needed
For issues and feature requests, please create an issue in the GitHub repository.