A modular, comprehensive Fedora workstation setup tool written in Go. Can be used as a standalone CLI tool or imported as a library in other Go projects.
- 🚀 DNF optimization and system configuration
- 📦 Repository setup (RPM Fusion, COPR, third-party repos)
- 🛠️ Development tools (Rust, Go, Git configuration)
- 💻 Application installation (Slack, Zoom, Cursor, etc.)
- 🎨 Font installation (Material Symbols, Inter, etc.)
- 🎬 Media driver optimization (Intel, NVIDIA)
- 📝 Modular design - install only what you need
# Install everything
curl -fsSL https://raw.githubusercontent.com/Purian23/fedora-installer/main/install.sh | sh
# Or build from source
git clone https://github.com/Purian23/fedora-installer
cd fedora-installer
make install# Install all components
fedora-setup install --all
# Install specific components
fedora-setup install --system # DNF optimization, journald config
fedora-setup install --repos # Repository setup
fedora-setup install --devtools # Rust, Go, Git
fedora-setup install --apps # Slack, Zoom, Cursor
fedora-setup install --media # Driver swaps
fedora-setup install --fonts # Custom fonts
# Check status
fedora-setup status
# List available components
fedora-setup listimport (
"context"
"github.com/Purian23/fedora-installer/installer"
)
func main() {
ctx := context.Background()
// Optimize DNF configuration
if err := installer.OptimizeDNF(ctx); err != nil {
panic(err)
}
// Setup RPM Fusion repositories
if err := installer.SetupRPMFusion(ctx); err != nil {
panic(err)
}
// Install development tools
opts := installer.DevToolsOptions{
InstallRust: true,
InstallGo: true,
GitUser: "your-name",
GitEmail: "your-email@example.com",
}
if err := installer.InstallDevTools(ctx, opts); err != nil {
panic(err)
}
}- Fedora 39+
- Fedora Workstation
- Fedora Silverblue (limited support)
- Nobara
- Fedora Asahi Remix
- DNF configuration (parallel downloads, fastest mirror)
- Journald size limits
- System package upgrades
- RPM Fusion (Free & Non-Free)
- COPR repositories
- VS Code repository
- Third-party repositories
- Rust toolchain (rustup)
- Go compiler
- Git configuration
- Build essentials
- Slack (auto-download latest RPM)
- Zoom (auto-download latest RPM)
- Cursor (auto-download latest RPM)
- VS Code
- Chrome/Chromium
- Material Symbols (Variable font)
- Inter (Variable font)
- Fira Code
- JetBrains Mono
- Font Awesome
- Intel media driver optimization
- NVIDIA drivers (optional)
- FFmpeg with hardware acceleration
- VA-API support
# Build CLI
make build
# Run tests
make test
# Install locally
make install
# Clean build artifacts
make cleanMIT License - see LICENSE file for details
Contributions welcome! Please see CONTRIBUTING.md for guidelines.