Compare commits

..

2 commits

Author SHA1 Message Date
9e44875c87 Update README files 2026-01-20 03:17:53 +03:00
d0a9b8052a Changes for pc1 branch 2026-01-20 01:33:35 +03:00
17 changed files with 909 additions and 70 deletions

105
BINDS.md Normal file
View file

@ -0,0 +1,105 @@
Тут будут описаны все бинды системы. Но мне может быть лень актуализировать эту огромную таблицу, так что лучше читай конфиги.
Возможно бинды для скринов придётся настроить руками в ksnip
# Минимально необходимые бинды
Тут будет мелкий список биндов, с которым можно начать. Бинды из секции "все бинды" могут повторяться
Клавиша `Super` это клавиша `Win`
- `Super + A` - Запускатор приложений
- `Super + Q` - Закрыть приложение (если добавить shift, то это kill приложения, если оно зависло и не закрывается)
- `Super + 0-9` - Переключить воркспейс (если добавить shift, то кидает активное окно на указанный воркспейс)
- `Super + Esc` - Переключиться на прошлый воркспейс, удобно
- `Super + T` - Открыть терминал (если добавить shift, то получится floating терминал, а если ctrl, то откроется kitty вместо alacritty)
- `Super + ПКМ` - Менять размер окна, на котором зажал ПКМ и водишь мышкой
- `Super + ЛКМ` - Двигать окно, на котором зажал ЛКМ
- `Super + F` - Делает окно flotaing и обратно tiling при повторном нажатии (если забагалось и делает фулскрин, то добавь shift, чтоб переключить в tiling)
- `Super + Стрелки` - Меняет фокус приложения в указанном направлении
- `Дальняя боковая кнопка мыши` - Скрол. Зажимаешь эту кнопку и водишь мышкой по столу в ту сторону, куда хочешь скролить
- `CapsLock` - Сменить язык на клавиатуре (если нужен просто капс, то жми с shift)
# Все бинды
Клавиша `Super` это клавиша `Win`
| Bspwm | Описание |
| --------------------------------- | ------------------------------------------------------------------------------------------- |
| `Super + L` | Lock screen |
| `Super + Q` | Quit. Выключить приложение |
| `Super + Shift + Q` | Kill. Если приложение не отвечает, то убить его |
| `Super + F` | Floating toggle |
| `Super + Shift + F` | Tiled toggle |
| `Super + Enter` | Fullscreen toggle |
| `Super + Esc` | Прошлый воркспейс. Желательно внутри одного монитора |
| `Super + ЛКМ` | Переместить окно |
| `Super + ПКМ` | Ресайзить окно |
| `Super + Arrows` | Менять фокус приложения в указанном направлении |
| `Super + 0-9` | Переключить воркспейс на 1-10. Если они общие на все моники, то добавить F1-F12 для 11-22 |
| `Super + Shift + 0-9` | Перекинуть активное окно на воркспейс. Желательно silent, чтоб меня не перекидывало к проге |
| `Super + Ctrl + Down` | Переключает на первый пустой воркспейс |
| `Super + Ctrl + Left/Right` | Переключает на предыдущий/следующий воркспейс. То есть делает -1 или +1 от текущего |
| `Super + Ctrl + Alt + Down` | Свапает активное окно с самым большим на экране |
| `Super + Ctrl + Alt + Left/Right` | Перекидывает активное окно на предыдущий/следующий воркспейс и следует за ним |
| `Super + Alt + Arrows` | Move floating window |
| `Super + Shift + Arrows` | Resize window на 30 пикселей в указанном направлении наружу |
| `Super + Shift + Alt + Arrows` | Resize window на 30 пикселей в указанном направлении внутрь |
| `Super + Shift + Ctrl + Arrows` | Перемещает активное окно в указанном направлении |
| `Super + S` | Split toggle. Меняет позиционирование с горизонтального на вертикальный и обратно. |
| `Super + Ctrl + Shift + R` | Make sxhkd reload its config files |
| `Super + Alt + Ctrn + Shift + R` | Restart bspwm |
| `Super + Alt + Ctrn + Shift + Q` | Quit bspwm |
| Rofi | Описание | Работает? |
| ------------------- | ---------------------------------------------------------------------------------------------- | --------- |
| `Super + A` | Applications. Запускатор софта | Да |
| `Super + C` | Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. | Да |
| `Super + P` | Passwords. Пароли из утилиты pass | Да |
| `Super + V` | История буфера обмена. Как ctrl+v, но через win. | Да |
| `Super + Backspace` | PowerMenu. Выключение пк | Да |
| `Super + Tab` | Как alt+tab, переключение окон. На нужный воркспейс само перекинет | Да |
| `Super + Alt + T` | Timer. Думаю сделать через утилиту timer |нет|
| `Super + Shift + N` | Notification history. История оповещений. Мб сделать только в баре кнопку? Мб не делать вообще |нет|
| Applications | Описание | Работает? |
| -------------------------- | ----------------------------------------- | --------- |
| `Super + B` | Browser LibreWolf. Основа | Да |
| `Super + Shift + B` | Browser Firefox. Паблик активность | Да |
| `Super + Shift + Ctrl + B` | Browser Chromium. Пусть будет | Да |
| `Super + N` | Note taking app (obsidian) | Да |
| `Super + E` | Explorer. Thunar file manager | Да |
| `Super + Shift + C` | Color picker. Получить hex в буфер обмена | Да |
| `Super + Ctrl + C` | Color picker. Получить rgb в буфер обмена | Да |
| Terminal | Описание | Работает? |
| -------------------------- | ---------------------------------------------------------------------------- | --------- |
| `Super + T` | Terminal основной | Да |
| `Super + Shift + T` | Floating Terminal основной в центре экрана с размерами треть на треть экрана | Да |
| `Super + Ctrl + T` | Terminal запасной | Да |
| `Super + Shift + Ctrl + T` | Floating Terminal запасной в центре экрана с размерами треть на треть экрана | Да |
| Колдунские кнопки | Описание | Работает? |
| ----------------------- | ---------------------- | --------- |
| `XF86AudioMute` | Toggle audio mute |хз|
| `XF86AudioMicMute` | Toggle microphone mute |хз|
| `XF86AudioLowerVolume` | Decrease volume | Да |
| `XF86AudioRaiseVolume` | Increase volume | Да |
| `XF86AudioPlay` | Play/pause |хз|
| `XF86AudioPause` | Play/pause |хз|
| `XF86AudioNext` | Next track |хз|
| `XF86AudioPrev` | Previous track |хз|
| `XF86MonBrightnessUp` | Increase brightness |хз|
| `XF86MonBrightnessDown` | Decrease brightness |хз|
| Not sxhkd | Описание | Работает? |
| --------------- | ---------------------- | --------- |
| `Print` | Выделить область | Да |
| `Print + Alt` | Все мониторы целиком | Да |
| `Print + Ctrl` | Активный монитор | Да |
| `Print + Shift` | Активное окно | Да |
| `CapsLock` | Switch keyboard layout | Да |
Так же есть бинд на зажим дальней боковой кнопки мыши. Если эту кнопку нажимать, то она работает как обычно. Если её зажать и начать двигать мышку, то вместо движения курсора будет плавный скрол. Обычно такое делают на трекболах без колеса мыши, но я люблю этот метод скрола на любом девайсе. Можно скролить с нужной скоростью и точностью куда надо без долгого кручения колеса.

414
NOTES.md Normal file
View file

@ -0,0 +1,414 @@
Тут будут всякие заметки и доп информация по работе с NixOS и моим конфигом.
## Навигация
- [Описание](#описание)
## Описание
Железо, на котором работают мои дотсы:
- CPU: i5 10400f
- GPU: AMD RX6600
- RAM: 32gb (2x16) ddr4 3200
- Motherboard: MSI Z590-A PRO
- Два монитора 1920x1080 на 165 и 100 герц
Основной набор софта
Изначально я написал конфиги для `bspwm` + `polybar`. Но потом хочу затестить другию WM. В теории между ними можно переключаться при запуске пк, так что проблем быть не должно. Если какой-то WM надо выключить, чтоб не засирать систему, то это можно делать в `modules/home-manager/bundle.nix`
| Software | Name |
| ------------ | -------------------------------- |
| WM | bspwm |
| Hotkeys | sxhkd |
| Terminal | Alacritty, Kitty |
| Multiplexer | Zellij |
| Shell | oh-my-zsh with many plugins |
| Shell Prompt | Starship |
| Apps/Menus | Rofi |
| Bar | Polybar |
| ScreenLock | betterlockscreen |
| Notification | Dunst |
| Files | Thunar, Ranger |
| Images | qView |
| Video | mpv with plugins |
| Music | Strawberry, mpv |
| Browsers | Librewolf, Firefox, Chromium, ungoogled-chromium|
| Social | Discord, Telegram, Steam |
| Audio | PipeWire, pavucontrol |
| Color Theme | Gruvbox Dark Medium |
| Icons | Papirus Dark |
| DM | SDDM |
| Compositor | Нет. Мне не нужны анимации и прозрачность |
| Screenshare | OBS, ksnip |
| Code Editor | Neovim, VSCode |
| Video Editor | Blender |
| Fetch | fastfetch |
| Torrent | qBittorrent |
| Email client | Thunderbird |
| Color picker | xcolor, gcolor3 |
| Docs/eBook | Evince, LibreOffice, Calibre |
| Design | Krita |
| Productivity | Obsidian, Planify |
Чтоб узнать sha256 для гитхаб репы, пишем в терминал эту команду:
```sh
nix-prefetch-git link
```
Если хочется поменять цвета или шрифты в конфиге какой-то программы, но при ребилде получается конфликт, то дело в Stylix, который управляет системной темой и сам везде ставит шрифты и цвета. Если хочется заменить, не трогая stylix, то надо добавить `lib.mkForce` перед значением. Например так:
```nix
font = lib.mkForce "JetBrainsMono Nerd Font 11";
```
Узнать localhost виртуалки, чтоб конектиться по ssh:
```sh
ip a
```
В бутменю биоса надо ставить не ссд диск, а `nixos boot`. У меня иначе не работало
У меня есть удобные алиасы для работы с NixOS:
- Ребилдить систему можно командой `rbs`, она ссылается на `~/nixos-private-dots` и применяет изменения на лету. Типо `rе build switch`, первые буквы. Ещё есть `rbb`, это `re build boot`, чтоб изменения после ребута пк применились.
- Обновить всю систему можно командой `upd`. Это изменит `flake.lock` файл, после чего надо `rbs` или `rbb`, чтоб применить. Если всё сломается, то придётся откатывать файл `flake.lock` на старый. Не знаю даётся ли такой выбор при ребуте системы, я через гит обычно откатываюсь.
- Обновить только `pkgs2` можно через `upd nixpkgs2`. Например Discord качаешь из `pkgs2.discord` и обновляешь `pkgs2` отдельно от системы, чтоб всё было стабильно и дискорд последней версии
Обновления системы часто требуют переписывать конфиг, потому что разрабы любят переименовывать параметр `залупа` в параметр `залупень`, считая это более удобным. В итоге обновил, применяешь конфиг, он не применяется и ты получаешь кучу ошибок "параметр `залупа` не существует" или "параметр `залупа` теперь `залупень`, поменяй конфиг"
Если ты обновил всю систему, но некоторые программы сломались, то можно не откатывать всю систему, а попробовать добавить к ним префикс `spkgs.`. Это скачает их из стабильной ветки репозитория
Визуальная тема у меня везде `gruvbox` и менять не планирую.
Чтоб задать аватарку юзера в SDDM (это меню ввода пароля при запуске пк), надо отправить png файл такой командой:
```sh
sudo cp image.png /var/lib/AccountsService/icons/username
```
То есть именно `username`, без `.png` в конце
Настройки смены языка, тачпада и мыши можно найти в файле `./modules/nixos/xserver.nix`. У меня там стоит необычный скрол мышкой. Я не использую колесо мыши. Я зажимаю дальнюю боковую кнопку мыши и двигаю мышку по столу. В какую сторону двигаешь мышку, в ту сторону и будет скрол. Так можно удобно регулировать скорость скрола и быстро оказываться где надо. Язык я меняю на капслок. Для активации капса надо жать шифт капслок. В этом же файле есть **настройка для amd видеокарт, которую надо выключить, если у тебя nvidia**. Не знаю надо ли что-то настраивать для nvidia после этого.
В стоке выключены следующие конфиги (их можно включить в `bundle.nix` в разных каталогах):
- `filesystem.nix` - Конектить внешние диски автоматически. В стоке выкл, потому что у каждого свои айдишники дисков.
- `hibernate.nix` - Настройки гибернации. В стоке выкл, потому что у каждого свои айдишники файла подкачки.
- `vr.nix` - Пакеты для работы виара на linux. Нужно очень мало кому, потому выкл
- `symlinks.nix` - Настройки симлинков. Не всем надо, плюс у каждого свои симлинки. Потому выкл в стоке
- Файл подкачки - У меня он в `/etc/nixos/hardware-configuration.nix`, который у каждого свой
Баш скрипты требуют другой шебанг в начале. Обязательно используй `#!/usr/bin/env bash` вместо `#!/bin/bash`. Первый вариант будет работать на любой OS с bash, а вот второй вариант ломается.
Не юзай ИИ для поиска информации по NixOS, он всегда выдумывает параметры. Сколько бы я не тестил разные ИИ для настройки NixOS, они даже базовые вещи не могут дать, тут слишком часто всё меняется и в интернете слишком мало информации по данной OS, чтоб ИИ давал хоть что-то рабочее. P.S спустя пару лет после написания этого текста я нашёл один ИИ, который бредит чуть реже остальных. Это Grok. Но даже он всё ещё часто выдумывает параметры
Если изменил параметр, но не хочешь ничего качать, то есть флаг `--offline`, чтоб без инета ребилд работал
## Браузер
В стоке используется браузер `LibreWolf`, который имеет неприятные настройки безопасности. Мне проще выключить некоторые настройки безопасности в нём, чем выключить лишний шлак в `Firefox`. `Chromium` стоит как запаска для некоторых сайтов, как основа он мне не нравится. Написать какие настройки безопасности я выключил в `LibreWolf` мне лень. Но могу сказать какие настройки я использую в `Firefox` и `LibreWolf`, связанные просто с удобством. Они в таблице ниже.
| Настройка about:config | Значение | Описание |
| --------------------------------------- | -------- | ------------------------------------------------------------------------------- |
| browser.bookmarks.openInTabClosesMenu | false | Не закрывать меню закладок при открытии ссылки |
| browser.tabs.loadBookmarksInBackground | true | Не перекидывать на закладку, открытую в новой вкладке |
| layout.css.has-selector.enabled | true | Для кастом стилей |
| accessibility.typeaheadfind.enablesound | false | Чтоб не булькало на ухо |
| full-screen-api.warning.timeout | 0 | Чтоб фулскрин popup не вылазил |
| browser.tabs.insertAfterCurrent | true | Чтоб новые вкладки были справа от нынешней |
| network.http.http3.enable | false | Чтоб ютуб не лагал как блядь (мб больше не помогает) |
| dom.webgpu.enabled | true | Чтоб WebGPU работал |
| media.ffmpeg.vaapi.enabled | true | Если хочу аппаратное декодирование видео, например на ютубе, чтоб цп не грузить |
| network.dns.disableIPv6 | true | В стоке false. Если не работает локалхост, то верни true |
| extensions.update.autoUpdateDefault | false | Не надо мне обновлять расширения без разрешения |
| browser.tabs.unloadOnLowMemory | true | Выгружать неактивные вкладки |
| browser.cache.memory.capacity | 512000 | Кеш в оперативе на 512мб поставил вместо авто. В стоке -1, это авто |
| browser.eme.ui.enabled | false | Отключить отрисовку всего, что связано с DRM, будто его и не существует |
| nglayout.enable_drag_images | false | Запретить drag-n-drop картинок сайтов, чтоб не было фризов браузера на века |
Если хочешь сменить стоковый браузер, то мб надо поменять переменную в `./nixos/home.nix`. Если не помогает, то допом команда в терминале (замени `librewolf` на нужный браузер):
```sh
xdg-settings set default-web-browser librewolf.desktop
```
## Сборщик мусора
Если обновил систему и спустя время с ней всё окей, всё стабильно, то советую запускать сборщик мусора. При обновлении nixos не удаляет старые пакеты, чтоб ты мог откатиться назад, в случае поломок, даже если нет интернета. Чтоб удалить пакеты, которые больше не используются, можно использовать команду `grb` (это мой алиас в zsh).
Если вдруг кажется, что система занимает больше места, чем должна, и сборка мусора не помогает, то вот что я делаю.
Кидаешь жпт вывод команды
```sh
nix-store --gc --print-roots
```
У меня оказывается `grb` не чистит поколения `home-manager`
```sh
nix-env --list-generations \
--profile ~/.local/state/nix/profiles/home-manager
```
Выдаст много всего
Удалить всё, кроме текущего:
```sh
nix-env --delete-generations old \
--profile ~/.local/state/nix/profiles/home-manager
```
Или оставить за ласт 7 дней
```sh
nix-env --delete-generations "+7" \
--profile ~/.local/state/nix/profiles/home-manager
```
И потом можешь `grb` использовать
Но это почистило не всё. Много, но явно не всё.
### Часть диалога с GPT
(тут был вывод команды `ls -l /nix/var/nix/gcroots/auto`)
При этом команда `find ~ -maxdepth 3 -type l -name result` ничего не нашла. Команда `ls -l /nix/var/nix/gcroots/auto | grep nix-shell` тоже пусто
(тут был вывод команды `ls -l /nix/var/nix/gcroots`)
На что GPT ответил так:
Основное:
- `slq1zkcsd5k5vlj51bkkl24vngrh41m4 -> /tmp/nixos-rebuild.S9abuF/result`
Это держит большую часть `/nix/store`. То есть **не сам system profile**, а именно **результат последнего `nixos-rebuild build`**, который создаёт `result` в `/tmp`.
- Остальные ссылки (`system-149-link`, `profile-4-link`, `home-manager-60-link`) — это нормальные активные профили, их GC не тронет.
- `dbgcd463h97sj574ym1jhfpydmxm66si` (flake-registry.json) — копейки, можно игнорировать.
Вот почему `find ~ -type l -name result` ничего не показал: `result` был в `/tmp`, а не в домашнем каталоге.
Что делать?
1. Удалить временный результат сборки:
```bash
sudo rm -f /nix/var/nix/gcroots/auto/slq1zkcsd5k5vlj51bkkl24vngrh41m4
```
2. Затем выполнить сборку мусора:
```bash
sudo nix-collect-garbage -d
```
3. Проверить `/nix/store`:
```bash
du -sh /nix/store
```
После этого, скорее всего, объём уменьшится на десятки гигабайт.
### Кто больше всего жрёт памяти
Разбирает **все зависимости профиля** и показывает самые «тяжёлые» пакеты
```sh
nix-store --query --requisites /nix/var/nix/profiles/system-149-link | xargs du -sh | sort -hr | head -n 20
```
Показывает топ-20 самых «тяжёлых» директорий в `/nix/store`.
```sh
find /nix/store -maxdepth 1 -type d -print0 | xargs -0 du -sh 2>/dev/null | sort -hr | head -n 20
```
## Что делать в emergency mode?
Я случайно забыл удалить маунты хостовых дисков на виртуалке. В итоге улетел в `emergency mode`, аварийный мод systemd. Из него нельзя выйти, войти можно лишь от рута. Я через `nvim /home/buliway/nixos-private-dots` изменил нужные файлы, но ребилд сделать нельзя, потому что гит принадлежит другому юзеру. Фиксится таким образом:
```sh
git config --global --add safe.directory /home/buliway/nixos-private-dots
sudo nixos-rebuild boot --impure --flake /home/buliway/nixos-private-dots
```
Выдаст ошибку, но похуй, `reboot`
И в следующий раз не забывай юзать такие параметры маунта `"nofail" "noatime" "x-systemd.device-timeout=1s"`
## Нюансы с JetBrains Toolbox
В стоке тулбокс может всегда разлогинивать. Я не проверял, сразу сделал как просили на вики, чтоб это исправить.
Надо скачать тулбокс (уже стоит), запустить его один раз, а потом:
- Изменить `~/.local/share/JetBrains/Toolbox/.storage.json` и добавить строку `"preferredKeychain": "linux-fallback"` (у меня было в стоке)
- Залогиниться как обычно, но остановиться после того, как JetBrains вебсайт откроется
- Перезапустить JetBrains Toolbox, открыть настройки и нажать `"Troubleshoot..."`
- Следуй инструкциям по ручному входу в систему, как указано в руководстве
После выполнения этих действий JetBrains Toolbox сохранит учетные данные пользователя в зашифрованном файле (со статическим ключом) по адресу `~/.local/share/JetBrains/Toolbox/.securestorage`. Если этого не сделать, JetBrains Toolbox не сможет получить учетные данные через `libsecret` (из-за bwrap sandboxing?) и постоянно уведомляет пользователя о необходимости повторной авторизации.
Если что-то не работает, то мб помогут эти ссылки:
- https://nixos.wiki/wiki/Jetbrains_Tools
- https://github.com/NixOS/nixpkgs/issues/240444
## Настройки для игр
Я установил `MangoHud`, `gamemode` и `gamescope`. Ещё есть `proton-ge` в steam. Всё это можно по разному комбинировать между собой.
### MangoHud
Мониторинг ресурсов для vulkan и opengl приложений. Показывает fps и нагрузку на пк, включая температуры цп и гп. Можно использовать как полноценные бенчмарки, логируя всю его инфу и визуализируя данные другой утилитой. Чтоб использовать, надо написать `mangehud приложение`, если запускать через терминал, или `mangohud %command%`, если использовать через steam. Если используется вместе с `gamescope`, то надо писать `gamescope --mangoapp`.
### gamemode
Оптимизатор линукса для игр. В параметры запуска игры в стиме пишешь `gamemoderun %command%` и всё работает.
### gamescope
SteamOS session compositing window manager. Можно назвать мини wm внутри wm (хотя можно и в tty запустить, без стороннего wm). Не совсем понимаю когда его надо использовать. Иногда, если у игры есть проблемы с обычным linux, то она может нормально запускаться через `gamescope`
### Параметры запуска Steam
Если в параметры запуска захочется добавить что-то помимо того, что я напишу, то надо учитывать порядок написания. Как я понял, если надо используется переменная, то её надо писать в начале. Например, если в игре не работает печать на русском языке, то надо в начало добавить `LC_ALL="ru_RU.UTF-8"`. Если же речь про стандартные параметры запуска стима, по типу `-dev` или `-novid`, то их надо писать после `%command%`. Слово `%command%` скорее всего является игрой, то есть команда для запуска игры. То есть синтаксис как в обычном терминале. Сначала переменные окружения, потом команда, потом параметры запуска через `-параметр`.
Параметры запуска для игр, чтоб использовать все доступные бафы, что я сделал:
Параметр запуска без использования gamescope - `mangohud gamemoderun %command%`.
Параметр запуска с использованием gamescope `gamescope --mangoapp gamemoderun %command%`.
Вот пример параметров запуска для Apex Legends: `mangohud gamemoderun %command% +exec autoexec.cfg -dev`
FSR в `proton-ge` включается только в фулскрине через `WINE_FULLSCREEN_FSR=1`. Регулировать резкость можно через переменную окружения `WINE_FULLSCREEN_FSR_STRENGTH=N`, где N - это уровень резкости изображения от 0 до 5. Чем выше значение, тем меньше резкость. По умолчанию установлено значение "2", рекомендуют использовать значение "3".
## Настройка мониторов
На иксах второй монитор может не работать или все мониторы могут сидеть на 60 герц. Изменить это один раз недостаточно, после ребута сбросится. Не знаю нормального способа, кроме как добавить настройки в автозапуск. Ниже пример того, как произвести начальную настройкy:
```sh
# Увидеть список мониторов
xrandr
# Изменить настройки для основного монитора. Мб вместе с --primary для основного монитора
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
# Изменить настройки для второго (правого) монитора
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
```
Есть ещё такая штука - https://github.com/phillipberndt/autorandr . Но мне лень с ней разбираться
## Системная тема на всех вебсайтах
Если используется популярная системная тема, то, скорее всего, её можно выбрать в браузерном расширении DarkReader, чтоб все сайты в интернете выглядели как системная тема. Может быть я потом займусь синхронизацией темы stylix с настройками DarkReader
## Запуск Waydroid на X11
Один раз написать в терминале `waydroid init`
- Запустить `weston`
- В его терминале написать `waydroid show-full-ui`
На weston всё работает сразу как надо. Но стоит изменить размеры окна, как waydroid ui пропадает. Приходится стопать и по новой запускать отображение
## Как я тестирую разный новый софт
Для этого создаю каталог, а в нём файл `flake.nix` с таким содержимым:
```nix
{
description = "Development shell for my project";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
};
outputs = { self, nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
# pkgs = nixpkgs.legacyPackages.${system};
config = {
allowUnfree = true;
rocmSupport = true;
permittedInsecurePackages = [
"python-2.7.18.8"
"electron-25.9.0"
];
};
pkgs = import nixpkgs {
inherit system;
inherit config;
};
spkgs = import inputs.nixpkgs-stable {
inherit system;
inherit config;
};
in {
devShells.${system}.default =
pkgs.mkShell {
buildInputs = with pkgs; [
planify
];
shellHook = ''
zsh
echo "Welcome to Dev Shell"
'';
};
};
}
```
Сюда можно ставить разный софт из нужной версии репы. Чтоб зайти в этот шел, заходишь в каталог с этим файлом и пишешь `nix develop`. Теперь весь софт из этого `flake.nix` будет доступен именно в этом терминале. Если хочется обновить весь софт в этом шеле до последней версии, то я просто удаляю файл `flake.lock` и снова пишу `nix develop`. Чтоб выйти из шела, можно написать `exit`.
Например, я разрабатывал GUI на fyne. Это либа для golang, чтоб GUI приложения делать. Она на nixos требует пробрасывть зависимости через nix shell, который в конечном итоге выглядел так:
```nix
{
description = "Development shell for my project";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells.${system}.default =
pkgs.mkShell {
buildInputs = with pkgs; [
# Fyne
libGL
pkg-config
xorg.libX11.dev
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXrandr
xorg.libXxf86vm
fyne
# Avif
libaom
# Video
glib
glib.dev
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
gst_all_1.gst-libav
];
# Чтобы pkg-config видел .pc-файлы, и GStreamer загружал плагины
PKG_CONFIG_PATH = pkgs.lib.concatStringsSep ":" [
"${pkgs.glib.dev}/lib/pkgconfig"
"${pkgs.gst_all_1.gstreamer}/lib/pkgconfig"
"${pkgs.gst_all_1.gst-plugins-base}/lib/pkgconfig"
"${pkgs.gst_all_1.gst-plugins-good}/lib/pkgconfig"
"${pkgs.gst_all_1.gst-plugins-bad}/lib/pkgconfig"
"${pkgs.gst_all_1.gst-plugins-ugly}/lib/pkgconfig"
"${pkgs.gst_all_1.gst-libav}/lib/pkgconfig"
];
NIX_CFLAGS_COMPILE = [ "-I${pkgs.glib.dev}/include" ];
NIX_LDFLAGS = [ "-L${pkgs.glib.out}/lib" ];
shellHook = ''
zsh
echo "Welcome to Dev Shell"
export LD_LIBRARY_PATH=${pkgs.wayland}/lib:${pkgs.lib.getLib pkgs.libGL}/lib:$LD_LIBRARY_PATH
'';
};
};
}
```
Необходимые пакеты я подбирал методом тыка, читая ошибки при попытке компилировать

32
PROBLEMS.md Normal file
View file

@ -0,0 +1,32 @@
Тут будет список проблем, с которыми я столкнулся при настройке nixos. Возможно кому-то пригодится
## Проблемы
- Некоторые симлинки, созданные через home-manager, могут быть перезаписаны другим софтом, удалив мои настройки
- `Mimetypes` удаляют симлинк. Поэтому я сделал отдельный файл в каталоге `shit` и буду копировать готовый файл целиком в нужный каталог
- Могут быть проблемы с TUN модом в xray/singbox/clash клиентах. В теории это исправлено в новых версиях системы через использование параметров. Но мне лень обновляться, я просто запускаю с рутом Throne бинарь, скачанный с гитахаба, прокинув нужные зависимости через nix-ld, который имитирует обычную иерархию файловой системы для рандомных прог с инета
- `Thunar` удаляет мой конфиг, даже если это не симлинк и даже если я перезапишу настройки в его же собственный файл. Приходится руками всё делать при каждой переустановке системы
- `Thunar` крашится при работе с более чем одним окном. Не всегда, но в самый не нужный момент. А `dolphin` тянет 10 терабайт гей порно в зависимости и выводит blowjob по среди экрана. Хз даже что делать. Все файловый менеджеры гавно
- `Thunar` криво показывает превью видео. Он генерит рандом кадр из видео в качестве превью, вместо того чтоб взять данные из метаданных, куда все закидывают реальное превью. Они считают, что лучше генерить превью каждый раз, чем взять уже готовое
- В терминале ssh-agent палит мою почту. Но мб это только при первом запуске терминала
### Ребилд крашит систему
Эта проблема была раньше. Сейчас исправлена. Но заметку оставлю, вдруг пригодится в будущем
Ребилд системы через `switch` или `test` кладёт систему. Чёрный экран без возможности переключить tty через `ctrl + alt + F1-F7`. Можно юзать `boot`, чтоб после ребута пк применялось. Тогда не крашит и после ребута всё работает. Но лучше найти какой сервис виноват и исправить проблему нормально.
#### Потенциальный способ исправить проблему
Есть следующие два параметра:
- `systemd.services.<name>.restartIfChanged`
- `systemd.user.services.<name>.restartIfChanged`
Они указывают надо ли ребутать указанный сервис при ребилде системы. Мб надо туда что-то указать и сделать false
Я сделал это для одного сервиса в `nixos/configuration.nix`. Мне помогло. Но если будут ещё сервисы, ребилд на которых зависает и после него крашится система, то можно пробовать запретить рестарт при ребилде.
#### Реальный способ исправить проблему
Походу дело было в сервисе `cage`. Когда я его удалил, то всё стало работать нормально

163
README.md
View file

@ -1 +1,162 @@
Это ветка для тестов новых настроек на виртуалке. Так же есть отдельная ветка `qemu`, её я использую как вторую стабильную систему, но в виртуалке
## ВАЖНО
В моём [видео](https://youtu.be/dzWo6Pji-7U) использовалась старая версия конфига, которая теперь находится в ветке [old-video](https://git.buliway.ru/buliway/nixos-private-dots/src/branch/old-video). Новая версия конфига просто обновлена с ядра 6.12 до ядра 6.18, спустя более года без изменений. За это время изменились многие параметры NixOS и немного изменился процесс установки моего конфига. Так что советую ставить конфиг по инструкции ниже, а не повторять за видео
## Другие README файлы в этих дотсах
- [Бинды системы](./BINDS.md)
- [Полезная информация по моим конфигам](./NOTES.md)
- [Цвета и иконки тем, храню для себя](./THEMES.md)
- [Список известных проблем при настройке системы](./PROBLEMS.md)
- [Копия man page для bspwm с доп инфой](./modules/home-manager/wm/bspwm/bspwm.md)
- [Описание плагинов для mpv](./modules/home-manager/mpv/README.md)
- [NeoVim config](./nvim/README.md)
## Навигация
- [Мини гайд по NixOS](#мини-гайд-по-nixos)
- [Процесс установки](#процесс-установки)
- [Первый способ](#первый-способ)
- [Второй способ](#второй-способ)
- [После установки надо](#после-установки-надо)
- [Изменения для виртуалок](#изменения-для-виртуалок)
## Мини гайд по NixOS
- Одинаковые вещи могут делаться разными способами. Это норма, ведь nix считается языком програмимрования. По началу меня это бесило, когда читал чужие дотсы
- Нюансы работы NixOS в [этом](https://www.youtube.com/watch?v=7f19R8BWUnU&t=960s) видео. Мне понравилось
- [Плейлист](https://www.youtube.com/playlist?list=PLko9chwSoP-15ZtZxu64k_CuTzXrFpxPE) с английскими видео. Мне больше всего понравились видео под номерами [16](https://youtu.be/a67Sv4Mbxmc), [18](https://youtu.be/b641h63lqy0), [21](https://youtu.be/rEovNpg7J0M), [27](https://youtu.be/ljHkWgBaQWU) и [28](https://youtu.be/JCeYq72Sko0).
- Пакеты искать [тут](https://search.nixos.org/packages). Параметры для сток NixOS [тут](https://search.nixos.org/options). Параметры для home-manager [тут](https://home-manager-options.extranix.com/?query=&release=master). Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться.
- Для системной темы тут используется stylix. Все его параметры можно найти [тут](https://stylix.danth.me/options/nixos.html).
## Процесс установки
Сначала качаем NixOS GUI вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE. Для моей системы надо минимум 150гб памяти на диске. Около 80гб весит система, плюс надо место для обновлений будущих. В идеале 250гб иметь.
Когда система установилась и ты сидишь в терминале, делай это:
```sh
sudo nano /etc/nixos/configuration.nix
```
Я добавил туда `nix.settings.experimental-features = [ "nix-command" "flakes" ];`. Ниже, почти в самом конце, в `environment.systemPackages = with pkgs;` я добавил пакеты `vim, wget, git, curl`. В итоге получился такой конфиг (написал лишь его часть):
```nix
{
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
git
curl
];
}
```
После этого сохраняем и пишем в терминале это:
```sh
sudo nixos-rebuild switch
```
Дальше есть два способа. Перед использованием любого из них я рекомендую сделать форк и внести следующие изменения в конфиг перед установкой (либо можно сделать гит клон и через nano/vim внести изменения сразу в системе).
Надо заменить переменную `username` в `nixos/configuration.nix` и `nixos/home.nix` на свой ник, чтоб не сидеть под ником `buliway`.
Если видеокарта не от AMD, то надо сделать это. Если видеокарта от AMD, то стоит убедиться, что сделано наоборот, то есть включены нужные параметры.
- Удалить `rocmSupport = true;` в файле `flake.nix`
- Удалить `videoDrivers = [ "amdgpu" ];` и `deviceSection = ''Option "TearFree" "True"'';` в конце файла `modules/nixos/xserver.nix`. Возможно надо включить `videoDrivers = [ "nvidia" ];`, если видеокарта от Nvidia. Но лучше почитать https://nixos.wiki/wiki/Nvidia. Для графики Intel читать это https://nixos.wiki/wiki/Intel_Graphics. Мб для Nvidia и Intel не обязательно добавлять настройки и удалить amd конфиги будет достаточно для запуска.
- Удалить всю категорию настроек `amdgpu = {}`, удалить `boot.initrd.kernelModules`, и удалить всю категорию настроек `systemd.tmpfiles.rules = let` в файле `modules/nixos/hardware.nix`
А это можно донастроить уже в готовой системе
- Параметры мониторов закомментированы в файле `modules/home-manager/wm/bspwm/bspwm.nix`. Можно указать по желанию. Команда xrandr покажет доступные значения и имена мониторов.
- Если надо задать симлинки, то для этого есть файл `modules/home-manager/symlinks.nix`. Чтоб файл заработал, надо раскомментировать `./symlinks.nix` в файле `modules/home-manager/bundle.nix`.
- Если надо монтировать другие диски, то для этого есть файл `modules/nixos/filesystems.nix`. Там сейчас мой второй ссд. Чтоб файл заработал, надо раскомментировать `./filesystems.nix` в файле `modules/nixos/bundle.nix`.
- Если нужна гибернация, то её можно настроить в `modules/nixos/hibernate.nix`. Там надо указать uuid и офсет для swap файла. Чтоб файл заработал, надо раскомментировать `./hibernate.nix` в файле `modules/nixos/bundle.nix`.
С гитом есть нюанс. Если захочешь потом создать свои конфиги или добавить новые файлы, на которые надо ссылаться из nix, то надо указывать либо полный путь до файла, либо добавлять файл в гит. Если указывать относительный путь, как сделано в моих `bundle.nix`, то все эти файлы должны находиться в гите, либо каталог дотсов должен быть без гита вовсе. Если в каталоге дотсов инициализирован репозиторий гита, то в относительных путях он не видит файлы из `gitignore` или просто не отслеживаемые гитом файлы.
### Первый способ
Установить систему одной командой (я написал пример для github, но сейчас мои дотсы есть лишь на forgejo, не знаю как с него использовать такой синтаксис):
```sh
sudo nixos-rebuild boot --flake github:Buliway/nixos-private-dots --impure
```
Чтоб использовать с репой forgejo, можно попробовать такой синтаксис `git@git.buliway.ru:Buliway/nixos-private-dots`.
Параметр `boot` делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй `switch` вместо `boot`.
### Второй способ
Клонировать репозиторий и ребилдить систему с указанием пути:
```sh
git clone https://git.buliway.ru/buliway/nixos-private-dots
sudo nixos-rebuild boot --impure --flake ~/nixos-private-dots
```
Параметр `boot` делает так, что настройки не применяются сразу. После установки надо будет перезапустить пк. Если хочешь проверить как оно заработает без ребута пк, то используй `switch` вместо `boot`.
## После установки надо
Эта заметка частично для меня. Каждый ставит то, что ему надо
- Включить подкачку на 64 гига в `/etc/nixos/hardware-configuration.nix` через такой синтаксис:
```nix
swapDevices = [ {
device = "/swapfile";
size = 64*1024; # В мегабайтах
} ];
```
- Настроить гибренацию в `modules/nixos/hibernate.nix`
- Активировать скрипт в `shit` каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают
- Руками настроить `thunar`, `discord`, `telegram`, `steam`, `strawberry` и бинды для `ksnip`
- Добавить gpg ключи
```sh
gpg --import /path/to/your-key.gpg
```
Если не работает, то смотришь список ключей. Копируешь ID нужного и используешь во второй команде.
```sh
gpg --list-keys
gpg --edit-key ID-ключа
```
В этом режиме надо написать trust и выбрать степень доверия. Например 5 для своих ключей можно задать, это прям самое максимально доверие. Потом Ctrl + D чтоб выйти.
## Изменения для виртуалок
Виртуалка требует минимум 150гб памяти. Если хочешь меньше, то удали огромную кучу софта из конфигов, который тебе не нужен на виртуалке.
Это надо, чтоб включить коннект по ssh к виртуалке и сделать с ней общий буфер обмена. Ну и ещё параметры экрана меняю на один 1080p монитор на 60 герц.
В файле `modules/nixos/virtualisation.nix` раскомментировать эти строки:
```diff
+ services = {
+ openssh.enable = true; # Это ставится на виртуалку, чтоб к ней конект по ssh работал.
+ spice-vdagentd.enable = true; # Clipboard sharing
+ qemuGuest = {
+ enable = true; # Fix resolution
+ package = pkgs.qemu_full;
+ };
+ };
```
В файле `modules/home-manager/wm/bspwm/bspwm.nix` изменить эти строки:
```diff
extraConfigEarly = ''
- xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
- xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
+ xrandr --output Virtual-1 --mode 1920x1080 --rate 60
'';
```
В файле `modules/nixos/xserver.nix` закомментировать эти строки, даже если amd gpu на хосте:
```diff
- videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
- deviceSection = ''Option "TearFree" "True"'';
+ # videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
+ # deviceSection = ''Option "TearFree" "True"'';
```

131
THEMES.md Normal file
View file

@ -0,0 +1,131 @@
## Themes
У меня в IDE отображаются цвета. Так что я для себя сохраню разные варианты gruvbox
Цвет это имя цвета в stylix. Потом идёт название gruvbox-вариант
Я использую gruvbox-dark-medium
|Цвет |dark-hard|dark-medium|dark-pale|dark-soft|material-dark-hard|material-dark-medium|material-dark-soft|
|------|---------|-----------|---------|---------|------------------|--------------------|------------------|
|base00| #1d2021 | #282828 | #262626 | #32302f | #202020 | #292828 | #32302f |
|base01| #3c3836 | #3c3836 | #3a3a3a | #3c3836 | #2a2827 | #32302f | #3c3836 |
|base02| #504945 | #504945 | #4e4e4e | #504945 | #504945 | #504945 | #5a524c |
|base03| #665c54 | #665c54 | #8a8a8a | #665c54 | #5a524c | #665c54 | #7c6f64 |
|base04| #bdae93 | #bdae93 | #949494 | #bdae93 | #bdae93 | #bdae93 | #bdae93 |
|base05| #d5c4a1 | #d5c4a1 | #dab997 | #d5c4a1 | #ddc7a1 | #ddc7a1 | #ddc7a1 |
|base06| #ebdbb2 | #ebdbb2 | #d5c4a1 | #ebdbb2 | #ebdbb2 | #ebdbb2 | #ebdbb2 |
|base07| #fbf1c7 | #fbf1c7 | #ebdbb2 | #fbf1c7 | #fbf1c7 | #fbf1c7 | #fbf1c7 |
|base08| #fb4934 | #fb4934 | #d75f5f | #fb4934 | #ea6962 | #ea6962 | #ea6962 |
|base09| #fe8019 | #fe8019 | #ff8700 | #fe8019 | #e78a4e | #e78a4e | #e78a4e |
|base0A| #fabd2f | #fabd2f | #ffaf00 | #fabd2f | #d8a657 | #d8a657 | #d8a657 |
|base0B| #b8bb26 | #b8bb26 | #afaf00 | #b8bb26 | #a9b665 | #a9b665 | #a9b665 |
|base0C| #8ec07c | #8ec07c | #85ad85 | #8ec07c | #89b482 | #89b482 | #89b482 |
|base0D| #83a598 | #83a598 | #83adad | #83a598 | #7daea3 | #7daea3 | #7daea3 |
|base0E| #d3869b | #d3869b | #d485ad | #d3869b | #d3869b | #d3869b | #d3869b |
|base0F| #d65d0e | #d65d0e | #d65d0e | #d65d0e | #bd6f3e | #bd6f3e | #bd6f3e |
Сравнение цветов моей темы gruvbox с другими темами
|Цвет |gruvbox-d-m| onedark | nord |catppuccin-mocha|catppuccin-latte|rose-pine|rose-pine-moon|tokyo-night-moon|everforest| dracula |
|------|-----------|---------|---------|----------------|----------------|---------|--------------|----------------|----------|---------|
|base00| #282828 | #282c34 | #2E3440 | #1e1e2e | #eff1f5 | #191724 | #232136 | #222436 | #2d353b | #282a36 |
|base01| #3c3836 | #353b45 | #3B4252 | #181825 | #e6e9ef | #1f1d2e | #2a273f | #1e2030 | #343f44 | #363447 |
|base02| #504945 | #3e4451 | #434C5E | #313244 | #ccd0da | #26233a | #393552 | #2d3f76 | #475258 | #44475a |
|base03| #665c54 | #545862 | #4C566A | #45475a | #bcc0cc | #6e6a86 | #6e6a86 | #636da6 | #859289 | #6272a4 |
|base04| #bdae93 | #565c64 | #D8DEE9 | #585b70 | #acb0be | #908caa | #908caa | #828bb8 | #9da9a0 | #9ea8c7 |
|base05| #d5c4a1 | #abb2bf | #E5E9F0 | #cdd6f4 | #4c4f69 | #e0def4 | #e0def4 | #3b4261 | #d3c6aa | #f8f8f2 |
|base06| #ebdbb2 | #b6bdca | #ECEFF4 | #f5e0dc | #dc8a78 | #e0def4 | #e0def4 | #828bb8 | #e6e2cc | #f0f1f4 |
|base07| #fbf1c7 | #c8ccd4 | #8FBCBB | #b4befe | #7287fd | #524f67 | #56526e | #c8d3f5 | #fdf6e3 | #ffffff |
|base08| #fb4934 | #e06c75 | #BF616A | #f38ba8 | #d20f39 | #eb6f92 | #eb6f92 | #ff757f | #e67e80 | #ff5555 |
|base09| #fe8019 | #d19a66 | #D08770 | #fab387 | #fe640b | #f6c177 | #f6c177 | #ffc777 | #e69875 | #ffb86c |
|base0A| #fabd2f | #e5c07b | #EBCB8B | #f9e2af | #df8e1d | #ebbcba | #ea9a97 | #ffc777 | #dbbc7f | #f1fa8c |
|base0B| #b8bb26 | #98c379 | #A3BE8C | #a6e3a1 | #40a02b | #31748f | #3e8fb0 | #c3e88d | #a7c080 | #50fa7b |
|base0C| #8ec07c | #56b6c2 | #88C0D0 | #94e2d5 | #179299 | #9ccfd8 | #9ccfd8 | #86e1fc | #83c092 | #8be9fd |
|base0D| #83a598 | #61afef | #81A1C1 | #89b4fa | #1e66f5 | #c4a7e7 | #c4a7e7 | #82aaff | #7fbbb3 | #80bfff |
|base0E| #d3869b | #c678dd | #B48EAD | #cba6f7 | #8839ef | #f6c177 | #f6c177 | #fca7ea | #d699b6 | #ff79c6 |
|base0F| #d65d0e | #be5046 | #5E81AC | #f2cdcd | #dd7878 | #524f67 | #56526e | #c53b53 | #9da9a0 | #bd93f9 |
Цветовая схема **Base16** используется для унификации цветовых тем в разных приложениях. Она определяет 16 базовых цветов, каждый из которых играет определённую роль. Вот основные цвета и их назначения:
- **Base00** **Background**: Основной фоновый цвет.
- **Base01** **Lighter Background**: Более светлый цвет для фона, часто используется для элементов вроде выделенных областей.
- **Base02** **Selection Background**: Цвет фона выделений, обычно для текста или других активных областей.
- **Base03** **Comments/Inactive Text**: Цвет для комментариев или неактивного текста, обычно более тусклый или нейтральный.
- **Base04** **Dark Foreground**: Тёмный текст на светлом фоне или для элементов UI.
- **Base05** **Default Foreground**: Основной цвет текста.
- **Base06** **Light Foreground**: Более светлый текст, используется на более тёмных элементах.
- **Base07** **Light Background/Foreground Accent**: Самый светлый цвет, часто используется для акцентированных областей или фона текста.
- **Base08** **Variables/Errors**: Акцентный цвет для переменных или ошибок. Часто красный.
- **Base09** **Integers/Warnings**: Используется для целых чисел или предупреждений. Оранжевый.
- **Base0A** **Booleans/Keys**: Акцентный цвет для логических значений или ключей. Жёлтый.
- **Base0B** **Strings/Success**: Цвет для строк или успешных операций. Зелёный.
- **Base0C** **Support/Functions**: Цвет для поддерживающих элементов, функций или специальных значений. Бирюзовый.
- **Base0D** **Keywords/Declarations**: Используется для ключевых слов или деклараций. Синий.
- **Base0E** **Class Names/Constructors**: Акцентный цвет для имён классов или конструкторов. Фиолетовый.
- **Base0F** **Deprecated Elements/Exceptions**: Обычно используется для устаревших элементов или исключений. Коричневый.
Эти цвета обеспечивают чёткую структуру для создания тем, где легко отличить синтаксические элементы или UI-компоненты.
## Icons
Искать иконки для nerd шрифта можно [тут](https://www.nerdfonts.com/cheat-sheet).
Соберу сюда список nerd иконок, которые могут пригодиться. Для их отображения нужен специальный шрифт
CPU (мб не юзать, а писать текстом и cpu и gpu) - 
RAM - 
CapsLock - 󰪛
Клавиатура -  или 󰌌
Громкость -   
Яркость - 󰃟 󰃞 󰃝
Календарь -   󰸗
Выключение пк - ⏻ 󰐥 
Приложения -  󰀻  󰵆
Блютуз -  󰂯 󰂲 󰥰 󰦋 󰏳 󰦢 󰗾 󰗿
Network - 󰈀  󰒍
Clipboard -   󱉧 
Оповещения (bell) - 󰀦  󰀧 󰀨 󰅉 󰨱 󰵙  󰂚    
Reload - 󰑓 󱄋
Wifi
 󰖩 󱚵 󱚽 󱚼 󰖪 󱛄
󰤭 󰤨 󰤥 󰤢 󰤟 󰤯 󰤫 󰤮
Батарейки
    
󰁹 󰂂 󰂁 󰂀 󰁿 󰁾 󰁽 󰁼 󰁻 󰁺 󰂎
󱊣 󱊢 󱊡 󰂎
󰂃 󱉝 󰂑
Батарейки зарядка
󰂅 󰂋 󰂊 󰢞 󰂉 󰢝 󰂈 󰂇 󰂆 󰢜 󰢟
󱊦 󱊥 󱊤 󰢟
󰂄
Батарейки блютуз
󰥈 󰥆 󰥅 󰥄 󰥃 󰥂 󰥁 󰥀 󰤿 󰤾
󰥇 󰥊 󰥉
Температура
󰔄 - Температура по цельсию
    
 

View file

@ -12,7 +12,7 @@
./terminal/zsh.nix
./mangohud.nix
# ./symlinks.nix
./symlinks.nix
##############
## WM (X11) ##
@ -24,7 +24,7 @@
./wm/lockscreen.nix
# Для выключения i3 комментируй все строки ниже
./wm/i3.nix
# ./wm/i3.nix
# Для выключения bspwm комментируй все строки ниже
./wm/bspwm/bspwm.nix

View file

@ -16,10 +16,20 @@ in {
"${home-dir}".source = config.lib.file.mkOutOfStoreSymlink "/mnt/${home-dir}"; # Чтоб остальные симлинки были от ~/backups
# Secrets
".password-store".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.password-store"; # Для утилиты pass
".ssh".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.ssh";
# Browsers. Мб сделать .force, чтоб удалить сток. А мб руками удалить сток перед этим
".mozilla".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.mozilla";
".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.librewolf";
"Downloads/Telegram Desktop".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Telegram Desktop";
};
xdg.configFile = { # Это для каталога .config
"qobuz-dl".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Media/Music/Qobuz/.config/qobuz-dl"; # Конфиг для бекапа Qobuz музыки
# "chromium".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/chromium";
# "vesktop/themes/my-vesktop_theme.css".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/my-vesktop_theme.css"
};
}

View file

@ -41,6 +41,14 @@
g = "gitui";
f = "fastfetch";
b = "bat --color=always -p --pager='-r'"; # Веди себя как cat, но с цветами
yt = "yt-dlp --cookies /home/buliway/backups/Media/yt-dlp/cookies.firefox-private.txt";
yt-dir = "cd /mnt/backups/Media/yt-dlp";
yt-music = "yt-dlp --config-locations music.conf | sed '/has already been recorded in the archive/d'";
yt-video = "yt-dlp --config-locations video.conf | sed '/has already been recorded in the archive/d'";
yt-jp = "yt-dlp --config-locations music-jp.conf | sed '/has already been recorded in the archive/d'";
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
};
history = {

View file

@ -8,7 +8,8 @@
# Ниже настройки для основного монитора. Мб вместе с --primary надо
# И настройки для второго (правого) монитора
extraConfigEarly = ''
xrandr --output Virtual-1 --mode 1920x1080
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 60 --right-of DisplayPort-2
'';
# Эти команды выполняются в конце bspwmrc

View file

@ -176,18 +176,6 @@ in {
super + e
thunar
# IDE, text editor
super + i
code
# Monitor of resources (btop)
super + m
${terminalFirst} -e btop
# Goals. Todo manager. Task tracker
super + g
io.github.alainm23.planify
# Color picker. Получить hex в буфер обмена
super + shift + c
xcolor -s

View file

@ -1,9 +1,9 @@
{
imports = [
# ./env.nix # Мб не надо, ибо редачу через home.nix?
# ./filesystems.nix
./filesystems.nix
./hardware.nix
# ./hibernate.nix
./hibernate.nix
./locale.nix
./network.nix
./sound.nix

View file

@ -5,11 +5,6 @@
fsType = "ext4";
options = [ "nofail" "noatime" "x-systemd.device-timeout=1s" ]; #"uid=1000" "gid=1000" "dmask=007" "fmask=117" ];
};
"/mnt/shit" = {
device = "/dev/disk/by-uuid/234dc4ed-ade3-447f-af5a-4d254835cc66";
fsType = "ext4";
options = [ "nofail" "noatime" "x-systemd.device-timeout=1s" ]; #"uid=1000" "gid=1000" "dmask=007" "fmask=117" ];
};
};
}
# Ещё можно добавить такие параметры:

View file

@ -2,7 +2,7 @@
virtualisation = {
# podman.enable = true;
# waydroid.enable = true;
waydroid.enable = true;
docker = {
enable = true;
@ -35,15 +35,15 @@
# <target type='virtio' name='org.qemu.guest_agent.0'/>
# </channel>
services = {
openssh.enable = true; # Это ставится на виртуалку, чтоб к ней конект по ssh работал.
spice-vdagentd.enable = true; # Clipboard sharing
qemuGuest = {
enable = true; # Fix resolution
package = pkgs.qemu_full;
};
# Ниже я не включаю
# spice-webdavd.enable = true; # VirtFS alternative for directory sharing
};
# services = {
# openssh.enable = true; # Это ставится на виртуалку, чтоб к ней конект по ssh работал.
# spice-vdagentd.enable = true; # Clipboard sharing
# qemuGuest = {
# enable = true; # Fix resolution
# package = pkgs.qemu_full;
# };
# # Ниже я не включаю
# # spice-webdavd.enable = true; # VirtFS alternative for directory sharing
# };
}

View file

@ -30,7 +30,7 @@
enable = true;
windowManager = {
bspwm.enable = true;
i3.enable = true; # i3-gaps доступен в стоке в новых версиях
# i3.enable = true; # i3-gaps доступен в стоке в новых версиях
};
xkb = {
@ -47,7 +47,7 @@
# https://discourse.nixos.org/t/amd-gpu-optimal-settings/27648/3
# videoDrivers = [ "nvidia" ]; # https://nixos.wiki/wiki/Nvidia
# videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
# deviceSection = ''Option "TearFree" "True"'';
videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
deviceSection = ''Option "TearFree" "True"'';
};
}

View file

@ -1,4 +1,4 @@
{ config, pkgs, inputs, lib, ... }: {
{ config, pkgs, lib, ... }: {
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
@ -7,9 +7,11 @@
../modules/home-manager/bundle.nix
];
home = {
home = let
username = "buliway";
homeDirectory = "/home/buliway";
in {
username = username;
homeDirectory = "/home/${username}";
# Если с каким-то софтом будут проблемы, то можно перенести из "packages.nix" сюда
# Например, я читал, что если ставить vscode через configuration.nix, а не через пакеты юзера,

View file

@ -201,14 +201,14 @@
protoc-gen-go-grpc
# Gamedev
# godot
godot
# gdtoolkit_4
# ldtk
# Kubernetes
# k3d # k3s in Docker
# kubectl # Kubernetes CLI
# kubernetes-helm # Package manager for kubernetes
k3d # k3s in Docker
kubectl # Kubernetes CLI
kubernetes-helm # Package manager for kubernetes
# Other
android-tools
@ -219,21 +219,21 @@
yaml-language-server # YAML LSP
taplo # TOML LSP
vim-language-server # VimScript LSP
# postman # API Development Environment
# insomnia
postman # API Development Environment
insomnia
# For nvim
tree-sitter # For nvim
ripgrep # For nvim
fd # For nvim
tree-sitter
ripgrep
fd
############
## Архивы ##
############
zip # Архивировать
unzip # Разархивировать
unrar # Разархивировать
zip
unzip
unrar
gnutar # Для .tar?
p7zip # Это пакет для 7z?
bzip2 # .bz2 архивы
@ -298,9 +298,10 @@
#########
ksnip # Скрины. Аналог - Flameshot
# kdePackages.ark # Архиватор от KDE
file-roller # Архиватор от gnome
qbittorrent # Торренты качать
# thunderbird # Почтовый клиент для своей почты
thunderbird # Почтовый клиент для своей почты
pavucontrol
# pwvucontrol # Замена pavucontrol для PipeWire
networkmanagerapplet # Tray for network manager
@ -314,7 +315,7 @@
librewolf
firefox
chromium
#ungoogled-chromium
ungoogled-chromium
##########
## Docs ##
@ -402,7 +403,7 @@
bs-manager # Удобно ставить моды и менять версии Beat Saber
protonup-qt # Управлять версиями proton-ge
steam-run # Запуск бинарей в окружении, похожем на steam runtime
# steam-run # Запуск бинарей в окружении, похожем на steam runtime
mangohud # Фпс и нагрузку на пк показывает в играх
wineWowPackages.stableFull # support both 32- and 64-bit applications
# wineWowPackages.staging # Можно назвать бета версией вайна
@ -416,8 +417,8 @@
# inputs.affinity-nix.packages.${pkgs.system}.v3 # Бесплатная замена photoshop через wine
krita # Рисовать
# davinci-resolve # Рендер видео. Проприетарное, бесплатная версия
# blender-hip # 3д графика и рендер видео
davinci-resolve # Рендер видео. Проприетарное, бесплатная версия
blender-hip # 3д графика и рендер видео
gcolor3 # GUI color picker
xcolor # CLI color picker https://github.com/Soft/xcolor
@ -427,7 +428,7 @@
obsidian # Заметки
spkgs.planify # Таски
pkgs2.super-productivity # Таски
super-productivity # Таски
pkgs2.ticktick # Таски, proprietary
###########
@ -459,8 +460,8 @@
## Other ##
###########
# qmk # Прошивка для моих раздельных клавиатур
# vial # GUI для qmk, если клавиатура поддерживает
qmk # Прошивка для моих раздельных клавиатур
vial # GUI для qmk, если клавиатура поддерживает
fontconfig
zlib
libva-utils # Проверяет работоспособность VAAPI?
@ -469,7 +470,7 @@
alsa-utils # Мне для команды amixer надо
pamixer # PulseAudio cli (громкость редачу)
easyeffects # PipeWire settings. Мне для эквалайзера нужен
# weston # Для запуска wayland only apps на x11 (ещё есть cage, но он крашит систему при ребилде)
weston # Для запуска wayland only apps на x11 (ещё есть cage, но он крашит систему при ребилде)
# Для работы некоторых тем sddm
kdePackages.qt5compat

View file

@ -231,7 +231,6 @@ return {
unimported = false,
},
}
lspconfig.templ.setup {}
-- Frontend
lspconfig.tailwindcss.setup {}
@ -240,7 +239,6 @@ return {
client.server_capabilities.documentFormattingProvider = false
end,
}
lspconfig.htmx.setup {}
lspconfig.svelte.setup {
on_attach = function(client, bufnr) -- Выключить форматирование
client.server_capabilities.documentFormattingProvider = false
@ -281,13 +279,6 @@ return {
}
-- C/C++
-- lspconfig.ccls.setup {
-- init_options = {
-- cache = {
-- directory = ".ccls-cache";
-- };
-- }
-- }
lspconfig.clangd.setup {
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, -- Удалил "proto"
}