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.
- 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.
Method 1: Automatic - run the installer again to select or create another host:
./install.sh
Method 2: Manual:
-
Copy
hosts/Default
to a new directory (e.g.,hosts/Laptop
) -
Edit the new host's
variables.nix
andhost-packages.nix
-
Add the host to
flake.nix
:nixosConfigurations = { Default = mkHost "Default"; Laptop = mkHost "Laptop"; };
- Rebuild with the new hostname using either
nixos-rebuild
ornh
(see Rebuilding below). Once rebuilt, any rebuilding method can be used, as the host name will be implicitly recognised.
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
).
List generations:
list-gens
Rollback to generation N:
rollback N
Replace N
with the generation number (e.g., 69
).
View all keybindings with Super + ?
or Super + Ctrl + K
.
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.
Credit | Reason |
---|---|
Hyprland-Dots | Scripts and Waybar templates |
HyDE | Additional scripts |
rofi | Rofi launcher styles |
dev-templates | Development templates |
Vimjoyer | NixOS tutorials |