feat: add comprehensive NixOS configuration documentation and structure

- Introduced `08-structure.md` detailing project structure, main files, and versioning.
- Created `README.md` for documentation overview and quick start guide.
- Added user-specific configurations for Alacritty, Vim, Micro, Git, Zsh, Tmux, and tools.
- Implemented system modules for desktop environment (KDE Plasma), audio (PipeWire), networking, and services (OpenSSH, GnuPG).
- Configured Nix settings with flakes support and garbage collection.
- Established user management for `ada` with necessary groups and shell settings.
- Enabled VirtualBox guest additions for improved VM experience.
This commit is contained in:
Dmitry
2026-03-10 13:10:52 +03:00
parent a7ba016de4
commit 17b0cdfbac
31 changed files with 3327 additions and 164 deletions
+234
View File
@@ -0,0 +1,234 @@
# Сеть: SSH, Firewall, NetworkManager
Как настроить сетевые сервисы.
## Где сетевые настройки?
Сеть находится в двух местах:
```
modules/networking/default.nix ← NetworkManager, Firewall
modules/services/default.nix ← SSH и другие сервисы
```
## SSH настройки
SSH находится в `modules/services/default.nix`.
### Текущие настройки
```nix
settings = {
# Только публичные ключи
PasswordAuthentication = false;
PubkeyAuthentication = true;
# root не может логиниться
PermitRootLogin = "no";
# Максимум попыток: 3
MaxAuthTries = 3;
# Максимум сессий: 2
MaxSessions = 2;
};
```
### Открыть SSH на определённый порт
В `modules/networking/default.nix`:
```nix
# По умолчанию открыт порт 22
networking.firewall.allowedTCPPorts = [ 22 ];
# Если хочешь другой порт (например 2222):
networking.firewall.allowedTCPPorts = [ 2222 ];
```
И в `modules/services/default.nix`:
```nix
services.openssh.settings = {
Port = 2222; # Добавить эту строку
};
```
## Firewall
Firewall находится в `modules/networking/default.nix`.
### Открыть порты
```nix
networking.firewall.allowedTCPPorts = [ 22 ]; # SSH
# Добавить новые порты:
networking.firewall.allowedTCPPorts = [ 22 8080 3000 ];
```
### Открыть приложение
```nix
# Автоматически открыть порты для приложения
services.transmission.openFirewall = true;
services.minecraft-server.openFirewall = true;
```
## NetworkManager
NetworkManager позволяет управлять Wi-Fi и Ethernet.
### Статус
```bash
# Статус сети
nmcli status
# Список Wi-Fi сетей
nmcli dev wifi list
# Подключиться к Wi-Fi
nmcli dev wifi connect "SSID" password "password"
```
## Настройка Hostname
В `modules/networking/default.nix`:
```nix
networking.hostname = "nixos-vm";
# Изменить на:
networking.hostname = "my-machine";
```
## Интернет соединение
### Справка: NetworkManager управляет:
- Wi-Fi (connect/disconnect)
- Ethernet (автоматическое подключение)
- VPN (при установке клиента)
- Прокси (конфигурация)
### Команды
```bash
# Включить/выключить Wi-Fi
nmcli radio wifi on/off
# Список подключений
nmcli con show
# Отключиться от сети
nmcli con down "connection-name"
```
## VPN
VPN поддержка уже подготовлена в `modules/services/default.nix`:
```nix
# AmneziaVPN поддержка
services.amnezia.enable = true; # Если добавлено
```
## DNS
Если нужно изменить DNS серверы:
```nix
# В modules/networking/default.nix
networking.nameservers = [ "1.1.1.1" "8.8.8.8" ];
```
## Проверка после изменений
```bash
# Применить конфигурацию
nh os switch
# Проверить статус
systemctl status networking
systemctl status ssh
# Проверить firewall
sudo firewall-cmd --list-ports # Если используется firewalld
```
## Диагностика
### SSH не работает?
```bash
# Проверить статус
systemctl status ssh
# Посмотреть логи
sudo journalctl -u sshd -f
# Перезагрузить SSH
sudo systemctl restart ssh
```
### Нет интернета?
```bash
# Проверить соединение
ping 8.8.8.8
# Проверить DNS
nslookup google.com
# NetworkManager статус
nmcli status
# Перезагрузить NetworkManager
sudo systemctl restart NetworkManager
```
### Firewall блокирует?
```bash
# Проверить открытые порты
sudo nftables list tables # Или через nmap
nmap localhost # Сканирование локального машина
# Проверить конкретный порт
sudo netstat -tlnp | grep :8080
```
## SSH ключи
### Генерировать ключ (если нет)
```bash
ssh-keygen -t ed25519 -C "ada.dmitry@gmail.com"
# или
ssh-keygen -t rsa -b 4096 -C "ada.dmitry@gmail.com"
```
### Добавить публичный ключ
Содержимое `~/.ssh/id_ed25519.pub` нужно добавить на сервер в `~/.ssh/authorized_keys`.
## Общие команды
```bash
# Сетевые интерфейсы
ip link show
# IP адреса
ip addr show
# Маршруты
ip route show
# Слушающие порты
sudo netstat -tlnp
# DNS кэш
systemctl status systemd-resolved
```