aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorRyan Orendorff <ryan@orendorff.io>2019-09-24 23:20:53 -0700
committerRobert Helgesson <robert@rycee.net>2020-02-20 00:03:25 +0100
commit108259925a68a4c8c36e3fdf43c39a6ae55b11a7 (patch)
tree54f7a49ffc29d7cd1bf4948cb666f4ddd659e1e7 /modules
parent639f6fea8c7dc0f10b068b7edcb5f75f2e95a892 (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.nix37
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));
})
]);
}