mrgnl_nixos — источник правды для
моего рабочего ThinkPad. В репозитории описаны не только пакеты, но и то, что
обычно расползается по ручным настройкам: загрузка системы, сеть, графическая
сессия, приложения, терминал, горячие клавиши и поведение ноутбука.
Сейчас это один активный хост — [[devices/thinkpad-t14-gen-4|ThinkPad T14 Gen 4]]. Вместо абстрактной коллекции профилей я держу в репозитории ровно ту машину, которой пользуюсь каждый день. Так проще видеть границу между переносимым решением и особенностью конкретного железа.
Три слоя вместо одного большого файла
host/t14 описывает сам ноутбук: hardware-configuration, имя хоста и набор
подключаемых профилей. Там не должно появляться правило, полезное всем будущим
машинам, только потому, что ему пока не нашлось места.
modules/ отвечает за системный слой NixOS: загрузку, Nix, сеть, безопасность,
питание, Intel-графику, fingerprint, съёмные носители и пакеты. Например,
конфигурация включает zram, регулярный trim SSD и очистку временных файлов, а
для VPN хранит в Git лишь wiring сервиса — сам файл с учётными данными остаётся
root-only вне репозитория.
home/ принадлежит Home Manager: здесь живут пользовательские программы,
dotfiles, Gruvbox-палитра и поведение сессии. Такое разделение не декоративно:
оно помогает понять, нужно ли изменение всем пользователям системы, только этой
машине или лишь моему рабочему окружению.
Рабочий стол после Niri
Niri был хорош тем, что дал прокручиваемую раскладку и понятные правила окон, но текущий desktop собран вокруг Umbriel и Noctalia 5. Umbriel оставил важное для меня свойство — scrolling layout, — и взял на себя компоновку, обзор, анимации, output rules и Wayland-сессию. Noctalia запускается внутри этой сессии и даёт launcher, bar, уведомления, clipboard, lock screen и меню завершения работы.
Это не попытка собрать «рисовый» desktop из десятка отдельных демонов. Один
Gruvbox-набор цветов проходит через greeter, shell, Kitty, Yazi, btop и LazyVim;
горячие клавиши привязаны к физическим клавишам и продублированы для русской
раскладки. Небольшие, но важные детали тоже описаны рядом с кодом: fingerprint
работает в greeter, lock screen и sudo с парольным fallback, а подключённые
накопители появляются в Nautilus без запуска файлового менеджера от root.
Конфигурация должна проверяться до перезагрузки
Команда scripts/check.sh quick t14 не ограничивается проверкой синтаксиса.
Она разбирает все Nix-файлы, проверяет Markdown и форматирование, валидирует
flake outputs, делает dry-build хоста и проверяет сгенерированные конфиги
Umbriel и Noctalia их собственными валидаторами. Полный режим собирает весь
system closure.
Это особенно полезно там, где ошибка проявляется только после входа в сессию:
неверное имя настройки, сломанный конфиг compositor’а или конфликт версий лучше
поймать до nixos-rebuild switch. После активации я отдельно проверяю systemd и
пользовательские сервисы; для desktop-изменений смотрю живые окна, слои и
ошибки текущей сессии. Если обновление неудачно, у NixOS остаётся понятный
rollback к предыдущему поколению.
Обновления без лотереи
Большинство программ приходит из nixpkgs, поэтому для обычного обновления
достаточно обновить один input, посмотреть flake.lock, выполнить полную
проверку и только затем применить конфигурацию. Полный nix flake update
обновляет одновременно NixOS, Home Manager, Noctalia, Umbriel и portal — это
полезно, но я отношусь к нему как к отдельному изменению с большим радиусом
эффекта, а не как к ежедневной кнопке «обновить всё».
Мой маршрут остаётся простым: edit → check → commit → push; активация —
отдельный, осознанный шаг. Конфигурация не должна меняться только потому, что
где-то появился новый пакет.
Что в этом для меня главное
Воспроизводимость здесь не означает, что одна команда превращает любой компьютер в мой. Она означает, что состояние активной машины можно объяснить, проверить и восстановить без охоты за забытыми настройками. Даже workaround для зависания Umbriel при выключении зафиксирован в конструкторе хоста: compositor получает пять секунд на чистое завершение вместо долгого ожидания systemd.
Репозиторий связывает Fish, Kitty, Neovim, Yazi и остальной набор инструментов с конкретной машиной, но не прячет саму логику за магией dotfiles. А прежний Niri остался важной ступенью: именно от него в нынешнем окружении сохранилось требование к спокойной, прокручиваемой организации окон.