tmux: reorder tmux.conf content
In particular, put `extraConfig` in the end, which enables overriding of all settings, even plugin settings. PR #945
This commit is contained in:
parent
a6037a9eb8
commit
a7cdfaa325
|
@ -31,6 +31,13 @@ let
|
||||||
boolToStr = value: if value then "on" else "off";
|
boolToStr = value: if value then "on" else "off";
|
||||||
|
|
||||||
tmuxConf = ''
|
tmuxConf = ''
|
||||||
|
${optionalString cfg.sensibleOnTop ''
|
||||||
|
# ============================================= #
|
||||||
|
# Start with defaults from the Sensible plugin #
|
||||||
|
# --------------------------------------------- #
|
||||||
|
run-shell ${pkgs.tmuxPlugins.sensible.rtp}
|
||||||
|
# ============================================= #
|
||||||
|
''}
|
||||||
set -g default-terminal "${cfg.terminal}"
|
set -g default-terminal "${cfg.terminal}"
|
||||||
set -g base-index ${toString cfg.baseIndex}
|
set -g base-index ${toString cfg.baseIndex}
|
||||||
setw -g pane-base-index ${toString cfg.baseIndex}
|
setw -g pane-base-index ${toString cfg.baseIndex}
|
||||||
|
@ -74,10 +81,40 @@ let
|
||||||
setw -g clock-mode-style ${if cfg.clock24 then "24" else "12"}
|
setw -g clock-mode-style ${if cfg.clock24 then "24" else "12"}
|
||||||
set -s escape-time ${toString cfg.escapeTime}
|
set -s escape-time ${toString cfg.escapeTime}
|
||||||
set -g history-limit ${toString cfg.historyLimit}
|
set -g history-limit ${toString cfg.historyLimit}
|
||||||
|
|
||||||
${cfg.extraConfig}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
configPlugins = {
|
||||||
|
assertions = [(
|
||||||
|
let
|
||||||
|
hasBadPluginName = p: !(hasPrefix "tmuxplugin" (pluginName p));
|
||||||
|
badPlugins = filter hasBadPluginName cfg.plugins;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
assertion = badPlugins == [];
|
||||||
|
message =
|
||||||
|
"Invalid tmux plugin (not prefixed with \"tmuxplugins\"): "
|
||||||
|
+ concatMapStringsSep ", " pluginName badPlugins;
|
||||||
|
}
|
||||||
|
)];
|
||||||
|
|
||||||
|
home.file.".tmux.conf".text = ''
|
||||||
|
# ============================================= #
|
||||||
|
# Load plugins with Home Manager #
|
||||||
|
# --------------------------------------------- #
|
||||||
|
|
||||||
|
${(concatMapStringsSep "\n\n" (p: ''
|
||||||
|
# ${pluginName p}
|
||||||
|
# ---------------------
|
||||||
|
${p.extraConfig or ""}
|
||||||
|
run-shell ${
|
||||||
|
if types.package.check p
|
||||||
|
then p.rtp
|
||||||
|
else p.plugin.rtp
|
||||||
|
}
|
||||||
|
'') cfg.plugins)}
|
||||||
|
# ============================================= #
|
||||||
|
'';
|
||||||
|
};
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -258,63 +295,22 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (
|
config = mkIf cfg.enable (
|
||||||
mkMerge [
|
mkMerge ([
|
||||||
{
|
{
|
||||||
home.packages = [ cfg.package ]
|
home.packages = [ cfg.package ]
|
||||||
++ optional cfg.tmuxinator.enable pkgs.tmuxinator
|
++ optional cfg.tmuxinator.enable pkgs.tmuxinator
|
||||||
++ optional cfg.tmuxp.enable pkgs.tmuxp;
|
++ optional cfg.tmuxp.enable pkgs.tmuxp;
|
||||||
|
|
||||||
home.file.".tmux.conf".text = tmuxConf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
(mkIf cfg.sensibleOnTop {
|
|
||||||
home.file.".tmux.conf".text = mkBefore ''
|
|
||||||
# ============================================= #
|
|
||||||
# Start with defaults from the Sensible plugin #
|
|
||||||
# --------------------------------------------- #
|
|
||||||
run-shell ${pkgs.tmuxPlugins.sensible.rtp}
|
|
||||||
# ============================================= #
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.secureSocket {
|
(mkIf cfg.secureSocket {
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
TMUX_TMPDIR = ''''${XDG_RUNTIME_DIR:-"/run/user/\$(id -u)"}'';
|
TMUX_TMPDIR = ''''${XDG_RUNTIME_DIR:-"/run/user/\$(id -u)"}'';
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf (cfg.plugins != []) {
|
# config file ~/.tmux.conf
|
||||||
assertions = [(
|
{ home.file.".tmux.conf".text = mkBefore tmuxConf; }
|
||||||
let
|
(mkIf (cfg.plugins != []) configPlugins)
|
||||||
hasBadPluginName = p: !(hasPrefix "tmuxplugin" (pluginName p));
|
{ home.file.".tmux.conf".text = mkAfter cfg.extraConfig; }
|
||||||
badPlugins = filter hasBadPluginName cfg.plugins;
|
])
|
||||||
in
|
|
||||||
{
|
|
||||||
assertion = badPlugins == [];
|
|
||||||
message =
|
|
||||||
"Invalid tmux plugin (not prefixed with \"tmuxplugins\"): "
|
|
||||||
+ concatMapStringsSep ", " pluginName badPlugins;
|
|
||||||
}
|
|
||||||
)];
|
|
||||||
|
|
||||||
home.file.".tmux.conf".text = mkAfter ''
|
|
||||||
# ============================================= #
|
|
||||||
# Load plugins with Home Manager #
|
|
||||||
# --------------------------------------------- #
|
|
||||||
|
|
||||||
${(concatMapStringsSep "\n\n" (p: ''
|
|
||||||
# ${pluginName p}
|
|
||||||
# ---------------------
|
|
||||||
${p.extraConfig or ""}
|
|
||||||
run-shell ${
|
|
||||||
if types.package.check p
|
|
||||||
then p.rtp
|
|
||||||
else p.plugin.rtp
|
|
||||||
}
|
|
||||||
'') cfg.plugins)}
|
|
||||||
# ============================================= #
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,4 +28,3 @@ setw -g clock-mode-style 12
|
||||||
set -s escape-time 500
|
set -s escape-time 500
|
||||||
set -g history-limit 2000
|
set -g history-limit 2000
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,6 @@ setw -g clock-mode-style 24
|
||||||
set -s escape-time 500
|
set -s escape-time 500
|
||||||
set -g history-limit 2000
|
set -g history-limit 2000
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# ============================================= #
|
# ============================================= #
|
||||||
# Load plugins with Home Manager #
|
# Load plugins with Home Manager #
|
||||||
# --------------------------------------------- #
|
# --------------------------------------------- #
|
||||||
|
@ -52,3 +50,4 @@ run-shell @tmuxplugin_prefix_highlight_rtp@
|
||||||
run-shell @tmuxplugin_fzf_tmux_url_rtp@
|
run-shell @tmuxplugin_fzf_tmux_url_rtp@
|
||||||
|
|
||||||
# ============================================= #
|
# ============================================= #
|
||||||
|
|
||||||
|
|
|
@ -28,4 +28,3 @@ setw -g clock-mode-style 24
|
||||||
set -s escape-time 500
|
set -s escape-time 500
|
||||||
set -g history-limit 2000
|
set -g history-limit 2000
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue