# 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. Add the following lines: ``` # Enable flakes 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 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`: ``` sudo nix flake update ``` Then, perform nixos rebuild: ``` sudo nixos-rebuild switch --flake ~/nixos/# ``` ## Garbage Collection Keep e.g. the last five generations and perform garbage collection: ``` sudo nix-env --delete-generations +5 sudo nix-store --gc ```