backup: 2026-04-11 13:47
This commit is contained in:
@@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/master/doc/json_schema.json",
|
||||||
|
"logo": {
|
||||||
|
"type": "small",
|
||||||
|
"position": "left",
|
||||||
|
"printRemaining": false,
|
||||||
|
"padding": {
|
||||||
|
"top": 2,
|
||||||
|
"right": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"display": {
|
||||||
|
"separator": " ",
|
||||||
|
"brightColor": false,
|
||||||
|
"color": {
|
||||||
|
"keys": "blue",
|
||||||
|
"title": "cyan",
|
||||||
|
"separator": "bright_black",
|
||||||
|
"output": "white"
|
||||||
|
},
|
||||||
|
"key": {
|
||||||
|
"width": 3,
|
||||||
|
"type": "icon"
|
||||||
|
},
|
||||||
|
"duration": {
|
||||||
|
"abbreviation": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
"title",
|
||||||
|
"separator",
|
||||||
|
{
|
||||||
|
"type": "os",
|
||||||
|
"key": "os",
|
||||||
|
"format": "{name}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "kernel",
|
||||||
|
"key": "kernel",
|
||||||
|
"format": "{release}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "uptime",
|
||||||
|
"key": "uptime"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "command",
|
||||||
|
"key": "age",
|
||||||
|
"shell": "/bin/sh",
|
||||||
|
"param": "-c",
|
||||||
|
"text": "first=\"$(sed -n '1{s/^\\[\\([^]]*\\)\\].*/\\1/p;q}' /var/log/pacman.log)\"; if [ -n \"$first\" ]; then start=\"${first%%+*}\"; now=$(date +%s); then_ts=$(date -d \"$start\" +%s 2>/dev/null || true); if [ -n \"$then_ts\" ]; then days=$(( (now-then_ts)/86400 )); years=$(( days/365 )); rem=$(( days%365 )); if [ \"$years\" -gt 0 ]; then printf '%sy %sd\\n' \"$years\" \"$rem\"; else printf '%sd\\n' \"$days\"; fi; else echo n/a; fi; else echo n/a; fi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"key": "shell",
|
||||||
|
"format": "{pretty-name}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "terminal",
|
||||||
|
"key": "term",
|
||||||
|
"format": "{pretty-name}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "memory",
|
||||||
|
"key": "ram",
|
||||||
|
"format": "{used}/{total} ({percentage})"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "disk",
|
||||||
|
"key": "disk",
|
||||||
|
"format": "{size-used}/{size-total} ({size-percentage})"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
%%%%%%%%%%%%%%
|
||||||
|
*%%%%%%%%%%%%%%%%%%@
|
||||||
|
%%%%%%%%%%%%%%%%%%%@%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%+
|
||||||
|
%%%%%%%% %%%%@@% %%%%%%%%
|
||||||
|
%%%%:%%% %%%%@% %% %%%*@%%%%
|
||||||
|
%%% % %% %%% %@ %% @ %%%
|
||||||
|
%% % % %@% % %% %% % %%%
|
||||||
|
%%%%%%%% %%%%%%% %%%%@%%%@
|
||||||
|
%%%%%%%%%%%%%%%%%@%%%%%@%
|
||||||
|
%%%%%%@%%%%%%%@%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%
|
||||||
+1
-1
@@ -205,7 +205,7 @@
|
|||||||
|
|
||||||
[credential]
|
[credential]
|
||||||
# Кэшировать пароли на 1 час
|
# Кэшировать пароли на 1 час
|
||||||
helper = "!f() { /home/ada/.vscode-server/bin/e7fb5e96c0730b9deb70b33781f98e2f35975036/node /tmp/vscode-remote-containers-a5b5f662-89b2-4631-a1e9-74a4d6766f58.js git-credential-helper $*; }; f"
|
helper = "!f() { /home/ada/.vscode-server/bin/e7fb5e96c0730b9deb70b33781f98e2f35975036/node /tmp/vscode-remote-containers-c2ca9419-d1b5-464d-a579-9a0e513fd732.js git-credential-helper $*; }; f"
|
||||||
|
|
||||||
# ═══ URL shortcuts ══════════════════════════════════════════
|
# ═══ URL shortcuts ══════════════════════════════════════════
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# Adapted from alacritty/.config/alacritty/alacritty.toml
|
||||||
|
# Reference: https://sw.kovidgoyal.net/kitty/conf/
|
||||||
|
|
||||||
|
# Launch shell and attach/create tmux session
|
||||||
|
shell /usr/bin/zsh -l -c "tmux new-session -A -s main"
|
||||||
|
|
||||||
|
# Window appearance
|
||||||
|
hide_window_decorations yes
|
||||||
|
background_opacity 0.90
|
||||||
|
# window_padding_width 1 1
|
||||||
|
enable_tab_bar no
|
||||||
|
# Alacritty startup_mode=maximized has no direct kitty.conf equivalent.
|
||||||
|
# Use: kitty --start-as maximized
|
||||||
|
|
||||||
|
# Font
|
||||||
|
font_family FiraCode Nerd Font Mono
|
||||||
|
bold_font FiraCode Nerd Font Mono Bold
|
||||||
|
italic_font FiraCode Nerd Font Mono Italic
|
||||||
|
font_size 15.0
|
||||||
|
|
||||||
|
# Scrollback
|
||||||
|
scrollback_lines 10000
|
||||||
|
wheel_scroll_multiplier 5.0
|
||||||
|
|
||||||
|
# Selection behavior
|
||||||
|
copy_on_select clipboard
|
||||||
|
select_by_word_characters @-./_~?&=%+#
|
||||||
|
|
||||||
|
# Keep mouse cursor visible while typing
|
||||||
|
mouse_hide_wait 0.0
|
||||||
|
|
||||||
|
# Cursor
|
||||||
|
cursor_shape beam
|
||||||
|
cursor_blink_interval 0.5
|
||||||
|
cursor_beam_thickness 1.5
|
||||||
|
|
||||||
|
# Bell (disable visual bell)
|
||||||
|
visual_bell_duration 0.0
|
||||||
|
|
||||||
|
# Nord color scheme
|
||||||
|
foreground #D8DEE9
|
||||||
|
background #2E3440
|
||||||
|
|
||||||
|
cursor #D8DEE9
|
||||||
|
cursor_text_color #2E3440
|
||||||
|
|
||||||
|
selection_foreground #D8DEE9
|
||||||
|
selection_background #434C5E
|
||||||
|
|
||||||
|
color0 #3B4252
|
||||||
|
color1 #BF616A
|
||||||
|
color2 #A3BE8C
|
||||||
|
color3 #EBCB8B
|
||||||
|
color4 #81A1C1
|
||||||
|
color5 #B48EAD
|
||||||
|
color6 #88C0D0
|
||||||
|
color7 #E5E9F0
|
||||||
|
|
||||||
|
color8 #4C566A
|
||||||
|
color9 #BF616A
|
||||||
|
color10 #A3BE8C
|
||||||
|
color11 #EBCB8B
|
||||||
|
color12 #81A1C1
|
||||||
|
color13 #B48EAD
|
||||||
|
color14 #8FBCBB
|
||||||
|
color15 #ECEFF4
|
||||||
|
|
||||||
|
# Key bindings aligned with Alacritty config
|
||||||
|
map ctrl+shift+c copy_to_clipboard
|
||||||
|
map ctrl+shift+v paste_from_clipboard
|
||||||
|
map ctrl+shift+enter new_os_window
|
||||||
|
map ctrl+shift+f11 toggle_fullscreen
|
||||||
|
|
||||||
|
map ctrl+shift+equal change_font_size all +2.0
|
||||||
|
map ctrl+shift+minus change_font_size all -2.0
|
||||||
|
map ctrl+shift+0 change_font_size all 0
|
||||||
|
|
||||||
|
map ctrl+shift+up scroll_line_up
|
||||||
|
map ctrl+shift+down scroll_line_down
|
||||||
|
map ctrl+shift+page_up scroll_page_up
|
||||||
|
map ctrl+shift+page_down scroll_page_down
|
||||||
|
map ctrl+shift+home scroll_home
|
||||||
|
map ctrl+shift+end scroll_end
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Nix & Flake
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Результаты build (должны игнорироваться)
|
|
||||||
result
|
|
||||||
result-*
|
|
||||||
|
|
||||||
# Lock файлы (можно коммитить для воспроизводимости, но часто игнорируется)
|
|
||||||
# flake.lock
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Резервные и временные файлы
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
*.backup
|
|
||||||
*.bak
|
|
||||||
*~
|
|
||||||
.backup
|
|
||||||
.old
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Редакторы и IDE
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
.vscode/
|
|
||||||
.idea/
|
|
||||||
*.swp
|
|
||||||
*.swo
|
|
||||||
*.kate-swp
|
|
||||||
.vimrc.local
|
|
||||||
.nvimrc.local
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# ОС
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
.DS_Store
|
|
||||||
.AppleDouble
|
|
||||||
.LSOverride
|
|
||||||
Thumbs.db
|
|
||||||
ehthumbs.db
|
|
||||||
Desktop.ini
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
.Trash-*
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Разработка
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
.envrc
|
|
||||||
.direnv/
|
|
||||||
target/
|
|
||||||
dist/
|
|
||||||
build/
|
|
||||||
.cache/
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Логи
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
*.log
|
|
||||||
*.logs/
|
|
||||||
.DS_Store
|
|
||||||
Thumbs.db
|
|
||||||
|
|
||||||
# Temporary files
|
|
||||||
*.tmp
|
|
||||||
*.temp
|
|
||||||
-346
@@ -1,346 +0,0 @@
|
|||||||
# NixOS Configuration
|
|
||||||
|
|
||||||
Модульная конфигурация NixOS на базе Flakes с Home Manager для виртуальной машины.
|
|
||||||
|
|
||||||
## 📚 Документация
|
|
||||||
|
|
||||||
Атомарные гайды по отдельным задачам находятся в папке [`docs/`](docs/):
|
|
||||||
|
|
||||||
- **[docs/README.md](docs/README.md)** - Индекс всех гайдов
|
|
||||||
- **[docs/01-install-packages.md](docs/01-install-packages.md)** - Добавление/удаление пакетов
|
|
||||||
- **[docs/02-shell-environment.md](docs/02-shell-environment.md)** - Shell alias и переменные
|
|
||||||
- **[docs/03-networking.md](docs/03-networking.md)** - SSH, Firewall, сеть
|
|
||||||
- **[docs/04-devshell.md](docs/04-devshell.md)** - Разработка конфигурации
|
|
||||||
- **[docs/05-git-config.md](docs/05-git-config.md)** - Git конфигурация
|
|
||||||
- **[docs/06-adding-modules.md](docs/06-adding-modules.md)** - Создание новых модулей
|
|
||||||
- **[docs/07-troubleshooting.md](docs/07-troubleshooting.md)** - Отладка проблем
|
|
||||||
- **[docs/08-structure.md](docs/08-structure.md)** - Структура проекта
|
|
||||||
|
|
||||||
## Структура проекта
|
|
||||||
|
|
||||||
```
|
|
||||||
nixos/
|
|
||||||
├── README.md # Главная страница (ты здесь)
|
|
||||||
├── flake.nix # Главный флейк с inputs и outputs
|
|
||||||
├── configuration.nix # Главная конфигурация (импортирует модули)
|
|
||||||
├── hardware-configuration.nix # Автогенерированная конфигурация железа
|
|
||||||
│
|
|
||||||
├── docs/ # 📚 Документация (атомарные гайды)
|
|
||||||
│ ├── README.md # Индекс документации
|
|
||||||
│ ├── 01-install-packages.md # Как ставить программы
|
|
||||||
│ ├── 02-shell-environment.md # Shell alias и переменные
|
|
||||||
│ ├── 03-networking.md # SSH, Firewall, сеть
|
|
||||||
│ ├── 04-devshell.md # Разработка конфигурации
|
|
||||||
│ ├── 05-git-config.md # Git конфигурация
|
|
||||||
│ ├── 06-adding-modules.md # Создание новых модулей
|
|
||||||
│ ├── 07-troubleshooting.md # Отладка проблем
|
|
||||||
│ └── 08-structure.md # Структура проекта
|
|
||||||
│
|
|
||||||
├── modules/ # Системные модули
|
|
||||||
│ ├── system/ # Ядро системы
|
|
||||||
│ │ ├── boot.nix # GRUB, kernel modules
|
|
||||||
│ │ ├── nix.nix # Nix конфигурация
|
|
||||||
│ │ └── locale.nix # Язык, таймзона
|
|
||||||
│ │
|
|
||||||
│ ├── desktop/ # Рабочее окружение
|
|
||||||
│ │ ├── plasma.nix # KDE Plasma 6 + Wayland
|
|
||||||
│ │ └── pipewire.nix # Audio система
|
|
||||||
│ │
|
|
||||||
│ ├── networking/ # Сеть
|
|
||||||
│ │ └── default.nix # NetworkManager, Firewall
|
|
||||||
│ │
|
|
||||||
│ ├── services/ # Сервисы
|
|
||||||
│ │ └── default.nix # SSH, Firefox и др.
|
|
||||||
│ │
|
|
||||||
│ ├── users/ # Пользователи
|
|
||||||
│ │ └── ada.nix # Пользователь ada
|
|
||||||
│ │
|
|
||||||
│ └── virtualisation/ # Виртуализация
|
|
||||||
│ ├── virtualbox.nix # VirtualBox Guest
|
|
||||||
│ └── qemu-guest.nix # QEMU/KVM Guest
|
|
||||||
│
|
|
||||||
└── home/ # Home Manager (пользователь)
|
|
||||||
└── ada/
|
|
||||||
├── default.nix # Главный файл (импорты)
|
|
||||||
├── packages.nix # Пакеты (~50)
|
|
||||||
├── git.nix # Git конфиг
|
|
||||||
├── zsh.nix # Shell алиасы
|
|
||||||
├── vim.nix # Vim конфиг
|
|
||||||
├── alacritty.nix # Терминал
|
|
||||||
├── micro.nix # Micro редактор
|
|
||||||
├── tmux.nix # Tmux конфиг
|
|
||||||
└── tools.nix # CLI утилиты
|
|
||||||
```
|
|
||||||
|
|
||||||
## Особенности конфигурации
|
|
||||||
|
|
||||||
### ✨ Система
|
|
||||||
- **Flakes**: Современная система управления зависимостями Nix
|
|
||||||
- **Home Manager**: Управление пользовательским окружением
|
|
||||||
- **KDE Plasma 6**: Последняя версия с поддержкой Wayland
|
|
||||||
- **PipeWire**: Современная аудиосистема
|
|
||||||
- **Русская раскладка**: Настроено переключение по Caps Lock
|
|
||||||
|
|
||||||
### 🛠 Утилиты для работы с Nix
|
|
||||||
|
|
||||||
**`nh` (рекомендуется)** - современный помощник для работы с NixOS:
|
|
||||||
- ✅ Автоматически показывает diff между поколениями после сборки
|
|
||||||
- ✅ Использует nix-output-monitor для красивого вывода
|
|
||||||
- ✅ Интерактивная очистка с предпросмотром удаляемых пакетов
|
|
||||||
- ✅ Более простой и короткий синтаксис команд
|
|
||||||
- ✅ Автоматически определяет конфигурацию из текущей директории
|
|
||||||
|
|
||||||
**Другие утилиты:**
|
|
||||||
- `nix-output-monitor` (nom) - красивый вывод при сборке
|
|
||||||
- `nvd` - diff между поколениями системы
|
|
||||||
- `nix-tree` - визуализация зависимостей
|
|
||||||
- `nix-index` - поиск файлов в nixpkgs
|
|
||||||
- `comma` - запуск программ без установки
|
|
||||||
- `nix-du` - анализ использования диска
|
|
||||||
- `nixfmt-classic` - форматирование Nix кода
|
|
||||||
|
|
||||||
### 💻 Development tools
|
|
||||||
- **Editors**: Vim, Neovim, VS Code, IntelliJ IDEA Community
|
|
||||||
- **Shell**: ZSH с Oh-My-Zsh и кастомными алиасами
|
|
||||||
- **Git**: Git, GitHub CLI (gh), LazyGit
|
|
||||||
- **Terminal**: Tmux с улучшенной конфигурацией
|
|
||||||
- **Modern CLI tools**: eza, bat, fzf, ripgrep, fd
|
|
||||||
|
|
||||||
### 🔧 Виртуализация
|
|
||||||
|
|
||||||
**VirtualBox Guest:**
|
|
||||||
- Drag & Drop включен
|
|
||||||
- Shared clipboard включен
|
|
||||||
- Guest additions настроены
|
|
||||||
|
|
||||||
**QEMU/KVM Guest:**
|
|
||||||
- QEMU Guest Agent включен
|
|
||||||
- SPICE VDAgent для интеграции
|
|
||||||
- Улучшенная производительность
|
|
||||||
|
|
||||||
## Как использовать
|
|
||||||
|
|
||||||
### Первоначальная сборка
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
|
|
||||||
# Обновить зависимости flake
|
|
||||||
nix flake update
|
|
||||||
|
|
||||||
# Стандартный способ:
|
|
||||||
sudo nixos-rebuild switch --flake .#nixos-vm
|
|
||||||
|
|
||||||
# Или с помощью nh (рекомендуется):
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Применение изменений
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Тестовая сборка (без добавления в boot menu)
|
|
||||||
sudo nixos-rebuild test --flake .#nixos-vm
|
|
||||||
# С nh:
|
|
||||||
nh os test
|
|
||||||
|
|
||||||
# Применить и добавить в boot menu
|
|
||||||
sudo nixos-rebuild switch --flake .#nixos-vm
|
|
||||||
# С nh:
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# Собрать и добавить в boot menu без активации сейчас
|
|
||||||
sudo nixos-rebuild boot --flake .#nixos-vm
|
|
||||||
# С nh:
|
|
||||||
nh os boot
|
|
||||||
```
|
|
||||||
|
|
||||||
### Алиасы (доступны в ZSH после первой сборки)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Пересборка системы (использует nh)
|
|
||||||
nixos-rebuild
|
|
||||||
|
|
||||||
# Тестовая сборка (использует nh)
|
|
||||||
nixos-test
|
|
||||||
|
|
||||||
# Сборка без активации (использует nh)
|
|
||||||
nixos-boot
|
|
||||||
|
|
||||||
# Обновление флейка и пересборка
|
|
||||||
nixos-update
|
|
||||||
|
|
||||||
# Список поколений системы
|
|
||||||
nixos-list
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Примечание**: Алиасы в этой конфигурации используют утилиту `nh` для более удобной работы.
|
|
||||||
> Если хотите использовать стандартные команды напрямую, см. разделы выше.
|
|
||||||
|
|
||||||
### Обновление flake inputs
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
|
|
||||||
# Обновить зависимости
|
|
||||||
nix flake update
|
|
||||||
|
|
||||||
# Применить изменения - стандартный способ:
|
|
||||||
sudo nixos-rebuild switch --flake .#nixos-vm
|
|
||||||
|
|
||||||
# Или с nh:
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Сравнение поколений системы
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Сравнить текущее и предыдущее поколение - стандартный способ:
|
|
||||||
nvd diff /run/current-system /run/booted-system
|
|
||||||
|
|
||||||
# С nh (автоматически показывает diff после сборки):
|
|
||||||
nh os switch # автоматически покажет изменения
|
|
||||||
|
|
||||||
# Красивый вывод при сборке с nom:
|
|
||||||
nom build .#nixosConfigurations.nixos-vm.config.system.build.toplevel
|
|
||||||
|
|
||||||
# nh по умолчанию использует nom для красивого вывода
|
|
||||||
```
|
|
||||||
|
|
||||||
### Просмотр зависимостей пакета
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nix-tree /run/current-system
|
|
||||||
```
|
|
||||||
|
|
||||||
## Добавление нового пакета
|
|
||||||
|
|
||||||
### Системный пакет
|
|
||||||
Отредактируйте нужный модуль в `modules/` и добавьте пакет в `environment.systemPackages`.
|
|
||||||
|
|
||||||
### Пользовательский пакет
|
|
||||||
Отредактируйте `home/ada/default.nix` и добавьте пакет в `home.packages`.
|
|
||||||
|
|
||||||
## Создание нового модуля
|
|
||||||
|
|
||||||
1. Создайте файл в соответствующей директории `modules/`
|
|
||||||
2. Добавьте import в [configuration.nix](configuration.nix)
|
|
||||||
3. Примените изменения
|
|
||||||
|
|
||||||
Пример:
|
|
||||||
```nix
|
|
||||||
# modules/services/docker.nix
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
users.users.ada.extraGroups = [ "docker" ];
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Полезные команды
|
|
||||||
|
|
||||||
### Поиск и установка пакетов
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Поиск пакета - стандартный способ:
|
|
||||||
nix search nixpkgs <package>
|
|
||||||
|
|
||||||
# С nh (быстрее и удобнее):
|
|
||||||
nh search <package>
|
|
||||||
|
|
||||||
# Запустить программу без установки:
|
|
||||||
nix run nixpkgs#<package>
|
|
||||||
|
|
||||||
# Или с помощью comma:
|
|
||||||
, <package>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Управление системой
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Garbage collection - стандартный способ:
|
|
||||||
sudo nix-collect-garbage -d
|
|
||||||
sudo nix-collect-garbage --delete-older-than 7d
|
|
||||||
|
|
||||||
# С nh (интерактивно, безопаснее):
|
|
||||||
nh clean all # очистить всё старое
|
|
||||||
nh clean user # только пользовательские профили
|
|
||||||
nh clean system # только системные поколения
|
|
||||||
|
|
||||||
# Оптимизация store:
|
|
||||||
nix-store --optimise
|
|
||||||
|
|
||||||
# Починить права в /nix/store:
|
|
||||||
sudo nix-store --verify --check-contents --repair
|
|
||||||
```
|
|
||||||
|
|
||||||
## Кастомизация
|
|
||||||
|
|
||||||
### Изменить email в Git
|
|
||||||
Отредактируйте `home/ada/default.nix`:
|
|
||||||
```nix
|
|
||||||
programs.git = {
|
|
||||||
userEmail = "ваш-email@example.com";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
### Добавить ZSH плагины
|
|
||||||
Отредактируйте `home/ada/default.nix`:
|
|
||||||
```nix
|
|
||||||
programs.zsh.oh-my-zsh.plugins = [
|
|
||||||
"git"
|
|
||||||
"sudo"
|
|
||||||
"docker"
|
|
||||||
"ваш-плагин"
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
### Изменить тему ZSH
|
|
||||||
```nix
|
|
||||||
programs.zsh.oh-my-zsh.theme = "agnoster";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Ошибка при сборке
|
|
||||||
```bash
|
|
||||||
# Посмотрите логи - стандартный способ:
|
|
||||||
sudo nixos-rebuild switch --flake .#nixos-vm --show-trace
|
|
||||||
|
|
||||||
# С nh (более подробный вывод по умолчанию):
|
|
||||||
nh os switch -- --show-trace
|
|
||||||
|
|
||||||
# Проверьте синтаксис:
|
|
||||||
nix flake check
|
|
||||||
```
|
|
||||||
|
|
||||||
### Откатиться на предыдущее поколение
|
|
||||||
```bash
|
|
||||||
# Список поколений - стандартный способ:
|
|
||||||
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
|
|
||||||
|
|
||||||
# С nh:
|
|
||||||
nh os list # показать все поколения системы
|
|
||||||
|
|
||||||
# Откат на предыдущее поколение - стандартный способ:
|
|
||||||
sudo nixos-rebuild switch --rollback
|
|
||||||
|
|
||||||
# С nh (откат на конкретное поколение):
|
|
||||||
nh os switch --generation <номер>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Обновить только Home Manager
|
|
||||||
```bash
|
|
||||||
# Стандартный способ:
|
|
||||||
home-manager switch --flake .#ada
|
|
||||||
|
|
||||||
# С nh:
|
|
||||||
nh home switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Ссылки
|
|
||||||
|
|
||||||
- [NixOS Manual](https://nixos.org/manual/nixos/stable/)
|
|
||||||
- [Home Manager Manual](https://nix-community.github.io/home-manager/)
|
|
||||||
- [Nixpkgs Search](https://search.nixos.org/packages)
|
|
||||||
- [NixOS Options Search](https://search.nixos.org/options)
|
|
||||||
- [Nix Flakes](https://nixos.wiki/wiki/Flakes)
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# Конфигурация железа
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
# Системные модули
|
|
||||||
./modules/system/boot.nix
|
|
||||||
./modules/system/nix.nix
|
|
||||||
./modules/system/locale.nix
|
|
||||||
|
|
||||||
# Окружение рабочего стола
|
|
||||||
./modules/desktop/plasma.nix
|
|
||||||
./modules/desktop/pipewire.nix
|
|
||||||
|
|
||||||
# Сеть
|
|
||||||
./modules/networking/default.nix
|
|
||||||
|
|
||||||
# Сервисы
|
|
||||||
./modules/services/default.nix
|
|
||||||
|
|
||||||
# Виртуализация
|
|
||||||
./modules/virtualisation/virtualbox.nix
|
|
||||||
./modules/virtualisation/qemu-guest.nix
|
|
||||||
|
|
||||||
# Пользователи
|
|
||||||
./modules/users/ada.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Версия релиза NixOS
|
|
||||||
# Это значение определяет релиз NixOS, из которого были взяты настройки по умолчанию
|
|
||||||
# для stateful данных, таких как расположение файлов и версии баз данных в вашей системе.
|
|
||||||
# Рекомендуется оставить это значение таким, каким оно было при первой установке системы.
|
|
||||||
# Перед изменением этого значения прочитайте документацию для этой опции
|
|
||||||
# (например, man configuration.nix или https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
# Добавление и удаление пакетов
|
|
||||||
|
|
||||||
Как управлять программами в конфигурации.
|
|
||||||
|
|
||||||
## Где пакеты?
|
|
||||||
|
|
||||||
Пакеты описаны в файле:
|
|
||||||
```
|
|
||||||
home/ada/packages.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Добавить пакет
|
|
||||||
|
|
||||||
### Способ 1: Через редактор
|
|
||||||
|
|
||||||
1. Открыть `home/ada/packages.nix`
|
|
||||||
2. Найти подходящую категорию (например "Средства разработки")
|
|
||||||
3. Добавить пакет:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Было:
|
|
||||||
htop # Интерактивный монитор процессов
|
|
||||||
|
|
||||||
# Стало:
|
|
||||||
htop # Интерактивный монитор процессов
|
|
||||||
lazygit # Интерактивный git UI
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Собрать конфигурацию:
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Способ 2: Найти пакет в nixpkgs
|
|
||||||
|
|
||||||
Если не знаешь точное имя пакета:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Поиск в nixpkgs
|
|
||||||
nix search nixpkgs <package-name>
|
|
||||||
|
|
||||||
# Пример:
|
|
||||||
nix search nixpkgs git-lfs
|
|
||||||
```
|
|
||||||
|
|
||||||
## Удалить пакет
|
|
||||||
|
|
||||||
1. Открыть `home/ada/packages.nix`
|
|
||||||
2. Удалить строку с пакетом
|
|
||||||
3. Собрать:
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Категории пакетов
|
|
||||||
|
|
||||||
В файле `packages.nix` пакеты организованы по категориям:
|
|
||||||
|
|
||||||
```
|
|
||||||
Редакторы → vim, neovim, micro
|
|
||||||
IDE → vscode, idea-community, zed
|
|
||||||
Терминал → alacritty
|
|
||||||
Dev tools → tmux, fzf, ripgrep, fd, bat, eza
|
|
||||||
Git tools → git, gh, lazygit
|
|
||||||
Сеть → curl, wget, ssh, mosh, nmap
|
|
||||||
БД → sqlite, postgresql
|
|
||||||
Утилиты → jq, yq, zip, unzip, gnupg
|
|
||||||
Шрифты → nerdfonts (FiraCode)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Правила оформления
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# ✅ Хорошо - с комментарием
|
|
||||||
ripgrep # Быстрый поиск в файлах (rg)
|
|
||||||
|
|
||||||
# ❌ Плохо - без комментария
|
|
||||||
ripgrep
|
|
||||||
|
|
||||||
# ✅ Хорошо - выровнены
|
|
||||||
fzf # Интерактивный поиск
|
|
||||||
ripgrep # Быстрый поиск
|
|
||||||
|
|
||||||
# ❌ Плохо - не выровнены
|
|
||||||
fzf # Интерактивный поиск
|
|
||||||
ripgrep # Быстрый поиск
|
|
||||||
```
|
|
||||||
|
|
||||||
## Проверка перед сборкой
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить синтаксис
|
|
||||||
nix flake check
|
|
||||||
|
|
||||||
# Или просто пробуй собрать:
|
|
||||||
nh os test # Тестовая сборка (без применения)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Примеры
|
|
||||||
|
|
||||||
### Добавить lazydocker
|
|
||||||
|
|
||||||
1. Открыть `home/ada/packages.nix`
|
|
||||||
2. В разделе "Dev tools" добавить:
|
|
||||||
```nix
|
|
||||||
lazydocker # Docker UI
|
|
||||||
```
|
|
||||||
3. Собрать:
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Добавить несколько пакетов
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Быстрее найти нужные команды
|
|
||||||
fzf # Поиск
|
|
||||||
ripgrep-all # Поиск по всем типам
|
|
||||||
fd # find аналог
|
|
||||||
|
|
||||||
# Анализ и визуализация
|
|
||||||
tokei # Анализ кода
|
|
||||||
nitch # Системная информация
|
|
||||||
```
|
|
||||||
|
|
||||||
## Рядом интересные пакеты
|
|
||||||
|
|
||||||
- `comma` - запустить пакет без установки: `, package`
|
|
||||||
- `nix-index` - найти файл в nixpkgs
|
|
||||||
- `nixpkgs-fmt` - форматирование Nix кода
|
|
||||||
@@ -1,203 +0,0 @@
|
|||||||
# Shell окружение и алиасы
|
|
||||||
|
|
||||||
Как настроить ZSH, добавить alias и переменные окружения.
|
|
||||||
|
|
||||||
## Где окружение?
|
|
||||||
|
|
||||||
Конфигурация ZSH находится в:
|
|
||||||
```
|
|
||||||
home/ada/zsh.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Добавить alias
|
|
||||||
|
|
||||||
1. Открыть `home/ada/zsh.nix`
|
|
||||||
2. Найти секцию `shellAliases`
|
|
||||||
3. Добавить новый alias:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Было:
|
|
||||||
ls = "eza --icons --group-directories-first";
|
|
||||||
la = "eza -la --icons --group-directories-first --git";
|
|
||||||
|
|
||||||
# Стало:
|
|
||||||
ls = "eza --icons --group-directories-first";
|
|
||||||
la = "eza -la --icons --group-directories-first --git";
|
|
||||||
lh = "eza -la --icons --group-directories-first --git | head -20"; # Первые 20
|
|
||||||
```
|
|
||||||
|
|
||||||
4. Собрать:
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Добавить переменную окружения
|
|
||||||
|
|
||||||
Переменные находятся в секции `sessionVariables`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
sessionVariables = {
|
|
||||||
EDITOR = "micro";
|
|
||||||
VISUAL = "code --wait";
|
|
||||||
PAGER = "less";
|
|
||||||
# Добавить новую переменную:
|
|
||||||
MY_CUSTOM_VAR = "value";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Примеры alias
|
|
||||||
|
|
||||||
### Быстрая навигация
|
|
||||||
|
|
||||||
```nix
|
|
||||||
dl = "cd ~/Downloads";
|
|
||||||
dt = "cd ~/Desktop";
|
|
||||||
dev = "cd ~/dev";
|
|
||||||
```
|
|
||||||
|
|
||||||
### Безопасность
|
|
||||||
|
|
||||||
```nix
|
|
||||||
rm = "rm -i"; # Подтверждение удаления
|
|
||||||
cp = "cp -i"; # Подтверждение копирования
|
|
||||||
mv = "mv -i"; # Подтверждение перемещения
|
|
||||||
```
|
|
||||||
|
|
||||||
### Работа с Git
|
|
||||||
|
|
||||||
```nix
|
|
||||||
g = "git";
|
|
||||||
gs = "git status";
|
|
||||||
ga = "git add";
|
|
||||||
gp = "git push";
|
|
||||||
gl = "git log --oneline";
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker
|
|
||||||
|
|
||||||
```nix
|
|
||||||
d = "docker";
|
|
||||||
dps = "docker ps";
|
|
||||||
dpsa = "docker ps -a";
|
|
||||||
dex = "docker exec -it";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Организация алиасов
|
|
||||||
|
|
||||||
В `zsh.nix` алиасы организованы по категориям:
|
|
||||||
|
|
||||||
```
|
|
||||||
Навигация (cd ...)
|
|
||||||
Файлы (ls variants)
|
|
||||||
Безопасность (rm, cp, mv)
|
|
||||||
Система (grep, df, du)
|
|
||||||
Сеть (ping, ports)
|
|
||||||
NixOS (nixos-rebuild и т.д.)
|
|
||||||
Git
|
|
||||||
Docker
|
|
||||||
Kubectl
|
|
||||||
Lazy инструменты
|
|
||||||
```
|
|
||||||
|
|
||||||
## История ZSH
|
|
||||||
|
|
||||||
История настраивается в секции `history`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
history = {
|
|
||||||
size = 50000; # Размер истории
|
|
||||||
save = 50000; # Сохранять 50000 команд
|
|
||||||
ignoreDups = true; # Не сохранять дубликаты
|
|
||||||
ignoreSpace = true; # Не сохранять команды начинающиеся с пробела
|
|
||||||
share = true; # Делиться историей между сессиями
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Интеграции
|
|
||||||
|
|
||||||
### Zoxide (быстрая навигация)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
z <directory> # Перейти в папку
|
|
||||||
zi # Интерактивный выбор
|
|
||||||
```
|
|
||||||
|
|
||||||
### Direnv (окружения)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# .envrc файл в папке с переменными
|
|
||||||
cat > .envrc << EOF
|
|
||||||
export MY_VAR=value
|
|
||||||
EOF
|
|
||||||
|
|
||||||
direnv allow # Разрешить автоматическое применение
|
|
||||||
```
|
|
||||||
|
|
||||||
### FZF (интерактивный поиск)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
Ctrl+R # Поиск по истории
|
|
||||||
Ctrl+T # Поиск файлов
|
|
||||||
```
|
|
||||||
|
|
||||||
## Проверка после изменения
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Просто применить и проверить
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# Потом проверить alias
|
|
||||||
alias ls # Показать что это такое
|
|
||||||
```
|
|
||||||
|
|
||||||
## Примеры полезных alias
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Список процессов
|
|
||||||
ps = "ps aux | grep";
|
|
||||||
|
|
||||||
# Размер папок
|
|
||||||
du_sort = "du -sh * | sort -hr";
|
|
||||||
|
|
||||||
# Network
|
|
||||||
ip_local = "ip -4 addr show | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}' | grep -v 127.0.0.1";
|
|
||||||
|
|
||||||
# Поиск по типу файла
|
|
||||||
find_py = "find . -name '*.py'";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Переменные окружения
|
|
||||||
|
|
||||||
### Полезные переменные
|
|
||||||
|
|
||||||
```nix
|
|
||||||
sessionVariables = {
|
|
||||||
# Главный редактор
|
|
||||||
EDITOR = "micro";
|
|
||||||
VISUAL = "code --wait";
|
|
||||||
|
|
||||||
# Пейджер
|
|
||||||
PAGER = "less";
|
|
||||||
|
|
||||||
# Данные
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
|
|
||||||
# Язык
|
|
||||||
LANG = "en_US.UTF-8";
|
|
||||||
|
|
||||||
# Git
|
|
||||||
GIT_AUTHOR_NAME = "Dmitry";
|
|
||||||
GIT_AUTHOR_EMAIL = "ada.dmitry@gmail.com";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Часто изменяемое
|
|
||||||
|
|
||||||
Самые частые изменения:
|
|
||||||
1. Добавить новый alias
|
|
||||||
2. Изменить EDITOR
|
|
||||||
3. Добавить PATH переменную
|
|
||||||
|
|
||||||
Всё это делается в `zsh.nix` в соответствующих секциях.
|
|
||||||
@@ -1,234 +0,0 @@
|
|||||||
# Сеть: 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
|
|
||||||
```
|
|
||||||
@@ -1,188 +0,0 @@
|
|||||||
# DevShell: Окружение для разработки
|
|
||||||
|
|
||||||
Как использовать devShell для работы с конфигурацией.
|
|
||||||
|
|
||||||
## Что такое devShell?
|
|
||||||
|
|
||||||
DevShell - это временное окружение с инструментами для разработки конфигурации.
|
|
||||||
|
|
||||||
## Войти в devShell
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
nix develop
|
|
||||||
```
|
|
||||||
|
|
||||||
После этого ты находишься в окружении с дополнительными инструментами.
|
|
||||||
|
|
||||||
## Что в devShell?
|
|
||||||
|
|
||||||
Когда входишь в devShell, доступны:
|
|
||||||
|
|
||||||
```
|
|
||||||
nix-output-monitor (nom) - Красивый вывод Nix
|
|
||||||
nvd - Сравнение версий
|
|
||||||
nix-tree - Дерево зависимостей
|
|
||||||
nixfmt-classic - Форматер Nix кода
|
|
||||||
vim, nano - Редакторы
|
|
||||||
git, ripgrep, fd - Утилиты
|
|
||||||
```
|
|
||||||
|
|
||||||
## Использование devShell
|
|
||||||
|
|
||||||
### Форматировать код
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Внутри devShell:
|
|
||||||
nixfmt-classic home/ada/*.nix
|
|
||||||
nixfmt-classic modules/**/*.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
### Проверить зависимости
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Посмотреть дерево
|
|
||||||
nix-tree nixpkgs#<package-name>
|
|
||||||
|
|
||||||
# Сравнить версии между поколениями
|
|
||||||
nvd diff /nix/var/nix/profiles/system /run/current-system
|
|
||||||
```
|
|
||||||
|
|
||||||
### Красивый вывод сборки
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# С красивым выводом
|
|
||||||
nix-output-monitor -- nix build .
|
|
||||||
```
|
|
||||||
|
|
||||||
## Редактировать конфигурацию
|
|
||||||
|
|
||||||
Внутри devShell можно редактировать файлы и сразу их форматировать:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
vim home/ada/packages.nix
|
|
||||||
|
|
||||||
# После редактирования:
|
|
||||||
nixfmt-classic home/ada/packages.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Автоматический вход
|
|
||||||
|
|
||||||
Если у тебя есть `.envrc`, devShell загружается автоматически при входе в папку:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
# Если есть direnv - автоматически загрузится devShell
|
|
||||||
```
|
|
||||||
|
|
||||||
Спросит разрешение первый раз:
|
|
||||||
```bash
|
|
||||||
direnv allow
|
|
||||||
```
|
|
||||||
|
|
||||||
## Использование с IDE
|
|
||||||
|
|
||||||
### VS Code
|
|
||||||
|
|
||||||
Если открыть папку в VS Code, он автоматически предложит использовать devShell.
|
|
||||||
|
|
||||||
### Vim/Neovim
|
|
||||||
|
|
||||||
Перед запуском vim:
|
|
||||||
```bash
|
|
||||||
nix develop
|
|
||||||
vim home/ada/zsh.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Выход из devShell
|
|
||||||
|
|
||||||
```bash
|
|
||||||
exit
|
|
||||||
# или
|
|
||||||
Ctrl+D
|
|
||||||
```
|
|
||||||
|
|
||||||
## Типичный workflow
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Войти в devShell
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
nix develop
|
|
||||||
|
|
||||||
# 2. Отредактировать файл
|
|
||||||
vim home/ada/packages.nix
|
|
||||||
|
|
||||||
# 3. Форматировать
|
|
||||||
nixfmt-classic home/ada/packages.nix
|
|
||||||
|
|
||||||
# 4. Проверить синтаксис
|
|
||||||
nix flake check
|
|
||||||
|
|
||||||
# 5. Вернуться в нормальный shell
|
|
||||||
exit
|
|
||||||
|
|
||||||
# 6. Собрать конфигурацию (вне devShell)
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Команды в devShell
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Форматирование
|
|
||||||
nixfmt-classic **/*.nix
|
|
||||||
|
|
||||||
# Проверка
|
|
||||||
nix flake check
|
|
||||||
nix flake show --all-systems
|
|
||||||
|
|
||||||
# Анализ
|
|
||||||
nix-tree <package>
|
|
||||||
nvd diff
|
|
||||||
|
|
||||||
# Сборка
|
|
||||||
nom -- nix build .
|
|
||||||
|
|
||||||
# Поиск
|
|
||||||
rg "pattern"
|
|
||||||
fd "pattern"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Возможные проблемы
|
|
||||||
|
|
||||||
### "command not found"
|
|
||||||
|
|
||||||
Если команда не найдена, убедись что ты внутри devShell:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить
|
|
||||||
echo $IN_NIX_SHELL
|
|
||||||
|
|
||||||
# Если пусто, войти:
|
|
||||||
nix develop
|
|
||||||
```
|
|
||||||
|
|
||||||
### Долгая загрузка devShell
|
|
||||||
|
|
||||||
Первая загрузка может быть долгой. После этого будет быстрее.
|
|
||||||
|
|
||||||
### Нужен другой инструмент?
|
|
||||||
|
|
||||||
Открой `flake.nix`, найди секцию `devShell` и добавь пакет:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
devShells.${system}.default = pkgs.mkShell {
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
# Существующие
|
|
||||||
nix-output-monitor
|
|
||||||
|
|
||||||
# Добавить новый:
|
|
||||||
your-package
|
|
||||||
];
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
Потом собери:
|
|
||||||
```bash
|
|
||||||
exit # Выйти из старого devShell
|
|
||||||
nix develop # Войти в новый
|
|
||||||
```
|
|
||||||
@@ -1,228 +0,0 @@
|
|||||||
# Git конфигурация
|
|
||||||
|
|
||||||
Как настроить Git алиасы и конфигурацию.
|
|
||||||
|
|
||||||
## Где Git конфиг?
|
|
||||||
|
|
||||||
Git конфигурация находится в:
|
|
||||||
```
|
|
||||||
home/ada/git.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пользователь
|
|
||||||
|
|
||||||
```nix
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Dmitry";
|
|
||||||
userEmail = "ada.dmitry@gmail.com";
|
|
||||||
```
|
|
||||||
|
|
||||||
Изменить имя и email:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
userName = "Твоё имя";
|
|
||||||
userEmail = "твой@email.com";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Добавить alias
|
|
||||||
|
|
||||||
Алиасы находятся в `aliases`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
aliases = {
|
|
||||||
# Базовые
|
|
||||||
st = "status";
|
|
||||||
co = "checkout";
|
|
||||||
br = "branch";
|
|
||||||
|
|
||||||
# Твой новый alias:
|
|
||||||
quick-commit = "commit -am";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
### Примеры полезных алиасов
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Быстрая работа с коммитами
|
|
||||||
cm = "commit -m";
|
|
||||||
amend = "commit --amend";
|
|
||||||
undo = "reset --soft HEAD^";
|
|
||||||
|
|
||||||
# Логи
|
|
||||||
lg = "log --graph --oneline --all";
|
|
||||||
recent = "log -10 --oneline";
|
|
||||||
|
|
||||||
# Ветки
|
|
||||||
new-branch = "checkout -b";
|
|
||||||
sync = "pull --rebase";
|
|
||||||
|
|
||||||
# Простые проверки
|
|
||||||
changed = "diff --name-only";
|
|
||||||
staged = "diff --cached";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Глобальный gitignore
|
|
||||||
|
|
||||||
Файлы которые всегда игнорируются:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
ignores = [
|
|
||||||
".DS_Store" # macOS
|
|
||||||
"Thumbs.db" # Windows
|
|
||||||
".vscode/" # VS Code
|
|
||||||
".idea/" # IntelliJ
|
|
||||||
"*.swp" # Vim
|
|
||||||
# Добавить свой:
|
|
||||||
".myfile"
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
## Цвета
|
|
||||||
|
|
||||||
Визуальная конфигурация разных элементов:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
"color \"branch\"" = {
|
|
||||||
current = "yellow bold";
|
|
||||||
local = "green";
|
|
||||||
remote = "cyan";
|
|
||||||
};
|
|
||||||
|
|
||||||
"color \"diff\"" = {
|
|
||||||
meta = "yellow";
|
|
||||||
old = "red bold";
|
|
||||||
new = "green bold";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
Можешь изменять цвета на свой вкус.
|
|
||||||
|
|
||||||
## Основные настройки
|
|
||||||
|
|
||||||
```nix
|
|
||||||
extraConfig = {
|
|
||||||
# Ветка по умолчанию
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
|
|
||||||
# Автоматический rebase при pull
|
|
||||||
pull.rebase = true;
|
|
||||||
|
|
||||||
# Редактор для коммитов
|
|
||||||
core.editor = "micro";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Проверка конфигурации
|
|
||||||
|
|
||||||
После изменений собери конфигурацию:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
Проверить что применилось:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git config --list | grep user
|
|
||||||
git config user.name
|
|
||||||
git alias # Если есть такой alias
|
|
||||||
```
|
|
||||||
|
|
||||||
## Использование алиасов
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Вместо:
|
|
||||||
git status
|
|
||||||
|
|
||||||
# Используешь:
|
|
||||||
g st # Если есть alias g = git
|
|
||||||
```
|
|
||||||
|
|
||||||
## Работа с удалёнными репозиториями
|
|
||||||
|
|
||||||
Если нужны специальные алиасы для pull/push:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# В алиасах:
|
|
||||||
pom = "push origin main";
|
|
||||||
plm = "pull origin main";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Слияние веток
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Алиасы для слияния
|
|
||||||
merge-main = "merge main";
|
|
||||||
merge-dev = "merge develop";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Интерактивные операции
|
|
||||||
|
|
||||||
Хорошие алиасы для интерактивной работы:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
interactive = "rebase -i";
|
|
||||||
fixup = "rebase -i --autosquash";
|
|
||||||
```
|
|
||||||
|
|
||||||
## Проверка перед применением
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Посмотреть текущие алиасы
|
|
||||||
git config --get-regexp alias
|
|
||||||
|
|
||||||
# Проверить синтаксис после редактирования
|
|
||||||
nix flake check
|
|
||||||
```
|
|
||||||
|
|
||||||
## Git UI
|
|
||||||
|
|
||||||
Если хочешь использовать интерактивный Git UI:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
lazygit # Уже установлен в пакетах
|
|
||||||
```
|
|
||||||
|
|
||||||
## Частые операции
|
|
||||||
|
|
||||||
### Быстрый коммит
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Добавить алиас
|
|
||||||
quick = "commit -am";
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git quick "commit message"
|
|
||||||
```
|
|
||||||
|
|
||||||
### История файла
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# Алиас
|
|
||||||
history = "log --oneline";
|
|
||||||
```
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git history <file>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Визуальное дерево
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Уже есть
|
|
||||||
git lg # или git l
|
|
||||||
```
|
|
||||||
|
|
||||||
## Если что-то сломалось
|
|
||||||
|
|
||||||
Вернуть конфиг по умолчанию:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Отменить последние изменения
|
|
||||||
git checkout home/ada/git.nix
|
|
||||||
|
|
||||||
# Пересобрать
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
@@ -1,302 +0,0 @@
|
|||||||
# Добавление новых модулей
|
|
||||||
|
|
||||||
Как создавать расширяющие конфигурацию новые модули.
|
|
||||||
|
|
||||||
## Что такое модуль?
|
|
||||||
|
|
||||||
Модуль - это файл `.nix` который описывает часть конфигурации:
|
|
||||||
|
|
||||||
```
|
|
||||||
modules/system/boot.nix - Загрузчик
|
|
||||||
modules/desktop/plasma.nix - Рабочий стол
|
|
||||||
home/ada/vim.nix - Vim конфигурация
|
|
||||||
```
|
|
||||||
|
|
||||||
## Структура модуля
|
|
||||||
|
|
||||||
Простой модуль выглядит так:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Здесь твоя конфигурация
|
|
||||||
services.myservice.enable = true;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Создание системного модуля
|
|
||||||
|
|
||||||
### Пример: Добавить Transmission (торрент клиент)
|
|
||||||
|
|
||||||
1. Создать файл `modules/services/transmission.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.transmission = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Конфигурация
|
|
||||||
rpc-port = 6969;
|
|
||||||
download-dir = "/home/ada/Downloads";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Добавить импорт в `configuration.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
imports = [
|
|
||||||
# ... существующие
|
|
||||||
./modules/services/transmission.nix # Добавить эту строку
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Собрать:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Пример: Добавить VirtualBox (уже есть)
|
|
||||||
|
|
||||||
Модуль находится в `modules/virtualisation/virtualbox.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
virtualisation.virtualbox.host.enable = true;
|
|
||||||
virtualisation.virtualbox.guest.enable = true;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Создание Home Manager модуля
|
|
||||||
|
|
||||||
### Пример: Конфигурировать Neovim
|
|
||||||
|
|
||||||
1. Создать файл `home/ada/neovim.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.neovim = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
set number
|
|
||||||
set relativenumber
|
|
||||||
set tabstop=2
|
|
||||||
'';
|
|
||||||
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
vim-sensible
|
|
||||||
nord-vim
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Добавить импорт в `home/ada/default.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
imports = [
|
|
||||||
# ... существующие
|
|
||||||
./neovim.nix # Добавить
|
|
||||||
];
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Собрать:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Распространённые системные модули
|
|
||||||
|
|
||||||
### Принтер CUPS
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.printing.enable = true;
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### PostgreSQL
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.postgresql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.postgresql;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### MySQL
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.mysql = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.mysql;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
|
|
||||||
users.extraGroups.docker = {
|
|
||||||
members = [ "ada" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Распространённые Home Manager модули
|
|
||||||
|
|
||||||
### Kitty терминал
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
font_family = "FiraCode";
|
|
||||||
font_size = 14;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Helix редактор
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.helix = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Starship (красивый prompt)
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Правила при создании модулей
|
|
||||||
|
|
||||||
✅ **Делай:**
|
|
||||||
- Используй русские комментарии
|
|
||||||
- Оставляй пустые строки между секциями
|
|
||||||
- Документируй нетривиальные вещи
|
|
||||||
|
|
||||||
❌ **Не делай:**
|
|
||||||
- Не смешивай систему и Home Manager в одном файле
|
|
||||||
- Не создавай огромные модули (разбей на части)
|
|
||||||
- Не создавай дублирующие друг друга файлы
|
|
||||||
|
|
||||||
## Организация модулей
|
|
||||||
|
|
||||||
Системные модули по категориям:
|
|
||||||
|
|
||||||
```
|
|
||||||
modules/
|
|
||||||
├── system/ - Ядро системы
|
|
||||||
│ ├── boot.nix - Загрузчик
|
|
||||||
│ ├── nix.nix - Nix конфиг
|
|
||||||
│ └── locale.nix - Язык/время
|
|
||||||
├── desktop/ - Рабочий стол
|
|
||||||
│ ├── plasma.nix
|
|
||||||
│ └── pipewire.nix
|
|
||||||
├── networking/ - Сеть
|
|
||||||
├── services/ - Сервисы
|
|
||||||
├── users/ - Пользователи
|
|
||||||
└── virtualisation/ - Виртуализация
|
|
||||||
```
|
|
||||||
|
|
||||||
Home Manager модули:
|
|
||||||
|
|
||||||
```
|
|
||||||
home/ada/
|
|
||||||
├── default.nix - Главный файл (импорты)
|
|
||||||
├── packages.nix - Пакеты
|
|
||||||
├── alacritty.nix - Терминал
|
|
||||||
├── vim.nix - Vim
|
|
||||||
├── git.nix - Git
|
|
||||||
├── zsh.nix - Shell
|
|
||||||
└── ...
|
|
||||||
```
|
|
||||||
|
|
||||||
## Типичный workflow
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Создать файл модуля
|
|
||||||
cat > modules/services/myservice.nix << 'EOF'
|
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# конфигурация
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# 2. Добавить импорт в configuration.nix
|
|
||||||
vim configuration.nix
|
|
||||||
|
|
||||||
# 3. Протестировать
|
|
||||||
nh os test
|
|
||||||
|
|
||||||
# 4. Собрать
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# 5. Проверить
|
|
||||||
systemctl status myservice
|
|
||||||
```
|
|
||||||
|
|
||||||
## Отладка моего модуля
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить синтаксис
|
|
||||||
nix flake check
|
|
||||||
|
|
||||||
# Полный check
|
|
||||||
nix flake check --all-systems
|
|
||||||
|
|
||||||
# Посмотреть ошибки собственного файла
|
|
||||||
nix-instantiate modules/services/myservice.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
## Полезные ресурсы
|
|
||||||
|
|
||||||
- [NixOS options search](https://search.nixos.org/options)
|
|
||||||
- [Nixpkgs документация](https://github.com/nixos/nixpkgs)
|
|
||||||
- [Home Manager опции](https://nix-community.github.io/home-manager/options.html)
|
|
||||||
@@ -1,285 +0,0 @@
|
|||||||
# Отладка и решение проблем
|
|
||||||
|
|
||||||
Что делать когда что-то не работает.
|
|
||||||
|
|
||||||
## Конфигурация не собирается
|
|
||||||
|
|
||||||
### Ошибка синтаксиса
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить синтаксис
|
|
||||||
nix flake check
|
|
||||||
|
|
||||||
# Посмотреть ошибку
|
|
||||||
nh os test
|
|
||||||
```
|
|
||||||
|
|
||||||
Читай ошибку внимательно - она указывает на строку файла.
|
|
||||||
|
|
||||||
## Ошибка: пакет не найден
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить существует ли пакет
|
|
||||||
nix search nixpkgs package-name
|
|
||||||
|
|
||||||
# Полное имя может быть другим
|
|
||||||
nix search nixpkgs git-lfs
|
|
||||||
```
|
|
||||||
|
|
||||||
Если пакет не найден:
|
|
||||||
1. Проверь имя в [https://search.nixos.org](https://search.nixos.org)
|
|
||||||
2. Возможно пакет устарел
|
|
||||||
3. Попробуй альтернативу
|
|
||||||
|
|
||||||
## Ошибка: модуль не импортируется
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Если добавил новый модуль и он не применяется
|
|
||||||
nix flake check
|
|
||||||
|
|
||||||
# Проверить импорт в configuration.nix
|
|
||||||
grep "./modules/mymodule" configuration.nix
|
|
||||||
|
|
||||||
# Проверить путь (должен быть правильный относительный путь)
|
|
||||||
```
|
|
||||||
|
|
||||||
Старые импорты кэшируются. Попробуй:
|
|
||||||
```bash
|
|
||||||
rm -rf .direnv # Если использует direnv
|
|
||||||
nix flake update
|
|
||||||
```
|
|
||||||
|
|
||||||
## Сборка зависает
|
|
||||||
|
|
||||||
Обычно при первой сборке это может быть долгим (20-30 минут).
|
|
||||||
|
|
||||||
Если зависает надолго:
|
|
||||||
```bash
|
|
||||||
# Прервать (Ctrl+C)
|
|
||||||
|
|
||||||
# Очистить кэш
|
|
||||||
nix flake update
|
|
||||||
|
|
||||||
# Пробовать снова
|
|
||||||
nh os test
|
|
||||||
```
|
|
||||||
|
|
||||||
## Команда не работает после apply
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Обновить PATH
|
|
||||||
exec $SHELL
|
|
||||||
|
|
||||||
# Или перезагрузить terminal
|
|
||||||
# В новом окне терминала попробуй команду
|
|
||||||
```
|
|
||||||
|
|
||||||
## SSH не работает
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить статус
|
|
||||||
sudo systemctl status ssh
|
|
||||||
|
|
||||||
# Посмотреть логи
|
|
||||||
sudo journalctl -u sshd -f
|
|
||||||
|
|
||||||
# Перезагрузить
|
|
||||||
sudo systemctl restart ssh
|
|
||||||
|
|
||||||
# Проверить firewall
|
|
||||||
sudo nftables list tables
|
|
||||||
nmcli device show
|
|
||||||
```
|
|
||||||
|
|
||||||
## Git алиасы не работают
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Применить конфигурацию
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# Проверить что установилась
|
|
||||||
git config --list | grep alias
|
|
||||||
|
|
||||||
# Перезагрузить shell
|
|
||||||
exec $SHELL
|
|
||||||
```
|
|
||||||
|
|
||||||
## Пакет not found после добавления
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Пересобрать
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# Обновить PATH если нужно
|
|
||||||
exec $SHELL
|
|
||||||
|
|
||||||
# Проверить пакет
|
|
||||||
which package-name
|
|
||||||
```
|
|
||||||
|
|
||||||
## Система не загружается
|
|
||||||
|
|
||||||
Если сломал конфигурацию и система не грузится:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# При загрузке в GRUB выбери предыдущую версию системы
|
|
||||||
```
|
|
||||||
|
|
||||||
Или откати изменения:
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
git checkout configuration.nix
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Firewall блокирует
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить статус
|
|
||||||
sudo nftables list tables
|
|
||||||
|
|
||||||
# Открыть порт (редактор файл)
|
|
||||||
# modules/networking/default.nix
|
|
||||||
networking.firewall.allowedTCPPorts = [ 22 8080 ];
|
|
||||||
|
|
||||||
# Собрать
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Нет интернета
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Проверить связь
|
|
||||||
ping 8.8.8.8
|
|
||||||
|
|
||||||
# Проверить DNS
|
|
||||||
nslookup google.com
|
|
||||||
|
|
||||||
# Перезагрузить NetworkManager
|
|
||||||
sudo systemctl restart NetworkManager
|
|
||||||
|
|
||||||
# Посмотреть статус
|
|
||||||
nmcli status
|
|
||||||
```
|
|
||||||
|
|
||||||
## Логирование и отладка
|
|
||||||
|
|
||||||
### Посмотреть логи системы
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Последние ошибки
|
|
||||||
sudo journalctl -b | tail -50
|
|
||||||
|
|
||||||
# Логи конкретного сервиса
|
|
||||||
sudo journalctl -u ssh -f
|
|
||||||
|
|
||||||
# По уровню важности
|
|
||||||
sudo journalctl -p err
|
|
||||||
```
|
|
||||||
|
|
||||||
### Проверить что загрузилось
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Посмотреть текущую конфигурацию
|
|
||||||
systemctl status
|
|
||||||
ps aux
|
|
||||||
|
|
||||||
# Проверить конкретный сервис
|
|
||||||
systemctl status sshd
|
|
||||||
systemctl status NetworkManager
|
|
||||||
```
|
|
||||||
|
|
||||||
## Производительность
|
|
||||||
|
|
||||||
Если система медленная:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Посмотреть процессы
|
|
||||||
btop
|
|
||||||
|
|
||||||
# Посмотреть использование диска
|
|
||||||
du -sh ~/*
|
|
||||||
|
|
||||||
# Нулевые файлы
|
|
||||||
find / -size 0 2>/dev/null
|
|
||||||
|
|
||||||
# GC собрал много?
|
|
||||||
du -sh /nix/store
|
|
||||||
nix store gc
|
|
||||||
```
|
|
||||||
|
|
||||||
## Вернуть рабочее состояние
|
|
||||||
|
|
||||||
### Откатить последнее изменение
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# В git
|
|
||||||
git checkout HEAD -- home/ada/packages.nix
|
|
||||||
|
|
||||||
# Пересобрать
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
### Посмотреть историю поколений
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nh os list
|
|
||||||
|
|
||||||
# Откатить на предыдущее поколение
|
|
||||||
sudo nix-env -p /nix/var/nix/profiles/system --switch-generation N
|
|
||||||
```
|
|
||||||
|
|
||||||
### Резервная копия
|
|
||||||
|
|
||||||
Есть файл конфигурации до изменений:
|
|
||||||
```
|
|
||||||
configuration.nix.backup
|
|
||||||
```
|
|
||||||
|
|
||||||
Если что-то критичное сломалось:
|
|
||||||
```bash
|
|
||||||
cp configuration.nix configuration.nix.broken
|
|
||||||
cp configuration.nix.backup configuration.nix
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## Получить помощь
|
|
||||||
|
|
||||||
### Проверить логи
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Полные логи последней сборки
|
|
||||||
nixos-rebuild dry-run 2>&1 | head -100
|
|
||||||
```
|
|
||||||
|
|
||||||
### Читать ошибки
|
|
||||||
|
|
||||||
Обычно в ошибке указывается:
|
|
||||||
1. **Файл** - какой файл конфига проблема
|
|
||||||
2. **Строка** - на какой строке
|
|
||||||
3. **Ошибка** - что именно не так
|
|
||||||
|
|
||||||
### Поиск в документации
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Поиск опции
|
|
||||||
nixos-option services.openssh
|
|
||||||
|
|
||||||
# Поиск в nixpkgs
|
|
||||||
nix search nixpkgs pattern
|
|
||||||
```
|
|
||||||
|
|
||||||
## Когда ничего не помогает
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Откатить на рабочее состояние
|
|
||||||
git checkout HEAD~1
|
|
||||||
|
|
||||||
# 2. Собрать
|
|
||||||
nh os switch
|
|
||||||
|
|
||||||
# 3. Проверить что работает
|
|
||||||
systemctl status
|
|
||||||
|
|
||||||
# 4. Медленнее добавить изменения по одному
|
|
||||||
```
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
# Структура проекта
|
|
||||||
|
|
||||||
Как устроена конфигурация.
|
|
||||||
|
|
||||||
## Главные файлы
|
|
||||||
|
|
||||||
```
|
|
||||||
flake.nix - Главная входная точка
|
|
||||||
configuration.nix - Системная конфигурация
|
|
||||||
```
|
|
||||||
|
|
||||||
## Папки
|
|
||||||
|
|
||||||
```
|
|
||||||
modules/ - Системные модули
|
|
||||||
home/ada/ - Конфигурация пользователя (Home Manager)
|
|
||||||
docs/ - Документация (этот гайд)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Версионирование
|
|
||||||
|
|
||||||
### flake.nix
|
|
||||||
|
|
||||||
```nix
|
|
||||||
inputs = {
|
|
||||||
# Откуда берёмся пакеты
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
|
||||||
|
|
||||||
# Управление пользовательским окружением
|
|
||||||
home-manager.url = "github:nix-community/home-manager/release-25.11";
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
- NixOS версия: **25.11** (стабильный релиз)
|
|
||||||
- Home Manager версия: **25.11** (синхронизирована)
|
|
||||||
|
|
||||||
## Системные модули
|
|
||||||
|
|
||||||
### `modules/system/`
|
|
||||||
|
|
||||||
Ядро системы:
|
|
||||||
|
|
||||||
- **boot.nix** - GRUB загрузчик, kernel modules
|
|
||||||
- **nix.nix** - Nix конфигурация (flakes, gc, substituters)
|
|
||||||
- **locale.nix** - Таймзона (Europe/Moscow), системные locale
|
|
||||||
|
|
||||||
### `modules/desktop/`
|
|
||||||
|
|
||||||
Рабочее окружение:
|
|
||||||
|
|
||||||
- **plasma.nix** - KDE Plasma 6, Wayland, X11, раскладка клавиатуры
|
|
||||||
- **pipewire.nix** - Audio система (PipeWire + ALSA)
|
|
||||||
|
|
||||||
### `modules/networking/`
|
|
||||||
|
|
||||||
Сетевые сервисы:
|
|
||||||
|
|
||||||
- **default.nix** - NetworkManager, Firewall
|
|
||||||
|
|
||||||
### `modules/services/`
|
|
||||||
|
|
||||||
Системные сервисы:
|
|
||||||
|
|
||||||
- **default.nix** - SSH (hardened), Firefox, GnuPG, VPN support
|
|
||||||
|
|
||||||
### `modules/users/`
|
|
||||||
|
|
||||||
Управление пользователями:
|
|
||||||
|
|
||||||
- **ada.nix** - Пользователь `ada` (groups, shell: zsh)
|
|
||||||
|
|
||||||
### `modules/virtualisation/`
|
|
||||||
|
|
||||||
Виртуализация:
|
|
||||||
|
|
||||||
- **virtualbox.nix** - VirtualBox Guest Additions (drag&drop, clipboard)
|
|
||||||
- **qemu-guest.nix** - QEMU/KVM Guest поддержка (spice-vdagent)
|
|
||||||
|
|
||||||
## Home Manager (Пользователь ada)
|
|
||||||
|
|
||||||
### `home/ada/default.nix`
|
|
||||||
|
|
||||||
Главный файл (импорты всех модулей):
|
|
||||||
|
|
||||||
```nix
|
|
||||||
home.username = "ada";
|
|
||||||
home.homeDirectory = "/home/ada";
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
```
|
|
||||||
|
|
||||||
### Модули пользователя
|
|
||||||
|
|
||||||
| Файл | Назначение |
|
|
||||||
|------|-----------|
|
|
||||||
| packages.nix | 50+ пакетов (организованы по категориям) |
|
|
||||||
| alacritty.nix | Терминальный эмулятор (Nord тема, FiraCode) |
|
|
||||||
| vim.nix | Vim редактор (Nord тема, плагины) |
|
|
||||||
| micro.nix | Micro редактор (простой редактор) |
|
|
||||||
| git.nix | Git конфигурация (15+ алиасов, colors) |
|
|
||||||
| zsh.nix | ZSH shell (30+ алиасов, интеграции) |
|
|
||||||
| tmux.nix | Tmux терминальный мультиплексер (VI mode) |
|
|
||||||
| tools.nix | CLI утилиты (bat, fzf, direnv) |
|
|
||||||
|
|
||||||
## Информационный поток
|
|
||||||
|
|
||||||
```
|
|
||||||
flake.nix (входная точка)
|
|
||||||
↓
|
|
||||||
├─→ nixpkgs (версия 25.11)
|
|
||||||
├─→ home-manager (версия 25.11)
|
|
||||||
└─→ nixos-hardware
|
|
||||||
|
|
||||||
configuration.nix (система)
|
|
||||||
├─→ hardware-configuration.nix
|
|
||||||
├─→ modules/system/* (boot, nix, locale)
|
|
||||||
├─→ modules/desktop/* (plasma, pipewire)
|
|
||||||
├─→ modules/networking/* (network)
|
|
||||||
├─→ modules/services/* (ssh, firefox, etc.)
|
|
||||||
├─→ modules/users/* (пользователь)
|
|
||||||
├─→ modules/virtualisation/* (vbox)
|
|
||||||
└─→ Home Manager (через special args)
|
|
||||||
|
|
||||||
home/ada/default.nix (пользователь)
|
|
||||||
├─→ packages.nix (50+ пакетов)
|
|
||||||
├─→ alacritty.nix (терминал)
|
|
||||||
├─→ vim.nix (editor)
|
|
||||||
├─→ micro.nix (editor)
|
|
||||||
├─→ git.nix (git config)
|
|
||||||
├─→ zsh.nix (shell)
|
|
||||||
├─→ tmux.nix (multiplexer)
|
|
||||||
└─→ tools.nix (utilities)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Категории пакетов
|
|
||||||
|
|
||||||
В `packages.nix` пакеты организованы так:
|
|
||||||
|
|
||||||
```
|
|
||||||
Редакторы vim, neovim, micro
|
|
||||||
IDE vscode, idea-community, zed
|
|
||||||
Терминал alacritty
|
|
||||||
Dev tools tmux, fzf, ripgrep, fd, bat, eza...
|
|
||||||
Git git, gh, lazygit
|
|
||||||
Сеть curl, wget, ssh, mosh, nmap...
|
|
||||||
БД sqlite, postgresql
|
|
||||||
Утилиты jq, yq, zip, unzip, gnupg...
|
|
||||||
Шрифты nerdfonts (FiraCode)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Какой файл менять?
|
|
||||||
|
|
||||||
| Задача | Файл |
|
|
||||||
|--------|------|
|
|
||||||
| Добавить переменную окружения | `home/ada/zsh.nix` |
|
|
||||||
| Добавить программу | `home/ada/packages.nix` |
|
|
||||||
| Изменить Git конфиг | `home/ada/git.nix` |
|
|
||||||
| Добавить Shell alias | `home/ada/zsh.nix` |
|
|
||||||
| Настроить SSH | `modules/services/default.nix` |
|
|
||||||
| Открыть firewall порт | `modules/networking/default.nix` |
|
|
||||||
| Добавить язык/locale | `modules/system/locale.nix` |
|
|
||||||
| Установить новый сервис | Создать новый модуль в `modules/` |
|
|
||||||
| Конфигурировать программу | Создать новый модуль в `home/ada/` |
|
|
||||||
|
|
||||||
## Версия конфигурации
|
|
||||||
|
|
||||||
```nix
|
|
||||||
# configuration.nix
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
# home/ada/default.nix
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
|
|
||||||
# Обновить можно когда готов к миграции
|
|
||||||
# Но ОСТОРОЖНО - читай документацию NixOS
|
|
||||||
```
|
|
||||||
|
|
||||||
## Как это всё работает?
|
|
||||||
|
|
||||||
1. **flake.nix** - говорит Nix где брать пакеты и как их собрать
|
|
||||||
2. **configuration.nix** - импортирует все системные модули
|
|
||||||
3. **modules/** - каждый модуль отвечает за часть системы
|
|
||||||
4. **home/ada/default.nix** - импортирует все пользовательские модули
|
|
||||||
5. **home/ada/** - каждый модуль конфигурирует программу
|
|
||||||
|
|
||||||
### Когда ты делаешь `nh os switch`:
|
|
||||||
|
|
||||||
```
|
|
||||||
1. Нужно собрать конфигурацию
|
|
||||||
2. Nix читает flake.nix
|
|
||||||
3. Понимает что использовать из inputs (nixpkgs, home-manager)
|
|
||||||
4. Собирает configuration.nix (импортирует все modules/)
|
|
||||||
5. Собирает home/ada/default.nix через Home Manager
|
|
||||||
6. Создаёт результат (нов поколение системы)
|
|
||||||
7. Переключается на него
|
|
||||||
```
|
|
||||||
|
|
||||||
## Быстрая справка
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Посмотреть версию
|
|
||||||
cat configuration.nix | grep stateVersion
|
|
||||||
|
|
||||||
# Посмотреть импорты
|
|
||||||
head -30 configuration.nix
|
|
||||||
|
|
||||||
# Список всех модулей
|
|
||||||
ls -la modules/**/*.nix
|
|
||||||
|
|
||||||
# Список Home Manager модулей
|
|
||||||
ls -la home/ada/*.nix
|
|
||||||
|
|
||||||
# Найти файл по названию
|
|
||||||
find . -name "*ssh*"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Следующие шаги
|
|
||||||
|
|
||||||
Если хочешь что-то изменить:
|
|
||||||
|
|
||||||
1. Найди нужный файл (выше таблица)
|
|
||||||
2. Отредактируй его
|
|
||||||
3. Собери: `nh os switch`
|
|
||||||
4. Если не работает → см. docs/07-troubleshooting.md
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# 📚 Документация NixOS конфигурации
|
|
||||||
|
|
||||||
Каждый файл в этой папке - это небольшой гайд по конкретной задаче.
|
|
||||||
|
|
||||||
## 📖 Гайды
|
|
||||||
|
|
||||||
- **[01-install-packages.md](01-install-packages.md)** — Добавление и удаление пакетов
|
|
||||||
- **[02-shell-environment.md](02-shell-environment.md)** — Shell alias, переменные окружения
|
|
||||||
- **[03-networking.md](03-networking.md)** — SSH, firewall, сетевые настройки
|
|
||||||
- **[04-devshell.md](04-devshell.md)** — Работа с devShell для разработки
|
|
||||||
- **[05-git-config.md](05-git-config.md)** — Git конфигурация и алиасы
|
|
||||||
- **[06-adding-modules.md](06-adding-modules.md)** — Создание новых модулей
|
|
||||||
- **[07-troubleshooting.md](07-troubleshooting.md)** — Отладка проблем
|
|
||||||
- **[08-structure.md](08-structure.md)** — Структура проекта
|
|
||||||
|
|
||||||
## ⚡ Быстрый старт
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd /home/ada/.dotfiles/nixos
|
|
||||||
|
|
||||||
# Собрать конфигурацию
|
|
||||||
sudo nixos-rebuild switch --flake .
|
|
||||||
|
|
||||||
# Или с nh (проще):
|
|
||||||
nh os switch
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🔍 Найти нужное
|
|
||||||
|
|
||||||
| Задача | Файл |
|
|
||||||
|--------|------|
|
|
||||||
| Добавить пакет | 01-install-packages.md |
|
|
||||||
| Добавить shell alias | 02-shell-environment.md |
|
|
||||||
| Конфигурировать SSH | 03-networking.md |
|
|
||||||
| Использовать devShell | 04-devshell.md |
|
|
||||||
| Настроить Git | 05-git-config.md |
|
|
||||||
| Создать новый модуль | 06-adding-modules.md |
|
|
||||||
| Что-то не работает | 07-troubleshooting.md |
|
|
||||||
| Как всё устроено | 08-structure.md |
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
description = "Модульная конфигурация NixOS 25.11 на Flake с Home Manager для виртуальной машины";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
# Nixpkgs - главный репозиторий пакетов
|
|
||||||
# Используем nixos-25.11 для стабильности вместо unstable
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
|
|
||||||
|
|
||||||
# Hardware profiles для различных машин
|
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
|
||||||
|
|
||||||
# Home Manager для управления конфигурацией пользователя
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager/release-25.11";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixos-hardware, home-manager }:
|
|
||||||
let
|
|
||||||
# Переменные для переиспользования
|
|
||||||
system = "x86_64-linux";
|
|
||||||
version = "25.11";
|
|
||||||
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Главная конфигурация NixOS
|
|
||||||
nixosConfigurations.nixos-vm = nixpkgs.lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
|
|
||||||
specialArgs = {
|
|
||||||
inherit pkgs;
|
|
||||||
};
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
./configuration.nix
|
|
||||||
|
|
||||||
# Модуль Home Manager для управления конфигурацией пользователя
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.users.ada = import ./home/ada/default.nix;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Окружение для разработки конфигурации
|
|
||||||
devShells.${system}.default = pkgs.mkShell {
|
|
||||||
description = "Development environment для NixOS конфигурации";
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
# Инструменты Nix
|
|
||||||
nix-output-monitor
|
|
||||||
nvd
|
|
||||||
nix-tree
|
|
||||||
nixfmt-classic
|
|
||||||
|
|
||||||
# Редакторы
|
|
||||||
vim
|
|
||||||
nano
|
|
||||||
|
|
||||||
# Утилиты для работы
|
|
||||||
git
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
];
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
echo "🚀 Development environment loaded"
|
|
||||||
echo "📚 Доступные утилиты:"
|
|
||||||
echo " - nixfmt: Форматирование Nix кода"
|
|
||||||
echo " - nvd: Сравнение версий"
|
|
||||||
echo " - nix-tree: Дерево зависимостей"
|
|
||||||
echo "💡 Совет: запусти 'nh os switch' для применения конфигурации"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Форматеры кода
|
|
||||||
formatter.${system} = pkgs.nixfmt-classic;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ata_piix" "ohci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/disk/by-uuid/2bb3bd25-1bc0-408f-945e-9150e4a10255";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp0s3.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
virtualisation.virtualbox.guest.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,121 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Alacritty - GPU-ускоренный эмулятор терминала
|
|
||||||
programs.alacritty = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Оболочка по умолчанию с автоматическим запуском tmux
|
|
||||||
shell = {
|
|
||||||
program = "${pkgs.zsh}/bin/zsh";
|
|
||||||
args = [ "-l" "-c" "tmux new-session -A -s main" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Настройки окна
|
|
||||||
window = {
|
|
||||||
decorations = "None"; # Без рамок и заголовка
|
|
||||||
startup_mode = "Maximized"; # Растянуто на весь экран
|
|
||||||
opacity = 0.80;
|
|
||||||
padding = {
|
|
||||||
x = 10;
|
|
||||||
y = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Шрифты
|
|
||||||
font = {
|
|
||||||
size = 15.0;
|
|
||||||
normal = {
|
|
||||||
family = "FiraCode Nerd Font Mono";
|
|
||||||
style = "Regular";
|
|
||||||
};
|
|
||||||
bold = {
|
|
||||||
family = "FiraCode Nerd Font Mono";
|
|
||||||
style = "Bold";
|
|
||||||
};
|
|
||||||
italic = {
|
|
||||||
family = "FiraCode Nerd Font Mono";
|
|
||||||
style = "Italic";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Прокрутка
|
|
||||||
scrolling = {
|
|
||||||
history = 10000;
|
|
||||||
multiplier = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Выделение
|
|
||||||
selection = {
|
|
||||||
save_to_clipboard = true;
|
|
||||||
semantic_escape_chars = "@-./_~?&=%+#";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Мышь
|
|
||||||
mouse = {
|
|
||||||
hide_when_typing = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Курсор
|
|
||||||
cursor = {
|
|
||||||
blink_interval = 500;
|
|
||||||
thickness = 0.15;
|
|
||||||
style = {
|
|
||||||
shape = "Beam";
|
|
||||||
blinking = "On";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Звуковой сигнал (отключен)
|
|
||||||
bell = {
|
|
||||||
animation = "EaseOutExpo";
|
|
||||||
duration = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Nord цветовая схема
|
|
||||||
# https://www.nordtheme.com/
|
|
||||||
colors = {
|
|
||||||
primary = {
|
|
||||||
background = "#2E3440";
|
|
||||||
foreground = "#D8DEE9";
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
text = "#2E3440";
|
|
||||||
cursor = "#D8DEE9";
|
|
||||||
};
|
|
||||||
selection = {
|
|
||||||
text = "#D8DEE9";
|
|
||||||
background = "#434C5E";
|
|
||||||
};
|
|
||||||
normal = {
|
|
||||||
black = "#3B4252";
|
|
||||||
red = "#BF616A";
|
|
||||||
green = "#A3BE8C";
|
|
||||||
yellow = "#EBCB8B";
|
|
||||||
blue = "#81A1C1";
|
|
||||||
magenta = "#B48EAD";
|
|
||||||
cyan = "#88C0D0";
|
|
||||||
white = "#E5E9F0";
|
|
||||||
};
|
|
||||||
bright = {
|
|
||||||
black = "#4C566A";
|
|
||||||
red = "#BF616A";
|
|
||||||
green = "#A3BE8C";
|
|
||||||
yellow = "#EBCB8B";
|
|
||||||
blue = "#81A1C1";
|
|
||||||
magenta = "#B48EAD";
|
|
||||||
cyan = "#8FBCBB";
|
|
||||||
white = "#ECEFF4";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Горячие клавиши
|
|
||||||
keyboard.bindings = [
|
|
||||||
{ key = "C"; mods = "Control|Shift"; action = "Copy"; }
|
|
||||||
{ key = "V"; mods = "Control|Shift"; action = "Paste"; }
|
|
||||||
{ key = "Return"; mods = "Control|Shift"; action = "SpawnNewInstance"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
# Импорт модульных конфигураций
|
|
||||||
imports = [
|
|
||||||
# Визуальные программы
|
|
||||||
./alacritty.nix
|
|
||||||
./vim.nix
|
|
||||||
./micro.nix
|
|
||||||
|
|
||||||
# Конфигурация оболочеки и инструментов
|
|
||||||
./git.nix
|
|
||||||
./zsh.nix
|
|
||||||
./tmux.nix
|
|
||||||
|
|
||||||
# Утилиты и пакеты
|
|
||||||
./tools.nix
|
|
||||||
./packages.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
# Основные настройки Home Manager
|
|
||||||
|
|
||||||
|
|
||||||
# Информация о пользователе
|
|
||||||
home.username = "ada";
|
|
||||||
home.homeDirectory = "/home/ada";
|
|
||||||
|
|
||||||
# Версия Home Manager
|
|
||||||
# Это значение определяет релиз Home Manager, с которым совместима конфигурация.
|
|
||||||
# Это помогает избежать поломок при выходе новых релизов с несовместимыми изменениями.
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
|
|
||||||
# Разрешить Home Manager управлять собой
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Общие переменные окружения
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "micro";
|
|
||||||
VISUAL = "code --wait";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Git - система контроля версий
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Dmitry";
|
|
||||||
userEmail = "ada.dmitry@gmail.com";
|
|
||||||
|
|
||||||
extraConfig = {
|
|
||||||
# Основные настройки
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
pull.rebase = true;
|
|
||||||
core = {
|
|
||||||
editor = "micro";
|
|
||||||
filemode = false;
|
|
||||||
autocrlf = "input";
|
|
||||||
whitespace = "trailing-space,space-before-tab";
|
|
||||||
pager = "less -FRXS";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Цвета
|
|
||||||
color = {
|
|
||||||
ui = "auto";
|
|
||||||
branch = "auto";
|
|
||||||
diff = "auto";
|
|
||||||
status = "auto";
|
|
||||||
};
|
|
||||||
|
|
||||||
"color \"branch\"" = {
|
|
||||||
current = "yellow bold";
|
|
||||||
local = "green";
|
|
||||||
remote = "cyan";
|
|
||||||
};
|
|
||||||
|
|
||||||
"color \"diff\"" = {
|
|
||||||
meta = "yellow";
|
|
||||||
frag = "magenta bold";
|
|
||||||
old = "red bold";
|
|
||||||
new = "green bold";
|
|
||||||
whitespace = "red reverse";
|
|
||||||
};
|
|
||||||
|
|
||||||
"color \"status\"" = {
|
|
||||||
added = "green bold";
|
|
||||||
changed = "yellow bold";
|
|
||||||
untracked = "red bold";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Алиасы из .gitconfig
|
|
||||||
aliases = {
|
|
||||||
# Базовые сокращения
|
|
||||||
st = "status";
|
|
||||||
co = "checkout";
|
|
||||||
br = "branch";
|
|
||||||
ci = "commit";
|
|
||||||
cm = "commit -m";
|
|
||||||
ca = "commit --amend";
|
|
||||||
|
|
||||||
# Добавление файлов
|
|
||||||
a = "add";
|
|
||||||
aa = "add --all";
|
|
||||||
ap = "add --patch";
|
|
||||||
|
|
||||||
# Логи
|
|
||||||
l = "log --oneline --graph --decorate";
|
|
||||||
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
|
||||||
ll = "log --pretty=format:'%C(yellow)%h%Cred%d %Creset%s%Cblue [%cn]' --decorate --numstat";
|
|
||||||
ls = "log --pretty=format:'%C(yellow)%h %Cred%ad %Cblue%an%Creset%d %s' --date=short";
|
|
||||||
lol = "log --graph --decorate --pretty=oneline --abbrev-commit";
|
|
||||||
lola = "log --graph --decorate --pretty=oneline --abbrev-commit --all";
|
|
||||||
|
|
||||||
# История файла
|
|
||||||
filelog = "log -u";
|
|
||||||
fl = "log -u";
|
|
||||||
|
|
||||||
# Diff
|
|
||||||
d = "diff";
|
|
||||||
ds = "diff --staged";
|
|
||||||
dc = "diff --cached";
|
|
||||||
|
|
||||||
# Показать последний коммит
|
|
||||||
last = "log -1 HEAD --stat";
|
|
||||||
|
|
||||||
# Отменить последний коммит (сохранив изменения)
|
|
||||||
undo = "reset --soft HEAD^";
|
|
||||||
|
|
||||||
# Показать изменения в файле
|
|
||||||
blame = "blame -w -M -C";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Глобальный gitignore
|
|
||||||
ignores = [
|
|
||||||
# OS Generated
|
|
||||||
".DS_Store"
|
|
||||||
".AppleDouble"
|
|
||||||
".LSOverride"
|
|
||||||
"._*"
|
|
||||||
"*~"
|
|
||||||
".directory"
|
|
||||||
".Trash-*"
|
|
||||||
"Thumbs.db"
|
|
||||||
"ehthumbs.db"
|
|
||||||
"Desktop.ini"
|
|
||||||
"$RECYCLE.BIN/"
|
|
||||||
|
|
||||||
# IDEs & Editors
|
|
||||||
".vscode/"
|
|
||||||
"*.code-workspace"
|
|
||||||
".history/"
|
|
||||||
".idea/"
|
|
||||||
"*.iml"
|
|
||||||
"*.ipr"
|
|
||||||
"*.iws"
|
|
||||||
".idea_modules/"
|
|
||||||
"*.swp"
|
|
||||||
"*.swo"
|
|
||||||
".*.sw?"
|
|
||||||
"Session.vim"
|
|
||||||
"#*#"
|
|
||||||
".#*"
|
|
||||||
".projectile"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Micro - современный терминальный редактор
|
|
||||||
programs.micro = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Автосохранение и undo
|
|
||||||
autosu = true;
|
|
||||||
saveundo = true;
|
|
||||||
savecursor = true;
|
|
||||||
|
|
||||||
# Цветовая схема
|
|
||||||
colorscheme = "simple";
|
|
||||||
|
|
||||||
# Поведение
|
|
||||||
mkparents = true; # Создавать родительские директории
|
|
||||||
rmtrailingws = true; # Удалять trailing whitespace
|
|
||||||
tabstospaces = true; # Заменять табы на пробелы
|
|
||||||
scrollbar = true; # Показывать scrollbar
|
|
||||||
|
|
||||||
# Строка состояния
|
|
||||||
statusformatl = "$(filename) $(modified)($(line),$(col)) $(opt:filetype) $(opt:fileformat)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Добавить micro в $PATH и установить как основной редактор
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "micro";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Списование пакетов для различных нужд
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Редакторы
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
neovim
|
|
||||||
micro
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# IDE
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
vscode
|
|
||||||
jetbrains.idea-community
|
|
||||||
zed-editor
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Терминал
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
alacritty
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Средства разработки и навигации
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
tmux # Мультиплексер терминала
|
|
||||||
fzf # Интерактивный поиск
|
|
||||||
ripgrep # Быстрый поиск в файлах (rg)
|
|
||||||
ripgrep-all # Ripgrep для всех типов файлов (rga)
|
|
||||||
fd # Альтернатива find
|
|
||||||
bat # Замена cat с подсветкой
|
|
||||||
eza # Замена ls с иконками
|
|
||||||
lsd # Ещё одна замена ls
|
|
||||||
htop # Интерактивный монитор процессов
|
|
||||||
btop # Современный монитор ресурсов
|
|
||||||
bottom # Альтернатива top/htop
|
|
||||||
tree # Вывод дерева директорий
|
|
||||||
zoxide # Умная навигация (z, zi)
|
|
||||||
just # Альтернатива make для скриптов
|
|
||||||
tokei # Анализатор кода (строки, блоки кода)
|
|
||||||
nitch # Минималистичный neofetch аналог
|
|
||||||
difftastic # Красивый синтаксис для diff
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Инструменты Git
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
git # Система контроля версий
|
|
||||||
gh # GitHub CLI
|
|
||||||
lazygit # Интерактивный git UI
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Разработка и интеграция
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
pre-commit # Git hooks framework
|
|
||||||
nodePackages.prettier # Code formatter (Markdown, JSON, YAML, etc.)
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Сетевые утилиты
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
curl # Загрузка файлов через URL
|
|
||||||
wget # Загрузчик файлов
|
|
||||||
openssh # SSH клиент и сервер
|
|
||||||
mosh # SSH альтернатива с поддержкой мобильности
|
|
||||||
nmap # Сканер портов и сетевая диагностика
|
|
||||||
net-tools # Классические утилиты (netstat, arp и т.д.)
|
|
||||||
drill # DNS утилита (альтернатива dig)
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Базы данных и хранилище
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
sqlite # Встраиваемая реляционная БД
|
|
||||||
postgresql # Клиент PostgreSQL
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Утилиты
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
jq # Обработка JSON
|
|
||||||
yq # Обработка YAML (аналог jq для YAML)
|
|
||||||
unzip # Распаковка zip архивов
|
|
||||||
zip # Создание zip архивов
|
|
||||||
p7zip # 7-Zip архиватор
|
|
||||||
gnupg # Шифрование и подписание
|
|
||||||
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
# Шрифты
|
|
||||||
# ══════════════════════════════════════════════════════════════════
|
|
||||||
(pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; })
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Tmux - мультиплексер терминала
|
|
||||||
programs.tmux = {
|
|
||||||
enable = true;
|
|
||||||
terminal = "screen-256color";
|
|
||||||
keyMode = "vi";
|
|
||||||
mouse = true;
|
|
||||||
prefix = "C-a";
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
# Разделить панели используя | и -
|
|
||||||
bind | split-window -h
|
|
||||||
bind - split-window -v
|
|
||||||
unbind '"'
|
|
||||||
unbind %
|
|
||||||
|
|
||||||
# Перезагрузить конфигурацию
|
|
||||||
bind r source-file ~/.tmux.conf
|
|
||||||
|
|
||||||
# Переключение панелей используя Alt-стрелки без prefix
|
|
||||||
bind -n M-Left select-pane -L
|
|
||||||
bind -n M-Right select-pane -R
|
|
||||||
bind -n M-Up select-pane -U
|
|
||||||
bind -n M-Down select-pane -D
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Утилиты для работы с CLI
|
|
||||||
|
|
||||||
# Bat - замена cat с подсветкой синтаксиса
|
|
||||||
programs.bat = {
|
|
||||||
enable = true;
|
|
||||||
config = {
|
|
||||||
theme = "TwoDark";
|
|
||||||
pager = "less -FR";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# FZF - интерактивный поиск
|
|
||||||
programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Direnv - управление окружением по директориям
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Vim - легковесный редактор
|
|
||||||
programs.vim = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# Включить все улучшения по умолчанию
|
|
||||||
defaultEditor = false; # Micro - основной редактор
|
|
||||||
|
|
||||||
# Настройки
|
|
||||||
settings = {
|
|
||||||
# Отображение
|
|
||||||
number = true;
|
|
||||||
relativenumber = true;
|
|
||||||
|
|
||||||
# Отступы
|
|
||||||
expandtab = true;
|
|
||||||
shiftwidth = 2;
|
|
||||||
tabstop = 2;
|
|
||||||
smartindent = true;
|
|
||||||
|
|
||||||
# Поиск
|
|
||||||
ignorecase = true;
|
|
||||||
smartcase = true;
|
|
||||||
|
|
||||||
# Файлы
|
|
||||||
swapfile = false;
|
|
||||||
undofile = true;
|
|
||||||
|
|
||||||
# История команд
|
|
||||||
history = 1000;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Конфигурация из .vimrc
|
|
||||||
extraConfig = ''
|
|
||||||
" Ada's Vim config — lightweight and close to Neovim setup
|
|
||||||
scriptencoding utf-8
|
|
||||||
set nocompatible
|
|
||||||
|
|
||||||
" Leader
|
|
||||||
let mapleader = " "
|
|
||||||
|
|
||||||
" UI
|
|
||||||
set cursorline
|
|
||||||
set signcolumn=yes
|
|
||||||
set termguicolors
|
|
||||||
|
|
||||||
" Performance
|
|
||||||
set updatetime=200
|
|
||||||
set timeoutlen=400
|
|
||||||
|
|
||||||
" Splits
|
|
||||||
set splitbelow
|
|
||||||
set splitright
|
|
||||||
|
|
||||||
" Clipboard (prefer system clipboard if available)
|
|
||||||
if has('unnamedplus')
|
|
||||||
set clipboard=unnamedplus
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Keymaps
|
|
||||||
nnoremap <silent> j gj
|
|
||||||
nnoremap <silent> k gk
|
|
||||||
nnoremap <silent> <leader>w :w<CR>
|
|
||||||
nnoremap <silent> <leader>q :q<CR>
|
|
||||||
nnoremap <silent> <leader>h :nohlsearch<CR>
|
|
||||||
|
|
||||||
" Windows
|
|
||||||
nnoremap <silent> <leader>sv <C-w>v
|
|
||||||
nnoremap <silent> <leader>sh <C-w>s
|
|
||||||
nnoremap <silent> <leader>se <C-w>=
|
|
||||||
nnoremap <silent> <leader>sx :close<CR>
|
|
||||||
|
|
||||||
" Buffers
|
|
||||||
nnoremap <silent> <S-l> :bnext<CR>
|
|
||||||
nnoremap <silent> <S-h> :bprevious<CR>
|
|
||||||
|
|
||||||
" Quickfix
|
|
||||||
nnoremap <silent> ]q :cnext<CR>
|
|
||||||
nnoremap <silent> [q :cprev<CR>
|
|
||||||
|
|
||||||
" Autocommands
|
|
||||||
augroup AdaCore
|
|
||||||
autocmd!
|
|
||||||
" Resize splits equally on terminal resize
|
|
||||||
autocmd VimResized * tabdo wincmd =
|
|
||||||
" Disable auto comment on new line
|
|
||||||
autocmd FileType * setlocal formatoptions-=o formatoptions-=r
|
|
||||||
augroup END
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Плагины через vim-plug (устанавливается автоматически)
|
|
||||||
plugins = with pkgs.vimPlugins; [
|
|
||||||
# Тема Nord
|
|
||||||
nord-vim
|
|
||||||
|
|
||||||
# Fuzzy finder
|
|
||||||
fzf-vim
|
|
||||||
|
|
||||||
# Файловое дерево
|
|
||||||
nerdtree
|
|
||||||
|
|
||||||
# Редактирование
|
|
||||||
vim-surround
|
|
||||||
vim-commentary
|
|
||||||
|
|
||||||
# Git
|
|
||||||
vim-gitgutter
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,154 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# ZSH - расширенная оболочка
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
# Переменные окружения
|
|
||||||
sessionVariables = {
|
|
||||||
EDITOR = "micro";
|
|
||||||
VISUAL = "code --wait";
|
|
||||||
PAGER = "less";
|
|
||||||
|
|
||||||
# XDG Base Directories
|
|
||||||
XDG_CONFIG_HOME = "$HOME/.config";
|
|
||||||
XDG_DATA_HOME = "$HOME/.local/share";
|
|
||||||
XDG_CACHE_HOME = "$HOME/.cache";
|
|
||||||
XDG_STATE_HOME = "$HOME/.local/state";
|
|
||||||
|
|
||||||
# История
|
|
||||||
HISTFILE = "$XDG_STATE_HOME/zsh/history";
|
|
||||||
HISTSIZE = "50000";
|
|
||||||
SAVEHIST = "50000";
|
|
||||||
|
|
||||||
# Less
|
|
||||||
LESS = "-R -M -i -j10";
|
|
||||||
|
|
||||||
# Цвета
|
|
||||||
CLICOLOR = "1";
|
|
||||||
|
|
||||||
# FZF
|
|
||||||
FZF_DEFAULT_OPTS = "--height 40% --layout=reverse --border --inline-info";
|
|
||||||
FZF_DEFAULT_COMMAND = "fd --type f --hidden --follow --exclude .git";
|
|
||||||
|
|
||||||
# Go
|
|
||||||
GOPATH = "$HOME/go";
|
|
||||||
|
|
||||||
# Rust
|
|
||||||
CARGO_HOME = "$HOME/.cargo";
|
|
||||||
|
|
||||||
# Python
|
|
||||||
PYTHONDONTWRITEBYTECODE = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
# Навигация
|
|
||||||
".." = "cd ..";
|
|
||||||
"..." = "cd ../..";
|
|
||||||
"...." = "cd ../../..";
|
|
||||||
"....." = "cd ../../../..";
|
|
||||||
|
|
||||||
# Быстрый доступ
|
|
||||||
dl = "cd ~/Downloads";
|
|
||||||
dt = "cd ~/Desktop";
|
|
||||||
doc = "cd ~/Documents";
|
|
||||||
dev = "cd ~/dev";
|
|
||||||
|
|
||||||
# Списки файлов (eza)
|
|
||||||
ls = "eza --icons --group-directories-first";
|
|
||||||
ll = "eza -l --icons --group-directories-first --git";
|
|
||||||
la = "eza -la --icons --group-directories-first --git";
|
|
||||||
lt = "eza --tree --level=2 --icons";
|
|
||||||
l = "eza -lah --icons --group-directories-first --git";
|
|
||||||
|
|
||||||
# Безопасность
|
|
||||||
rm = "rm -i";
|
|
||||||
cp = "cp -i";
|
|
||||||
mv = "mv -i";
|
|
||||||
|
|
||||||
# Системные
|
|
||||||
grep = "grep --color=auto";
|
|
||||||
df = "df -h";
|
|
||||||
du = "du -h";
|
|
||||||
free = "free -h";
|
|
||||||
|
|
||||||
# Сеть
|
|
||||||
ping = "ping -c 5";
|
|
||||||
ports = "netstat -tulanp";
|
|
||||||
localip = "ip -4 addr show | grep -oP '(?<=inet\\s)\\d+(\\.\\d+){3}' | grep -v 127.0.0.1";
|
|
||||||
|
|
||||||
# NixOS - используем nh для удобства
|
|
||||||
nixos-rebuild = "nh os switch";
|
|
||||||
nixos-test = "nh os test";
|
|
||||||
nixos-boot = "nh os boot";
|
|
||||||
nixos-update = "cd /home/ada/.dotfiles/nixos && nix flake update && nh os switch";
|
|
||||||
nixos-list = "nh os list";
|
|
||||||
|
|
||||||
# Git
|
|
||||||
g = "git";
|
|
||||||
gs = "git status";
|
|
||||||
gst = "git --no-pager status";
|
|
||||||
ga = "git add";
|
|
||||||
gaa = "git add .";
|
|
||||||
gc = "git commit";
|
|
||||||
gcm = "git commit -m";
|
|
||||||
gp = "git push";
|
|
||||||
gpl = "git pull";
|
|
||||||
gd = "git diff";
|
|
||||||
gco = "git checkout";
|
|
||||||
gb = "git branch";
|
|
||||||
gl = "git log --oneline --graph --decorate";
|
|
||||||
glog = "git log --oneline --graph --decorate --all";
|
|
||||||
|
|
||||||
# Docker
|
|
||||||
d = "docker";
|
|
||||||
dc = "docker-compose";
|
|
||||||
dps = "docker ps";
|
|
||||||
dpsa = "docker ps -a";
|
|
||||||
di = "docker images";
|
|
||||||
dex = "docker exec -it";
|
|
||||||
dlog = "docker logs -f";
|
|
||||||
|
|
||||||
# Kubectl
|
|
||||||
k = "kubectl";
|
|
||||||
kgp = "kubectl get pods";
|
|
||||||
|
|
||||||
# Lazy инструменты
|
|
||||||
lg = "lazygit";
|
|
||||||
};
|
|
||||||
|
|
||||||
# История
|
|
||||||
history = {
|
|
||||||
size = 50000;
|
|
||||||
save = 50000;
|
|
||||||
path = "$HOME/.local/state/zsh/history";
|
|
||||||
ignoreDups = true;
|
|
||||||
ignoreSpace = true;
|
|
||||||
share = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
initExtra = ''
|
|
||||||
# Включить zoxide (умная навигация)
|
|
||||||
eval "$(zoxide init zsh)"
|
|
||||||
|
|
||||||
# Включить direnv
|
|
||||||
eval "$(direnv hook zsh)"
|
|
||||||
|
|
||||||
# FZF конфигурация с Catppuccin цветами
|
|
||||||
export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS \
|
|
||||||
--color=bg+:#313244,bg:#1e1e2e,spinner:#f5e0dc,hl:#f38ba8 \
|
|
||||||
--color=fg:#cdd6f4,header:#f38ba8,info:#cba6f7,pointer:#f5e0dc \
|
|
||||||
--color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6f7,hl+:#f38ba8"
|
|
||||||
|
|
||||||
# FZF используем fd вместо find
|
|
||||||
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
|
|
||||||
|
|
||||||
# Создать директорию для истории если не существует
|
|
||||||
[[ ! -d "$(dirname $HISTFILE)" ]] && mkdir -p "$(dirname $HISTFILE)"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Отключение PulseAudio
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
|
|
||||||
# Включение RealtimeKit для низколатентного аудио
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
|
|
||||||
# Включение PipeWire
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# jack.enable = true; # Раскомментируйте для поддержки JACK
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Включение X11 и Wayland
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
# Окружение рабочего стола KDE Plasma 6
|
|
||||||
services.displayManager.sddm = {
|
|
||||||
enable = true;
|
|
||||||
wayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
# Настройка раскладки клавиатуры
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "us,ru"; # Английская и русская раскладки
|
|
||||||
variant = "";
|
|
||||||
options = "grp:caps_toggle"; # Переключение раскладки по Caps Lock
|
|
||||||
};
|
|
||||||
|
|
||||||
# Поддержка Wayland для Electron приложений
|
|
||||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
|
||||||
|
|
||||||
# Включение CUPS для печати
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Дополнительные пакеты KDE/Qt
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
kdePackages.plasma-browser-integration
|
|
||||||
kdePackages.kio-extras
|
|
||||||
kdePackages.kio-fuse
|
|
||||||
kdePackages.kate
|
|
||||||
kdePackages.kcalc
|
|
||||||
kdePackages.kcharselect
|
|
||||||
kdePackages.filelight
|
|
||||||
kdePackages.partitionmanager
|
|
||||||
kdePackages.ark
|
|
||||||
kdePackages.okular
|
|
||||||
kdePackages.gwenview
|
|
||||||
kdePackages.spectacle
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Имя хоста
|
|
||||||
networking.hostName = "nixos-vm";
|
|
||||||
|
|
||||||
# Включение NetworkManager
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Конфигурация фаервола
|
|
||||||
networking.firewall = {
|
|
||||||
enable = true;
|
|
||||||
allowedTCPPorts = [ 22 ]; # SSH
|
|
||||||
# allowedUDPPorts = [ ... ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Сервер OpenSSH с усиленной безопасностью
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Аутентификация
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
PubkeyAuthentication = true;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
KbdInteractiveAuthentication = false;
|
|
||||||
ChallengeResponseAuthentication = false;
|
|
||||||
PermitEmptyPasswords = false;
|
|
||||||
|
|
||||||
# Сессии и доступ
|
|
||||||
LoginGraceTime = 30;
|
|
||||||
MaxAuthTries = 3;
|
|
||||||
MaxSessions = 2;
|
|
||||||
ClientAliveInterval = 300;
|
|
||||||
ClientAliveCountMax = 2;
|
|
||||||
|
|
||||||
# Отключить устаревшие возможности
|
|
||||||
X11Forwarding = false;
|
|
||||||
AllowAgentForwarding = false;
|
|
||||||
PermitUserEnvironment = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Дополнительная конфигурация
|
|
||||||
extraConfig = ''
|
|
||||||
# Authentication methods
|
|
||||||
AuthenticationMethods publickey
|
|
||||||
|
|
||||||
# Reduce legacy or risky features
|
|
||||||
IgnoreRhosts yes
|
|
||||||
HostbasedAuthentication no
|
|
||||||
TCPKeepAlive no
|
|
||||||
|
|
||||||
# Connection throttling
|
|
||||||
MaxStartups 10:30:60
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Агент GnuPG
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# MTR для сетевой диагностики
|
|
||||||
programs.mtr.enable = true;
|
|
||||||
|
|
||||||
# Firefox
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
|
|
||||||
# AmneziaVPN
|
|
||||||
programs.amnezia-vpn.enable = true;
|
|
||||||
|
|
||||||
# Системные пакеты
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
amneziawg-tools
|
|
||||||
neofetch
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Конфигурация загрузчика
|
|
||||||
boot.loader.grub = {
|
|
||||||
enable = true;
|
|
||||||
device = "/dev/sda";
|
|
||||||
useOSProber = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Параметры ядра
|
|
||||||
boot.kernelParams = [ "quiet" ];
|
|
||||||
|
|
||||||
# Модуль ядра AmneziaWG
|
|
||||||
boot.extraModulePackages = [ config.boot.kernelPackages.amneziawg ];
|
|
||||||
boot.kernelModules = [ "amneziawg" ];
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Часовой пояс
|
|
||||||
time.timeZone = "Europe/Moscow";
|
|
||||||
|
|
||||||
# Интернационализация
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "ru_RU.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "ru_RU.UTF-8";
|
|
||||||
LC_MEASUREMENT = "ru_RU.UTF-8";
|
|
||||||
LC_MONETARY = "ru_RU.UTF-8";
|
|
||||||
LC_NAME = "ru_RU.UTF-8";
|
|
||||||
LC_NUMERIC = "ru_RU.UTF-8";
|
|
||||||
LC_PAPER = "ru_RU.UTF-8";
|
|
||||||
LC_TELEPHONE = "ru_RU.UTF-8";
|
|
||||||
LC_TIME = "ru_RU.UTF-8";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Конфигурация Nix с flakes и оптимизациями
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nixVersions.latest;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
auto-optimise-store = true;
|
|
||||||
|
|
||||||
# Substituters для более быстрой загрузки
|
|
||||||
substituters = [
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-public-keys = [
|
|
||||||
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Автоматическая сборка мусора
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Разрешить проприетарные пакеты
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Системные пакеты для удобства работы с Nix
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# Утилиты Nix
|
|
||||||
nix-output-monitor # Красивый вывод Nix
|
|
||||||
nvd # Инструмент сравнения версий Nix
|
|
||||||
nix-tree # Просмотр зависимостей Nix store
|
|
||||||
nix-index # База данных файлов для nixpkgs
|
|
||||||
comma # Запуск без установки
|
|
||||||
nh # Ещё один помощник для Nix
|
|
||||||
nix-du # Визуализация использования диска
|
|
||||||
nixfmt-classic # Форматтер Nix кода
|
|
||||||
];
|
|
||||||
|
|
||||||
# nix-ld для запуска непропатченных бинарников
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
programs.nix-ld.libraries = with pkgs; [
|
|
||||||
stdenv.cc.cc
|
|
||||||
zlib
|
|
||||||
fuse3
|
|
||||||
icu
|
|
||||||
nss
|
|
||||||
openssl
|
|
||||||
curl
|
|
||||||
expat
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Определение учётной записи пользователя
|
|
||||||
users.users.ada = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "ada";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Включение ZSH системно
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# QEMU/KVM Guest поддержка
|
|
||||||
services.qemuGuest.enable = true;
|
|
||||||
|
|
||||||
# SPICE Agent для лучшей интеграции (общий буфер, drag&drop)
|
|
||||||
services.spice-vdagentd.enable = true;
|
|
||||||
|
|
||||||
# Дополнительные пакеты для работы с QEMU
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
spice-vdagent # SPICE агент для гостевой системы
|
|
||||||
qemu-utils # Утилиты QEMU
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# VirtualBox Guest additions
|
|
||||||
virtualisation.virtualbox.guest = {
|
|
||||||
enable = true;
|
|
||||||
dragAndDrop = true; # Перетаскивание файлов
|
|
||||||
clipboard = true; # Общий буфер обмена
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -142,12 +142,12 @@
|
|||||||
},
|
},
|
||||||
"ui_font_size": 16.0,
|
"ui_font_size": 16.0,
|
||||||
"buffer_font_size": 14.0,
|
"buffer_font_size": 14.0,
|
||||||
"proxy": "socks5://127.0.0.1:20170",
|
"proxy": "socks5://127.0.0.1:7897",
|
||||||
// "proxy": "socks5://ada:%3FHolivarr588856@157.22.231.198:1081",
|
// "proxy": "socks5://ada:%3FHolivarr588856@157.22.231.198:1081",
|
||||||
"theme": {
|
"theme": {
|
||||||
"mode": "system",
|
"mode": "system",
|
||||||
"light": "Ayu Light",
|
"light": "Ayu Light",
|
||||||
"dark": "Tokyo Night",
|
"dark": "Nordfox - blurred",
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"notebooks": true,
|
"notebooks": true,
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
# Ada's Modular ZSH Configuration
|
# Ada's Modular ZSH Configuration
|
||||||
# ════════════════════════════════════════════════════════════
|
# ════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
typeset -g POWERLEVEL9K_INSTANT_PROMPT=off
|
||||||
|
|
||||||
# ═══ Powerlevel10k Instant Prompt ══════════════════════════
|
# ═══ Powerlevel10k Instant Prompt ══════════════════════════
|
||||||
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
|
||||||
# Initialization code that may require console input (password prompts, [y/n]
|
# Initialization code that may require console input (password prompts, [y/n]
|
||||||
@@ -37,6 +39,7 @@ source "${ZSH_CONFIG_DIR}/functions.zsh" # Пользовательские
|
|||||||
source "${ZSH_CONFIG_DIR}/keybindings.zsh" # Горячие клавиши
|
source "${ZSH_CONFIG_DIR}/keybindings.zsh" # Горячие клавиши
|
||||||
source "${ZSH_CONFIG_DIR}/prompt.zsh" # Настройка промпта (starship)
|
source "${ZSH_CONFIG_DIR}/prompt.zsh" # Настройка промпта (starship)
|
||||||
|
|
||||||
|
|
||||||
# ═══ Локальные настройки (опционально) ═════════════════════
|
# ═══ Локальные настройки (опционально) ═════════════════════
|
||||||
# Для машинно-специфичных настроек
|
# Для машинно-специфичных настроек
|
||||||
[[ -f "${ZSH_CONFIG_DIR}/local.zsh" ]] && source "${ZSH_CONFIG_DIR}/local.zsh"
|
[[ -f "${ZSH_CONFIG_DIR}/local.zsh" ]] && source "${ZSH_CONFIG_DIR}/local.zsh"
|
||||||
@@ -48,6 +51,17 @@ source "${ZSH_CONFIG_DIR}/prompt.zsh" # Настройка промпта
|
|||||||
[[ ! -f /home/ada/.config/zsh/.p10k.zsh ]] || source /home/ada/.config/zsh/.p10k.zsh
|
[[ ! -f /home/ada/.config/zsh/.p10k.zsh ]] || source /home/ada/.config/zsh/.p10k.zsh
|
||||||
|
|
||||||
|
|
||||||
|
# Показываем fastfetch один раз уже после инициализации prompt'а.
|
||||||
|
if [[ -o interactive ]]; then
|
||||||
|
autoload -Uz add-zsh-hook
|
||||||
|
function _fastfetch_once() {
|
||||||
|
add-zsh-hook -d precmd _fastfetch_once
|
||||||
|
command fastfetch
|
||||||
|
}
|
||||||
|
add-zsh-hook precmd _fastfetch_once
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
export NVM_DIR="$HOME/.config/nvm"
|
export NVM_DIR="$HOME/.config/nvm"
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|||||||
@@ -58,8 +58,11 @@ alias ports='netstat -tulanp'
|
|||||||
alias localip="ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1"
|
alias localip="ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v 127.0.0.1"
|
||||||
|
|
||||||
# Proxy
|
# Proxy
|
||||||
alias proxy-on='sshp-start && export http_proxy="http://127.0.0.1:1080" https_proxy="http://127.0.0.1:1080" HTTP_PROXY="http://127.0.0.1:1080" HTTPS_PROXY="http://127.0.0.1:1080" && echo "Proxy enabled"'
|
# Включение прокси (HTTP, HTTPS и SOCKS5h для DNS через прокси)
|
||||||
alias proxy-off='sshp-stop && unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY && echo "Proxy disabled"'
|
alias proxy-on='export http_proxy="http://127.0.0.1:2080" https_proxy="http://127.0.0.1:2080" ALL_PROXY="socks5://127.0.0.1:2080" all_proxy="socks5://127.0.0.1:2080" && echo " Proxy enabled (127.0.0.1:2080)"'
|
||||||
|
|
||||||
|
# Полное отключение всех переменных прокси
|
||||||
|
alias proxy-off='unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY all_proxy ALL_PROXY && echo " Proxy disabled"'
|
||||||
alias proxy-status='env | grep -i proxy'
|
alias proxy-status='env | grep -i proxy'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user