README.md
November 15, 2025 · View on GitHub
My NixOS Configuration
Screenshots

More screenshots

Table of Contents
Installation
Note
Before proceeding with the installation, check these files and adjust them for your system:
hosts/Default/variables.nix: Contains host-specific variables.hosts/Default/host-packages.nix: Lists installed packages for the host.hosts/Default/configuration.nix: Module imports for the host and extra configuration.
You can install on a running system or from the NixOS live installer. Get the minimal ISO from the NixOS website.
Installation Steps
- Clone the Repository:
git clone https://github.com/Sly-Harvey/NixOS.git ~/NixOS
- Change Directory:
cd ~/NixOS
- Run the Installer:
./install.sh
The install and rebuild scripts automate the setup process, including hosts, username, and applying the configuration. It also automatically generates the hardware-configuration.nix file based on your system's detected hardware, eliminating the need to manually generate it.
Usage
Managing Hosts
Method 1: Automatic - run the installer again to select or create another host:
./install.sh
Method 2: Manual:
-
Copy
hosts/Defaultto a new directory (e.g.,hosts/Laptop) -
Edit the new host's
variables.nixandhost-packages.nix -
Add the host to
flake.nix:nixosConfigurations = { Default = mkHost "Default"; Laptop = mkHost "Laptop"; }; -
Track the new host with git:
git add hosts/Laptop
- Rebuild with the new hostname using either
nixos-rebuildornh(see Rebuilding below). Once rebuilt, any rebuilding method can be used, as the host name will be implicitly recognised.
Rebuilding
Apply configuration changes:
- Keyboard shortcut:
Super + U - rebuild script:
rebuild - nixos-rebuild:
sudo nixos-rebuild switch --flake ~/NixOS#<HOST> - nh:
nh os switch --hostname <HOST>
Replace <HOST> with the name of your host (e.g., Laptop).
Rollbacks
List generations:
list-gens
Rollback to generation N:
rollback N
Replace N with the generation number (e.g., 69).
Keybindings
View all keybindings with Super + ? or Super + Ctrl + K.
Development Shells
Pre-configured dev shells for various languages are included.
Initialize a project from a template:
nix flake init -t ~/NixOS#<TEMPLATE_NAME>
Create a new project directory:
nix flake new -t ~/NixOS#<TEMPLATE_NAME> <PROJECT_NAME>
Templates are defined in dev-shells/default.nix (python, node, etc.).
Enter the shell:
cd <PROJECT_NAME>
nix develop
If you're using direnv, the shell activates automatically.
Credits/Inspiration
| Credit | Reason |
|---|---|
| Hyprland-Dots | Scripts and Waybar templates |
| HyDE | Additional scripts |
| rofi | Rofi launcher styles |
| dev-templates | Development templates |
| Vimjoyer | NixOS tutorials |