Я какое-то количество времени использую NixOS в качестве основной системы.
Давайте сразу опустим все вопросы про то что кто-то добровольно использует Linux как основную систему - да, такое бывает, просто примите за факт. Туда же идет вопрос зачем использовать для домашней системы что-то с явно инфраструктурными вайбами - ну вот захотелось.
Я планировал по итогу сделать два поста - сначала рассказать про плюсы, потом про минусы, но так как я вернулся с поездки и меня встретили вот таким - то начнем с минусов.
Представьте что вся ваша система описана конфигурационным файлами, которые написали вы сами (ну или бездумно скопировали с интернета, это тоже путь). Вот вообще все: от того как разбиты диски на разделы, до того как выглядит указатель у мышки - все это может быть один конфигурационный файл (в реальности конечно этих файлов много, но это уже территория того как удобнее разбивать проект на отдельные модули).
Из этого следует три особенности, на которых делают акцент создатели NixOS:
1. Воспроизводимость - если у вас собирается ваша система на одной машине, она соберется и на другой, достаточно перенести конфигурацию;
2. Декларативность - собственно нет ничего, кроме того что вы сами декларировали в конфигурационных файлах, для описания используется свой язык nix;
3. Надежность - если в ваших конфигурационных файлах что-то пошло не так, система просто не соберется в нерабочий вариант, плюс система хранит некоторое количество предыдущих рабочих версий, в которые можно в любой момент откатиться.
И так, минусы:
1. Воспроизводимость есть не во всем - ну то есть да, вот вся моя система описана и собирается из пачки файлов, но вот конфигурация для терминала (wezterm) - тут извини, можешь просто ссылку на свой конфиг терминала в конфиге пакета дать, но сам конфиг существует вне nix. Что для меня как бы идет в разрез с идеологией, не будет точно такого же файла - не будет 100% воспроизводимости;
2. Декларативность - это прекрасная парадигма, но реализацией в Nix легко выстрелить себе в ногу. В какой-то момент я обнаружил себя что установка calibre (это такой менеджер для электронных книг), идет непозволительно долго, потому что собирается OpenCV, который тянется как какая-то зависимость, потому что для всех устанавливаемых пакетов на уровне декларации репозитория включен CUDA support, и вот таких приколов вагон и маленькая тележка;
3. Надежность - как видите можно обнаружить себя с почему-то сбившимся разрешением экрана, хотя ничего в конфигурационных файлах не менялось: Где сломалось? Это железо, nixos или hyprland? Что делать? На все эти вопросы ответ придется искать трудным путем. В любой другой ОС могло произойти тоже самое и путь поиска проблемы был бы таким же трудным, но обещание "надежности" и "воспроизводимости" давало надежду что такого не будет;
4. Язык nix - он плохой, точка.
Post #188
206