Welcome to my NixOS configuration repository! This project uses NixOS with Flakes and Home Manager to create a reproducible and customizable system configuration.
Here's a demo
- Overview
- Project Structure
- Features
- Installation
- Usage
- Customization
- Neovim Configuration
- Architecture
- Contributing
- License
This repository contains my personal NixOS configuration, leveraging the power of Nix Flakes and Home Manager to create a fully reproducible and customizable system. It includes configurations for various tools, window managers, and applications, tailored for my specific needs.
.
├── flake.nix
├── flake.lock
├── hosts
│ └── default
│ ├── configuration.nix
│ ├── hardware-configuration.nix
│ ├── home.nix
│ └── main-user.nix
├── modules
│ ├── home-manager
│ │ ├── gui
│ │ ├── tui
│ │ └── wm
│ └── nixos
├── overlays
│ ├── default.nix
│ ├── themes.nix
│ ├── tools.nix
│ └── vim-plugins.nix
├── packages
│ ├── colorful-winsep.nix
│ ├── materia-theme-transparent.nix
│ ├── msi-perkeyrgb.nix
│ ├── neon-town-sddm.nix
│ ├── tree-sitter-cli.nix
│ └── winbar.nix
├── README.md
└── secrets
└── secrets.yaml
- NixOS: Declarative and reproducible system configuration
- Nix Flakes: Hermetic and reproducible package management
- Home Manager: User environment management
- Hyprland: Tiling Wayland compositor
- Neovim: Customized text editor configuration with a custom plugin manager
- GUI and TUI applications: Carefully selected and configured
- Custom overlays: For themes, Vim plugins, and tools
- Secrets management: Using
sops-nix
- Install NixOS on your system
- Clone this repository:
git clone https://github.com/yourusername/nixos-config.git
- Copy the
hardware-configuration.nix
from your current NixOS installation tohosts/default/
- Customize the configuration files as needed
- Apply the configuration:
sudo nixos-rebuild switch --flake .#default
To update and switch to the latest configuration:
sudo nixos-rebuild switch --flake .#default
To update home-manager configuration:
home-manager switch --flake .#tai@nixos
This configuration is highly customizable. Here are some key files you might want to modify:
flake.nix
: Add or remove inputs, modify outputshosts/default/configuration.nix
: System-wide configurationhosts/default/home.nix
: User-specific configurationmodules/
: Add or modify module configurationsoverlays/
: Customize package overlays
This setup includes a custom Neovim configuration with a bespoke plugin manager
called module_manager
. This manager provides lazy-loading capabilities and
other advanced features to optimize your Neovim experience.
For detailed information about the Neovim setup, including the module_manager
,
please refer to the Neovim README.
Key features of our Neovim setup:
- Custom plugin manager (
module_manager
) - Lazy-loading of plugins for improved performance
- Tailored configuration for various programming languages
- Integration with NixOS and Home Manager for reproducibility
Here's a high-level overview of the configuration architecture:
graph TD
A[flake.nix] --> B[NixOS Configuration]
A --> C[Home Manager Configuration]
B --> D[System-wide settings]
B --> E[Hardware configuration]
C --> F[User-specific settings]
C --> G[GUI applications]
C --> H[TUI applications]
H --> N[Neovim with module_manager]
C --> I[Window Manager]
A --> J[Overlays]
J --> K[Themes]
J --> L[Vim plugins]
J --> M[Custom tools]
A --> O[Custom packages]
Contributions are welcome! Please feel free to submit a Pull Request.
Warning
this README was generated by AI I wouldn't trust the Installation instructions.