1
0
Fork 0
No description
  • Nix 73.6%
  • Shell 20.5%
  • CSS 5.9%
Find a file
2026-04-17 03:55:16 +05:00
configs Maintenance: 2026-04-10 07:31:42 2026-04-10 07:31:43 +05:00
hardware hotfix 2026-04-10 07:08:15 +05:00
modules hotfix 2026-04-11 08:35:52 +05:00
scripts hotfix 2026-04-10 05:35:25 +05:00
users/nixos hotfix 2026-04-17 03:55:16 +05:00
.gitignore init 2026-03-28 04:04:17 +05:00
.pre-commit-config.yaml hotfix 2026-04-10 02:50:34 +05:00
bg.jpg hotfix 2026-04-10 05:35:25 +05:00
flake.lock hotfix 2026-04-17 03:55:16 +05:00
flake.nix hotfix 2026-04-10 06:38:02 +05:00
pre.png hotfix 2026-04-10 14:03:48 +05:00
README.md Maintenance: 2026-04-10 14:00:09 2026-04-10 14:00:09 +05:00

🐧 NixOS Configuration

pre.png

Модульная система с профилями 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 шага)

Чтобы добавить новую машину в флейк, выполните следующие действия:

  1. Сгенерируйте hardware-конфиг:

    sudo nixos-generate-config --show-hardware-config > hardware/newhost.nix
    
  2. Создайте структуру модулей хоста: Создайте директорию modules/newhost/ и необходимые файлы (можно пустыми заглушками):

    # modules/newhost/boot.nix
    { lib, ... }: {}
    

    Необходимые файлы: boot.nix, networking.nix, env.nix, pkgs.nix, services.nix.

  3. Зарегистрируйте хост во flake.nix:

    nixosConfigurations.newhost = mkSystem "newhost";
    
  4. Примените конфигурацию:

    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)"