A comprehensive repository of configuration files (dotfiles) for a NixOS system. Contains the complete system configuration, including package management, hardware settings, and user environment configuration via Home Manager.
nixos/
├── configuration.nix # Main NixOS system configuration file
├── hardware-configuration.nix # Hardware configuration (auto-generated)
├── flake.nix # Flake configuration for reproducible builds
├── flake.lock # Lock file for Flake inputs versions
├── pkgs.nix # Package list and declarations
├── WM-DE.nix # Window manager/Desktop environment configuration
├── nvidia.nix # NVIDIA GPU configuration
├── servicesD.nix # System services configuration
└── home/ # Home Manager user configuration
└── home.nix # Main home-manager configuration file
Dotfiles are configuration files for your operating system and applications (often starting with a dot in UNIX systems). In the context of NixOS, they are Nix language files that describe:
- System configuration — which packages are installed, which services are running
- Hardware parameters — disk partitions, graphics card, other hardware specs
- User environment — configured via Home Manager for per-user setup
- Dependency versions — managed through Flakes for full reproducibility
NixOS dotfiles are declarative: you describe the desired state of your system, and NixOS makes it so.
- NixOS installed (version 24.05 or newer)
- Flakes support enabled (usually enabled by default)
- Clone the repository to your system:
sudo git clone https://github.com/IsNotAcceptable/nixos-dot /etc/nixos/
cd /etc/nixos/-
Important: The
home/folder must stay in the root of the repository alongside all other files. Do not move it! -
Customize the configuration for your system:
- Edit
configuration.nix— change hostname, users, and general settings - Update
hardware-configuration.nixif needed for your hardware - Modify
WM-DE.nixfor your preferred window manager/desktop environment - Adjust
pkgs.nixto match your software needs - Update
home/home.nixfor user-specific settings
- Edit
-
Apply the configuration:
sudo nixos-rebuild switch --flake .#emptyThe main system configuration file. Includes:
- Module imports for other configuration files
- Networking settings (hostname, DNS, NetworkManager)
- Bluetooth and driver configuration
- User accounts and group membership
- Security settings (doas instead of sudo)
- System state version for migrations
Auto-generated during NixOS installation. Contains:
- Bootloader configuration (GRUB)
- Filesystems and mount points
- Hardware detection and kernel modules
nixos-generate-config if needed
Defines the Flake inputs and outputs for reproducible builds:
- Inputs: nixpkgs versions, home-manager, nixvim, and other dependencies
- Outputs: NixOS configuration for the
emptyhost - Multi-channel nixpkgs support (unstable, stable)
System packages configuration. Lists:
- Core utilities and libraries
- Development tools and IDEs
- Multimedia applications
- Custom packages and overlays
Desktop environment and window manager configuration:
- Selection and configuration of WM/DE (Hyprland, i3, GNOME, etc.)
- Display server setup (Wayland/X11)
- Theme and appearance settings
- User interface utilities
NVIDIA GPU-specific configuration:
- Driver installation and setup
- GPU output parameters
- CUDA toolkit (if needed)
System services and daemons:
- Background service configuration
- System-wide processes
- Service auto-start settings
User-specific environment configuration:
home/home.nix— main configuration file for uservibeman- Dotfile management (copies/links user config files)
- Shell configuration (zsh, bash, fish)
- Per-application settings
cd /etc/nixos
git pull
sudo nixos-rebuild switch --flake .#emptysudo nix-collect-garbage --delete-older-than 30dsudo nixos-rebuild dry-run --flake .#emptysudo nixos-rebuild switch --flake .#empty --rollbacknix-env --list-generations -p /nix/var/nix/profiles/system- CPU: Intel Core i7-4790
- RAM: 32 GB
- GPU: NVIDIA GeForce GTX 1070 Ti
- Storage:
- HDD 232.9 GB (system root, /home, swap)
- SSD 894.3 GB (secondary storage)
-
Configuration files are in the repository root — including the
home/directory. Do not reorganize them into subdirectories! -
Replace
vibemanusername — This username appears throughout the configuration. Update it to your username:grep -r "vibeman" --include="*.nix" | grep -v flake.lock
-
State Version — The
system.stateVersion(24.05) ensures compatibility when migrating between NixOS versions. Do not change it without careful consideration. -
Flake.lock — Commit this file to git! It locks all dependency versions and ensures reproducibility across machines.
-
Rebuild frequency — You only need to run
nixos-rebuild switchwhen you make changes. Regular updates usenix flake update.
Edit pkgs.nix and add to environment.systemPackages:
environment.systemPackages = with pkgs; [
vim
git
# Add new packages here
];Edit WM-DE.nix and uncomment/select your preferred WM:
# Example: Enable Hyprland
wayland.windowManager.hyprland.enable = true;Edit home/home.nix and configure under home.packages:
home.packages = with pkgs; [
firefox
vscode
# Add user packages here
];