A modular NixOS configuration system with a Lua-based management tool, focused on GNOME desktop environment with development tools and multimedia applications.
WARNING: Do not apply or run these scripts on a production system, as it may result in a broken NixOS installation. This repository is intended to serve as a reference for creating your own configuration, not as a production-ready solution.
- Unified configuration management system that handles:
- NixOS system configuration
- Flatpak applications
- User dotfiles
- Channel management
- Single-command rebuild of the entire system
- Interactive system management tool
- Multi-host configuration support
- Automated system setup and maintenance
- Development environment configuration
- Application-specific settings management
- Server administration tools
This configuration manager stands out by providing:
- Complete system management without requiring home-manager or flakes
- One cohesive tool to handle system packages, Flatpaks, and dotfiles
- Simplified rebuilds that sync all configuration aspects simultaneously
- Lua-based management that's both powerful and easy to understand
.
├── install # Installation script
├── config.nix # Main shared configuration
├── hosts/ # Host-specific configurations
│ ├── box/ # Server configuration
│ │ ├── config.nix
│ │ └── hardware.nix
│ └── [other-hosts]/ # Additional host configs
├── setup/ # Setup system
│ ├── main.lua # Main management tool
│ ├── conf.lua # Configuration settings
│ ├── lib.lua # Helper functions
│ └── dotfiles.lua # Dotfiles manager
├── scripts/ # System management scripts
└── dotfiles/ # Application configurations
└── index.lua # Configuration index
- Download and execute the installation script:
curl -sSL https://raw.githubusercontent.com/burij/nixcnfg/main/install | bash
- Configure settings in
setup/conf.lua
:
conf = {
host = nil, # Set hostname for new machines
link_to_home = false, # Link system configuration
add_unstable = false, # Add unstable channel
register_host = false, # Create new host configuration
userconfig = true, # Link dotfiles
rmdirs = true, # Remove default directories
flatpaks = true, # Install configured Flatpaks
rebuild = true # Rebuild system after changes
}
- Run the management tool to rebuild everything at once:
cd setup
nix-shell
lua main.lua
This single command will:
- Update NixOS channels
- Sync system configuration
- Manage Flatpak applications
- Deploy dotfiles
- Rebuild the complete system
The interactive management tool provides the following functions:
- System updates and rebuilds
- Host configuration management
- Dotfiles linking and export
- Server administration with Docker support
- Configuration editing
- Flatpak management
- System maintenance
- Logging and debugging support
- Type checking for critical functions
system # Run the management TUI, if the configuration is active
Each host maintains its own configuration in hosts/<hostname>/
:
- Hardware-specific settings
- Role-based configurations
- Service settings
- Package selections
- User configurations
- Docker compose configurations (for servers)
For server configurations:
- Docker container management with automated updates
- Service deployment and monitoring
- Backup handling
- Security settings
- Storage management
- Blog deployment tools
- Automated maintenance scripts
- NixOS installation
- Lua 5.1 or later
- Git
- GNOME desktop environment (for desktop configurations)
- Docker (for server configurations)
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - See LICENSE file for details
Create an issue for:
- Bug reports
- Feature requests
- Configuration help