diff options
author | Ryan Orendorff <ryan@orendorff.io> | 2019-09-24 23:20:53 -0700 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2020-02-20 00:03:25 +0100 |
commit | 108259925a68a4c8c36e3fdf43c39a6ae55b11a7 (patch) | |
tree | 54f7a49ffc29d7cd1bf4948cb666f4ddd659e1e7 /modules | |
parent | 639f6fea8c7dc0f10b068b7edcb5f75f2e95a892 (diff) |
fish: plugins separated into conf.d files
This was done to make it easier for the generated files to be understood.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/programs/fish.nix | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/modules/programs/fish.nix b/modules/programs/fish.nix index 0d0364b7e13..a45b0e2fc80 100644 --- a/modules/programs/fish.nix +++ b/modules/programs/fish.nix @@ -291,34 +291,37 @@ in } - # Plugins are all sources together in a conf.d file as this allows - # the original source to be undisturbed. + # Each plugin gets a corresponding conf.d/plugin-NAME.fish file to load + # in the paths and any initialization scripts. (mkIf (length cfg.plugins > 0) { - xdg.configFile."fish/conf.d/99plugins.fish".text = concatStrings - (map (plugin: '' + xdg.configFile = mkMerge ( + (map (plugin: { "fish/conf.d/plugin-${plugin.name}.fish".text = '' # Plugin ${plugin.name} - if test -d ${plugin.src}/functions - set fish_function_path $fish_function_path[1] ${plugin.src}/functions $fish_function_path[2..-1] - end + set -l plugin_dir ${plugin.src} - if test -d ${plugin.src}/completions - set fish_complete_path $fish_function_path[1] ${plugin.src}/completions $fish_complete_path[2..-1] + # 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.src}/conf.d - source ${plugin.src}/conf.d/*.fish + if test -d $plugin_dir"/completions" + set fish_complete_path $fish_function_path[1] $plugin_dir"/completions" $fish_complete_path[2..-1] end - if test -f ${plugin.src}/key_bindings.fish - source ${plugin.src}/key_bindings.fish + # Source initialization code if it exists. + if test -d $plugin_dir"/conf.d" + source $plugin_dir"/conf.d/*.fish" end - if test -f ${plugin.src}/init.fish - source ${plugin.src}/init.fish + if test -f $plugin_dir"/key_bindings.fish" + source $plugin_dir"/key_bindings.fish" end - '' - ) cfg.plugins); + if test -f $plugin_dir"/init.fish" + source $plugin_dir"/init.fish" + end + ''; + }) cfg.plugins)); }) ]); } |