Compare commits

...

2 commits

Author SHA1 Message Date
cec561fe0d Update nvim readme 2026-01-19 05:13:50 +03:00
ad2e06c07b Refactor packages.nix 2026-01-19 03:54:44 +03:00
4 changed files with 125 additions and 147 deletions

View file

@ -22,6 +22,7 @@
# "lxqt-policykit-agent" # Заменил на гномовский
"sxhkd"
"nm-applet" # Нетворк манагер
# "blueman-applet" # Блютуз в трее
"ksnip"
"xset s off -dpms" # Отменить затухание экрана через X минут
"spice-vdagent" # Для виртуалки

View file

@ -1,4 +1,4 @@
{ pkgs, pkgs2, spkgs, inputs, ... }: {
{ pkgs, pkgs2, spkgs, ... }: {
# https://nixos.wiki/wiki/Fonts
fonts.packages = with pkgs; [
@ -132,10 +132,6 @@
# Оптимизация для игр. https://github.com/FeralInteractive/gamemode
gamemode.enable = true;
# Я хз надо ли оно мне. https://github.com/ValveSoftware/gamescope
# Подробносни тут https://ventureo.codeberg.page/source/linux-gaming.html#gamescope
# gamescope.enable = true;
adb.enable = true; # Android Tools
};
@ -145,62 +141,53 @@
## Программирование ##
######################
neovim
# Это рекомендуют ставить не на всю систему,
# а только на nix shell внутри проекта, где нужны эти пакеты
# Но я хочу на всю систему
# Python
python3 # Python last version
python3Packages.pip # Python package manager (nvim его не видит)
python3
python3Packages.pip # Package manager (nvim его не видит)
python3Packages.debugpy # Debug Adapter Protocol for Python
pyright # Python LSP
ruff # Extremely fast Python linter
pyright # LSP
ruff # Linter
# C/C++
# clang-tools # Clangd? LSP
# ccls # C/C++ LSP
# clang # Компилятор
# gcc # Компилятор
# 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
clang-tools # Clangd? LSP
# Rust
rust-analyzer # Rust LSP (rustup component add rust-analyzer)
# Golang
go # Go programming language
gopls # Go LSP
delve # Go debugger
templ # A language for writing HTML user interfaces in Go.
golangci-lint # Fast linters Runner for Go
go
gopls # LSP
delve # Debugger
golangci-lint # Linter
# Nix
nixd # Nix LSP. Нет в mason
nixd # LSP
# Lua
lua5_1 # Scripting language
lua5_1
luajit # JIT compiler for Lua
luajitPackages.luarocks # Package manager for lua
lua-language-server # Lua LSP
stylua # Lua formatter
luajitPackages.luarocks # Package manager
lua-language-server # LSP
stylua # Formatter
# Shell/Bash
bash-language-server # Basp LSP
bash-language-server # LSP
shellcheck # Проверка shell скриптов на ошибки
shfmt # Shell parser and formatter
# SQL
sqls # SQL LSP
sqls # LSP
sqlite
dbeaver-bin
# Frontend
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
@ -226,17 +213,16 @@
# kubernetes-helm # Package manager for kubernetes
# Other
# hugo # Для моего блога
gnumake
cmake-language-server
cmake
spkgs.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
# Nushell
# nushell # Modern shell
# For nvim
tree-sitter # For nvim
ripgrep # For nvim
@ -261,53 +247,49 @@
wget
curl
git
gitui # Git TUI
xclip # Буфер обмена
ffmpeg_7 # Обработка видео. Нужен всегда и везде как зависимость
svt-av1 # Кодек для рендера в av1 на проце
# imlib2Full # Image manipulation library
imagemagick # Обработка изображений. Мб тоже нужен всегда
tree
xdg-utils
httpie
jq
libxml2
miller
htmlq
usbutils
f2fs-tools
exfat
gitui
pwgen
lm_sensors
exiftool
xclip # Буфер обмена на X11
ffmpeg_7 # Обработка видео
svt-av1 # Быстрый рендер в av1 на проце
imagemagick # Конвертация картинок
vips # В 4 раза быстрее imagemagick?
tree # Структура файлов в терминале
gnugrep # Поиск в терминале
gawk # Обработка и анализ текста в терминале
gnugrep # Поиск в терминале (grep)
gawk # Обработка и анализ текста в терминале (awk)
rsync # Синхронизация файлов
bat # Аналог cat с подсветкой синтаксиса
xorg.xwininfo # Команда xprop. Статы окна, по типу класса
xorg.xrandr # Управление мониторами
xorg.xev # Узнать айдишник бинда
xdg-utils # Set of command line tools that assist applications with a variety of desktop integration tasks
playerctl # Управление медиа. Плей/пауза и тд
xdotool # Fake keyboard/mouse input. Для rofi-pass
# zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll
tokei # Количество строк кода на разных языках в каталоге
pass # Менеджер паролей в терминале
amdgpu_top # Tool to display AMD GPU usage
btop # Монитор ресурсов в терминале
rocmPackages.rocm-smi # Чтоб в btop было gpu (не работает)
rocmPackages.rocm-smi # Чтоб в btop было amd gpu?
rocmPackages.rocblas # Для работы hip?
rocmPackages.hipblas # Для работы hip?
rocmPackages.clr # Для работы hip?
pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов
timer # A "sleep" with progress. Таймер на пельмени "timer 5m"
libqalculate # Advanced calculator library
timer # Таймер на пельмени "timer 5m"
libqalculate # Калькулятор для rofi
fastfetch # Пишешь в теримнал и кидаешь всем со словами I use nixos btw
fzf # Нечёткий поиск
killall # Убить процессы. Мем, что в стоке не стоит
killall # Убить процессы
libnotify # Вызов оповещений через "notify-send"
pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов
pkgs2.gallery-dl # Качать много картинок с кучи разных сайтов
shellcheck # Проверка shell скриптов на ошибки
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 # Минималистичный терминал. Основной у меня
kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает
@ -316,15 +298,14 @@
## GUI ##
#########
ksnip # Скрины. Аналоги - Flameshot
ksnip # Скрины. Аналог - Flameshot
file-roller # Архиватор от gnome
qbittorrent # Торренты качать
# thunderbird # Почтовый клиент для своей почты
# screenkey # A screencast tool to display your keys
pavucontrol # PulseAudio Volume Control
# pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol)
pavucontrol
# pwvucontrol # Замена pavucontrol для PipeWire
networkmanagerapplet # Tray for network manager
# brightnessctl # Brightness control for laptop
# brightnessctl
# gucharmap # Проверка шрифтов. Какой шрифт какие символы отображает
##############
@ -341,64 +322,64 @@
##########
evince # Смотреть документы (так же превью PDF файлов для Thunar) (не читает FB2)
# papers # Я так понимаю это современная замена для evince под GTK4. Оба от gnome
# papers # Современная замена для evince под GTK4. Оба от gnome
libreoffice # Редактировать документы
hunspell # Проверка орфографии для libreoffice
hunspellDicts.ru_RU # Словарь для проверки орфографии
hunspellDicts.en_US # Словарь для проверки орфографии
calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
# drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger
spkgs.xournalpp # Xournal++ is a handwriting Notetaking software with PDF annotation support
spkgs.xournalpp
###################
## File managers ##
###################
ranger # Terminal file manager
ranger
xfce.thunar # GUI file manager (допы выше в `programs` и `services`)
xfce.catfish # File searching (for Thunar)
xfce4-exo # Мб надо, чтоб терминал открывать в каталоге
ffmpegthumbnailer # A lightweight video thumbnailer
gnome-epub-thumbnailer # Thumbnailer for EPub and MOBI books
ffmpegthumbnailer
gnome-epub-thumbnailer
# nufraw-thumbnailer # Thumbnailer for .raw images from digital cameras
# 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.
openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger, но мб пригодится и в других местах
# mcomix # Thumbnailer for .crb comicbook archives (требует mupdf, который крашит систему)
f3d # Thumbnailer for 3D files, including glTF, stl, step, ply, obj, fbx.
openscad # 3D model previews (stl, off, dxf, scad, csg). Этот именно для ranger
##################
## File support ##
##################
kdePackages.kimageformats # Image format plugins for Qt 6
kdePackages.kimageformats # Image format plugins for Qt
spkgs.libsForQt5.kimageformats
kdePackages.qtimageformats # Plugins for additional image formats: TIFF, MNG, TGA, WBMP
kdePackages.qtimageformats # Image formats: TIFF, MNG, TGA, WBMP
spkgs.libsForQt5.qt5.qtimageformats
kdePackages.qtsvg # SVG support
kdePackages.qtsvg
kdePackages.karchive # Plugin for Krita and OpenRaster images
webp-pixbuf-loader # .webp support (what's this?)
gdk-pixbuf.dev # Library for image loading and manipulation
libwebp # .webp support
libavif # AVIF format support
libheif # HEIF format support
webp-pixbuf-loader
gdk-pixbuf.dev
libwebp
libavif
libheif
libgsf # .odf support
libjxl # JPEG-XL format support
libraw # RAW format support
librsvg # Small library to render SVG images to Cairo surfaces
jxrlib # JPEG XR image support
libjxl
libraw
librsvg
jxrlib
poppler # PDF support
freetype # Font rendering engine
imath # EXR format support
openexr # High dynamic-range (HDR) image file format
freetype
imath
openexr
###########
## Media ##
###########
strawberry # Музыкальный плеер
obs-studio # Запись видео
strawberry
obs-studio
picard # Массовый редактор метаданных музыки
mousai # Опенсорс шазам. Со временем просит платный api
spek # Спектрограмма аудио.
spek # Спектрограмма аудио
mpv # Смотреть видео
qview # Смотреть картинки. Умеет открывать всё, включая анимированный webp и avif
@ -406,11 +387,10 @@
## Social ##
############
# (pkgs2.discord.override { # Discord
# # withOpenASAR = true; # Оптимизатор дискрода
# withVencord = true; # Имба плагины
# })
pkgs2.discord
(pkgs2.discord.override {
withVencord = true;
})
# pkgs2.discord
pkgs2.vesktop
pkgs2.telegram-desktop
@ -419,16 +399,17 @@
###########
lutris # Запускать .exe игры. Не всё через `wine game.exe` работает на nixos нормально
sidequest # Ставить APK файлы на Oculus Quest 2
bs-manager # Удобно ставить моды и менять версии Beat Saber
# Мб зависимости
protonup-qt # Управлять версиями proton-ge?
protonup-qt # Управлять версиями proton-ge
steam-run # Запуск бинарей в окружении, похожем на steam runtime
mangohud # Фпс и нагрузку на пк показывает в играх
wineWowPackages.stableFull # support both 32- and 64-bit applications
# wineWowPackages.staging # Можно назвать бета версией вайна
winetricks # winetricks (all versions)
winetricks
# wineWowPackages.waylandFull # native wayland support (unstable)
# protontricks # Running Winetricks commands for Proton-enabled games
# protontricks
############
## Design ##
@ -446,14 +427,9 @@
##################
obsidian # Заметки
spkgs.planify # Task manager
pkgs2.ticktick # Powerful to-do app, proprietary
#########
## IDE ##
#########
neovim
spkgs.planify # Таски
pkgs2.super-productivity # Таски
pkgs2.ticktick # Таски, proprietary
###########
## Icons ##
@ -488,7 +464,6 @@
# vial # GUI для qmk, если клавиатура поддерживает
fontconfig
zlib
# google-fonts
libva-utils # Проверяет работоспособность VAAPI?
clinfo # Проверяет работоспособность OpenCL?
libsecret # Хранить и получать аккаунты у приложений. Например для jetbrains toolbox

View file

@ -1,17 +1,25 @@
## Установка
На новом пк руками делаю симлинк в `~/.config/nvim`.
```sh
ln -s ~/nixos-private-dots/nvim ~/.config/nvim
```
## Описание
[kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) fork
> ⚠️ **Warning**: 27.04.2025 произошли большие изменения в конфиге, которые мне очень лень описывать в ридми. Документировать изменения сложнее, чем эти самые изменения вносить. Проще по коммитам ориентироваться. Поменялось много биндов и кор плагинов. Адаптировано для работы на neovim 0.11.
> ⚠️ **Warning**: Конфиг переписан под Neovim 0.11, но Readme файл написан под старый Neovim 0.10. Я постарался актуализировать этот файл, но мб что-то упустил. Поддерживать Readme файл в актуальном состоянии для меня оказалось очень сложно.
Тут будет лежать мой конфиг nvim. Я хочу, чтоб он был отдельно от nix конфигов, чтоб не надо было ничего ребилдить.
Первый запуск конфига может быть долгим. Не прерывай этот процесс, пока не появится меню плагин манагера
Первый запуск конфига может быть долгим. Не прерывай этот процесс, пока не появится меню плагин манагера.
Для выбора варианта из автокомплита надо жать ctrl+y, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
Для выбора варианта из автокомплита надо жать ctrl+y или ctrl+tab, а не enter. Это можно исправить в конфиге, но я решил оставить так, как советует разраб kickstart.nvim, потому что я часто был в ситуации, когда готовая ide даёт мне вариант, но он мне не нужен, я уже написал свой, и мне надо перейти на новую строку, я жму enter и получаю комплит, который мне не нужен, мне новая строка нужна была.
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, тоесть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
Вкладки как в vscode я решил не делать, тут есть более удобный инструмент для этого. Например два раза нажать пробел в нормал моде, откроется меню буферов, то есть файлов, которые в данный момент открыты. Отображаются они в порядке последнего открытия. Ныне открытый файл там не отображается. Это аналог ctrl+tab в vscode. Можно легко и быстро переключаться между "вкладками". Если надо искать что-то среди файлов проекта, то можно нажать пробел sf, от слов search files. В целом пробел+s это поиск чего-то. Подсказки на экране скажут поиск чего будет происходить. Grep поиск это поиск по содержимому всех файлов проекта.
https://medium.com/@jogarcia/you-dont-need-tabs-in-neovim-c6ba5ee44e3e
Если будут проблемы с сессиями, то можно написать `:SessionDelete`. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
Если будут проблемы с сессиями, то можно нажать Space S d, чтоб удалить сессию. Для выхода из проекта лучше использовать `:qa`, а не `:q`, чтоб закрыть все буферы и не ломать сессии
Конфиг сделан для NixOS. Я не знаю работает ли он в других дистрибутивах.
@ -23,14 +31,8 @@ LSP list - https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.txt
> ⚠️ **Warning**: Некоторых lsp в mason не существует и их надо качать отдельно. Или они не работают в NixOS, если их качать через mason. Такие lsp я настроил отдельно и скачал как пакет. Из конфига mason я их удалил. **Не скачай случайно эти lsp через mason руками, когда они уже настроены как отдельный пакет**. Это же касается форматтеров и линтеров. Их я стараюсь качать как системный пакет, а не через mason.
> ⚠️ **Warning**: Я вообще перестал качать что либо через mason, используя его только как поиск разных инструментов для нужного мне языка. Так что лучше ничего не качать через него.
> ⚠️ **Warning**: Я вообще перестал качать что либо через mason, использую его только как поиск разных инструментов для нужного мне языка. Так что лучше ничего не качать через него.
## Установка
На новом пк руками делаю симлинк в `~/.config/nvim`.
```sh
ln -s ~/nixos-private-dots/nvim ~/.config/nvim
```
### Зависимости
Для работы этого конфига надо установить некоторые пакеты в систему. Часть из них я напишу ниже, часть находится в `packages.nix` в категории `программирование`
@ -46,7 +48,7 @@ ln -s ~/nixos-private-dots/nvim ~/.config/nvim
- `ueberzugpp`
- Любой nerd font
Пакеты для разных языков могут часть меняться, так что ищем в `packages.nix`
Пакеты для разных языков могут часто меняться, так что ищем в `packages.nix`
Чтоб понять есть ли проблемы с конфигом, может какие-то пакеты отсутствуют, можно запустить `:checkhealth`.
@ -79,6 +81,8 @@ Per project можно использовать `.editorconfig` файл в ко
Все бинды можно искать прям в neovim, если нажать `Space s k`, тоесть `S`earch `K`eymaps
А ещё ты можешь нажать `ctrl + q`, находясь в grep поиске (`space s g`), чтоб заменить одно слово на другое во всей выдаче грепа. Но будь осторожен, если сидишь в zellij, там `ctrl + q` это выход из zellij сессии. Надо жать `ctrl + g` перед этим, чтоб залочить бинды самого zellij.
Я не помню откуда эти бинды, может они есть в стоке, а может нет, но они полезные.
| Bind | Description |
@ -87,6 +91,7 @@ Per project можно использовать `.editorconfig` файл в ко
| `ctrl+o` | Go back |
| `ctrl+i` | Go forward (if you went backwards) |
| `p` | Paste from nvim register |
| `space p` | Paste from nvim register without loss of content |
| `ctrl+shift+v` | Paste from system clipboard |
| `y` | Yank(copy) to nvim register |
| `space y` | Yank(copy) to system clipboard |
@ -107,30 +112,28 @@ Per project можно использовать `.editorconfig` файл в ко
| `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 |
| `grd` | `G`o `R`efactor `D`efinition | lsp.lua |
| `grn` | `G`o `R`e`n`ame. Rename the variable under your cursor. Most Language Servers support renaming across files, etc. | lsp.lua |
| `grr` | `G`o `R`efactor `R`eferences | lsp.lua |
| `grI` | `G`o `R`efactor `I`mplementation | lsp.lua |
| `grD` | `G`o `R`efactor `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 |
| `gO` | Document Symbols. Fuzzy find all the symbols in your current document. Symbols are things like variables, funckions, types, etc. | lsp.lua |
| `gW` | Workspace Symbols. Fuzzy find all the symbols in your currend workspace. Similar to document symbols, except searches over you entire project | lsp.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 |
| `gta` | `G`olang `T`ag `A`dd. Add json tags for struct | golang.lua |
| `gtr` | `G`olang `T`ag `R`emove. Remove json tags for struct | golang.lua |
| `gs` | `G`olang fill `S`truct | golang.lua |
| `gc` | `G`olang fill Switch `C`ase | golang.lua |
| `gp` | `G`olang fix `P`lurals (change func foo(b int, a int, r int) -> func foo(b, a, r int)) | golang.lua |
| `ge` | `G`olang if `E`rr | golang.lua |
| `gi` | `G`olang `I`mports | golang.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 |
@ -151,7 +154,6 @@ Per project можно использовать `.editorconfig` файл в ко
| `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

View file

@ -6,4 +6,4 @@
## Применение скрипта
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно. Разрабы далбаёбы
Когда система готова и все симлинки отправлены куда надо, этот скрипт именно скопирует нужные файлы в нужные каталоги. В теории, тогда программы не будут перезаписывать, а будут дополнять этот файл. Но это не точно