nixos_dots/modules/home-manager/terminal/zsh.nix
2025-04-07 22:53:44 +03:00

119 lines
No EOL
7.8 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ pkgs, ... }: {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion = {
enable = true;
strategy = [ # Выбери только один из них (а мб нет, сначала ищет историю, если пусто, то комплитит)
"history" # Chooses the most recent match from history.
"completion" # Chooses a suggestion based on what tab-completion would suggest. (requires Zsh 3.1 or later)
];
};
syntaxHighlighting.enable = true;
# Плюс это https://github.com/ohmyzsh/ohmyzsh/wiki/Cheatsheet
shellAliases = let
flakeDir = "~/nixos_dots";
in {
rbs = "sudo nixos-rebuild switch --impure --flake ${flakeDir}"; # Применить новый конфиг сразу
rbb = "sudo nixos-rebuild boot --impure --flake ${flakeDir}"; # Применить новый конфиг после ребута пк
# Можно назвать аналогом "sudo pacman -Su", не "Syu", репу не обновляет
upg = "sudo nixos-rebuild switch --impure --upgrade --flake ${flakeDir}"; # Обновить пакеты, но не репозиторий во fleke.lock
# Обновить все flake inputs до последних версий. Возможно это аналог "sudo pacman -Sy" на Arch Linux
# Если после upd дописать название инпута из flake.nix, то обновится только указанный инпут
# Например `upd nixpkgs2` для обновления анстабле репы
upd = "sudo nix flake update --flake ${flakeDir}";
# Garbage collector. Удалить все не используемые пакеты (например после обновы)
grb = "sudo nix-collect-garbage -d";
pkgs = "nvim ${flakeDir}/nixos/packages.nix";
vim = "nvim";
vi = "nvim";
v = "nvim";
t = "timer";
r = "ranger";
ff = "fastfetch";
yt = "cd /mnt/backups/Media/yt-dlp"; # Конфиги для бекапа YouTube
ytf = "yt-dlp --cookies-from-browser firefox";
qb = "cd /mnt/backups/Media/Music/Qobuz/qdl"; # Бекапить музыку с Qobuz
html = "python3 /mnt/backups/html-library/generate_gallery.py --path"; # Html image gallery
pyenva = "nix-shell --run zsh ${flakeDir}/modules/home-manager/pyenv-shell.nix";
nekoray = "sudo appimage-run /home/urec/Downloads/nekoray-3.26-2023-12-09-linux-x64.AppImage";
};
history = {
ignoreAllDups = true; # Удалять дубликаты из истории
ignoreSpace = true; # Не сохранять команду в истории, если перед ней стоит пробел
share = false; # Не синхронизировать историю в разных сессиях
};
# Environment variables that will be set for zsh session.
sessionVariables = {
HISTORY_SUBSTRING_SEARCH_FUZZY = "не работает блять"; # Нечёткий поиск для стрелок вверх/вниз.
};
# Extra commands that should be added to .zshrc
initExtra = ''
source ${pkgs.zsh-you-should-use}/share/zsh/plugins/you-should-use/you-should-use.plugin.zsh
'';
historySubstringSearch.enable = true; # Чтоб вверх/вниз учитывал уже написанную команду
oh-my-zsh = { # https://github.com/ohmyzsh/ohmyzsh
enable = true;
plugins = [ # Комментирую то, в надобности чего не уверен, но показалось интересным. Можно удалить
# "alias-finder" # Напомнит, если у написанной команды есть алиас (нет, так что заменил пакетом)
"aliases" # "als" в терминале покажет все алиасы (нет). Можно добавить слово для фильтрации
# "autoenv" # If a directory contains an .env file, it will automatically be executed when you cd into it (нет)
# "bgnotify" # Оповещения для долгих комманд. Make sure you have "notify-send" or "kdialog" installed. Хуета. По кд булькает
"colored-man-pages" # Adds colors to man pages
#"command-not-found" # Скажет какой пакет скачать, если команда не найдена
"copypath" # В терминале "copypath" скопирует нынешний абсолютный путь. Можно "copypath файл или дироктория"
"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.
# "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
# "watson" # Completion for https://github.com/TailorDev/Watson (CLI to track your time)
# "z" # Tracks your most visited directories and allows you to access them with very few keystrokes
"zoxide" # Как "z", но быстрее и с более сложным и точным алгоритмом для ранжирования директорий
];
extraConfig = ''
zstyle :omz:plugins:ssh-agent identities git-git.urec56.ru echoapps_gitlab_mail@urec56.ru wyrenereli_github urec56_github
'';
};
};
home.packages = with pkgs; [
zsh-autoenv # Плагина autoenv в oh-my-zsh не работает. Мб этот заработает
zsh-you-should-use # Напомнит, если у написанной команды есть алиас
zsh-nix-shell # zsh plugin that lets you use zsh in nix-shell shell
];
}