Skip to content

Repository files navigation

NixOS + Niri + iNiR

Воспроизводимая конфигурация для компьютера Mart:

  • Gigabyte B550M AORUS ELITE;
  • AMD Ryzen 5 5600;
  • AMD Radeon RX 7800 XT;
  • ADATA LEGEND 960 1 TB — /dev/nvme0n1;
  • 32 GiB RAM;
  • UEFI;
  • пользователь mart;
  • Niri + iNiR + Home Manager;
  • ext4 без Btrfs, сабволюмов и снапшотов.

Важное предупреждение

hosts/desktop/disko.nix полностью очищает только:

/dev/nvme0n1 — ADATA LEGEND 960, примерно 1 TB

USB-накопитель:

/dev/sda — Kingston DataTraveler, примерно 115 GB

не указан в Disko и не должен изменяться.

Перед установкой сохрани все нужные данные с NVMe. Установка уничтожит существующий CachyOS и все разделы на /dev/nvme0n1.

Что будет установлено

Рабочее окружение

  • Niri;
  • iNiR из upstream snowarch/iNiR;
  • greetd/tuigreet;
  • Home Manager;
  • PipeWire;
  • NetworkManager;
  • Bluetooth;
  • Flatpak и AppImage support;
  • Dolphin как основной файловый менеджер;
  • KeePassXC как менеджер паролей и org.freedesktop.secrets provider.

GNOME Keyring намеренно отключён. KeePassXC запускается автоматически и предоставляет приложениям Secret Service через DBus.

Приложения

  • VSCodium;
  • Zen Browser;
  • Discord с Equicord и OpenASAR через Nixcord;
  • AyuGram Desktop;
  • Steam;
  • Proton-GE и Protontricks;
  • Gamescope, GameMode, MangoHud, GOverlay и ProtonUp-Qt;
  • KeePassXC;
  • Pear Desktop — YouTube Music-клиент с поддержкой плагинов;
  • Kitty;
  • Dolphin, Ark и KDE thumbnailers;
  • mpv, imv, FFmpeg, yt-dlp;
  • pavucontrol и Helvum;
  • GParted;
  • инструменты диагностики AMD/Vulkan/OpenCL.

Equicord/OpenASAR изменяют официальный Discord-клиент. Использование клиентских модификаций может противоречить правилам Discord; используешь их на свой риск.

Разметка диска

Disko создаёт простую GPT-разметку:

/dev/nvme0n1
├── ESP       2 GiB, FAT32, /boot
└── NixOS     оставшееся место, ext4, /

Отдельных разделов /home, /nix и swap нет. Используется сжатый zram размером до 100% RAM.

Преимущества этой схемы:

  • обычный ext4 без Copy-on-Write;
  • простой ручной recovery из любого Linux Live ISO;
  • все пользовательские данные лежат на одном корневом разделе;
  • нет Btrfs-сабволюмов, scrub и snapshot tooling.

Для ручного монтирования из Live ISO:

sudo mount /dev/disk/by-label/nixos /mnt
sudo mkdir -p /mnt/boot
sudo mount /dev/disk/by-partlabel/ESP /mnt/boot

Если второй путь не найден, посмотри точное имя EFI-раздела через:

lsblk -f
sudo blkid

Установка с NixOS Graphical ISO

Graphical ISO подходит, но не запускай Calamares. Загрузись в live-систему и открой терминал.

1. Подключи интернет

Через интерфейс рабочего стола либо:

nmtui

Проверь сеть:

ping -c 3 cache.nixos.org

2. Получи репозиторий

Репозиторий приватный, поэтому обычный анонимный git clone не сработает.

Самый простой вариант для первой установки — временно сделать репозиторий публичным, затем:

cd /tmp
git clone https://github.com/march-taylor/nix.git nix-config
cd nix-config

После установки репозиторий можно снова сделать приватным.

Альтернатива: войти в GitHub через браузер live-системы, скачать ZIP репозитория, распаковать его и открыть распакованный каталог в терминале.

3. Ещё раз проверь диски

lsblk -d -o NAME,SIZE,MODEL,SERIAL,TRAN

Ожидается:

nvme0n1  около 954G  ADATA LEGEND 960
sda      около 115G  DataTraveler 3.0

Если имена или модель отличаются, не запускай установщик и сначала исправь hosts/desktop/disko.nix.

4. Запусти защищённый установщик

Из корня репозитория:

sudo bash ./install.sh

Скрипт выполняет действия в таком порядке:

  1. Показывает все диски.

  2. Создаёт или обновляет flake.lock.

  3. Запускает nix flake check --no-build.

  4. Только после успешной проверки просит ввести:

    ERASE /dev/nvme0n1
    
  5. Создаёт GPT, EFI и ext4 через Disko.

  6. Копирует репозиторий в /mnt/etc/nixos.

  7. Выполняет nixos-install.

  8. Просит установить пароль пользователя mart.

При любой ошибке оценки Nix диск ещё не изменяется.

5. Перезагрузка

После сообщения об успешной установке:

reboot

Извлеки флешку, когда компьютер начнёт перезагружаться.

Первый вход

Войди пользователем:

mart

После входа должны автоматически запуститься Niri, iNiR и KeePassXC.

Проверь iNiR:

systemctl --user status inir.service
inir logs --full
niri msg version

Проверка графики RX 7800 XT:

vulkaninfo --summary
glxinfo -B
vainfo
clinfo

Первичная настройка KeePassXC

KeePassXC уже настроен как Secret Service provider, а GNOME Keyring отключён.

При первом запуске:

  1. Открой существующую .kdbx базу или создай новую.
  2. Открой Database → Database Settings → Secret Service Integration.
  3. Выбери отдельную группу, которую приложениям разрешено видеть через Secret Service.
  4. Для Zen установи расширение KeePassXC-Browser и разреши соединение в Tools → Settings → Browser Integration.

Рекомендуется создать в базе отдельную группу, например:

Secret Service

и хранить там только те записи, которые действительно должны быть доступны приложениям через org.freedesktop.secrets.

Проверить DBus provider можно так:

busctl --user list | grep org.freedesktop.secrets

KeePassXC-конфиг создаётся как обычный изменяемый файл:

~/.config/keepassxc/keepassxc.ini

Home Manager создаёт только первоначальный вариант файла и не перезаписывает последующие настройки из GUI.

Dolphin

Dolphin установлен вместе с:

  • Ark для архивов;
  • KIO Admin;
  • KIO Extras;
  • thumbnails для видео, PDF и изображений.

Он установлен обработчиком каталогов по умолчанию. Бинд:

Mod+E → Dolphin

После первого запуска

Конфигурация находится в:

/etc/nixos

Зафиксируй созданный установщиком lock-файл:

cd /etc/nixos
git status
git add flake.lock
git commit -m "chore: lock initial system inputs"
git push

flake.lock фиксирует точные версии Nixpkgs, Home Manager, Niri, iNiR, Zen, AyuGram, Nixcord и Disko.

Применение изменений

Безопасная тестовая активация:

cd /etc/nixos
sudo nixos-rebuild test --flake .#desktop

Постоянная активация:

sudo nixos-rebuild switch --flake .#desktop

Перед переключением можно только собрать систему:

sudo nixos-rebuild build --flake .#desktop

Через just:

just check
just build
just test
just switch

Обновления

Обновить только iNiR:

cd /etc/nixos
nix flake update inir
sudo nixos-rebuild test --flake .#desktop
sudo nixos-rebuild switch --flake .#desktop
git add flake.lock
git commit -m "chore: update iNiR"

Обновить отдельные приложения:

nix flake update zen-browser
nix flake update ayugram-desktop
nix flake update nixcord

Обновить всё:

nix flake update
sudo nixos-rebuild test --flake .#desktop
sudo nixos-rebuild switch --flake .#desktop

Для Nix-установки iNiR не запускай inir update: версия управляется flake input.

Откат

sudo nixos-rebuild switch --rollback

Предыдущие поколения также доступны в меню systemd-boot.

Если проблема появилась после обновления inputs:

cd /etc/nixos
git restore --source=HEAD~1 flake.lock
sudo nixos-rebuild switch --flake .#desktop

Структура

.
├── flake.nix
├── flake.lock
├── settings.nix
├── install.sh
├── hosts/
│   └── desktop/
│       ├── default.nix
│       ├── disko.nix
│       └── hardware-configuration.nix
├── modules/
│   ├── core/default.nix
│   ├── hardware/default.nix
│   ├── gaming/default.nix
│   └── desktop/
│       ├── default.nix
│       └── niri.nix
├── home/
│   └── mart/
│       ├── default.nix
│       ├── programs.nix
│       ├── discord.nix
│       └── niri.nix
├── installer/
│   ├── iso.nix
│   └── offline.nix
└── docs/RICE.md

iNiR и собственный rice

Сейчас используется чистый upstream:

inir.url = "github:snowarch/iNiR";

Системный репозиторий и исходники rice лучше не смешивать:

  • march-taylor/nix — система, пакеты, Home Manager, Disko и ISO;
  • будущий march-taylor/inir-rice — fork iNiR с QML, JS и собственными модулями.

Для перехода на fork достаточно изменить input:

inir.url = "github:march-taylor/inir-rice";

Локальная разработка без изменения flake.nix:

sudo nixos-rebuild test --flake .#desktop \
  --override-input inir path:/home/mart/projects/inir-rice

Подробности: docs/RICE.md.

Сборка собственного ISO

Сетевой ISO:

nix build .#installer-iso

Offline ISO с closure целевой системы:

nix build .#offline-installer-iso

Образ появится в:

result/iso/

Секреты

Не добавляй напрямую в репозиторий:

  • Wi-Fi пароли;
  • API-токены;
  • приватные SSH-ключи;
  • пароли пользователей;
  • KeePass-базу;
  • browser profiles.

Для будущего декларативного управления системными секретами используй sops-nix или agenix. KeePassXC предназначен для пользовательских паролей и Secret Service, но не для подстановки секретов в NixOS-конфигурацию во время сборки.

About

my nix dots

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages