NOTICE
THIS REPO HAS BEEN SPLIT INTO 2 SEPARATE REPOS:
Dotfiles and automated system setup for Fedora Linux and macOS.
▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄██████▄ ▄████████ ▄██████▄ ▄████████
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███ ███ █▀ ███ █▀
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄ ███ ███ ▄███▄▄▄▄██▀ ▄███ ▄███▄▄▄
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀ ███ ███ ▀▀███▀▀▀▀▀ ▀▀███ ████▄ ▀▀███▀▀▀
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ ███ ███ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ▀██████▀ ███ ███ ████████▀ ██████████
███ ███
Quick Start
One-line Installer
eval "$(curl -fsSL https://raw.githubusercontent.com/pixincreate/configs/main/unix/setup)"
The installer automatically:
- Detect your platform (Fedora or macOS)
- Clone the repository to
~/Dev/.configs - Prompt you for Git name/email, NextDNS config, etc.
- Run the complete setup
Optional: Skip prompts by exporting environment variables:
export OMAFORGE_GIT_NAME='Your Name' export OMAFORGE_GIT_EMAIL='your@email.com' export OMAFORGE_NEXTDNS_ID='abc123' export OMAFORGE_SECUREBOOT='true' # Fedora only eval "$(curl -fsSL https://raw.githubusercontent.com/pixincreate/configs/main/unix/setup)"
Supported environment variables:
OMAFORGE_GIT_NAME- Your Git nameOMAFORGE_GIT_EMAIL- Your Git emailOMAFORGE_NEXTDNS_ID- NextDNS configuration IDOMAFORGE_SECUREBOOT- Set totrueto enable Secure Boot setup (Fedora)
Manual Installation
Fedora
git clone --recurse-submodules https://github.com/pixincreate/configs.git ~/Dev/.configs cd ~/Dev/.configs/unix/fedora ./fedora-setup
macOS
git clone --recurse-submodules https://github.com/pixincreate/configs.git ~/Dev/.configs cd ~/Dev/.configs/unix/macos ./macos-setup
Features
Common (Both Platforms)
- Git & SSH: ed25519 keys with automatic configuration
- Shell: ZSH with zgenom plugin manager
- Dotfiles: GNU Stow for symlink management
- Fonts: Nerd Fonts and custom fonts
- Rust: Rustup with configurable cargo tools
- NextDNS: Automated DNS configuration
Fedora-Specific
- 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
macOS-Specific
- Package Management: Homebrew, Cask, Rust tools
- Applications: CLI tools and GUI applications
- System: Hostname and system preferences
Package Management
Interactive Package Manager
# Fedora cd ~/Dev/.configs/unix/fedora ./bin/omaforge-pkg-manage # macOS cd ~/Dev/.configs/unix/macos ./bin/omaforge-pkg-manage
Features:
- Add packages with availability checking
- Remove packages
- Search repositories
- List installed packages
Manual Package Management
Add packages to plain text files:
# Fedora echo "neofetch" >> unix/fedora/packages/base.packages # macOS echo "neofetch" >> unix/macos/packages/brew.packages
Web Applications (Fedora)
Install web apps that appear in your application menu:
./bin/omaforge-webapp-install "App Name" "https://example.com" "https://example.com/icon.png" # With incognito mode ./bin/omaforge-webapp-install "App" "https://example.com" "icon.png" \ "omaforge-launch-browser --private https://example.com/"
Pre-installed web apps:
- Twitter (X) - Standard mode
- ChatGPT - Incognito mode
- Grok - Incognito mode
Remove web apps:
./bin/omaforge-webapp-remove # Interactive ./bin/omaforge-webapp-remove ChatGPT # Specific app
Updating Omaforge
To update to the latest version:
cd ~/Dev/.configs git pull
Migrations
After pulling updates, migrations run automatically via .envrc (if using direnv):
# Migrations run automatically when entering the directory cd ~/Dev/.configs
Or run migrations manually:
omaforge-migrate # or ~/Dev/.configs/unix/fedora/bin/omaforge-migrate
Recommended setup with direnv:
# Install direnv (Fedora) sudo dnf install direnv # Add to your shell config (~/.zshrc) eval "$(direnv hook zsh)" # Allow direnv in the configs directory cd ~/Dev/.configs direnv allow
Now migrations run automatically whenever you cd into the directory after pulling updates.
Reset Components
If you need to reset or re-run specific components:
# Fedora ./bin/omaforge-reset # macOS ./bin/omaforge-reset
Interactive menu to reset:
- ZSH configuration
- Dotfiles (stow)
- Fonts
- Git & SSH
- Services (Fedora)
- Hardware (Fedora)
- Web apps (Fedora)
- Rust tools
Project Structure
.
├── README.md
├── LICENSE
├── home/ # Dotfiles managed by GNU Stow
│ ├── config/ # Application configs (~/.config/)
│ ├── git/ # Git configuration
│ ├── ssh/ # SSH configuration
│ ├── zsh/ # ZSH with zgenom
│ ├── local/ # Local binaries
│ └── Pictures/ # Wallpapers
├── fonts/ # Font files
└── unix/
├── setup # One-line installer
├── common/ # Cross-platform scripts
│ ├── config/ # git.sh, nextdns.sh, rust.sh
│ ├── dotfiles/ # directories.sh, stow.sh, fonts.sh, zsh.sh
│ └── helpers/ # platform.sh
├── fedora/
│ ├── fedora-setup
│ ├── config.json
│ ├── bin/ # omaforge-* utilities
│ ├── install/ # Modular installation scripts
│ └── packages/ # Plain text package lists
└── macos/
├── macos-setup
├── config.json
├── bin/ # omaforge-* utilities
├── install/ # Modular installation scripts
└── packages/ # Plain text package lists
Configuration
Each platform has a config.json for declarative configuration:
{
"system": {
"hostname": "your-hostname"
},
"git": {
"user_name": "Your Name",
"user_email": "your@email.com"
},
"nextdns": {
"config_id": ""
},
"hardware": {
"asus": { "auto_detect": true },
"nvidia": { "auto_detect": true, "prefer_open_driver": true }
}
}Package lists are plain text files (one per line, # for comments).
Documentation
- Fedora Setup Guide - Fedora-specific documentation
- macOS Setup Guide - macOS-specific documentation
Post-Installation
Fedora
- Logout/login - Group changes take effect (docker, etc.)
- Reboot - If NVIDIA drivers were installed
- Add SSH key to GitHub:
cat ~/.ssh/id_ed25519.pub - Reload shell:
macOS
- Add SSH key to GitHub:
cat ~/.ssh/id_ed25519.pub - Reload shell:
Utilities
Fedora
omaforge-pkg-manage- Interactive package manageromaforge-webapp-install- Install web applicationsomaforge-webapp-remove- Remove web applicationsomaforge-launch-browser- Launch browser (supports Zen, Brave, Helium)omaforge-launch-webapp- Launch web app in app modeomaforge-reset- Reset/re-run specific components
macOS
omaforge-pkg-manage- Interactive package manageromaforge-reset- Reset/re-run specific components
Architecture
- Modular: Small, single-purpose scripts organized by phase
- Declarative: JSON-based configuration
- Idempotent: Safe to run multiple times
- Cross-platform: Shared common scripts where possible
Installation phases:
- Preflight - System checks and validation
- Repositories - Add package repositories
- Packaging - Install packages (DNF, Flatpak, Homebrew, Rust)
- Config - System configuration (Git, SSH, services, hardware)
- Dotfiles - Deploy dotfiles and configure shell
- Post-install - Cleanup and final steps
Contributing
This is a personal configuration repository, but feel free to:
- Fork and customize for your own use
- Report issues or suggest improvements
- Submit pull requests for bug fixes
License
GPL 3.0 License