82 lines
2.0 KiB
Nix
82 lines
2.0 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
inherit (lib) mkIf mkOption mkMerge types;
|
|
|
|
cfg = config.shells;
|
|
aliases = {
|
|
"ls" = "lsd --color=never";
|
|
"ll" = "lsd -la --color=never";
|
|
"llt" = "lsd --tree --color=never";
|
|
"cp" = "cp --verbose";
|
|
"rm" = "rm --verbose";
|
|
"mv" = "mv --verbose";
|
|
"mkdir" = "mkdir --verbose";
|
|
"v" = "nvim";
|
|
"music" = "ncmpcpp";
|
|
"tls" = "tmux ls";
|
|
"tkl" = "tmux kill-session -t";
|
|
"tch" = "tmux attach";
|
|
"ytmusic" = "yt-dlp -f 'ba' -x --audio-format mp3 -o '%(id)s.%(ext)s'";
|
|
"ytvid" = "yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'";
|
|
};
|
|
|
|
in
|
|
{
|
|
options.shells = {
|
|
fish.enable = mkOption {
|
|
default = false;
|
|
type = types.bool;
|
|
description = ''Enables FISH'';
|
|
};
|
|
|
|
zsh.enable = mkOption {
|
|
default = true;
|
|
type = types.bool;
|
|
description = ''Enables ZSH'';
|
|
};
|
|
};
|
|
|
|
config = {
|
|
programs.fish = {
|
|
enable = cfg.fish.enable;
|
|
shellAliases = aliases;
|
|
plugins = [
|
|
{ name = "hydro"; src = pkgs.fishPlugins.hydro.src; }
|
|
];
|
|
functions = {
|
|
__fish_command_not_found_handler = {
|
|
body = "__fish_default_command_not_found_handler $argv[1]";
|
|
onEvent = "fish_command_not_found";
|
|
};
|
|
|
|
su = "command su --shell=/usr/bin/fish $argv";
|
|
};
|
|
};
|
|
|
|
programs.zsh = {
|
|
enable = cfg.zsh.enable;
|
|
enableCompletion = true;
|
|
defaultKeymap = "emacs";
|
|
shellAliases = aliases;
|
|
autosuggestion.enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
history.path = "${config.xdg.dataHome}/zsh/zsh_history";
|
|
initContent = ''
|
|
[ -f ~/.p10k.zsh ]; source ~/.p10k.zsh
|
|
'';
|
|
plugins = [
|
|
{
|
|
name = "powerlevel10k";
|
|
src = pkgs.zsh-powerlevel10k;
|
|
file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";
|
|
}
|
|
];
|
|
};
|
|
|
|
home.file.".p10k.zsh" = mkIf cfg.zsh.enable {
|
|
source = ../config/p10k-config;
|
|
};
|
|
};
|
|
}
|