Welcome to my NixOS configuration repository! This setup is based on the fantastic Misterio77/nix-starter-configs template, designed to help users get started with NixOS configuration in a simple and structured way.
This repository contains my personal configurations for NixOS, organized and managed using the Nix package manager. It's structured in a modular way, making it easy to customize, manage, and extend my system.
- Declarative System Configuration: Manage every aspect of the system, from packages to services, all from a single configuration file.
- Modular Setup: Organized and split into multiple modules for better maintainability.
- Multi-User Support: Configurations for both system-wide settings and individual user profiles.
- Flakes: Powered by Nix Flakes for reproducible builds and easier management of dependencies.
The following structure represents my NixOS configuration files, organized into relevant directories for modularity and maintainability:
├── home-manager # Home-manager configurations for user environments
├── modules # Custom NixOS modules
├── nixos # System-wide NixOS configurations
├── overlays # Overlays for customizing package sets
├── pkgs # Custom packages and Nix expressions
├── flake.lock # Lock file for Nix Flakes (ensures reproducibility)
├── flake.nix # Nix Flakes configuration
└── shell.nix # Development shell setup
home-manager/
: Configures home environments and packages for each user.modules/
: Custom NixOS modules for specific configurations or services.nixos/
: Main NixOS configuration directory (e.g., system-wide settings, hardware configurations).overlays/
: Nix overlays for extending and customizing package sets.pkgs/
: Custom Nix packages and expressions tailored for specific needs.flake.lock
: Lock file generated by Nix Flakes to ensure reproducible builds.flake.nix
: Defines the inputs, outputs, and system configurations using Nix Flakes.shell.nix
: Configuration for setting up the development environment shell.
To use this setup, follow these steps:
-
Clone the Repository:
git clone https://github.com/rshohruh/nixos-config.git cd nixos-config
-
Install NixOS: Follow the official NixOS installation guide.
-
Set Up the System:
Link or copy the configuration files to your NixOS installation. Run the following to apply the configuration:
sudo nixos-rebuild switch --flake .
-
Manage Home Configurations:
Ensure you have home-manager installed. Apply home-manager configurations:
home-manager switch --flake .
This setup is designed to be modular and easy to extend. Here are a few customization options:
- System Packages: Add or remove system-wide packages by editing the
nixos/configuration.nix
file or creating additional modules innixos/modules
. - User Packages: Customize user environments by editing the
home/
directory with user-specific packages and configurations. - Services: Enable or disable system services (e.g., SSH, Docker, etc.) in the
nixos/modules
directory.
- NixOS: The Linux distribution with a declarative configuration.
- Nix: The package manager used by NixOS.
- Nix Flakes: Optional but highly recommended for better dependency management.
- Home-Manager: For managing user profiles, including packages, dotfiles, and configurations.
This configuration is based on the nix-starter-configs template by Misterio77. Special thanks for creating such an easy-to-use and modular starter configuration!
Feel free to add screenshots of your desktop environment, terminal setup, or any other customizations here.
This repository is licensed under the MIT License. See the LICENSE file for more information.
Feel free to fork or use this setup as a starting point for your own NixOS configurations. Contributions and suggestions are always welcome!