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
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
}