92 lines
4.5 KiB
Nix
92 lines
4.5 KiB
Nix
{ 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
|
||
'';
|
||
};
|
||
}
|