MujaOS ā Modular NixOS Configuration
Declarative. Modular. Reproducible.
A modern, flake-based NixOS configuration designed for clarity, maintainability, and reliability.
š§ Philosophy
NixOS done right.
MujaOS delivers a clean, reproducible, and modular approach to NixOS configuration built around Nix flakes. It aims to make system management predictable and maintainable by design.
Key goals:
- š” Build and rebuild identical systems ā every time
- š§© Modular architecture that's easy to customize safely
- šŖ¶ Lightweight, readable structure for long-term maintainability
- š Versioned configurations ā rollback to any state with Git
No fragile scripts. No "snowflake" systems. Just reproducible infrastructure as code.
⨠Features
- āļø Flake-based design ā modern, self-contained configuration
- š§© Modular system components ā plug-and-play modules for services and settings
- š§° User profiles ā separate user environments for clarity
- š Reproducible builds ā eliminate configuration drift
- š Multi-host support ā manage desktops, laptops, and servers from one repo
- š Security-focused defaults ā consistency meets hardening
- šŖ¶ Minimal boilerplate ā simple to read, simple to extend
š§© Requirements
Software Requirements
- Nix ā„ 2.18 with flakes enabled
- NixOS 25.05 or newer
- Git for fetching and versioning
- sudo privileges for system rebuilds
- (Optional)
nix-commandenabled in/etc/nix/nix.conf
Hardware Recommendations
- Architecture: x86_64 or aarch64
- Memory: 2 GB+ RAM (4 GB recommended)
- Storage: 10 GB free disk space minimum
- Network: Reliable Internet connection for fetching dependencies
Knowledge Requirements
- Familiarity with:
- Basic Nix expressions and the NixOS module system
- Using
nixos-rebuildandflakecommands - Git workflow basics
- General Linux system administration
š” New to NixOS? Start with Nix Pills or the NixOS Flakes Wiki.
š Installation
- Clone the repository
bashgit clone https://github.com/mujaxso/mujaos.git
cd mujaos
- Build and switch to your host configuration
bashsudo nixos-rebuild switch --flake .#laptop --show-trace
Replace laptop with your target host name (as defined under hosts/).
- Reboot your system
Once rebuilt, reboot to load the new configuration.
š§ Repository Structure
graphqlmujaos/
āāā flake.nix # Main Nix flake entrypoint
āāā flake.lock # Pin exact dependency versions
āāā hosts/ # Host-specific configurations
ā āāā laptop/ # Example laptop profile
ā āāā server/ # Example server profile
āāā modules/ # Modular components (network, desktop, etc.)
āāā users/ # User-specific configurations
āāā overlays/ # Custom Nix package overlays
āāā assets/ # Images, branding, and docs
āāā README.md # Project documentation
š§© Each folder and module is self-contained for clarity and scalability. Add or remove hosts without affecting others.
āļø Example Usage
To rebuild or switch configurations:
bashsudo nixos-rebuild switch --flake .#desktop
To update flake inputs (e.g., Nixpkgs, Home Manager):
bashnix flake update
To test configurations without applying them:
bashsudo nixos-rebuild test --flake .#server
š¤ Contributing
Contributions are always welcome!
Here's how you can help improve MujaOS:
- š Report bugs ā open an issue
- š” Suggest features ā share ideas to improve modularity or usability
- š§ Submit pull requests ā keep your commits clean and atomic
Please follow conventional commits (
feat:,fix:,docs:, etc.) and ensure your changes remain modular.
š License
This project is licensed under the MIT License.
You're free to use, modify, and distribute under the same terms.
MujaOS ā Declarative, Modular, Reproducible.
Built with ā¤ļø for NixOS and the open-source community.
