new public configs

This commit is contained in:
Buliway 2025-08-04 19:48:34 +03:00
parent 0c625ef877
commit ca00dfe910
65 changed files with 667 additions and 2922 deletions

107
BINDINGS.md Normal file
View file

@ -0,0 +1,107 @@
Тут будут описаны все бинды системы. Но мне может быть лень актуализировать эту огромную таблицу, так что лучше читай конфиги.
Возможно бинды для скринов придётся настроить руками в 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 + I` | IDE, text editor | Да |
| `Super + M` | Monitor of resources (btop) | Да |
| `Super + G` | Goals. Todo manager. Task tracker | Да |
| `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 | Да |
Так же есть бинд на зажим дальней боковой кнопки мыши. Если эту кнопку нажимать, то она работает как обычно. Если её зажать и начать двигать мышку, то вместо движения курсора будет плавный скрол. Обычно такое делают на трекболах без колеса мыши, но я люблю этот метод скрола на любом девайсе. Можно скролить с нужной скоростью и точностью куда надо без долгого кручения колеса.

204
NOTES.md Normal file
View file

@ -0,0 +1,204 @@
Тут будут всякие заметки и доп информация по работе с NixOS
Если не хочешь обновлять систему, но надо скачать пакеты последней версии, то используй `upd nixpkgs2` и перед именем пакета добавь `pkgs2.`. Команда в терминале обновить второй unstable репозиторий. А префикс `pkgs2.пакет` говорит "скачай `пакет` из репозитория `pkgs2`".
Если ты обновил всю систему, но некоторые программы сломались, то можно не откатывать всю систему, а попробовать добавить к ним префикс `spkgs.`. Это скачает их из стабильной ветки репозитория
В стоке используется браузер `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 | Чтоб новые вкладки были справа от нынешней |
Если хочешь сменить стоковый браузер, то мб надо поменять переменную в `./nixos/home.nix`. Если не помогает, то допом команда в терминале (замени `librewolf` на нужный браузер):
```sh
xdg-settings set default-web-browser librewolf.desktop
```
Смена тем сейчас работает криво для qt приложений. Можно автоматизировать gtk темы, но qt придётся руками добавлять/менять. Возможно фикс уже вышел, но мне лень проверять. У меня везде `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. Нужно очень мало кому, потому выкл
- `vscode.nix` - Настройки vscode. Большинство предпочтёт настраивать его по старинке руками, а не через геморный конфиг
- `symlinks.nix` - Настройки симлинков. Не всем надо, плюс у каждого свои симлинки. Потому выкл в стоке
- Файл подкачки - У меня он в `/etc/nixos/hardware-configuration.nix`, который у каждого свой. Потом вынесу это в дотсы.
Хоть тут и установлен `i3wm`, но он не настроен. Можешь удалить его из конфига, чтоб место не занимал. Я потом займусь его настройкой.
Если обновил систему и спустя время с ней всё окей, всё стабильно, то советую запускать сборщик мусора. При обновлении nixos не удаляет старые пакеты, чтоб ты мог откатиться назад, в случае поломок, даже если нет интернета. Чтоб удалить пакеты, которые больше не используются, можно использовать команду `grb` (это мой алиас в zsh).
Баш скрипты требуют другой шебанг в начале. Обязательно используй `#!/usr/bin/env bash` вместо `#!/bin/bash`. Первый вариант будет работать на любой OS с bash, а вот второй вариант ломается.
Не юзай ИИ для поиска информации по NixOS, он всегда выдумывает параметры. Сколько бы я не тестил разные ИИ для настройки NixOS, они даже базовые вещи не могут дать, тут слишком часто всё меняется и в интернете слишком мало информации по данной OS, чтоб ИИ давал хоть что-то рабочее
## TODO
Надо сделать декларативную QT тему. Сейчас у меня есть файлы в каталоге `shit`. Их я могу скопировать в `~/.config`, нужная переменная окружения в `home.nix` стоит и всё заработает. Но это не то, что я хочу. Другой человек не сможет это юзать мб. Потому что там в коде написан путь `/home/buliway`. Не всем же быть буливеями. Хотя это изи исправляется, потом сделаю. Но пока что я не хочу тратить время на настройку QT, который нормально настроить невозможно.
Надо добавить в polybar отображение:
- Заряд аккума. Сейчас проверить негде. Мб взять готовый вариант [тут](https://github.com/Zproger/bspwm-dotfiles/blob/main/config/polybar/modules.ini#L148)
- Яркость экрана. Тоже ноуты. Хз надо ли
- Температура и нагрузка на гп
- Температура цп
- Блютуз. Не знаю отображается ли он сейчас. Не могу проверить, негде
Установить и настроить:
- i3wm с его экосистемой софта. Чтоб тот же polybar был лишь на bspwm, а на i3 работал i3bar
- Sway. Для тестов wayland на nixos
- Hyprland. Для тестов wayland на 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, imv, feh |
| Video | mpv with plugins |
| Music | Strawberry, mpv |
| Browsers | Librewolf, Firefox, Chromium |
| Social | Discord, Telegram, Steam |
| Audio | PipeWire, pavucontrol |
| Color Theme | Gruvbox Dark Medium |
| Icons | Papirus Dark |
| DM | SDDM |
| Compositor | Нет. Мне не нужны анимации и прозрачность |
| Screenshare | OBS, Screenkey, 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 | Gimp, 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`. У меня иначе не работало
## Нюансы с 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 session start &`
- Потом `waydroid show-full-ui`
На weston всё работает сразу как надо. Но стоит изменить размеры окна, как waydroid ui пропадает. Приходится стопать и по новой запускать отображение

34
PROBLEMS.md Normal file
View file

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

446
README.md
View file

@ -1,308 +1,27 @@
Эта ветка для моего пк сделана. Просто дотсы надо смотреть в ветке main
## Навигация ## Навигация
- [Бинды](#бинды)
- [Другие README файлы в этих дотсах](#другие-readme-файлы-в-этих-дотсах) - [Другие README файлы в этих дотсах](#другие-readme-файлы-в-этих-дотсах)
- [Проблемы](#проблемы)
- [TODO](#todo) - [TODO](#todo)
- [Описание](#описание)
- [Нюансы с JetBrains Toolbox](#нюансы-с-jetbrains-toolbox)
- [Настройки для игр](#настройки-для-игр)
- [MangeHud](#mangohud)
- [gamemode](#gamemode)
- [gamescope](#gamescope)
- [Параметры запуска Steam](#параметры-запуска-steam)
- [Настройки мониторов](#настройка-мониторов)
- [Системная тема на всех вебсайтах](#системная-тема-на-всех-вебсайтах)
- [Мини гайд по NixOS](#мини-гайд-по-nixos) - [Мини гайд по NixOS](#мини-гайд-по-nixos)
- [Процесс установки](#процесс-установки) - [Процесс установки](#процесс-установки)
- [Первый способ](#первый-способ) - [Первый способ](#первый-способ)
- [Второй способ](#второй-способ) - [Второй способ](#второй-способ)
- [После установки надо](#после-установки-надо) - [После установки надо](#после-установки-надо)
- [Изменения для виртуалок](#изменения-для-виртуалок) - [Изменения для виртуалок](#изменения-для-виртуалок)
- [Иконки](#иконки)
- [Темы](#темы)
## Бинды
Клавиша `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 + I` | IDE, text editor | Да |
| `Super + M` | Monitor of resources (btop) | Да |
| `Super + G` | Goals. Todo manager. Task tracker | Да |
| `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 | Да |
Так же есть бинд на зажим дальней боковой кнопки мыши. Если эту кнопку нажимать, то она работает как обычно. Если её зажать и начать двигать мышку, то вместо движения курсора будет плавный скрол. Обычно такое делают на трекболах без колеса мыши, но я люблю этот метод скрола на любом девайсе. Можно скролить с нужной скоростью и точностью куда надо без долгого кручения колеса.
## Другие README файлы в этих дотсах ## Другие README файлы в этих дотсах
- [Бинды системы](./BINDINGS.md)
- [Список базового софта в системе](./SOFTWARE.md)
- [Цвета и иконки тем, храню для себя](./THEMES.md)
- [Список известных проблем при настройке системы](./PROBLEMS.md)
- [Копия man page для bspwm с доп инфой](./modules/home-manager/wm/bspwm/bspwm.md) - [Копия man page для bspwm с доп инфой](./modules/home-manager/wm/bspwm/bspwm.md)
- [Описание плагинов для mpv](./modules/home-manager/mpv/README.md) - [Описание плагинов для mpv](./modules/home-manager/mpv/README.md)
- [NeoVim config](./nvim/README.md) - [NeoVim config](./nvim/README.md)
## Проблемы
- Некоторые симлинки, созданные через home-manager, могут быть перезаписаны другим софтом, удалив мои настройки
- `Mimetypes` удаляют симлинк. Поэтому я сделал отдельный файл в каталоге `shit` и буду копировать готовый файл целиком в нужный каталог
- Не работает TUN мод во всех xray/singbox клиентах. Например nekoray пишет, что не удалось `setcap` при вводе пароля. Испробовал все доступные методы подключения, даже голый `singbox` через сервис никса. У меня просто пропадает инет в системе после конекта. Сейчас единственный рабочий метод, это скачать appimage nekoray с гитхаба, обязательно именно версии `3.26`, иначе не заработает, и запустить через sudo. И в настройках tun надо обязательно выключить `strick route`. Обычно я с ним сидел, но тут с ним проблемы и не работает ничего.
- `Gitui` выёбывается. Не может запушить, ошибка ssh появляется
- `Thunar` удаляет мой конфиг, даже если это не симлинк и даже если я перезапишу настройки в его же собственный файл. Приходится руками всё делать при каждой переустановке системы
- `Thunar` крашится при работе с более чем одним окном. Не всегда, но в самый не нужный момент. А `dolphin` тянет 10 терабайт гей порно в зависимости и выводит blowjob по среди экрана, так что я рот ебал. Хз даже что делать. Все файловый менеджеры гавно ебаное
- `Thunar` криво показывает превью видео. Это ебло дырявое генерит рандом кадр из видео в качестве превью. Ебантропы не могут взять данные из метаданных, куда все закидывают реальное превью. Они считают, что лучше генерить превью каждый ёбаный раз, чем взять уже готовое
- `polybar` и `bspwm` создали пидарасы ебаные бездарные. Одни ломают floating окна и не умеют нормально отображать все символы без ручного указания двух сотен шрифтов, другие не имеют документации и не могут нормально реализовать слои в wm. Ебланы блять. Все floating окна находятся под tiling окнами при запуске ебаного гей бара. Ебантропы не могут даже элементарную работу слоёв реализовать нормально. И эти два куска дерьма называют лучшими wm и status bar? Та нахуй они кому нужны с такими далбаёбами на разрабах. Иногда даже фулскрин находится под флоатингом, а флоатинг под тилингом. Ёбаный олигофрен создал этот bspwm
Мелочи
- Пароли через rofi выдают меню ввода пароля от qt, но оно имеет светлую тему. Ебал рот делать темы для qt, вечно всё через пизду работает
- В терминале ssh-agent палит мою почту. Но мб это только при первом запуске терминала
- В btop не работает статистика gpu. Установка зависимостей не помогла
- Не работает `git push` в `gitui`. Мб надо переподключить репу. Дело не в `ssh-agent`, его я исправил
- Не работает нечёткий поиск по истории комманд в терминале, если написать что-то и жать стрелку вверх
### Ребилд крашит систему
Эта проблема была раньше. Сейчас исправлена. Но заметку оставлю, вдруг пригодится в будущем
Ребилд системы через `switch` или `test` кладёт нахуй систему. Чёрный экран без возможности переключить tty через `ctrl + alt + F1-F7`. Можно юзать `boot`, чтоб после ребута пк применялось. Тогда не крашит и после ребута всё работает.
#### Потенциальный способ исправить проблему
Есть следующие два параметра:
- `systemd.services.<name>.restartIfChanged`
- `systemd.user.services.<name>.restartIfChanged`
Они указывают надо ли ребутать указанный сервис при ребилде системы. Мб надо туда что-то указать и сделать false
Я сделал это для одного сервиса в `nixos/configuration.nix`. Мне помогло. Но если будут ещё сервисы, ребилд на которых зависает и после него крашится система, то можно пробовать запретить рестарт при ребилде.
#### Реальный способ исправить проблему
Походу дело было в сервисе `cage`. Когда я его удалил, то всё стало работать нормально
## TODO
Надо сделать декларативную QT тему (ебал их рты). Сейчас у меня есть три каталог в каталоге `shit`. Их я могу скопировать в `~/.config`, нужная переменная окружения в `home.nix` стоит и всё заработает. Но это залупа. Другой человек не сможет это юзать мб. Потому что там в коде написан путь `/home/buliway`. Не всем же быть буливеями. Хотя это изи исправляется, потом сделаю. Но пока что я рот ебал тратить 3 дня на настройку темы бездарных далбаёбов на QT.
Надо сделать Nekoray нормально. Пока что только путь пидараса есть. Запускаешь `sudo ~/Downloads/VPN/nekoray-3.26-2023-12-09-linux-x64.AppImage`. В некобоксе офаешь у тян мода стрик роут. Систем тан. В меню жмёшь перезапустить прогу, она отлипла от терминала, перетащил на 10 воркспейс и сижу хуй сосу, ибо меня сайты в пермак кидают за такую хуйню
Надо добавить в polybar отображение:
- Заряд аккума. Сейчас проверить негде. Мб взять готовый вариант [тут](https://github.com/Zproger/bspwm-dotfiles/blob/main/config/polybar/modules.ini#L148)
- Яркость экрана. Тоже ноуты. Хз надо ли
- Температура и нагрузка на гп
- Температура цп
- Блютуз. Не знаю отображается ли он сейчас. Не могу проверить, негде
Установить и настроить:
- i3 с его экосистемой софта. Чтоб тот же polybar был лишь на bspwm, а на i3 работал i3bar
- Sway. Мб сделать через ags
## Описание
Железо, на котором это работает:
- CPU: i5 10400f
- GPU: AMD RX6600
- RAM: 32gb (2x16) ddr4 3200
- Motherboard: MSI Z590-A PRO
- Два монитора 1920x1080 на 165 и 100 герц
Основной набор софта
Изначально я написал конфиги для `bspwm` + `polybar`. Но так как оба эти проги созданы далбаёбами бездарными, я перееду на `i3` + `i3bar`. В теории между ними можно переключаться при запуске пк, так что проблем быть не должно. Если какой-то wm надо выключить, чтоб не засирать систему, то это можно делать в `modules/home-manager/bundle.nix`
| Software | Name |
| ------------ | -------------------------------- |
| WM | bspwm/i3 |
| Hotkeys | sxhkd/i3 |
| Terminal | Alacritty, Kitty |
| Multiplexer | Zellij |
| Shell | oh-my-zsh with many plugins |
| Shell Prompt | Starship |
| Apps/Menus | Rofi |
| Bar | Polybar/i3bar |
| ScreenLock | betterlockscreen/i3lock |
| Notification | Dunst |
| Files | Thunar, Ranger |
| Images | qView, imv, feh |
| Video | mpv with plugins |
| Music | Strawberry, Picard, Mousai, spek |
| Browsers | Librewolf, Firefox, Chromium |
| Social | Discord, Telegram, Steam |
| Audio | PipeWire, pavucontrol |
| Color Theme | Gruvbox Dark Medium |
| Icons | Gruvbox Plus Dark |
| DM | LightDM |
| Compositor | Нет. Мб будет стоковый picom |
| Screenshare | OBS, Screenkey, ksnip |
| Code Editor | VSCode, JetBrains, nixvim, helix |
| Video Editor | Blender |
| Fetch | fastfetch |
| Torrent | qBittorrent |
| Email client | Thunderbird |
| Color picker | xcolor, gcolor3 |
| Docs/eBook | Evince, LibreOffice, Calibre |
| Design | Gimp, 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`. У меня иначе не работало
## Нюансы с 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
Оптимизатор линукса для игр
### 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%`.
Параметр запуска с использованием gamescop `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
## Мини гайд по NixOS ## Мини гайд по NixOS
- Одинаковые вещи могут делаться разными способами. Это норма. По началу меня это бесило, когда читал чужие дотсы - Одинаковые вещи могут делаться разными способами. Это норма, ведь nix считается языком програмимрования. По началу меня это бесило, когда читал чужие дотсы
- Нюансы работы NixOS в [этом](https://www.youtube.com/watch?v=7f19R8BWUnU&t=960s) видео. Мне понравилось - Нюансы работы 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://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 ветке, ибо параметры могут отличаться. - Пакеты искать [тут](https://search.nixos.org/packages). Параметры для сток NixOS [тут](https://search.nixos.org/options). Параметры для home-manager [тут](https://home-manager-options.extranix.com/?query=&release=master). Для моих конфигов надо обязательно искать в unstable ветке, ибо параметры могут отличаться.
@ -346,7 +65,7 @@ sudo nano /etc/nixos/configuration.nix
sudo nixos-rebuild switch sudo nixos-rebuild switch
``` ```
Дальше есть два способа. Перед использованием любого из них я рекомендую сделать форк и внести следующие изменения в конфиг перед установкой (либо можно сделать гит клон и через nano внести изменения для первых трёх пунктов, остальное менять на готовой системе): Дальше есть два способа. Перед использованием любого из них я рекомендую сделать форк и внести следующие изменения в конфиг перед установкой (либо можно сделать гит клон и через nano/vim внести изменения для первых трёх пунктов, остальное менять на готовой системе):
- Переменную `username` в `nixos/configuration.nix`. - Переменную `username` в `nixos/configuration.nix`.
- `username` и `homeDirectory` в `nixos/home.nix`. - `username` и `homeDirectory` в `nixos/home.nix`.
@ -355,7 +74,7 @@ sudo nixos-rebuild switch
А это можно донастроить уже в готовой системе А это можно донастроить уже в готовой системе
- Путь до `home` в `shit/qt5ct/qt5ct.conf` и `shit/qt6ct/qt6ct.conf`. - Путь до `home` в `shit/qt5ct/qt5ct.conf` и `shit/qt6ct/qt6ct.conf`.
- Параметры мониторов закомментированы в файле `modules/home-manager/wm/bspwm/bspwm.nix`. Можно указать по желанию. Команда xrandr покажет доступные значения и имена мониторов. - Параметры мониторов закомментированы в файле `modules/home-manager/wm/bspwm/bspwm.nix`. Можно указать по желанию. Команда xrandr покажет доступные значения и имена мониторов.
- Если видеокарта от amd, то, чтоб не было тиринга, надо раскомментировать `videoDrivers` в `modules/nixos/xserver.nix`, `boot.initrd.kernelModules` и всю категорию настроек `amdgpu` в `modules/nixos/hardware.nix`. - Если видеокарта не от amd, то, возможно, надо удалить `videoDrivers` в `modules/nixos/xserver.nix`, `boot.initrd.kernelModules` и всю категорию настроек `amdgpu` в `modules/nixos/hardware.nix`. Это настройки для amd gpu, чтоб не было тиринга на x11
- Если надо задать симлинки, то для этого есть файл `modules/home-manager/symlinks.nix`. Там сейчас мои симлинки, их лучше удалить. Чтоб файл заработал, надо раскомментировать `./symlinks.nix` в файле `modules/home-manager/bundle.nix`. - Если надо задать симлинки, то для этого есть файл `modules/home-manager/symlinks.nix`. Там сейчас мои симлинки, их лучше удалить. Чтоб файл заработал, надо раскомментировать `./symlinks.nix` в файле `modules/home-manager/bundle.nix`.
- Если надо монтировать другие диски, то для этого есть файл `modules/nixos/filesystems.nix`. Там сейчас мой второй ссд. Чтоб файл заработал, надо раскомментировать `./filesystems.nix` в файле `modules/nixos/bundle.nix`. - Если надо монтировать другие диски, то для этого есть файл `modules/nixos/filesystems.nix`. Там сейчас мой второй ссд. Чтоб файл заработал, надо раскомментировать `./filesystems.nix` в файле `modules/nixos/bundle.nix`.
- Если нужна гибернация, то её можно настроить в `modules/nixos/hibernate.nix`. Там надо указать uuid и офсет для swap файла. Чтоб файл заработал, надо раскомментировать `./hibernate.nix` в файле `modules/nixos/bundle.nix`. - Если нужна гибернация, то её можно настроить в `modules/nixos/hibernate.nix`. Там надо указать uuid и офсет для swap файла. Чтоб файл заработал, надо раскомментировать `./hibernate.nix` в файле `modules/nixos/bundle.nix`.
@ -384,7 +103,7 @@ sudo nixos-rebuild boot --impure --flake ~/nixos-private-dots
## После установки надо ## После установки надо
Это заметка для меня. Каждый ставит то, что ему надо Эта заметка частично для меня. Каждый ставит то, что ему надо
- Включить подкачку на 64 гига в `/etc/nixos/hardware-configuration.nix` через такой синтаксис: - Включить подкачку на 64 гига в `/etc/nixos/hardware-configuration.nix` через такой синтаксис:
```nix ```nix
@ -396,7 +115,7 @@ sudo nixos-rebuild boot --impure --flake ~/nixos-private-dots
- Настроить гибренацию в `modules/nixos/hibernate.nix` - Настроить гибренацию в `modules/nixos/hibernate.nix`
- Активировать скрипт в `shit` каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают - Активировать скрипт в `shit` каталоге, чтоб скопировать нужные конфиги в нужные каталоги. Симлинки не работают
- Настроить приложения `Qt5 Settings`, `Qt6 Settings` и `Kvantum`. Там надо выбрать свою системную тему. Вроде всё интуитивно понятно будет. Можно попробовать обновить систему, в надежде, что системная тема `stylix` начнёт работать с приложениями `qt`. Для этого надо будет закомментить настройки `qt` в конфиге `stylix`. - Настроить приложения `Qt5 Settings`, `Qt6 Settings` и `Kvantum`. Там надо выбрать свою системную тему. Вроде всё интуитивно понятно будет. Можно попробовать обновить систему, в надежде, что системная тема `stylix` начнёт работать с приложениями `qt`. Для этого надо будет закомментить настройки `qt` в конфиге `stylix`.
- Руками настроить `thunar`, бинды для `ksnip`, `discord`, `telegram`, `steam` и `strawberry` - Руками настроить `thunar`, `discord`, `telegram`, `steam`, `strawberry` и бинды для `ksnip`
- Добавить gpg ключи - Добавить gpg ключи
```sh ```sh
gpg --import /path/to/your-key.gpg gpg --import /path/to/your-key.gpg
@ -415,7 +134,7 @@ gpg --edit-key ID-ключа
В файле `modules/nixos/virtualisation.nix` раскомментировать эти строки: В файле `modules/nixos/virtualisation.nix` раскомментировать эти строки:
```diff ```diff
+ services = { + services = {
+ openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал. + openssh.enable = true; # Это ставится на виртуалку, чтоб к ней конект по ssh работал.
+ spice-vdagentd.enable = true; # Clipboard sharing + spice-vdagentd.enable = true; # Clipboard sharing
+ qemuGuest = { + qemuGuest = {
+ enable = true; # Fix resolution + enable = true; # Fix resolution
@ -430,149 +149,4 @@ gpg --edit-key ID-ключа
- xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2 - xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
+ xrandr --output Virtual-1 --mode 1920x1080 --rate 60 + xrandr --output Virtual-1 --mode 1920x1080 --rate 60
''; '';
startupPrograms = [
- # "spice-vdagent" # Для виртуалки
+ "spice-vdagent" # Для виртуалки
];
``` ```
## Запуск Waydroid на X11
Один раз написать в терминале `waydroid init`
- Запустить `weston`
- В его терминале написать `waydroid session start &`
- Потом `waydroid show-full-ui`
На weston всё работает сразу как надо. Но стоит изменить размеры окна, как waydroid ui пропадает. Приходится стопать и по новой запускать отображение
## Иконки
Искать иконки для nerd шрифта можно [тут](https://www.nerdfonts.com/cheat-sheet).
Соберу сюда список nerd иконок, которые могут пригодиться. Для их отображения нужен специальный шрифт
CPU (мб не юзать, а писать текстом и cpu и gpu) - 
RAM - 
CapsLock - 󰪛
Клавиатура -  или 󰌌
Громкость -   
Яркость - 󰃟 󰃞 󰃝
Календарь -   󰸗
Выключение пк - ⏻ 󰐥 
Приложения -  󰀻  󰵆
Блютуз -  󰂯 󰂲 󰥰 󰦋 󰏳 󰦢 󰗾 󰗿
Network - 󰈀  󰒍
Clipboard -   󱉧 
Оповещения (bell) - 󰀦  󰀧 󰀨 󰅉 󰨱 󰵙  󰂚    
Reload - 󰑓 󱄋
Wifi
 󰖩 󱚵 󱚽 󱚼 󰖪 󱛄
󰤭 󰤨 󰤥 󰤢 󰤟 󰤯 󰤫 󰤮
Батарейки
    
󰁹 󰂂 󰂁 󰂀 󰁿 󰁾 󰁽 󰁼 󰁻 󰁺 󰂎
󱊣 󱊢 󱊡 󰂎
󰂃 󱉝 󰂑
Батарейки зарядка
󰂅 󰂋 󰂊 󰢞 󰂉 󰢝 󰂈 󰂇 󰂆 󰢜 󰢟
󱊦 󱊥 󱊤 󰢟
󰂄
Батарейки блютуз
󰥈 󰥆 󰥅 󰥄 󰥃 󰥂 󰥁 󰥀 󰤿 󰤾
󰥇 󰥊 󰥉
Температура
󰔄 - Температура по цельсию
    
 
## Темы
У меня в vscode отображаются цвета. Так что я для себя сохраню разные варианты 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-компоненты.

0
SOFTWARE.md Normal file
View file

130
THEMES.md Normal file
View file

@ -0,0 +1,130 @@
## 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

@ -1 +0,0 @@
Тут будут файлы, которые больше не нужны. Но может быть они мне пригодятся в будущем.

View file

@ -1,7 +0,0 @@
{
programs.chromium = {
enable = true;
# Пока что передумал настраивать браузер. Бекаплю каталог целиком
};
}

View file

@ -1,40 +0,0 @@
{
programs.firefox = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком
enable = true;
# profiles.buliway = {
# search = {
# engines = {
# };
# force = true;
# };
# nativeMessagingHosts.ff2mpv = true; # Чтоб ff2mpv работал
# settings = {
# # "extensions.autoDisableScopes" = 0; # To automatically enable extensions
# "browser.bookmarks.openInTabClosesMenu" = false;
# "browser.tabs.loadBookmarksInBackground" = true;
# "layout.css.has-selector.enabled" = true;
# # https://github.com/K3V1991/Disable-Firefox-Telemetry-and-Data-Collection
# "browser.newtabpage.activity-stream.feeds.telemetry" = false;
# "browser.newtabpage.activity-stream.telemetry" = false;
# "datareporting.healthreport.uploadEnabled" = false;
# "datareporting.policy.dataSubmissionEnabled" = false;
# "toolkit.telemetry.archive.enabled" = false;
# "toolkit.telemetry.bhrPing.enabled" = false;
# "toolkit.telemetry.enabled" = false;
# "toolkit.telemetry.firstShutdownPing.enabled" = false;
# "toolkit.telemetry.newProfilePing.enabled" = false;
# "toolkit.telemetry.reportingpolicy.firstRun" = false;
# "toolkit.telemetry.server" = "";
# "toolkit.telemetry.shutdownPingSender.enabled" = false;
# "toolkit.telemetry.unified" = false;
# "toolkit.telemetry.updatePing.enabled" = false;
# };
# };
};
}

View file

@ -1,57 +0,0 @@
{ pkgs, ... }: {
programs.librewolf = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком
enable = true;
# settings = { # Надо из about:config записать сюда свои изменения
# "browser.bookmarks.openInTabClosesMenu" = false; # Не закрывать каталог закладок при открытии через СКМ? Не помню
# "browser.tabs.loadBookmarksInBackground" = true; # Не перекидывать меня сразу на открытую закладку через СКМ? Не помню
# "layout.css.has-selector.enabled" = true; # Некоторые кастом стили это требуют
# # General
# # # Search (Если надо вернуть гугл поисковик в стоке)
# # "browser.policies.runOncePerModification.extensionsUninstall" = [ # Удалить расширения
# # "amazondotcom@search.mozilla.org"
# # "ebay@search.mozilla.org"
# # "twitter@search.mozilla.org"
# # ];
# # "browser.policies.runOncePerModification.removeSearchEngines" = [ # Удалить поисковые движки
# # "Amazon.com"
# # "eBay"
# # "Twitter"
# # ];
# # "browser.policies.runOncePerModification.setDefaultSearchEngine" = "Google"; # Стандартный поисковик
# # Privacy & Security
# # LibreWolf
# "clipboard.autocopy" = false; # Выкл копирование колесом мыши
# "middlemouse.paste" = false; # Выкл копирование колесом мыши
# "network.dns.disableIPv6" = true; # Выкл ivp6
# "privacy.resistFingerprinting" = false; # Лайтовое и мб не ломает работу сайтов
# "privacy.fingerprintingProtection" = false; # Хардовее и может ломать работу сайтов?
# "webgl.disabled" = false; # Включить WebGL
# # Extensions
# "browser.policies.runOncePerModification.extensionsInstall" = [ # Установка расширений
# "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # uBlock
# "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger/latest.xpi" # Privacy Badger
# ];
# };
};
# Чтоб ff2mpv работал. Не надо юзать их скрипт с гитхаба
# Надо будет потом написать "nix-build -A ff2mpv", чтоб проверить реальный путь до ff2mpv бинаря
# home.file.".librewolf/native-messaging-hosts/ff2mpv.json".text = ''
# {
# "name": "ff2mpv",
# "description": "ff2mpv's external manifest",
# "path": "${pkgs.ff2mpv}/bin/ff2mpv.py",
# "type": "stdio",
# "allowed_extensions": ["ff2mpv@yossarian.net"]
# }
# '';
# Ниже сделать настройки расширений декларативными
# home.file.".librewolf/?".source = ./?;
}

View file

@ -1,105 +0,0 @@
#!/usr/bin/env bash
# Дефолт конфиг https://github.com/baskerville/bspwm/blob/master/examples/bspwmrc
# Описание настроек можно найти тут https://manpages.debian.org/testing/bspwm/bspc.1.en.html
# Или через "man bspc" в терминале
# Или в ./bspwm.md
# https://my-take-on.tech/2020/07/03/some-tricks-for-sxhkd-and-bspwm/
################
## Автозапуск ##
################
# Это по сути терминал. Пишем то, как запускается прога через терминал и в конце & обязательно
# # Как я понял, их не надо запускать, ведь они активированы через services..enable = true;
# # Если в nixos что-то включается через services, а не через programs, то nixos сам отвечает за автозапуск сервисов
# pgrep -x sxhkd > /dev/null || sxhkd & # Запускаем sxhkd если он не запущен
# pgrep -x polybar > /dev/null || polybar & # Запускаем polybar если он не запущен
# pgrep -x dunst > /dev/null || dunst & # Запускаем dunst если он не запущен
# Изменить настройки для основного монитора. Мб вместе с --primary надо
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
# Изменить настройки для второго (правого) монитора
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
ksnip &
# nekoray &
# obsidian &
# planify &
lxqt-policykit-agent &
# Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar
nm-applet &
#########################
## Настройки мониторов ##
#########################
# Получаем имена активных мониторов
MONITORS=( $(xrandr --listactivemonitors | grep -E '^ [0-9]+:' | cut -d' ' -f6 | sed 's/\n/ /') )
# Если переменная MONITOR уже задана, то используется её значение.
# Если она не задана (то есть пуста или не существует), то используется первый элемент из массива MONITORS (то есть, первый активный монитор).
# Это гарантирует, что переменная MONITOR всегда будет содержать значение: либо установленное ранее, либо первый активный монитор по умолчанию.
# ":-" Это оператор в Bash, который используется для установки значения по умолчанию. Если переменная не задана или пуста, используется значение после :-
MONITOR="${MONITOR:-${MONITORS[0]}}"
# Для запуска приложений на втором мониторе, если он доступен. Если второго монитора нет, используем первый.
MONITOR2="${MONITORS[1]:-${MONITORS[0]}}"
# # Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
for mon in ${MONITORS[@]}; do
bspc monitor $mon -d {1,2,3,4,5,6,7,8,9,10}
done
# Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора
#bspc monitor -d 1 2 3 4 5 6 7 8 9 10 # Можно заменить на {1,2,3,4,5,6,7,8,9,10}
# Настройка автоматического удаления настроек для отключённых и отсоединённых мониторов
bspc config remove_disabled_monitors false
bspc config remove_unplugged_monitors false
#####################
## Настройки bspwm ##
#####################
# Syntax - bspc config [-m MONITOR_SEL|-d DESKTOP_SEL|-n NODE_SEL] <setting> [<value>]
# Устанавливает ширину границ окон в 2 пикселя.
bspc config border_width 2
# Задаёт расстояние между окнами (отступ) в 5 пикселей.
bspc config window_gap 5
# Настраивает коэффициент разделения окон при их разделении. Значение 0.52 означает, что при разделении окно будет занимать 52% доступного пространства.
bspc config split_ratio 0.52
# В режиме monocle (максимизация окна на весь экран) границы окон будут скрыты.
bspc config borderless_monocle true
# В режиме monocle будет отсутствовать отступ между окнами.
bspc config gapless_monocle true
# Eсли вы активируете режим "monocle" на одном мониторе, другие мониторы остаются в обычном режиме
bspc config single_monocle false
# Фокусировка следует за курсором
bspc config focus_follows_pointer true
###############################
## Поведение конкретных окон ##
###############################
# Yдаляет все существующие правила для всех окон
# bspc rule -r '*'
bspc rule -a "polybar" layer=above
bspc rule -a "Screenkey" manage=off
bspc rule -a "ksnip" state=floating center=true focus=on rectangle=1600x900+0+0
bspc rule -a "org.kde.ark" state=floating center=true focus=on rectangle=1200x800+0+0
bspc rule -a "floating-terminal" state=floating center=true focus=on rectangle=1200x800+0+0

View file

@ -1,121 +0,0 @@
# Команды для терминала
# Узнать тип файла - xdg-mime query filetype foo.pdf
# Узнать нынешнее дефолт приложения - xdg-mime query default application/pdf
# Узнать имя приложения. Для примера взять evince - fd evince.desktop /
# Выведет пути, по которым можно понять как называется приложение
# В список [] можно через пробел добавить другие варианты. Если первая прога не откроет, то попытается вторая
# Список mime types смотрел тут https://mimetype.io/all-types
# Нагуглить значение "x-scheme-handler" невозможно. Как я понял, это кастом типы
##############################################################################
# Как система готова, то замени имена прог на реальные. Сейчас на абум стоят #
##############################################################################
{
xdg.mimeApps = { # Конфиг для `~/.config/mimeapps.list`
enable = true;
defaultApplications = { # Стандартные приложения для открытия нужного файла
# Browser
"application/x-extension-htm" = [ "librewolf.desktop" ];
"application/x-extension-html" = [ "librewolf.desktop" ];
"application/x-extension-shtml" = [ "librewolf.desktop" ];
"application/x-extension-xht" = [ "librewolf.desktop" ];
"application/x-extension-xhtml" = [ "librewolf.desktop" ];
"application/xhtml+xml" = [ "librewolf.desktop" ];
"x-scheme-handler/about" = [ "librewolf.desktop" ];
"x-scheme-handler/chrome" = [ "librewolf.desktop" ];
"x-scheme-handler/http" = [ "librewolf.desktop" ];
"x-scheme-handler/https" = [ "librewolf.desktop" ];
"x-scheme-handler/unknown" = [ "librewolf.desktop" ];
# Images
"image/*" = [ "qview.desktop" "imv.desktop" ];
"image/avif" = [ "imv.desktop" "qview.desktop" ];
"image/gif" = [ "qview.desktop" "imv.desktop" ];
"image/jpeg" = [ "qview.desktop" "imv.desktop" ]; # Обычный jpeg, прогрузка сверху вниз
"image/pjpeg" = [ "qview.desktop" "imv.desktop" ]; # Сначала размытый и постепенной лучше видно, для медленного инета
"image/apng" = [ "qview.desktop" "imv.desktop" ]; # Анимированный png
"image/png" = [ "qview.desktop" "imv.desktop" ];
"image/svg+xml" = [ "qview.desktop" "imv.desktop" ];
"image/webp" = [ "qview.desktop" "imv.desktop" ];
"image/x-icon" = [ "qview.desktop" "imv.desktop" ];
"image/vnd.microsoft.icon" = [ "qview.desktop" "imv.desktop" ];
# Video
"video/*" = [ "mpv.desktop" ];
"video/mp4" = [ "mpv.desktop" ];
"video/mpeg" = [ "mpv.desktop" ];
"video/quicktime" = [ "mpv.desktop" ];
"video/webm" = [ "mpv.desktop" ];
"video/x-matroska" = [ "mpv.desktop" ];
# Audio
"audio/*" = [ "mpv.desktop" ];
"audio/aac" = [ "mpv.desktop" ];
"audio/flac" = [ "mpv.desktop" ];
"audio/mp4" = [ "mpv.desktop" ];
"audio/mpeg" = [ "mpv.desktop" ];
"audio/ogg" = [ "mpv.desktop" ];
"audio/opus" = [ "mpv.desktop" ];
"audio/vnd.wav" = [ "mpv.desktop" ];
"audio/webm" = [ "mpv.desktop" ];
"audio/x-matroska" = [ "mpv.desktop" ];
"audio/x-mpegurl" = [ "mpv.desktop" ]; # Для .m3u. Это файл-плейлист
"audio/x-opus+ogg" = [ "mpv.desktop" ]; # What's this? Why not "audio/ogg" and "audio/opus"?
# Text
"text/*" = [ "nvim.desktop" "code.desktop" ];
"text/css" = [ "nvim.desktop" "code.desktop" ];
"text/csv" = [ "nvim.desktop" "code.desktop" ];
"text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"text/javascript" = [ "nvim.desktop" "code.desktop" ];
"text/markdown" = [ "nvim.desktop" "code.desktop" ];
"text/plain" = [ "nvim.desktop" "code.desktop" ];
"text/x-asm" = [ "nvim.desktop" "code.desktop" ];
"text/x-c" = [ "nvim.desktop" "code.desktop" ];
"text/x-python" = [ "nvim.desktop" "code.desktop" ];
"application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"application/x-sh" = [ "nvim.desktop" "code.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" "code.desktop" ];
"application/xml" = [ "nvim.desktop" "code.desktop" ];
"application/yaml" = [ "nvim.desktop" "code.desktop" ];
# Мб потом добавить для docs варианты и разные виды архивов и ebook
# Other
"application/pdf" = [ "org.gnome.Evince.desktop" ];
"application/x-zerosize" = [ "nvim.desktop" "code.desktop" ]; # Файл нулевого размера
"application/zip" = [ "ark.desktop" ];
"application/x-bittorrent" = [ "qbittorrent.desktop" ];
"x-scheme-handler/magnet" = [ "qbittorrent.desktop" ];
"inode/directory" = [ "thunar.desktop" ];
"x-scheme-handler/mailto" = [ "thunderbird.desktop" ];
"x-scheme-handler/jetbrains" = [ "jetbrains-toolbox.desktop" ];
};
associations.added = { # Дополнительные приложения для нужного файла. Будет в меню "Открыть с помощью"
# Images
"image/*" = [ "qview.desktop" "imv.desktop" ];
"image/avif" = [ "imv.desktop" "qview.desktop" ];
"image/gif" = [ "qview.desktop" "imv.desktop" ];
"image/jpeg" = [ "qview.desktop" "imv.desktop" ]; # Обычный jpeg, прогрузка сверху вниз
"image/pjpeg" = [ "qview.desktop" "imv.desktop" ]; # Сначала размытый и постепенной лучше видно, для медленного инета
"image/apng" = [ "qview.desktop" "imv.desktop" ]; # Анимированный png
"image/png" = [ "qview.desktop" "imv.desktop" ];
"image/svg+xml" = [ "qview.desktop" "imv.desktop" ];
"image/webp" = [ "qview.desktop" "imv.desktop" ];
"image/x-icon" = [ "qview.desktop" "imv.desktop" ];
"image/vnd.microsoft.icon" = [ "qview.desktop" "imv.desktop" ];
# Text
"text/*" = [ "nvim.desktop" "code.desktop" ];
"text/css" = [ "nvim.desktop" "code.desktop" ];
"text/csv" = [ "nvim.desktop" "code.desktop" ];
"text/html" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"text/javascript" = [ "nvim.desktop" "code.desktop" ];
"text/markdown" = [ "nvim.desktop" "code.desktop" ];
"text/plain" = [ "nvim.desktop" "code.desktop" ];
"text/x-asm" = [ "nvim.desktop" "code.desktop" ];
"text/x-c" = [ "nvim.desktop" "code.desktop" ];
"text/x-python" = [ "nvim.desktop" "code.desktop" ];
"application/json" = [ "nvim.desktop" "code.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
"application/x-sh" = [ "nvim.desktop" "code.desktop" ];
"application/x-shellscript" = [ "nvim.desktop" "code.desktop" ];
"application/xml" = [ "nvim.desktop" "code.desktop" ];
"application/yaml" = [ "nvim.desktop" "code.desktop" ];
};
};
}

View file

@ -1,93 +0,0 @@
{ pkgs, ... }: {
programs.fish = {
enable = true;
shellAliases = let
flakeDir = "~/dots";
in {
rbs = "sudo nixos-rebuild switch --impure --flake ${flakeDir}"; # Применить новый конфиг сразу
rbb = "sudo nixos-rebuild boot --impure --flake ${flakeDir}"; # Применить новый конфиг после ребута пк
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
# Обновить все flake inputs до последних версий. Возможно это аналог "sudo pacman -Sy" на Arch Linux
# Если после upd дописать название инпута из flake.nix, то обновится только указанный инпут
# Например `upd nixpkgs2` для обновления анстабле репы
upd = "sudo nix flake update --flake ${flakeDir}";
# Garbage collector. Удалить все не используемые пакеты (например после обновы)
grb = "sudo nix-collect-garbage -d";
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
vim = "nvim";
vi = "nvim";
v = "nvim";
t = "timer";
r = "ranger";
g = "gitui";
f = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
};
# Всё, что в комментах ниже, лишнее. Я нашёл норм способ. Пишем "nix-prefetch-git link" и получаем всю инфу
# Узнать rev - git ls-remote https://github.com/{owner}/{repo}.git HEAD
# На гитхабе вроде можно просто на странице коммитов нажать ... и copy full SHA
# Узнать sha256 - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/{rev}.tar.gz
# Ссылку проще получить, открыв страницу релизов и оттуда скопировать ссылку на архив
# Если нет релизов - sudo nix-prefetch-url --unpack https://github.com/{owner}/{repo}/archive/refs/heads/{branch}.zip
plugin = [
{ # The Node.js version manager you'll adore, crafted just for Fish
name = "nvm.fish"; # https://github.com/jorgebucaran/nvm.fish
src = pkgs.fetchFromGitHub {
owner = "jorgebucaran";
repo = "nvm.fish";
rev = "b8edb1ee24cbbf7259196b0cb3c6c4ab65b07929";
sha256 = "17vk608mbmb9mwvvm18hs63iy7vzdrd1ymia94szy1hy5d0li77c";
};
}
{ # Utility functions to start your ssh agent when using fish shell
name = "fish-ssh-agent"; # https://github.com/danhper/fish-ssh-agent
src = pkgs.fetchFromGitHub {
owner = "danhper";
repo = "fish-ssh-agent";
rev = "fd70a2afdd03caf9bf609746bf6b993b9e83be57";
sha256 = "1fvl23y9lylj4nz6k7yfja6v9jlsg8jffs2m5mq0ql4ja5vi5pkv";
};
}
];
};
home = {
packages = with pkgs.fishPlugins; [ # Плагины для Fish из репы никса
z # Частые директории https://github.com/jethrokuan/z/blob/master/man/man1/z.md
plugin-git # Алиасы для гита https://github.com/jhillyerd/plugin-git
fzf-fish # https://github.com/PatrickF1/fzf.fish
done # Оповещения для длительных процессов https://github.com/franciscolourenco/done
bass # Позволяет юзать bash в fish https://github.com/edc/bass
];
# Чтоб при выходе из ranger я всегда cd в каталог, из которого вышел
file.".config/fish/functions/ranger.fish".text = ''
function ranger
set tempfile (mktemp -t tmp.XXXXXX)
command ranger --choosedir=$tempfile $argv
set return_value $status
if test -s $tempfile
set ranger_pwd (cat $tempfile)
if test -n $ranger_pwd -a -d $ranger_pwd
builtin cd -- $ranger_pwd
end
end
command rm -f -- $tempfile
return $return_value
end
'';
};
}

View file

@ -1,443 +0,0 @@
[Analyzer]
framerate=25
type=BlockAnalyzer
[Appearance]
background_image_do_not_cut=true
background_image_keep_aspect_ratio=true
background_image_max_size=0
background_image_position=5
background_image_stretch=false
background_image_type=1
blur_radius=0
icon_size_configure_buttons=16
icon_size_left_panel_buttons=22
icon_size_play_control_buttons=32
icon_size_playlist_buttons=20
icon_size_tabbar_large_mode=40
icon_size_tabbar_small_mode=32
opacity_level=40
playlist_playing_song_color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
style=default
system_icons=false
tab_color=@Variant(\0\0\0\x43\x2\xff\xffOL\x87\x87\x92+\0\0)
tab_gradient=true
tab_system_color=true
[Backend]
AutoCrossfadeEnabled=false
CrossfadeEnabled=false
FadeoutDuration=2000
FadeoutEnabled=false
FadeoutPauseDuration=250
FadeoutPauseEnabled=false
NoCrossfadeSameAlbum=true
alsaplugin=3
bs2b=false
bufferduration=4000
bufferhighwatermark=0.99
bufferlowwatermark=0.33
channels=2
channels_enabled=false
device=@Invalid()
ebur128_loudness_normalization=false
ebur128_target_level_lufs=-23
engine=gstreamer
http2=false
output=autoaudiosink
rgcompression=true
rgenabled=false
rgfallbackgain=0
rgmode=1
rgpreamp=0
strict_ssl=false
volume_control=true
[Behaviour]
doubleclick_addmode=1
doubleclick_playlist_addmode=1
doubleclick_playmode=1
keeprunning=false
language=
menu_playmode=1
menu_previousmode=1
playing_widget=true
resumeplayback=false
seek_step_sec=10
showtrayicon=true
startupbehaviour=1
trayicon_progress=false
[Collection]
auto_open=true
cache_size=160
cache_size_unit=1
cover_art_patterns=front, cover
delete_files=true
disk_cache_enable=false
disk_cache_size=360
disk_cache_size_unit=1
expire_unavailable_songs=60
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
last_path=/home/buliway/backups/Media/Music
mark_songs_unavailable=true
monitor=true
overwrite_playcount=false
overwrite_rating=false
pretty_covers=true
save_playcounts=true
save_ratings=true
separate_albums_by_grouping=false
show_dividers=true
song_ebur128_loudness_analysis=false
song_tracking=false
startup_scan=true
[Context]
AlbumEnable=true
SearchCoverEnable=true
SearchLyricsEnable=true
SongLyricsEnable=true
SummaryFmt=%album%
TechnicalDataEnable=false
TitleFmt=%title% - %artist%
font_headline=Noto Sans
font_normal=Noto Sans
font_size_headline=11
font_size_normal=9
[Covers]
providers=Last.fm, MusicBrainz, Deezer, Musixmatch, Spotify, Tidal, Qobuz
save_filename=2
save_lowercase=true
save_overwrite=false
save_pattern=%albumartist-%album
save_replace_spaces=true
save_type=1
types=art_unset, art_manual, art_automatic, art_embedded
[EditTagDialog]
current_tab=1
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\x1\0\0\0\x19\0\0\x12\xb1\0\0\x4\x10\0\0\xf\x1\0\0\0\x19\0\0\x12\xc0\0\0\x4$\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\x1\0\0\0\x19\0\0\x12\xb1\0\0\x4\x10)
[Equalizer]
enable_stereo_balancer=false
enabled=false
presets\1\name=Classical
presets\1\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xd8\xff\xff\xff\xce)
presets\10\name=Live
presets\10\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xe7\0\0\0\0\0\0\0\x14\0\0\0\x19\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\xf\0\0\0\xf\0\0\0\n)
presets\11\name=Party
presets\11\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#)
presets\12\name=Pop
presets\12\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf6\0\0\0\x19\0\0\0#\0\0\0(\0\0\0\x19\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xf1\xff\xff\xff\xf6\xff\xff\xff\xf6)
presets\13\name=Reggae
presets\13\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\xff\xff\xff\xfb\xff\xff\xff\xe2\0\0\0\0\xff\xff\xff\xdd\xff\xff\xff\xdd\0\0\0\0\0\0\0\0\0\0\0\0)
presets\14\name=Rock
presets\14\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x19\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xec\0\0\0\x14\0\0\0-\0\0\0\x37\0\0\0\x37\0\0\0\x37)
presets\15\name=Ska
presets\15\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xf1\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xfb\0\0\0\x14\0\0\0\x1e\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0\x32)
presets\16\name=Soft
presets\16\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xf1\xff\xff\xff\xfb\0\0\0\x14\0\0\0-\0\0\0\x32\0\0\0\x37\0\0\0<)
presets\17\name=Soft Rock
presets\17\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x14\0\0\0\x14\0\0\0\n\xff\xff\xff\xfb\xff\xff\xff\xe7\xff\xff\xff\xe2\xff\xff\xff\xec\xff\xff\xff\xfb\0\0\0\xf\0\0\0-)
presets\18\name=Techno
presets\18\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0(\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xe7\0\0\0\0\0\0\0(\0\0\0\x32\0\0\0\x32\0\0\0-)
presets\19\name=Zero
presets\19\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\2\name=Club
presets\2\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x14\0\0\0\x1e\0\0\0\x1e\0\0\0\x1e\0\0\0\x14\0\0\0\0\0\0\0\0\0\0\0\0)
presets\3\name=Custom
presets\3\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0)
presets\4\name=Dance
presets\4\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0#\0\0\0\n\0\0\0\0\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\5\name=Full Bass
presets\5\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x46\0\0\0\x46\0\0\0\x46\0\0\0(\0\0\0\x14\xff\xff\xff\xd3\xff\xff\xff\xce\xff\xff\xff\xc9\xff\xff\xff\xc9\xff\xff\xff\xc9)
presets\6\name=Full Bass + Treble
presets\6\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0#\0\0\0\x1e\0\0\0\0\xff\xff\xff\xd8\xff\xff\xff\xe7\0\0\0\n\0\0\0-\0\0\0\x37\0\0\0<\0\0\0<)
presets\7\name=Full Treble
presets\7\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xce\xff\xff\xff\xe7\0\0\0\xf\0\0\0\x37\0\0\0P\0\0\0P\0\0\0P\0\0\0U)
presets\8\name=Laptop/Headphones
presets\8\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x19\0\0\0\x32\0\0\0\x19\xff\xff\xff\xec\0\0\0\0\xff\xff\xff\xe2\xff\xff\xff\xd8\xff\xff\xff\xd8\0\0\0\0\0\0\0\0)
presets\9\name=Large Hall
presets\9\params=@Variant(\0\0\0\x7f\0\0\0\x12\x45qualizer::Params\0\0\0\0\0\0\0\0\x32\0\0\0\x32\0\0\0\x1e\0\0\0\x1e\0\0\0\0\xff\xff\xff\xe7\xff\xff\xff\xe7\xff\xff\xff\xe7\0\0\0\0\0\0\0\0)
presets\size=19
selected_preset=Custom
stereo_balance=0
[GlobalShortcuts]
dec_volume=
inc_volume=
love=
mute=
next_track=Media Next
pause=
play=
play_pause=Media Play
prev_track=Media Previous
repeat_mode=
seek_backward=
seek_forward=
show_hide=
show_osd=
shuffle_mode=
stop=Media Stop
stop_after=
toggle_pretty_osd=
toggle_scrobbling=
use_gnome=false
use_kde=true
use_mate=false
use_x11=false
[LastFM]
enabled=false
[LibreFM]
enabled=false
[ListenBrainz]
enabled=false
user_token=
[Lyrics]
providers=Genius, Lyrics.ovh, LoloLyrics, Musixmatch, songlyrics.com, azlyrics.com, elyrics.net, lyricsmode.com
[MainWindow]
add_folder_path=/home/buliway/backups/Media/Music
current_tab=1
do_not_show_sponsor_message=true
file_path=/home/buliway
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\0\0\0\0\0\0\0\x16k\0\0\x4\a\0\0\xf\0\0\0\0\0\0\0\x16\x7f\0\0\x4\x37\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\0\0\0\0\0\0\0\x16k\0\0\x4\a)
hidden=false
maximized=true
minimized=false
search_for_cover_auto=true
show_sidebar=true
splitter_state=@ByteArray(\0\0\0\xff\0\0\0\x1\0\0\0\x2\0\0\x1>\0\0\x4W\0\xff\xff\xff\xff\x1\0\0\0\x1\0)
tab_collection=1
tab_context=0
tab_devices=7
tab_files=5
tab_mode=1
tab_playlists=3
tab_queue=2
tab_radios=6
tab_smartplaylists=4
[Moodbar]
enabled=false
save=false
show=false
style=0
[NetworkProxy]
engine=true
hostname=
mode=0
password=
port=0
type=3
use_authentication=false
username=
[OSD]
Behaviour=0
CustomText1=
CustomText2=
CustomTextEnabled=false
ShowArt=true
ShowOnPausePlayback=false
ShowOnPlayModeChange=false
ShowOnResumePlayback=false
ShowOnVolumeChange=false
Timeout=5000
[OSDPretty]
background_color=4284913379
background_opacity=0.8500000238418579
disable_duration=false
fading=false
font="Verdana,9,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
foreground_color=4278190080
popup_pos=@Point(1460 0)
popup_screen=DP-3
[Player]
playback_playlist=22
playback_position=37
playback_state=3
volume=6
[Playlist]
alternating_row_colors=true
auto_sort=false
column_alignments=@Variant(\0\0\0\x7f\0\0\0\x13\x43olumnAlignmentMap\0\0\0\0\v\0\0\0\x6\0\0\0\x82\0\0\0\a\0\0\0\x82\0\0\0\b\0\0\0\x82\0\0\0\t\0\0\0\x82\0\0\0\n\0\0\0\x82\0\0\0\f\0\0\0\x82\0\0\0\r\0\0\0\x82\0\0\0\xe\0\0\0\x82\0\0\0\x11\0\0\0\x82\0\0\0\x15\0\0\0\x82\0\0\0\x16\0\0\0\x82)
continue_on_error=false
current_playlist=22
delete_files=true
editmetadatainline=false
glow_effect=true
greyout_songs_play=true
greyout_songs_startup=true
last_load_playlist=/home/buliway/backups/Media/Music/Strawberry/Rofl.xspf
last_save_all_extension=xspf
last_save_all_path=/home/buliway/backups/Media/Music/Strawberry
last_save_extension=xspf
last_save_filter=XSPF playlists (*.xspf)
last_save_path=/home/buliway/backups/Media/Music/Strawberry
path_type=2
playlist_clear=true
rating_locked=false
select_track=false
show_bars=true
show_toolbar=true
state="@ByteArray(P,\x95\xf\x1\0\0\0 \0\0\x1\xc4\0\0\0\xdc\0\0\0\0\0\0\0\xdc\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\0\0\0\0R\0\0\0\0\0\0\0\x82\0\0\0\x36\0\0\0R\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\b\0\0\0\0\0\0\0\x2\0\0\0\x3\0\0\0\x4\0\0\0\x5\0\0\0\x6\0\0\0\a\0\0\0\t\0\0\0\x1\0\0\0\n\0\0\0\v\0\0\0\f\0\0\0\r\0\0\0\xe\0\0\0\xf\0\0\0\x10\0\0\0\x11\0\0\0\x12\0\0\0\x13\0\0\0\x14\0\0\0\x15\0\0\0\x16\0\0\0\x17\0\0\0\x18\0\0\0\x19\0\0\0\x1a\0\0\0\x1b\0\0\0\x1c\0\0\0\x1d\0\0\0\x1e\0\0\0\x1f\0\0\0 ?\xd3\xb4\xaa\x33\x9eW\xe4?\xc3@\x1a\xf9\xf9<\xa4\0\0\0\0\0\0\0\0?\xc3\x41\b\xc4\x39@\x5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\x9e\xd3)\"~\x95\xa7\0\0\0\0\0\0\0\0?\xac\xbb\x86<\xb6:\xdd\0\0\0\0\0\0\0\0?\xb6\xc0\x15\x89h\xe7X?\xa2\xd8)B\xc5\xa6\x33?\xac\xdb\x2\x96\xb7[\x9f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xaaJ?\x87\x39\x9b<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0?\xb2Y\xb7\x14\x62\xae`\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\n)"
state_version=1
warn_close_playlist=true
write_metadata=true
[PlaylistSequence]
repeat_mode=0
shuffle_mode=0
[Qobuz]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists
[Scrobbler]
albumartist=false
enabled=false
love_button=false
offline=false
scrobble_button=false
show_error_dialog=true
sources=collection, file, cd, device, subsonic, tidal, qobuz, stream, somafm, radioparadise, unknown
submit=0
[SerializedSmartPlaylists]
songs\1\data=@ByteArray(\0\0\0\0\x2\x11\0\0\0\x14\x2\0)
songs\1\name=Newest tracks
songs\1\type=1
songs\10\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x14\x2\x1)
songs\10\name=Dynamic random mix
songs\10\type=1
songs\2\data=@ByteArray(\0\0\0\0\0\x3\0\0\0\x32\x2\0)
songs\2\name=50 random tracks
songs\2\type=1
songs\3\data=@ByteArray(\0\0\0\x1\x13\x4\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\3\name=Ever played
songs\3\type=1
songs\4\data=@ByteArray(\0\0\0\x1\x13\x6\0\0\0\x2\0\0\0\0\0\0\0\0\0\x1\0\0\x3\0\0\0\x14\0\0)
songs\4\name=Never played
songs\4\type=1
songs\5\data=@ByteArray(\0\0\0\0\x2\x15\0\0\0\x14\x2\0)
songs\5\name=Last played
songs\5\type=1
songs\6\data=@ByteArray(\0\0\0\0\x2\x13\0\0\0\x14\x2\0)
songs\6\name=Most played
songs\6\type=1
songs\7\data=@ByteArray(\0\0\0\0\x2\x16\0\0\0\x14\x2\0)
songs\7\name=Favourite tracks
songs\7\type=1
songs\8\data=@ByteArray(\0\0\0\x2\x16\x5\0\0\0\x6\0?\xe0\0\0\0\0\0\0\0\0\0\0\x1\0\x14\x4\0\0\0\x2\0\0\0\0\x4\0\0\0\0\x1\0\x2\x14\0\0\0\x14\x1\0)
songs\8\name=Least favourite tracks
songs\8\type=1
songs\9\data=@ByteArray(\0\0\0\0\x1\x1\xff\xff\xff\xff\x2\0)
songs\9\name=All tracks
songs\9\type=1
songs\size=10
songs_version=3
[SettingsDialog]
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b\0\0\0\x1\x2\0\0\0\a\x80\0\0\x11\"\0\0\0\x9c\0\0\x14\\\0\0\x3\x9b)
[Subsonic]
authmethod=1
downloadalbumcovers=false
enabled=false
group_by1=1
group_by2=4
group_by3=0
group_by_version=1
http2=false
password=
separate_albums_by_grouping=false
serversidescrobbling=true
url=@Variant(\0\0\0\x11\xff\xff\xff\xff)
username=
verifycertificate=true
[Tidal]
albums_group_by1=1
albums_group_by2=4
albums_group_by3=0
albums_group_by_version=1
albums_separate_albums_by_grouping=false
artists_group_by1=1
artists_group_by2=4
artists_group_by3=0
artists_group_by_version=1
artists_separate_albums_by_grouping=false
search_group_by1=1
search_group_by2=4
search_group_by3=0
search_group_by_version=1
songs_group_by1=1
songs_group_by2=4
songs_group_by3=0
songs_group_by_version=1
songs_separate_albums_by_grouping=false
tab=artists
[Transcoder]
faac\bitrate=320000
faac\midside=true
faac\profile=2
faac\shortctl=0
faac\tns=false
ffenc_wmav2\bitrate=320000
flacenc\quality=5
geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x3\0\0\0\0\xf\0\0\0\0\0\0\0\x12\xb0\0\0\x4\a\0\0\xf\0\0\0\0\0\0\0\x12\xbf\0\0\x4\x1b\0\0\0\x1\x2\0\0\0\a\x80\0\0\xf\0\0\0\0\0\0\0\x12\xb0\0\0\x4\a)
lamemp3enc\bitrate=320
lamemp3enc\cbr=false
lamemp3enc\encoding-engine-quality=2
lamemp3enc\mono=false
lamemp3enc\quality=10
lamemp3enc\target=1
opusenc\bitrate=320000
speexenc\abr=0
speexenc\bitrate=0
speexenc\complexity=3
speexenc\dtx=false
speexenc\mode=0
speexenc\nframes=1
speexenc\quality=10
speexenc\vad=false
speexenc\vbr=false
vorbisenc\bitrate=-1
vorbisenc\managed=false
vorbisenc\max-bitrate=-1
vorbisenc\min-bitrate=-1
vorbisenc\quality=1

View file

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<channel name="thunar" version="1.0">
<property name="last-details-view-column-widths" type="string" value="50,50,134,126,50,94,50,168,264,50,50,98,50,1378"/>
<property name="last-details-view-visible-columns" type="string" value="THUNAR_COLUMN_DATE_MODIFIED,THUNAR_COLUMN_NAME,THUNAR_COLUMN_SIZE,THUNAR_COLUMN_TYPE"/>
<property name="last-tabs-left" type="array">
<value type="string" value="file:///home/buliway/backups/Backups/memes"/>
<value type="string" value="file:///home/buliway/backups/Media/Video"/>
</property>
<property name="last-focused-tab-left" type="int" value="1"/>
<property name="last-view" type="string" value="ThunarIconView"/>
<property name="last-icon-view-zoom-level" type="string" value="THUNAR_ZOOM_LEVEL_300_PERCENT"/>
<property name="last-window-width" type="int" value="1906"/>
<property name="last-window-height" type="int" value="1066"/>
<property name="last-window-maximized" type="bool" value="false"/>
<property name="last-separator-position" type="int" value="225"/>
<property name="last-show-hidden" type="bool" value="true"/>
<property name="misc-single-click" type="bool" value="false"/>
<property name="misc-thumbnail-mode" type="string" value="THUNAR_THUMBNAIL_MODE_ALWAYS"/>
<property name="misc-date-style" type="string" value="THUNAR_DATE_STYLE_SIMPLE"/>
<property name="shortcuts-icon-emblems" type="bool" value="true"/>
<property name="tree-icon-emblems" type="bool" value="true"/>
<property name="misc-image-preview-mode" type="string" value="THUNAR_IMAGE_PREVIEW_MODE_EMBEDDED"/>
<property name="misc-middle-click-in-tab" type="bool" value="true"/>
<property name="misc-open-new-window-as-tab" type="bool" value="false"/>
<property name="last-restore-tabs" type="bool" value="true"/>
<property name="misc-show-delete-action" type="bool" value="true"/>
<property name="misc-parallel-copy-mode" type="string" value="THUNAR_PARALLEL_COPY_MODE_ALWAYS"/>
<property name="last-focused-tab-right" type="int" value="0"/>
<property name="misc-confirm-close-multiple-tabs" type="bool" value="false"/>
<property name="last-side-pane" type="string" value="ThunarShortcutsPane"/>
<property name="last-location-bar" type="string" value="ThunarLocationButtons"/>
</channel>

View file

@ -1,2 +0,0 @@
require("starship"):setup()
require("full-border"):setup()

View file

@ -1,18 +0,0 @@
# [[manager.prepend_keymap]]
# on = [ "y" ]
# run = [ "yank", '''
# shell --confirm 'for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'
# ''' ]
# desc = "Copy to clipboard on Wayland" # https://yazi-rs.github.io/docs/tips
[[manager.prepend_keymap]]
on = [ "y" ]
run = [ "yank", '''
shell --confirm 'echo "$@" | xclip -i -selection clipboard -t text/uri-list'
''' ]
desc = "Copy to clipboard on Xorg" # https://yazi-rs.github.io/docs/tips
[[manager.prepend_keymap]]
on = ["C"]
run = "plugin ouch --args=zip"
desc = "Compress with ouch"

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Sonico98
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,32 +0,0 @@
# exifaudio.yazi
Preview audio metadata and cover on [Yazi](https://github.com/sxyazi/yazi).
![image](https://github.com/Sonico98/exifaudio.yazi/assets/61394886/53c1492c-9f05-4c80-a4e7-94fb36f35ca9)
## Installation
```sh
# Linux/macOS
git clone https://github.com/Sonico98/exifaudio.yazi.git ~/.config/yazi/plugins/exifaudio.yazi
# Windows
git clone https://github.com/Sonico98/exifaudio.yazi.git %AppData%\yazi\config\plugins\exifaudio.yazi
```
## Usage
Add the following to your `yazi.toml`:
```toml
[plugin]
prepend_previewers = [
{ mime = "audio/*", run = "exifaudio"}
]
```
Make sure you have [exiftool](https://exiftool.org/) installed and in your `PATH`.
## Thanks
Thanks to [sxyazi](https://github.com/sxyazi) for the PDF previewer code, on which this previewer is based on.

View file

@ -1,139 +0,0 @@
local M = {}
function M:peek()
local cache = ya.file_cache(self)
if not cache then
return
end
local child = Command("exiftool")
:args({
"-q", "-q", "-S", "-Title", "-SortName",
"-TitleSort", "-TitleSortOrder", "-Artist",
"-SortArtist", "-ArtistSort", "-PerformerSortOrder",
"-Album", "-SortAlbum", "-AlbumSort", "-AlbumSortOrder",
"-AlbumArtist", "-SortAlbumArtist", "-AlbumArtistSort",
"-AlbumArtistSortOrder", "-Genre", "-TrackNumber",
"-Year", "-Duration", "-SampleRate",
"-AudioSampleRate", "-AudioBitrate", "-AvgBitrate",
"-Channels", "-AudioChannels", tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.NULL)
:spawn()
local limit = self.area.h
local i, metadata = 0, {}
repeat
local next, event = child:read_line()
if event == 1 then
return self:fallback_to_builtin()
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
local m_title, m_tag = prettify(next)
local ti = ui.Span(m_title):bold()
local ta = ui.Span(m_tag)
table.insert(metadata, ui.Line{ti, ta})
table.insert(metadata, ui.Line{})
end
until i >= self.skip + limit
local p = ui.Paragraph(self.area, metadata):wrap(ui.Paragraph.WRAP)
ya.preview_widgets(self, { p })
local cover_width = self.area.w / 2 - 5
local cover_height = (self.area.h / 4) + 3
local bottom_right = ui.Rect {
x = self.area.right - cover_width,
y = self.area.bottom - cover_height,
w = cover_width,
h = cover_height,
}
if self:preload() == 1 then
ya.image_show(cache, bottom_right)
end
end
function prettify(metadata)
local substitutions = {
Sortname = "Sort Title:",
SortName = "Sort Title:",
TitleSort = "Sort Title:",
TitleSortOrder = "Sort Title:",
ArtistSort = "Sort Artist:",
SortArtist = "Sort Artist:",
Artist = "Artist:",
ARTIST = "Artist:",
PerformerSortOrder = "Sort Artist:",
SortAlbumArtist = "Sort Album Artist:",
AlbumArtistSortOrder = "Sort Album Artist:",
AlbumArtistSort = "Sort Album Artist:",
AlbumSortOrder = "Sort Album:",
AlbumSort = "Sort Album:",
SortAlbum = "Sort Album:",
Album = "Album:",
ALBUM = "Album:",
AlbumArtist = "Album Artist:",
Genre = "Genre:",
GENRE = "Genre:",
TrackNumber = "Track Number:",
Year = "Year:",
Duration = "Duration:",
AudioBitrate = "Bitrate:",
AvgBitrate = "Average Bitrate:",
AudioSampleRate = "Sample Rate:",
SampleRate = "Sample Rate:",
AudioChannels = "Channels:"
}
for k, v in pairs(substitutions) do
metadata = metadata:gsub(tostring(k)..":", v, 1)
end
-- Separate the tag title from the tag data
local t={}
for str in string.gmatch(metadata , "([^"..":".."]+)") do
table.insert(t, str)
end
-- Add back semicolon to title, rejoin tag data if it happened to contain a semicolon
return t[1]..":", table.concat(t, ":", 2)
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + units)),
only_if = tostring(self.file.url),
})
end
end
function M:preload()
local cache = ya.file_cache(self)
if not cache or fs.cha(cache) then
return 1
end
local output = Command("exiftool")
:args({ "-b", "-CoverArt", "-Picture", tostring(self.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:output()
if not output then
return 0
end
return fs.write(cache, output.stdout) and 1 or 2
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 yazi-rs
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,28 +0,0 @@
# full-border.yazi
Add a full border to Yazi to make it look fancier.
![full-border](https://github.com/yazi-rs/plugins/assets/17523360/ef81b560-2465-4d36-abf2-5d21dcb7b987)
## Installation
```sh
ya pack -a yazi-rs/plugins#full-border
```
## Usage
Add this to your `init.lua` to enable the plugin:
```lua
require("full-border"):setup()
```
Or you can customize the border type:
```lua
require("full-border"):setup {
-- Available values: ui.Border.PLAIN, ui.Border.ROUNDED
type = ui.Border.PLAIN,
}
```

View file

@ -1,40 +0,0 @@
local function setup(_, opts)
local type = opts and opts.type or ui.Border.ROUNDED
local old_build = Tab.build
Tab.build = function(self, ...)
local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 then
return ui.Bar(ui.Rect.default, ui.Bar.TOP)
end
return ui.Bar(
ui.Rect { x = x, y = math.max(0, y), w = ya.clamp(0, self._area.w - x, 1), h = math.min(1, self._area.h) },
ui.Bar.TOP
):symbol(c)
end
local c = self._chunks
self._chunks = {
c[1]:padding(ui.Padding.y(1)),
c[2]:padding(ui.Padding(c[1].w > 0 and 0 or 1, c[3].w > 0 and 0 or 1, 1, 1)),
c[3]:padding(ui.Padding.y(1)),
}
local style = THEME.manager.border_style
self._base = ya.list_merge(self._base or {}, {
ui.Border(self._area, ui.Border.ALL):type(type):style(style),
ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style),
ui.Bar(self._chunks[3], ui.Bar.LEFT):style(style),
bar("", c[1].right - 1, c[1].y),
bar("", c[1].right - 1, c[1].bottom - 1),
bar("", c[2].right, c[2].y),
bar("", c[2].right, c[2].bottom - 1),
})
old_build(self, ...)
end
end
return { setup = setup }

View file

@ -1,7 +0,0 @@
Copyright © 2024 Reledia <reledia@prontonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,18 +0,0 @@
# glow.yazi
Plugin for [Yazi](https://github.com/sxyazi/yazi) to preview markdown files with [glow](https://github.com/charmbracelet/glow). To install, clone the repo inside your `~/.config/yazi/plugins/`:
```bash
git clone https://github.com/Reledia/glow.yazi.git
```
then include it in your `yazi.toml` to use:
```toml
[plugin]
prepend_previewers = [
{ name = "*.md", run = "glow" },
]
```
Make sure you have [glow](https://github.com/charmbracelet/glow) installed, and can be found in `PATH`.

View file

@ -1,66 +0,0 @@
local M = {}
function M:peek()
local child = Command("glow")
:args({
"--style",
"dark",
"--width",
tostring(self.area.w),
tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
if not child then
return self:fallback_to_builtin()
end
local limit = self.area.h
local i, lines = 0, ""
repeat
local next, event = child:read_line()
if event == 1 then
return self:fallback_to_builtin()
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
lines = lines .. next
end
until i >= self.skip + limit
child:start_kill()
if self.skip > 0 and i < self.skip + limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end
function M:fallback_to_builtin()
local _, bound = ya.preview_code(self)
if bound then
ya.manager_emit("peek", { tostring(bound), only_if = tostring(self.file.url), upper_bound = "" })
end
end
return M

View file

@ -1,7 +0,0 @@
Copyright © 2024 Reledia <reledia@prontonmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,26 +0,0 @@
# miller.yazi
[Miller](https://github.com/johnkerl/miller) now in [yazi](https://github.com/sxyazi/yazi). To install, clone the repo inside `~/.config/yazi/plugins/`:
```toml
[plugin]
prepend_previewers = [
{ mime = "text/csv", run = "miller"},
]
```
## Preview
![preview](https://github.com/Reledia/miller.yazi/blob/main/preview.png?raw=true)
## Color
To change colors of keys and values, edit the `init.lua` file after the `--key-color` and `--value-color` flags. To view a list of possible colors, use `mlr --list-color-names`. Make sure to have miller installed and inside your PATH.
## Other types of file
To adapt this plugin to the other format supported from miller (like json):
- copy the plugin folder
- change the name of the copied folder into miller_(fmt)
- change the `--icsv` flag inside `init.lua` to `--i(fmt)`
- add the correct mime/name rule into `prepend_previewers` and the exec as `miller_(fmt)`

View file

@ -1,59 +0,0 @@
local M = {}
function M:peek()
local child = Command("mlr")
:args({
"--icsv",
"--opprint",
"-C",
"--key-color",
"darkcyan",
"--value-color",
"grey70",
"cat",
tostring(self.file.url),
})
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
local limit = self.area.h
local i, lines = 0, ""
repeat
local next, event = child:read_line()
if event == 1 then
ya.err(tostring(event))
elseif event ~= 0 then
break
end
i = i + 1
if i > self.skip then
lines = lines .. next
end
until i >= self.skip + limit
child:start_kill()
if self.skip > 0 and i < self.skip + limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, i - limit)), only_if = tostring(self.file.url), upper_bound = "" }
)
else
lines = lines:gsub("\t", string.rep(" ", PREVIEW.tab_size))
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
tostring(math.max(0, cx.active.preview.skip + step)),
only_if = tostring(self.file.url),
})
end
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 ndtoan96
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,67 +0,0 @@
# ouch.yazi
[ouch](https://github.com/ouch-org/ouch) plugin for [Yazi](https://github.com/sxyazi/yazi).
![ouch.yazi](https://github.com/ndtoan96/ouch.yazi/assets/33489972/946397ec-b37b-4bf4-93f1-c676fc8e59f2)
## Features
- Archive preview
- Compression
## Installation
```bash
# Linux/macOS
git clone https://github.com/ndtoan96/ouch.yazi.git ~/.config/yazi/plugins/ouch.yazi
# Windows
git clone https://github.com/ndtoan96/ouch.yazi.git %AppData%\yazi\config\plugins\ouch.yazi
```
Make sure you have [ouch](https://github.com/ouch-org/ouch) installed and in your `PATH`.
## Usage
### Preview
For archive preview, add this to your `yazi.toml`:
```toml
[plugin]
prepend_previewers = [
# Archive previewer
{ mime = "application/*zip", run = "ouch" },
{ mime = "application/x-tar", run = "ouch" },
{ mime = "application/x-bzip2", run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar", run = "ouch" },
{ mime = "application/x-xz", run = "ouch" },
]
```
Now go to an archive on Yazi, you should see the archive's content in the preview pane. You can use `Alt-j` and `Alt-k` to roll up and down the preview.
If you want to change the icon or the style of text, you can modify the `peek` function in `init.lua` file (all of them are stored in the `lines` variable).
### Compression
For compession, add this to your `keymap.toml`:
```toml
[[manager.prepend_keymap]]
on = ["C"]
run = "plugin ouch --args=zip"
desc = "Compress with ouch"
```
The `--args=zip` part tells the plugin that default format is `zip`. You can change that to whatever format you want.
### Decompression
This plugin does not provide a decompression feature because it already is supported by Yazi.
To decompress with `ouch`, configure the opener in `yazi.toml`.
```toml
[opener]
extract = [
{ run = 'ouch d -y "%*"', desc = "Extract here with ouch", for = "windows" },
{ run = 'ouch d -y "$@"', desc = "Extract here with ouch", for = "unix" },
]
```

View file

@ -1,143 +0,0 @@
local M = {}
function M:peek()
local child = Command("ouch")
:args({ "l", "-t", "-y", tostring(self.file.url) })
:stdout(Command.PIPED)
:stderr(Command.PIPED)
:spawn()
local limit = self.area.h
local file_name = string.match(tostring(self.file.url), ".*[/\\](.*)")
local lines = string.format("\x1b[2m📁 %s\x1b[0m\n", file_name)
local num_lines = 1
local num_skip = 0
repeat
local line, event = child:read_line()
if event == 1 then
ya.err(tostring(event))
elseif event ~= 0 then
break
end
if line:find('Archive', 1, true) ~= 1 and line:find('[INFO]', 1, true) ~= 1 then
if num_skip >= self.skip then
lines = lines .. line
num_lines = num_lines + 1
else
num_skip = num_skip + 1
end
end
until num_lines >= limit
child:start_kill()
if self.skip > 0 and num_lines < limit then
ya.manager_emit(
"peek",
{ tostring(math.max(0, self.skip - (limit - num_lines))), only_if = tostring(self.file.url), upper_bound = "" }
)
else
ya.preview_widgets(self, { ui.Paragraph.parse(self.area, lines) })
end
end
function M:seek(units)
local h = cx.active.current.hovered
if h and h.url == self.file.url then
local step = math.floor(units * self.area.h / 10)
ya.manager_emit("peek", {
math.max(0, cx.active.preview.skip + step),
only_if = tostring(self.file.url),
})
end
end
-- Check if file exists
local function file_exists(name)
local f = io.open(name, "r")
if f ~= nil then
io.close(f)
return true
else
return false
end
end
-- Get the files that need to be compressed and infer a default archive name
local get_compression_target = ya.sync(function()
local tab = cx.active
local default_name
local paths = {}
if #tab.selected == 0 then
if tab.current.hovered then
local name = tab.current.hovered.name
default_name = name
table.insert(paths, name)
else
return
end
else
default_name = tab.current.cwd:name()
for _, url in pairs(tab.selected) do
table.insert(paths, tostring(url))
end
-- The compression targets are aquired, now unselect them
ya.manager_emit("escape", {})
end
return paths, default_name
end)
local function invoke_compress_command(paths, name)
local cmd_output, err_code = Command("ouch")
:args({ "c", "-y" })
:args(paths)
:arg(name)
:stderr(Command.PIPED)
:output()
if err_code ~= nil then
ya.notify({
title = "Failed to run ouch command",
content = "Status: " .. err_code,
timeout = 5.0,
level = "error",
})
elseif not cmd_output.status.success then
ya.notify({
title = "Compression failed: status code " .. cmd_output.status.code,
content = cmd_output.stderr,
timeout = 5.0,
level = "error",
})
end
end
function M:entry(args)
local default_fmt = args[1]
-- Get the files that need to be compressed and infer a default archive name
local paths, default_name = get_compression_target()
-- Get archive name from user
local output_name, name_event = ya.input({
title = "Create archive:",
value = default_name .. "." .. default_fmt,
position = { "top-center", y = 3, w = 40 },
})
if name_event ~= 1 then
return
end
-- Get confirmation if file exists
if file_exists(output_name) then
local confirm, confirm_event = ya.input({
title = "Overwrite " .. output_name .. "? (y/N)",
position = { "top-center", y = 3, w = 40 },
})
if not (confirm_event == 1 and confirm:lower() == "y") then
return
end
end
invoke_compress_command(paths, output_name)
end
return M

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Rolv Apneseth
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,99 +0,0 @@
# starship.yazi
Starship prompt plugin for [Yazi](https://github.com/sxyazi/yazi)
<https://github.com/Rolv-Apneseth/starship.yazi/assets/69486699/f7314687-5cb1-4d66-8d9d-cca960ba6716>
## Requirements
- [Yazi](https://github.com/sxyazi/yazi) - latest main branch
- [starship](https://github.com/starship/starship)
### Package manager
```bash
ya pack -a Rolv-Apneseth/starship
```
### Manual
#### Linux / MacOS
```sh
git clone https://github.com/Rolv-Apneseth/starship.yazi.git ~/.config/yazi/plugins/starship.yazi
```
#### Windows
```sh
git clone https://github.com/Rolv-Apneseth/starship.yazi.git %AppData%\yazi\config\plugins\starship.yazi
```
## Usage
Add this to `~/.config/yazi/init.lua`:
```lua
require("starship"):setup()
```
Make sure you have [starship](https://github.com/starship/starship) installed and in your `PATH`.
## Extra
If you use a `starship` theme with a background colour, it might look a bit to cramped on just the one line `Yazi` gives the header by default. To fix this, you can add this to your `init.lua`:
<details>
<summary>Click to expand</summary>
```lua
local old_build = Tab.build
Tab.build = function(self, ...)
local bar = function(c, x, y)
if x <= 0 or x == self._area.w - 1 then
return ui.Bar(ui.Rect.default, ui.Bar.TOP)
end
return ui.Bar(
ui.Rect({
x = x,
y = math.max(0, y),
w = ya.clamp(0, self._area.w - x, 1),
h = math.min(1, self._area.h),
}),
ui.Bar.TOP
):symbol(c)
end
local c = self._chunks
self._chunks = {
c[1]:padding(ui.Padding.y(1)),
c[2]:padding(ui.Padding(c[1].w > 0 and 0 or 1, c[3].w > 0 and 0 or 1, 1, 1)),
c[3]:padding(ui.Padding.y(1)),
}
local style = THEME.manager.border_style
self._base = ya.list_merge(self._base or {}, {
-- Enable for full border
--[[ ui.Border(self._area, ui.Border.ALL):type(ui.Border.ROUNDED):style(style), ]]
ui.Bar(self._chunks[1], ui.Bar.RIGHT):style(style),
ui.Bar(self._chunks[3], ui.Bar.LEFT):style(style),
bar("┬", c[1].right - 1, c[1].y),
bar("┴", c[1].right - 1, c[1].bottom - 1),
bar("┬", c[2].right, c[2].y),
bar("┴", c[2].right, c[1].bottom - 1),
})
old_build(self, ...)
end
```
</details>
> [!NOTE]
> This works by overriding your `Tab.build` function so make sure this is the only place you're doing that in your config. For example, this would be incompatible with the [full-border plugin](https://github.com/yazi-rs/plugins/tree/main/full-border.yazi)
## Thanks
- [sxyazi](https://github.com/sxyazi) for providing the code for this plugin and the demo video [in this comment](https://github.com/sxyazi/yazi/issues/767#issuecomment-1977082834)

View file

@ -1,28 +0,0 @@
local save = ya.sync(function(st, cwd, output)
if cx.active.current.cwd == Url(cwd) then
st.output = output
ya.render()
end
end)
return {
setup = function(st)
Header:children_remove(1, Header.LEFT)
Header:children_add(function() return ui.Line.parse(st.output or "") end, 1000, Header.LEFT)
ps.sub("cd", function()
local cwd = cx.active.current.cwd
if st.cwd ~= cwd then
st.cwd = cwd
ya.manager_emit("plugin", { st._id, args = ya.quote(tostring(cwd), true) })
end
end)
end,
entry = function(_, args)
local output = Command("starship"):arg("prompt"):cwd(args[1]):env("STARSHIP_SHELL", ""):output()
if output then
save(args[1], output.stdout:gsub("^%s+", ""))
end
end,
}

View file

@ -1,46 +0,0 @@
{ pkgs, ... }: {
# yazi хуже ranger для моих потребностей, стоит на тесты. Ниже один из примеров, где yazi уступает
# Если открыть картинку через yazi, то он просто передаст картинку или каталог в качестве аргумента,
# из-за чего сортировка при пролистывании картинок будет "рандомной"
# Если же открыть картинку через ranger, то в качетве аргумента он передаст список файлов,
# где они отсортированы в том порядке, в котором отображаются у меня на экране в самом ranger
home = {
packages = with pkgs; [
ffmpegthumbnailer # for video thumbnails
unar # for archive preview
jq # for JSON preview
poppler # for PDF preview
fd # for file searching
ripgrep # for file content searching
fzf # for quick file subtree navigation
zoxide # for historical directories navigation
xclip # for system clipboard support on x11
#xsel # как xclip, но вроде как функционал больше
#wl-clipboard # for system clipboard support on wayland
# for plugins
exiftool # for exifaudio.yazi
glow # for glow.yazi
ouch # for ouch.yazi
miller # for miller.yazi
starship # for starship.yazi
];
file = {
".config/yazi/yazi.toml".source = ./yazi.toml;
".config/yazi/keymap.toml".source = ./keymap.toml;
".config/yazi/plugins".source = ./plugins; # https://yazi-rs.github.io/docs/resources/#functional
};
};
programs.yazi = { # Файловый менеджер в терминале https://yazi-rs.github.io/features
enable = true;
enableBashIntegration = true;
enableZshIntegration = true;
# enableFishIntegration = true;
# enableNushellIntegration = true;
};
}

View file

@ -1,33 +0,0 @@
# Тут будут мои настройки
[manager]
sort_by = "natural" # Как алфавит, но не "1 < 10 < 2", а "1 < 2 < 10"
sort_dir_first = true # Чтоб директории были первыми, не смотря на сортировку
#show_hidden = true # Показывать скрытые файлы. Спорно, потому что они первые в списке, бесит. Мб проще бинд юзать
[plugin]
prepend_previewers = [
# Preview markdown files
{ name = "*.md", run = "glow" },
# Preview audio metadata and cover
{ mime = "audio/*", run = "exifaudio"},
# Preview csv files
{ mime = "text/csv", run = "miller"},
# Preview archives
{ mime = "application/*zip", run = "ouch" },
{ mime = "application/x-tar", run = "ouch" },
{ mime = "application/x-bzip2", run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar", run = "ouch" },
{ mime = "application/x-xz", run = "ouch" },
]
[opener]
view = [
{ run = 'imv "$@"', desc = "View selected images", orphan = true },
]
[open]
prepend_rules = [ # Чтоб мои настройки были в приоритете
{ mime = "image/*", use = "view" },
]

View file

@ -19,8 +19,6 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# nixvim =
nix-gaming = { # Удобно ставить некоторые игры nix-gaming = { # Удобно ставить некоторые игры
url = "github:fufexan/nix-gaming"; url = "github:fufexan/nix-gaming";
# inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
@ -29,8 +27,7 @@
outputs = { self, nixpkgs, ... }@inputs: outputs = { self, nixpkgs, ... }@inputs:
let let
system = "x86_64-linux"; # Не понимаю зачем, если это в hardware.nix указывается system = "x86_64-linux";
# pkgs = nixpkgs.legacyPackages.${system};
config = { config = {
allowUnfree = true; allowUnfree = true;
rocmSupport = true; rocmSupport = true;

View file

@ -2,7 +2,7 @@
imports = [ imports = [
./ranger/ranger.nix ./ranger/ranger.nix
./gui/vscode.nix # ./gui/vscode.nix
./imv/imv.nix ./imv/imv.nix
./mpv/mpv.nix ./mpv/mpv.nix
@ -17,7 +17,7 @@
./terminal/zsh.nix ./terminal/zsh.nix
./mangohud.nix ./mangohud.nix
./symlinks.nix # ./symlinks.nix
############## ##############
## WM (X11) ## ## WM (X11) ##
@ -28,21 +28,12 @@
./wm/dunst.nix ./wm/dunst.nix
./wm/lockscreen.nix ./wm/lockscreen.nix
# Для выключения i3 комментируй все строки ниже # Для выключения i3wm комментируй все строки ниже
./wm/i3.nix ./wm/i3.nix
# Для выключения bspwm комментируй все строки ниже # Для выключения bspwm комментируй все строки ниже
./wm/bspwm/bspwm.nix ./wm/bspwm/bspwm.nix
./wm/bspwm/polybar.nix ./wm/bspwm/polybar.nix
./wm/bspwm/sxhkd.nix ./wm/bspwm/sxhkd.nix
##################
## WM (Wayland) ##
##################
# Wayland гавно лаганое, но мб на NixOS дела будут лучше
# Мб я сделаю конфиги для sway и hyprland на ags
# Каталог wm мб переименовать в X11 и создать отдельный Wayland
]; ];
} }

View file

@ -74,7 +74,7 @@ sudo chmod a+rx /usr/local/bin/yt-dlp
### Включение нескольких звуковых дорожек ### Включение нескольких звуковых дорожек
Я немного изменил `menus.lua` в визуальной теме `uosc`. Теперь там появилась возможность включать несколько звуковых дорожек разом. Израдка это может вызывать визуальные артефакты видеоряда в течении 1-2 секунд. Не знаю от чего это зависит. Вот как это работает: Я немного изменил `menus.lua` в визуальной теме `uosc`. Теперь там появилась возможность включать несколько звуковых дорожек разом. Изредка это может вызывать визуальные артефакты видеоряда в течении 1-2 секунд. Не знаю от чего это зависит. Вот как это работает:
- Если просто нажимать на звуковую дорожку в меню выбора аудио, то она будет переключаться. Если была активна - выключится, если была не активна - включится - Если просто нажимать на звуковую дорожку в меню выбора аудио, то она будет переключаться. Если была активна - выключится, если была не активна - включится
- Если хочется не переключать, а активировать одну конкретную звуковую дорожку, то на неё надо нажать с зажатым `Ctrl` - Если хочется не переключать, а активировать одну конкретную звуковую дорожку, то на неё надо нажать с зажатым `Ctrl`

View file

@ -7,6 +7,7 @@
# Я не уверен надо ли писать "config.lib.file.mkOutOfStoreSymlink" # Я не уверен надо ли писать "config.lib.file.mkOutOfStoreSymlink"
# Вроде это более простой симлинк, чем просто ссылка на файл # Вроде это более простой симлинк, чем просто ссылка на файл
# Типо он напрямую симлинк кидает, а не через 100500 симлинков в nix/store
# Но мб меня обманули # Но мб меня обманули
{ config, ... }: let { config, ... }: let
@ -20,29 +21,14 @@ in {
".password-store".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.password-store"; # Для утилиты pass ".password-store".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.password-store"; # Для утилиты pass
".ssh".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.ssh"; ".ssh".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/.ssh";
# Games
# ".local/share/osu-wine/osu!/Replays".source = config.lib.file.mkOutOfStoreSymlink "${dir}/games/osu!/Replays";
# ".local/share/osu-wine/osu!/Skins".source = config.lib.file.mkOutOfStoreSymlink "${dir}/games/osu!/Skins";
# ".local/share/osu-wine/osu!/Songs".source = config.lib.file.mkOutOfStoreSymlink "${dir}/games/osu!/Songs";
# ".local/share/osu-wine/osu!/collection.db".source = config.lib.file.mkOutOfStoreSymlink "${dir}/games/osu!/collection.db";
# ".local/share/osu-wine/osu!/osu!.buliway.cfg".source = config.lib.file.mkOutOfStoreSymlink "${dir}/games/osu!/osu!.buliway.cfg";
# Browsers. Мб сделать .force, чтоб удалить сток. А мб руками удалить сток перед этим # Browsers. Мб сделать .force, чтоб удалить сток. А мб руками удалить сток перед этим
".mozilla".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.mozilla"; ".mozilla".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.mozilla";
".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.librewolf"; ".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/.librewolf";
"Downloads/Telegram Desktop".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Telegram Desktop"; "Downloads/Telegram Desktop".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Telegram Desktop";
# Не знаю на счёт obs, chatbox, planify, calibre, discord, nekobox
}; };
xdg.configFile = { # Это для каталога .config 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"; # "chromium".source = config.lib.file.mkOutOfStoreSymlink "${dir}/Backups/Apps/chromium";
# Ебаный qt, как я тебя ненавижу
# "Kvantum".source = ../shit/Kvantum;
# "qt5ct".source = ../shit/qt5ct
# "qt6ct".source = ../shit/qt6ct
}; };
} }

View file

@ -4,7 +4,7 @@
enableBashIntegration = true; enableBashIntegration = true;
enableZshIntegration = true; enableZshIntegration = true;
enableFishIntegration = true; # enableFishIntegration = true;
enableNushellIntegration = true; enableNushellIntegration = true;
enableTransience = true; # Fish Shell only. Отображает пустую строку при нажатии enter? enableTransience = true; # Fish Shell only. Отображает пустую строку при нажатии enter?

View file

@ -39,9 +39,6 @@
r = "ranger --choosedir=/tmp/choosedir && cd \"$(cat /tmp/choosedir)\""; r = "ranger --choosedir=/tmp/choosedir && cd \"$(cat /tmp/choosedir)\"";
g = "gitui"; g = "gitui";
f = "fastfetch"; f = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
}; };
history = { history = {

View file

@ -7,10 +7,10 @@
# Как я понял, эти команды выполняются в начале bspwmrc # Как я понял, эти команды выполняются в начале bspwmrc
# Ниже настройки для основного монитора. Мб вместе с --primary надо # Ниже настройки для основного монитора. Мб вместе с --primary надо
# И настройки для второго (правого) монитора # И настройки для второго (правого) монитора
extraConfigEarly = '' # extraConfigEarly = ''
xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165 # xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165
xrandr --output HDMI-A-0 --mode 1920x1080 --rate 60 --right-of DisplayPort-2 # xrandr --output HDMI-A-0 --mode 1920x1080 --rate 60 --right-of DisplayPort-2
''; # '';
# Эти команды выполняются в конце bspwmrc # Эти команды выполняются в конце bspwmrc
extraConfig = '' extraConfig = ''
@ -24,10 +24,7 @@
"sxhkd" "sxhkd"
"nm-applet" "nm-applet"
"ksnip" "ksnip"
# "nekoray" "xset s off -dpms" # Отменить затухание экрана через X минут
# "obsidian"
# "planify"
# "xset s off -dpms" # Отменить затухание экрана через X минут
"spice-vdagent" # Для виртуалки "spice-vdagent" # Для виртуалки
]; ];
@ -72,12 +69,10 @@
"librewolf:librewolf:Save Image" = floating; "librewolf:librewolf:Save Image" = floating;
"SshAskpass" = floating; "SshAskpass" = floating;
"Nm-connection-editor" = floating; "Nm-connection-editor" = floating;
"nekoray" = floating;
"Kvantum Manager" = floating; "Kvantum Manager" = floating;
"qt5ct" = floating; "qt5ct" = floating;
"qt6ct" = floating; "qt6ct" = floating;
"ksnip" = floating1600x900; "ksnip" = floating1600x900;
# "ark" = floating1200x800; # Удалил, чтоб blowjob на экран не выдавало
"file-roller" = floating; "file-roller" = floating;
"floating-terminal" = floating1200x800; "floating-terminal" = floating1200x800;
"pavucontrol" = floating900x600; "pavucontrol" = floating900x600;

View file

@ -1,15 +1,14 @@
{ {
imports = [ imports = [
# ./env.nix # Мб не надо, ибо редачу через home.nix? # ./filesystems.nix
./filesystems.nix
./hardware.nix ./hardware.nix
./hibernate.nix # ./hibernate.nix
./locale.nix ./locale.nix
./network.nix ./network.nix
./sound.nix ./sound.nix
./stylix.nix ./stylix.nix
./virtualisation.nix ./virtualisation.nix
./vr.nix # ./vr.nix
./xserver.nix ./xserver.nix
]; ];
} }

View file

@ -1,5 +0,0 @@
{
environment.variables = {
EDITOR = "nvim";
};
}

View file

@ -1,3 +1,6 @@
# Тут настраивается автомаунт нужных дисков
# Замени значения на свои. Узнать uuid можно через `lsblk -f`
{ {
fileSystems = { fileSystems = {
"/mnt/backups" = { "/mnt/backups" = {

View file

@ -1,12 +1,6 @@
{ pkgs, ... }: { # Блютуз, интернет, wifi { # Блютуз, интернет, wifi
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
# settings = {
# General = {
# Enable = "Source,Sink,Media,Socket";
# Experimental = true;
# };
# };
}; };
networking = { networking = {
@ -16,22 +10,7 @@
# wireless.enable = true; # Enables wireless support via wpa_supplicant. # wireless.enable = true; # Enables wireless support via wpa_supplicant.
firewall.enable = false; firewall.enable = false;
# firewall = {
# allowedTCPPorts = [ 2080 ]; # For nekoray
# allowedUDPPorts = [ 2080 ]; # Clients and peers can use the same port, see listenport
# };
# firewall = {
# # allowedUDPPorts = [ 53 2017 2080 20170 20171 20172 46067 55084 57282 58374 ]; # For nekoray
# # allowedTCPPorts = [ 53 2017 2080 20170 20171 20172 46067 55084 57282 58374 ]; # Clients and peers can use the same port, see listenport
# allowedUDPPortRanges = [ { from = 1; to = 65535; } ];
# allowedTCPPortRanges = [ { from = 1; to = 65535; } ];
# };
}; };
services.blueman.enable = true; # Tray for bluetooth services.blueman.enable = true; # Tray for bluetooth
# services.sing-box = { # Тоже блочит инет, как и nekoray
# enable = true;
# settings = builtins.fromJSON (builtins.readFile "/home/buliway/nixos-private-dots/modules/nixos/singbox.json");
# };
} }

View file

@ -54,23 +54,23 @@
# Ниже настройки имеют формат "число - название" # Ниже настройки имеют формат "число - название"
# Число определяет приоритет настройки, а название описывает цель конфига # Число определяет приоритет настройки, а название описывает цель конфига
extraConfig.pipewire = { # extraConfig.pipewire = {
"10-clock-rate" = { # "10-clock-rate" = {
"context.properties" = { # "context.properties" = {
"default.clock.rate" = 48000; # "default.clock.rate" = 48000;
"default.clock.allowed-rates" = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ]; # "default.clock.allowed-rates" = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ];
}; # };
}; # };
# Ниже настройки для минимальной задержки в играх (например osu!stable через wine) # # Ниже настройки для минимальной задержки в играх (например osu!stable через wine)
# quantum — устанавливает размер буфера (чем меньше значение, тем ниже задержка, но выше нагрузка на процессор). # # quantum — устанавливает размер буфера (чем меньше значение, тем ниже задержка, но выше нагрузка на процессор).
# Можно посчитать теоретическую задержку в секундах, поделив quantum на rate (48/48000 будет 1мс) # # Можно посчитать теоретическую задержку в секундах, поделив quantum на rate (48/48000 будет 1мс)
# Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (64, 128, 256) или просто удалить эту настройку # # Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (64, 128, 256) или просто удалить эту настройку
# По умолчанию я закомментировал настройку, чтоб у людей не было проблем # # По умолчанию я закомментировал настройку, чтоб у людей не было проблем
# "92-low-latency" = { # # "92-low-latency" = {
# default.clock.quantum = 32; # default = 1024 # # default.clock.quantum = 32; # default = 1024
# default.clock.min-quantum = 32; # default = 32 # # default.clock.min-quantum = 32; # default = 32
# default.clock.max-quantum = 32; # default = 2048 # # default.clock.max-quantum = 32; # default = 2048
# # };
# }; # };
}; };
};
} }

View file

@ -4,8 +4,7 @@
# Поэтому сразу поставил всё что надо и не пробовал найти необходимый минимум # Поэтому сразу поставил всё что надо и не пробовал найти необходимый минимум
# Мб пригодится поставить opencomposite для трансляции OpenVR в OpenXR # Мб пригодится поставить opencomposite для трансляции OpenVR в OpenXR
{ pkgs, ... }: { {
services = { services = {
# Open source XR runtime # Open source XR runtime

View file

@ -5,7 +5,7 @@
sddm = { sddm = {
# Чтоб задать аватарку юзеру, надо отправить png файл такой командой: # Чтоб задать аватарку юзеру, надо отправить png файл такой командой:
# sudo cp image.png /var/lib/AccountsService/icons/username # sudo cp image.png /var/lib/AccountsService/icons/username
# Тоесть именно username, без .png в конце # То есть именно username, без .png в конце
enable = true; enable = true;
# package = pkgs.kdePackages.sddm; # qt6 sddm # package = pkgs.kdePackages.sddm; # qt6 sddm
theme = "chili"; theme = "chili";
@ -33,16 +33,6 @@
i3.enable = true; # i3-gaps доступен в стоке в новых версиях i3.enable = true; # i3-gaps доступен в стоке в новых версиях
}; };
# Fully disable DPMS and screen blanking
config = ''
Section "Extensions"
Option "DPMS" "false"
EndSection
Section "ServerFlags"
Option "BlankTime" "0"
EndSection
'';
xkb = { xkb = {
layout = "us,ru"; layout = "us,ru";
variant = ""; variant = "";

View file

@ -1,7 +1,3 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ pkgs, pkgs2, spkgs, inputs, ... }: { pkgs, pkgs2, spkgs, inputs, ... }:
let let
@ -14,8 +10,8 @@ in {
./packages.nix ./packages.nix
]; ];
# Список сервисов, которые не надо ребутать после rebuild switch # Если какие-то сервисы кладут систему при ребилде,
# Мне это надо, потому что некоторые сервисы кладут систему # то их ребут при ребилде можно выключить таким конфигом:
# systemd.services = { # systemd.services = {
# "accounts-daemon".restartIfChanged = false; # "accounts-daemon".restartIfChanged = false;
# "home-manager-buliway".restartIfChanged = false; # "home-manager-buliway".restartIfChanged = false;
@ -28,7 +24,6 @@ in {
# ]; # ];
loader = { loader = {
# systemd-boot.enable = true;
grub = { grub = {
enable = true; enable = true;
efiSupport = true; efiSupport = true;

View file

@ -14,9 +14,9 @@
# Если с каким-то софтом будут проблемы, то можно перенести из "packages.nix" сюда # Если с каким-то софтом будут проблемы, то можно перенести из "packages.nix" сюда
# Например, я читал, что если ставить vscode через configuration.nix, а не через пакеты юзера, # Например, я читал, что если ставить vscode через configuration.nix, а не через пакеты юзера,
# то не получится ставить расширения. Потому что там софт ставится от рута и vscode # то не получится ставить расширения. Потому что там софт ставится от рута и vscode
# будет пытаться установить расширения в каталог nix store, куда нельзя что либо ставить без рута. # будет пытаться установить расширения в каталог nix store, куда нельзя что либо ставить даже с рутом.
packages = with pkgs; [ packages = with pkgs; [
vscode # Надо в home.packages писать, чтоб расширения ставились без рута vscode # Надо в home.packages писать, чтоб расширения ставились
]; ];
sessionVariables = { sessionVariables = {

View file

@ -46,44 +46,26 @@
# greenclip.enable = true; # https://github.com/erebe/greenclip (использую clipmenu вместо этого) # greenclip.enable = true; # https://github.com/erebe/greenclip (использую clipmenu вместо этого)
# fstrim.enable = true; # Чистит ssd для норм производительности. Пока не пользуюсь # fstrim.enable = true; # Чистит ssd для норм производительности. Пока не пользуюсь
# archisteamfarm = {}; # Фарм карточек стима афк. Просто раскомментить мало, надо настроить # archisteamfarm = {}; # Фарм карточек стима афк. Просто раскомментить мало, надо настроить
ollama = let ollama = {
pinPackage =
{
name,
commit,
sha256,
}:
(import (builtins.fetchTarball {
inherit sha256;
url = "https://github.com/NixOS/nixpkgs/archive/${commit}.tar.gz";
}) { system = pkgs.system; }).${name};
in {
enable = true; enable = true;
acceleration = "rocm"; acceleration = "rocm";
# Ollama Port 11434/tcp # Ollama Port 11434/tcp
host = "0.0.0.0"; host = "0.0.0.0";
port = 11434; port = 11434;
openFirewall = true; openFirewall = true;
# pin ollama v0.5.7 until nixpkgs update
# https://github.com/NixOS/nixpkgs/issues/375359
# package = (pinPackage {
# name = "ollama";
# commit = "d0169965cf1ce1cd68e50a63eabff7c8b8959743";
# sha256 = "sha256:1hh0p0p42yqrm69kqlxwzx30m7i7xqw9m8f224i3bm6wsj4dxm05";
# });
package = pkgs2.ollama; package = pkgs2.ollama;
rocmOverrideGfx = "10.3.0"; rocmOverrideGfx = "10.3.0"; # Лок версии, чтоб на моей видюхе работало всё
# additional environment variables # additional environment variables
# environmentVariables = { HSA_OVERRIDE_GFX_VERSION="10.3.0"; }; # environmentVariables = { HSA_OVERRIDE_GFX_VERSION="10.3.0"; };
}; };
}; };
programs = { programs = {
nix-ld = { nix-ld = { # Имитация файловой системы обычного линукса и пакеты для этого дела
enable = true; enable = true;
libraries = with pkgs2; [ libraries = with pkgs2; [
stdenv.cc.cc stdenv.cc.cc
# Nekoray (Throne) # Для запуска Throne бинаря с гитхаб (форк nekoray)
kdePackages.qtbase kdePackages.qtbase
kdePackages.qttools kdePackages.qttools
kdePackages.qtwayland kdePackages.qtwayland
@ -116,7 +98,6 @@
glib glib
dbus dbus
krb5 krb5
]; ];
}; };
zsh.enable = true; zsh.enable = true;
@ -124,7 +105,7 @@
gnupg.agent = { gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-qt; # Окно ввода пароля pinentryPackage = pkgs.pinentry-qt; # Окно ввода пароля для gpg
}; };
appimage = { # Чтоб .appimage работал appimage = { # Чтоб .appimage работал
@ -135,7 +116,7 @@
}; };
}; };
thunar = { # Can't I use it with home-manager? WTF thunar = {
enable = true; enable = true;
plugins = with pkgs.xfce; [ plugins = with pkgs.xfce; [
thunar-media-tags-plugin # Tagging and renaming features for media files thunar-media-tags-plugin # Tagging and renaming features for media files
@ -145,13 +126,6 @@
}; };
xfconf.enable = true; # For Thunar configs xfconf.enable = true; # For Thunar configs
# gdk-pixbuf-query-loaders | grep avif
# ls /run/current-system/sw/lib/gdk-pixbuf-2.0/2.10.0/loaders/
# gdk-pixbuf.modulePackages = with pkgs; [
# webp-pixbuf-loader
# libavif
# ];
steam = { steam = {
enable = true; enable = true;
# package = pkgs2.steam; # package = pkgs2.steam;
@ -169,15 +143,6 @@
# Я хз надо ли оно мне. https://github.com/ValveSoftware/gamescope # Я хз надо ли оно мне. https://github.com/ValveSoftware/gamescope
# Подробносни тут https://ventureo.codeberg.page/source/linux-gaming.html#gamescope # Подробносни тут https://ventureo.codeberg.page/source/linux-gaming.html#gamescope
gamescope.enable = true; gamescope.enable = true;
# nekoray = {
# enable = true;
# package = pkgs2.nekoray;
# tunMode = {
# enable = true;
# # setuid = true; # Рекомендуют вкл, если проблемы с выкл есть
# };
# };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -203,9 +168,9 @@
clang # Компилятор clang # Компилятор
gcc # Компилятор gcc # Компилятор
glibc # GNU C Library glibc # GNU C Library
gnumake # ? gnumake
cmake-language-server # CMake LSP cmake-language-server # CMake LSP
cmake # ? cmake
# bear # Tool that generates a compilation database for clang tooling # bear # Tool that generates a compilation database for clang tooling
# boost # Collection of C++ libraries # boost # Collection of C++ libraries
@ -222,7 +187,6 @@
# Nix # Nix
nixd # Nix LSP. Нет в mason nixd # Nix LSP. Нет в mason
# alejandra # Nix formatter. Usage: alejandra file.nix
# Lua # Lua
lua5_1 # Scripting language lua5_1 # Scripting language
@ -238,8 +202,7 @@
# SQL # SQL
sqls # SQL LSP sqls # SQL LSP
postgres-lsp # Postgres SQL postgres-lsp # Postgres LSP
# sql-formatter # SQL formatter
sqlite sqlite
dbeaver-bin dbeaver-bin
pgadmin4 pgadmin4
@ -273,20 +236,13 @@
vim-language-server # VimScript LSP vim-language-server # VimScript LSP
go-migrate # Database migrations. CLI and Golang library go-migrate # Database migrations. CLI and Golang library
postman # API Development Environment postman # API Development Environment
insomnia insomnia # API client. Мне нравится больше, чем postman
# Nushell
pkgs2.nushell # Modern shell pkgs2.nushell # Modern shell
pkgs2.nushellPlugins.query # Nushell plugin to query JSON, XML, and various web data
pkgs2.nushellPlugins.gstat # Git status plugin for Nushell
pkgs2.nushellPlugins.polars # Молниеносная аналитика данных через `dataframe ...`
pkgs2.nushellPlugins.formats # Formats plugin for Nushell
pkgs2.nushellPlugins.highlight # Syntax highlighting
# For nvim # For nvim
tree-sitter # For nvim tree-sitter # code parser
ripgrep # For nvim ripgrep # grep
fd # For nvim fd # find
############ ############
## Архивы ## ## Архивы ##
@ -334,7 +290,6 @@
rocmPackages.hipblas # Для работы hip? rocmPackages.hipblas # Для работы hip?
rocmPackages.clr # Для работы hip? rocmPackages.clr # Для работы hip?
pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов
tasktimer # TUI task timer. Можно несколько таймеров с описанием запустить. В терминал tt
timer # A "sleep" with progress. Таймер на пельмени "timer 5m" timer # A "sleep" with progress. Таймер на пельмени "timer 5m"
libqalculate # Advanced calculator library libqalculate # Advanced calculator library
fastfetch # Пишешь в теримнал и кидаешь всем со словами I use nixos btw fastfetch # Пишешь в теримнал и кидаешь всем со словами I use nixos btw
@ -343,7 +298,6 @@
killall # Убить процессы. Мем, что в стоке не стоит killall # Убить процессы. Мем, что в стоке не стоит
libnotify # Вызов оповещений через "notify-send" libnotify # Вызов оповещений через "notify-send"
pkgs2.gallery-dl # Качать много картинок с кучи разных сайтов pkgs2.gallery-dl # Качать много картинок с кучи разных сайтов
shellcheck # Проверка shell скриптов на ошибки
pwgen # Генератор паролей pwgen # Генератор паролей
lm_sensors # Сенсоры lm_sensors # Сенсоры
httpie # interacting with APIs & HTTP servers httpie # interacting with APIs & HTTP servers
@ -363,7 +317,7 @@
## GUI ## ## GUI ##
######### #########
ksnip # Скрины. Аналоги - Flameshot ksnip # Скрин экрана. Аналог - Flameshot
# kdePackages.ark # Архиватор от kde. Имеет в зависимостях blowjob # kdePackages.ark # Архиватор от kde. Имеет в зависимостях blowjob
file-roller # Архиватор от gnome file-roller # Архиватор от gnome
qbittorrent # Торренты качать qbittorrent # Торренты качать
@ -443,10 +397,10 @@
########### ###########
strawberry # Музыкальный плеер strawberry # Музыкальный плеер
obs-studio # Запись видео # TODO: Настройки надо сделать декларативными obs-studio # Запись видео
picard # Массовый редактор метаданных музыки # picard # Массовый редактор метаданных музыки
mousai # Опенсорс шазам. Со временем просит платный api # mousai # Опенсорс шазам. Со временем просит платный api
spek # Спектрограмма аудио. # spek # Спектрограмма аудио.
mpv # Смотреть видео mpv # Смотреть видео
# Смотреть картинки # Смотреть картинки
imv # Не умеет показывать анимированные webp. Через раз может показывать avif imv # Не умеет показывать анимированные webp. Через раз может показывать avif
@ -457,13 +411,12 @@
## Social ## ## Social ##
############ ############
# (pkgs2.discord.override { # Discord # (pkgs2.discord.override { # Discord с плагинами
# # withOpenASAR = true; # Оптимизатор дискрода # # withOpenASAR = true; # Оптимизатор дискрода
# withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными # withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными
# }) # })
pkgs2.discord pkgs2.discord
pkgs2.telegram-desktop pkgs2.telegram-desktop
# revolt-desktop # FOSS аналог дискорда
########### ###########
## Games ## ## Games ##
@ -471,20 +424,13 @@
# Чтоб не компилить wine, надо закомментить и сделать ребилд без игры. # Чтоб не компилить wine, надо закомментить и сделать ребилд без игры.
# Потом раскомментить и сделать ребилд с игрой # Потом раскомментить и сделать ребилд с игрой
inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming # inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming
# inputs.nix-gaming.packages.${pkgs.system}.osu-lazer-bin # osu!lazer from nix-gaming
# pkgs2.osu-lazer-bin # pkgs2.osu-lazer-bin
# steam # Мб не надо сюда писать, раз через programs.steam редачу
# heroic # A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
# lutris # Запускать игры не из стима
# bottles # Минималистичная альтернатива lutris
# Мб зависимости # Мб зависимости
protonup-qt # Управлять версиями proton-ge? protonup-qt # Управлять версиями proton-ge для steam
steam-run # На всякий случай steam-run # На всякий случай
pkgs2.mangohud # Фпс и нагрузку на пк показывает в играх pkgs2.mangohud # Фпс и нагрузку на пк показывает в играх
# gamemode # Оптимизации линуха и игр
pkgs2.wineWowPackages.stableFull # support both 32- and 64-bit applications pkgs2.wineWowPackages.stableFull # support both 32- and 64-bit applications
# wineWowPackages.staging # Можно назвать бета версией вайна # wineWowPackages.staging # Можно назвать бета версией вайна
pkgs2.winetricks # winetricks (all versions) pkgs2.winetricks # winetricks (all versions)
@ -497,7 +443,7 @@
krita # Рисовать 1. Часто крашится krita # Рисовать 1. Часто крашится
pkgs2.gimp3 # Рисовать 2. Потом выберу что оставить pkgs2.gimp3 # Рисовать 2. Потом выберу что оставить
blender-hip # 3д графика и рендер видео # blender-hip # 3д графика и рендер видео
gcolor3 # GUI color picker gcolor3 # GUI color picker
xcolor # CLI color picker https://github.com/Soft/xcolor xcolor # CLI color picker https://github.com/Soft/xcolor
# inkscape # Vector graphic editor # inkscape # Vector graphic editor

View file

@ -1,4 +1,16 @@
[kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) fork ## Описание
Это форк [kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim)
Многие бинды nvim можно найти, нажав `space`, он же называется `leader` в конфигах. Ещё можно нажать `g`, там будет `go to ...`. Например `grd` это `go refactor definition` (перейти к реализации функции) или `grn` это `go refactor rename` (переименовать что либо во всём проекте)
Сессии nvim создаются через `space Sc` и удаляются через `space Sd`. Открыть файловый менеджер через `\`. Но его стоит закрывать перед выходом из nvim, иначе сессия поломается. Лень фиксить, это походу сложно делается, проще закрыть перед выходом
Дополнительная информация ниже, но некоторых вещи могли устареть, например бинды. Мне тяжело даётся актуализировать readme моих настроек neovim, потому что я часто что-то меняю. Лучше посмотри эти два видео и сможешь сам разобраться в моих конфигах, найти какие сейчас бинды и кто что делает:
- [The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
- [0 to LSP: Neovim RC From Scratch](https://youtu.be/w7i4amO_zaE)
## Старое
> ⚠️ **Warning**: 27.04.2025 произошли большие изменения в конфиге, которые мне очень лень описывать в ридми. Документировать изменения сложнее, чем эти самые изменения вносить. Проще по коммитам ориентироваться. Поменялось много биндов и кор плагинов. Адаптировано для работы на neovim 0.11. > ⚠️ **Warning**: 27.04.2025 произошли большие изменения в конфиге, которые мне очень лень описывать в ридми. Документировать изменения сложнее, чем эти самые изменения вносить. Проще по коммитам ориентироваться. Поменялось много биндов и кор плагинов. Адаптировано для работы на neovim 0.11.
@ -8,7 +20,7 @@
Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была. Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, тоесть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта. Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, то есть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e
Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
@ -77,7 +89,7 @@ Per project можно использовать `.editorconfig` файл в ко
### Мои бинды ### Мои бинды
Все бинды можно искать прям в neovim, если нажать `Space s k`, тоесть `S`earch `K`eymaps Все бинды можно искать прям в neovim, если нажать `Space s k`, то есть `S`earch `K`eymaps
Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные. Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные.
@ -212,7 +224,7 @@ Normal mode. С пробелом
``` ```
Чтоб выключить форматирование у LSP, можно заглянуть в `lsp.lua` и увидеть примеры кода. Например я выключил форматирование у `sqls` везде и у `html` в файлах `templ`. Если у всех выкл, но что-то форматирует, значит форматтер установлен отдельно. Чтоб выключить форматирование у LSP, можно заглянуть в `lsp.lua` и увидеть примеры кода. Например я выключил форматирование у `sqls` везде и у `html` в файлах `templ`. Если у всех выкл, но что-то форматирует, значит форматтер установлен отдельно.
Некоторые LSP/Linter/Formatter не могут просто взять и заработать на каком-то файле. Например для работы `tailwindcss lsp` обязательным условием является `конфиг файл tailwind` в каталоге проекта, иначе ничего не будет работать. Для многих lsp важно находить `root dir`, который определяется по наличию каталога `.git` в проекте, иначе никаких подсказок в коде не будет. Разные инструменты для работы с SQL зачастую требуют делать конект к базе данных, иначе ничего работать не будет. Тоесть с удобством написать тестовый SQL код вне проекта не получится. Некоторые LSP/Linter/Formatter не могут просто взять и заработать на каком-то файле. Например для работы `tailwindcss lsp` обязательным условием является `конфиг файл tailwind` в каталоге проекта, иначе ничего не будет работать. Для многих lsp важно находить `root dir`, который определяется по наличию каталога `.git` в проекте, иначе никаких подсказок в коде не будет. Разные инструменты для работы с SQL зачастую требуют делать конект к базе данных, иначе ничего работать не будет. То есть с удобством написать тестовый SQL код вне проекта не получится.
Я постарался исправить это там, где возможно. Например мне пришлось использовать `sqls` вместо `postgres_lsp`, чтоб подсказки работали даже вне проекта. Но зачастую придётся создавать проект и настраивать его, чтоб получить полноценный опыт IDE Я постарался исправить это там, где возможно. Например мне пришлось использовать `sqls` вместо `postgres_lsp`, чтоб подсказки работали даже вне проекта. Но зачастую придётся создавать проект и настраивать его, чтоб получить полноценный опыт IDE
@ -221,7 +233,7 @@ Normal mode. С пробелом
- `YAML LSP` имеет [опциональные настройки](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt#yamlls) - `YAML LSP` имеет [опциональные настройки](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt#yamlls)
- `JSON LSP` имеет [опциональные настройки](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt#jsonls) - `JSON LSP` имеет [опциональные настройки](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt#jsonls)
- `rust-analyzer` имеет много опциональных настроек - `rust-analyzer` имеет много опциональных настроек
- Чтоб `sql` работал внутри `.go` файлов, sql запросы надо писать внутри \`` так `\`. Тоесть внутри \` с пробелом в начале и конце, а не просто строка. - Чтоб `sql` работал внутри `.go` файлов, sql запросы надо писать внутри \`` так `\`. То есть внутри \` с пробелом в начале и конце, а не просто строка.
- `sqlfluff` требует иметь `.sqlfluff` в директории проекта. Вот пример конфига: - `sqlfluff` требует иметь `.sqlfluff` в директории проекта. Вот пример конфига:
```toml ```toml
[sqlfluff] [sqlfluff]

View file

@ -1,24 +0,0 @@
================================================================================
INTRODUCTION *kickstart.nvim*
Kickstart.nvim is a project to help you get started on your neovim journey.
*kickstart-is-not*
It is not:
- Complete framework for every plugin under the sun
- Place to add every plugin that could ever be useful
*kickstart-is*
It is:
- Somewhere that has a good start for the most common "IDE" type features:
- autocompletion
- goto-definition
- find references
- fuzzy finding
- and hinting at what more can be done :)
- A place to _kickstart_ your journey.
- You should fork this project and use/modify it so that it matches your
style and preferences. If you don't want to do that, there are probably
other projects that would fit much better for you (and that's great!)!
vim:tw=78:ts=8:ft=help:norl:

View file

@ -1,233 +0,0 @@
# kickstart.nvim
## Introduction
A starting point for Neovim that is:
* Small
* Single-file
* Completely Documented
**NOT** a Neovim distribution, but instead a starting point for your configuration.
## Installation
### Install Neovim
Kickstart.nvim targets *only* the latest
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
If you are experiencing issues, please make sure you have the latest versions.
### Install External Dependencies
External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on platform)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
- Language Setup:
- If you want to write Typescript, you need `npm`
- If you want to write Golang, you will need `go`
- etc.
> **NOTE**
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
> and quick install snippets
### Install Kickstart
> **NOTE**
> [Backup](#FAQ) your previous configuration (if any exists)
Neovim's configurations are located under the following paths, depending on your OS:
| OS | PATH |
| :- | :--- |
| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
| Windows (cmd)| `%localappdata%\nvim\` |
| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` |
#### Recommended Step
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
so that you have your own copy that you can modify, then install by cloning the
fork to your machine using one of the commands below, depending on your OS.
> **NOTE**
> Your fork's url will be something like this:
> `https://github.com/<your_github_username>/kickstart.nvim.git`
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file
too - it's ignored in the kickstart repo to make maintenance easier, but it's
[recommmended to track it in version control](https://lazy.folke.io/usage/lockfile).
#### Clone kickstart.nvim
> **NOTE**
> If following the recommended step above (i.e., forking the repo), replace
> `nvim-lua` with `<your_github_username>` in the commands below
<details><summary> Linux and Mac </summary>
```sh
git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
```
</details>
<details><summary> Windows </summary>
If you're using `cmd.exe`:
```
git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim"
```
If you're using `powershell.exe`
```
git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim"
```
</details>
### Post Installation
Start Neovim
```sh
nvim
```
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
current plugin status. Hit `q` to close the window.
Read through the `init.lua` file in your configuration folder for more
information about extending and exploring Neovim. That also includes
examples of adding popularly requested plugins.
### Getting Started
[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
### FAQ
* What should I do if I already have a pre-existing neovim configuration?
* You should back it up and then delete all associated files.
* This includes your existing init.lua and the neovim files in `~/.local`
which can be deleted with `rm -rf ~/.local/share/nvim/`
* Can I keep my existing configuration in parallel to kickstart?
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
to maintain multiple configurations. For example, you can install the kickstart
configuration in `~/.config/nvim-kickstart` and create an alias:
```
alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
```
When you run Neovim using `nvim-kickstart` alias it will use the alternative
config directory and the matching local directory
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
distribution that you would like to try out.
* What if I want to "uninstall" this configuration:
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information
* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files?
* The main purpose of kickstart is to serve as a teaching tool and a reference
configuration that someone can easily use to `git clone` as a basis for their own.
As you progress in learning Neovim and Lua, you might consider splitting `init.lua`
into smaller parts. A fork of kickstart that does this while maintaining the
same functionality is available here:
* [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
* Discussions on this topic can be found here:
* [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
* [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
### Install Recipes
Below you can find OS specific install instructions for Neovim and dependencies.
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step.
#### Windows Installation
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
This requires:
- Install CMake and the Microsoft C++ Build Tools on Windows
```lua
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
```
</details>
<details><summary>Windows with gcc/make using chocolatey</summary>
Alternatively, one can install gcc and make which don't require changing the config,
the easiest way is to use choco:
1. install [chocolatey](https://chocolatey.org/install)
either follow the instructions on the page or use winget,
run in cmd as **admin**:
```
winget install --accept-source-agreements chocolatey.chocolatey
```
2. install all requirements using choco, exit previous cmd and
open a new one so that choco path is set, and run in cmd as **admin**:
```
choco install -y neovim git ripgrep wget fd unzip gzip mingw make
```
</details>
<details><summary>WSL (Windows Subsystem for Linux)</summary>
```
wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
#### Linux Install
<details><summary>Ubuntu Install Steps</summary>
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
<details><summary>Debian Install Steps</summary>
```
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip curl
# Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
sudo rm -rf /opt/nvim-linux64
sudo mkdir -p /opt/nvim-linux64
sudo chmod a+rX /opt/nvim-linux64
sudo tar -C /opt -xzf nvim-linux64.tar.gz
# make it available in /usr/local/bin, distro installs to /usr/bin
sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/
```
</details>
<details><summary>Fedora Install Steps</summary>
```
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
```
</details>
<details><summary>Arch Install Steps</summary>
```
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
```
</details>

View file

@ -3,7 +3,7 @@
return { return {
{ {
'mrcjkb/rustaceanvim', 'mrcjkb/rustaceanvim',
version = '^5', -- Recommended version = '^5', -- For nvim0.11 use '^6'
lazy = false, -- This plugin is already lazy lazy = false, -- This plugin is already lazy
}, },
} }

View file

@ -79,7 +79,7 @@ return {
SymbolKind.Class, SymbolKind.Class,
SymbolKind.Struct, SymbolKind.Struct,
-- SymbolKind.Variable, -- SymbolKind.Variable,
SymbolKind.Constant, -- SymbolKind.Constant,
}, },
} }
end, end,

View file

@ -263,13 +263,6 @@ return {
} }
-- C/C++ -- C/C++
-- lspconfig.ccls.setup {
-- init_options = {
-- cache = {
-- directory = ".ccls-cache";
-- };
-- }
-- }
lspconfig.clangd.setup { lspconfig.clangd.setup {
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, -- Удалил "proto" filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, -- Удалил "proto"
} }
@ -284,7 +277,7 @@ return {
} }
-- Rust -- Rust
-- lspconfig.rust_analyzer.setup {} lspconfig.rust_analyzer.setup {}
-- Bash -- Bash
lspconfig.bashls.setup { lspconfig.bashls.setup {

View file

@ -1,7 +1,7 @@
-- You can easily change to a different colorscheme. -- You can easily change to a different colorscheme.
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
-- Cмена тем тут сделана уёбищно -- Cмена тем тут сделана неудобно
-- Чтоб сменить стандартную тему, надо раскомментировать vim.cmd.colorscheme под именем темы -- Чтоб сменить стандартную тему, надо раскомментировать vim.cmd.colorscheme под именем темы
-- и закомментировать это же у прошлой темы -- и закомментировать это же у прошлой темы
@ -149,27 +149,6 @@ return {
vim.cmd.colorscheme 'gruvbox' vim.cmd.colorscheme 'gruvbox'
end, end,
}, },
{
'sainnhe/gruvbox-material',
priority = 1000,
init = function()
-- 'hard', 'medium', 'soft'
vim.g.gruvbox_material_background = 'medium'
-- 'material', 'mix', 'original'
vim.g.gruvbox_material_foreground = 'mix'
-- 'grey', 'colored', 'highlighted'
vim.g.gruvbox_material_diagnostic_virtual_text = 'colored'
vim.g.gruvbox_material_diagnostic_line_highlight = 1
vim.g.gruvbox_material_diagnostic_text_highlight = 1
-- vim.g.gruvbox_material_inlay_hints_background = 'dimmed'
-- vim.g.gruvbox_material_better_performance = 1
-- vim.g.gruvbox_material_spell_foreground = 'colored'
-- vim.g.gruvbox_material_enable_bold = 1
-- vim.g.gruvbox_material_enable_italic = true
-- vim.cmd.colorscheme 'gruvbox-material'
end,
},
{ {
'sainnhe/everforest', 'sainnhe/everforest',
priority = 1000, priority = 1000,

View file

@ -1,61 +0,0 @@
Тут будут куски текста из разных источников. Я не хочу засирать ими свои заметки, кину сюда
## На будущее
Fix C/C++ - https://www.reddit.com/r/NixOS/comments/1d7zvgu/nvim_cant_find_standard_library_headers/
Запишу некоторые комменты из этого поста на реддите
---
Haven't seen it mentioned, so here is an alternative option.
I use nix-ld which basically makes the listed libraries available in their expected locations.
The simple config below fixed Mason for me. it also works with Doom Emacs so it's a more general solution. You can add more packages to the list and any libs will be made available for all external apps.
```nix
nix-ld = {
enable = true;
libraries = with pkgs; [
stdenv.cc.cc
];
};
```
Since then, I have also been able to get X-Plane running natively by adding missing libraries to the list. It can be a bit tedious figuring out which libraries are missing and what packages need to be added, but it only needs to be done once. To figure out what libraries an app needs and which packages they belong to, do the following:
run nix-index (takes about 5 minutes) which you only need to do the first time to create a file database of nixpkgs.
Find the libraries an executable needs and whether they are found or missing. ldd ./your_executable_file
Use nix-locate to find packages that contain that library. For example: nix-locate -w ./libX11.so.6 --top-level It may show several packages.. pick the one that looks most appropriate. In this case it was xorg.libX11
Add that package to the nix-ld libraries list.
Once all libraries are added, rebuild your system.
You may need to reboot or log out and back in again before ldd will find the libraries.
The nice thing about nix-ld, is once you have a nice collection of common libraries setup, many apps will just work like on other distros.
---
Hello, sorry for the late response. I've been using that nix-ld setup for Rust, Lua, and Bash, LSPs for a while. Funnily enough it was thanks to one of your previous comments that I first tried it.
For any of the mentioned languages I didn't have to put anything into nix-ld, even the clangd LSPs in Mason installed correctly, literally the only issue is that NVim doesn't see the standard library headers. I've tried putting every package in there: clang, clang-tools, clangStdenv, libclang, and ccls.
I'm gonna be completely honest, I'm not sure I understand the instructions, especially the ldd part, I'm not sure what executable I should point to with that command.
Are there any libraries that you'd recommend I'd put in nix-ld? Like a base line?
Also as a further question. I'm not using NixOS to manage my NVim config whatsoever, meaning I just put my the nvim config into the ~/.config directory, could that be the issue, or is that ok as a practice?
---
Yeah, I'm a bit of a nix-ld fanboy as it saved NixOS for me when I was feeling like giving up.
I gotta admit, I'm not a developer, so I'm not an expert on dev tools. Maybe try creating a dev shell with nix (or a flake)? You can specify exactly what libraries you need and they should be available when you instantiate the shell.
This post on github may give you some ideas: https://github.com/NixOS/nixpkgs/issues/92739#issuecomment-861248463. It's a bit old, but it may be worth trying. Try running nvim inside of the dev shell.. maybe the standard libraries will be available then?

View file

@ -1,9 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
mkdir -p $HOME/.config/xfce4/ mkdir -p "$HOME/.config/xfce4/"
cp $HOME/nixos-private-dots/shit/helpers.rc $HOME/.config/xfce4/helpers.rc cp "$HOME/nixos-private-dots/shit/helpers.rc" "$HOME/.config/xfce4/helpers.rc"
cp $HOME/nixos-private-dots/shit/mimeapps.list $HOME/.config/mimeapps.list cp "$HOME/nixos-private-dots/shit/mimeapps.list" "$HOME/.config/mimeapps.list"
cp -r $HOME/nixos-private-dots/shit/Kvantum $HOME/.config/Kvantum cp -r "$HOME/nixos-private-dots/shit/Kvantum" "$HOME/.config/Kvantum"
cp -r $HOME/nixos-private-dots/shit/qt5ct $HOME/.config/qt5ct cp -r "$HOME/nixos-private-dots/shit/qt5ct" "$HOME/.config/qt5ct"
cp -r $HOME/nixos-private-dots/shit/qt6ct $HOME/.config/qt6ct cp -r "$HOME/nixos-private-dots/shit/qt6ct" "$HOME/.config/qt6ct"

View file

@ -1,94 +1,94 @@
[Added Associations] [Added Associations]
application/json=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop application/json=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop;
application/x-sh=nvim.desktop;code.desktop application/x-sh=nvim.desktop;code.desktop;
application/x-shellscript=nvim.desktop;code.desktop application/x-shellscript=nvim.desktop;code.desktop;
application/xml=nvim.desktop;code.desktop application/xml=nvim.desktop;code.desktop;
application/yaml=nvim.desktop;code.desktop application/yaml=nvim.desktop;code.desktop;
image/*=com.interversehq.qView.desktop;imv.desktop image/*=com.interversehq.qView.desktop;imv-dir.desktop;
image/apng=com.interversehq.qView.desktop;imv.desktop image/apng=com.interversehq.qView.desktop;imv-dir.desktop;
image/avif=com.interversehq.qView.desktop;imv.desktop image/avif=com.interversehq.qView.desktop;imv-dir.desktop;
image/gif=com.interversehq.qView.desktop;imv.desktop image/gif=com.interversehq.qView.desktop;imv-dir.desktop;
image/jpeg=;com.interversehq.qView.desktop;imv.desktop; image/jpeg=;com.interversehq.qView.desktop;imv-dir.desktop;
image/pjpeg=com.interversehq.qView.desktop;imv.desktop image/pjpeg=com.interversehq.qView.desktop;imv-dir.desktop;
image/png=com.interversehq.qView.desktop;imv.desktop;; image/png=com.interversehq.qView.desktop;imv-dir.desktop;
image/svg+xml=com.interversehq.qView.desktop;imv.desktop image/svg+xml=com.interversehq.qView.desktop;imv-dir.desktop;
image/vnd.microsoft.icon=com.interversehq.qView.desktop;imv.desktop image/vnd.microsoft.icon=com.interversehq.qView.desktop;imv-dir.desktop;
image/webp=com.interversehq.qView.desktop;imv.desktop image/webp=com.interversehq.qView.desktop;imv-dir.desktop;
image/x-icon=com.interversehq.qView.desktop;imv.desktop image/x-icon=com.interversehq.qView.desktop;imv-dir.desktop;
text/*=nvim.desktop;code.desktop text/*=nvim.desktop;code.desktop;
text/css=nvim.desktop;code.desktop text/css=nvim.desktop;code.desktop;
text/csv=nvim.desktop;code.desktop text/csv=nvim.desktop;code.desktop;
text/html=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop text/html=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop;
text/javascript=nvim.desktop;code.desktop text/javascript=nvim.desktop;code.desktop;
text/markdown=nvim.desktop;code.desktop text/markdown=nvim.desktop;code.desktop;
text/plain=nvim.desktop;code.desktop text/plain=nvim.desktop;code.desktop;
text/x-asm=nvim.desktop;code.desktop text/x-asm=nvim.desktop;code.desktop;
text/x-c=nvim.desktop;code.desktop text/x-c=nvim.desktop;code.desktop;
text/x-python=nvim.desktop;code.desktop text/x-python=nvim.desktop;code.desktop;
[Default Applications] [Default Applications]
application/json=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop application/json=nvim.desktop;code.desktop;librewolf.desktop;firefox.desktop;chromium.desktop;
application/pdf=org.gnome.Evince.desktop application/pdf=org.gnome.Evince.desktop;
application/x-bittorrent=qbittorrent.desktop application/x-bittorrent=qbittorrent.desktop;
application/x-extension-htm=librewolf.desktop application/x-extension-htm=librewolf.desktop;
application/x-extension-html=librewolf.desktop application/x-extension-html=librewolf.desktop;
application/x-extension-shtml=librewolf.desktop application/x-extension-shtml=librewolf.desktop;
application/x-extension-xht=librewolf.desktop application/x-extension-xht=librewolf.desktop;
application/x-extension-xhtml=librewolf.desktop application/x-extension-xhtml=librewolf.desktop;
application/x-sh=nvim.desktop;code.desktop application/x-sh=nvim.desktop;code.desktop;
application/x-shellscript=nvim.desktop;code.desktop application/x-shellscript=nvim.desktop;code.desktop;
application/x-zerosize=nvim.desktop;code.desktop application/x-zerosize=nvim.desktop;code.desktop;
application/xhtml+xml=librewolf.desktop application/xhtml+xml=librewolf.desktop;
application/xml=nvim.desktop;code.desktop application/xml=nvim.desktop;code.desktop;
application/yaml=nvim.desktop;code.desktop application/yaml=nvim.desktop;code.desktop;
application/zip=ark.desktop application/zip=ark.desktop;
audio/*=mpv.desktop audio/*=mpv.desktop;
audio/aac=mpv.desktop audio/aac=mpv.desktop;
audio/flac=mpv.desktop audio/flac=mpv.desktop;
audio/mp4=mpv.desktop audio/mp4=mpv.desktop;
audio/mpeg=mpv.desktop audio/mpeg=mpv.desktop;
audio/ogg=mpv.desktop audio/ogg=mpv.desktop;
audio/opus=mpv.desktop audio/opus=mpv.desktop;
audio/vnd.wav=mpv.desktop audio/vnd.wav=mpv.desktop;
audio/webm=mpv.desktop audio/webm=mpv.desktop;
audio/x-matroska=mpv.desktop audio/x-matroska=mpv.desktop;
audio/x-mpegurl=mpv.desktop audio/x-mpegurl=mpv.desktop;
audio/x-opus+ogg=mpv.desktop audio/x-opus+ogg=mpv.desktop;
image/*=com.interversehq.qView.desktop;imv.desktop image/*=com.interversehq.qView.desktop;imv-dir.desktop;
image/apng=com.interversehq.qView.desktop;imv.desktop image/apng=com.interversehq.qView.desktop;imv-dir.desktop;
image/avif=com.interversehq.qView.desktop;imv.desktop image/avif=com.interversehq.qView.desktop;imv-dir.desktop;
image/gif=com.interversehq.qView.desktop;imv.desktop image/gif=com.interversehq.qView.desktop;imv-dir.desktop;
image/jpeg=com.interversehq.qView.desktop;imv.desktop image/jpeg=com.interversehq.qView.desktop;imv-dir.desktop;
image/pjpeg=com.interversehq.qView.desktop;imv.desktop image/pjpeg=com.interversehq.qView.desktop;imv-dir.desktop;
image/png=com.interversehq.com.interversehq.qView.desktop image/png=com.interversehq.com.interversehq.qView.desktop;
image/svg+xml=com.interversehq.qView.desktop;imv.desktop image/svg+xml=com.interversehq.qView.desktop;imv-dir.desktop;
image/vnd.microsoft.icon=com.interversehq.qView.desktop;imv.desktop image/vnd.microsoft.icon=com.interversehq.qView.desktop;imv-dir.desktop;
image/webp=com.interversehq.qView.desktop;imv.desktop image/webp=com.interversehq.qView.desktop;imv-dir.desktop;
image/x-icon=com.interversehq.qView.desktop;imv.desktop image/x-icon=com.interversehq.qView.desktop;imv-dir.desktop;
inode/directory=thunar.desktop inode/directory=thunar.desktop;
text/*=nvim.desktop;code.desktop text/*=nvim.desktop;code.desktop;
text/css=nvim.desktop;code.desktop text/css=nvim.desktop;code.desktop;
text/csv=nvim.desktop;code.desktop text/csv=nvim.desktop;code.desktop;
text/html=librewolf.desktop;firefox.desktop;chromium.desktop;nvim.desktop;code.desktop text/html=librewolf.desktop;firefox.desktop;chromium.desktop;nvim.desktop;code.desktop;
text/javascript=nvim.desktop;code.desktop text/javascript=nvim.desktop;code.desktop;
text/markdown=nvim.desktop;code.desktop text/markdown=nvim.desktop;code.desktop;
text/plain=nvim.desktop;code.desktop text/plain=nvim.desktop;code.desktop;
text/x-asm=nvim.desktop;code.desktop text/x-asm=nvim.desktop;code.desktop;
text/x-c=nvim.desktop;code.desktop text/x-c=nvim.desktop;code.desktop;
text/x-python=nvim.desktop;code.desktop text/x-python=nvim.desktop;code.desktop;
video/*=mpv.desktop video/*=mpv.desktop;
video/mp4=mpv.desktop video/mp4=mpv.desktop;
video/mpeg=mpv.desktop video/mpeg=mpv.desktop;
video/quicktime=mpv.desktop video/quicktime=mpv.desktop;
video/webm=mpv.desktop video/webm=mpv.desktop;
video/x-matroska=mpv.desktop video/x-matroska=mpv.desktop;
x-scheme-handler/about=librewolf.desktop x-scheme-handler/about=librewolf.desktop;
x-scheme-handler/chrome=librewolf.desktop x-scheme-handler/chrome=librewolf.desktop;
x-scheme-handler/http=librewolf.desktop x-scheme-handler/http=librewolf.desktop;
x-scheme-handler/https=librewolf.desktop x-scheme-handler/https=librewolf.desktop;
x-scheme-handler/jetbrains=jetbrains-toolbox.desktop x-scheme-handler/jetbrains=jetbrains-toolbox.desktop;
x-scheme-handler/magnet=qbittorrent.desktop x-scheme-handler/magnet=qbittorrent.desktop;
x-scheme-handler/mailto=thunderbird.desktop x-scheme-handler/mailto=thunderbird.desktop;
x-scheme-handler/unknown=librewolf.desktop x-scheme-handler/unknown=librewolf.desktop;
[Removed Associations] [Removed Associations]