A modern, flake-based NixOS configuration designed for clarity, maintainability, and reliability.
π¦ Installation β’ β¨ Features β’ π§ Philosophy β’ π§© Requirements β’ π§ Structure β’ π€ Contributing β’ π License
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.
- βοΈ 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
Before you begin, make sure your environment meets the following:
- 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
- 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
- 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.
-
Clone the repository
git clone https://github.com/mujaxso/mujaos.git cd mujaos -
Build and switch to your host configuration
sudo nixos-rebuild switch --flake .#laptop --show-traceReplace
laptopwith your target host name (as defined underhosts/). -
Reboot your system
Once rebuilt, reboot to load the new configuration.
mujaos/
βββ 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.
To rebuild or switch configurations:
sudo nixos-rebuild switch --flake .#desktopTo update flake inputs (e.g., Nixpkgs, Home Manager):
nix flake updateTo test configurations without applying them:
sudo nixos-rebuild test --flake .#serverContributions 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.
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.