new public version
This commit is contained in:
parent
0a275a2a0d
commit
fad54c5aff
105 changed files with 3943 additions and 2736 deletions
107
BINDINGS.md
Normal file
107
BINDINGS.md
Normal 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 | Да |
|
||||||
|
|
||||||
|
Так же есть бинд на зажим дальней боковой кнопки мыши. Если эту кнопку нажимать, то она работает как обычно. Если её зажать и начать двигать мышку, то вместо движения курсора будет плавный скрол. Обычно такое делают на трекболах без колеса мыши, но я люблю этот метод скрола на любом девайсе. Можно скролить с нужной скоростью и точностью куда надо без долгого кручения колеса.
|
||||||
320
NOTES.md
Normal file
320
NOTES.md
Normal file
|
|
@ -0,0 +1,320 @@
|
||||||
|
Тут будут всякие заметки и доп информация по работе с 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 пропадает. Приходится стопать и по новой запускать отображение
|
||||||
|
|
||||||
|
## Как я тестирую разный новый софт
|
||||||
|
|
||||||
|
Для этого создаю каталог, а в нём файл `flake.nix` с таким содержимым:
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
description = "Development shell for my project";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, ... }@inputs:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
# pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
rocmSupport = true;
|
||||||
|
permittedInsecurePackages = [
|
||||||
|
"python-2.7.18.8"
|
||||||
|
"electron-25.9.0"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
inherit config;
|
||||||
|
};
|
||||||
|
spkgs = import inputs.nixpkgs-stable {
|
||||||
|
inherit system;
|
||||||
|
inherit config;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
devShells.${system}.default =
|
||||||
|
pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
planify
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
echo "Welcome to Dev Shell"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Сюда можно ставить разный софт из нужной версии репы. Чтоб зайти в этот шел, заходишь в каталог с этим файлом и пишешь `nix develop`. Теперь весь софт из этого `flake.nix` будет доступен именно в этом терминале. Если хочется обновить весь софт в этом шеле до последней версии, то я просто удаляю файл `flake.lock` и снова пишу `nix develop`. Чтоб выйти из шела, можно написать `exit`. Если shell использует стандартный bash, то зайти в zsh можно командой `zsh`.
|
||||||
|
|
||||||
|
Например, я разрабатывал GUI на fyne. Это либа для golang, чтоб GUI приложения делать. Она на nixos требует пробрасывть зависимости через nix shell, который в конечном итоге выглядел так:
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
description = "Development shell for my project";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in {
|
||||||
|
devShells.${system}.default =
|
||||||
|
pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
# Fyne
|
||||||
|
libGL
|
||||||
|
pkg-config
|
||||||
|
xorg.libX11.dev
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXinerama
|
||||||
|
xorg.libXrandr
|
||||||
|
xorg.libXxf86vm
|
||||||
|
fyne
|
||||||
|
|
||||||
|
# Avif
|
||||||
|
libaom
|
||||||
|
|
||||||
|
# Video
|
||||||
|
glib
|
||||||
|
glib.dev
|
||||||
|
gst_all_1.gstreamer
|
||||||
|
gst_all_1.gst-plugins-base
|
||||||
|
gst_all_1.gst-plugins-good
|
||||||
|
gst_all_1.gst-plugins-bad
|
||||||
|
gst_all_1.gst-plugins-ugly
|
||||||
|
gst_all_1.gst-libav
|
||||||
|
];
|
||||||
|
|
||||||
|
# Чтобы pkg-config видел .pc-файлы, и GStreamer загружал плагины
|
||||||
|
PKG_CONFIG_PATH = pkgs.lib.concatStringsSep ":" [
|
||||||
|
"${pkgs.glib.dev}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gstreamer}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gst-plugins-base}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gst-plugins-good}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gst-plugins-bad}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gst-plugins-ugly}/lib/pkgconfig"
|
||||||
|
"${pkgs.gst_all_1.gst-libav}/lib/pkgconfig"
|
||||||
|
];
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE = [ "-I${pkgs.glib.dev}/include" ];
|
||||||
|
NIX_LDFLAGS = [ "-L${pkgs.glib.out}/lib" ];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
zsh
|
||||||
|
echo "Welcome to Dev Shell"
|
||||||
|
export LD_LIBRARY_PATH=${pkgs.wayland}/lib:${pkgs.lib.getLib pkgs.libGL}/lib:${pkgs.lib.getLib pkgs.libGL}/lib:$LD_LIBRARY_PATH
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
Необходимые пакеты я подбирал методом тыка, читая ошибки при попытке компилировать
|
||||||
34
PROBLEMS.md
Normal file
34
PROBLEMS.md
Normal 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`. Когда я его удалил, то всё стало работать нормально
|
||||||
453
README.md
453
README.md
|
|
@ -1,302 +1,27 @@
|
||||||
## Навигация
|
## Навигация
|
||||||
|
|
||||||
- [Бинды](#бинды)
|
|
||||||
- [Другие 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, NeoVim | Да |
|
|
||||||
| `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)
|
||||||
|
- [Список базового софта в системе и доп информация](./NOTES.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)
|
||||||
## Проблемы
|
|
||||||
|
|
||||||
- Некоторые симлинки, созданные через 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
|
|
||||||
```
|
|
||||||
|
|
||||||
## Нюансы с 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 ветке, ибо параметры могут отличаться.
|
||||||
|
|
@ -304,7 +29,7 @@ xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2
|
||||||
|
|
||||||
## Процесс установки
|
## Процесс установки
|
||||||
|
|
||||||
Сначала качаем nixos kde или nixos gnome вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE.
|
Сначала качаем NixOS GUI вариант и устанавливаем систему через визуальный установщик. При установке выбираем минимальный вариант, без DE.
|
||||||
|
|
||||||
Кто-то говорит, что потом достаточно просто забилдить одной командой чужой конфиг, но это не так. Будет ошибка, что нет гита. Если использовать nix-shell для гита, то скажет, что нет экспериментальной функции. Либо писать огромную команду, либо, как советую сделать я, изменить стоковый конфиг никса. Для этого пишем следующее:
|
Кто-то говорит, что потом достаточно просто забилдить одной командой чужой конфиг, но это не так. Будет ошибка, что нет гита. Если использовать nix-shell для гита, то скажет, что нет экспериментальной функции. Либо писать огромную команду, либо, как советую сделать я, изменить стоковый конфиг никса. Для этого пишем следующее:
|
||||||
|
|
||||||
|
|
@ -340,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`.
|
||||||
|
|
@ -349,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`.
|
||||||
|
|
@ -378,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
|
||||||
|
|
@ -390,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
|
||||||
|
|
@ -404,12 +129,14 @@ gpg --edit-key ID-ключа
|
||||||
|
|
||||||
## Изменения для виртуалок
|
## Изменения для виртуалок
|
||||||
|
|
||||||
|
Виртуалка требует минимум 100гб памяти. Если хочешь меньше, то удали огромную кучу софта из конфигов, который тебе не нужен на виртуалке.
|
||||||
|
|
||||||
Это надо, чтоб включить коннект по ssh к виртуалке и сделать с ней общий буфер обмена. Ну и ещё параметры экрана меняю на один 1080p монитор на 60 герц.
|
Это надо, чтоб включить коннект по ssh к виртуалке и сделать с ней общий буфер обмена. Ну и ещё параметры экрана меняю на один 1080p монитор на 60 герц.
|
||||||
|
|
||||||
В файле `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
|
||||||
|
|
@ -424,149 +151,11 @@ 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" # Для виртуалки
|
|
||||||
];
|
|
||||||
```
|
```
|
||||||
|
В файле `modules/nixos/xserver.nix` закомментировать эти строки, даже если amd gpu на хосте:
|
||||||
## Запуск Waydroid на X11
|
```diff
|
||||||
|
- videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
|
||||||
Один раз написать в терминале `waydroid init`
|
- deviceSection = ''Option "TearFree" "True"'';
|
||||||
|
+ # videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
|
||||||
- Запустить `weston`
|
+ # deviceSection = ''Option "TearFree" "True"'';
|
||||||
- В его терминале написать `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-компоненты.
|
|
||||||
|
|
|
||||||
130
THEMES.md
Normal file
130
THEMES.md
Normal 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Батарейки
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Батарейки зарядка
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Батарейки блютуз
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Температура
|
||||||
|
- Температура по цельсию
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
Тут будут файлы, которые больше не нужны. Но может быть они мне пригодятся в будущем.
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# Пока что передумал настраивать браузер. Бекаплю каталог целиком
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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 = ./?;
|
|
||||||
}
|
|
||||||
105
archive/bspwmrc
105
archive/bspwmrc
|
|
@ -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
|
|
||||||
|
|
@ -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" = [ "qview.desktop" "imv.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" ]; # Надо ли заменять nvim и всё что ниже на NixVim?
|
|
||||||
"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" = [ "qview.desktop" "imv.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" ]; # Надо ли заменять nvim и всё что ниже на NixVim?
|
|
||||||
"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" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
{ pkgs, ... }: {
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
shellAliases = let
|
|
||||||
flakeDir = "~/dots";
|
|
||||||
in {
|
|
||||||
rb = "sudo nixos-rebuild switch --flake ${flakeDir}"; # Применить новый конфиг
|
|
||||||
|
|
||||||
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
|
|
||||||
upg = "sudo nixos-rebuild switch --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
|
|
||||||
|
|
||||||
# Возможно это аналог "sudo pacman -Sy". Обновить репозиторий, чтоб потом на него обновиться? Пакеты не обновляет
|
|
||||||
upd = "nix flake update ${flakeDir}"; # Обновляет flake.lock на последние коммиты с гитхаба?
|
|
||||||
|
|
||||||
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
|
|
||||||
|
|
||||||
v = "nvim";
|
|
||||||
t = "timer";
|
|
||||||
r = "ranger";
|
|
||||||
ff = "fastfetch";
|
|
||||||
yt = "cd /mnt/backups/Media/yt-dlp"; # Бекапить YouTube
|
|
||||||
qb = "cd /mnt/backups/Media/Music/Qobux/qdl"; # Бекапить музыку с Qobuz
|
|
||||||
};
|
|
||||||
|
|
||||||
# Всё, что в комментах ниже, лишнее. Я нашёл норм способ. Пишем "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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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>
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
require("starship"):setup()
|
|
||||||
require("full-border"):setup()
|
|
||||||
|
|
@ -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"
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
# exifaudio.yazi
|
|
||||||
|
|
||||||
Preview audio metadata and cover on [Yazi](https://github.com/sxyazi/yazi).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# full-border.yazi
|
|
||||||
|
|
||||||
Add a full border to Yazi to make it look fancier.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
@ -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 }
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -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`.
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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)`
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
# ouch.yazi
|
|
||||||
|
|
||||||
[ouch](https://github.com/ouch-org/ouch) plugin for [Yazi](https://github.com/sxyazi/yazi).
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 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" },
|
|
||||||
]
|
|
||||||
```
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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.
|
|
||||||
|
|
@ -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)
|
|
||||||
|
|
@ -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,
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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" },
|
|
||||||
]
|
|
||||||
279
flake.lock
generated
279
flake.lock
generated
|
|
@ -5,11 +5,11 @@
|
||||||
"fromYaml": "fromYaml"
|
"fromYaml": "fromYaml"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708890466,
|
"lastModified": 1732200724,
|
||||||
"narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=",
|
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
|
||||||
"owner": "SenchoPens",
|
"owner": "SenchoPens",
|
||||||
"repo": "base16.nix",
|
"repo": "base16.nix",
|
||||||
"rev": "665b3c6748534eb766c777298721cece9453fdae",
|
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -34,30 +34,14 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base16-foot": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696725948,
|
|
||||||
"narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-foot",
|
|
||||||
"rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-foot",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-helix": {
|
"base16-helix": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720809814,
|
"lastModified": 1725860795,
|
||||||
"narHash": "sha256-numb3xigRGnr/deF7wdjBwVg7fpbTH7reFDkJ75AJkY=",
|
"narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-helix",
|
"repo": "base16-helix",
|
||||||
"rev": "34f41987bec14c0f3f6b2155c19787b1f6489625",
|
"rev": "7f795bf75d38e0eea9fed287264067ca187b88a9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -66,46 +50,14 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base16-kitty": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1665001328,
|
|
||||||
"narHash": "sha256-aRaizTYPpuWEcvoYE9U+YRX+Wsc8+iG0guQJbvxEdJY=",
|
|
||||||
"owner": "kdrag0n",
|
|
||||||
"repo": "base16-kitty",
|
|
||||||
"rev": "06bb401fa9a0ffb84365905ffbb959ae5bf40805",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "kdrag0n",
|
|
||||||
"repo": "base16-kitty",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-tmux": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696725902,
|
|
||||||
"narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=",
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-tmux",
|
|
||||||
"rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "tinted-theming",
|
|
||||||
"repo": "base16-tmux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"base16-vim": {
|
"base16-vim": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716150083,
|
"lastModified": 1731949548,
|
||||||
"narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=",
|
"narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=",
|
||||||
"owner": "tinted-theming",
|
"owner": "tinted-theming",
|
||||||
"repo": "base16-vim",
|
"repo": "base16-vim",
|
||||||
"rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d",
|
"rev": "61165b1632409bd55e530f3dbdd4477f011cadc6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -117,11 +69,11 @@
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -130,6 +82,24 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741352980,
|
||||||
|
"narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": [
|
"systems": [
|
||||||
|
|
@ -138,11 +108,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -154,11 +124,11 @@
|
||||||
"fromYaml": {
|
"fromYaml": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689549921,
|
"lastModified": 1731966426,
|
||||||
"narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=",
|
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
|
||||||
"owner": "SenchoPens",
|
"owner": "SenchoPens",
|
||||||
"repo": "fromYaml",
|
"repo": "fromYaml",
|
||||||
"rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84",
|
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -170,16 +140,16 @@
|
||||||
"gnome-shell": {
|
"gnome-shell": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713702291,
|
"lastModified": 1732369855,
|
||||||
"narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=",
|
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934",
|
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "GNOME",
|
"owner": "GNOME",
|
||||||
"ref": "46.1",
|
"ref": "47.2",
|
||||||
"repo": "gnome-shell",
|
"repo": "gnome-shell",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -191,11 +161,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725831139,
|
"lastModified": 1733484277,
|
||||||
"narHash": "sha256-9syY5nEehCswE8AMcjpUO4T0iX9nrNbzq69Kqcs92L0=",
|
"narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "8a175a89137fe798b33c476d4dae17dba5fb3fd3",
|
"rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -212,11 +182,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724435763,
|
"lastModified": 1733085484,
|
||||||
"narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=",
|
"narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be",
|
"rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -225,13 +195,79 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-gaming": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1741657497,
|
||||||
|
"narHash": "sha256-2X7d94f9QcRnBKz1jJQfumATe8w4gXjwRly150ERnek=",
|
||||||
|
"owner": "fufexan",
|
||||||
|
"repo": "nix-gaming",
|
||||||
|
"rev": "64a949349294543a48b3f946c9fca84332d1398b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "fufexan",
|
||||||
|
"repo": "nix-gaming",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725634671,
|
"lastModified": 1741678040,
|
||||||
"narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=",
|
"narHash": "sha256-rmBsz7BBcDwfvDkxnKHmolKceGJrr0nyz5PQYZg0kMk=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3ee8818da146871cd570b164fc4f438f78479a50",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1740877520,
|
||||||
|
"narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"rev": "147dee35aab2193b174e4c0868bd80ead5ce755c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixpkgs.lib",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733412085,
|
||||||
|
"narHash": "sha256-FillH0qdWDt/nlO6ED7h4cmN+G9uXwGjwmCnHs0QVYM=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c",
|
"rev": "4dc2fc4e62dbf62b84132fe526356fbac7b03541",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1753939845,
|
||||||
|
"narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "94def634a20494ee057c76998843c015909d6311",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -243,16 +279,16 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725194671,
|
"lastModified": 1733392399,
|
||||||
"narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=",
|
"narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c",
|
"rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixpkgs-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
|
@ -260,7 +296,10 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nix-gaming": "nix-gaming",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"nixpkgs2": "nixpkgs2",
|
||||||
"stylix": "stylix"
|
"stylix": "stylix"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -268,24 +307,26 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"base16": "base16",
|
"base16": "base16",
|
||||||
"base16-fish": "base16-fish",
|
"base16-fish": "base16-fish",
|
||||||
"base16-foot": "base16-foot",
|
|
||||||
"base16-helix": "base16-helix",
|
"base16-helix": "base16-helix",
|
||||||
"base16-kitty": "base16-kitty",
|
|
||||||
"base16-tmux": "base16-tmux",
|
|
||||||
"base16-vim": "base16-vim",
|
"base16-vim": "base16-vim",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": [
|
||||||
"systems": "systems"
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems",
|
||||||
|
"tinted-foot": "tinted-foot",
|
||||||
|
"tinted-kitty": "tinted-kitty",
|
||||||
|
"tinted-tmux": "tinted-tmux"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725290973,
|
"lastModified": 1733510476,
|
||||||
"narHash": "sha256-+jwXF9KI0HfvDgpsoJGvOdfOGGSKOrID1wQB79zjUbo=",
|
"narHash": "sha256-RH/8yIuo+fNLCjQ6e1mnXwmmxymjvfWC9JcbDuIA8TM=",
|
||||||
"owner": "danth",
|
"owner": "danth",
|
||||||
"repo": "stylix",
|
"repo": "stylix",
|
||||||
"rev": "ef81ad9e85e60420cc83d4642619c14b57139d33",
|
"rev": "e309d64fe7f203274a7913e1d2b74307d15ba122",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -308,6 +349,56 @@
|
||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"tinted-foot": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726913040,
|
||||||
|
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-foot",
|
||||||
|
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-kitty": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1716423189,
|
||||||
|
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-kitty",
|
||||||
|
"rev": "eb39e141db14baef052893285df9f266df041ff8",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tinted-tmux": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1729501581,
|
||||||
|
"narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=",
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "tinted-theming",
|
||||||
|
"repo": "tinted-tmux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|
|
||||||
46
flake.nix
46
flake.nix
|
|
@ -3,7 +3,11 @@
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
# nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
|
# Вторая unstable ветка, которую я буду обновлять отдельно
|
||||||
|
# Нужна если я не хочу обновлять систему, но хочу обновить конкретный софт
|
||||||
|
# Просто задам этому софту репу pkgs2 и обновлю только её
|
||||||
|
nixpkgs2.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
|
|
@ -12,34 +16,43 @@
|
||||||
|
|
||||||
stylix = {
|
stylix = {
|
||||||
url = "github:danth/stylix";
|
url = "github:danth/stylix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix-gaming = { # Удобно ставить некоторые игры
|
||||||
|
url = "github:fufexan/nix-gaming";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# nix-gaming = { # Удобно ставить некоторые игры
|
|
||||||
# url = "github:fufexan/nix-gaming";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
|
|
||||||
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 = {
|
||||||
|
allowUnfree = true;
|
||||||
|
rocmSupport = true;
|
||||||
|
permittedInsecurePackages = [
|
||||||
|
"python-2.7.18.8"
|
||||||
|
"electron-25.9.0"
|
||||||
|
];
|
||||||
|
};
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
config = {
|
inherit config;
|
||||||
allowUnfree = true;
|
};
|
||||||
permittedInsecurePackages = [
|
pkgs2 = import inputs.nixpkgs2 {
|
||||||
"python-2.7.18.8"
|
inherit system;
|
||||||
"electron-25.9.0"
|
inherit config;
|
||||||
];
|
};
|
||||||
};
|
spkgs = import inputs.nixpkgs-stable {
|
||||||
|
inherit system;
|
||||||
|
inherit config;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixos = nixpkgs.lib.nixosSystem {
|
nixos = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {inherit inputs;};
|
specialArgs = { inherit spkgs; inherit pkgs2; inherit inputs; };
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = [
|
modules = [
|
||||||
|
|
@ -48,7 +61,6 @@
|
||||||
inputs.stylix.nixosModules.stylix
|
inputs.stylix.nixosModules.stylix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -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
|
|
||||||
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,10 @@
|
||||||
tamasfe.even-better-toml # Fully-featured TOML support
|
tamasfe.even-better-toml # Fully-featured TOML support
|
||||||
ms-python.python # Python language support
|
ms-python.python # Python language support
|
||||||
golang.go # Rich Go language support
|
golang.go # Rich Go language support
|
||||||
|
mechatroner.rainbow-csv # Rainbow syntax higlighting for CSV and TSV files
|
||||||
|
# redhat.vscode-xml # XML Language Support by Red Hat
|
||||||
|
# dotjoshjohnson.xml # XML Tools
|
||||||
|
# bradlc.vscode-tailwindcss # Tailwind CSS tooling
|
||||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ # Руками с гита ставить
|
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ # Руками с гита ставить
|
||||||
{ # https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode
|
{ # https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode
|
||||||
name = "language-hugo-vscode";
|
name = "language-hugo-vscode";
|
||||||
|
|
@ -28,12 +32,30 @@
|
||||||
version = "1.3.1";
|
version = "1.3.1";
|
||||||
sha256 = "f5da7cfe02c06fc3899e6b0b55b380280619e7085abcf5b6024f9684ba846c99";
|
sha256 = "f5da7cfe02c06fc3899e6b0b55b380280619e7085abcf5b6024f9684ba846c99";
|
||||||
}
|
}
|
||||||
{ # https://marketplace.visualstudio.com/items?itemName=Codeium.codeium
|
# { # https://marketplace.visualstudio.com/items?itemName=dlasagno.rasi
|
||||||
name = "codeium";
|
# name = "rasi";
|
||||||
publisher = "Codeium";
|
# publisher = "dlasagno";
|
||||||
version = "1.11.9";
|
# version = "1.0.0";
|
||||||
sha256 = "0e07e78e487418d0c5289eeb2c530dd7dd18f82612e46c8b177f2a1f95acb730";
|
# sha256 = "b3ad1a95e8f770d01b489c6c4652111364216baa00b2670e05b5a8aa9fb0e9f9";
|
||||||
}
|
# }
|
||||||
|
# { # https://marketplace.visualstudio.com/items?itemName=a-h.templ
|
||||||
|
# name = "templ";
|
||||||
|
# publisher = "a-h";
|
||||||
|
# version = "0.0.29";
|
||||||
|
# sha256 = "459fbec312f63aa061de188b030288c3940b8d4fe29ac2bb8ab4141db27fb6a3";
|
||||||
|
# }
|
||||||
|
# { # https://marketplace.visualstudio.com/items?itemName=CraigRBroughton.htmx-attributes
|
||||||
|
# name = "htmx-attributes";
|
||||||
|
# publisher = "CraigRBroughton";
|
||||||
|
# version = "0.8.0";
|
||||||
|
# sha256 = "4ec7a63d992ad99d77fef6a145a3fbcf6d3a0496826754d1e8e56fe9a783bf29";
|
||||||
|
# }
|
||||||
|
# { # https://marketplace.visualstudio.com/items?itemName=Codeium.codeium
|
||||||
|
# name = "codeium";
|
||||||
|
# publisher = "Codeium";
|
||||||
|
# version = "1.29.2";
|
||||||
|
# sha256 = "86e075c4fd0d60f7fa7b32e497260a86a94ec812d95e3d9f058ce45e77648f89";
|
||||||
|
# }
|
||||||
];
|
];
|
||||||
|
|
||||||
# userSettings = {
|
# userSettings = {
|
||||||
|
|
@ -41,11 +63,12 @@
|
||||||
# "update.showReleaseNotes" = false;
|
# "update.showReleaseNotes" = false;
|
||||||
# "workbench.colorTheme" = "Gruvbox Dark Medium";
|
# "workbench.colorTheme" = "Gruvbox Dark Medium";
|
||||||
# "editor.fontFamily" = "JetBrainsMono Nerd Font";
|
# "editor.fontFamily" = "JetBrainsMono Nerd Font";
|
||||||
|
# "editor.lineNumbers" = "relative";
|
||||||
# };
|
# };
|
||||||
|
|
||||||
globalSnippets = {};
|
# globalSnippets = {};
|
||||||
|
|
||||||
languageSnippets = {};
|
# languageSnippets = {};
|
||||||
|
|
||||||
# keybindings = [
|
# keybindings = [
|
||||||
# {
|
# {
|
||||||
|
|
@ -55,4 +78,4 @@
|
||||||
# }
|
# }
|
||||||
# ];
|
# ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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`
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
{ pkgs, ... }: {
|
{
|
||||||
programs.mpv.enable = true;
|
programs.mpv.enable = true;
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
# Решил нужные зависимости писать в packages.nix
|
||||||
yt-dlp # Смотреть онлайн видео через mpv
|
# packages = with pkgs; [
|
||||||
xclip # Буфер обмена на x11 для некоторых плагинов
|
# yt-dlp # Смотреть онлайн видео через mpv
|
||||||
#wl-clipboard # Буфер обмена на wayland для некоторых плагинов
|
# xclip # Буфер обмена на x11 для некоторых плагинов
|
||||||
];
|
# #wl-clipboard # Буфер обмена на wayland для некоторых плагинов
|
||||||
|
# ];
|
||||||
|
|
||||||
file = {
|
file = {
|
||||||
".config/mpv/mpv.conf".source = ./mpv.conf;
|
".config/mpv/mpv.conf".source = ./mpv.conf;
|
||||||
|
|
@ -16,4 +17,4 @@
|
||||||
".config/mpv/fonts".source = ./fonts;
|
".config/mpv/fonts".source = ./fonts;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@
|
||||||
#wlrobs # Allows you to screen capture on wlroots based wayland compositors
|
#wlrobs # Allows you to screen capture on wlroots based wayland compositors
|
||||||
obs-vkcapture # Linux Vulkan/OpenGL game capture
|
obs-vkcapture # Linux Vulkan/OpenGL game capture
|
||||||
#obs-vaapi # VAAPI support via GStreamer. FFMPEG VAAPI implementation shows performance bottlenecks on some AMD hardware.
|
#obs-vaapi # VAAPI support via GStreamer. FFMPEG VAAPI implementation shows performance bottlenecks on some AMD hardware.
|
||||||
#obs-tuna # Выводить инфу о треке, который сейчас играет
|
|
||||||
#obs-pipewire-audio-capture # Capture using PipeWire (разве этого нет в сток обс?)
|
#obs-pipewire-audio-capture # Capture using PipeWire (разве этого нет в сток обс?)
|
||||||
#obs-mute-filter # Mute audio of a source
|
#obs-mute-filter # Mute audio of a source
|
||||||
#obs-multi-rtmp # Multi-site simultaneous broadcast. Имба? Рестрим локальный?
|
#obs-multi-rtmp # Multi-site simultaneous broadcast. Имба? Рестрим локальный?
|
||||||
|
|
@ -17,4 +16,4 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# home.file."config?".source = ./config?; # Мб потом добавлю конфиги obs сюда
|
# home.file."config?".source = ./config?; # Мб потом добавлю конфиги obs сюда
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, spkgs, ... }: {
|
||||||
programs.ranger = { # Файловый менеджер в терминале
|
programs.ranger = { # Файловый менеджер в терминале
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
lynx # Preview html pages
|
lynx # Preview html pages
|
||||||
poppler # Preview PDF
|
poppler # Preview PDF
|
||||||
djvulibre # Preview djvu
|
djvulibre # Preview djvu
|
||||||
calibre # Preview ebooks (or epub-thumbnailer)
|
spkgs.calibre # Preview ebooks (or epub-thumbnailer)
|
||||||
catdoc # Preview XLS as csv conversion
|
catdoc # Preview XLS as csv conversion
|
||||||
exiftool # Information about media files
|
exiftool # Information about media files
|
||||||
odt2txt # For OpenDocument text files
|
odt2txt # For OpenDocument text files
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,16 @@
|
||||||
# Надо удалить оригинальный файл, прежде чем делать симлинк
|
# Надо удалить оригинальный файл, прежде чем делать симлинк
|
||||||
# Некоторые проги клали хуй на симлинки и заменяют их своими файлами
|
# Некоторые проги забивают на симлинки и заменяют их своими файлами (например thunar)
|
||||||
# Таких прог я ебал рот и проклинал хуесосов разработчиков
|
# Тут уж ничего не поделать, придётся руками настраивать
|
||||||
# Если выдаёт ошибку про home-manager сервис при ребилде,
|
# Если выдаёт ошибку про home-manager сервис при ребилде,
|
||||||
# Значит такой файл уже существует и симлинк туда кинуть нельзя
|
# значит такой файл уже существует и симлинк туда кинуть нельзя
|
||||||
# Для таких файлов я сделал каталог shit
|
# Для таких файлов я сделал каталог shit
|
||||||
|
|
||||||
# Я не уверен надо ли писать "config.lib.file.mkOutOfStoreSymlink"
|
# Я не уверен надо ли писать "config.lib.file.mkOutOfStoreSymlink"
|
||||||
# Вроде это более простой симлинк, чем просто ссылка на файл
|
# Вроде это более простой симлинк, чем просто ссылка на файл
|
||||||
|
# Типо он напрямую симлинк кидает, а не через 100500 симлинков в nix/store
|
||||||
# Но мб меня обманули
|
# Но мб меня обманули
|
||||||
|
|
||||||
{ pkgs, config, ... }: let
|
{ config, ... }: let
|
||||||
home-dir = "backups"; # Имя каталога для бекапов. Мб захочу поменять
|
home-dir = "backups"; # Имя каталога для бекапов. Мб захочу поменять
|
||||||
dir = "${config.home.homeDirectory}/${home-dir}";
|
dir = "${config.home.homeDirectory}/${home-dir}";
|
||||||
in {
|
in {
|
||||||
|
|
@ -20,28 +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";
|
||||||
|
|
||||||
# Ебаный qt, как я тебя ненавижу
|
|
||||||
# "Kvantum".source = ../shit/Kvantum;
|
|
||||||
# "qt5ct".source = ../shit/qt5ct
|
|
||||||
# "qt6ct".source = ../shit/qt6ct
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@
|
||||||
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?
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."starship.toml".source = ./starship.toml;
|
xdg.configFile."starship.toml".source = ./starship.toml;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,13 @@
|
||||||
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
|
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
|
||||||
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
|
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
|
||||||
|
|
||||||
# Возможно это аналог "sudo pacman -Sy". Обновить репозиторий, чтоб потом на него обновиться? Пакеты не обновляет
|
# Обновить все flake inputs до последних версий. Возможно это аналог "sudo pacman -Sy" на Arch Linux
|
||||||
upd = "nix flake update ${flakeDir}"; # Обновляет flake.lock на последние коммиты с гитхаба?
|
# Если после 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";
|
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
|
||||||
|
|
||||||
|
|
@ -31,11 +36,9 @@
|
||||||
v = "nvim";
|
v = "nvim";
|
||||||
|
|
||||||
t = "timer";
|
t = "timer";
|
||||||
r = "ranger";
|
r = "ranger --choosedir=/tmp/choosedir && cd \"$(cat /tmp/choosedir)\"";
|
||||||
ff = "fastfetch";
|
g = "gitui";
|
||||||
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
|
f = "fastfetch";
|
||||||
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
|
|
||||||
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
|
|
||||||
};
|
};
|
||||||
|
|
||||||
history = {
|
history = {
|
||||||
|
|
@ -44,16 +47,25 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Environment variables that will be set for zsh session.
|
# Environment variables that will be set for zsh session.
|
||||||
sessionVariables = {
|
# sessionVariables = {
|
||||||
HISTORY_SUBSTRING_SEARCH_FUZZY = "не работает блять"; # Нечёткий поиск для стрелок вверх/вниз.
|
# };
|
||||||
};
|
|
||||||
|
|
||||||
# Extra commands that should be added to .zshrc
|
# Extra commands that should be added to .zshrc
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh
|
source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
historySubstringSearch.enable = true; # Чтоб вверх/вниз учитывал уже написанную команду
|
historySubstringSearch = {
|
||||||
|
enable = true; # Чтоб вверх/вниз учитывал уже написанную команду
|
||||||
|
searchUpKey = [
|
||||||
|
"^[[A"
|
||||||
|
"$terminfo[kcuu1]"
|
||||||
|
];
|
||||||
|
searchDownKey = [
|
||||||
|
"^[[B"
|
||||||
|
"$terminfo[kcud1]"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
oh-my-zsh = { # https://github.com/ohmyzsh/ohmyzsh
|
oh-my-zsh = { # https://github.com/ohmyzsh/ohmyzsh
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -70,10 +82,9 @@
|
||||||
"fzf" # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/fzf
|
"fzf" # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/fzf
|
||||||
# "gitignore" # Use https://gitignore.io from the command line
|
# "gitignore" # Use https://gitignore.io from the command line
|
||||||
# "gpg-agent" # Enables GPG's gpg-agent if it is not running. Хз что это значит, мб пригодится
|
# "gpg-agent" # Enables GPG's gpg-agent if it is not running. Хз что это значит, мб пригодится
|
||||||
"httpie" # Completion for HTTPie, a command line HTTP client, a friendlier cURL replacement.
|
# "httpie" # Completion for HTTPie, a command line HTTP client, a friendlier cURL replacement.
|
||||||
# "isodate" # Completion for the ISO 8601, as well as some aliases for common Date commands.
|
# "isodate" # Completion for the ISO 8601, as well as some aliases for common Date commands.
|
||||||
# "mise" # dev tools, env vars, task runner https://github.com/jdx/mise
|
# "mise" # dev tools, env vars, task runner https://github.com/jdx/mise
|
||||||
"pass" # Completion for the pass password manager (вдруг добавит нечёткий поиск?)
|
|
||||||
"safe-paste" # Preventing any code from running while pasting, so you have a chance to review what was pasted
|
"safe-paste" # Preventing any code from running while pasting, so you have a chance to review what was pasted
|
||||||
"ssh-agent" # Автостарт ssh-agent. Хз надо ли настраивать и если да, то как
|
"ssh-agent" # Автостарт ssh-agent. Хз надо ли настраивать и если да, то как
|
||||||
"timer" # Показывает время выполнения команды
|
"timer" # Показывает время выполнения команды
|
||||||
|
|
@ -91,4 +102,4 @@
|
||||||
zsh-you-should-use # Напомнит, если у написанной команды есть алиас
|
zsh-you-should-use # Напомнит, если у написанной команды есть алиас
|
||||||
zsh-nix-shell # zsh plugin that lets you use zsh in nix-shell shell
|
zsh-nix-shell # zsh plugin that lets you use zsh in nix-shell shell
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, config, lib, ... }: {
|
{ config, lib, ... }: {
|
||||||
# xsession.enable = true; # Хз надо ли
|
# xsession.enable = true; # Хз надо ли
|
||||||
xsession.windowManager.bspwm = {
|
xsession.windowManager.bspwm = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
# И настройки для второго (правого) монитора
|
# И настройки для второго (правого) монитора
|
||||||
# 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 100 --right-of DisplayPort-2
|
# xrandr --output HDMI-A-0 --mode 1920x1080 --rate 60 --right-of DisplayPort-2
|
||||||
# '';
|
# '';
|
||||||
|
|
||||||
# Эти команды выполняются в конце bspwmrc
|
# Эти команды выполняются в конце bspwmrc
|
||||||
|
|
@ -24,10 +24,8 @@
|
||||||
"sxhkd"
|
"sxhkd"
|
||||||
"nm-applet"
|
"nm-applet"
|
||||||
"ksnip"
|
"ksnip"
|
||||||
# "nekoray"
|
"xset s off -dpms" # Отменить затухание экрана через X минут
|
||||||
# "obsidian"
|
"spice-vdagent" # Для виртуалки
|
||||||
# "planify"
|
|
||||||
# "spice-vdagent" # Для виртуалки
|
|
||||||
];
|
];
|
||||||
|
|
||||||
monitors = let
|
monitors = let
|
||||||
|
|
@ -60,7 +58,8 @@
|
||||||
state = "floating";
|
state = "floating";
|
||||||
};
|
};
|
||||||
in { # А тут правила окон
|
in { # А тут правила окон
|
||||||
"Screenkey" = { manage = false; };
|
# "Screenkey" = { manage = false; };
|
||||||
|
# "Screenkey" = floating;
|
||||||
"gcolor3" = floating;
|
"gcolor3" = floating;
|
||||||
"obs" = floating;
|
"obs" = floating;
|
||||||
"steam" = floating;
|
"steam" = floating;
|
||||||
|
|
@ -70,13 +69,11 @@
|
||||||
"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" = floating1200x800;
|
|
||||||
"floating-terminal" = floating1200x800;
|
"floating-terminal" = floating1200x800;
|
||||||
"pavucontrol" = floating900x600;
|
"pavucontrol" = floating900x600;
|
||||||
# blueman-манагер надо флоатинг
|
# blueman-манагер надо флоатинг
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
{ pkgs, config, ... }: let
|
{ pkgs, config, ... }: let
|
||||||
rofiApps = "${config.home.homeDirectory}/.config/rofi/launcher.rasi";
|
rofiApps = "${config.home.homeDirectory}/.config/rofi/launcher.rasi";
|
||||||
rofiPower = "${config.home.homeDirectory}/.config/rofi/power.rasi";
|
rofiPower = "${config.home.homeDirectory}/.config/rofi/power.rasi";
|
||||||
monitor = "$\{env:MONITOR:\}";
|
# monitor = "$\{env:MONITOR:\}";
|
||||||
in { # Статус бар внизу
|
in { # Статус бар внизу
|
||||||
services.polybar = {
|
services.polybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -34,7 +34,7 @@ in { # Статус бар внизу
|
||||||
sleep 0
|
sleep 0
|
||||||
'';
|
'';
|
||||||
|
|
||||||
settings = { # Или переимоневать в "config"? Не понял в чём разница
|
settings = { # Или переимeнoвать в "config"? Не понял в чём разница
|
||||||
"bar/bspwm" = {
|
"bar/bspwm" = {
|
||||||
monitor = "\${env:MONITOR:}";
|
monitor = "\${env:MONITOR:}";
|
||||||
|
|
||||||
|
|
@ -64,9 +64,8 @@ in { # Статус бар внизу
|
||||||
|
|
||||||
font-0 = "NotoSans Nerd Font:style=Regular:size=12;3";
|
font-0 = "NotoSans Nerd Font:style=Regular:size=12;3";
|
||||||
|
|
||||||
# Выблядки не могут юзать все Noto Sans при указании одного шрифта
|
# Polybar не может юзать все Noto Sans при указании одного шрифта
|
||||||
# А ещё дауны не могут отображать смайлики нормально
|
# А ещё оно не может отображать смайлики нормально, залупа на пол экрана
|
||||||
# Там кусок дерьма на пол экрана
|
|
||||||
font-1 = "Noto Sans:size=12;3";
|
font-1 = "Noto Sans:size=12;3";
|
||||||
font-2 = "Noto Sans CJK HK:size=12;3";
|
font-2 = "Noto Sans CJK HK:size=12;3";
|
||||||
font-3 = "Noto Sans CJK JP:size=12;3";
|
font-3 = "Noto Sans CJK JP:size=12;3";
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ in {
|
||||||
bspc desktop -f next.!occupied
|
bspc desktop -f next.!occupied
|
||||||
|
|
||||||
# Меняет позиционирование с горизонтального на вертикальный и обратно. Мб надо -R
|
# Меняет позиционирование с горизонтального на вертикальный и обратно. Мб надо -R
|
||||||
# (хуй, и то и то требует аргументы, а не делает toggle, и даже с аргументами нихуя не работает)
|
# (и то и то требует аргументы, а не делает toggle, и даже с аргументами не работает)
|
||||||
# super + s
|
# super + s
|
||||||
# bspc node -F
|
# bspc node -F
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,6 @@
|
||||||
|
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
betterlockscreen
|
betterlockscreen
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +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
|
||||||
./xserver.nix
|
./xserver.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
environment.variables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
# Тут настраивается автомаунт нужных дисков
|
||||||
|
# Замени значения на свои. Узнать uuid можно через `lsblk -f`
|
||||||
|
|
||||||
{
|
{
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/mnt/backups" = {
|
"/mnt/backups" = {
|
||||||
|
|
@ -5,5 +8,10 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
options = [ "defaults" "noatime" ]; #"uid=1000" "gid=1000" "dmask=007" "fmask=117" ];
|
options = [ "defaults" "noatime" ]; #"uid=1000" "gid=1000" "dmask=007" "fmask=117" ];
|
||||||
};
|
};
|
||||||
|
"/mnt/shit" = {
|
||||||
|
device = "/dev/disk/by-uuid/234dc4ed-ade3-447f-af5a-4d254835cc66";
|
||||||
|
fsType = "ext4";
|
||||||
|
options = [ "defaults" "noatime" ]; #"uid=1000" "gid=1000" "dmask=007" "fmask=117" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,22 +3,22 @@
|
||||||
|
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
hardware = { # Параметры для 24.05 и unstable могут сильно отличаться
|
hardware = { # Параметры для 24.05 и unstable могут сильно отличаться
|
||||||
|
amdgpu = {
|
||||||
# amdgpu = {
|
opencl.enable = true; # Enable OpenCL support using ROCM runtime library.
|
||||||
# opencl.enable = true; # # Enable OpenCL support using ROCM runtime library.
|
|
||||||
# amdvlk = { # Гавно лаганое, лучше radv юзать (radeon vulkan)
|
# amdvlk = { # Гавно лаганое, лучше radv юзать (radeon vulkan)
|
||||||
# enable = true; # Enable AMDVLK Vulkan driver.
|
# enable = true; # Enable AMDVLK Vulkan driver.
|
||||||
# support32Bit.enable = true; # Enable 32-bit driver support.
|
# support32Bit.enable = true; # Enable 32-bit driver support.
|
||||||
# supportExperimental.enable = true; # Enable Experimental features support.
|
# supportExperimental.enable = true; # Enable Experimental features support.
|
||||||
# # settings = {}; # Runtime settings for AMDVLK to be configured /etc/amd/amdVulkanSettings.cfg.
|
# # settings = {}; # Runtime settings for AMDVLK to be configured /etc/amd/amdVulkanSettings.cfg.
|
||||||
# };
|
# };
|
||||||
# };
|
};
|
||||||
|
|
||||||
graphics = { # hardware.opengl переименован в hardware.graphics в unstable ветке
|
graphics = { # hardware.opengl переименован в hardware.graphics в unstable ветке
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = true; # install 32-bit drivers for 32-bit applications (such as Wine).
|
enable32Bit = true; # install 32-bit drivers for 32-bit applications (such as Wine).
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
libva # VAAPI (Video Acceleration API)
|
libva # VAAPI (Video Acceleration API)
|
||||||
|
rocmPackages.clr.icd # OpenCL
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -47,11 +47,22 @@
|
||||||
|
|
||||||
# HIP
|
# HIP
|
||||||
# Most software has the HIP libraries hard-coded. You can work around it on NixOS by using:
|
# Most software has the HIP libraries hard-coded. You can work around it on NixOS by using:
|
||||||
# systemd.tmpfiles.rules = [
|
# systemd.tmpfiles.rules = [ # Legacy
|
||||||
# "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
# "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
||||||
# ];
|
# ];
|
||||||
|
systemd.tmpfiles.rules = let
|
||||||
|
rocmEnv = pkgs.symlinkJoin {
|
||||||
|
name = "rocm-combined";
|
||||||
|
paths = with pkgs.rocmPackages; [
|
||||||
|
rocblas
|
||||||
|
hipblas
|
||||||
|
clr
|
||||||
|
];
|
||||||
|
}; in [
|
||||||
|
"L+ /opt/rocm - - - - ${rocmEnv}"
|
||||||
|
];
|
||||||
|
|
||||||
# boot.initrd.kernelModules = [ "amdgpu" ]; # Мб не обязательно
|
boot.initrd.kernelModules = [ "amdgpu" ]; # Мб не обязательно
|
||||||
|
|
||||||
# Для AMD существует два драйвера Vulkan
|
# Для AMD существует два драйвера Vulkan
|
||||||
# Один официальный от AMD - amdvlk
|
# Один официальный от AMD - amdvlk
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@
|
||||||
|
|
||||||
{
|
{
|
||||||
boot = {
|
boot = {
|
||||||
resumeDevice = "/dev/disk/by-uuid/15630f8d-edf8-4e0b-8df4-9ac20f80fc88";
|
resumeDevice = "/dev/disk/by-uuid/0951089a-fd89-4647-9ddb-0e3ff63d7b49";
|
||||||
kernelParams = [ "resume_offset=18745344" ];
|
kernelParams = [ "resume_offset=6799360" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Не знаю надо ли это. На виртуалке я не могу забутиться в любом случае
|
# Не знаю надо ли это. На виртуалке я не могу забутиться в любом случае
|
||||||
|
|
|
||||||
|
|
@ -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");
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
modules/nixos/nix-glow-gruvbox.jpg
Normal file
BIN
modules/nixos/nix-glow-gruvbox.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 388 KiB |
|
|
@ -11,7 +11,6 @@
|
||||||
wireplumber = {
|
wireplumber = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# Запретить конкретному софту редактировать громкость микрофона
|
# Запретить конкретному софту редактировать громкость микрофона
|
||||||
# Я рот ебал блядей, что делают мой микро тихим без моего разрешения
|
|
||||||
# В терминал `wpctl status`, найти нужное приложение в списке клиентов
|
# В терминал `wpctl status`, найти нужное приложение в списке клиентов
|
||||||
# Потом `wpctl inspect номер-клиента | grep application.process.binary`
|
# Потом `wpctl inspect номер-клиента | grep application.process.binary`
|
||||||
# `systemctl --user restart wireplumber pipewire pipewire-pulse`
|
# `systemctl --user restart wireplumber pipewire pipewire-pulse`
|
||||||
|
|
@ -20,51 +19,58 @@
|
||||||
# https://askubuntu.com/questions/749407/is-there-any-way-to-prevent-application-from-changing-volume-level-of-my-microph
|
# https://askubuntu.com/questions/749407/is-there-any-way-to-prevent-application-from-changing-volume-level-of-my-microph
|
||||||
# https://www.linux.org/threads/prevent-applications-from-changing-microphone-gain.41636/
|
# https://www.linux.org/threads/prevent-applications-from-changing-microphone-gain.41636/
|
||||||
# https://www.reddit.com/r/Ubuntu/comments/pvlm6r/how_to_disable_microphone_autoadjusting/
|
# https://www.reddit.com/r/Ubuntu/comments/pvlm6r/how_to_disable_microphone_autoadjusting/
|
||||||
|
# https://wiki.archlinux.org/title/Firefox/Tweaks#Disable_WebRTC_audio_post_processing
|
||||||
|
|
||||||
|
# Если не помогает и сайты в браузере косячат, то есть такие решения:
|
||||||
|
# 1) Firefox или его форки - в браузерной строке пишешь и открываешь about:config
|
||||||
|
# Там делаешь media.getusermedia.agc_enabled false. Это Automatic Gain Control
|
||||||
|
# 2) Chromium или его форки - в браузерной строке пишешь и открываешь chrome://flags/
|
||||||
|
# Там ставишь Allow WebRTC to adjust the input volume = Disabled
|
||||||
|
|
||||||
|
# Я решил сделать вайтлист. В стоке я запрещаю всем редачить громкость микро в системе
|
||||||
|
# Лишь определённый софт может редачить громкость моего микрофона
|
||||||
extraScripts."99-stop-microphone-auto-adjust.lua" = ''
|
extraScripts."99-stop-microphone-auto-adjust.lua" = ''
|
||||||
table.insert (default_access.rules,{
|
table.insert (default_access.rules,{
|
||||||
matches = {
|
matches = {
|
||||||
{
|
{
|
||||||
{ "application.process.binary", "=", ".Discord-wrapped" }
|
{ "application.process.binary", "=", "*" }
|
||||||
},
|
|
||||||
{
|
|
||||||
{ "application.process.binary", "=", "chromium" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ "application.process.binary", "=", "librewolf" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ "application.process.binary", "=", "firefox" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ "application.process.binary", "=", "steam" }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{ "application.process.binary", "=", ".telegram-desktop-wrapped" }
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
default_permissions = "rx",
|
default_permissions = "r-x",
|
||||||
|
})
|
||||||
|
table.insert (default_access.rules,{
|
||||||
|
matches = {
|
||||||
|
{
|
||||||
|
{ "application.process.binary", "=", ".pavucontrol-wrapped" }
|
||||||
|
},
|
||||||
|
{
|
||||||
|
{ "application.process.binary", "=", ".easyeffects-wrapped" }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
default_permissions = "rwx",
|
||||||
})
|
})
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
# Ниже настройки имеют формат "число - название"
|
# Ниже настройки имеют формат "число - название"
|
||||||
# Число определяет приоритет настройки, а название описывает цель конфига
|
# Число определяет приоритет настройки, а название описывает цель конфига
|
||||||
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 — устанавливает размер буфера (чем меньше значение, тем ниже задержка, но выше нагрузка на процессор).
|
||||||
# Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (64, 128, 256) или просто удалить эту настройку
|
# # Можно посчитать теоретическую задержку в секундах, поделив quantum на rate (48/48000 будет 1мс)
|
||||||
# По умолчанию я закомментировал настройку, чтоб у людей не было проблем
|
# # Если со звуком есть проблемы (щелчки, прерывания), попробуйте увеличить значение (64, 128, 256) или просто удалить эту настройку
|
||||||
# "92-low-latency" = {
|
# # По умолчанию я закомментировал настройку, чтоб у людей не было проблем
|
||||||
# default.clock.quantum = 32; # default = 1024
|
# # "92-low-latency" = {
|
||||||
# default.clock.min-quantum = 32; # default = 32
|
# # default.clock.quantum = 32; # default = 1024
|
||||||
# default.clock.max-quantum = 32; # default = 2048
|
# # default.clock.min-quantum = 32; # default = 32
|
||||||
# };
|
# # default.clock.max-quantum = 32; # default = 2048
|
||||||
};
|
# # };
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
polarity = "dark"; # "light" or "either". Если "either", то он сам определяет что будет красивее
|
polarity = "dark"; # "light" or "either". Если "either", то он сам определяет что будет красивее
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-medium.yaml"; # Если хочешь генерить тему из обоев, то удали эту строку
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-medium.yaml"; # Если хочешь генерить тему из обоев, то удали эту строку
|
||||||
# image = config.lib.stylix.pixel "base00"; # Вместо обоев будет заливка фона одним цветом из темы
|
# image = config.lib.stylix.pixel "base00"; # Вместо обоев будет заливка фона одним цветом из темы
|
||||||
image = ./wall.jpg; # Если хочешь норм обои, то просто укажи путь до изображения
|
image = ./nix-glow-gruvbox.jpg; # Если хочешь норм обои, то просто укажи путь до изображения
|
||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
|
|
@ -23,8 +23,8 @@
|
||||||
|
|
||||||
# Ширина символов одинаковая
|
# Ширина символов одинаковая
|
||||||
monospace = { # default = DejaVu Sans Mono
|
monospace = { # default = DejaVu Sans Mono
|
||||||
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
|
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
name = "JetBrainsMono Nerd Font Mono";
|
name = "JetBrainsMonoNL Nerd Font Mono";
|
||||||
};
|
};
|
||||||
|
|
||||||
emoji = { # default = Noto Color Emoji
|
emoji = { # default = Noto Color Emoji
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
# Без засечек
|
# Без засечек
|
||||||
sansSerif = { # default = DejaVu Sans
|
sansSerif = { # default = DejaVu Sans
|
||||||
package = pkgs.nerdfonts.override {fonts = ["Noto"];};
|
package = pkgs.nerd-fonts.noto;
|
||||||
name = "NotoSans Nerd Font";
|
name = "NotoSans Nerd Font";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -63,17 +63,16 @@
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
##################################################
|
###################################################
|
||||||
## Хули блять у всех работают темы для qt ##
|
## Тема qt через stylix у меня не работает ##
|
||||||
## Один я далбаёб проебал 3 дня ##
|
## Хотя в видео у других людей всё менялось ##
|
||||||
## Прочитал весь код ебаного stylix ##
|
## Приходится руками ставить грувбокс через qtct ##
|
||||||
## И нихуя не работает блять ##
|
###################################################
|
||||||
## Так что поставлю руками грувбокс через qtct ##
|
|
||||||
##################################################
|
|
||||||
|
|
||||||
|
# https://discourse.nixos.org/t/guide-to-installing-qt-theme/35523/2
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
style = "kvantum";
|
style = "kvantum";
|
||||||
platformTheme = "qt5ct";
|
platformTheme = "qt5ct";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# spiceUSBRedirection.enable = true; # Connect USB devices to libvirt VMs, both local and remote.
|
spiceUSBRedirection.enable = true; # Connect USB devices to libvirt VMs, both local and remote.
|
||||||
libvirtd = { # https://nixos.wiki/wiki/Libvirt
|
libvirtd = { # https://nixos.wiki/wiki/Libvirt
|
||||||
enable = true;
|
enable = true;
|
||||||
qemu.package = pkgs.qemu_full;
|
qemu.package = pkgs.qemu_full;
|
||||||
|
|
|
||||||
38
modules/nixos/vr.nix
Normal file
38
modules/nixos/vr.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Beat Saber является OpenXR игрой, что не поддерживается Alvr из коробки
|
||||||
|
# Возможно на X11 это можно исправить простой настройкой в SteamVR
|
||||||
|
# Но на Wayland мне приходилось качать разом весь этот софт на Arch
|
||||||
|
# Поэтому сразу поставил всё что надо и не пробовал найти необходимый минимум
|
||||||
|
# Мб пригодится поставить opencomposite для трансляции OpenVR в OpenXR
|
||||||
|
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
|
||||||
|
# Open source XR runtime
|
||||||
|
monado = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# An OpenXR streaming application to a standalone headset
|
||||||
|
# wivrn = {
|
||||||
|
# enable = true;
|
||||||
|
# openFirewall = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
|
||||||
|
# Stream VR games from your PC to your headset via Wi-Fi
|
||||||
|
alvr = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# UI for Monado, the open source OpenXR runtime
|
||||||
|
# envision = {
|
||||||
|
# enable = true;
|
||||||
|
# openFirewall = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 MiB |
|
|
@ -1,8 +1,3 @@
|
||||||
# Не совсем понял как менять тему в sddm. Но мне оно не надо. Оставлю ссылки
|
|
||||||
# https://www.reddit.com/r/NixOS/comments/14sb6s2/sddm_themes_finally_did_a_dumb_workaround/
|
|
||||||
# https://www.reddit.com/r/NixOS/comments/14dlvbr/sddm_theme/
|
|
||||||
|
|
||||||
|
|
||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
|
|
||||||
services.displayManager = {
|
services.displayManager = {
|
||||||
|
|
@ -10,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";
|
||||||
|
|
@ -23,9 +18,11 @@
|
||||||
accelProfile = "flat";
|
accelProfile = "flat";
|
||||||
scrollMethod = "button";
|
scrollMethod = "button";
|
||||||
scrollButton = 9; # Узнать айди можно через `xev -event button | grep button`
|
scrollButton = 9; # Узнать айди можно через `xev -event button | grep button`
|
||||||
|
middleEmulation = false;
|
||||||
};
|
};
|
||||||
touchpad = {
|
touchpad = {
|
||||||
accelProfile = "flat";
|
accelProfile = "flat";
|
||||||
|
middleEmulation = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -42,11 +39,15 @@
|
||||||
options = "grp:caps_toggle"; # Менять язык на CapsLock
|
options = "grp:caps_toggle"; # Менять язык на CapsLock
|
||||||
};
|
};
|
||||||
|
|
||||||
|
displayManager.sessionCommands = ''
|
||||||
|
xsetroot -cursor_name left_ptr
|
||||||
|
'';
|
||||||
|
|
||||||
# Мб видеодрайвер можно не указывать
|
# Мб видеодрайвер можно не указывать
|
||||||
# https://discourse.nixos.org/t/amd-gpu-optimal-settings/27648/3
|
# https://discourse.nixos.org/t/amd-gpu-optimal-settings/27648/3
|
||||||
|
|
||||||
# videoDrivers = [ "nvidia" ]; # https://nixos.wiki/wiki/Nvidia
|
# videoDrivers = [ "nvidia" ]; # https://nixos.wiki/wiki/Nvidia
|
||||||
# videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
|
videoDrivers = [ "amdgpu" ]; # https://nixos.wiki/wiki/AMD_GPU
|
||||||
# deviceSection = ''Option "TearFree" "True"'';
|
deviceSection = ''Option "TearFree" "True"'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
# Edit this configuration file to define what should be installed on
|
{ pkgs, pkgs2, spkgs, inputs, ... }:
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
||||||
|
|
||||||
{ pkgs, inputs, ... }:
|
|
||||||
|
|
||||||
let
|
let
|
||||||
username = "buliway";
|
username = "buliway";
|
||||||
|
|
@ -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;
|
||||||
|
|
@ -46,14 +41,17 @@ in {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = username;
|
description = username;
|
||||||
extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" "video" ];
|
extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" "video" ];
|
||||||
# packages = with pkgs; [];
|
# packages = with pkgs; [
|
||||||
|
# clang-tools
|
||||||
|
# ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
# also pass inputs to home-manager modules
|
# also pass inputs to home-manager modules
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
extraSpecialArgs = { inherit inputs; };
|
useUserPackages = true;
|
||||||
|
extraSpecialArgs = { inherit spkgs; inherit pkgs2; inherit inputs; };
|
||||||
users.${username} = import ./home.nix;
|
users.${username} = import ./home.nix;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -64,14 +62,23 @@ in {
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configPackages = with pkgs; [
|
configPackages = with pkgs; [
|
||||||
xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
|
xdg-desktop-portal
|
||||||
|
# kdePackages.xdg-desktop-portal-kde
|
||||||
|
# xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
|
||||||
];
|
];
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
|
xdg-desktop-portal
|
||||||
|
# kdePackages.xdg-desktop-portal-kde
|
||||||
|
# xdg-desktop-portal-gtk # Чтоб загружать файлы и стримить в дискорде
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes"];
|
nix.settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
# For nix-gaming
|
||||||
|
substituters = ["https://nix-gaming.cachix.org"];
|
||||||
|
trusted-public-keys = ["nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="];
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.05"; # Don't change it
|
system.stateVersion = "24.05"; # Don't change it
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,11 +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 писать, чтоб расширения ставились
|
||||||
jetbrains-toolbox
|
|
||||||
zed-editor
|
|
||||||
];
|
];
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
|
|
@ -29,6 +27,7 @@
|
||||||
TERM = "alacritty";
|
TERM = "alacritty";
|
||||||
QT_QPA_PLATFORMTHEME = "qt6ct";
|
QT_QPA_PLATFORMTHEME = "qt6ct";
|
||||||
# QT_STYLE_OVERRIDE = "kvantum";
|
# QT_STYLE_OVERRIDE = "kvantum";
|
||||||
|
PATH = "$PATH:${config.home.homeDirectory}/go/bin";
|
||||||
};
|
};
|
||||||
|
|
||||||
stateVersion = "24.05"; # Don't change it
|
stateVersion = "24.05"; # Don't change it
|
||||||
|
|
@ -37,8 +36,8 @@
|
||||||
gtk = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux) {
|
gtk = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux) {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
name = "Gruvbox-Plus-Dark"; # Имя каталога в /usr/share/icons/
|
name = "Papirus-Dark"; # Имя каталога в /usr/share/icons/
|
||||||
package = pkgs.gruvbox-plus-icons; # Пакет иконок
|
# package = pkgs.papirus-icon-theme; # Пакет иконок
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -46,14 +45,17 @@
|
||||||
targets = {
|
targets = {
|
||||||
vscode.enable = false; # Руками ставлю. Не нравится stylix вариант
|
vscode.enable = false; # Руками ставлю. Не нравится stylix вариант
|
||||||
firefox.enable = false; # Руками ставлю и бекаплю каталог браузера
|
firefox.enable = false; # Руками ставлю и бекаплю каталог браузера
|
||||||
# lightdm.enable = false; # Не хочу обои в lightdm (в сурсе есть настройка, но не билдит, мать ебал)
|
|
||||||
};
|
};
|
||||||
|
# iconTheme = {
|
||||||
|
# enable = true;
|
||||||
|
# package = pkgs.papirus-icon-theme;
|
||||||
|
# dark = "Papirus-Dark";
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
##############################################
|
##############################################
|
||||||
## Ниже включаю проги для Stylix ##
|
## Ниже включаю проги для Stylix ##
|
||||||
## Ебаные дауны могут редачить grub, ##
|
## Потому что не все из них вкл в стоке ##
|
||||||
## но не могут редачить ебаный обычный софт ##
|
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
# programs = {
|
# programs = {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
{ pkgs, ... }: {
|
{ pkgs, pkgs2, spkgs, inputs, ... }: {
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/Fonts
|
# https://nixos.wiki/wiki/Fonts
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
|
|
@ -7,7 +7,9 @@
|
||||||
noto-fonts-cjk-sans # Отображение иероглифов. Версия без засечек
|
noto-fonts-cjk-sans # Отображение иероглифов. Версия без засечек
|
||||||
noto-fonts-color-emoji
|
noto-fonts-color-emoji
|
||||||
noto-fonts-monochrome-emoji
|
noto-fonts-monochrome-emoji
|
||||||
(nerdfonts.override {fonts = ["JetBrainsMono" "Noto" "CascadiaCode"];})
|
nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.noto
|
||||||
|
nerd-fonts.caskaydia-mono
|
||||||
carlito # Совместим с Calibri, разработан как его свободная альтернатива. Без засечек
|
carlito # Совместим с Calibri, разработан как его свободная альтернатива. Без засечек
|
||||||
terminus_font
|
terminus_font
|
||||||
inconsolata
|
inconsolata
|
||||||
|
|
@ -43,16 +45,67 @@
|
||||||
# fwupd.enable = true; # DBus service that allows applications to update firmware
|
# fwupd.enable = true; # DBus service that allows applications to update firmware
|
||||||
# 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 = {
|
||||||
|
enable = true;
|
||||||
|
acceleration = "rocm";
|
||||||
|
# Ollama Port 11434/tcp
|
||||||
|
host = "0.0.0.0";
|
||||||
|
port = 11434;
|
||||||
|
openFirewall = true;
|
||||||
|
package = pkgs2.ollama;
|
||||||
|
rocmOverrideGfx = "10.3.0"; # Лок версии, чтоб на моей видюхе работало всё
|
||||||
|
# additional environment variables
|
||||||
|
# environmentVariables = { HSA_OVERRIDE_GFX_VERSION="10.3.0"; };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
nix-ld = { # Имитация файловой системы обычного линукса и пакеты для этого дела
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs2; [
|
||||||
|
stdenv.cc.cc
|
||||||
|
# Для запуска Throne бинаря с гитхаб (форк nekoray)
|
||||||
|
kdePackages.qtbase
|
||||||
|
kdePackages.qttools
|
||||||
|
kdePackages.qtwayland
|
||||||
|
kdePackages.qtsvg
|
||||||
|
kdePackages.qtimageformats
|
||||||
|
util-linux
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
mesa
|
||||||
|
libGL
|
||||||
|
libglvnd
|
||||||
|
libxkbcommon
|
||||||
|
freetype
|
||||||
|
fontconfig
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXrandr
|
||||||
|
xorg.libXrender
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXxf86vm
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libxcb
|
||||||
|
xorg.libXfixes
|
||||||
|
xorg.xcbutil
|
||||||
|
xorg.xcbutilkeysyms
|
||||||
|
xorg.xcbutilwm
|
||||||
|
xorg.xcbutilimage
|
||||||
|
xorg.xcbutilrenderutil
|
||||||
|
xcb-util-cursor
|
||||||
|
glib
|
||||||
|
dbus
|
||||||
|
krb5
|
||||||
|
];
|
||||||
|
};
|
||||||
zsh.enable = true;
|
zsh.enable = true;
|
||||||
mtr.enable = true; # Объединяет функции утилит traceroute и ping
|
mtr.enable = true; # Объединяет функции утилит traceroute и ping
|
||||||
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 работал
|
||||||
|
|
@ -63,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
|
||||||
|
|
@ -75,9 +128,7 @@
|
||||||
|
|
||||||
steam = {
|
steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extraCompatPackages = with pkgs; [ # Доп версии протона. Должны иметь `steamcompattool` output
|
# package = pkgs2.steam;
|
||||||
proton-ge-bin
|
|
||||||
];
|
|
||||||
# fontPackages = with pkgs; []; # Font packages to use in Steam
|
# fontPackages = with pkgs; []; # Font packages to use in Steam
|
||||||
# extraPackages = with pkgs; []; # Additional
|
# extraPackages = with pkgs; []; # Additional
|
||||||
# protontricks.enable = true; # Running Winetricks commands for Proton-enabled games.
|
# protontricks.enable = true; # Running Winetricks commands for Proton-enabled games.
|
||||||
|
|
@ -102,22 +153,96 @@
|
||||||
|
|
||||||
# Это рекомендуют ставить не на всю систему,
|
# Это рекомендуют ставить не на всю систему,
|
||||||
# а только на nix shell внутри проекта, где нужны эти пакеты
|
# а только на nix shell внутри проекта, где нужны эти пакеты
|
||||||
|
# Но я хочу на всю систему
|
||||||
|
|
||||||
go # Go programming language
|
# Python
|
||||||
rustup # Управление версиями языка Rust
|
python3Full # Python last version
|
||||||
hugo # Для моего блога
|
python3Packages.pip # Python package manager (nvim его не видит)
|
||||||
python3 # Питухон ласт версии
|
python3Packages.debugpy # Debug Adapter Protocol for Python
|
||||||
|
pyright # Python LSP
|
||||||
|
ruff # Extremely fast Python linter
|
||||||
|
|
||||||
|
# C/C++
|
||||||
|
clang-tools # Clangd? LSP
|
||||||
|
ccls # C/C++ LSP
|
||||||
|
clang # Компилятор
|
||||||
gcc # Компилятор
|
gcc # Компилятор
|
||||||
gnumake # Компилятор?
|
glibc # GNU C Library
|
||||||
|
gnumake
|
||||||
|
cmake-language-server # CMake LSP
|
||||||
|
cmake
|
||||||
|
# bear # Tool that generates a compilation database for clang tooling
|
||||||
|
# boost # Collection of C++ libraries
|
||||||
|
|
||||||
# Nix language server
|
# Rust
|
||||||
nil
|
rustup # Управление версиями языка Rust (rustup default stable)
|
||||||
nixd
|
rust-analyzer # Rust LSP (rustup component add rust-analyzer)
|
||||||
|
|
||||||
# Nix code formatting
|
# Golang
|
||||||
# nixpkgs-fmt # Оф, но будет устаревшим. Usage: nixpkgs-fmt file.nix
|
go # Go programming language
|
||||||
# nixfmt-rfc-style # Новый оф, но вроде не всё есть. Usage: nixfmt file.nix
|
gopls # Go LSP
|
||||||
alejandra # Сторонний быстрый форматер. Usage: alejandra file.nix
|
delve # Go debugger
|
||||||
|
templ # A language for writing HTML user interfaces in Go.
|
||||||
|
golangci-lint # Fast linters Runner for Go
|
||||||
|
|
||||||
|
# Nix
|
||||||
|
nixd # Nix LSP. Нет в mason
|
||||||
|
|
||||||
|
# Lua
|
||||||
|
lua5_1 # Scripting language
|
||||||
|
luajit # JIT compiler for Lua
|
||||||
|
luajitPackages.luarocks # Package manager for lua
|
||||||
|
lua-language-server # Lua LSP
|
||||||
|
stylua # Lua formatter
|
||||||
|
|
||||||
|
# Shell/Bash
|
||||||
|
bash-language-server # Basp LSP
|
||||||
|
shellcheck # Проверка shell скриптов на ошибки
|
||||||
|
shfmt # Shell parser and formatter
|
||||||
|
|
||||||
|
# SQL
|
||||||
|
sqls # SQL LSP
|
||||||
|
postgres-lsp # Postgres LSP
|
||||||
|
sqlite
|
||||||
|
dbeaver-bin
|
||||||
|
pgadmin4
|
||||||
|
|
||||||
|
# Frontend
|
||||||
|
pkgs2.nodejs_24 # For npm
|
||||||
|
htmx-lsp # HTMX lsp
|
||||||
|
emmet-language-server # Emmet.io LSP
|
||||||
|
vscode-langservers-extracted # HTML/CSS/JSON/ESLint LSP
|
||||||
|
typescript-language-server # TypeScript LSP
|
||||||
|
tailwindcss-language-server # Tailwind LSP
|
||||||
|
svelte-language-server # Svelte LSP
|
||||||
|
# tailwindcss
|
||||||
|
|
||||||
|
# Protobuf
|
||||||
|
protols # LSP
|
||||||
|
# buf # LSP (крашит некоторые проекты в нвиме)
|
||||||
|
protobuf
|
||||||
|
protoc-gen-go
|
||||||
|
protoc-gen-go-grpc
|
||||||
|
|
||||||
|
# Gamedev
|
||||||
|
pkgs2.godot
|
||||||
|
pkgs2.gdtoolkit_4
|
||||||
|
ldtk
|
||||||
|
|
||||||
|
# Other
|
||||||
|
hugo # Для моего блога
|
||||||
|
yaml-language-server # YAML LSP
|
||||||
|
taplo # TOML LSP
|
||||||
|
vim-language-server # VimScript LSP
|
||||||
|
go-migrate # Database migrations. CLI and Golang library
|
||||||
|
postman # API Development Environment
|
||||||
|
insomnia # API client. Мне нравится больше, чем postman
|
||||||
|
pkgs2.nushell # Modern shell
|
||||||
|
|
||||||
|
# For nvim
|
||||||
|
tree-sitter # code parser
|
||||||
|
ripgrep # grep
|
||||||
|
fd # find
|
||||||
|
|
||||||
############
|
############
|
||||||
## Архивы ##
|
## Архивы ##
|
||||||
|
|
@ -127,7 +252,7 @@
|
||||||
unzip # Разархивировать
|
unzip # Разархивировать
|
||||||
unrar # Разархивировать
|
unrar # Разархивировать
|
||||||
gnutar # Для .tar?
|
gnutar # Для .tar?
|
||||||
_7zz # Это пакет для 7z?
|
p7zip # Это пакет для 7z?
|
||||||
bzip2 # .bz2 архивы
|
bzip2 # .bz2 архивы
|
||||||
|
|
||||||
##############
|
##############
|
||||||
|
|
@ -138,9 +263,12 @@
|
||||||
wget
|
wget
|
||||||
curl
|
curl
|
||||||
git
|
git
|
||||||
xclip # Буфера обмена
|
xclip # Буфер обмена
|
||||||
ffmpeg_7 # Обработка видео. Нужен всегда и везде как зависимость
|
ffmpeg_7 # Обработка видео. Нужен всегда и везде как зависимость
|
||||||
|
svt-av1 # Кодек для рендера в av1 на проце
|
||||||
|
# imlib2Full # Image manipulation library
|
||||||
imagemagick # Обработка изображений. Мб тоже нужен всегда
|
imagemagick # Обработка изображений. Мб тоже нужен всегда
|
||||||
|
vips # В 4 раза быстрее imagemagick?
|
||||||
tree # Структура файлов в терминале
|
tree # Структура файлов в терминале
|
||||||
gnugrep # Поиск в терминале
|
gnugrep # Поиск в терминале
|
||||||
gawk # Обработка и анализ текста в терминале
|
gawk # Обработка и анализ текста в терминале
|
||||||
|
|
@ -155,11 +283,13 @@
|
||||||
# zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll
|
# zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll
|
||||||
tokei # Количество строк кода на разных языках в каталоге
|
tokei # Количество строк кода на разных языках в каталоге
|
||||||
pass # Менеджер паролей в терминале
|
pass # Менеджер паролей в терминале
|
||||||
|
amdgpu_top # Tool to display AMD GPU usage
|
||||||
btop # Монитор ресурсов в терминале
|
btop # Монитор ресурсов в терминале
|
||||||
# rocmPackages.rocm-smi # Чтоб в btop было gpu (не работает)
|
rocmPackages.rocm-smi # Чтоб в btop было gpu (не работает)
|
||||||
# rocmPackages_5.rocm-smi # Старая версия пакета выше. Хз какой надо
|
rocmPackages.rocblas # Для работы hip?
|
||||||
yt-dlp # Скачивать и смотреть медиа с разных сайтов
|
rocmPackages.hipblas # Для работы hip?
|
||||||
tasktimer # TUI task timer. Можно несколько таймеров с описанием запустить. В терминал tt
|
rocmPackages.clr # Для работы hip?
|
||||||
|
pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов
|
||||||
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
|
||||||
|
|
@ -167,9 +297,18 @@
|
||||||
fzf # Нечёткий поиск
|
fzf # Нечёткий поиск
|
||||||
killall # Убить процессы. Мем, что в стоке не стоит
|
killall # Убить процессы. Мем, что в стоке не стоит
|
||||||
libnotify # Вызов оповещений через "notify-send"
|
libnotify # Вызов оповещений через "notify-send"
|
||||||
gallery-dl # Качать много картинок с кучи разных сайтов
|
pkgs2.gallery-dl # Качать много картинок с кучи разных сайтов
|
||||||
shellcheck # Проверка shell скриптов на ошибки
|
|
||||||
pwgen # Генератор паролей
|
pwgen # Генератор паролей
|
||||||
|
lm_sensors # Сенсоры
|
||||||
|
httpie # interacting with APIs & HTTP servers
|
||||||
|
jq # Cli JSON processor
|
||||||
|
libxml2 # XML parsing library for C
|
||||||
|
miller # Like awk, sed, cut, join, and sort for data formats such as CSV, TSV, JSON, JSON Lines, and positionally-indexed
|
||||||
|
# htmlq # Как jq, но для html. Извлекать конкретные элементы из html
|
||||||
|
# mkvtoolnix-cli # Cross-platform tools for Matroska
|
||||||
|
usbutils # lsusb
|
||||||
|
f2fs-tools # f2fs filesystem
|
||||||
|
exfat # exFAT filesystem
|
||||||
|
|
||||||
alacritty # Минималистичный терминал. Основной у меня
|
alacritty # Минималистичный терминал. Основной у меня
|
||||||
kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает
|
kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает
|
||||||
|
|
@ -178,8 +317,7 @@
|
||||||
## GUI ##
|
## GUI ##
|
||||||
#########
|
#########
|
||||||
|
|
||||||
nekoray # VPN
|
ksnip # Скрин экрана. Аналог - Flameshot
|
||||||
ksnip # Скрины. Аналоги - Flameshot
|
|
||||||
# kdePackages.ark # Архиватор от kde. Имеет в зависимостях blowjob
|
# kdePackages.ark # Архиватор от kde. Имеет в зависимостях blowjob
|
||||||
file-roller # Архиватор от gnome
|
file-roller # Архиватор от gnome
|
||||||
qbittorrent # Торренты качать
|
qbittorrent # Торренты качать
|
||||||
|
|
@ -189,7 +327,7 @@
|
||||||
# pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol)
|
# pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol)
|
||||||
networkmanagerapplet # Tray for network manager
|
networkmanagerapplet # Tray for network manager
|
||||||
brightnessctl # Brightness control for laptop
|
brightnessctl # Brightness control for laptop
|
||||||
gucharmap # Проверка шрифтов. Какой шрифт какие символы отображает
|
# gucharmap # Проверка шрифтов. Какой шрифт какие символы отображает
|
||||||
|
|
||||||
##############
|
##############
|
||||||
## Browsers ##
|
## Browsers ##
|
||||||
|
|
@ -210,7 +348,7 @@
|
||||||
hunspell # Проверка орфографии для libreoffice
|
hunspell # Проверка орфографии для libreoffice
|
||||||
hunspellDicts.ru_RU # Словарь для проверки орфографии
|
hunspellDicts.ru_RU # Словарь для проверки орфографии
|
||||||
hunspellDicts.en_US # Словарь для проверки орфографии
|
hunspellDicts.en_US # Словарь для проверки орфографии
|
||||||
calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
|
spkgs.calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
|
||||||
drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger
|
drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger
|
||||||
xournalpp # Xournal++ is a handwriting Notetaking software with PDF annotation support
|
xournalpp # Xournal++ is a handwriting Notetaking software with PDF annotation support
|
||||||
|
|
||||||
|
|
@ -224,7 +362,7 @@
|
||||||
xfce.exo # Мб надо, чтоб терминал открывать в каталоге
|
xfce.exo # Мб надо, чтоб терминал открывать в каталоге
|
||||||
ffmpegthumbnailer # A lightweight video thumbnailer
|
ffmpegthumbnailer # A lightweight video thumbnailer
|
||||||
gnome-epub-thumbnailer # Thumbnailer for EPub and MOBI books
|
gnome-epub-thumbnailer # Thumbnailer for EPub and MOBI books
|
||||||
nufraw-thumbnailer # Thumbnailer for .raw images from digital cameras
|
# nufraw-thumbnailer # Thumbnailer for .raw images from digital cameras
|
||||||
# mcomix # Comic book reader and image viewer. Thumbnailer for .crb comicbook archives (требует mupdf, который крашит систему)
|
# mcomix # Comic book reader and image viewer. Thumbnailer for .crb comicbook archives (требует mupdf, который крашит систему)
|
||||||
f3d # Fast and minimalist 3D viewer using VTK. Thumbnailer for 3D files, including glTF, stl, step, ply, obj, fbx.
|
f3d # Fast and minimalist 3D viewer using VTK. Thumbnailer for 3D files, including glTF, stl, step, ply, obj, fbx.
|
||||||
openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger, но мб пригодится и в других местах
|
openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger, но мб пригодится и в других местах
|
||||||
|
|
@ -234,16 +372,20 @@
|
||||||
##################
|
##################
|
||||||
|
|
||||||
kdePackages.kimageformats # Image format plugins for Qt 6
|
kdePackages.kimageformats # Image format plugins for Qt 6
|
||||||
|
libsForQt5.kimageformats
|
||||||
kdePackages.qtimageformats # Plugins for additional image formats: TIFF, MNG, TGA, WBMP
|
kdePackages.qtimageformats # Plugins for additional image formats: TIFF, MNG, TGA, WBMP
|
||||||
|
libsForQt5.qt5.qtimageformats
|
||||||
kdePackages.qtsvg # SVG support
|
kdePackages.qtsvg # SVG support
|
||||||
kdePackages.karchive # Plugin for Krita and OpenRaster images
|
kdePackages.karchive # Plugin for Krita and OpenRaster images
|
||||||
webp-pixbuf-loader # .webp support (what's this?)
|
webp-pixbuf-loader # .webp support (what's this?)
|
||||||
|
gdk-pixbuf.dev # Library for image loading and manipulation
|
||||||
libwebp # .webp support
|
libwebp # .webp support
|
||||||
libavif # AVIF format support
|
libavif # AVIF format support
|
||||||
libheif # HEIF format support
|
libheif # HEIF format support
|
||||||
libgsf # .odf support
|
libgsf # .odf support
|
||||||
libjxl # JPEG-XL format support
|
libjxl # JPEG-XL format support
|
||||||
libraw # RAW format support
|
libraw # RAW format support
|
||||||
|
librsvg # Small library to render SVG images to Cairo surfaces
|
||||||
jxrlib # JPEG XR image support
|
jxrlib # JPEG XR image support
|
||||||
poppler # PDF support
|
poppler # PDF support
|
||||||
freetype # Font rendering engine
|
freetype # Font rendering engine
|
||||||
|
|
@ -255,44 +397,43 @@
|
||||||
###########
|
###########
|
||||||
|
|
||||||
strawberry # Музыкальный плеер
|
strawberry # Музыкальный плеер
|
||||||
obs-studio # Запись видео # TODO: Настройки надо сделать декларативными
|
obs-studio # Запись видео
|
||||||
picard # Массовый редактор метаданных музыки
|
# picard # Массовый редактор метаданных музыки
|
||||||
mousai # Опенсорс шазам. Со временем просит платный api
|
# mousai # Опенсорс шазам. Со временем просит платный api
|
||||||
spek # Спектрограмма аудио.
|
# spek # Спектрограмма аудио.
|
||||||
mpv # Смотреть видео
|
mpv # Смотреть видео
|
||||||
# Смотреть картинки
|
# Смотреть картинки
|
||||||
imv # Не умеет показывать анимированные webp. Через раз может показывать avif
|
imv # Не умеет показывать анимированные webp. Через раз может показывать avif
|
||||||
qview # Умеет в анимированные webp. Не умеет открывать avif
|
qview # Умеет открывать всё, включая анимированный webp и avif
|
||||||
feh # Нужен в большом количестве софта как зависимость. Может в avif, но криво
|
feh # Нужен в большом количестве софта как зависимость. Может в avif, но криво
|
||||||
|
|
||||||
############
|
############
|
||||||
## Social ##
|
## Social ##
|
||||||
############
|
############
|
||||||
|
|
||||||
(discord.override { # Discord
|
# (pkgs2.discord.override { # Discord с плагинами
|
||||||
withOpenASAR = true; # Оптимизатор дискрода
|
# # withOpenASAR = true; # Оптимизатор дискрода
|
||||||
withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными
|
# withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными
|
||||||
})
|
# })
|
||||||
telegram-desktop
|
pkgs2.discord
|
||||||
# revolt-desktop # FOSS аналог дискорда
|
pkgs2.telegram-desktop
|
||||||
|
|
||||||
###########
|
###########
|
||||||
## Games ##
|
## Games ##
|
||||||
###########
|
###########
|
||||||
|
|
||||||
|
# Чтоб не компилить 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
|
||||||
# steam # Мб не надо сюда писать, раз через programs.steam редачу
|
# pkgs2.osu-lazer-bin
|
||||||
# heroic # A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
|
|
||||||
# lutris # Запускать игры не из стима
|
|
||||||
# bottles # Минималистичная альтернатива lutris
|
|
||||||
|
|
||||||
# Мб зависимости
|
# Мб зависимости
|
||||||
|
protonup-qt # Управлять версиями proton-ge для steam
|
||||||
steam-run # На всякий случай
|
steam-run # На всякий случай
|
||||||
mangohud # Фпс и нагрузку на пк показывает в играх
|
pkgs2.mangohud # Фпс и нагрузку на пк показывает в играх
|
||||||
gamemode # Оптимизации линуха и игр
|
pkgs2.wineWowPackages.stableFull # support both 32- and 64-bit applications
|
||||||
wineWowPackages.stable # support both 32- and 64-bit applications
|
|
||||||
# wineWowPackages.staging # Можно назвать бета версией вайна
|
# wineWowPackages.staging # Можно назвать бета версией вайна
|
||||||
winetricks # winetricks (all versions)
|
pkgs2.winetricks # winetricks (all versions)
|
||||||
# wineWowPackages.waylandFull # native wayland support (unstable)
|
# wineWowPackages.waylandFull # native wayland support (unstable)
|
||||||
# protontricks # Running Winetricks commands for Proton-enabled games
|
# protontricks # Running Winetricks commands for Proton-enabled games
|
||||||
|
|
||||||
|
|
@ -301,28 +442,24 @@
|
||||||
############
|
############
|
||||||
|
|
||||||
krita # Рисовать 1. Часто крашится
|
krita # Рисовать 1. Часто крашится
|
||||||
gimp # Рисовать 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
|
||||||
|
|
||||||
##################
|
##################
|
||||||
## Productivity ##
|
## Productivity ##
|
||||||
##################
|
##################
|
||||||
|
|
||||||
obsidian # Заметки
|
obsidian # Заметки
|
||||||
planify # Task manager
|
pkgs2.planify # Task manager
|
||||||
|
|
||||||
#########
|
#########
|
||||||
## IDE ##
|
## IDE ##
|
||||||
#########
|
#########
|
||||||
|
|
||||||
neovim # Мб не надо писать, он у меня необычный, через nixvim flake
|
neovim
|
||||||
# vscode # Надо в home.packages писать, чтоб расширения ставились без рута
|
|
||||||
# jetbrains-toolbox # Надо в home.packages писать. https://nixos.wiki/wiki/Jetbrains_Tools
|
|
||||||
# zed-editor # На всякий тоже поставил в home.packages
|
|
||||||
helix # A Kakoune / Neovim inspired editor, written in Rust.
|
|
||||||
|
|
||||||
###########
|
###########
|
||||||
## Icons ##
|
## Icons ##
|
||||||
|
|
@ -333,6 +470,7 @@
|
||||||
kdePackages.breeze-icons # qt6
|
kdePackages.breeze-icons # qt6
|
||||||
papirus-icon-theme
|
papirus-icon-theme
|
||||||
material-icons
|
material-icons
|
||||||
|
gruvbox-plus-icons
|
||||||
|
|
||||||
############
|
############
|
||||||
## Vulkan ##
|
## Vulkan ##
|
||||||
|
|
@ -365,7 +503,7 @@
|
||||||
vial # GUI для qmk, если клавиатура поддерживает
|
vial # GUI для qmk, если клавиатура поддерживает
|
||||||
fontconfig
|
fontconfig
|
||||||
zlib
|
zlib
|
||||||
google-fonts
|
# google-fonts
|
||||||
libva-utils # Проверяет работоспособность VAAPI?
|
libva-utils # Проверяет работоспособность VAAPI?
|
||||||
clinfo # Проверяет работоспособность OpenCL?
|
clinfo # Проверяет работоспособность OpenCL?
|
||||||
libsecret # Хранить и получать аккаунты у приложений. Например для jetbrains toolbox
|
libsecret # Хранить и получать аккаунты у приложений. Например для jetbrains toolbox
|
||||||
|
|
|
||||||
6
nvim/.gitignore
vendored
Normal file
6
nvim/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
tags
|
||||||
|
test.sh
|
||||||
|
.luarc.json
|
||||||
|
nvim
|
||||||
|
|
||||||
|
spell/
|
||||||
6
nvim/.stylua.toml
Normal file
6
nvim/.stylua.toml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
column_width = 160
|
||||||
|
line_endings = "Unix"
|
||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 4
|
||||||
|
quote_style = "AutoPreferSingle"
|
||||||
|
call_parentheses = "None"
|
||||||
273
nvim/README.md
Normal file
273
nvim/README.md
Normal file
|
|
@ -0,0 +1,273 @@
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Это форк [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.
|
||||||
|
|
||||||
|
Тут будет лежать мой конфиг nvim. Я хочу, чтоб он был отдельно от nix конфигов, чтоб не надо было ничего ребилдить.
|
||||||
|
|
||||||
|
Первый запуск конфига может быть долгим. Не прерывай этот процесс, пока не появится меню плагин манагера
|
||||||
|
|
||||||
|
Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
|
||||||
|
|
||||||
|
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, то есть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
|
||||||
|
https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e
|
||||||
|
|
||||||
|
Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
|
||||||
|
|
||||||
|
Конфиг сделан для NixOS. Я не знаю работает ли он в других дистрибутивах.
|
||||||
|
|
||||||
|
Сайт с топами плагинов и тем - https://dotfyle.com/neovim/colorscheme/top
|
||||||
|
LSP list - https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt
|
||||||
|
|
||||||
|
Логи для форматтеров `~/.local/state/nvim/conform.log`
|
||||||
|
Логи для lsp `~/.local/state/nvim/lsp.log`
|
||||||
|
|
||||||
|
> ⚠️ **Warning**: Некоторых lsp в mason не существует и их надо качать отдельно. Или они не работают в NixOS, если их качать через mason. Такие lsp я настроил отдельно и скачал как пакет. Из конфига mason я их удалил. **Не скачай случайно эти lsp через mason руками, когда они уже настроены как отдельный пакет**. Это же касается форматтеров и линтеров. Их я стараюсь качать как системный пакет, а не через mason.
|
||||||
|
|
||||||
|
> ⚠️ **Warning**: Я вообще перестал качать что либо через mason, используя его только как поиск разных инструментов для нужного мне языка. Так что лучше ничего не качать через него.
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
На новом пк руками делаю симлинк в `~/.config/nvim`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ln -s ~/nixos-private-dots/nvim ~/.config/nvim
|
||||||
|
```
|
||||||
|
### Зависимости
|
||||||
|
|
||||||
|
Для работы этого конфига надо установить некоторые пакеты в систему. Часть из них я напишу ниже, часть находится в `packages.nix` в категории `программирование`
|
||||||
|
|
||||||
|
Это мне пришлось скачать для работы конфига на NixOS с нужными мне инструментами:
|
||||||
|
- `neovim`
|
||||||
|
- `git`
|
||||||
|
- `unzip`
|
||||||
|
- `ripgrep`
|
||||||
|
- `fd`
|
||||||
|
- `xclip` на X11 или `wl-clipboard` на Wayland
|
||||||
|
- `tree-sitter`
|
||||||
|
- `ueberzugpp`
|
||||||
|
- Любой nerd font
|
||||||
|
|
||||||
|
Пакеты для разных языков могут часть меняться, так что ищем в `packages.nix`
|
||||||
|
|
||||||
|
Чтоб понять есть ли проблемы с конфигом, может какие-то пакеты отсутствуют, можно запустить `:checkhealth`.
|
||||||
|
|
||||||
|
## Изменить в будущем
|
||||||
|
|
||||||
|
Сейчас я сделал в стоке везде табуляцию в 4 символа на таб. Не пробелы. Если захочу это исправить и сделать per language настройки, то это можно сделать по разному. Сейчас у меня lsp/formatter сами заменяют табы на пробелы при сохранении файла.
|
||||||
|
|
||||||
|
Use `:h ftplugin` together with `:h :setlocal`
|
||||||
|
В каталоге nvim надо сделать каталог `ftplugin` и в него добавлять файлы `filetype.lua`. Например для python будет `python.lua`. И там можно писать настройки для каждого отдельного языка:
|
||||||
|
```lua
|
||||||
|
vim.bo.tabstop = 4 -- size of a hard tabstop (ts).
|
||||||
|
vim.bo.shiftwidth = 4 -- size of an indentation (sw).
|
||||||
|
vim.bo.expandtab = true -- always uses spaces instead of tab characters (et).
|
||||||
|
vim.bo.softtabstop = 4 -- number of spaces a <Tab> counts for. When 0, feature is off (sts)
|
||||||
|
```
|
||||||
|
|
||||||
|
Если не хочется возиться с тонной файлов, то можно добавить это в init.vim (надо переписать для init.lua):
|
||||||
|
```vim
|
||||||
|
autocmd BufEnter *.py :setlocal tabstop=4 shiftwidth=4 expandtab
|
||||||
|
autocmd BufEnter *.js :setlocal tabstop=2 shiftwidth=2 expandtab
|
||||||
|
```
|
||||||
|
|
||||||
|
Per project можно использовать `.editorconfig` файл в корне проекта. Нвим должен работать с его настройками.
|
||||||
|
|
||||||
|
## Бинды
|
||||||
|
|
||||||
|
Тут будет список биндов, которых нет в стандартном NeoVim
|
||||||
|
|
||||||
|
### Мои бинды
|
||||||
|
|
||||||
|
Все бинды можно искать прям в neovim, если нажать `Space s k`, то есть `S`earch `K`eymaps
|
||||||
|
|
||||||
|
Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные.
|
||||||
|
|
||||||
|
| Bind | Description |
|
||||||
|
|---------------------|---------------------------------------------------------|
|
||||||
|
| `K` | Hover documentation |
|
||||||
|
| `ctrl+o` | Go back |
|
||||||
|
| `ctrl+i` | Go forward (if you went backwards) |
|
||||||
|
| `p` | Paste from nvim register |
|
||||||
|
| `ctrl+shift+v` | Paste from system clipboard |
|
||||||
|
| `y` | Yank(copy) to nvim register |
|
||||||
|
| `space y` | Yank(copy) to system clipboard |
|
||||||
|
| `d` | Delete(copy) to nvim register |
|
||||||
|
| `space d` | Delete(copy) to system clipboard |
|
||||||
|
| `alt + up/down/j/k` | Move lines in visual mode |
|
||||||
|
| `[d` | Go to previous `D`iagnostic message |
|
||||||
|
| `]d` | Go to next `D`iagnostic message |
|
||||||
|
| `space e` | Show diagnostic `E`rror message |
|
||||||
|
| `space q` | Open diagnostic `Q`uickfix |
|
||||||
|
| `ctrl+l` | Перейти к следующему плейсхолдеру сниппета в insert mod |
|
||||||
|
|
||||||
|
|
||||||
|
Бинды в таблице ниже нажимаются без пробела перед ними. Просто бинд
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|-----------|----------------------------------------------------------------------------------------------------------------------------------|----------------|
|
||||||
|
| `esc esc` | Exit terminal mode (Or use `<C-\><C-n>` to exit terminal mode) | settings.lua |
|
||||||
|
| `esc` | Creal highlights on search when pressing Esc in normal mode | settings.lua |
|
||||||
|
| `gp` | `G`oto context (`p`arent) | treesitter.lua |
|
||||||
|
| `gd` | `G`oto `D`efinition | lsp.lua |
|
||||||
|
| `gr` | `G`oto `R`eferences | lsp.lua |
|
||||||
|
| `gI` | `G`oto `I`mplementation | lsp.lua |
|
||||||
|
| `gD` | `G`oto `D`eclaration. This is not Goto Definition, this is Goto Declaration. For example, in C this would take you to the header | lsp.lua |
|
||||||
|
| `gc` | Toggle Comment from mini-comment plugin | - |
|
||||||
|
| `\` | Toggle file tree | file-tree.lua |
|
||||||
|
|
||||||
|
Перед каждым из биндов в нижней таблице надо нажать `leader`, что есть `space`, пробел.
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|---------|---------------------------------------------------------------------------------------------------------------------------------------------------|----------------|
|
||||||
|
| `tt` | `T`oggle `T`erminal | terminal.lua |
|
||||||
|
| `gta` | `G`o `T`ag `A`dd. Add json tags for struct | golang.lua |
|
||||||
|
| `gtr` | `G`o `T`ag `R`emove. Remove json tags for struct | golang.lua |
|
||||||
|
| `gs` | `G`o fill `S`truct | golang.lua |
|
||||||
|
| `gc` | `G`o fill Switch `C`ase | golang.lua |
|
||||||
|
| `gp` | `G`o fix `P`lurals (change func foo(b int, a int, r int) -> func foo(b, a, r int)) | golang.lua |
|
||||||
|
| `ge` | `G`o if `E`rr | golang.lua |
|
||||||
|
| `gi` | `G`o `I`mports | golang.lua |
|
||||||
|
| `D` | Type `D`efinition. Jump to the typo of the word under your cursor. | lsp.lua |
|
||||||
|
| | Useful when you're not sure what type a variable is and you want to see the definition of its *type*, not where it was *defined*. | |
|
||||||
|
| `ds` | `D`ocument `S`ymbols. Fuzzy find all the symbols in your current document. Symbols are things like variables, funckions, types, etc. | lsp.lua |
|
||||||
|
| `ws` | `W`orkspace `S`ymbols. Fuzzy find all the symbols in your currend workspace. Similar to document symbols, except searches over you entire project | lsp.lua |
|
||||||
|
| `rn` | `R`e`n`ame. Rename the variable under your cursor. Most Language Servers support renaming across files, etc. | lsp.lua |
|
||||||
|
| `ca` | `C`ode `A`ction. Execute a code action, usually your cursor needs to be on top of an error or a suggestion from your LSP for this to activate | lsp.lua |
|
||||||
|
| `ss` | `S`earch Document `S`ymbols | lsp.lua |
|
||||||
|
| `sS` | `S`earch `S`elect Telescope | health.lua |
|
||||||
|
| `sh` | `S`earch `H`elp | health.lua |
|
||||||
|
| `sk` | `S`earch `K`eymaps | health.lua |
|
||||||
|
| `sf` | `S`earch `F`iles | health.lua |
|
||||||
|
| `sw` | `S`earch current `W`ord | health.lua |
|
||||||
|
| `sg` | `S`earch by `G`rep | health.lua |
|
||||||
|
| `sd` | `S`earch `D`iagnostics | health.lua |
|
||||||
|
| `sr` | `S`earch `R`esume | health.lua |
|
||||||
|
| `s.` | `S`earch Recent Files ("." for repeat) | health.lua |
|
||||||
|
| `space` | Find existing buffers. Аналог перелючения между вкладками | health.lua |
|
||||||
|
| `/` | Fuzzily search in current buffer | health.lua |
|
||||||
|
| `s/` | `S`earch `/` in Open Files. Live Grep in Open Files | health.lua |
|
||||||
|
| `sn` | `S`earch `N`eovim files. Shortcut for searching your Neovim configuration files | health.lua |
|
||||||
|
| `st` | `S`earch `T`hemes | health.lua |
|
||||||
|
| `q` | Open diagnostic `Q`uicfix list | settings.lua |
|
||||||
|
| `f` | `F`ormat buffer | autoformat.lua |
|
||||||
|
| `Sd` | `S`ession `D`elete | session.lua |
|
||||||
|
| `Sc` | `S`ession `C`reate | session.lua |
|
||||||
|
| `Backspace` | Session restore | session.lua |
|
||||||
|
|
||||||
|
|
||||||
|
### Git
|
||||||
|
|
||||||
|
Бинды начинаются с буквы `h`. Типо "Git `H`unk"
|
||||||
|
|
||||||
|
Без пробела
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|------|-------------------------------|--------------|
|
||||||
|
| `]c` | Jump to next git `C`hange | gitsigns.lua |
|
||||||
|
| `[c` | Jump to previous git `C`hange | gitsigns.lua |
|
||||||
|
Visual mode. С пробелом
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|------|------------------|--------------|
|
||||||
|
| `hs` | `S`tage git hunk | gitsigns.lua |
|
||||||
|
| `hr` | `R`eset git hunk | gitsigns.lua |
|
||||||
|
Normal mode. С пробелом
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|------|--------------------------------|--------------|
|
||||||
|
| `hs` | Git `S`tage hunk | gitsigns.lua |
|
||||||
|
| `hr` | Git `R`eset hunk | gitsigns.lua |
|
||||||
|
| `hS` | Git `S`tage buffer | gitsigns.lua |
|
||||||
|
| `hu` | Git `U`ndo stage hunk | gitsigns.lua |
|
||||||
|
| `hR` | Git `R`eset buffer | gitsigns.lua |
|
||||||
|
| `hp` | Git `P`review hunk | gitsigns.lua |
|
||||||
|
| `hb` | Git `B`lame line | gitsigns.lua |
|
||||||
|
| `hd` | Git `D`iff against index | gitsigns.lua |
|
||||||
|
| `hD` | Git `D`iff against last commit | gitsigns.lua |
|
||||||
|
| `td` | `T`oggle git show `B`lame line | gitsigns.lua |
|
||||||
|
| `tD` | `T`oggle git show `D`eleted | gitsigns.lua |
|
||||||
|
### Debug
|
||||||
|
|
||||||
|
Без пробела
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|------|--------------------------------|-----------|
|
||||||
|
| `F5` | Debug: Start/Continue | debug.lua |
|
||||||
|
| `F1` | Debug: Step Into | debug.lua |
|
||||||
|
| `F2` | Debug: Step Over | debug.lua |
|
||||||
|
| `F3` | Debug: Step Out | debug.lua |
|
||||||
|
| `F7` | Debug: See last session rusult | debug.lua |
|
||||||
|
С пробелом
|
||||||
|
|
||||||
|
| Bind | Description | File |
|
||||||
|
|------|----------------------------|-----------|
|
||||||
|
| `b` | Debug: Toggle `B`reakpoint | debug.lua |
|
||||||
|
| `B` | Debug: Set `B`reakpoint | debug.lua |
|
||||||
|
|
||||||
|
|
||||||
|
## Нюансы работы LSP/Linter/Formatter
|
||||||
|
|
||||||
|
Многие LSP в стоке имеют форматтирование кода. Иногда это бесит. Чтоб узнать какие LSP имеют форматирование в открытом в данный момент файле, можно использовать такую команду:
|
||||||
|
```lua
|
||||||
|
:lua for _, client in ipairs(vim.lsp.get_active_clients()) do print(client.name, client.server_capabilities.documentFormattingProvider) end
|
||||||
|
```
|
||||||
|
Чтоб выключить форматирование у LSP, можно заглянуть в `lsp.lua` и увидеть примеры кода. Например я выключил форматирование у `sqls` везде и у `html` в файлах `templ`. Если у всех выкл, но что-то форматирует, значит форматтер установлен отдельно.
|
||||||
|
|
||||||
|
Некоторые LSP/Linter/Formatter не могут просто взять и заработать на каком-то файле. Например для работы `tailwindcss lsp` обязательным условием является `конфиг файл tailwind` в каталоге проекта, иначе ничего не будет работать. Для многих lsp важно находить `root dir`, который определяется по наличию каталога `.git` в проекте, иначе никаких подсказок в коде не будет. Разные инструменты для работы с SQL зачастую требуют делать конект к базе данных, иначе ничего работать не будет. То есть с удобством написать тестовый SQL код вне проекта не получится.
|
||||||
|
|
||||||
|
Я постарался исправить это там, где возможно. Например мне пришлось использовать `sqls` вместо `postgres_lsp`, чтоб подсказки работали даже вне проекта. Но зачастую придётся создавать проект и настраивать его, чтоб получить полноценный опыт IDE
|
||||||
|
|
||||||
|
- `TailwindCSS` требует иметь свой config файл в директории проекта
|
||||||
|
- `TypeScript LSP` имеет [опциональные настройки](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt#ts_ls)
|
||||||
|
- `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)
|
||||||
|
- `rust-analyzer` имеет много опциональных настроек
|
||||||
|
- Чтоб `sql` работал внутри `.go` файлов, sql запросы надо писать внутри \`` так `\`. То есть внутри \` с пробелом в начале и конце, а не просто строка.
|
||||||
|
- `sqlfluff` требует иметь `.sqlfluff` в директории проекта. Вот пример конфига:
|
||||||
|
```toml
|
||||||
|
[sqlfluff]
|
||||||
|
|
||||||
|
# Supported dialects https://docs.sqlfluff.com/en/stable/dialects.html
|
||||||
|
# Or run 'sqlfluff dialects'
|
||||||
|
dialect = postgres
|
||||||
|
|
||||||
|
# One of [raw|jinja|python|placeholder]
|
||||||
|
templater = raw
|
||||||
|
|
||||||
|
# See https://stackoverflow.com/questions/608196/why-should-i-capitalize-my-sql-keywords-is-there-a-good-reason
|
||||||
|
[sqlfluff:rules:capitalisation.keywords]
|
||||||
|
capitalisation_policy = upper
|
||||||
|
[sqlfluff:rules:capitalisation.identifiers]
|
||||||
|
capitalisation_policy = lower
|
||||||
|
[sqlfluff:rules:capitalisation.functions]
|
||||||
|
extended_capitalisation_policy = lower
|
||||||
|
[sqlfluff:rules:capitalisation.literals]
|
||||||
|
capitalisation_policy = lower
|
||||||
|
[sqlfluff:rules:capitalisation.types]
|
||||||
|
extended_capitalisation_policy = lower
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Остальное
|
||||||
|
|
||||||
|
Мб потом добавлю сюда используемые плагины и для каких языков оно настроено.
|
||||||
|
|
||||||
|
Learn Lua https://learnxinyminutes.com/lua/
|
||||||
|
|
||||||
|
After understanding a bit more about Lua, you can use `:help lua-guide` as a reference for how Neovim integrates Lua. (or HTML version): https://neovim.io/doc/user/lua-guide.html
|
||||||
|
|
||||||
|
Use "`<space>sh`" to `[s]`earch the `[h]`elp documentation,
|
||||||
|
|
||||||
|
If you experience any errors while trying to install kickstart, run `:checkhealth` for more info
|
||||||
|
|
||||||
4
nvim/ftplugin/javascript.lua
Normal file
4
nvim/ftplugin/javascript.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.softtabstop = 2
|
||||||
4
nvim/ftplugin/nix.lua
Normal file
4
nvim/ftplugin/nix.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.softtabstop = 2
|
||||||
4
nvim/ftplugin/proto.lua
Normal file
4
nvim/ftplugin/proto.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.softtabstop = 2
|
||||||
4
nvim/ftplugin/typescript.lua
Normal file
4
nvim/ftplugin/typescript.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.softtabstop = 2
|
||||||
4
nvim/ftplugin/typescriptreact.lua
Normal file
4
nvim/ftplugin/typescriptreact.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.bo.expandtab = true
|
||||||
|
vim.bo.tabstop = 2
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
vim.bo.softtabstop = 2
|
||||||
154
nvim/init.lua
Normal file
154
nvim/init.lua
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
-- [[ Базовые настройки. Не плагины ]]
|
||||||
|
require 'kickstart.settings'
|
||||||
|
require 'custom.terminal'
|
||||||
|
require 'custom.sessions'
|
||||||
|
|
||||||
|
-- [[ Install `lazy.nvim` plugin manager ]]
|
||||||
|
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
|
||||||
|
-- git clone https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy/lazy.nvim
|
||||||
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||||
|
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
error('Error cloning lazy.nvim:\n' .. out)
|
||||||
|
end
|
||||||
|
end ---@diagnostic disable-next-line: undefined-field
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- [[ Configure and install plugins ]]
|
||||||
|
--
|
||||||
|
-- To check the current status of your plugins, run
|
||||||
|
-- :Lazy
|
||||||
|
--
|
||||||
|
-- You can press `?` in this menu for help. Use `:q` to close the window
|
||||||
|
--
|
||||||
|
-- To update plugins you can run
|
||||||
|
-- :Lazy update
|
||||||
|
--
|
||||||
|
-- NOTE: Here is where you install your plugins.
|
||||||
|
require('lazy').setup({
|
||||||
|
|
||||||
|
---------------------------------------------
|
||||||
|
-- Установлены из коробки в kickstart.nvim --
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
-- Git integration for buffers
|
||||||
|
require 'kickstart.plugins.gitsigns',
|
||||||
|
|
||||||
|
-- Useful plugin to show you pending keybinds.
|
||||||
|
require 'kickstart.plugins.which-key',
|
||||||
|
|
||||||
|
-- Fuzzy Finder (files, lsp, etc)
|
||||||
|
require 'kickstart.plugins.telescope',
|
||||||
|
|
||||||
|
-- LSP Plugins
|
||||||
|
require 'kickstart.plugins.lsp',
|
||||||
|
|
||||||
|
-- Autoformat
|
||||||
|
require 'kickstart.plugins.autoformat',
|
||||||
|
|
||||||
|
-- Autocompletion
|
||||||
|
require 'kickstart.plugins.completion',
|
||||||
|
|
||||||
|
-- Themes
|
||||||
|
require 'kickstart.plugins.themes',
|
||||||
|
|
||||||
|
-- Highlight todo, notes, etc in comments
|
||||||
|
require 'kickstart.plugins.todo-comments',
|
||||||
|
|
||||||
|
-- Collection of various small independent plugins/modules
|
||||||
|
require 'kickstart.plugins.mini',
|
||||||
|
|
||||||
|
-- Highlight, edit, and navigate code
|
||||||
|
require 'kickstart.plugins.treesitter',
|
||||||
|
|
||||||
|
-- Debug your code via Debug Adapter Protocol
|
||||||
|
require 'kickstart.plugins.debug',
|
||||||
|
|
||||||
|
-- Add indentation guides even on blank lines
|
||||||
|
require 'kickstart.plugins.indent_line',
|
||||||
|
|
||||||
|
-- Linting
|
||||||
|
require 'kickstart.plugins.lint',
|
||||||
|
|
||||||
|
-- Autopairs
|
||||||
|
require 'kickstart.plugins.autopairs',
|
||||||
|
|
||||||
|
-- Browse the file system
|
||||||
|
require 'kickstart.plugins.file-tree',
|
||||||
|
|
||||||
|
-------------------------------------
|
||||||
|
-- Установил руками под свои нужды --
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
-- Supercharge your Rust experience in Neovim
|
||||||
|
require 'custom.plugins.rust',
|
||||||
|
|
||||||
|
-- Feature-Rich Go Plugin for Neovim
|
||||||
|
require 'custom.plugins.golang',
|
||||||
|
|
||||||
|
-- Plugins for git
|
||||||
|
require 'custom.plugins.git',
|
||||||
|
|
||||||
|
-- Plugins for color highlight
|
||||||
|
require 'custom.plugins.colorizer',
|
||||||
|
|
||||||
|
-- Symbol usage plugin
|
||||||
|
require 'custom.plugins.symbol_usage',
|
||||||
|
|
||||||
|
-- Adding history for nvim clipboard
|
||||||
|
require 'custom.plugins.clip_history',
|
||||||
|
|
||||||
|
-- Autoformat markdown tables
|
||||||
|
{
|
||||||
|
'Kicamon/markdown-table-mode.nvim',
|
||||||
|
config = function()
|
||||||
|
require('markdown-table-mode').setup {
|
||||||
|
filetype = {
|
||||||
|
'*.md',
|
||||||
|
},
|
||||||
|
options = {
|
||||||
|
insert = true, -- when typing "|"
|
||||||
|
insert_leave = true, -- when leaving insert
|
||||||
|
pad_separator_line = false, -- add space in separator line
|
||||||
|
alig_style = 'default', -- default, left, center, right
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
|
||||||
|
-- This is the easiest way to modularize your config.
|
||||||
|
--
|
||||||
|
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
|
||||||
|
-- { import = 'custom.plugins' },
|
||||||
|
--
|
||||||
|
-- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec`
|
||||||
|
-- Or use telescope!
|
||||||
|
-- In normal mode type `<space>sh` then write `lazy.nvim-plugin`
|
||||||
|
-- you can continue same window with `<space>sr` which resumes last telescope search
|
||||||
|
}, {
|
||||||
|
ui = {
|
||||||
|
-- If you are using a Nerd Font: set icons to an empty table which will use the
|
||||||
|
-- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table
|
||||||
|
icons = vim.g.have_nerd_font and {} or {
|
||||||
|
cmd = '⌘',
|
||||||
|
config = '🛠',
|
||||||
|
event = '📅',
|
||||||
|
ft = '📂',
|
||||||
|
init = '⚙',
|
||||||
|
keys = '🗝',
|
||||||
|
plugin = '🔌',
|
||||||
|
runtime = '💻',
|
||||||
|
require = '🌙',
|
||||||
|
source = '📄',
|
||||||
|
start = '🚀',
|
||||||
|
task = '📌',
|
||||||
|
lazy = '💤 ',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||||
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
45
nvim/lazy-lock.json
Normal file
45
nvim/lazy-lock.json
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
|
||||||
|
"blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" },
|
||||||
|
"conform.nvim": { "branch": "master", "commit": "db8a4a9edb217067b1d7a2e0362c74bfe9cc944d" },
|
||||||
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
|
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||||
|
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
|
||||||
|
"gitsigns.nvim": { "branch": "main", "commit": "011dc6718bcebdf92a5336bb0da79189c3afe621" },
|
||||||
|
"go.nvim": { "branch": "master", "commit": "da15ca55705c57ca10de1fbc1f0b6d6327c13e55" },
|
||||||
|
"gruvbox.nvim": { "branch": "main", "commit": "15958f5ee43e144856cd2084ce6c571bfdb44504" },
|
||||||
|
"guihua.lua": { "branch": "master", "commit": "d783191eaa75215beae0c80319fcce5e6b3beeda" },
|
||||||
|
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" },
|
||||||
|
"indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" },
|
||||||
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
|
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||||
|
"luvit-meta": { "branch": "main", "commit": "1df30b60b1b4aecfebc785aa98943db6c6989716" },
|
||||||
|
"markdown-table-mode.nvim": { "branch": "main", "commit": "fe207ea7cef615ccaf2c0f1257c58ffa0a50a9f5" },
|
||||||
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
||||||
|
"mason-nvim-dap.nvim": { "branch": "main", "commit": "09220b99d63d5363f219daa2785242ee5fddba7f" },
|
||||||
|
"mason-tool-installer.nvim": { "branch": "main", "commit": "5639d58a3d11ff7c05c8e31e159bfedae55d7961" },
|
||||||
|
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||||
|
"mini.nvim": { "branch": "main", "commit": "03387f53f1cb8c6a8ba0798041c6aa3525ed11ba" },
|
||||||
|
"neo-tree.nvim": { "branch": "v3.x", "commit": "1ef260eb4f54515fe121a2267b477efb054d108a" },
|
||||||
|
"nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
|
||||||
|
"nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" },
|
||||||
|
"nvim-colorizer.lua": { "branch": "master", "commit": "517df88cf2afb36652830df2c655df2da416a0ae" },
|
||||||
|
"nvim-dap": { "branch": "master", "commit": "a720d4966f758ab22e8ec28812b6df90a53e0f02" },
|
||||||
|
"nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" },
|
||||||
|
"nvim-dap-ui": { "branch": "master", "commit": "bc81f8d3440aede116f821114547a476b082b319" },
|
||||||
|
"nvim-lint": { "branch": "master", "commit": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8" },
|
||||||
|
"nvim-lspconfig": { "branch": "master", "commit": "8a1529e46eef5efc86c34c8d9bdd313abc2ecba0" },
|
||||||
|
"nvim-neoclip.lua": { "branch": "main", "commit": "831a97c7697736411a05ff8b91e8798ea4c2d6fb" },
|
||||||
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
|
"nvim-treesitter": { "branch": "master", "commit": "2586ea65faf45dcf1caf8d34510d50bb545c215a" },
|
||||||
|
"nvim-treesitter-context": { "branch": "master", "commit": "129fcc94fa986692926366e940a46f00d2a4abbe" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "d0cafff5c4347a604a07edf7bb9a91fda7eb577e" },
|
||||||
|
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||||
|
"rustaceanvim": { "branch": "master", "commit": "2b0f0b7e03751cf8ed123322f9b02d8f73fa9df7" },
|
||||||
|
"symbol-usage.nvim": { "branch": "main", "commit": "e07c07dfe7504295a369281e95a24e1afa14b243" },
|
||||||
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||||
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
|
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
|
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||||
|
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||||
|
}
|
||||||
14
nvim/lua/custom/plugins/clip_history.lua
Normal file
14
nvim/lua/custom/plugins/clip_history.lua
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Adding history for nvim clipboard
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'AckslD/nvim-neoclip.lua',
|
||||||
|
dependencies = {
|
||||||
|
{ 'nvim-telescope/telescope.nvim' },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('neoclip').setup()
|
||||||
|
vim.keymap.set('n', '<leader>sc', ':Telescope neoclip<CR>', { desc = '[S]earch [C]lip history' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
63
nvim/lua/custom/plugins/colorizer.lua
Normal file
63
nvim/lua/custom/plugins/colorizer.lua
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
-- A high-performance color highlighter
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'catgoose/nvim-colorizer.lua',
|
||||||
|
event = 'BufReadPre',
|
||||||
|
opts = { -- set to setup table
|
||||||
|
filetypes = { '*' }, -- Filetype options. Accepts table like `user_default_options`
|
||||||
|
buftypes = {}, -- Buftype options. Accepts table like `user_default_options`
|
||||||
|
-- Boolean | List of usercommands to enable. See User commands section.
|
||||||
|
user_commands = true, -- Enable all or some usercommands
|
||||||
|
lazy_load = false, -- Lazily schedule buffer highlighting setup function
|
||||||
|
user_default_options = {
|
||||||
|
names = true, -- "Name" codes like Blue or red. Added from `vim.api.nvim_get_color_map()`
|
||||||
|
names_opts = { -- options for mutating/filtering names.
|
||||||
|
lowercase = true, -- name:lower(), highlight `blue` and `red`
|
||||||
|
camelcase = true, -- name, highlight `Blue` and `Red`
|
||||||
|
uppercase = false, -- name:upper(), highlight `BLUE` and `RED`
|
||||||
|
strip_digits = false, -- ignore names with digits,
|
||||||
|
-- highlight `blue` and `red`, but not `blue3` and `red4`
|
||||||
|
},
|
||||||
|
-- Expects a table of color name to #RRGGBB value pairs. # is optional
|
||||||
|
-- Example: { cool = "#107dac", ["notcool"] = "ee9240" }
|
||||||
|
-- Set to false to disable, for example when setting filetype options
|
||||||
|
names_custom = false, -- Custom names to be highlighted: table|function|false
|
||||||
|
RGB = true, -- #RGB hex codes
|
||||||
|
RGBA = true, -- #RGBA hex codes
|
||||||
|
RRGGBB = true, -- #RRGGBB hex codes
|
||||||
|
RRGGBBAA = false, -- #RRGGBBAA hex codes
|
||||||
|
AARRGGBB = false, -- 0xAARRGGBB hex codes
|
||||||
|
rgb_fn = false, -- CSS rgb() and rgba() functions
|
||||||
|
hsl_fn = false, -- CSS hsl() and hsla() functions
|
||||||
|
css = false, -- Enable all CSS *features*:
|
||||||
|
-- names, RGB, RGBA, RRGGBB, RRGGBBAA, AARRGGBB, rgb_fn, hsl_fn
|
||||||
|
css_fn = false, -- Enable all CSS *functions*: rgb_fn, hsl_fn
|
||||||
|
-- Tailwind colors. boolean|'normal'|'lsp'|'both'. True sets to 'normal'
|
||||||
|
tailwind = false, -- Enable tailwind colors
|
||||||
|
tailwind_opts = { -- Options for highlighting tailwind names
|
||||||
|
update_names = false, -- When using tailwind = 'both', update tailwind names from LSP results. See tailwind section
|
||||||
|
},
|
||||||
|
-- parsers can contain values used in `user_default_options`
|
||||||
|
sass = { enable = false, parsers = { 'css' } }, -- Enable sass colors
|
||||||
|
-- Highlighting mode. 'background'|'foreground'|'virtualtext'
|
||||||
|
mode = 'background', -- Set the display mode
|
||||||
|
-- Virtualtext character to use
|
||||||
|
virtualtext = '■',
|
||||||
|
-- Display virtualtext inline with color. boolean|'before'|'after'. True sets to 'after'
|
||||||
|
virtualtext_inline = false,
|
||||||
|
-- Virtualtext highlight mode: 'background'|'foreground'
|
||||||
|
virtualtext_mode = 'foreground',
|
||||||
|
-- update color values even if buffer is not focused
|
||||||
|
-- example use: cmp_menu, cmp_docs
|
||||||
|
always_update = false,
|
||||||
|
-- hooks to invert control of colorizer
|
||||||
|
hooks = {
|
||||||
|
-- called before line parsing. Accepts boolean or function that returns boolean
|
||||||
|
-- see hooks section below
|
||||||
|
disable_line_highlight = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
5
nvim/lua/custom/plugins/git.lua
Normal file
5
nvim/lua/custom/plugins/git.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'sindrets/diffview.nvim',
|
||||||
|
},
|
||||||
|
}
|
||||||
28
nvim/lua/custom/plugins/golang.lua
Normal file
28
nvim/lua/custom/plugins/golang.lua
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
-- Feature-Rich Go Plugin for Neovim
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'ray-x/go.nvim',
|
||||||
|
dependencies = { -- optional packages
|
||||||
|
'ray-x/guihua.lua',
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require('go').setup {
|
||||||
|
tag_options = '', -- sets options sent to gomodifytags, i.e., json=omitempty
|
||||||
|
}
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gta', ':GoAddTag<CR>', { desc = '[G]o [T]ag [A]dd' })
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gtr', ':GoRmTag<CR>', { desc = '[G]o [T]ag [R]emove' })
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gs', ':GoFillStruct<CR>', { desc = '[G]o fill [S]truct' })
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gc', ':GoFillSwitch<CR>', { desc = '[G]o fill Switch [C]ase' })
|
||||||
|
-- Go Fix Plurals - change func foo(b int, a int, r int) -> func foo(b, a, r int)
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gp', ':GoFixPlurals<CR>', { desc = '[G]o fix [P]lurals' })
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>ge', ':GoIfErr<CR>', { desc = '[G]o if [E]rr' })
|
||||||
|
vim.keymap.set({ 'n' }, '<leader>gi', ':GoImports<CR>', { desc = '[G]o [I]mports' })
|
||||||
|
end,
|
||||||
|
event = { 'CmdlineEnter' },
|
||||||
|
ft = { 'go', 'gomod' },
|
||||||
|
-- build = ':lua require("go.install").update_all_sync()' -- if you need to install/update all binaries
|
||||||
|
},
|
||||||
|
}
|
||||||
9
nvim/lua/custom/plugins/rust.lua
Normal file
9
nvim/lua/custom/plugins/rust.lua
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
-- Supercharge your Rust experience in Neovim
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'mrcjkb/rustaceanvim',
|
||||||
|
version = '^5', -- For nvim0.11 use '^6'
|
||||||
|
lazy = false, -- This plugin is already lazy
|
||||||
|
},
|
||||||
|
}
|
||||||
87
nvim/lua/custom/plugins/symbol_usage.lua
Normal file
87
nvim/lua/custom/plugins/symbol_usage.lua
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
-- Symbol usage plugin
|
||||||
|
|
||||||
|
local SymbolKind = vim.lsp.protocol.SymbolKind
|
||||||
|
|
||||||
|
local function h(name)
|
||||||
|
return vim.api.nvim_get_hl(0, { name = name })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- hl-groups can have any name
|
||||||
|
vim.api.nvim_set_hl(0, 'SymbolUsageRounding', { fg = h('CursorLine').bg, italic = true })
|
||||||
|
vim.api.nvim_set_hl(0, 'SymbolUsageContent', { bg = h('CursorLine').bg, fg = h('Comment').fg, italic = true })
|
||||||
|
vim.api.nvim_set_hl(0, 'SymbolUsageRef', { fg = h('Function').fg, bg = h('CursorLine').bg, italic = true })
|
||||||
|
vim.api.nvim_set_hl(0, 'SymbolUsageDef', { fg = h('Type').fg, bg = h('CursorLine').bg, italic = true })
|
||||||
|
vim.api.nvim_set_hl(0, 'SymbolUsageImpl', { fg = h('@keyword').fg, bg = h('CursorLine').bg, italic = true })
|
||||||
|
|
||||||
|
local function text_format(symbol)
|
||||||
|
local res = {}
|
||||||
|
|
||||||
|
local round_start = { '', 'SymbolUsageRounding' }
|
||||||
|
local round_end = { '', 'SymbolUsageRounding' }
|
||||||
|
|
||||||
|
-- Indicator that shows if there are any other symbols in the same line
|
||||||
|
local stacked_functions_content = symbol.stacked_count > 0 and ('+%s'):format(symbol.stacked_count) or ''
|
||||||
|
|
||||||
|
if symbol.references then
|
||||||
|
local usage = symbol.references <= 1 and 'usage' or 'usages'
|
||||||
|
local num = symbol.references == 0 and 'no' or symbol.references
|
||||||
|
table.insert(res, round_start)
|
||||||
|
table.insert(res, { ' ', 'SymbolUsageRef' })
|
||||||
|
table.insert(res, { ('%s %s'):format(num, usage), 'SymbolUsageContent' })
|
||||||
|
table.insert(res, round_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
if symbol.definition then
|
||||||
|
if #res > 0 then
|
||||||
|
table.insert(res, { ' ', 'NonText' })
|
||||||
|
end
|
||||||
|
table.insert(res, round_start)
|
||||||
|
table.insert(res, { ' ', 'SymbolUsageDef' })
|
||||||
|
table.insert(res, { symbol.definition .. ' defs', 'SymbolUsageContent' })
|
||||||
|
table.insert(res, round_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
if symbol.implementation then
|
||||||
|
if #res > 0 then
|
||||||
|
table.insert(res, { ' ', 'NonText' })
|
||||||
|
end
|
||||||
|
table.insert(res, round_start)
|
||||||
|
table.insert(res, { ' ', 'SymbolUsageImpl' })
|
||||||
|
table.insert(res, { symbol.implementation .. ' impls', 'SymbolUsageContent' })
|
||||||
|
table.insert(res, round_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
if stacked_functions_content ~= '' then
|
||||||
|
if #res > 0 then
|
||||||
|
table.insert(res, { ' ', 'NonText' })
|
||||||
|
end
|
||||||
|
table.insert(res, round_start)
|
||||||
|
table.insert(res, { ' ', 'SymbolUsageImpl' })
|
||||||
|
table.insert(res, { stacked_functions_content, 'SymbolUsageContent' })
|
||||||
|
table.insert(res, round_end)
|
||||||
|
end
|
||||||
|
|
||||||
|
return res
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'Wansmer/symbol-usage.nvim',
|
||||||
|
event = 'LspAttach', -- need run before LspAttach if you use nvim 0.9. On 0.10 use 'LspAttach'
|
||||||
|
config = function()
|
||||||
|
require('symbol-usage').setup {
|
||||||
|
filetypes = {},
|
||||||
|
log = { enabled = false, level = 'INFO', stdout = {}, log_file = {}, notify = {} },
|
||||||
|
text_format = text_format,
|
||||||
|
kinds = {
|
||||||
|
SymbolKind.Function,
|
||||||
|
SymbolKind.Method,
|
||||||
|
SymbolKind.Class,
|
||||||
|
SymbolKind.Struct,
|
||||||
|
-- SymbolKind.Variable,
|
||||||
|
-- SymbolKind.Constant,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
115
nvim/lua/custom/sessions.lua
Normal file
115
nvim/lua/custom/sessions.lua
Normal file
|
|
@ -0,0 +1,115 @@
|
||||||
|
-- Add auto-sessions to mini.sessions plugin
|
||||||
|
-- Session names are generated dynamically based on the project directory and Git branch (if available)
|
||||||
|
-- Auto-save session on exit will only work if there is an active session in the project,
|
||||||
|
-- which can be set up, for example, via a custom key binding
|
||||||
|
-- When starting `nvim` with no arguments, will try to save session on exit
|
||||||
|
-- Whet starting `nvim .` (or another directory), will try to save session on exit
|
||||||
|
-- When starting `nvim some_file.txt` (or multiple files), won't do anything
|
||||||
|
|
||||||
|
-- Generate session name per project and per git branch for mini.sessions
|
||||||
|
local function get_git_branch()
|
||||||
|
local branch = vim.fn.systemlist('git branch --show-current')[1] or ''
|
||||||
|
return (vim.v.shell_error == 0 and branch ~= '') and branch or nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local function session_name()
|
||||||
|
local cwd = vim.fn.getcwd() -- current working directory
|
||||||
|
local branch = get_git_branch()
|
||||||
|
local name = cwd
|
||||||
|
|
||||||
|
local sha = vim.fn.sha256(name)
|
||||||
|
|
||||||
|
if branch then
|
||||||
|
sha = sha .. '-' .. branch
|
||||||
|
end
|
||||||
|
|
||||||
|
return sha
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Auto save session per project and per git branch on exit
|
||||||
|
local function should_save_session()
|
||||||
|
-- argc() returns the number of command line arguments
|
||||||
|
local argc = vim.fn.argc()
|
||||||
|
|
||||||
|
-- Case 1: nvim with no arguments
|
||||||
|
if argc == 0 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Case 2: nvim . (argument is a directory)
|
||||||
|
if argc == 1 then
|
||||||
|
local first_arg = vim.fn.argv(0) -- Get the first argument
|
||||||
|
return vim.fn.isdirectory(first_arg) == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
local function session_exist()
|
||||||
|
local session_dir = vim.fn.stdpath 'data' .. '/session/'
|
||||||
|
local session_path = session_dir .. session_name()
|
||||||
|
return vim.fn.filereadable(session_path) == 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local function save_session()
|
||||||
|
if not should_save_session() then
|
||||||
|
return -- Do not save if there were files in the arguments
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = session_name()
|
||||||
|
require('mini.sessions').write(name)
|
||||||
|
print('💾 Session Saved: ' .. name)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('VimLeavePre', {
|
||||||
|
desc = 'Auto save session on exit if session exists',
|
||||||
|
callback = function()
|
||||||
|
if not session_exist() then
|
||||||
|
return -- Do not autosave session if there is no session in the project
|
||||||
|
end
|
||||||
|
|
||||||
|
save_session()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Session restore
|
||||||
|
local function restore_session()
|
||||||
|
if not should_save_session() then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if not session_exist() then
|
||||||
|
return -- Do not restore session if there is no session in the project
|
||||||
|
end
|
||||||
|
|
||||||
|
local name = session_name()
|
||||||
|
require('mini.sessions').read(name)
|
||||||
|
print('💾 Session Restored: ' .. name)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('User', {
|
||||||
|
pattern = 'VeryLazy', -- Lazy.nvim event
|
||||||
|
desc = 'Auto restore session after plugin load',
|
||||||
|
callback = function()
|
||||||
|
-- Adding a small delay for stability
|
||||||
|
vim.defer_fn(function()
|
||||||
|
restore_session()
|
||||||
|
end, 50)
|
||||||
|
end,
|
||||||
|
nested = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- vim.keymap.set('n', '<Space><BS>', function()
|
||||||
|
-- restore_session()
|
||||||
|
-- end, { desc = 'Restore session' })
|
||||||
|
|
||||||
|
-- Session delete
|
||||||
|
vim.keymap.set('n', '<Space>Sd', function()
|
||||||
|
local name = session_name()
|
||||||
|
require('mini.sessions').delete(name)
|
||||||
|
print('💾 Session Deleted: ' .. name)
|
||||||
|
end, { desc = '[S]ession [D]elete' })
|
||||||
|
|
||||||
|
-- Session create
|
||||||
|
vim.keymap.set('n', '<Space>Sc', function()
|
||||||
|
save_session()
|
||||||
|
end, { desc = '[S]ession [C]reate' })
|
||||||
56
nvim/lua/custom/terminal.lua
Normal file
56
nvim/lua/custom/terminal.lua
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
local state = {
|
||||||
|
floating = {
|
||||||
|
buf = -1,
|
||||||
|
win = -1,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local function create_floating_window(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local width = opts.width or math.floor(vim.o.columns * 0.8)
|
||||||
|
local height = opts.height or math.floor(vim.o.lines * 0.8)
|
||||||
|
|
||||||
|
-- Calculate the position to center the window
|
||||||
|
local col = math.floor((vim.o.columns - width) / 2)
|
||||||
|
local row = math.floor((vim.o.lines - height) / 2)
|
||||||
|
|
||||||
|
-- Create a buffer
|
||||||
|
local buf = nil
|
||||||
|
if vim.api.nvim_buf_is_valid(opts.buf) then
|
||||||
|
buf = opts.buf
|
||||||
|
else
|
||||||
|
buf = vim.api.nvim_create_buf(false, true) -- No file, scratch buffer
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Define window configuration
|
||||||
|
local win_config = {
|
||||||
|
relative = 'editor',
|
||||||
|
width = width,
|
||||||
|
height = height,
|
||||||
|
col = col,
|
||||||
|
row = row,
|
||||||
|
style = 'minimal', -- No borders or extra UI elements
|
||||||
|
border = 'rounded',
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Create the floating window
|
||||||
|
local win = vim.api.nvim_open_win(buf, true, win_config)
|
||||||
|
|
||||||
|
return { buf = buf, win = win }
|
||||||
|
end
|
||||||
|
|
||||||
|
local toggle_terminal = function()
|
||||||
|
if not vim.api.nvim_win_is_valid(state.floating.win) then
|
||||||
|
state.floating = create_floating_window { buf = state.floating.buf }
|
||||||
|
if vim.bo[state.floating.buf].buftype ~= 'terminal' then
|
||||||
|
vim.cmd.terminal()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
vim.api.nvim_win_hide(state.floating.win)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Example usage:
|
||||||
|
-- Create a floating window with default dimensions
|
||||||
|
vim.api.nvim_create_user_command('Floaterminal', toggle_terminal, {})
|
||||||
|
vim.keymap.set({ 'n', 't' }, '<leader>tt', toggle_terminal, { desc = '[T]oggle [T]erminal' })
|
||||||
52
nvim/lua/kickstart/health.lua
Normal file
52
nvim/lua/kickstart/health.lua
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
--[[
|
||||||
|
--
|
||||||
|
-- This file is not required for your own configuration,
|
||||||
|
-- but helps people determine if their system is setup correctly.
|
||||||
|
--
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local check_version = function()
|
||||||
|
local verstr = tostring(vim.version())
|
||||||
|
if not vim.version.ge then
|
||||||
|
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.version.ge(vim.version(), '0.10-dev') then
|
||||||
|
vim.health.ok(string.format("Neovim version is: '%s'", verstr))
|
||||||
|
else
|
||||||
|
vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local check_external_reqs = function()
|
||||||
|
-- Basic utils: `git`, `make`, `unzip`
|
||||||
|
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
|
||||||
|
local is_executable = vim.fn.executable(exe) == 1
|
||||||
|
if is_executable then
|
||||||
|
vim.health.ok(string.format("Found executable: '%s'", exe))
|
||||||
|
else
|
||||||
|
vim.health.warn(string.format("Could not find executable: '%s'", exe))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
check = function()
|
||||||
|
vim.health.start 'kickstart.nvim'
|
||||||
|
|
||||||
|
vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
|
||||||
|
|
||||||
|
Fix only warnings for plugins and languages you intend to use.
|
||||||
|
Mason will give warnings for languages that are not installed.
|
||||||
|
You do not need to install, unless you want to use those languages!]]
|
||||||
|
|
||||||
|
local uv = vim.uv or vim.loop
|
||||||
|
vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
|
||||||
|
|
||||||
|
check_version()
|
||||||
|
check_external_reqs()
|
||||||
|
end,
|
||||||
|
}
|
||||||
53
nvim/lua/kickstart/plugins/autoformat.lua
Normal file
53
nvim/lua/kickstart/plugins/autoformat.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
-- Autoformat
|
||||||
|
-- Timeout для форматирования пришлось задать в 5 секунд, потому что sqlfluff очень долго форматирует
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'stevearc/conform.nvim',
|
||||||
|
event = { 'BufWritePre' },
|
||||||
|
cmd = { 'ConformInfo' },
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
'<leader>f',
|
||||||
|
function()
|
||||||
|
require('conform').format {
|
||||||
|
async = true,
|
||||||
|
lsp_format = 'fallback',
|
||||||
|
timeout_ms = 5000,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
mode = '',
|
||||||
|
desc = '[F]ormat buffer',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
notify_on_error = false,
|
||||||
|
format_on_save = function(bufnr)
|
||||||
|
-- Disable "format_on_save lsp_fallback" for languages that don't
|
||||||
|
-- have a well standardized coding style. You can add additional
|
||||||
|
-- languages here or re-enable it for the disabled ones.
|
||||||
|
local disable_filetypes = { c = true, cpp = true }
|
||||||
|
if disable_filetypes[vim.bo[bufnr].filetype] then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return {
|
||||||
|
timeout_ms = 5000,
|
||||||
|
lsp_format = 'fallback',
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
formatters_by_ft = {
|
||||||
|
lua = { 'stylua' },
|
||||||
|
go = { 'gofmt', 'injected' },
|
||||||
|
-- ['*'] = { 'injected' }, -- enables injected-lang formatting for all filetypes
|
||||||
|
|
||||||
|
-- Conform can also run multiple formatters sequentially
|
||||||
|
-- python = { "isort", "black" },
|
||||||
|
--
|
||||||
|
-- You can use 'stop_after_first' to run the first available formatter from the list
|
||||||
|
-- javascript = { "prettierd", "prettier", stop_after_first = true },
|
||||||
|
},
|
||||||
|
formatters = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
8
nvim/lua/kickstart/plugins/autopairs.lua
Normal file
8
nvim/lua/kickstart/plugins/autopairs.lua
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
-- autopairs
|
||||||
|
-- https://github.com/windwp/nvim-autopairs
|
||||||
|
|
||||||
|
return {
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
event = 'InsertEnter',
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
125
nvim/lua/kickstart/plugins/completion.lua
Normal file
125
nvim/lua/kickstart/plugins/completion.lua
Normal file
|
|
@ -0,0 +1,125 @@
|
||||||
|
-- Autocompletion
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'saghen/blink.cmp',
|
||||||
|
event = 'VimEnter',
|
||||||
|
version = '1.*',
|
||||||
|
dependencies = {
|
||||||
|
-- Snippet Engine
|
||||||
|
{
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
version = '2.*',
|
||||||
|
build = (function()
|
||||||
|
-- Build Step is needed for regex support in snippets.
|
||||||
|
-- This step is not supported in many windows environments.
|
||||||
|
-- Remove the below condition to re-enable on windows.
|
||||||
|
if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
return 'make install_jsregexp'
|
||||||
|
end)(),
|
||||||
|
dependencies = {
|
||||||
|
-- `friendly-snippets` contains a variety of premade snippets.
|
||||||
|
-- See the README about individual language/framework/plugin snippets:
|
||||||
|
-- https://github.com/rafamadriz/friendly-snippets
|
||||||
|
{
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
config = function()
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
'folke/lazydev.nvim',
|
||||||
|
},
|
||||||
|
--- @module 'blink.cmp'
|
||||||
|
--- @type blink.cmp.Config
|
||||||
|
opts = {
|
||||||
|
keymap = {
|
||||||
|
-- No, but seriously. Please read `:help ins-completion`, it is really good!
|
||||||
|
--
|
||||||
|
-- All presets have the following mappings:
|
||||||
|
-- <tab>/<s-tab>: move to right/left of your snippet expansion
|
||||||
|
-- <c-space>: Open menu or open docs if already open
|
||||||
|
-- <c-n>/<c-p> or <up>/<down>: Select next/previous item
|
||||||
|
-- <c-e>: Hide menu
|
||||||
|
-- <c-k>: Toggle signature help
|
||||||
|
--
|
||||||
|
-- See :h blink-cmp-config-keymap for defining your own keymap
|
||||||
|
-- preset = 'default',
|
||||||
|
|
||||||
|
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
||||||
|
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
||||||
|
|
||||||
|
-- Удалил все сток бинды и добавил сам что надо
|
||||||
|
-- https://cmp.saghen.dev/configuration/keymap.html
|
||||||
|
preset = 'none',
|
||||||
|
|
||||||
|
-- Open menu or open docs if already open
|
||||||
|
['<C-space>'] = { 'show', 'show_documentation', 'hide_documentation' },
|
||||||
|
-- Hide menu
|
||||||
|
['<C-e>'] = { 'hide' },
|
||||||
|
-- Accept the completion
|
||||||
|
['<C-y>'] = { 'select_and_accept' },
|
||||||
|
['<C-Tab>'] = { 'select_and_accept' },
|
||||||
|
|
||||||
|
-- Select next/previous item
|
||||||
|
['<Tab>'] = { 'select_next', 'fallback' },
|
||||||
|
['<S-Tab>'] = { 'select_prev', 'fallback' },
|
||||||
|
|
||||||
|
-- Scroll the documentation window [b]ack / [f]orward
|
||||||
|
['<C-b>'] = { 'scroll_documentation_up', 'fallback' },
|
||||||
|
['<C-f>'] = { 'scroll_documentation_down', 'fallback' },
|
||||||
|
|
||||||
|
-- Think of <c-l> as moving to the right of your snippet expansion.
|
||||||
|
-- So if you have a snippet that's like:
|
||||||
|
-- function $name($args)
|
||||||
|
-- $body
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- <c-l> will move you to the right of each of the expansion locations.
|
||||||
|
-- <c-h> is similar, except moving you backwards.
|
||||||
|
['<C-l>'] = { 'snippet_forward', 'fallback' },
|
||||||
|
['<C-h>'] = { 'snippet_backward', 'fallback' },
|
||||||
|
|
||||||
|
-- Toggle signature help
|
||||||
|
['<C-k>'] = { 'show_signature', 'hide_signature', 'fallback' },
|
||||||
|
},
|
||||||
|
|
||||||
|
appearance = {
|
||||||
|
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||||
|
-- Adjusts spacing to ensure icons are aligned
|
||||||
|
nerd_font_variant = 'mono',
|
||||||
|
},
|
||||||
|
|
||||||
|
completion = {
|
||||||
|
-- By default, you may press `<c-space>` to show the documentation.
|
||||||
|
-- Optionally, set `auto_show = true` to show the documentation after a delay.
|
||||||
|
documentation = { auto_show = true, auto_show_delay_ms = 500 },
|
||||||
|
},
|
||||||
|
|
||||||
|
sources = {
|
||||||
|
default = { 'lsp', 'path', 'snippets', 'lazydev' },
|
||||||
|
providers = {
|
||||||
|
lazydev = { module = 'lazydev.integrations.blink', score_offset = 100 },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
snippets = { preset = 'luasnip' },
|
||||||
|
|
||||||
|
-- Blink.cmp includes an optional, recommended rust fuzzy matcher,
|
||||||
|
-- which automatically downloads a prebuilt binary when enabled.
|
||||||
|
--
|
||||||
|
-- By default, we use the Lua implementation instead, but you may enable
|
||||||
|
-- the rust implementation via `'prefer_rust_with_warning'`
|
||||||
|
--
|
||||||
|
-- See :h blink-cmp-config-fuzzy for more information
|
||||||
|
fuzzy = { implementation = 'lua' },
|
||||||
|
|
||||||
|
-- Shows a signature help window while you type arguments for a function
|
||||||
|
signature = { enabled = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
148
nvim/lua/kickstart/plugins/debug.lua
Normal file
148
nvim/lua/kickstart/plugins/debug.lua
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
-- debug.lua
|
||||||
|
--
|
||||||
|
-- Shows how to use the DAP plugin to debug your code.
|
||||||
|
--
|
||||||
|
-- Primarily focused on configuring the debugger for Go, but can
|
||||||
|
-- be extended to other languages as well. That's why it's called
|
||||||
|
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- NOTE: Yes, you can install new plugins here!
|
||||||
|
'mfussenegger/nvim-dap',
|
||||||
|
-- NOTE: And you can specify dependencies as well
|
||||||
|
dependencies = {
|
||||||
|
-- Creates a beautiful debugger UI
|
||||||
|
'rcarriga/nvim-dap-ui',
|
||||||
|
|
||||||
|
-- Required dependency for nvim-dap-ui
|
||||||
|
'nvim-neotest/nvim-nio',
|
||||||
|
|
||||||
|
-- Installs the debug adapters for you
|
||||||
|
'williamboman/mason.nvim',
|
||||||
|
'jay-babu/mason-nvim-dap.nvim',
|
||||||
|
|
||||||
|
-- Add your own debuggers here
|
||||||
|
'leoluz/nvim-dap-go',
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
-- Basic debugging keymaps, feel free to change to your liking!
|
||||||
|
{
|
||||||
|
'<F5>',
|
||||||
|
function()
|
||||||
|
require('dap').continue()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Start/Continue',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<F1>',
|
||||||
|
function()
|
||||||
|
require('dap').step_into()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Step Into',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<F2>',
|
||||||
|
function()
|
||||||
|
require('dap').step_over()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Step Over',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<F3>',
|
||||||
|
function()
|
||||||
|
require('dap').step_out()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Step Out',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>b',
|
||||||
|
function()
|
||||||
|
require('dap').toggle_breakpoint()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Toggle Breakpoint',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'<leader>B',
|
||||||
|
function()
|
||||||
|
require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ')
|
||||||
|
end,
|
||||||
|
desc = 'Debug: Set Breakpoint',
|
||||||
|
},
|
||||||
|
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
||||||
|
{
|
||||||
|
'<F7>',
|
||||||
|
function()
|
||||||
|
require('dapui').toggle()
|
||||||
|
end,
|
||||||
|
desc = 'Debug: See last session result.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local dap = require 'dap'
|
||||||
|
local dapui = require 'dapui'
|
||||||
|
|
||||||
|
require('mason-nvim-dap').setup {
|
||||||
|
-- Makes a best effort to setup the various debuggers with
|
||||||
|
-- reasonable debug configurations
|
||||||
|
-- automatic_installation = true,
|
||||||
|
|
||||||
|
-- You can provide additional configuration to the handlers,
|
||||||
|
-- see mason-nvim-dap README for more information
|
||||||
|
handlers = {},
|
||||||
|
|
||||||
|
-- You'll need to check that you have the required things installed
|
||||||
|
-- online, please don't ask me how to install them :)
|
||||||
|
ensure_installed = { -- Скачать через mason (не надо)
|
||||||
|
-- Update this to ensure that you have the debuggers for the langs you want
|
||||||
|
-- 'delve',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Dap UI setup
|
||||||
|
-- For more information, see |:help nvim-dap-ui|
|
||||||
|
dapui.setup {
|
||||||
|
-- Set icons to characters that are more likely to work in every terminal.
|
||||||
|
-- Feel free to remove or use ones that you like more! :)
|
||||||
|
-- Don't feel like these are good choices.
|
||||||
|
icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
|
||||||
|
controls = {
|
||||||
|
icons = {
|
||||||
|
pause = '⏸',
|
||||||
|
play = '▶',
|
||||||
|
step_into = '⏎',
|
||||||
|
step_over = '⏭',
|
||||||
|
step_out = '⏮',
|
||||||
|
step_back = 'b',
|
||||||
|
run_last = '▶▶',
|
||||||
|
terminate = '⏹',
|
||||||
|
disconnect = '⏏',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Change breakpoint icons
|
||||||
|
-- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' })
|
||||||
|
-- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' })
|
||||||
|
-- local breakpoint_icons = vim.g.have_nerd_font
|
||||||
|
-- and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' }
|
||||||
|
-- or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' }
|
||||||
|
-- for type, icon in pairs(breakpoint_icons) do
|
||||||
|
-- local tp = 'Dap' .. type
|
||||||
|
-- local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak'
|
||||||
|
-- vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl })
|
||||||
|
-- end
|
||||||
|
|
||||||
|
dap.listeners.after.event_initialized['dapui_config'] = dapui.open
|
||||||
|
dap.listeners.before.event_terminated['dapui_config'] = dapui.close
|
||||||
|
dap.listeners.before.event_exited['dapui_config'] = dapui.close
|
||||||
|
|
||||||
|
-- Install golang specific config
|
||||||
|
require('dap-go').setup {
|
||||||
|
delve = {
|
||||||
|
-- On Windows delve must be run attached or it crashes.
|
||||||
|
-- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring
|
||||||
|
detached = vim.fn.has 'win32' == 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
44
nvim/lua/kickstart/plugins/file-tree.lua
Normal file
44
nvim/lua/kickstart/plugins/file-tree.lua
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
-- Neo-tree is a Neovim plugin to browse the file system
|
||||||
|
-- Не умеет работать со сессиями
|
||||||
|
-- https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-neo-tree/neo-tree.nvim',
|
||||||
|
branch = 'v3.x',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
|
||||||
|
'MunifTanjim/nui.nvim',
|
||||||
|
{ -- Optional image support in preview window: See `# Preview Mode` for more information
|
||||||
|
'3rd/image.nvim',
|
||||||
|
build = false, -- so that it doesn't build the rock
|
||||||
|
opts = {
|
||||||
|
backend = 'ueberzug', -- or "kitty"
|
||||||
|
processor = 'magick_cli', -- or "magick_rock"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lazy = false, -- neo-tree will lazily load itself
|
||||||
|
keys = {
|
||||||
|
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
||||||
|
},
|
||||||
|
---@module "neo-tree"
|
||||||
|
---@type neotree.Config?
|
||||||
|
opts = {
|
||||||
|
close_if_last_window = true,
|
||||||
|
filesystem = {
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
['\\'] = 'close_window',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filtered_items = {
|
||||||
|
visible = true, -- Show hidden files
|
||||||
|
-- hide_dotfiles = false,
|
||||||
|
-- hide_gitignored = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
79
nvim/lua/kickstart/plugins/gitsigns.lua
Normal file
79
nvim/lua/kickstart/plugins/gitsigns.lua
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
-- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||||
|
|
||||||
|
-- NOTE: Plugins can also be added by using a table,
|
||||||
|
-- with the first argument being the link and the following
|
||||||
|
-- keys can be used to configure plugin behavior/loading/etc.
|
||||||
|
--
|
||||||
|
-- Use `opts = {}` to force a plugin to be loaded.
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Here is a more advanced example where we pass configuration
|
||||||
|
-- options to `gitsigns.nvim`. This is equivalent to the following Lua:
|
||||||
|
-- require('gitsigns').setup({ ... })
|
||||||
|
--
|
||||||
|
-- See `:help gitsigns` to understand what the configuration keys do
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
opts = {
|
||||||
|
signs = {
|
||||||
|
add = { text = '+' },
|
||||||
|
change = { text = '~' },
|
||||||
|
delete = { text = '_' },
|
||||||
|
topdelete = { text = '‾' },
|
||||||
|
changedelete = { text = '~' },
|
||||||
|
},
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gitsigns = require 'gitsigns'
|
||||||
|
|
||||||
|
local function map(mode, l, r, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.buffer = bufnr
|
||||||
|
vim.keymap.set(mode, l, r, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Navigation
|
||||||
|
map('n', ']c', function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal { ']c', bang = true }
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk 'next'
|
||||||
|
end
|
||||||
|
end, { desc = 'Jump to next git [c]hange' })
|
||||||
|
|
||||||
|
map('n', '[c', function()
|
||||||
|
if vim.wo.diff then
|
||||||
|
vim.cmd.normal { '[c', bang = true }
|
||||||
|
else
|
||||||
|
gitsigns.nav_hunk 'prev'
|
||||||
|
end
|
||||||
|
end, { desc = 'Jump to previous git [c]hange' })
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
-- visual mode
|
||||||
|
map('v', '<leader>hs', function()
|
||||||
|
gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||||
|
end, { desc = 'stage git hunk' })
|
||||||
|
map('v', '<leader>hr', function()
|
||||||
|
gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' }
|
||||||
|
end, { desc = 'reset git hunk' })
|
||||||
|
-- normal mode
|
||||||
|
map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
|
||||||
|
map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
|
||||||
|
map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
|
||||||
|
map('n', '<leader>hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' })
|
||||||
|
map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
|
||||||
|
map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
|
||||||
|
map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
|
||||||
|
map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
|
||||||
|
map('n', '<leader>hD', function()
|
||||||
|
gitsigns.diffthis '@'
|
||||||
|
end, { desc = 'git [D]iff against last commit' })
|
||||||
|
-- Toggles
|
||||||
|
map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
|
||||||
|
map('n', '<leader>tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
11
nvim/lua/kickstart/plugins/indent_line.lua
Normal file
11
nvim/lua/kickstart/plugins/indent_line.lua
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- Add indentation guides even on blank lines
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'lukas-reineke/indent-blankline.nvim',
|
||||||
|
-- Enable `lukas-reineke/indent-blankline.nvim`
|
||||||
|
-- See `:help ibl`
|
||||||
|
main = 'ibl',
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
61
nvim/lua/kickstart/plugins/lint.lua
Normal file
61
nvim/lua/kickstart/plugins/lint.lua
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
return {
|
||||||
|
{ -- Linting
|
||||||
|
'mfussenegger/nvim-lint',
|
||||||
|
event = { 'BufReadPre', 'BufNewFile' },
|
||||||
|
config = function()
|
||||||
|
local lint = require 'lint'
|
||||||
|
lint.linters_by_ft = {
|
||||||
|
-- markdown = { 'markdownlint' },
|
||||||
|
-- go = { 'golangcilint' },
|
||||||
|
-- proto = { 'buf_lint' }, -- Крашит
|
||||||
|
}
|
||||||
|
|
||||||
|
-- To allow other plugins to add linters to require('lint').linters_by_ft,
|
||||||
|
-- instead set linters_by_ft like this:
|
||||||
|
-- lint.linters_by_ft = lint.linters_by_ft or {}
|
||||||
|
-- lint.linters_by_ft['markdown'] = { 'markdownlint' }
|
||||||
|
--
|
||||||
|
-- However, note that this will enable a set of default linters,
|
||||||
|
-- which will cause errors unless these tools are available:
|
||||||
|
-- {
|
||||||
|
-- clojure = { "clj-kondo" },
|
||||||
|
-- dockerfile = { "hadolint" },
|
||||||
|
-- inko = { "inko" },
|
||||||
|
-- janet = { "janet" },
|
||||||
|
-- json = { "jsonlint" },
|
||||||
|
-- markdown = { "vale" },
|
||||||
|
-- rst = { "vale" },
|
||||||
|
-- ruby = { "ruby" },
|
||||||
|
-- terraform = { "tflint" },
|
||||||
|
-- text = { "vale" }
|
||||||
|
-- }
|
||||||
|
--
|
||||||
|
-- You can disable the default linters by setting their filetypes to nil:
|
||||||
|
-- lint.linters_by_ft['clojure'] = nil
|
||||||
|
-- lint.linters_by_ft['dockerfile'] = nil
|
||||||
|
-- lint.linters_by_ft['inko'] = nil
|
||||||
|
-- lint.linters_by_ft['janet'] = nil
|
||||||
|
-- lint.linters_by_ft['json'] = nil
|
||||||
|
-- lint.linters_by_ft['markdown'] = nil
|
||||||
|
-- lint.linters_by_ft['rst'] = nil
|
||||||
|
-- lint.linters_by_ft['ruby'] = nil
|
||||||
|
-- lint.linters_by_ft['terraform'] = nil
|
||||||
|
-- lint.linters_by_ft['text'] = nil
|
||||||
|
|
||||||
|
-- Create autocommand which carries out the actual linting
|
||||||
|
-- on the specified events.
|
||||||
|
local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
|
||||||
|
group = lint_augroup,
|
||||||
|
callback = function()
|
||||||
|
-- Only run the linter in buffers that you can modify in order to
|
||||||
|
-- avoid superfluous noise, notably within the handy LSP pop-ups that
|
||||||
|
-- describe the hovered symbol using Markdown.
|
||||||
|
if vim.opt_local.modifiable:get() then
|
||||||
|
lint.try_lint()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
339
nvim/lua/kickstart/plugins/lsp.lua
Normal file
339
nvim/lua/kickstart/plugins/lsp.lua
Normal file
|
|
@ -0,0 +1,339 @@
|
||||||
|
-- LSP Plugins
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
||||||
|
-- used for completion, annotations and signatures of Neovim apis
|
||||||
|
'folke/lazydev.nvim',
|
||||||
|
ft = 'lua',
|
||||||
|
opts = {
|
||||||
|
library = {
|
||||||
|
-- Load luvit types when the `vim.uv` word is found
|
||||||
|
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ 'Bilal2453/luvit-meta', lazy = true },
|
||||||
|
{
|
||||||
|
-- Main LSP Configuration
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
dependencies = {
|
||||||
|
-- Automatically install LSPs and related tools to stdpath for Neovim
|
||||||
|
{ 'williamboman/mason.nvim', config = true }, -- NOTE: Must be loaded before dependants
|
||||||
|
'williamboman/mason-lspconfig.nvim',
|
||||||
|
'WhoIsSethDaniel/mason-tool-installer.nvim',
|
||||||
|
|
||||||
|
-- Useful status updates for LSP.
|
||||||
|
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
||||||
|
{ 'j-hui/fidget.nvim', opts = {} },
|
||||||
|
|
||||||
|
-- Allows extra capabilities provided by blink.cmp
|
||||||
|
'saghen/blink.cmp',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- Brief aside: **What is LSP?**
|
||||||
|
--
|
||||||
|
-- LSP is an initialism you've probably heard, but might not understand what it is.
|
||||||
|
--
|
||||||
|
-- LSP stands for Language Server Protocol. It's a protocol that helps editors
|
||||||
|
-- and language tooling communicate in a standardized fashion.
|
||||||
|
--
|
||||||
|
-- In general, you have a "server" which is some tool built to understand a particular
|
||||||
|
-- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers
|
||||||
|
-- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
|
||||||
|
-- processes that communicate with some "client" - in this case, Neovim!
|
||||||
|
--
|
||||||
|
-- LSP provides Neovim with features like:
|
||||||
|
-- - Go to definition
|
||||||
|
-- - Find references
|
||||||
|
-- - Autocompletion
|
||||||
|
-- - Symbol Search
|
||||||
|
-- - and more!
|
||||||
|
--
|
||||||
|
-- Thus, Language Servers are external tools that must be installed separately from
|
||||||
|
-- Neovim. This is where `mason` and related plugins come into play.
|
||||||
|
--
|
||||||
|
-- If you're wondering about lsp vs treesitter, you can check out the wonderfully
|
||||||
|
-- and elegantly composed help section, `:help lsp-vs-treesitter`
|
||||||
|
|
||||||
|
-- This function gets run when an LSP attaches to a particular buffer.
|
||||||
|
-- That is to say, every time a new file is opened that is associated with
|
||||||
|
-- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
|
||||||
|
-- function will be executed to configure the current buffer
|
||||||
|
vim.api.nvim_create_autocmd('LspAttach', {
|
||||||
|
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
-- NOTE: Remember that Lua is a real programming language, and as such it is possible
|
||||||
|
-- to define small helper and utility functions so you don't have to repeat yourself.
|
||||||
|
--
|
||||||
|
-- In this case, we create a function that lets us more easily define mappings specific
|
||||||
|
-- for LSP related items. It sets the mode, buffer and description for us each time.
|
||||||
|
local map = function(keys, func, desc, mode)
|
||||||
|
mode = mode or 'n'
|
||||||
|
vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Rename the variable under your cursor.
|
||||||
|
-- Most Language Servers support renaming across files, etc.
|
||||||
|
map('grn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||||
|
|
||||||
|
-- Execute a code action, usually your cursor needs to be on top of an error
|
||||||
|
-- or a suggestion from your LSP for this to activate.
|
||||||
|
map('gra', vim.lsp.buf.code_action, '[G]oto Code [A]ction', { 'n', 'x' })
|
||||||
|
|
||||||
|
-- Find references for the word under your cursor.
|
||||||
|
map('grr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||||
|
|
||||||
|
-- Jump to the implementation of the word under your cursor.
|
||||||
|
-- Useful when your language has ways of declaring types without an actual implementation.
|
||||||
|
map('gri', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||||
|
|
||||||
|
-- Jump to the definition of the word under your cursor.
|
||||||
|
-- This is where a variable was first declared, or where a function is defined, etc.
|
||||||
|
-- To jump back, press <C-t>.
|
||||||
|
map('grd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
|
||||||
|
|
||||||
|
-- WARN: This is not Goto Definition, this is Goto Declaration.
|
||||||
|
-- For example, in C this would take you to the header.
|
||||||
|
map('grD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||||
|
|
||||||
|
-- Fuzzy find all the symbols in your current document.
|
||||||
|
-- Symbols are things like variables, functions, types, etc.
|
||||||
|
map('gO', require('telescope.builtin').lsp_document_symbols, 'Open Document Symbols')
|
||||||
|
-- Было <leader>ds [D]ocument [S]ymbols
|
||||||
|
-- map('<leader>ss', require('telescope.builtin').lsp_document_symbols, 'Document [S]ymbols')
|
||||||
|
|
||||||
|
-- Fuzzy find all the symbols in your current workspace.
|
||||||
|
-- Similar to document symbols, except searches over your entire project.
|
||||||
|
map('gW', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Open Workspace Symbols')
|
||||||
|
|
||||||
|
-- Jump to the type of the word under your cursor.
|
||||||
|
-- Useful when you're not sure what type a variable is and you want to see
|
||||||
|
-- the definition of its *type*, not where it was *defined*.
|
||||||
|
map('grt', require('telescope.builtin').lsp_type_definitions, '[G]oto [T]ype Definition')
|
||||||
|
|
||||||
|
-- This function resolves a difference between neovim nightly (version 0.11) and stable (version 0.10)
|
||||||
|
---@param client vim.lsp.Client
|
||||||
|
---@param method vim.lsp.protocol.Method
|
||||||
|
---@param bufnr? integer some lsp support methods only in specific files
|
||||||
|
---@return boolean
|
||||||
|
local function client_supports_method(client, method, bufnr)
|
||||||
|
if vim.fn.has 'nvim-0.11' == 1 then
|
||||||
|
return client:supports_method(method, bufnr)
|
||||||
|
else
|
||||||
|
return client.supports_method(method, { bufnr = bufnr })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The following two autocommands are used to highlight references of the
|
||||||
|
-- word under your cursor when your cursor rests there for a little while.
|
||||||
|
-- See `:help CursorHold` for information about when this is executed
|
||||||
|
--
|
||||||
|
-- When you move your cursor, the highlights will be cleared (the second autocommand).
|
||||||
|
local client = vim.lsp.get_client_by_id(event.data.client_id)
|
||||||
|
-- if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then
|
||||||
|
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then
|
||||||
|
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.document_highlight,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
|
||||||
|
buffer = event.buf,
|
||||||
|
group = highlight_augroup,
|
||||||
|
callback = vim.lsp.buf.clear_references,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('LspDetach', {
|
||||||
|
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
|
||||||
|
callback = function(event2)
|
||||||
|
vim.lsp.buf.clear_references()
|
||||||
|
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- The following code creates a keymap to toggle inlay hints in your
|
||||||
|
-- code, if the language server you are using supports them
|
||||||
|
--
|
||||||
|
-- This may be unwanted, since they displace some of your code
|
||||||
|
-- if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then
|
||||||
|
if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_inlayHint, event.buf) then
|
||||||
|
map('<leader>th', function()
|
||||||
|
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf })
|
||||||
|
end, '[T]oggle Inlay [H]ints')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Change diagnostic symbols in the sign column (gutter)
|
||||||
|
if vim.g.have_nerd_font then
|
||||||
|
local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' }
|
||||||
|
local diagnostic_signs = {}
|
||||||
|
for type, icon in pairs(signs) do
|
||||||
|
diagnostic_signs[vim.diagnostic.severity[type]] = icon
|
||||||
|
end
|
||||||
|
vim.diagnostic.config { signs = { text = diagnostic_signs } }
|
||||||
|
end
|
||||||
|
|
||||||
|
-- LSP servers and clients are able to communicate to each other what features they support.
|
||||||
|
-- By default, Neovim doesn't support everything that is in the LSP specification.
|
||||||
|
-- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
|
||||||
|
-- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
|
||||||
|
local capabilities = require('blink.cmp').get_lsp_capabilities()
|
||||||
|
|
||||||
|
-- Enable the following language servers
|
||||||
|
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
||||||
|
--
|
||||||
|
-- Add any additional override configuration in the following tables. Available keys are:
|
||||||
|
-- - cmd (table): Override the default command used to start the server
|
||||||
|
-- - filetypes (table): Override the default list of associated filetypes for the server
|
||||||
|
-- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
|
||||||
|
-- - on_attach (func): Функция, которая вызывается, когда LSP подключается к буферу
|
||||||
|
-- - settings (table): Override the default settings passed when initializing the server.
|
||||||
|
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
|
||||||
|
local servers =
|
||||||
|
{ -- WARN: Качает через mason. Может не работать в NixOS. Оставил для других OS на будущее
|
||||||
|
-- See `:help lspconfig-all` for a list of all the pre-configured LSPs
|
||||||
|
--
|
||||||
|
-- Some languages (like typescript) have entire language plugins that can be useful:
|
||||||
|
-- https://github.com/pmizio/typescript-tools.nvim
|
||||||
|
--
|
||||||
|
-- But for many setups, the LSP (`ts_ls`) will work just fine
|
||||||
|
-- taplo
|
||||||
|
}
|
||||||
|
|
||||||
|
-- local util = require 'lspconfig.util'
|
||||||
|
local lspconfig = require 'lspconfig'
|
||||||
|
|
||||||
|
-- Nix
|
||||||
|
lspconfig.nixd.setup {}
|
||||||
|
|
||||||
|
-- Golang
|
||||||
|
lspconfig.gopls.setup {
|
||||||
|
completion = {
|
||||||
|
unimported = false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
lspconfig.templ.setup {}
|
||||||
|
|
||||||
|
-- Frontend
|
||||||
|
lspconfig.tailwindcss.setup {}
|
||||||
|
lspconfig.ts_ls.setup {
|
||||||
|
on_attach = function(client, bufnr) -- Выключить форматирование
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
lspconfig.htmx.setup {}
|
||||||
|
lspconfig.svelte.setup {}
|
||||||
|
lspconfig.emmet_language_server.setup {
|
||||||
|
filetypes = { 'templ', 'css', 'eruby', 'html', 'javascript', 'javascriptreact', 'less', 'sass', 'scss', 'pug', 'typescriptreact' },
|
||||||
|
}
|
||||||
|
local cap_css = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
cap_css.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
lspconfig.cssls.setup {
|
||||||
|
capabilities = cap_css,
|
||||||
|
}
|
||||||
|
local cap_html = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
cap_html.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
lspconfig.html.setup {
|
||||||
|
capabilities = cap_html,
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
-- Отключаем форматирование для файлов .templ
|
||||||
|
local ft = vim.api.nvim_buf_get_option(bufnr, 'filetype')
|
||||||
|
if ft == 'templ' then
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Lua
|
||||||
|
lspconfig.lua_ls.setup {
|
||||||
|
settings = {
|
||||||
|
Lua = {
|
||||||
|
completion = {
|
||||||
|
callSnippet = 'Replace',
|
||||||
|
},
|
||||||
|
-- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
|
||||||
|
-- diagnostics = { disable = { 'missing-fields' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- C/C++
|
||||||
|
lspconfig.clangd.setup {
|
||||||
|
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, -- Удалил "proto"
|
||||||
|
}
|
||||||
|
lspconfig.cmake.setup {}
|
||||||
|
|
||||||
|
-- Python
|
||||||
|
lspconfig.pyright.setup {}
|
||||||
|
lspconfig.ruff.setup {
|
||||||
|
on_attach = function(client, bufnr) -- Выключить форматирование
|
||||||
|
client.server_capabilities.documentFormattingProvider = false
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Rust
|
||||||
|
lspconfig.rust_analyzer.setup {}
|
||||||
|
|
||||||
|
-- Bash
|
||||||
|
lspconfig.bashls.setup {
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
local filename = vim.api.nvim_buf_get_name(bufnr)
|
||||||
|
if filename:match '/%.env$' or filename:match '/%.env%..+$' then
|
||||||
|
client.stop() -- отключить LSP только для .env
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- JSON
|
||||||
|
local cap_json = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
cap_json.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
lspconfig.jsonls.setup {
|
||||||
|
capabilities = cap_json,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Other
|
||||||
|
lspconfig.taplo.setup {}
|
||||||
|
lspconfig.vimls.setup {}
|
||||||
|
lspconfig.yamlls.setup {}
|
||||||
|
lspconfig.protols.setup {}
|
||||||
|
lspconfig.gdscript.setup {} -- Сам LSP в двигло встроен. Для линтера gdtoolkit_4 нужен
|
||||||
|
-- lspconfig.buf_ls.setup {}
|
||||||
|
|
||||||
|
-- Ensure the servers and tools above are installed
|
||||||
|
-- To check the current status of installed tools and/or manually install
|
||||||
|
-- other tools, you can run
|
||||||
|
-- :Mason
|
||||||
|
--
|
||||||
|
-- You can press `g?` for help in this menu.
|
||||||
|
require('mason').setup()
|
||||||
|
|
||||||
|
-- You can add other tools here that you want Mason to install
|
||||||
|
-- for you, so that they are available from within Neovim.
|
||||||
|
local ensure_installed = vim.tbl_keys(servers or {})
|
||||||
|
-- vim.list_extend(ensure_installed, {
|
||||||
|
-- 'stylua', -- Used to format Lua code
|
||||||
|
-- })
|
||||||
|
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
|
||||||
|
|
||||||
|
require('mason-lspconfig').setup {
|
||||||
|
ensure_installed = {}, -- explicitly set to an empty table (Kickstart populates installs via mason-tool-installer)
|
||||||
|
automatic_installation = false,
|
||||||
|
handlers = {
|
||||||
|
function(server_name)
|
||||||
|
local server = servers[server_name] or {}
|
||||||
|
-- This handles overriding only values explicitly passed
|
||||||
|
-- by the server configuration above. Useful when disabling
|
||||||
|
-- certain features of an LSP (for example, turning off formatting for ts_ls)
|
||||||
|
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
|
||||||
|
require('lspconfig')[server_name].setup(server)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
64
nvim/lua/kickstart/plugins/mini.lua
Normal file
64
nvim/lua/kickstart/plugins/mini.lua
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
-- Collection of various small independent plugins/modules
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'echasnovski/mini.nvim',
|
||||||
|
config = function()
|
||||||
|
-- Better Around/Inside textobjects
|
||||||
|
--
|
||||||
|
-- Examples:
|
||||||
|
-- - va) - [V]isually select [A]round [)]paren
|
||||||
|
-- - yinq - [Y]ank [I]nside [N]ext [Q]uote
|
||||||
|
-- - ci' - [C]hange [I]nside [']quote
|
||||||
|
require('mini.ai').setup { n_lines = 500 }
|
||||||
|
|
||||||
|
-- Add/delete/replace surroundings (brackets, quotes, etc.)
|
||||||
|
--
|
||||||
|
-- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
|
||||||
|
-- - sd' - [S]urround [D]elete [']quotes
|
||||||
|
-- - sr)' - [S]urround [R]eplace [)] [']
|
||||||
|
require('mini.surround').setup()
|
||||||
|
|
||||||
|
-- Sessions
|
||||||
|
require('mini.sessions').setup {
|
||||||
|
-- Whether to read default session if Neovim opened without file arguments
|
||||||
|
autoread = false,
|
||||||
|
|
||||||
|
-- Whether to write currently read session before quitting Neovim
|
||||||
|
autowrite = false,
|
||||||
|
|
||||||
|
-- Whether to force possibly harmful actions (meaning depends on function)
|
||||||
|
force = { read = false, write = true, delete = true },
|
||||||
|
|
||||||
|
-- Hook functions for actions. Default `nil` means 'do nothing'.
|
||||||
|
hooks = {
|
||||||
|
-- Before successful action
|
||||||
|
pre = { read = nil, write = nil, delete = nil },
|
||||||
|
-- After successful action
|
||||||
|
post = { read = nil, write = nil, delete = nil },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Whether to print session path after action
|
||||||
|
verbose = { read = false, write = true, delete = true },
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Simple and easy statusline.
|
||||||
|
-- You could remove this setup call if you don't like it,
|
||||||
|
-- and try some other statusline plugin
|
||||||
|
local statusline = require 'mini.statusline'
|
||||||
|
-- set use_icons to true if you have a Nerd Font
|
||||||
|
statusline.setup { use_icons = vim.g.have_nerd_font }
|
||||||
|
|
||||||
|
-- You can configure sections in the statusline by overriding their
|
||||||
|
-- default behavior. For example, here we set the section for
|
||||||
|
-- cursor location to LINE:COLUMN
|
||||||
|
---@diagnostic disable-next-line: duplicate-set-field
|
||||||
|
statusline.section_location = function()
|
||||||
|
return '%2l:%-2v'
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ... and there is more!
|
||||||
|
-- Check out: https://github.com/echasnovski/mini.nvim
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
121
nvim/lua/kickstart/plugins/telescope.lua
Normal file
121
nvim/lua/kickstart/plugins/telescope.lua
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
-- Fuzzy Finder (files, lsp, etc)
|
||||||
|
|
||||||
|
-- NOTE: Plugins can specify dependencies.
|
||||||
|
--
|
||||||
|
-- The dependencies are proper plugin specifications as well - anything
|
||||||
|
-- you do for a plugin at the top level, you can do for a dependency.
|
||||||
|
--
|
||||||
|
-- Use the `dependencies` key to specify the dependencies of a particular plugin
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
event = 'VimEnter',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim',
|
||||||
|
{ -- If encountering errors, see telescope-fzf-native README for installation instructions
|
||||||
|
'nvim-telescope/telescope-fzf-native.nvim',
|
||||||
|
|
||||||
|
-- `build` is used to run some command when the plugin is installed/updated.
|
||||||
|
-- This is only run then, not every time Neovim starts up.
|
||||||
|
build = 'make',
|
||||||
|
|
||||||
|
-- `cond` is a condition used to determine whether this plugin should be
|
||||||
|
-- installed and loaded.
|
||||||
|
cond = function()
|
||||||
|
return vim.fn.executable 'make' == 1
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{ 'nvim-telescope/telescope-ui-select.nvim' },
|
||||||
|
|
||||||
|
-- Useful for getting pretty icons, but requires a Nerd Font.
|
||||||
|
{ 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- Telescope is a fuzzy finder that comes with a lot of different things that
|
||||||
|
-- it can fuzzy find! It's more than just a "file finder", it can search
|
||||||
|
-- many different aspects of Neovim, your workspace, LSP, and more!
|
||||||
|
--
|
||||||
|
-- The easiest way to use Telescope, is to start by doing something like:
|
||||||
|
-- :Telescope help_tags
|
||||||
|
--
|
||||||
|
-- After running this command, a window will open up and you're able to
|
||||||
|
-- type in the prompt window. You'll see a list of `help_tags` options and
|
||||||
|
-- a corresponding preview of the help.
|
||||||
|
--
|
||||||
|
-- Two important keymaps to use while in Telescope are:
|
||||||
|
-- - Insert mode: <c-/>
|
||||||
|
-- - Normal mode: ?
|
||||||
|
--
|
||||||
|
-- This opens a window that shows you all of the keymaps for the current
|
||||||
|
-- Telescope picker. This is really useful to discover what Telescope can
|
||||||
|
-- do as well as how to actually do it!
|
||||||
|
|
||||||
|
-- [[ Configure Telescope ]]
|
||||||
|
-- See `:help telescope` and `:help telescope.setup()`
|
||||||
|
require('telescope').setup {
|
||||||
|
-- You can put your default mappings / updates / etc. in here
|
||||||
|
-- All the info you're looking for is in `:help telescope.setup()`
|
||||||
|
--
|
||||||
|
-- defaults = {
|
||||||
|
-- mappings = {
|
||||||
|
-- i = { ['<c-enter>'] = 'to_fuzzy_refine' },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
pickers = {
|
||||||
|
colorscheme = {
|
||||||
|
enable_preview = true, -- Themes preview
|
||||||
|
},
|
||||||
|
},
|
||||||
|
extensions = {
|
||||||
|
['ui-select'] = {
|
||||||
|
require('telescope.themes').get_dropdown(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Enable Telescope extensions if they are installed
|
||||||
|
pcall(require('telescope').load_extension, 'fzf')
|
||||||
|
pcall(require('telescope').load_extension, 'ui-select')
|
||||||
|
|
||||||
|
-- See `:help telescope.builtin`
|
||||||
|
local builtin = require 'telescope.builtin'
|
||||||
|
vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
|
||||||
|
vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
|
||||||
|
vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' })
|
||||||
|
vim.keymap.set('n', '<leader>sS', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
|
||||||
|
vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
|
||||||
|
vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
|
||||||
|
vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||||
|
vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' })
|
||||||
|
vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
|
||||||
|
vim.keymap.set('n', '<leader><leader>', function()
|
||||||
|
builtin.buffers { sort_mru = true, ignore_current_buffer = true }
|
||||||
|
end, { desc = '[ ] Find existing buffers' })
|
||||||
|
vim.keymap.set('n', '<leader>st', ':Telescope colorscheme<CR>', { desc = '[S]earch [T]hemes' })
|
||||||
|
|
||||||
|
-- Slightly advanced example of overriding default behavior and theme
|
||||||
|
vim.keymap.set('n', '<leader>/', function()
|
||||||
|
-- You can pass additional configuration to Telescope to change the theme, layout, etc.
|
||||||
|
builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
||||||
|
-- winblend = 10,
|
||||||
|
previewer = false,
|
||||||
|
})
|
||||||
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
||||||
|
|
||||||
|
-- It's also possible to pass additional configuration options.
|
||||||
|
-- See `:help telescope.builtin.live_grep()` for information about particular keys
|
||||||
|
vim.keymap.set('n', '<leader>s/', function()
|
||||||
|
builtin.live_grep {
|
||||||
|
grep_open_files = true,
|
||||||
|
prompt_title = 'Live Grep in Open Files',
|
||||||
|
}
|
||||||
|
end, { desc = '[S]earch [/] in Open Files' })
|
||||||
|
|
||||||
|
-- Shortcut for searching your Neovim configuration files
|
||||||
|
vim.keymap.set('n', '<leader>sn', function()
|
||||||
|
builtin.find_files { cwd = vim.fn.stdpath 'config' }
|
||||||
|
end, { desc = '[S]earch [N]eovim files' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
186
nvim/lua/kickstart/plugins/themes.lua
Normal file
186
nvim/lua/kickstart/plugins/themes.lua
Normal file
|
|
@ -0,0 +1,186 @@
|
||||||
|
-- You can easily change to a different colorscheme.
|
||||||
|
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
|
||||||
|
|
||||||
|
-- Cмена тем тут сделана неудобно
|
||||||
|
-- Чтоб сменить стандартную тему, надо раскомментировать vim.cmd.colorscheme под именем темы
|
||||||
|
-- и закомментировать это же у прошлой темы
|
||||||
|
|
||||||
|
-- В lazy.nvim параметр priority определяет порядок загрузки плагинов.
|
||||||
|
-- Чем выше значение priority, тем раньше загружается плагин.
|
||||||
|
-- Это особенно важно для тем, поскольку они часто требуют загрузки до других плагинов,
|
||||||
|
-- чтобы корректно применить стили.
|
||||||
|
|
||||||
|
-- https://dotfyle.com/neovim/colorscheme/top
|
||||||
|
|
||||||
|
-- Убедитесь, что Sonokai установлен через lazy.nvim или другой менеджер
|
||||||
|
local variants = { 'default', 'atlantis', 'andromeda', 'shusia', 'maia', 'espresso' }
|
||||||
|
|
||||||
|
-- Создаем псевдонимы для каждой темы
|
||||||
|
for _, variant in ipairs(variants) do
|
||||||
|
local alias = 'sonokai-' .. variant
|
||||||
|
vim.api.nvim_create_user_command('Colorscheme' .. variant, function()
|
||||||
|
vim.g.sonokai_style = variant
|
||||||
|
vim.cmd 'colorscheme sonokai'
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
-- Регистрируем в Neovim как отдельный colorscheme
|
||||||
|
vim.api.nvim_set_hl(0, alias, {})
|
||||||
|
vim.cmd(string.format("autocmd ColorSchemePre %s let g:sonokai_style = '%s' | colorscheme sonokai", alias, variant))
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- {
|
||||||
|
-- 'folke/tokyonight.nvim',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- init = function()
|
||||||
|
-- -- 'tokyonight-storm', 'tokyonight-moon', 'tokyonight-day', 'tokyonight-night'
|
||||||
|
-- -- vim.cmd.colorscheme 'tokyonight-night'
|
||||||
|
-- vim.cmd.hi 'Comment gui=none' -- Убрать курсив у коммента в коде
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'rose-pine/neovim',
|
||||||
|
-- name = 'rose-pine',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- init = function()
|
||||||
|
-- -- 'rose-pine-moon', 'rose-pine-main', 'rose-pine-dawn'
|
||||||
|
-- -- vim.cmd.colorscheme 'rose-pine-main'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'loctvl842/monokai-pro.nvim',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- config = function()
|
||||||
|
-- -- 'monokai-pro', 'monokai-pro-classic', 'monokai-pro-default', 'monokai-pro-machine',
|
||||||
|
-- -- 'monokai-pro-octagon', 'monokai-pro-spectrum', 'monokai-pro-ristretto'
|
||||||
|
-- -- vim.cmd.colorscheme 'monokai-pro'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'catppuccin/nvim',
|
||||||
|
-- name = 'catppuccin',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- config = function()
|
||||||
|
-- -- 'catppuccin', 'catppuccin-latte', 'catppuccin-frappe',
|
||||||
|
-- -- 'catppuccin-macchiato', 'catppuccin-mocha'
|
||||||
|
-- -- vim.cmd.colorscheme 'catppuccin'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'rebelot/kanagawa.nvim',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- config = function()
|
||||||
|
-- -- 'kanagawa-wave', 'kanagawa-dragon', 'kanagawa-lotus',
|
||||||
|
-- -- vim.cmd.colorscheme 'kanagawa-dragon'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'EdenEast/nightfox.nvim',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- config = function()
|
||||||
|
-- -- 'nightfox', 'dayfox', 'dawnfox', 'duskfox'
|
||||||
|
-- -- 'nordfox', 'terafox', 'carbonfox'
|
||||||
|
-- -- vim.cmd.colorscheme 'carbonfox'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'AlexvZyl/nordic.nvim',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- config = function()
|
||||||
|
-- -- vim.cmd.colorscheme 'nordic'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
|
||||||
|
----------------------------------------------------------
|
||||||
|
-- Гандоны не дают выбрать тему нормально --
|
||||||
|
-- Приходится конфиг переписывать ради выбора расцветок --
|
||||||
|
----------------------------------------------------------
|
||||||
|
{
|
||||||
|
'ellisonleao/gruvbox.nvim',
|
||||||
|
priority = 1000,
|
||||||
|
config = true,
|
||||||
|
-- opts = ...
|
||||||
|
init = function()
|
||||||
|
local colors = require('gruvbox').palette
|
||||||
|
colors.neutral_aqua = '#8bba7f'
|
||||||
|
colors.bright_red = '#f2594b'
|
||||||
|
colors.bright_green = '#a4ab43'
|
||||||
|
-- Default options:
|
||||||
|
require('gruvbox').setup {
|
||||||
|
terminal_colors = true, -- add neovim terminal colors
|
||||||
|
undercurl = true, -- underline errors
|
||||||
|
underline = true, -- underline links
|
||||||
|
bold = false, -- bold keywords
|
||||||
|
italic = {
|
||||||
|
strings = true,
|
||||||
|
emphasis = true, -- курсив выделения
|
||||||
|
comments = true,
|
||||||
|
operators = false,
|
||||||
|
folds = true, -- курсив для сворачиваемых блоков кода
|
||||||
|
},
|
||||||
|
strikethrough = true, -- зачёркиваниe удалённых или устаревших элементов
|
||||||
|
invert_selection = false,
|
||||||
|
invert_signs = false,
|
||||||
|
invert_tabline = false,
|
||||||
|
invert_intend_guides = false,
|
||||||
|
inverse = true, -- invert background for search, diffs, statuslines and errors
|
||||||
|
contrast = '', -- can be "hard", "soft" or empty string
|
||||||
|
palette_overrides = {},
|
||||||
|
overrides = {
|
||||||
|
LspReferenceText = { -- ссылки на элементы под курсором
|
||||||
|
bg = '#504945',
|
||||||
|
},
|
||||||
|
LspReferenceWrite = {
|
||||||
|
bg = '#504945',
|
||||||
|
},
|
||||||
|
LspReferenceRead = {
|
||||||
|
bg = '#504945',
|
||||||
|
},
|
||||||
|
String = {
|
||||||
|
fg = colors.neutral_aqua,
|
||||||
|
},
|
||||||
|
['@keyword.import.go'] = {
|
||||||
|
fg = colors.bright_red,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dim_inactive = false,
|
||||||
|
transparent_mode = false,
|
||||||
|
}
|
||||||
|
vim.cmd.colorscheme 'gruvbox'
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- {
|
||||||
|
-- 'sainnhe/everforest',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- init = function()
|
||||||
|
-- -- 'hard', 'medium', 'soft'
|
||||||
|
-- vim.g.everforest_background = 'hard'
|
||||||
|
-- vim.g.everforest_better_performance = 1
|
||||||
|
-- -- vim.g.everforest_enable_italic = true
|
||||||
|
-- -- vim.cmd.colorscheme 'everforest'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'sainnhe/sonokai',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- init = function()
|
||||||
|
-- -- Очень разные темы
|
||||||
|
-- -- 'default', 'atlantis', 'andromeda', 'shusia', 'maia', 'espresso'
|
||||||
|
-- vim.g.sonokai_style = 'shusia'
|
||||||
|
-- vim.g.sonokai_better_performance = 1
|
||||||
|
-- -- vim.g.sonokai_enable_italic = true
|
||||||
|
-- -- vim.cmd.colorscheme 'sonokai'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- 'sainnhe/edge',
|
||||||
|
-- priority = 1000,
|
||||||
|
-- init = function()
|
||||||
|
-- -- 'default', 'aura', 'neon'
|
||||||
|
-- vim.g.edge_style = 'default'
|
||||||
|
-- vim.g.edge_better_performance = 1
|
||||||
|
-- -- vim.g.edge_enable_italic = true
|
||||||
|
-- -- vim.cmd.colorscheme 'edge'
|
||||||
|
-- end,
|
||||||
|
-- },
|
||||||
|
}
|
||||||
22
nvim/lua/kickstart/plugins/todo-comments.lua
Normal file
22
nvim/lua/kickstart/plugins/todo-comments.lua
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
-- Highlight todo, notes, etc in comments
|
||||||
|
-- NOTE: adding a note
|
||||||
|
-- PERF: fully optimised
|
||||||
|
-- TODO: What else?
|
||||||
|
-- TEST:
|
||||||
|
-- HACK: hmmm, this looks a bit funky
|
||||||
|
-- WARNING: ????
|
||||||
|
-- WARN:
|
||||||
|
-- FIXME:
|
||||||
|
-- FIX: this needs fixing
|
||||||
|
-- BUG: test
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'folke/todo-comments.nvim',
|
||||||
|
event = 'VimEnter',
|
||||||
|
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||||
|
opts = {
|
||||||
|
-- signs = false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
85
nvim/lua/kickstart/plugins/treesitter.lua
Normal file
85
nvim/lua/kickstart/plugins/treesitter.lua
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
-- Highlight, edit, and navigate code
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
'nvim-treesitter/nvim-treesitter-context',
|
||||||
|
config = function()
|
||||||
|
require('treesitter-context').setup {
|
||||||
|
enable = true, -- Enable this plugin (Can be enabled/disabled later via commands)
|
||||||
|
multiwindow = false, -- Enable multiwindow support.
|
||||||
|
max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit.
|
||||||
|
min_window_height = 0, -- Minimum editor window height to enable context. Values <= 0 mean no limit.
|
||||||
|
line_numbers = true,
|
||||||
|
multiline_threshold = 3, -- Maximum number of lines to show for a single context
|
||||||
|
trim_scope = 'outer', -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
|
||||||
|
mode = 'cursor', -- Line used to calculate context. Choices: 'cursor', 'topline'
|
||||||
|
-- Separator between context and content. Should be a single character string, like '-'.
|
||||||
|
-- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
|
||||||
|
separator = nil,
|
||||||
|
zindex = 20, -- The Z-index of the context window
|
||||||
|
on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
|
||||||
|
}
|
||||||
|
vim.keymap.set('n', 'gp', function()
|
||||||
|
require('treesitter-context').go_to_context(vim.v.count1)
|
||||||
|
end, { silent = true, desc = '[G]oto context ([P]arent)' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- {
|
||||||
|
-- 'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
build = ':TSUpdate',
|
||||||
|
main = 'nvim-treesitter.configs', -- Sets main module to use for opts
|
||||||
|
-- [[ Configure Treesitter ]] See `:help nvim-treesitter`
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
'bash',
|
||||||
|
'c',
|
||||||
|
'cpp',
|
||||||
|
'diff',
|
||||||
|
'html',
|
||||||
|
'lua',
|
||||||
|
'luadoc',
|
||||||
|
'markdown',
|
||||||
|
'markdown_inline',
|
||||||
|
'query',
|
||||||
|
'vim',
|
||||||
|
'vimdoc',
|
||||||
|
'css',
|
||||||
|
'javascript',
|
||||||
|
'typescript',
|
||||||
|
'json',
|
||||||
|
'csv',
|
||||||
|
'go',
|
||||||
|
'nix',
|
||||||
|
'python',
|
||||||
|
'rust',
|
||||||
|
'sql',
|
||||||
|
'templ',
|
||||||
|
'toml',
|
||||||
|
'yaml',
|
||||||
|
'cmake',
|
||||||
|
'printf',
|
||||||
|
},
|
||||||
|
-- Autoinstall languages that are not installed
|
||||||
|
auto_install = true,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
-- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules.
|
||||||
|
-- If you are experiencing weird indenting issues, add the language to
|
||||||
|
-- the list of additional_vim_regex_highlighting and disabled languages for indent.
|
||||||
|
additional_vim_regex_highlighting = { 'ruby' },
|
||||||
|
},
|
||||||
|
indent = { enable = true, disable = { 'ruby' } },
|
||||||
|
},
|
||||||
|
-- There are additional nvim-treesitter modules that you can use to interact
|
||||||
|
-- with nvim-treesitter. You should go explore a few and see what interests you:
|
||||||
|
--
|
||||||
|
-- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
|
||||||
|
-- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
|
||||||
|
-- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
|
||||||
|
},
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue