- Nix 73.6%
- Shell 20.5%
- CSS 5.9%
| configs | ||
| hardware | ||
| modules | ||
| scripts | ||
| users/nixos | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| bg.jpg | ||
| flake.lock | ||
| flake.nix | ||
| pre.png | ||
| README.md | ||
🐧 NixOS Configuration
Модульная система с профилями
desktop/laptop, интеграцией Home Manager и автоматическими pre-commit хуками для чистоты кода.
⚡ Быстрый старт
Склонируйте репозиторий и сгенерируйте базовую конфигурацию оборудования:
# 1. Клонирование ( shallow clone для скорости )
git clone https://git.priscillafx.com/PRISCILLA_FX/nixos --depth=1 && cd nixos
# 2. Генерация hardware-конфига
sudo nixos-generate-config --show-hardware-config > hardware/myhost.nix
# 3. Редактирование myhost.nix (см. раздел ниже)
# ... ваш реда ...,
# 4. Сборка и применение
sudo nixos-rebuild switch --flake .#myhost
🔧 Чек-лист перед первой сборкой
Перед запуском nixos-rebuild обязательно проверьте следующие файлы:
| Файл / Путь | Что изменить | Команда / Подсказка |
|---|---|---|
hardware/myhost.nix |
UUID дисков, swap, модули ядра | lsblk -f, lspci -k, lsmod |
modules/user.nix |
Хэш пароля пользователя | mkpasswd -m sha-512 |
users/nixos/home.nix |
Имя и email пользователя | Git config, персонализация |
modules/<host>/networking.nix |
Имя сетевого интерфейса, IP | ip link, ip addr |
~/.ssh/ |
Генерация SSH-ключей | ssh-keygen -t ed25519 |
📁 Структура проекта
Конфигурация использует иерархическую систему слияния. Файлы из папки хоста имеют приоритет над общими настройками.
nixos/
├── flake.nix # 📍 Точка входа: регистрация хостов и импорты
├── modules/ # 🧩 Общие настройки и профили (desktop/laptop)
│ ├── desktop/ # Настройки для стационарных ПК
│ └── laptop/ # Настройки для ноутбуков (TLP, батарея)
├── hardware/ # ⚠️ ВАЖНО: myhost.nix (диски, fs, kernel modules)
├── users/ # 👤 Пользовательские настройки
│ └── nixos/
│ └── home.nix # Home Manager: shell, программы, dotfiles
└── configs/ # 📄 Статические конфиги (автоматическое слияние)
├── shared/ # Базовые конфиги для всех хостов
└── <host>/ # Специфичные конфиги хоста (перезаписывают shared)
💡 Логика слияния конфигов:
configs/shared/➕configs/<host>/➡️~/.config/Файлы из папки хоста полностью заменяют файлы с тем же именем из shared.
➕ Добавление нового хоста (4 шага)
Чтобы добавить новую машину в флейк, выполните следующие действия:
-
Сгенерируйте hardware-конфиг:
sudo nixos-generate-config --show-hardware-config > hardware/newhost.nix -
Создайте структуру модулей хоста: Создайте директорию
modules/newhost/и необходимые файлы (можно пустыми заглушками):# modules/newhost/boot.nix { lib, ... }: {}Необходимые файлы:
boot.nix,networking.nix,env.nix,pkgs.nix,services.nix. -
Зарегистрируйте хост во
flake.nix:nixosConfigurations.newhost = mkSystem "newhost"; -
Примените конфигурацию:
sudo nixos-rebuild switch --flake .#newhost
🛠 Шпаргалка по командам
| Действие | Команда | Описание |
|---|---|---|
| Применить | sudo nixos-rebuild switch --flake .#<host> |
Сборка и активация новой конфигурации |
| Проверить | nix flake check |
Валидация синтаксиса и типов без сборки |
| Форматировать | nix fmt . |
Автоформатирование Nix-кода (alejandra/nixfmt) |
| Обновить | nix flake update |
Обновление lock-файла (версии пакетов) |
| Откат | sudo nixos-rebuild switch --rollback |
Возврат к предыдущей рабочей генерации |
| Очистка | nix-collect-garbage -d |
Удаление старых поколений и мусора |
📝 Workflow после изменений
После успешной сборки и проверки системы не забудьте зафиксировать изменения в Git:
git add .
git commit -m "chore: newhost config $(date +%F)"
