No description
- Python 45.3%
- Nix 43.1%
- Shell 5.8%
- CSS 5.8%
| docs | ||
| src | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| diag.py | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
🐧 NixOS Configuration
Модульная система с профилями
desktop/laptop, интеграцией Home Manager, автоматическими pre-commit хуками и полным набором скриптов для обслуживания.
⚡ Быстрый старт
Склонируйте репозиторий (через SSH) и сгенерируйте базовую конфигурацию оборудования:
# 1. Клонирование (через SSH, с ключами)
git clone ssh://git@git.priscillafx.com:6669/PRISCILLA_FX/nixos.git --depth=1 && cd nixos
# 2. Генерация hardware-конфига для вашей машины
sudo nixos-generate-config --show-hardware-config > src/hardware/myhost.nix
# 3. При необходимости отредактируйте myhost.nix (диски, модули ядра)
# 4. Сборка и применение (замените myhost на desktop/laptop)
sudo nixos-rebuild switch --flake .#myhost
🔧 Чек-лист перед первой сборкой
| Файл / Путь | Что изменить | Команда / Подсказка |
|---|---|---|
src/hardware/myhost.nix |
UUID дисков, swap, модули ядра | lsblk -f, lspci -k, lsmod |
src/modules/user.nix |
Хэш пароля пользователя | mkpasswd -m sha-512 |
src/users/nixos/home.nix |
Имя и email пользователя | Git config, персонализация |
src/modules/<host>/networking.nix |
Имя сетевого интерфейса, IP | ip link, ip addr |
~/.ssh/ |
Генерация SSH-ключей | ssh-keygen -t ed25519 |
📁 Структура проекта
nixos/
├── flake.nix # 📍 Точка входа: регистрация хостов и импорты
├── src/ # 🧩 Исходный код конфигурации
│ ├── modules/ # Системные модули
│ │ ├── desktop/ # Специфичные для ПК (статический IP, производительность)
│ │ └── laptop/ # Специфичные для ноутбука (WiFi, энергосбережение)
│ ├── hardware/ # ⚠️ ВАЖНО: myhost.nix (диски, fs, kernel modules)
│ ├── users/ # 👤 Пользовательские настройки
│ │ └── nixos/
│ │ └── home.nix # Home Manager: shell, программы, dotfiles
│ ├── configs/ # 📄 Статические конфиги (автоматическое слияние)
│ │ ├── shared/ # Базовые конфиги для всех хостов
│ │ └── <host>/ # Специфичные конфиги хоста (перезаписывают shared)
│ └── scripts/ # 🛠 Скрипты для управления системой
├── docs/ # 📚 Документация и ресурсы
│ ├── bg/ # 🖼 Фоны рабочего стола (для Sway)
│ └── pre.png # Скриншот
└── README.md
💡 Логика слияния конфигов:
src/configs/shared/➕src/configs/<host>/➡️~/.config/Файлы из папки хоста полностью заменяют файлы с тем же именем из shared.
🛠 Скрипты для повседневной работы
diag.py – универсальный инструмент (Python)
./diag.py speed --time 5 --workers 10
./diag.py update --host <desktop|laptop> [--proxy] [--commit] [--diag]
./diag.py diag [--quick] [--json] [--no-sudo] [--save] [--fix]
speed– тест скорости (iperf3 + HTTP зеркала)update– обновление системы (NixOS/Debian/Arch/Alpine/Fedora)diag– полная диагностика системы
Shell-скрипты
# Git push с интерактивным подтверждением
./src/scripts/gitpush.sh
# Управление MPD
./src/scripts/mpctrl.sh --up|--down|--toggle|--next|--prev
# tmux + fzf навигация по проектам
./src/scripts/tmux-sessionizer.sh
🛠 Шпаргалка по командам
| Действие | Команда |
|---|---|
| Применить конфигурацию | sudo nixos-rebuild switch --flake .#<host> |
| Диагностика (Python) | ./diag.py diag [--save] [--fix] |
| Обновление (Python) | ./diag.py update --host <host> --diag |
| Тест скорости | ./diag.py speed --time 5 |
| Проверка синтаксиса | nix flake check |
| Форматирование кода | nix fmt . |
| Обновить flake.lock | nix flake update |
| Откат к предыдущей сборке | sudo nixos-rebuild switch --rollback |
| Очистка мусора | sudo nix-collect-garbage -d |
📝 Workflow после изменений
После успешной сборки и проверки системы:
git add .
git commit -m "feat: описание изменений"
git push
Или одной командой:
./diag.py update --host desktop --diag --commit
