2023-08-15 19:13:43 +02:00
|
|
|
# NixOS
|
|
|
|
|
2023-08-15 21:04:44 +02:00
|
|
|
* There is controversy about flakes, rather use channels (e.g. with niv)
|
|
|
|
|
2023-08-15 20:55:27 +02:00
|
|
|
## Build and Switch
|
|
|
|
|
2023-08-16 17:35:19 +02:00
|
|
|
* https://nixos.wiki/wiki/Nixos-rebuild
|
|
|
|
|
2023-08-15 19:13:43 +02:00
|
|
|
Directly change to new config, make it default:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo nixos-rebuild -I nixos-config=yodaTux/configuration.nix switch
|
|
|
|
```
|
2023-08-15 20:55:27 +02:00
|
|
|
|
|
|
|
## Install Home Manager with niv
|
|
|
|
|
2023-08-17 10:52:06 +02:00
|
|
|
> Easy dependency management for Nix projects.
|
|
|
|
>
|
|
|
|
> Nix is a very powerful tool for building code and setting up environments. niv complements it by making it easy to
|
|
|
|
> describe and update remote dependencies (URLs, GitHub repos, etc). It is a simple, practical alternative to Nix flakes.
|
|
|
|
>
|
|
|
|
> https://github.com/nmattia/niv
|
|
|
|
|
|
|
|
> [Home Manager] allows declarative configuration of user specific (non global) packages and dotfiles.
|
|
|
|
>
|
2023-08-16 18:28:19 +02:00
|
|
|
> To avoid breaking users' configurations, Home Manager is released in branches corresponding to NixOS releases (
|
|
|
|
> e.g. `release-23.05`).
|
2023-08-17 10:52:06 +02:00
|
|
|
>
|
2023-08-15 20:55:27 +02:00
|
|
|
> Home Manager provides both the channel-based setup and the flake-based one.
|
2023-08-17 10:52:06 +02:00
|
|
|
>
|
|
|
|
> https://github.com/nix-community/home-manager
|
2023-08-15 20:55:27 +02:00
|
|
|
|
|
|
|
Check your channel:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo nix-channel --list
|
|
|
|
#=> nixos https://nixos.org/channels/nixos-23.05
|
|
|
|
```
|
|
|
|
|
|
|
|
Use the corresponding branch:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
niv add nix-community/home-manager -n home-manager -b release-23.05
|
|
|
|
```
|
|
|
|
|
2023-08-16 17:35:19 +02:00
|
|
|
## disko and nixos-anywhere
|
|
|
|
|
|
|
|
* Introductive presentation: https://pad.lassul.us/cccamp-workshop
|
|
|
|
* disko: https://github.com/nix-community/disko
|
|
|
|
* nixos-anywhere: https://github.com/numtide/nixos-anywhere/
|
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
```shell
|
|
|
|
# TODO (!)
|
|
|
|
```
|
|
|
|
|
|
|
|
## Automount Encrypted Drive
|
|
|
|
|
|
|
|
* Generate and add keyfile to LUKS device
|
|
|
|
* luksOpen and mount drive, e.g. to `/mnt/data1`
|
|
|
|
* Re-generate hardware configuration:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
sudo nixos-generate-config --dir yodaTux
|
|
|
|
```
|
2023-08-16 17:35:19 +02:00
|
|
|
|
|
|
|
## General Notes
|
|
|
|
|
2023-08-16 18:28:19 +02:00
|
|
|
### Nix Pills
|
|
|
|
|
|
|
|
* https://nixos.org/guides/nix-pills/pr01
|
|
|
|
|
|
|
|
It provides a tutorial introduction into the Nix package manager and Nixpkgs package collection, in the form of short
|
|
|
|
chapters called 'pills'.
|
|
|
|
|
2023-08-16 17:35:19 +02:00
|
|
|
### Thesis
|
|
|
|
|
|
|
|
There are two (?) theses about Nix. One is https://edolstra.github.io/pubs/phd-thesis.pdf
|
|
|
|
|
|
|
|
### Search for packages
|
|
|
|
|
|
|
|
* https://search.nixos.org/packages?channel=23.05
|
|
|
|
|
2023-08-18 19:45:49 +02:00
|
|
|
### Search for options
|
|
|
|
|
|
|
|
* https://search.nixos.org/options?channel=23.05
|
2023-08-18 19:49:09 +02:00
|
|
|
* Or `man configuration.nix`
|
2023-08-18 19:45:49 +02:00
|
|
|
* https://mipmip.github.io/home-manager-option-search
|
2023-08-18 19:49:09 +02:00
|
|
|
* Or `man home-configuration.nix`
|
2023-08-18 19:45:49 +02:00
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
### References
|
2023-08-16 17:35:19 +02:00
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
Some references to websites that helped me create this repository:
|
2023-08-18 19:18:47 +02:00
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
* https://github.com/Misterio77/nix-starter-configs
|
2023-08-18 19:18:47 +02:00
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
## TODOS
|
2023-08-18 19:18:47 +02:00
|
|
|
|
2023-08-18 19:57:09 +02:00
|
|
|
* FDE remote SSH unlock: https://nixos.wiki/wiki/Remote_LUKS_Unlocking
|
|
|
|
* Impermanence, opt-in to persistence: https://github.com/Misterio77/nix-starter-configs/tree/main#try-opt-in-persistance
|