NixOS: Getting Started
nixos
To try out programs in your current shell only
nix-shell -p <program>
To edit config (e.g. add packages)
sudoedit /etc/nixos/configuration.nix
sudo nixos-rebuild switch
home-manager
Handling user specific settings, e.g. dotfiles
sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.05.tar.gz home-manager
sudo nix-channel --update
vim ~/.config/home-manager/home.nix
home-manager switch
Move configurations into a repository
git clone myConfigUrl ~/myConfigs
cp /etc/nixos/configuration.nix ~/myConfigs/
sudo rm /etc/nixos/configuration.nix
sudo ln -s /home/paul/myConfigs/configuration.nix /etc/nixos/configuration.nix
cp /etc/nixos/hardware-configuration.nix ~/myConfigs/
sudo rm /etc/nixos/hardware-configuration.nix
sudo ln -s /home/paul/myConfigs/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
cp ~/.config/home-manager.nix ~/myConfigs/
rm ~/.config/home-manager.nix
ln -s /home/paul/myConfigs/configuration.nix /home/paul/.config/home-manager.nix
Set the channel (i.e. the NixOS version)
The channel is like a snapshot of the nixpkg repository. Similar to an Ubuntu release version. Note, the channels can be different between users (e.g. root vs USER).
sudo nix-channel --add https://nixos.org/channels/nixos-25.05 nixos
sudo nix-channel --update
sudo nixos-rebuild switch
Update the channel
sudo nix-channel --remove nixos
sudo nix-channel --add https://nixos.org/channels/nixos-25.11 nixos
# optional: only needed when using home-manager
sudo nix-channel --remove home-manager
sudo nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager
sudo nix-channel --update
sudo nixos-rebuild switch
Adapt to your versions (this example updates from 25.05 to 25.11).
VSCodium with extensions via nix configs
This works well as described in the wiki (e.g. specify each extension in vscode’s config section). Make sure to disable auto-updating of extensions in VSCode, e.g.
// file settings.json
{
...
"extensions.autoCheckUpdates": false,
"extensions.autoUpdate": false
}