Skip to content

burij/nixcnfg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixOS Configuration Manager

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.

Features

  • 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

Key Advantages

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

Structure

.
├── 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

Quick Start

  1. Download and execute the installation script:
curl -sSL https://raw.githubusercontent.com/burij/nixcnfg/main/install | bash
  1. 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
}
  1. 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

Management Tool

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

Common Commands

system    # Run the management TUI, if the configuration is active

Host Configuration

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)

Server Administration

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

Requirements

  • NixOS installation
  • Lua 5.1 or later
  • Git
  • GNOME desktop environment (for desktop configurations)
  • Docker (for server configurations)

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

MIT License - See LICENSE file for details

Support

Create an issue for:

  • Bug reports
  • Feature requests
  • Configuration help

About

My personal NixOS configuration-folder

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published