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