Declarative Fedora Configuration Manager
ReproFed is a declarative configuration manager designed specifically for Fedora Linux. It allows you to define system profiles using simple YAML files and apply them reproducibly across installations and Fedora releases.
The goal of ReproFed is to make Fedora systems predictable, reproducible, and easy to manage.
ReproFed follows a strict declarative model.
When a profile is applied:
- Only the package groups and packages declared in the profile are kept on the system
- Any undeclared package groups or packages may be removed
- This ensures a clean, predictable, and reproducible system state
This behavior is intentional and is what allows ReproFed to switch cleanly between desktop environments or between desktop and server setups without leaving leftover packages or system bloat.
If you want additional packages beyond what a profile provides, you have two supported options:
- Install packages manually after applying a profile (they may be removed on the next profile sync if not declared)
- Create a custom profile or use a community profile and declare additional package groups and extra individual packages
Official profiles provided by ReproFed are managed by the project and may be overwritten during updates.
To customize behavior:
- ❌ Do not modify official profiles directly
- ✅ Create a new custom profile based on an official one
- ✅ Or use and extend a profile from the community repository
Community profiles can be found here: ReproFed-Profiles
For long-term stability and reproducibility:
- Treat profiles as the source of truth
- Keep all desired packages declared in your profile
- Use custom or community profiles for personalization
- Declarative Configuration: Define your desired system state in simple YAML profiles.
- Reproducibility: Replicate your exact setup across reinstalls and upgrades.
- Version-Aware: Profiles respect Fedora versioning for safe and explicit upgrades.
ReproFed shifts the system management paradigm from manual tweaks to a desired-state model. Instead of manually running individual commands to install packages or change settings, you follow a simple workflow:
- Define: Choose or create a YAML profile.
- Apply: Use the ReproFed CLI to set the profile.
- Sync: ReproFed automatically brings the system into the state declared in the profile.
ReproFed officially supports and maintains the following system profiles:
- gnome – Fedora Workstation with GNOME desktop
- kde – Fedora KDE Plasma desktop
- cosmic – Fedora with the COSMIC desktop
- server – Minimal Fedora Server configuration
These profiles are part of the ReproFed repository and are tested and supported by the project.
Additional profiles may exist in the community ecosystem ReproFed-Profiles but are not considered officially supported unless explicitly listed here.
ReproFed is designed for users who want to switch between desktop environments — or between desktop and server configurations — without reinstalling Fedora from scratch.
It is especially useful for those who want to avoid leftover packages, system bloat, or unwanted components that often remain after manually removing a previous desktop environment.
This application is not intended for absolute beginners. It is aimed at users who are comfortable working with the terminal and are not afraid to manage their system using command-line tools.
Important: Before switching to a TTY, make sure to save all your work and close any open files or applications.
Switch to a TTY using Ctrl+Alt+F3 (or F2–F6).
List all profiles.
reprofed --listApply a profile (e.g., gnome).
sudo reprofed --apply gnomeTip: Short options are supported (e.g.,
sudo reprofed -a gnome).
Note: ReproFed is currently intended for advanced users and early adopters.
# Clone the repository
git clone https://github.com/ephmo/reprofed.git
cd reprofed
# Run the installer
chmod +x install.sh
sudo ./install.sh --install- Update:
sudo ./install.sh --update - Uninstall:
sudo ./install.sh --remove
Contributions, ideas, and feedback are welcome!
You may open issues or submit pull requests for:
- Bug fixes
- CLI improvements
- Documentation
- Core logic and infrastructure
The ReproFed repository only maintains officially supported profiles.
➡️ New profile contributions must be submitted to the community repository:
🔗 https://github.com/ephmo/reprofed-profiles
This separation keeps the core project stable while allowing the community to freely experiment, extend, and share additional profiles.
If you are unsure where your contribution belongs, feel free to open an issue for guidance.
This project is licensed under the MIT License. See the LICENSE file for details.
ReproFed — Your Fedora, reproducible by design.