This is an almost identical version of the NixOS configuration that I use. It is made for single-user use on a desktop or laptop system.
It does not use Flakes, but does make use of Home Manager and some unstable packages whilst on a stable version.
It is an overhaul of my previous NixOS configuration, which can still be found here.
(An update on the 11th of January 2025 cleaned up and changed the structure slightly, most things are a bit neater now.)
If you want to use this configuration (or rather, a version of it), on your own system, it is hightly recommended that you read what each module does and edit them if needed.
In configuration.nix
, you can set your user's name and title at custom.name
and custom.title
. They will automatically be applied to the modules that need them; They will use the ${config.custom.name}
and ${config.custom.title}
values using the User/Name-module.nix
module.
In configuration.nix
, you can set your computer's name on the network at networking.hostName
.
If you have installed a NixOS version higher/lower than the value currently used here (24.11
), you must change the value of system.stateVersion
in configuration.nix
. After that, you should never need to change it, unless you install NixOS from scratch with a different (higher) version. You do not have to nor should change this number if you keep the same installation, even when upgrading NixOS version.
CIn configuration.nix
, comment/uncomment the desired boot mode. You can tweak the Boot/EFI
and Boot/BIOS
modules on their own for futher configuration if needed.
There are other modules imported in configuration.nix
that you may wish to comment/uncommend, and individually tweak. Be sure to check relevant ones out.
The User/Home-manager.nix
module fetches the tarball of the desired Home Manager version, which should ideally be the same version as the NixOS version currently running. In it, if needed, change the 24.11
part in "https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz"
to the appropriate version.
Currently, the Flathub Flatpak repository cannot be declaratively defined in NixOS nor Home Manager without using a custom Nix Flake. As such, you have to manually add it with a shell command after installation. If you are using the FISH shell, there should already be an abbreviation to do so, being the following:
enable-flathub
- Single user
- Personal computing
- Desktops and laptops
- Secure Boot
- Accessibility
- Touchscreen
- Non-offload Nvidia PRIME
- Remote desktop
- Snap packaging system
- Computers with:
- A non-x86_64 (AMD64) CPU architecture
- No adequate GPU acceleration (Hyprland)
- Hybrid GPU setup (NVIDIA PRIME, etc)
- Less than 2 GiB of RAM (Swap can be heavily used with less than 4, 8-16 GiB is recommended)
- Less than 64 GiB of storage (Some Nix storage optimizations are already enabled)
Help is available in:
- The configuration.nix(5) man page
- The on-device manual by running the
nixos-help
command - The online manual
Online manual - The NixOS Wiki
NixOS Wiki - The Nix.dev documentation for the Nix ecosystem.
Nix.dev
A searchable list of available packages for NixOS can be found here.
NixOS package search
Alternatively, we can use nix search
in a terminal.
A searchable list of available options for NixOS can be found here.
NixOS options search
A (slow) list of available options for Home Manager can be found here.
Home Manager search