Актуализировал от буливея
This commit is contained in:
parent
9f06f0fd58
commit
4e06668ca9
47 changed files with 2474 additions and 150 deletions
|
@ -1,6 +1,3 @@
|
|||
|
||||
Эта ветка для моего пк сделана. Просто дотсы надо смотреть в ветке main
|
||||
|
||||
## Навигация
|
||||
|
||||
- [Бинды](#бинды)
|
||||
|
@ -73,7 +70,7 @@
|
|||
| `Super + B` | Browser LibreWolf. Основа | Да |
|
||||
| `Super + Shift + B` | Browser Firefox. Паблик активность | Да |
|
||||
| `Super + Shift + Ctrl + B` | Browser Chromium. Пусть будет | Да |
|
||||
| `Super + E` | Explorer. Thunar file manager | Да |
|
||||
| `Super + E` | Explorer. Dolphin file manager | Да |
|
||||
| `Super + I` | IDE, text editor, NeoVim | Да |
|
||||
| `Super + M` | Monitor of resources (btop) | Да |
|
||||
| `Super + G` | Goals. Todo manager. Task tracker | Да |
|
||||
|
@ -231,8 +228,6 @@ font = lib.mkForce "JetBrainsMono Nerd Font 11";
|
|||
ip a
|
||||
```
|
||||
|
||||
В бутменю биоса надо ставить не ссд диск, а `nixos boot`. У меня иначе не работало
|
||||
|
||||
## Нюансы с JetBrains Toolbox
|
||||
|
||||
В стоке тулбокс может всегда разлогинивать. Я не проверял, сразу сделал как просили на вики, чтоб это исправить.
|
||||
|
|
|
@ -60,29 +60,29 @@
|
|||
"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" ];
|
||||
"text/*" = [ "nvim.desktop" "codium.desktop" ]; # Надо ли заменять nvim и всё что ниже на NixVim?
|
||||
"text/css" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/csv" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/html" = [ "nvim.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
|
||||
"text/javascript" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/markdown" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/plain" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-asm" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-c" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-python" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/json" = [ "nvim.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
|
||||
"application/x-sh" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/x-shellscript" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/xml" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/yaml" = [ "nvim.desktop" "codium.desktop" ];
|
||||
# Мб потом добавить для docs варианты и разные виды архивов и ebook
|
||||
# Other
|
||||
"application/pdf" = [ "org.gnome.Evince.desktop" ];
|
||||
"application/x-zerosize" = [ "nvim.desktop" "code.desktop" ]; # Файл нулевого размера
|
||||
"application/x-zerosize" = [ "nvim.desktop" "codium.desktop" ]; # Файл нулевого размера
|
||||
"application/zip" = [ "ark.desktop" ];
|
||||
"application/x-bittorrent" = [ "qbittorrent.desktop" ];
|
||||
"x-scheme-handler/magnet" = [ "qbittorrent.desktop" ];
|
||||
"inode/directory" = [ "thunar.desktop" ];
|
||||
"inode/directory" = [ "dolphin.desktop" ];
|
||||
"x-scheme-handler/mailto" = [ "thunderbird.desktop" ];
|
||||
"x-scheme-handler/jetbrains" = [ "jetbrains-toolbox.desktop" ];
|
||||
};
|
||||
|
@ -101,21 +101,21 @@
|
|||
"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" ];
|
||||
"text/*" = [ "nvim.desktop" "codium.desktop" ]; # Надо ли заменять nvim и всё что ниже на NixVim?
|
||||
"text/css" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/csv" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/html" = [ "nvim.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
|
||||
"text/javascript" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/markdown" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/plain" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-asm" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-c" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"text/x-python" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/json" = [ "nvim.desktop" "codium.desktop" "librewolf.desktop" "firefox.desktop" "chromium.desktop" ];
|
||||
"application/x-sh" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/x-shellscript" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/xml" = [ "nvim.desktop" "codium.desktop" ];
|
||||
"application/yaml" = [ "nvim.desktop" "codium.desktop" ];
|
||||
};
|
||||
};
|
||||
}
|
44
flake.nix
44
flake.nix
|
@ -3,7 +3,11 @@
|
|||
|
||||
inputs = {
|
||||
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 = {
|
||||
url = "github:nix-community/home-manager";
|
||||
|
@ -12,34 +16,45 @@
|
|||
|
||||
stylix = {
|
||||
url = "github:danth/stylix";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# nixvim =
|
||||
|
||||
# nix-gaming = { # Удобно ставить некоторые игры
|
||||
# url = "github:fufexan/nix-gaming";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
nix-gaming = { # Удобно ставить некоторые игры
|
||||
url = "github:fufexan/nix-gaming";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux"; # Не понимаю зачем, если это в hardware.nix указывается
|
||||
# pkgs = nixpkgs.legacyPackages.${system};
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"python-2.7.18.8"
|
||||
"electron-25.9.0"
|
||||
];
|
||||
};
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
permittedInsecurePackages = [
|
||||
"python-2.7.18.8"
|
||||
"electron-25.9.0"
|
||||
];
|
||||
};
|
||||
inherit config;
|
||||
};
|
||||
pkgs2 = import inputs.nixpkgs2 {
|
||||
inherit system;
|
||||
inherit config;
|
||||
};
|
||||
spkgs = import inputs.nixpkgs-stable {
|
||||
inherit system;
|
||||
inherit config;
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosConfigurations = {
|
||||
nixos = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {inherit inputs;};
|
||||
specialArgs = { inherit spkgs; inherit pkgs2; inherit inputs; };
|
||||
inherit pkgs;
|
||||
inherit system;
|
||||
modules = [
|
||||
|
@ -48,7 +63,6 @@
|
|||
inputs.stylix.nixosModules.stylix
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
tamasfe.even-better-toml # Fully-featured TOML support
|
||||
ms-python.python # Python language support
|
||||
golang.go # Rich Go language support
|
||||
# mechatroner.rainbow-csv # Rainbow syntax higlighting for CSV and TSV files
|
||||
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
|
||||
|
@ -32,12 +32,12 @@
|
|||
version = "1.3.1";
|
||||
sha256 = "f5da7cfe02c06fc3899e6b0b55b380280619e7085abcf5b6024f9684ba846c99";
|
||||
}
|
||||
# { # https://marketplace.visualstudio.com/items?itemName=dlasagno.rasi
|
||||
# name = "rasi";
|
||||
# publisher = "dlasagno";
|
||||
# version = "1.0.0";
|
||||
# sha256 = "b3ad1a95e8f770d01b489c6c4652111364216baa00b2670e05b5a8aa9fb0e9f9";
|
||||
# }
|
||||
{ # https://marketplace.visualstudio.com/items?itemName=dlasagno.rasi
|
||||
name = "rasi";
|
||||
publisher = "dlasagno";
|
||||
version = "1.0.0";
|
||||
sha256 = "b3ad1a95e8f770d01b489c6c4652111364216baa00b2670e05b5a8aa9fb0e9f9";
|
||||
}
|
||||
# { # https://marketplace.visualstudio.com/items?itemName=a-h.templ
|
||||
# name = "templ";
|
||||
# publisher = "a-h";
|
||||
|
@ -78,4 +78,4 @@
|
|||
# }
|
||||
# ];
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }: {
|
||||
{ pkgs, spkgs, ... }: {
|
||||
programs.ranger = { # Файловый менеджер в терминале
|
||||
enable = true;
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
|||
lynx # Preview html pages
|
||||
poppler # Preview PDF
|
||||
djvulibre # Preview djvu
|
||||
calibre # Preview ebooks (or epub-thumbnailer)
|
||||
spkgs.calibre # Preview ebooks (or epub-thumbnailer)
|
||||
catdoc # Preview XLS as csv conversion
|
||||
exiftool # Information about media files
|
||||
odt2txt # For OpenDocument text files
|
||||
|
|
|
@ -21,8 +21,15 @@
|
|||
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
|
||||
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
|
||||
|
||||
# Возможно это аналог "sudo pacman -Sy". Обновить репозиторий, чтоб потом на него обновиться? Пакеты не обновляет
|
||||
upd = "nix flake update ${flakeDir}"; # Обновляет flake.lock на последние коммиты с гитхаба?
|
||||
# Обновить все flake inputs до последних версий. Возможно это аналог "sudo pacman -Sy" на Arch Linux
|
||||
upd = "nix flake update --recreate-lock-file ${flakeDir}";
|
||||
|
||||
# Update Single flake input. Требует дописать имя инпута после команды
|
||||
# Для my-lib.url надо писать `upds my-lib`
|
||||
upds = "nix flake lock --update-input";
|
||||
|
||||
# Garbage collector. Удалить все не используемые пакеты (например после обновы)
|
||||
grb = "sudo nix-collect-garbage -d";
|
||||
|
||||
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
|
||||
|
||||
|
@ -32,7 +39,8 @@
|
|||
|
||||
t = "timer";
|
||||
r = "ranger";
|
||||
ff = "fastfetch";
|
||||
g = "gitui";
|
||||
f = "fastfetch";
|
||||
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
|
||||
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
|
||||
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
|
||||
|
@ -70,26 +78,13 @@
|
|||
"dirhistory" # Лютая имба https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/dirhistory
|
||||
"extract" # В терминале "extract filename" чтоб разархивировать файл. Одна команда на все архивы
|
||||
"fzf" # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/fzf
|
||||
#"git" # Git aliases https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git
|
||||
# "gitignore" # Use https://gitignore.io from the command line
|
||||
#"golang" # Completions and aliases for golang
|
||||
# "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.
|
||||
# "kitty" # Aliases for kitty terminal
|
||||
# "mise" # dev tools, env vars, task runner https://github.com/jdx/mise
|
||||
# "npm" # Completion and aliases for npm
|
||||
# "nvm" # Autocompletions for nvm — a Node.js version manager
|
||||
# "pass" # Completion for the pass password manager
|
||||
# "pip" # Completion for pip, the Python package manager
|
||||
# "podman" # Autocompletion and aliases for podman.
|
||||
#"python" # Aliases for useful Python commands
|
||||
"rust" # Completion for rustc, rustup and cargo
|
||||
"safe-paste" # Preventing any code from running while pasting, so you have a chance to review what was pasted
|
||||
"ssh-agent" # Автостарт ssh-agent. Хз надо ли настраивать и если да, то как
|
||||
# "starship" # А надо ли оно? Я для starship написал отдельно вкл интеграции в его файле настроек
|
||||
# "systemadmin" # Adds a series of aliases and functions which make a System Administrator's life easier
|
||||
# "systemd" # Many useful aliases for systemd
|
||||
"timer" # Показывает время выполнения команды
|
||||
"universalarchive" # Run "ua <format> <files>"" to compress <files> into an archive file using <format>
|
||||
# "vi-mode" # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/vi-mode
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
"qt6ct" = floating;
|
||||
"ksnip" = floating1600x900;
|
||||
# "ark" = floating1200x800; # Удалил, чтоб blowjob на экран не выдавало
|
||||
"file-roller" = floating1200x800;
|
||||
"file-roller" = floating;
|
||||
"floating-terminal" = floating1200x800;
|
||||
"pavucontrol" = floating900x600;
|
||||
# blueman-манагер надо флоатинг
|
||||
|
|
|
@ -5,8 +5,9 @@
|
|||
# Стандартный конфиг https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc
|
||||
|
||||
{ pkgs, config, ... }: let
|
||||
notifyMute = ''dunstify "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000'';
|
||||
notifyMicMute = ''dunstify "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000'';
|
||||
muteText = ''then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000'';
|
||||
notifyMute = ''dunstify "$(if [ "$(pamixer --get-mute)" = "true" ]; ${muteText}'';
|
||||
notifyMicMute = ''dunstify "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; ${muteText}'';
|
||||
notifyVolume = ''dunstify " Volume: $(pamixer --get-volume)" -r 91190 -t 800'';
|
||||
# -r 91190: Это идентификатор уведомления (notification ID). Уведомления с одинаковым ID будут заменять друг друга.
|
||||
# -t 800: Это время в миллисекундах, через которое уведомление будет автоматически закрыто.
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
|
||||
{
|
||||
boot = {
|
||||
resumeDevice = "/dev/disk/by-uuid/0951089a-fd89-4647-9ddb-0e3ff63d7b49";
|
||||
kernelParams = [ "resume_offset=6799360" ];
|
||||
resumeDevice = "/dev/disk/by-uuid/efaee29f-06a9-4486-b1ef-675d3d06c350";
|
||||
kernelParams = [ "resume_offset=11440128" ];
|
||||
};
|
||||
|
||||
# Не знаю надо ли это. На виртуалке я не могу забутиться в любом случае
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 388 KiB After Width: | Height: | Size: 388 KiB |
|
@ -23,7 +23,7 @@
|
|||
|
||||
# Ширина символов одинаковая
|
||||
monospace = { # default = DejaVu Sans Mono
|
||||
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
|
||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||
name = "JetBrainsMono Nerd Font Mono";
|
||||
};
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
# Без засечек
|
||||
sansSerif = { # default = DejaVu Sans
|
||||
package = pkgs.nerdfonts.override {fonts = ["Noto"];};
|
||||
package = pkgs.nerd-fonts.noto;
|
||||
name = "NotoSans Nerd Font";
|
||||
};
|
||||
|
||||
|
@ -71,6 +71,7 @@
|
|||
## Так что поставлю руками грувбокс через qtct ##
|
||||
##################################################
|
||||
|
||||
# https://discourse.nixos.org/t/guide-to-installing-qt-theme/35523/2
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "kvantum";
|
||||
|
|
|
@ -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
|
||||
enable = true;
|
||||
qemu.package = pkgs.qemu_full;
|
||||
|
|
40
modules/nixos/vr.nix
Normal file
40
modules/nixos/vr.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Beat Saber является OpenXR игрой, что не поддерживается Alvr из коробки
|
||||
# Возможно на X11 это можно исправить простой настройкой в SteamVR
|
||||
# Но на Wayland мне приходилось качать разом весь этот софт на Arch
|
||||
# Поэтому сразу поставил всё что надо и не пробовал найти необходимый минимум
|
||||
# Мб пригодится поставить opencomposite для трансляции OpenVR в OpenXR
|
||||
|
||||
{ pkgs, ... }: {
|
||||
|
||||
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;
|
||||
# };
|
||||
|
||||
};
|
||||
|
||||
}
|
|
@ -42,6 +42,10 @@
|
|||
options = "grp:caps_toggle"; # Менять язык на CapsLock
|
||||
};
|
||||
|
||||
displayManager.sessionCommands = ''
|
||||
xsetroot -cursor_name left_ptr
|
||||
'';
|
||||
|
||||
# Мб видеодрайвер можно не указывать
|
||||
# https://discourse.nixos.org/t/amd-gpu-optimal-settings/27648/3
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ pkgs, inputs, ... }:
|
||||
{ pkgs, pkgs2, spkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
username = "urec";
|
||||
|
@ -46,14 +46,17 @@ in {
|
|||
isNormalUser = true;
|
||||
description = username;
|
||||
extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" "video" ];
|
||||
# packages = with pkgs; [];
|
||||
# packages = with pkgs; [
|
||||
# clang-tools
|
||||
# ];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
# also pass inputs to home-manager modules
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
useUserPackages = true;
|
||||
extraSpecialArgs = { inherit spkgs; inherit pkgs2; inherit inputs; };
|
||||
users.${username} = import ./home.nix;
|
||||
};
|
||||
|
||||
|
@ -71,7 +74,12 @@ in {
|
|||
];
|
||||
};
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -42,8 +42,8 @@
|
|||
gtk = lib.mkIf (pkgs.stdenv.hostPlatform.isLinux) {
|
||||
# enable = true;
|
||||
iconTheme = {
|
||||
name = "Gruvbox-Plus-Dark"; # Имя каталога в /usr/share/icons/
|
||||
package = pkgs.gruvbox-plus-icons; # Пакет иконок
|
||||
name = "Papirus-Dark"; # Имя каталога в /usr/share/icons/
|
||||
# package = pkgs.papirus-icon-theme; # Пакет иконок
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -51,7 +51,13 @@
|
|||
targets = {
|
||||
vscode.enable = false; # Руками ставлю. Не нравится stylix вариант
|
||||
firefox.enable = false; # Руками ставлю и бекаплю каталог браузера
|
||||
# lightdm.enable = false; # Не хочу обои в lightdm (в сурсе есть настройка, но не билдит, мать ебал)
|
||||
};
|
||||
# iconTheme = {
|
||||
# enable = true;
|
||||
# package = pkgs.papirus-icon-theme;
|
||||
# dark = "Papirus-Dark";
|
||||
# };
|
||||
};
|
||||
|
||||
##############################################
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, ... }: {
|
||||
{ pkgs, pkgs2, spkgs, inputs, ... }: {
|
||||
|
||||
# https://nixos.wiki/wiki/Fonts
|
||||
fonts.packages = with pkgs; [
|
||||
|
@ -7,7 +7,9 @@
|
|||
noto-fonts-cjk-sans # Отображение иероглифов. Версия без засечек
|
||||
noto-fonts-color-emoji
|
||||
noto-fonts-monochrome-emoji
|
||||
(nerdfonts.override {fonts = ["JetBrainsMono" "Noto" "CascadiaCode"];})
|
||||
nerd-fonts.jetbrains-mono
|
||||
nerd-fonts.noto
|
||||
nerd-fonts.caskaydia-mono
|
||||
carlito # Совместим с Calibri, разработан как его свободная альтернатива. Без засечек
|
||||
terminus_font
|
||||
inconsolata
|
||||
|
@ -47,6 +49,16 @@
|
|||
};
|
||||
|
||||
programs = {
|
||||
nix-ld = { # Позволяет нормально юзать либы для венва и тп
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
gcc
|
||||
libGL
|
||||
glib
|
||||
libGLU.out
|
||||
stdenv.cc.cc
|
||||
];
|
||||
};
|
||||
zsh.enable = true;
|
||||
mtr.enable = true; # Объединяет функции утилит traceroute и ping
|
||||
gnupg.agent = {
|
||||
|
@ -73,6 +85,13 @@
|
|||
};
|
||||
xfconf.enable = true; # For Thunar configs
|
||||
|
||||
# gdk-pixbuf-query-loaders | grep avif
|
||||
# ls /run/current-system/sw/lib/gdk-pixbuf-2.0/2.10.0/loaders/
|
||||
gdk-pixbuf.modulePackages = with pkgs; [
|
||||
webp-pixbuf-loader
|
||||
libavif
|
||||
];
|
||||
|
||||
steam = {
|
||||
enable = true;
|
||||
extraCompatPackages = with pkgs; [ # Доп версии протона. Должны иметь `steamcompattool` output
|
||||
|
@ -92,15 +111,6 @@
|
|||
# Я хз надо ли оно мне. https://github.com/ValveSoftware/gamescope
|
||||
# Подробносни тут https://ventureo.codeberg.page/source/linux-gaming.html#gamescope
|
||||
gamescope.enable = true;
|
||||
nix-ld = { # Позволяет нормально юзать либы для венва и тп
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
gcc
|
||||
libGL
|
||||
glib
|
||||
libGLU.out
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
@ -114,54 +124,76 @@
|
|||
# Но я хочу на всю систему
|
||||
|
||||
# Python
|
||||
python3 # Питухон ласт версии
|
||||
# pylyzer # Fast static code analyzer & language server for Python
|
||||
# ruff # Extremely fast Python linter
|
||||
python3Full # Python last version
|
||||
python3Packages.pip # Python package manager (nvim его не видит)
|
||||
python3Packages.debugpy # Debug Adapter Protocol for Python
|
||||
pyright # Python LSP
|
||||
ruff # Extremely fast Python linter
|
||||
|
||||
# C
|
||||
gcc # Компилятор C
|
||||
rocmPackages.llvm.clang # Компилятор C
|
||||
gnumake # Компилятор?
|
||||
ccls # C lsp
|
||||
# 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
|
||||
|
||||
# Rust
|
||||
rustup # Управление версиями языка Rust
|
||||
rust-analyzer # Rust lsp
|
||||
rustup # Управление версиями языка Rust (rustup default stable)
|
||||
rust-analyzer # Rust LSP (rustup component add rust-analyzer)
|
||||
|
||||
# Golang
|
||||
go # Go programming language
|
||||
gopls # Golang lsp
|
||||
templ # HTML SSR
|
||||
|
||||
# Frontend
|
||||
# vscode-langservers-extracted # HTML/CSS/JSON/ESLint lsp
|
||||
# typescript-language-server # JS/TS lsp
|
||||
# htmx-lsp # HTMX lsp
|
||||
# tailwindcss-language-server # Tailwind CSS lsp
|
||||
# Мб emmet добавить потом. Но все lsp для него нонейм
|
||||
gopls # Go LSP
|
||||
delve # Go debugger
|
||||
templ # A language for writing HTML user interfaces in Go.
|
||||
golangci-lint # Fast linters Runner for Go
|
||||
|
||||
# Nix
|
||||
nixd # Nix lsp
|
||||
nixd # Nix LSP. Нет в mason
|
||||
# alejandra # Nix formatter. Usage: alejandra file.nix
|
||||
|
||||
# Shell
|
||||
shellcheck # Проверка shell скриптов на ошибки
|
||||
bash-language-server # Bash lsp
|
||||
# Lua
|
||||
lua5_1 # Scripting language
|
||||
luajit # JIT compiler for Lua
|
||||
luajitPackages.luarocks # Package manager for lua
|
||||
lua-language-server # Lua LSP
|
||||
stylua # Lua formatter
|
||||
|
||||
# Database
|
||||
# sqls # SQL lsp
|
||||
# postgres-lsp # Postgres lsp
|
||||
# Shell/Bash
|
||||
bash-language-server # Basp LSP
|
||||
shellcheck # Проверка shell скриптов на ошибки
|
||||
shfmt # Shell parser and formatter
|
||||
|
||||
# SQL
|
||||
sqls # SQL LSP
|
||||
postgres-lsp # Postgres SQL
|
||||
sqlfluff # SQL linter
|
||||
# sql-formatter # SQL formatter
|
||||
|
||||
# Frontend
|
||||
nodejs_23 # 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
|
||||
# tailwindcss
|
||||
|
||||
# Other
|
||||
hugo # Для моего блога
|
||||
# lua-language-server # Lua lsp
|
||||
# marksman # Markdown lsp
|
||||
# taplo # TOML lsp
|
||||
# vim-language-server # VimScript lsp
|
||||
# yaml-language-server # YAML lsp
|
||||
# dockerfile-language-server-nodejs # Dockerfiles
|
||||
# zls # Zig lsp
|
||||
# lemminx # XML lsp (юзает java)
|
||||
yaml-language-server # YAML LSP
|
||||
taplo # TOML LSP
|
||||
vim-language-server # VimScript LSP
|
||||
|
||||
# For nvim
|
||||
tree-sitter # For nvim
|
||||
ripgrep # For nvim
|
||||
fd # For nvim
|
||||
|
||||
############
|
||||
## Архивы ##
|
||||
|
@ -185,7 +217,7 @@
|
|||
curl
|
||||
git
|
||||
xclip # Для работы буфера обмена
|
||||
ffmpeg_7 # Обработка видео. Нужен всегда и везде
|
||||
ffmpeg_7 # Обработка видео. Нужен всегда и везде как зависимость
|
||||
imagemagick # Обработка изображений. Мб тоже нужен всегда
|
||||
vips # В 4 раза быстрее imagemagick?
|
||||
tree # Структура файлов в терминале
|
||||
|
@ -205,7 +237,7 @@
|
|||
btop # Монитор ресурсов в терминале
|
||||
rocmPackages.rocm-smi # Чтоб в btop было gpu (не работает)
|
||||
# rocmPackages_5.rocm-smi # Старая версия пакета выше. Хз какой надо
|
||||
yt-dlp # Скачивать и смотреть медиа с разных сайтов
|
||||
pkgs2.yt-dlp # Скачивать и смотреть медиа с разных сайтов
|
||||
tasktimer # TUI task timer. Можно несколько таймеров с описанием запустить. В терминал tt
|
||||
timer # A "sleep" with progress. Таймер на пельмени "timer 5m"
|
||||
libqalculate # Advanced calculator library
|
||||
|
@ -214,14 +246,14 @@
|
|||
fzf # Нечёткий поиск
|
||||
killall # Убить процессы. Мем, что в стоке не стоит
|
||||
libnotify # Вызов оповещений через "notify-send"
|
||||
gallery-dl # Качать много картинок с кучи разных сайтов
|
||||
pkgs2.gallery-dl # Качать много картинок с кучи разных сайтов
|
||||
shellcheck # Проверка shell скриптов на ошибки
|
||||
pwgen # Генератор паролей
|
||||
lm_sensors # Сенсоры
|
||||
httpie # interacting with APIs & HTTP servers
|
||||
# mkvtoolnix-cli # Cross-platform tools for Matroska
|
||||
# jq # Cli JSON processor
|
||||
jq # Cli JSON processor
|
||||
# htmlq # Как jq, но для html. Извлекать конкретные элементы из html
|
||||
# mkvtoolnix-cli # Cross-platform tools for Matroska
|
||||
|
||||
alacritty # Минималистичный терминал. Основной у меня
|
||||
# kitty # Самый быстрый протокол отображения медиа, но ssh через жопу работает
|
||||
|
@ -250,7 +282,6 @@
|
|||
librewolf
|
||||
firefox
|
||||
chromium
|
||||
# ff2mpv # Открывать видео из браузера в mpv плеере
|
||||
lynx # Текстовый браузер в терминале. Без картинок
|
||||
|
||||
##########
|
||||
|
@ -263,7 +294,7 @@
|
|||
hunspell # Проверка орфографии для libreoffice
|
||||
hunspellDicts.ru_RU # Словарь для проверки орфографии
|
||||
hunspellDicts.en_US # Словарь для проверки орфографии
|
||||
calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
|
||||
spkgs.calibre # Работа с ebook. Иногда даёт thumbnail в файловом менеджере
|
||||
drawio # Desktop application for creating diagrams. Вроде даёт thumbnail в ranger
|
||||
xournalpp # Xournal++ is a handwriting Notetaking software with PDF annotation support
|
||||
|
||||
|
@ -272,6 +303,7 @@
|
|||
###################
|
||||
|
||||
ranger # Terminal file manager
|
||||
# nautilus # Gnome file manager
|
||||
xfce.thunar # GUI file manager (допы выше в `programs` и `services`)
|
||||
xfce.catfish # File searching (for Thunar)
|
||||
xfce.exo # Мб надо, чтоб терминал открывать в каталоге
|
||||
|
@ -296,12 +328,14 @@
|
|||
kdePackages.qtsvg # SVG support
|
||||
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
|
||||
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
|
||||
poppler # PDF support
|
||||
freetype # Font rendering engine
|
||||
|
@ -327,18 +361,21 @@
|
|||
## Social ##
|
||||
############
|
||||
|
||||
(discord.override { # Discord
|
||||
(pkgs2.discord.override { # Discord
|
||||
# withOpenASAR = true; # Оптимизатор дискрода
|
||||
withVencord = true; # Имба плагины # TODO: Настройки надо сделать декларативными
|
||||
})
|
||||
telegram-desktop
|
||||
pkgs2.telegram-desktop
|
||||
# revolt-desktop # FOSS аналог дискорда
|
||||
|
||||
###########
|
||||
## Games ##
|
||||
###########
|
||||
|
||||
# Чтоб не компилить wine, надо закомментить и сделать ребилд без игры.
|
||||
# Потом раскомментить и сделать ребилд с игрой
|
||||
# inputs.nix-gaming.packages.${pkgs.system}.osu-stable # osu!stable from nix-gaming
|
||||
|
||||
# steam # Мб не надо сюда писать, раз через programs.steam редачу
|
||||
# heroic # A Native GOG, Epic, and Amazon Games Launcher for Linux, Windows and Mac
|
||||
# lutris # Запускать игры не из стима
|
||||
|
@ -391,6 +428,7 @@
|
|||
kdePackages.breeze-icons # qt6
|
||||
papirus-icon-theme
|
||||
material-icons
|
||||
gruvbox-plus-icons
|
||||
|
||||
############
|
||||
## Vulkan ##
|
||||
|
|
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"
|
134
nvim/README.md
Normal file
134
nvim/README.md
Normal file
|
@ -0,0 +1,134 @@
|
|||
[kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim) fork
|
||||
|
||||
Тут будет лежать мой конфиг nvim. Я хочу, чтоб он был отдельно от nix конфигов, чтоб не надо было ничего ребилдить.
|
||||
|
||||
Конфиг сделан для 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
|
||||
```
|
||||
### Зависимости
|
||||
Это мне пришлось скачать для работы конфига на NixOS с нужными мне инструментами:
|
||||
- `neovim`
|
||||
- `git`
|
||||
- `unzip`
|
||||
- `ripgrep`
|
||||
- `fd`
|
||||
- `xclip` на X11 или `wl-clipboard` на Wayland
|
||||
- `tree-sitter`
|
||||
- Любой nerd font
|
||||
- C/C++:
|
||||
- `gcc`
|
||||
- `gnumake`
|
||||
- `rocmPackages.llvm.clang`
|
||||
- `ccls` (lsp, нет в mason)
|
||||
- Lua:
|
||||
- `lua5_1`
|
||||
- `luajit`
|
||||
- `luajitPackages.luarocks` (package manager)
|
||||
- `lua-language-server` (lsp, из mason не работает на NixOS)
|
||||
- `stylua` (formatter, из mason не работает на NixOS)
|
||||
- Rust:
|
||||
- `rustup` и потом запустить `rustup default stable` + `rustup component add rust-analyzer` в терминале
|
||||
- `rust-analyzer` (lsp)
|
||||
- JS/TS:
|
||||
- `nodejs_23` для npm (package manager)
|
||||
- Python:
|
||||
- `python3Full`
|
||||
- `python3Packages.pip` (package manager)
|
||||
- `ruff` (linter/formatter, из mason не работает на NixOS)
|
||||
- Golang:
|
||||
- `go`
|
||||
- `golangci-lint` (linter)
|
||||
- `templ` (HTML UI in Go)
|
||||
- Nix:
|
||||
- `nixd` (lsp, нет в mason)
|
||||
- Bash:
|
||||
- `shellcheck` (linter)
|
||||
- `shfmt` (formatter)
|
||||
|
||||
Чтоб понять есть ли проблемы с конфигом, может какие-то пакеты отсутствуют, можно запустить `:healthcheck`.
|
||||
|
||||
## Бинды
|
||||
|
||||
Тут будет список биндов, которых нет в стандартном NeoVim
|
||||
|
||||
### Мои бинды
|
||||
|
||||
|Бинд|Действие|
|
||||
|-|-|
|
||||
|1|2|
|
||||
|
||||
### Были изначально в kickstart.nvim
|
||||
|
||||
|Бинд|Действие|
|
||||
|-|-|
|
||||
|1|2|
|
||||
|
||||
## Нюансы работы 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` имеет много опциональных настроек
|
||||
- `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
|
||||
|
24
nvim/doc/kickstart.txt
Normal file
24
nvim/doc/kickstart.txt
Normal file
|
@ -0,0 +1,24 @@
|
|||
================================================================================
|
||||
INTRODUCTION *kickstart.nvim*
|
||||
|
||||
Kickstart.nvim is a project to help you get started on your neovim journey.
|
||||
|
||||
*kickstart-is-not*
|
||||
It is not:
|
||||
- Complete framework for every plugin under the sun
|
||||
- Place to add every plugin that could ever be useful
|
||||
|
||||
*kickstart-is*
|
||||
It is:
|
||||
- Somewhere that has a good start for the most common "IDE" type features:
|
||||
- autocompletion
|
||||
- goto-definition
|
||||
- find references
|
||||
- fuzzy finding
|
||||
- and hinting at what more can be done :)
|
||||
- A place to _kickstart_ your journey.
|
||||
- You should fork this project and use/modify it so that it matches your
|
||||
style and preferences. If you don't want to do that, there are probably
|
||||
other projects that would fit much better for you (and that's great!)!
|
||||
|
||||
vim:tw=78:ts=8:ft=help:norl:
|
125
nvim/init.lua
Normal file
125
nvim/init.lua
Normal file
|
@ -0,0 +1,125 @@
|
|||
-- [[ Базовые настройки. Не плагины ]]
|
||||
require 'kickstart.settings'
|
||||
require 'custom.plugins.terminal'
|
||||
|
||||
-- [[ Install `lazy.nvim` plugin manager ]]
|
||||
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
|
||||
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 --
|
||||
---------------------------------------------
|
||||
|
||||
-- Detect expandtab and shiftwidth automatically
|
||||
require 'kickstart.plugins.vim-sleuth',
|
||||
|
||||
-- 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.neo-tree',
|
||||
|
||||
-------------------------------------
|
||||
-- Установил руками под свои нужды --
|
||||
-------------------------------------
|
||||
|
||||
-- Supercharge your Rust experience in Neovim
|
||||
require 'custom.plugins.rust',
|
||||
|
||||
-- Feature-Rich Go Plugin for Neovim
|
||||
require 'custom.plugins.golang',
|
||||
|
||||
-- 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
|
233
nvim/kickstart.md
Normal file
233
nvim/kickstart.md
Normal file
|
@ -0,0 +1,233 @@
|
|||
# kickstart.nvim
|
||||
|
||||
## Introduction
|
||||
|
||||
A starting point for Neovim that is:
|
||||
|
||||
* Small
|
||||
* Single-file
|
||||
* Completely Documented
|
||||
|
||||
**NOT** a Neovim distribution, but instead a starting point for your configuration.
|
||||
|
||||
## Installation
|
||||
|
||||
### Install Neovim
|
||||
|
||||
Kickstart.nvim targets *only* the latest
|
||||
['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
|
||||
['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
|
||||
If you are experiencing issues, please make sure you have the latest versions.
|
||||
|
||||
### Install External Dependencies
|
||||
|
||||
External Requirements:
|
||||
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
|
||||
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation)
|
||||
- Clipboard tool (xclip/xsel/win32yank or other depending on platform)
|
||||
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
|
||||
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
|
||||
- Language Setup:
|
||||
- If you want to write Typescript, you need `npm`
|
||||
- If you want to write Golang, you will need `go`
|
||||
- etc.
|
||||
|
||||
> **NOTE**
|
||||
> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes
|
||||
> and quick install snippets
|
||||
|
||||
### Install Kickstart
|
||||
|
||||
> **NOTE**
|
||||
> [Backup](#FAQ) your previous configuration (if any exists)
|
||||
|
||||
Neovim's configurations are located under the following paths, depending on your OS:
|
||||
|
||||
| OS | PATH |
|
||||
| :- | :--- |
|
||||
| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
|
||||
| Windows (cmd)| `%localappdata%\nvim\` |
|
||||
| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` |
|
||||
|
||||
#### Recommended Step
|
||||
|
||||
[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
|
||||
so that you have your own copy that you can modify, then install by cloning the
|
||||
fork to your machine using one of the commands below, depending on your OS.
|
||||
|
||||
> **NOTE**
|
||||
> Your fork's url will be something like this:
|
||||
> `https://github.com/<your_github_username>/kickstart.nvim.git`
|
||||
|
||||
You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file
|
||||
too - it's ignored in the kickstart repo to make maintenance easier, but it's
|
||||
[recommmended to track it in version control](https://lazy.folke.io/usage/lockfile).
|
||||
|
||||
#### Clone kickstart.nvim
|
||||
> **NOTE**
|
||||
> If following the recommended step above (i.e., forking the repo), replace
|
||||
> `nvim-lua` with `<your_github_username>` in the commands below
|
||||
|
||||
<details><summary> Linux and Mac </summary>
|
||||
|
||||
```sh
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details><summary> Windows </summary>
|
||||
|
||||
If you're using `cmd.exe`:
|
||||
|
||||
```
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim"
|
||||
```
|
||||
|
||||
If you're using `powershell.exe`
|
||||
|
||||
```
|
||||
git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim"
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### Post Installation
|
||||
|
||||
Start Neovim
|
||||
|
||||
```sh
|
||||
nvim
|
||||
```
|
||||
|
||||
That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
|
||||
current plugin status. Hit `q` to close the window.
|
||||
|
||||
Read through the `init.lua` file in your configuration folder for more
|
||||
information about extending and exploring Neovim. That also includes
|
||||
examples of adding popularly requested plugins.
|
||||
|
||||
|
||||
### Getting Started
|
||||
|
||||
[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o)
|
||||
|
||||
### FAQ
|
||||
|
||||
* What should I do if I already have a pre-existing neovim configuration?
|
||||
* You should back it up and then delete all associated files.
|
||||
* This includes your existing init.lua and the neovim files in `~/.local`
|
||||
which can be deleted with `rm -rf ~/.local/share/nvim/`
|
||||
* Can I keep my existing configuration in parallel to kickstart?
|
||||
* Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME`
|
||||
to maintain multiple configurations. For example, you can install the kickstart
|
||||
configuration in `~/.config/nvim-kickstart` and create an alias:
|
||||
```
|
||||
alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
|
||||
```
|
||||
When you run Neovim using `nvim-kickstart` alias it will use the alternative
|
||||
config directory and the matching local directory
|
||||
`~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim
|
||||
distribution that you would like to try out.
|
||||
* What if I want to "uninstall" this configuration:
|
||||
* See [lazy.nvim uninstall](https://lazy.folke.io/usage#-uninstalling) information
|
||||
* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files?
|
||||
* The main purpose of kickstart is to serve as a teaching tool and a reference
|
||||
configuration that someone can easily use to `git clone` as a basis for their own.
|
||||
As you progress in learning Neovim and Lua, you might consider splitting `init.lua`
|
||||
into smaller parts. A fork of kickstart that does this while maintaining the
|
||||
same functionality is available here:
|
||||
* [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
|
||||
* Discussions on this topic can be found here:
|
||||
* [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
|
||||
* [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
|
||||
|
||||
### Install Recipes
|
||||
|
||||
Below you can find OS specific install instructions for Neovim and dependencies.
|
||||
|
||||
After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step.
|
||||
|
||||
#### Windows Installation
|
||||
|
||||
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
|
||||
Installation may require installing build tools and updating the run command for `telescope-fzf-native`
|
||||
|
||||
See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
|
||||
|
||||
This requires:
|
||||
|
||||
- Install CMake and the Microsoft C++ Build Tools on Windows
|
||||
|
||||
```lua
|
||||
{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
|
||||
```
|
||||
</details>
|
||||
<details><summary>Windows with gcc/make using chocolatey</summary>
|
||||
Alternatively, one can install gcc and make which don't require changing the config,
|
||||
the easiest way is to use choco:
|
||||
|
||||
1. install [chocolatey](https://chocolatey.org/install)
|
||||
either follow the instructions on the page or use winget,
|
||||
run in cmd as **admin**:
|
||||
```
|
||||
winget install --accept-source-agreements chocolatey.chocolatey
|
||||
```
|
||||
|
||||
2. install all requirements using choco, exit previous cmd and
|
||||
open a new one so that choco path is set, and run in cmd as **admin**:
|
||||
```
|
||||
choco install -y neovim git ripgrep wget fd unzip gzip mingw make
|
||||
```
|
||||
</details>
|
||||
<details><summary>WSL (Windows Subsystem for Linux)</summary>
|
||||
|
||||
```
|
||||
wsl --install
|
||||
wsl
|
||||
sudo add-apt-repository ppa:neovim-ppa/unstable -y
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip neovim
|
||||
```
|
||||
</details>
|
||||
|
||||
#### Linux Install
|
||||
<details><summary>Ubuntu Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo add-apt-repository ppa:neovim-ppa/unstable -y
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip neovim
|
||||
```
|
||||
</details>
|
||||
<details><summary>Debian Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install make gcc ripgrep unzip git xclip curl
|
||||
|
||||
# Now we install nvim
|
||||
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
|
||||
sudo rm -rf /opt/nvim-linux64
|
||||
sudo mkdir -p /opt/nvim-linux64
|
||||
sudo chmod a+rX /opt/nvim-linux64
|
||||
sudo tar -C /opt -xzf nvim-linux64.tar.gz
|
||||
|
||||
# make it available in /usr/local/bin, distro installs to /usr/bin
|
||||
sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/
|
||||
```
|
||||
</details>
|
||||
<details><summary>Fedora Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
|
||||
```
|
||||
</details>
|
||||
|
||||
<details><summary>Arch Install Steps</summary>
|
||||
|
||||
```
|
||||
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
|
||||
```
|
||||
</details>
|
||||
|
52
nvim/lazy-lock.json
Normal file
52
nvim/lazy-lock.json
Normal file
|
@ -0,0 +1,52 @@
|
|||
{
|
||||
"LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" },
|
||||
"catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" },
|
||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"conform.nvim": { "branch": "master", "commit": "f4e8837878fc5712d053ba3091a73d27d96a09e2" },
|
||||
"edge": { "branch": "master", "commit": "5b5a0683be0d9d8023a874ebf7e230095f4e1bae" },
|
||||
"everforest": { "branch": "master", "commit": "44c2659ffb6d26a994346974b4d12e988f43e5e5" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "9238947645ce17d96f30842e61ba81147185b657" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" },
|
||||
"go.nvim": { "branch": "master", "commit": "c6d5ca26377d01c4de1f7bff1cd62c8b43baa6bc" },
|
||||
"gruvbox-material": { "branch": "master", "commit": "fca2ff9ba627bbf172548eb52fcbb03f99ba34e9" },
|
||||
"guihua.lua": { "branch": "master", "commit": "d783191eaa75215beae0c80319fcce5e6b3beeda" },
|
||||
"image.nvim": { "branch": "master", "commit": "b3e1af829a56bb038e5f81bf97798a2950064b62" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "259357fa4097e232730341fa60988087d189193a" },
|
||||
"kanagawa.nvim": { "branch": "master", "commit": "ad3dddecd606746374ba4807324a08331dfca23c" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" },
|
||||
"luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" },
|
||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "8b9363d83b5d779813cdd2819b8308651cec2a09" },
|
||||
"mason-tool-installer.nvim": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" },
|
||||
"mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" },
|
||||
"mini.nvim": { "branch": "main", "commit": "7ebfab26d77a4b9b05aaae565907e7fa4b2ee154" },
|
||||
"monokai-pro.nvim": { "branch": "master", "commit": "6c15e36834a624a32f46c6db8f9fc063995b24b6" },
|
||||
"neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" },
|
||||
"nightfox.nvim": { "branch": "main", "commit": "7557f26defd093c4e9bc17f28b08403f706f5a44" },
|
||||
"nordic.nvim": { "branch": "main", "commit": "1ee4044077059b34eacd18d93613495a602c131f" },
|
||||
"nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "3403e2e9391ed0a28c3afddd8612701b647c8e26" },
|
||||
"nvim-dap": { "branch": "master", "commit": "567da83810dd9da32f9414d941bc6848715fc102" },
|
||||
"nvim-dap-go": { "branch": "main", "commit": "6aa88167ea1224bcef578e8c7160fe8afbb44848" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "ffa89839f97bad360e78428d5c740fdad9a0ff02" },
|
||||
"nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "9f2c279cf9abe584f03bfeb37c6658d68e3ff49d" },
|
||||
"nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "3b8dee4293567b0b9a87360842af14669f60dd13" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "0eb18da56e2ba6ba24de7130a12bcc4e31ad11cb" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" },
|
||||
"rose-pine": { "branch": "main", "commit": "91548dca53b36dbb9d36c10f114385f759731be1" },
|
||||
"rustaceanvim": { "branch": "master", "commit": "1933318b98940b3e98ccbcd2828ae88c1bce8494" },
|
||||
"sonokai": { "branch": "master", "commit": "fd42b20963c34dfc1744ac31f6a6efe78f4edad2" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" },
|
||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
|
||||
"tokyonight.nvim": { "branch": "main", "commit": "45d22cf0e1b93476d3b6d362d720412b3d34465c" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" }
|
||||
}
|
18
nvim/lua/custom/plugins/golang.lua
Normal file
18
nvim/lua/custom/plugins/golang.lua
Normal file
|
@ -0,0 +1,18 @@
|
|||
-- 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()
|
||||
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', -- Recommended
|
||||
lazy = false, -- This plugin is already lazy
|
||||
},
|
||||
}
|
58
nvim/lua/custom/plugins/terminal.lua
Normal file
58
nvim/lua/custom/plugins/terminal.lua
Normal file
|
@ -0,0 +1,58 @@
|
|||
vim.keymap.set("t", "<esc><esc>", "<c-\\><c-n>")
|
||||
|
||||
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,
|
||||
}
|
73
nvim/lua/kickstart/plugins/autoformat.lua
Normal file
73
nvim/lua/kickstart/plugins/autoformat.lua
Normal file
|
@ -0,0 +1,73 @@
|
|||
-- 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 }
|
||||
local lsp_format_opt
|
||||
if disable_filetypes[vim.bo[bufnr].filetype] then
|
||||
lsp_format_opt = 'never'
|
||||
else
|
||||
lsp_format_opt = 'fallback'
|
||||
end
|
||||
return {
|
||||
timeout_ms = 5000,
|
||||
lsp_format = lsp_format_opt,
|
||||
}
|
||||
end,
|
||||
formatters_by_ft = {
|
||||
lua = { 'stylua' },
|
||||
sql = { 'sqlfluff' },
|
||||
-- sql = { 'sql_formatter' },
|
||||
-- ["*"] = { "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 = {
|
||||
-- sql_formatter = {
|
||||
-- -- prepend_args = { "-c", vim.fn.expand("~/.config/sql_formatter.json"),
|
||||
-- args = function()
|
||||
-- -- Создаём временный JSON-файл конфигурации
|
||||
-- local config_path = vim.fn.tempname() .. ".json"
|
||||
-- local config_content = vim.fn.json_encode({
|
||||
-- tabWidth = 4,
|
||||
-- })
|
||||
-- local file = io.open(config_path, "w")
|
||||
-- file:write(config_content)
|
||||
-- file:close()
|
||||
-- -- Возвращаем аргументы для форматтера с указанием конфигурационного файла
|
||||
-- return { "-c", config_path }
|
||||
-- end,
|
||||
-- stdin = true,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
16
nvim/lua/kickstart/plugins/autopairs.lua
Normal file
16
nvim/lua/kickstart/plugins/autopairs.lua
Normal file
|
@ -0,0 +1,16 @@
|
|||
-- autopairs
|
||||
-- https://github.com/windwp/nvim-autopairs
|
||||
|
||||
return {
|
||||
'windwp/nvim-autopairs',
|
||||
event = 'InsertEnter',
|
||||
-- Optional dependency
|
||||
dependencies = { 'hrsh7th/nvim-cmp' },
|
||||
config = function()
|
||||
require('nvim-autopairs').setup {}
|
||||
-- If you want to automatically add `(` after selecting a function or method
|
||||
local cmp_autopairs = require 'nvim-autopairs.completion.cmp'
|
||||
local cmp = require 'cmp'
|
||||
cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done())
|
||||
end,
|
||||
}
|
119
nvim/lua/kickstart/plugins/completion.lua
Normal file
119
nvim/lua/kickstart/plugins/completion.lua
Normal file
|
@ -0,0 +1,119 @@
|
|||
-- Autocompletion
|
||||
|
||||
return {
|
||||
{
|
||||
'hrsh7th/nvim-cmp',
|
||||
event = 'InsertEnter',
|
||||
dependencies = {
|
||||
-- Snippet Engine & its associated nvim-cmp source
|
||||
{
|
||||
'L3MON4D3/LuaSnip',
|
||||
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,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
'saadparwaiz1/cmp_luasnip',
|
||||
|
||||
-- Adds other completion capabilities.
|
||||
-- nvim-cmp does not ship with all sources by default. They are split
|
||||
-- into multiple repos for maintenance purposes.
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
'hrsh7th/cmp-path',
|
||||
},
|
||||
config = function()
|
||||
-- See `:help cmp`
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
luasnip.config.setup {}
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
luasnip.lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||
|
||||
-- For an understanding of why these mappings were
|
||||
-- chosen, you will need to read `:help ins-completion`
|
||||
--
|
||||
-- No, but seriously. Please read `:help ins-completion`, it is really good!
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
-- Select the [n]ext item
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
-- Select the [p]revious item
|
||||
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||
|
||||
-- Scroll the documentation window [b]ack / [f]orward
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
|
||||
-- Accept ([y]es) the completion.
|
||||
-- This will auto-import if your LSP supports it.
|
||||
-- This will expand snippets if the LSP sent a snippet.
|
||||
['<C-y>'] = cmp.mapping.confirm { select = true },
|
||||
|
||||
-- If you prefer more traditional completion keymaps,
|
||||
-- you can uncomment the following lines
|
||||
--['<CR>'] = cmp.mapping.confirm { select = true },
|
||||
--['<Tab>'] = cmp.mapping.select_next_item(),
|
||||
--['<S-Tab>'] = cmp.mapping.select_prev_item(),
|
||||
|
||||
-- Manually trigger a completion from nvim-cmp.
|
||||
-- Generally you don't need this, because nvim-cmp will display
|
||||
-- completions whenever it has completion options available.
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
|
||||
-- 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>'] = cmp.mapping(function()
|
||||
if luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
['<C-h>'] = cmp.mapping(function()
|
||||
if luasnip.locally_jumpable(-1) then
|
||||
luasnip.jump(-1)
|
||||
end
|
||||
end, { 'i', 's' }),
|
||||
|
||||
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
|
||||
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
|
||||
},
|
||||
sources = {
|
||||
{
|
||||
name = 'lazydev',
|
||||
-- set group index to 0 to skip loading LuaLS completions as lazydev recommends it
|
||||
group_index = 0,
|
||||
},
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'path' },
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
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,
|
||||
}
|
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' },
|
||||
sql = { 'sqlfluff' },
|
||||
go = { 'golangcilint' },
|
||||
}
|
||||
|
||||
-- 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,
|
||||
},
|
||||
}
|
316
nvim/lua/kickstart/plugins/lsp.lua
Normal file
316
nvim/lua/kickstart/plugins/lsp.lua
Normal file
|
@ -0,0 +1,316 @@
|
|||
-- 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 nvim-cmp
|
||||
'hrsh7th/cmp-nvim-lsp',
|
||||
},
|
||||
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
|
||||
|
||||
-- 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('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
|
||||
|
||||
-- Find references for the word under your cursor.
|
||||
map('gr', 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('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||
|
||||
-- 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('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
|
||||
|
||||
-- Fuzzy find all the symbols in your current document.
|
||||
-- Symbols are things like variables, functions, types, etc.
|
||||
map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
||||
|
||||
-- Fuzzy find all the symbols in your current workspace.
|
||||
-- Similar to document symbols, except searches over your entire project.
|
||||
map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||
|
||||
-- Rename the variable under your cursor.
|
||||
-- Most Language Servers support renaming across files, etc.
|
||||
map('<leader>rn', 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('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
|
||||
|
||||
-- WARN: This is not Goto Definition, this is Goto Declaration.
|
||||
-- For example, in C this would take you to the header.
|
||||
map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||
|
||||
-- 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
|
||||
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
|
||||
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 nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
|
||||
-- So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_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 lspconfig = require('lspconfig')
|
||||
|
||||
-- Nix
|
||||
lspconfig.nixd.setup {}
|
||||
|
||||
-- Golang
|
||||
lspconfig.gopls.setup {}
|
||||
lspconfig.templ.setup {}
|
||||
|
||||
-- SQL
|
||||
-- lspconfig.postgres_lsp.setup {}
|
||||
lspconfig.sqls.setup {
|
||||
on_attach = function(client, bufnr)
|
||||
-- Выключить форматирование
|
||||
client.server_capabilities.documentFormattingProvider = false
|
||||
end,
|
||||
}
|
||||
|
||||
-- Frontend
|
||||
lspconfig.tailwindcss.setup {}
|
||||
lspconfig.ts_ls.setup {}
|
||||
lspconfig.htmx.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.ccls.setup {
|
||||
-- init_options = {
|
||||
-- cache = {
|
||||
-- directory = ".ccls-cache";
|
||||
-- };
|
||||
-- }
|
||||
-- }
|
||||
lspconfig.clangd.setup {}
|
||||
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 {}
|
||||
|
||||
-- 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 {}
|
||||
|
||||
|
||||
-- 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 {
|
||||
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,
|
||||
},
|
||||
}
|
42
nvim/lua/kickstart/plugins/mini.lua
Normal file
42
nvim/lua/kickstart/plugins/mini.lua
Normal file
|
@ -0,0 +1,42 @@
|
|||
-- 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()
|
||||
|
||||
-- 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,
|
||||
},
|
||||
}
|
||||
|
40
nvim/lua/kickstart/plugins/neo-tree.lua
Normal file
40
nvim/lua/kickstart/plugins/neo-tree.lua
Normal file
|
@ -0,0 +1,40 @@
|
|||
-- 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',
|
||||
version = '*',
|
||||
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"
|
||||
},
|
||||
},
|
||||
},
|
||||
cmd = 'Neotree',
|
||||
keys = {
|
||||
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
||||
},
|
||||
opts = {
|
||||
filesystem = {
|
||||
window = {
|
||||
mappings = {
|
||||
['\\'] = 'close_window',
|
||||
},
|
||||
},
|
||||
filtered_items = {
|
||||
visible = true, -- Show hidden files
|
||||
-- hide_dotfiles = false,
|
||||
-- hide_gitignored = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
119
nvim/lua/kickstart/plugins/telescope.lua
Normal file
119
nvim/lua/kickstart/plugins/telescope.lua
Normal file
|
@ -0,0 +1,119 @@
|
|||
-- 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',
|
||||
branch = '0.1.x',
|
||||
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>', builtin.buffers, { desc = '[ ] Find existing buffers' })
|
||||
|
||||
-- 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,
|
||||
},
|
||||
}
|
150
nvim/lua/kickstart/plugins/themes.lua
Normal file
150
nvim/lua/kickstart/plugins/themes.lua
Normal file
|
@ -0,0 +1,150 @@
|
|||
-- 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,
|
||||
},
|
||||
|
||||
----------------------------------------------------------
|
||||
-- Гандоны не дают выбрать тему нормально --
|
||||
-- Приходится конфиг переписывать ради выбора расцветок --
|
||||
----------------------------------------------------------
|
||||
{
|
||||
'sainnhe/gruvbox-material',
|
||||
priority = 1000,
|
||||
init = function()
|
||||
-- 'hard', 'medium', 'soft'
|
||||
vim.g.gruvbox_material_background = 'medium'
|
||||
-- 'material', 'mix', 'original'
|
||||
vim.g.gruvbox_material_foreground = 'mix'
|
||||
-- 'grey', 'colored', 'highlighted'
|
||||
vim.g.gruvbox_material_diagnostic_virtual_text = 'colored'
|
||||
vim.g.gruvbox_material_better_performance = 1
|
||||
vim.g.gruvbox_material_diagnostic_line_highlight = 1
|
||||
vim.g.gruvbox_material_diagnostic_text_highlight = 1
|
||||
-- vim.g.gruvbox_material_enable_italic = true
|
||||
vim.cmd.colorscheme 'gruvbox-material'
|
||||
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,
|
||||
},
|
||||
}
|
11
nvim/lua/kickstart/plugins/todo-comments.lua
Normal file
11
nvim/lua/kickstart/plugins/todo-comments.lua
Normal file
|
@ -0,0 +1,11 @@
|
|||
-- Highlight todo, notes, etc in comments
|
||||
|
||||
return {
|
||||
{
|
||||
'folke/todo-comments.nvim',
|
||||
event = 'VimEnter',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
opts = { signs = false },
|
||||
},
|
||||
}
|
||||
|
57
nvim/lua/kickstart/plugins/treesitter.lua
Normal file
57
nvim/lua/kickstart/plugins/treesitter.lua
Normal file
|
@ -0,0 +1,57 @@
|
|||
-- Highlight, edit, and navigate code
|
||||
|
||||
return {
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
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',
|
||||
},
|
||||
-- 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
|
||||
},
|
||||
}
|
||||
|
4
nvim/lua/kickstart/plugins/vim-sleuth.lua
Normal file
4
nvim/lua/kickstart/plugins/vim-sleuth.lua
Normal file
|
@ -0,0 +1,4 @@
|
|||
-- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
|
||||
return {
|
||||
'tpope/vim-sleuth', -- Detect expandtab and shiftwidth automatically
|
||||
}
|
72
nvim/lua/kickstart/plugins/which-key.lua
Normal file
72
nvim/lua/kickstart/plugins/which-key.lua
Normal file
|
@ -0,0 +1,72 @@
|
|||
-- Useful plugin to show you pending keybinds.
|
||||
|
||||
-- NOTE: Plugins can also be configured to run Lua code when they are loaded.
|
||||
--
|
||||
-- This is often very useful to both group configuration, as well as handle
|
||||
-- lazy loading plugins that don't need to be loaded immediately at startup.
|
||||
--
|
||||
-- For example, in the following configuration, we use:
|
||||
-- event = 'VimEnter'
|
||||
--
|
||||
-- which loads which-key before all the UI elements are loaded. Events can be
|
||||
-- normal autocommands events (`:help autocmd-events`).
|
||||
--
|
||||
-- Then, because we use the `config` key, the configuration only runs
|
||||
-- after the plugin has been loaded:
|
||||
-- config = function() ... end
|
||||
|
||||
return {
|
||||
{
|
||||
'folke/which-key.nvim',
|
||||
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
|
||||
opts = {
|
||||
icons = {
|
||||
-- set icon mappings to true if you have a Nerd Font
|
||||
mappings = vim.g.have_nerd_font,
|
||||
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
|
||||
-- default which-key.nvim defined Nerd Font icons, otherwise define a string table
|
||||
keys = vim.g.have_nerd_font and {} or {
|
||||
Up = '<Up> ',
|
||||
Down = '<Down> ',
|
||||
Left = '<Left> ',
|
||||
Right = '<Right> ',
|
||||
C = '<C-…> ',
|
||||
M = '<M-…> ',
|
||||
D = '<D-…> ',
|
||||
S = '<S-…> ',
|
||||
CR = '<CR> ',
|
||||
Esc = '<Esc> ',
|
||||
ScrollWheelDown = '<ScrollWheelDown> ',
|
||||
ScrollWheelUp = '<ScrollWheelUp> ',
|
||||
NL = '<NL> ',
|
||||
BS = '<BS> ',
|
||||
Space = '<Space> ',
|
||||
Tab = '<Tab> ',
|
||||
F1 = '<F1>',
|
||||
F2 = '<F2>',
|
||||
F3 = '<F3>',
|
||||
F4 = '<F4>',
|
||||
F5 = '<F5>',
|
||||
F6 = '<F6>',
|
||||
F7 = '<F7>',
|
||||
F8 = '<F8>',
|
||||
F9 = '<F9>',
|
||||
F10 = '<F10>',
|
||||
F11 = '<F11>',
|
||||
F12 = '<F12>',
|
||||
},
|
||||
},
|
||||
|
||||
-- Document existing key chains
|
||||
spec = {
|
||||
{ '<leader>c', group = '[C]ode', mode = { 'n', 'x' } },
|
||||
{ '<leader>d', group = '[D]ocument' },
|
||||
{ '<leader>r', group = '[R]ename' },
|
||||
{ '<leader>s', group = '[S]earch' },
|
||||
{ '<leader>w', group = '[W]orkspace' },
|
||||
{ '<leader>t', group = '[T]oggle' },
|
||||
{ '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
121
nvim/lua/kickstart/settings.lua
Normal file
121
nvim/lua/kickstart/settings.lua
Normal file
|
@ -0,0 +1,121 @@
|
|||
-- Set <space> as the leader key
|
||||
-- See `:help mapleader`
|
||||
-- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
|
||||
vim.g.mapleader = ' '
|
||||
vim.g.maplocalleader = ' '
|
||||
|
||||
-- Set to true if you have a Nerd Font installed and selected in the terminal
|
||||
vim.g.have_nerd_font = true
|
||||
|
||||
-- [[ Setting options ]]
|
||||
-- See `:help vim.opt`
|
||||
-- NOTE: You can change these options as you wish!
|
||||
-- For more options, you can see `:help option-list`
|
||||
|
||||
-- Make line numbers default
|
||||
vim.opt.number = true
|
||||
-- You can also add relative line numbers, to help with jumping.
|
||||
vim.opt.relativenumber = true
|
||||
|
||||
-- Табуляция в 4 символа
|
||||
vim.opt.tabstop = 4
|
||||
|
||||
-- Enable mouse mode, can be useful for resizing splits for example!
|
||||
vim.opt.mouse = 'a'
|
||||
|
||||
-- Don't show the mode, since it's already in the status line
|
||||
vim.opt.showmode = false
|
||||
|
||||
-- Sync clipboard between OS and Neovim.
|
||||
-- Schedule the setting after `UiEnter` because it can increase startup-time.
|
||||
-- Remove this option if you want your OS clipboard to remain independent.
|
||||
-- See `:help 'clipboard'`
|
||||
vim.schedule(function()
|
||||
vim.opt.clipboard = 'unnamedplus'
|
||||
end)
|
||||
|
||||
-- Enable break indent
|
||||
vim.opt.breakindent = true
|
||||
|
||||
-- Save undo history
|
||||
vim.opt.undofile = true
|
||||
|
||||
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
|
||||
vim.opt.ignorecase = true
|
||||
vim.opt.smartcase = true
|
||||
|
||||
-- Keep signcolumn on by default
|
||||
vim.opt.signcolumn = 'yes'
|
||||
|
||||
-- Decrease update time
|
||||
vim.opt.updatetime = 250
|
||||
|
||||
-- Decrease mapped sequence wait time
|
||||
-- Displays which-key popup sooner
|
||||
vim.opt.timeoutlen = 300
|
||||
|
||||
-- Configure how new splits should be opened
|
||||
vim.opt.splitright = true
|
||||
vim.opt.splitbelow = true
|
||||
|
||||
-- Sets how neovim will display certain whitespace characters in the editor.
|
||||
-- See `:help 'list'`
|
||||
-- and `:help 'listchars'`
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||
|
||||
-- Preview substitutions live, as you type!
|
||||
vim.opt.inccommand = 'split'
|
||||
|
||||
-- Show which line your cursor is on
|
||||
vim.opt.cursorline = true
|
||||
|
||||
-- Minimal number of screen lines to keep above and below the cursor.
|
||||
vim.opt.scrolloff = 10
|
||||
|
||||
-- [[ Basic Keymaps ]]
|
||||
-- See `:help vim.keymap.set()`
|
||||
|
||||
-- Clear highlights on search when pressing <Esc> in normal mode
|
||||
-- See `:help hlsearch`
|
||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||
|
||||
-- Diagnostic keymaps
|
||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||
|
||||
-- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
|
||||
-- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which
|
||||
-- is not what someone will guess without a bit more experience.
|
||||
--
|
||||
-- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
|
||||
-- or just use <C-\><C-n> to exit terminal mode
|
||||
vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' })
|
||||
|
||||
-- TIP: Disable arrow keys in normal mode
|
||||
-- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>')
|
||||
-- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>')
|
||||
-- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>')
|
||||
-- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>')
|
||||
|
||||
-- Keybinds to make split navigation easier.
|
||||
-- Use CTRL+<hjkl> to switch between windows
|
||||
--
|
||||
-- See `:help wincmd` for a list of all window commands
|
||||
vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' })
|
||||
vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' })
|
||||
vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' })
|
||||
vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' })
|
||||
|
||||
-- [[ Basic Autocommands ]]
|
||||
-- See `:help lua-guide-autocommands`
|
||||
|
||||
-- Highlight when yanking (copying) text
|
||||
-- Try it with `yap` in normal mode
|
||||
-- See `:help vim.highlight.on_yank()`
|
||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||
desc = 'Highlight when yanking (copying) text',
|
||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
||||
callback = function()
|
||||
vim.highlight.on_yank()
|
||||
end,
|
||||
})
|
66
nvim/shit.md
Normal file
66
nvim/shit.md
Normal file
|
@ -0,0 +1,66 @@
|
|||
Тут будут куски текста из разных источников. Я не хочу засирать ими свои заметки, кину сюда
|
||||
|
||||
```sql
|
||||
select * from pidor
|
||||
```
|
||||
|
||||
|
||||
## На будущее
|
||||
|
||||
Fix C/C++ - https://www.reddit.com/r/NixOS/comments/1d7zvgu/nvim_cant_find_standard_library_headers/
|
||||
Запишу некоторые комменты из этого поста на реддите
|
||||
|
||||
---
|
||||
|
||||
|
||||
Haven't seen it mentioned, so here is an alternative option.
|
||||
|
||||
I use nix-ld which basically makes the listed libraries available in their expected locations.
|
||||
|
||||
The simple config below fixed Mason for me. it also works with Doom Emacs so it's a more general solution. You can add more packages to the list and any libs will be made available for all external apps.
|
||||
|
||||
```nix
|
||||
nix-ld = {
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
stdenv.cc.cc
|
||||
];
|
||||
};
|
||||
```
|
||||
|
||||
Since then, I have also been able to get X-Plane running natively by adding missing libraries to the list. It can be a bit tedious figuring out which libraries are missing and what packages need to be added, but it only needs to be done once. To figure out what libraries an app needs and which packages they belong to, do the following:
|
||||
|
||||
run nix-index (takes about 5 minutes) which you only need to do the first time to create a file database of nixpkgs.
|
||||
|
||||
Find the libraries an executable needs and whether they are found or missing. ldd ./your_executable_file
|
||||
|
||||
Use nix-locate to find packages that contain that library. For example: nix-locate -w ./libX11.so.6 --top-level It may show several packages.. pick the one that looks most appropriate. In this case it was xorg.libX11
|
||||
|
||||
Add that package to the nix-ld libraries list.
|
||||
|
||||
Once all libraries are added, rebuild your system.
|
||||
|
||||
You may need to reboot or log out and back in again before ldd will find the libraries.
|
||||
|
||||
The nice thing about nix-ld, is once you have a nice collection of common libraries setup, many apps will just work like on other distros.
|
||||
|
||||
---
|
||||
|
||||
Hello, sorry for the late response. I've been using that nix-ld setup for Rust, Lua, and Bash, LSPs for a while. Funnily enough it was thanks to one of your previous comments that I first tried it.
|
||||
|
||||
For any of the mentioned languages I didn't have to put anything into nix-ld, even the clangd LSPs in Mason installed correctly, literally the only issue is that NVim doesn't see the standard library headers. I've tried putting every package in there: clang, clang-tools, clangStdenv, libclang, and ccls.
|
||||
|
||||
I'm gonna be completely honest, I'm not sure I understand the instructions, especially the ldd part, I'm not sure what executable I should point to with that command.
|
||||
|
||||
Are there any libraries that you'd recommend I'd put in nix-ld? Like a base line?
|
||||
|
||||
Also as a further question. I'm not using NixOS to manage my NVim config whatsoever, meaning I just put my the nvim config into the ~/.config directory, could that be the issue, or is that ok as a practice?
|
||||
|
||||
---
|
||||
|
||||
Yeah, I'm a bit of a nix-ld fanboy as it saved NixOS for me when I was feeling like giving up.
|
||||
|
||||
I gotta admit, I'm not a developer, so I'm not an expert on dev tools. Maybe try creating a dev shell with nix (or a flake)? You can specify exactly what libraries you need and they should be available when you instantiate the shell.
|
||||
|
||||
This post on github may give you some ideas: https://github.com/NixOS/nixpkgs/issues/92739#issuecomment-861248463. It's a bit old, but it may be worth trying. Try running nvim inside of the dev shell.. maybe the standard libraries will be available then?
|
||||
|
|
@ -6,7 +6,7 @@ application/xml=nvim.desktop;codium.desktop
|
|||
application/yaml=nvim.desktop;codium.desktop
|
||||
image/*=com.interversehq.qView.desktop;imv.desktop
|
||||
image/apng=com.interversehq.qView.desktop;imv.desktop
|
||||
image/avif=com.interversehq.qView.desktop;imv.desktop
|
||||
image/avif=imv.desktop;com.interversehq.qView.desktop
|
||||
image/gif=com.interversehq.qView.desktop;imv.desktop
|
||||
image/jpeg=;com.interversehq.qView.desktop;imv.desktop;
|
||||
image/pjpeg=com.interversehq.qView.desktop;imv.desktop
|
||||
|
@ -56,7 +56,7 @@ audio/x-mpegurl=mpv.desktop
|
|||
audio/x-opus+ogg=mpv.desktop
|
||||
image/*=com.interversehq.qView.desktop;imv.desktop
|
||||
image/apng=com.interversehq.qView.desktop;imv.desktop
|
||||
image/avif=com.interversehq.qView.desktop;imv.desktop
|
||||
image/avif=imv.desktop;com.interversehq.qView.desktop
|
||||
image/gif=com.interversehq.qView.desktop;imv.desktop
|
||||
image/jpeg=com.interversehq.qView.desktop;imv.desktop
|
||||
image/pjpeg=com.interversehq.qView.desktop;imv.desktop
|
||||
|
|
Loading…
Add table
Reference in a new issue