# NixOS Configuration Files wit Flakes, Home-Manager ## Description My NixOS configuration repository ## Install a New Host 1. Install NixOS with graphical ISO image (e.g. GNOME). During the installation the desktop environment can be choosen. 2. Reboot into NixOS 3. Edit `/etc/nixos/configuration.nix` with sudoedit - Change hostname - Enable flakes by adding the line `nix.settings.experimental-features = [ "nix-command" "flakes" ];` - Install tmux, neovim, git by adding them to `environment.systemPackages = with pkgs; [` 4. Apply changes: `sudo nixos-rebuild switch` and reboot 5. Clone NixOS config repository to /home/$USER/nixos: ``` cd $HOME git clone https://git.plueschbit.de/jan/nixos-conf ~/nixos ``` 6. Add the new host to repository - Create ~/nixos/hosts/$HOSTNAME - `cp /etc/nixos/*.nix $HOSTNAME/.` - Edit `~/nixos/flake.nix` and add section for new host - Stage new config files: `git add flake.nix hosts/$HOSTNAME/*`. Otherwise, nixos-rebuild will refuse to work with the files. 8. Apply config: `sudo nixos-rebuild switch --flake ~/nixos/#` ## Update Packages on a Host Update of the file `flake.nix`: ``` cd ~/nixos sudo nix flake update ``` Then, perform nixos rebuild: ``` sudo nixos-rebuild switch --flake ~/nixos/# ``` ## Upgrading to a new NixOS channel List the current channels: ``` sudo nix-channel --list ``` Change the channel `nixos`: ``` sudo nix-channel --add https://nixos.org/channels/nixos- ``` Then, perform an update like above. ## Garbage Collection List all generations: ``` sudo nix-env --list-generations --profile /nix/var/nix/profiles/system ``` Keep e.g. the last five generations and perform garbage collection: ``` sudo nix-env --delete-generations +5 --profile /nix/var/nix/profiles/system sudo nix-collect-garbage ```