Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 41 additions & 25 deletions modules/programs/fish.nix
Original file line number Diff line number Diff line change
Expand Up @@ -734,34 +734,50 @@ in
(mkIf (lib.length cfg.plugins > 0) {
xdg.configFile = lib.mkMerge (
map (plugin: {
"fish/conf.d/plugin-${plugin.name}.fish".source = fishIndent "${plugin.name}.fish" ''
# Plugin ${plugin.name}
set -l plugin_dir ${plugin.src}

# Set paths to import plugin components
if test -d $plugin_dir/functions
set fish_function_path $fish_function_path[1] $plugin_dir/functions $fish_function_path[2..-1]
end

if test -d $plugin_dir/completions
set fish_complete_path $fish_complete_path[1] $plugin_dir/completions $fish_complete_path[2..-1]
end

# Source initialization code if it exists.
if test -d $plugin_dir/conf.d
for f in $plugin_dir/conf.d/*.fish
source $f
"fish/conf.d/plugin-${plugin.name}.fish" = {
onChange = ''
${lib.getExe cfg.package} -c '
set -l plugin_dir ${plugin.src}
# https://github.com/fish-shell/fish-shell/issues/9456
set -l dest_dir $__fish_config_dir/themes

if test -d $plugin_dir/themes
mkdir -p $dest_dir
for f in $plugin_dir/themes/*.theme
ln -sf $f $dest_dir/(basename $f)
end
end
'
'';
source = fishIndent "${plugin.name}.fish" ''
# Plugin ${plugin.name}
set -l plugin_dir ${plugin.src}

# Set paths to import plugin components
if test -d $plugin_dir/functions
set fish_function_path $fish_function_path[1] $plugin_dir/functions $fish_function_path[2..-1]
end

if test -d $plugin_dir/completions
set fish_complete_path $fish_complete_path[1] $plugin_dir/completions $fish_complete_path[2..-1]
end
end

if test -f $plugin_dir/key_bindings.fish
source $plugin_dir/key_bindings.fish
end
# Source initialization code if it exists.
if test -d $plugin_dir/conf.d
for f in $plugin_dir/conf.d/*.fish
source $f
end
end

if test -f $plugin_dir/init.fish
source $plugin_dir/init.fish
end
'';
if test -f $plugin_dir/key_bindings.fish
source $plugin_dir/key_bindings.fish
end

if test -f $plugin_dir/init.fish
source $plugin_dir/init.fish
end
'';
};
}) cfg.plugins
);
})
Expand Down