50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
# 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/#<host>`
|
|
|
|
## 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/#<host>
|
|
```
|
|
|
|
## Upgrading to a new NixOS channel
|
|
In `flake.nix` the channel is set to `unstable`. Therefore, there is no
|
|
need to upgrade the channel.
|
|
|
|
## 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
|
|
```
|