{ config, lib, pkgs, ... }: let cfg = config.my.home.fish; swayEnabled = config.my.home.wm.windowManager == "sway"; in { options.my.home.fish = with lib; { enable = mkEnableOption "fish configuration"; }; config.programs.fish = lib.mkIf cfg.enable { enable = true; interactiveShellInit = '' set fish_greeting # Tmux on terminal start, unless we're in a SSH connection if status is-interactive if test -z "$SSH_CONNECTION" if not tmux has-session 2>/dev/null; or test -z "$TMUX" exec tmux new-session -A -s 0 end end end ''; loginShellInit = lib.mkIf swayEnabled '' if test -z "$DISPLAY"; and test (tty) = "/dev/tty1" exec sway end ''; }; }