2022-01-23 01:32:58 +00:00
|
|
|
|
{ config, pkgs, lib, ... }:
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
# Fish Shell
|
|
|
|
|
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.fish.enable
|
|
|
|
|
programs.fish.enable = true;
|
|
|
|
|
|
|
|
|
|
# Add Fish plugins
|
2022-07-16 20:34:47 +00:00
|
|
|
|
home.packages = with pkgs.fishPlugins; [
|
|
|
|
|
done
|
|
|
|
|
];
|
2022-01-23 01:32:58 +00:00
|
|
|
|
|
|
|
|
|
programs.fish.plugins = [
|
|
|
|
|
{
|
|
|
|
|
name = "fisher";
|
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
|
|
|
owner = "jorgebucaran";
|
|
|
|
|
repo = "fisher";
|
|
|
|
|
rev = "93dafd242b52a0dc6bea54130d0ea041830c7fd6";
|
|
|
|
|
sha256 = "0qbqlydh7b928473f7c4gy68sr1wnwyhcvvqzcik1vx5hdbka7ad";
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
|
2022-04-20 20:31:48 +00:00
|
|
|
|
home.file.".config/fish/fish_plugins".text = ''
|
2022-04-20 20:31:11 +00:00
|
|
|
|
jorgebucaran/autopair.fish
|
|
|
|
|
jorgebucaran/replay.fish
|
|
|
|
|
jorgebucaran/getopts.fish
|
|
|
|
|
americanhanko/fish-spin
|
|
|
|
|
joseluisq/gitnow
|
|
|
|
|
fishpkg/fish-humanize-duration
|
|
|
|
|
oh-my-fish/plugin-bang-bang
|
|
|
|
|
matthewess/fish-autovenv
|
|
|
|
|
jethrokuan/z
|
|
|
|
|
Gazorby/fish-abbreviation-tips
|
|
|
|
|
'';
|
2022-01-23 01:32:58 +00:00
|
|
|
|
|
|
|
|
|
# Fish functions ----------------------------------------------------------------------------- {{{
|
|
|
|
|
|
|
|
|
|
programs.fish.functions = {
|
|
|
|
|
# User functions
|
|
|
|
|
mkdcd = {
|
|
|
|
|
argumentNames = [ "target" ];
|
|
|
|
|
body = ''
|
2022-05-08 01:43:56 +00:00
|
|
|
|
mkdir -p $target
|
2022-01-23 01:32:58 +00:00
|
|
|
|
cd $target
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
unz = {
|
|
|
|
|
argumentNames = [ "target" ];
|
|
|
|
|
body = ''
|
|
|
|
|
# strip extensions
|
|
|
|
|
string match \*.zip $target; and set target (string split -r -m1 . $target)[1]
|
|
|
|
|
unzip -d $target $target
|
|
|
|
|
'';
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Helpers
|
|
|
|
|
# Toggles `$term_background` between "light" and "dark". Other Fish functions trigger when this
|
|
|
|
|
# variable changes. We use a universal variable so that all instances of Fish have the same
|
|
|
|
|
# value for the variable.
|
|
|
|
|
toggle-background.body = ''
|
|
|
|
|
if test "$term_background" = light
|
|
|
|
|
set -U term_background dark
|
|
|
|
|
else
|
|
|
|
|
set -U term_background light
|
|
|
|
|
end
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
# Set `$term_background` based on whether macOS is light or dark mode. Other Fish functions
|
|
|
|
|
# trigger when this variable changes. We use a universal variable so that all instances of Fish
|
|
|
|
|
# have the same value for the variable.
|
2022-07-16 20:34:47 +00:00
|
|
|
|
set-background-to-macOS.body = ''
|
|
|
|
|
# Returns 'Dark' if in dark mode fails otherwise.
|
|
|
|
|
if defaults read -g AppleInterfaceStyle &>/dev/null
|
|
|
|
|
set -U term_background dark
|
|
|
|
|
else
|
|
|
|
|
set -U term_background light
|
|
|
|
|
end
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
# Set `$term_background` based on an env var.
|
|
|
|
|
set-background-to-env = {
|
|
|
|
|
argumentNames = [ "env_var" ];
|
2022-06-27 19:02:02 +00:00
|
|
|
|
body = ''
|
2022-07-16 20:34:47 +00:00
|
|
|
|
switch $$env_var
|
|
|
|
|
case 1
|
2022-06-27 19:02:02 +00:00
|
|
|
|
set -U term_background dark
|
2022-07-16 20:34:47 +00:00
|
|
|
|
case 0
|
2022-06-27 19:02:02 +00:00
|
|
|
|
set -U term_background light
|
|
|
|
|
end
|
|
|
|
|
'';
|
|
|
|
|
};
|
2022-01-23 01:32:58 +00:00
|
|
|
|
|
|
|
|
|
# Sets Fish Shell to light or dark colorscheme based on `$term_background`.
|
|
|
|
|
set-shell-colors = {
|
|
|
|
|
body = ''
|
|
|
|
|
# Use correct theme for `btm`
|
|
|
|
|
if test "$term_background" = light
|
|
|
|
|
alias btm "btm --color default-light"
|
|
|
|
|
else
|
|
|
|
|
alias btm "btm --color default"
|
|
|
|
|
end
|
|
|
|
|
# Set LS_COLORS
|
|
|
|
|
set -xg LS_COLORS (${pkgs.vivid}/bin/vivid generate solarized-$term_background)
|
|
|
|
|
# Set color variables
|
|
|
|
|
if test "$term_background" = light
|
|
|
|
|
set emphasized_text brgreen # base01
|
|
|
|
|
set normal_text bryellow # base00
|
|
|
|
|
set secondary_text brcyan # base1
|
|
|
|
|
set background_light white # base2
|
|
|
|
|
set background brwhite # base3
|
|
|
|
|
else
|
|
|
|
|
set emphasized_text brcyan # base1
|
|
|
|
|
set normal_text brblue # base0
|
|
|
|
|
set secondary_text brgreen # base01
|
|
|
|
|
set background_light black # base02
|
|
|
|
|
set background brblack # base03
|
|
|
|
|
end
|
|
|
|
|
# Set Fish colors that change when background changes
|
|
|
|
|
set -g fish_color_command $emphasized_text --bold # color of commands
|
|
|
|
|
set -g fish_color_param $normal_text # color of regular command parameters
|
|
|
|
|
set -g fish_color_comment $secondary_text # color of comments
|
|
|
|
|
set -g fish_color_autosuggestion $secondary_text # color of autosuggestions
|
|
|
|
|
set -g fish_pager_color_prefix $emphasized_text --bold # color of the pager prefix string
|
|
|
|
|
set -g fish_pager_color_description $selection_text # color of the completion description
|
|
|
|
|
set -g fish_pager_color_selected_prefix $background
|
|
|
|
|
set -g fish_pager_color_selected_completion $background
|
|
|
|
|
set -g fish_pager_color_selected_description $background
|
|
|
|
|
'';
|
|
|
|
|
onVariable = "term_background";
|
|
|
|
|
};
|
2022-07-17 16:37:52 +00:00
|
|
|
|
|
|
|
|
|
init-shell-colors.body = ''
|
|
|
|
|
set -g fish_color_quote cyan # color of commands
|
|
|
|
|
set -g fish_color_redirection brmagenta # color of IO redirections
|
|
|
|
|
set -g fish_color_end blue # color of process separators like ';' and '&'
|
|
|
|
|
set -g fish_color_error red # color of potential errors
|
|
|
|
|
set -g fish_color_match --reverse # color of highlighted matching parenthesis
|
|
|
|
|
set -g fish_color_search_match --background=yellow
|
|
|
|
|
set -g fish_color_selection --reverse # color of selected text (vi mode)
|
|
|
|
|
set -g fish_color_operator green # color of parameter expansion operators like '*' and '~'
|
|
|
|
|
set -g fish_color_escape red # color of character escapes like '\n' and and '\x70'
|
|
|
|
|
set -g fish_color_cancel red # color of the '^C' indicator on a canceled command
|
|
|
|
|
'';
|
2022-01-23 01:32:58 +00:00
|
|
|
|
};
|
|
|
|
|
# }}}
|
|
|
|
|
|
|
|
|
|
# Fish configuration ------------------------------------------------------------------------- {{{
|
|
|
|
|
|
|
|
|
|
# Aliases
|
2022-01-23 23:50:34 +00:00
|
|
|
|
programs.fish.shellAliases =
|
|
|
|
|
let
|
|
|
|
|
nixConfigDir = "${config.home.homeDirectory}/dotfiles.nix";
|
|
|
|
|
in
|
|
|
|
|
with pkgs; {
|
|
|
|
|
# Nix related
|
2022-07-11 02:08:44 +00:00
|
|
|
|
drb = "pushd ${nixConfigDir}/; darwin-rebuild build --flake ${nixConfigDir}/; popd";
|
|
|
|
|
drs = "pushd ${nixConfigDir}/; darwin-rebuild switch --flake ${nixConfigDir}/; popd";
|
2022-01-23 23:50:34 +00:00
|
|
|
|
drc = "codium ${nixConfigDir}";
|
2022-02-10 05:09:38 +00:00
|
|
|
|
drv = "vim ${nixConfigDir}";
|
2022-04-20 20:31:11 +00:00
|
|
|
|
flakeup = "nix flake update ${nixConfigDir}/";
|
2022-01-23 23:50:34 +00:00
|
|
|
|
nb = "nix build";
|
|
|
|
|
nd = "nix develop";
|
|
|
|
|
nf = "nix flake";
|
|
|
|
|
nr = "nix run";
|
2022-04-21 01:26:30 +00:00
|
|
|
|
ns = "nix search nixpkgs";
|
2022-05-08 01:43:56 +00:00
|
|
|
|
nsh = "nix shell";
|
2022-01-23 01:32:58 +00:00
|
|
|
|
|
2022-01-23 23:50:34 +00:00
|
|
|
|
# Other
|
|
|
|
|
".." = "cd ..";
|
|
|
|
|
":q" = "exit";
|
|
|
|
|
cat = "${bat}/bin/bat";
|
|
|
|
|
du = "${du-dust}/bin/dust";
|
|
|
|
|
g = "${gitAndTools.git}/bin/git";
|
|
|
|
|
la = "ll -a";
|
|
|
|
|
ll = "ls -l --time-style long-iso --icons";
|
|
|
|
|
ls = "${exa}/bin/exa";
|
|
|
|
|
ps = "${procs}/bin/procs";
|
|
|
|
|
tb = "toggle-background";
|
2022-06-27 18:50:03 +00:00
|
|
|
|
sb = "set-background-to-macOS";
|
2022-07-17 16:37:52 +00:00
|
|
|
|
code = "codium";
|
|
|
|
|
http = "xh";
|
|
|
|
|
https = "xhs";
|
|
|
|
|
top = "btm";
|
|
|
|
|
htop = "btm";
|
2022-01-23 23:50:34 +00:00
|
|
|
|
};
|
2022-01-23 01:32:58 +00:00
|
|
|
|
|
|
|
|
|
# Configuration that should be above `loginShellInit` and `interactiveShellInit`.
|
|
|
|
|
programs.fish.shellInit = ''
|
|
|
|
|
set -U fish_term24bit 1
|
|
|
|
|
${lib.optionalString pkgs.stdenv.isDarwin "set-background-to-macOS"}
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
programs.fish.interactiveShellInit = ''
|
|
|
|
|
set -g fish_greeting "ヽ(´ᗜ`)ノ welcome ヽ(´ᗜ`)ノ"
|
|
|
|
|
fish_vi_key_bindings
|
|
|
|
|
set VIRTUAL_ENV_DISABLE_PROMPT true
|
|
|
|
|
bind -M insert ! __history_previous_command
|
|
|
|
|
bind -M insert '$' __history_previous_command_arguments
|
|
|
|
|
${pkgs.thefuck}/bin/thefuck --alias | source
|
2022-05-08 01:43:56 +00:00
|
|
|
|
# Run function to set colors that are dependent on `$term_background` and to register them so
|
|
|
|
|
# they are triggered when the relevent event happens or variable changes.
|
2022-01-23 01:32:58 +00:00
|
|
|
|
set-shell-colors
|
2022-05-08 01:43:56 +00:00
|
|
|
|
# Set Fish colors that aren't dependent the `$term_background`.
|
2022-07-17 16:37:52 +00:00
|
|
|
|
init-shell-colors
|
2022-01-23 01:32:58 +00:00
|
|
|
|
'';
|
|
|
|
|
# }}}
|
|
|
|
|
|
|
|
|
|
# Starship Prompt
|
|
|
|
|
# https://rycee.gitlab.io/home-manager/options.html#opt-programs.starship.enable
|
|
|
|
|
programs.starship.enable = true;
|
|
|
|
|
|
|
|
|
|
# Starship settings -------------------------------------------------------------------------- {{{
|
|
|
|
|
|
|
|
|
|
programs.starship.settings = {
|
|
|
|
|
# See docs here: https://starship.rs/config/
|
|
|
|
|
# Symbols config configured in Flake.
|
|
|
|
|
|
2022-04-20 20:31:11 +00:00
|
|
|
|
battery.display = [
|
|
|
|
|
{ threshold = 25; } # display battery information if charge is <= 25%
|
|
|
|
|
];
|
2022-01-23 01:32:58 +00:00
|
|
|
|
directory.fish_style_pwd_dir_length = 1; # turn on fish directory truncation
|
|
|
|
|
directory.truncation_length = 2; # number of directories not to truncate
|
2022-02-10 05:09:38 +00:00
|
|
|
|
# hostname.style = "bold green"; # don't like the default
|
2022-01-23 01:32:58 +00:00
|
|
|
|
memory_usage.disabled = true; # because it includes cached memory it's reported as full a lot
|
2022-02-10 05:09:38 +00:00
|
|
|
|
# username.style_user = "bold blue"; # don't like the default
|
2022-01-23 01:32:58 +00:00
|
|
|
|
};
|
|
|
|
|
# }}}
|
2022-07-16 20:34:47 +00:00
|
|
|
|
|
|
|
|
|
# dark-mode-notify configuration
|
|
|
|
|
# {{{
|
|
|
|
|
launchd.enable = true;
|
|
|
|
|
launchd.agents.dark-mode-notify = {
|
|
|
|
|
enable = true;
|
|
|
|
|
config = {
|
|
|
|
|
Label = "ke.bou.dark-mode-notify";
|
|
|
|
|
KeepAlive = true;
|
|
|
|
|
StandardErrorPath = null;
|
|
|
|
|
StandardOutPath = null;
|
|
|
|
|
ProgramArguments = [
|
|
|
|
|
"${pkgs.dark-mode-notify}/bin/dark-mode-notify"
|
|
|
|
|
"${pkgs.fish}/bin/fish"
|
|
|
|
|
"-c"
|
|
|
|
|
"set-background-to-env DARKMODE"
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
# }}}
|
2022-01-23 01:32:58 +00:00
|
|
|
|
}
|