Dotfiles and automated system setup for Fedora Linux and macOS.
▄██████▄ ▄▄▄▄███▄▄▄▄ ▄████████ ▄████████ ▄██████▄ ▄████████ ▄██████▄ ▄████████
███ ███ ▄██▀▀▀███▀▀▀██▄ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ █▀ ███ ███ ███ ███ ███ █▀ ███ █▀
███ ███ ███ ███ ███ ███ ███ ▄███▄▄▄ ███ ███ ▄███▄▄▄▄██▀ ▄███ ▄███▄▄▄
███ ███ ███ ███ ███ ▀███████████ ▀▀███▀▀▀ ███ ███ ▀▀███▀▀▀▀▀ ▀▀███ ████▄ ▀▀███▀▀▀
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███████████ ███ ███ ███ █▄
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
▀██████▀ ▀█ ███ █▀ ███ █▀ ███ ▀██████▀ ███ ███ ████████▀ ██████████
███ ███
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='[email protected]'
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)
git clone --recurse-submodules https://github.com/pixincreate/configs.git ~/Dev/.configs
cd ~/Dev/.configs/unix/fedora
./fedora-setupgit clone --recurse-submodules https://github.com/pixincreate/configs.git ~/Dev/.configs
cd ~/Dev/.configs/unix/macos
./macos-setup- 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
- 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
# Fedora
cd ~/Dev/.configs/unix/fedora
./bin/omaforge-pkg-manage
# macOS
cd ~/Dev/.configs/unix/macos
./bin/omaforge-pkg-manageFeatures:
- Add packages with availability checking
- Remove packages
- Search repositories
- List installed packages
Add packages to plain text files:
# Fedora
echo "neofetch" >> unix/fedora/packages/base.packages
# macOS
echo "neofetch" >> unix/macos/packages/brew.packagesInstall 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 appTo update to the latest version:
cd ~/Dev/.configs
git pullAfter pulling updates, migrations run automatically via .envrc (if using direnv):
# Migrations run automatically when entering the directory
cd ~/Dev/.configsOr run migrations manually:
omaforge-migrate
# or
~/Dev/.configs/unix/fedora/bin/omaforge-migrateRecommended 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 allowNow migrations run automatically whenever you cd into the directory after pulling updates.
If you need to reset or re-run specific components:
# Fedora
./bin/omaforge-reset
# macOS
./bin/omaforge-resetInteractive menu to reset:
- ZSH configuration
- Dotfiles (stow)
- Fonts
- Git & SSH
- Services (Fedora)
- Hardware (Fedora)
- Web apps (Fedora)
- Rust tools
.
├── 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
Each platform has a config.json for declarative configuration:
{
"system": {
"hostname": "your-hostname"
},
"git": {
"user_name": "Your Name",
"user_email": "[email protected]"
},
"nextdns": {
"config_id": ""
},
"rust": {
"tools": ["bat", "eza", "ripgrep", "fd-find", "zoxide", "starship"]
},
"hardware": {
"asus": { "auto_detect": true },
"nvidia": { "auto_detect": true, "prefer_open_driver": true }
}
}Package lists are plain text files (one per line, # for comments).
- Fedora Setup Guide - Fedora-specific documentation
- macOS Setup Guide - macOS-specific documentation
- 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:
exec zsh
- Add SSH key to GitHub:
cat ~/.ssh/id_ed25519.pub - Reload shell:
exec zsh
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
omaforge-pkg-manage- Interactive package manageromaforge-reset- Reset/re-run specific components
- 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
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
GPL 3.0 License