tmux: allow setting default-shell before new-session

This commit is contained in:
Joe Hermaszewski 2019-10-15 10:23:32 +08:00 committed by Robert Helgesson
parent 7c3c64208e
commit 9c14bbe988
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
4 changed files with 70 additions and 1 deletions

View file

@ -27,6 +27,7 @@ let
defaultResize = 5;
defaultShortcut = "b";
defaultTerminal = "screen";
defaultShell = null;
boolToStr = value: if value then "on" else "off";
@ -41,7 +42,10 @@ let
set -g default-terminal "${cfg.terminal}"
set -g base-index ${toString cfg.baseIndex}
setw -g pane-base-index ${toString cfg.baseIndex}
${optionalString (cfg.shell != null) ''
# We need to set default-shell before calling new-session
set -g default-shell "${cfg.shell}"
''}
${optionalString cfg.newSession "new-session"}
${optionalString cfg.reverseSplit ''
@ -250,6 +254,13 @@ in
description = "Set the $TERM variable.";
};
shell = mkOption {
default = defaultShell;
example = "\${pkgs.zsh}/bin/zsh";
type = with types; nullOr str;
description = "Set the default-shell tmux variable.";
};
secureSocket = mkOption {
default = pkgs.stdenv.isLinux;
type = types.bool;

View file

@ -0,0 +1,30 @@
# ============================================= #
# Start with defaults from the Sensible plugin #
# --------------------------------------------- #
run-shell @sensible_rtp@
# ============================================= #
set -g default-terminal "screen"
set -g base-index 0
setw -g pane-base-index 0
# We need to set default-shell before calling new-session
set -g default-shell "/usr/bin/myshell"
set -g status-keys emacs
set -g mode-keys emacs
setw -g aggressive-resize off
setw -g clock-mode-style 12
set -s escape-time 500
set -g history-limit 2000

View file

@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
with lib;
let
substituteExpected = path:
pkgs.substituteAll {
src = path;
sensible_rtp = pkgs.tmuxPlugins.sensible.rtp;
};
in {
config = {
programs.tmux = {
enable = true;
shell = "/usr/bin/myshell";
};
nmt.script = ''
assertFileExists home-files/.tmux.conf
assertFileContent home-files/.tmux.conf \
${substituteExpected ./default-shell.conf}
'';
};
}

View file

@ -4,4 +4,5 @@
tmux-vi-all-true = ./vi-all-true.nix;
tmux-secure-socket-enabled = ./secure-socket-enabled.nix;
tmux-disable-confirmation-prompt = ./disable-confirmation-prompt.nix;
tmux-default-shell = ./default-shell.nix;
}