NixOS еще не умер
Зачем?
Проблемы, с которыми я столкнулся
Требования к Homelab
14.48M

NixOS еще не умер

1. NixOS еще не умер

Муравьев Максим
DevSecOps инженер
YADRO
Homelab
Meetup`25

2. Зачем?

3. Проблемы, с которыми я столкнулся

Dependency hell
Broken updates
$ scp docker-compose.yaml user@someserver:~
$ ssh user@someserver
user@someserver $ vim docker-compose.yaml
Manual configuration
Can't remember how I did that..

4. Требования к Homelab

• Безопасные обновления
• Удобное обновление всех хостов из одной точки
• Единая точка конфигурации с
шаблонами/модулями/профилями
• Возможность отката к предыдущим версиям

5.

Nix ecosystem

6.

С чего все началось
edolstra.github.io/pubs/phdthesis.pdf

7.

Nix это?..
• Nix lang – pure
functional DSL
• Nix PM – package
manager
• Nix OS – linux based OS
with Nix PM

8.

Nix lang
Pure functions
Lazy calculation
Immutable

9.

Nix lang
5
4
Primitives / literals
1
6
7
3
2
Functions

10.

Nix PM

11.

Nix PM
As a file
Interactive

12.

Nix PM
• Non Filesystem Hierarchy Standart
(Non-FHS)
• Use hashes for every package
• Use symlinks for access outside /nix/store

13.

Nix PM

14.

Nix PM
github.com/NixOS/ni
xpkgs

15.

Nix PM

16.

Nix PM
Store derivation
Derivation output
Nix expression

17.

Nix PM
• 667M objects & 425 TB cache
(in 2023)
• Used for unstable/releases
branches

18.

Nix PM

19.

Nix PM
Nixhub.io

20.

Nix OS

21.

Nix OS
• System from one file
• Nix Lang for configuration
• Many options for use (over 20K)

22.

Nix OS
• Add new service in configuration
• Add packages by user
• Add package by system-wide

23.

Nix OS
• Nix download binaries
and run services
• Nix create new
generation of system

24.

Nix OS
• Vim available only for one
user
• Ripgrep available for all
users

25.

Nix OS
• Simple rollback in 1
command
• We have previous state of
system

26.

Nix OS
Import it
Create module

27.

Nix OS
Use it
Create module with custom options

28.

Nix OS
NIXOS IS NOT
REPRODUCIBLE
(by default)
Npins

29.

Nix OS
• They exist in Nix PM, but are marked as
experimental
• Used in official package repo
• Most community used

30.

Nix OS
How to use flakes?
1. Add nix settings in
configuration
2. Switch system
3. Create flake.nix file
4. Import host configuration
5. Switch system

31.

Nix OS
Now we have reproducible
system?

32.

Nix community – disko
Official logo xD
sudo nix run 'github:nixcommunity/disko/latest#disko-install' -- -flake .#my-nixos –disk my-disk /dev/sda

33.

Nix community – nixos-anywhere
nix run github:nix-community/nixos-anywhere -- --flake .#my-nixos
--target-host root@<some-ip>
1. Connect to remote server via ssh
2. Use kexec to boot into nixos-installer
3. Use disko to format disks
4. Install NixOS

34.

NixOS
Deploy just via ssh lol
nixos-rebuild switch –flake .#mynixos –target-host username@ip –build-host someuser@som
--flake – select host configuration
--target-host – select target machine
--build-host – select remote builder host
--use-remote-sudo – to apply configuration if you deploy user non-root

35.

Nix community – deploy-rs
1. Import deploy-rs module
2. Declare deploy settings for target hosts
3. nix run github:serokell/deploy-rs your-flake
4. …
5. Done

36.

Virtual Machines
Proxmox-nixos
Microvm-nix

37.

Containers
Nixos containers
OCI containers

38.

Nix topology
Nix topology scheme
Declare with nix

39.

Nix ecosystem
Rabbit hole

40.

Nix ecosystem +
1. Декларативность и наглядность (что в git, то и на машине)
2. Воспроизводимость
3. Возможность откатов
4. Решен ад зависимостей
5. Огромной репозиторий с пакетами
6. Очень просто вносить изменения в софт (патчи, оверлеи, …)
7. Можно собирать софт из исходников при необходимости
8. Быстрое развертывание хоста
9. Просто управлять большим количеством хостов
10.Это не ансибл, тут нет стейта, "идемпотентности" и ямла

41.

Nix ecosystem 1. Порог входа
2. Nix DSL узко специализированный язык
3. Непонятные трейсы об ошибках
4. Нетривиальные ошибки (infinity recursion counter, …)
5. Недостаточная документация
6. Нет LTS NixOS
7. Не все ПО умеет работать без FHS
8. Работа с секретами нетривиальная
9. Скандалы в коммьюнити

42.

NixOS еще не умер
Весна 2024
Осень 2025
t.me/nix
alt

43.

Thanks
GitHub Repo
Tg Blog
English     Русский Правила