refactor(shell): move bash->nushell wrapper to common
Default login shell is now bash for all hosts; interactive bash
sessions exec into nushell via /etc/bashrc. A ~/.bashrc sourcing
/etc/bashrc covers non-login interactive shells (terminal emulators).
Non-interactive SSH exec (mosh app bootstrap, scripts) keeps POSIX
shell semantics. Reverts the kratos-host-specific overlay from
765ae15.
This commit is contained in:
@@ -76,5 +76,14 @@
|
|||||||
((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
((lib.filterAttrs (_: lib.isType "flake")) inputs);
|
||||||
nixPath = ["/etc/nix/path"];
|
nixPath = ["/etc/nix/path"];
|
||||||
};
|
};
|
||||||
users.defaultUserShell = pkgs.nushell;
|
users.defaultUserShell = pkgs.bashInteractive;
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
interactiveShellInit = ''
|
||||||
|
if [[ $- == *i* ]] && [[ -z "''${M3_SHELL_TO_NU:-}" ]]; then
|
||||||
|
export M3_SHELL_TO_NU=1
|
||||||
|
exec ${pkgs.nushell}/bin/nu --login
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -236,6 +236,9 @@ in {
|
|||||||
|
|
||||||
# ── Home-Manager configuration via m3ta-home ──
|
# ── Home-Manager configuration via m3ta-home ──
|
||||||
home-manager.users.m3tam3re = {
|
home-manager.users.m3tam3re = {
|
||||||
|
home.file.".bashrc".text = ''
|
||||||
|
. /etc/bashrc
|
||||||
|
'';
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
# Load m3ta-home composition engine
|
# Load m3ta-home composition engine
|
||||||
|
|||||||
@@ -70,12 +70,6 @@
|
|||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
|
||||||
# bash as login shell wrapper: non-interactive SSH clients (e.g. the
|
|
||||||
# Android Mosh app bootstrap, which runs `command -v mosh-server`)
|
|
||||||
# need POSIX shell semantics. Interactive login sessions exec into
|
|
||||||
# nushell automatically — see programs.bash in ./programs.nix.
|
|
||||||
users.users.m3tam3re.shell = pkgs.bashInteractive;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
# List packages installed in system profile. To search, run:
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
environment.systemPackages = with pkgs; [neovim git];
|
environment.systemPackages = with pkgs; [neovim git];
|
||||||
|
|||||||
@@ -32,19 +32,6 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
# Login shell is bash (see configuration.nix), but interactive login
|
|
||||||
# sessions exec straight into nushell. Non-interactive SSH commands
|
|
||||||
# (e.g. the Android Mosh app bootstrap `command -v mosh-server`)
|
|
||||||
# stay in bash where POSIX shell semantics work.
|
|
||||||
programs.bash = {
|
|
||||||
enable = true;
|
|
||||||
interactiveShellInit = ''
|
|
||||||
if [[ $- == *i* ]] && shopt -q login_shell && [[ -z "''${M3_SHELL_TO_NU:-}" ]]; then
|
|
||||||
export M3_SHELL_TO_NU=1
|
|
||||||
exec ${pkgs.nushell}/bin/nu --login
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
programs.thunar = {
|
programs.thunar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = with pkgs; [thunar-archive-plugin thunar-volman];
|
plugins = with pkgs; [thunar-archive-plugin thunar-volman];
|
||||||
|
|||||||
Reference in New Issue
Block a user