From 460d8908bb9651deb98117acbeed9b351f2ed3f0 Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Thu, 2 Jul 2026 20:11:49 -0500 Subject: [PATCH] jsl-zsh working as a login shell --- modules/hosts/janus/default.nix | 12 ++++++++--- modules/programs/zsh.nix | 36 +++++++++++++++++++-------------- modules/users/john.nix | 7 ++----- 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/modules/hosts/janus/default.nix b/modules/hosts/janus/default.nix index 3ba3553..3731c76 100644 --- a/modules/hosts/janus/default.nix +++ b/modules/hosts/janus/default.nix @@ -5,7 +5,7 @@ let in { flake.modules.nixos.janus-ca = - { config, lib, ... }: + { config, pkgs, lib, ... }: let cfg = config.janus-ca; johnHome = lib.attrByPath [ "users" "users" username "home" ] "/home/${username}" config; @@ -58,7 +58,7 @@ in nixos.docker nixos.login-text nixos.mtls - { + ({ lib, pkgs, ... }: { networking.hostName = hostname; sops.defaultSopsFile = ../../../keys/secrets.yaml; step-ssh-host = { @@ -77,6 +77,12 @@ in ]; }; + users.users."${username}" = { + shell = lib.mkForce ( + lib.getExe inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.jsl-zsh + ); + }; + # users.users."${username}".openssh.authorizedKeys.keys = [ # "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMOkGLo4N/L3RYvaIZ1FmePlxa1HK0fMciZxKtRhN58F root@janus" # ]; @@ -87,7 +93,7 @@ in ]; docker.enable = true; }; - } + }) ]; }; } \ No newline at end of file diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix index 6de4ab4..b63883b 100644 --- a/modules/programs/zsh.nix +++ b/modules/programs/zsh.nix @@ -79,6 +79,19 @@ in ignorePatterns = [ "ls" "eza" "history" "clear" ]; + integrationPackages = with pkgs; [ + fzf + zoxide + self'.packages.starship + ]; + extraToolPackages = with pkgs; [ + lazygit + lazydocker + devenv + self'.packages.shell-tools + self'.packages.neovim-min + ]; + loginBootstrapPath = lib.makeBinPath (integrationPackages ++ extraToolPackages); aliasStr = lib.concatStringsSep "\n" ( lib.mapAttrsToList (k: v: "alias -- ${lib.escapeShellArg k}=${lib.escapeShellArg v}") { ls = "eza"; @@ -116,18 +129,17 @@ in ignoreAllDups = true; ignoreSpace = true; }; - integrations = { - fzf.enable = true; - starship = { - enable = true; - package = self'.packages.starship; - }; - zoxide.enable = true; - }; }; extraRC = '' ${homeEndKeyBindings} + # Login shells may reset PATH before integrations run. + export PATH=${lib.escapeShellArg loginBootstrapPath}:$PATH + + source <(fzf --zsh) + eval "$(zoxide init zsh)" + eval "$(starship init zsh)" + HISTFILE=$HOME/.config/zsh/.zsh_history SAVEHIST=${toString historySize} HISTORY_IGNORE=${lib.escapeShellArg "(${lib.concatStringsSep "|" ignorePatterns})"} @@ -137,13 +149,7 @@ in eval "$(devenv hook zsh)" ''; - extraPackages = with pkgs; [ - lazygit - lazydocker - devenv - self'.packages.shell-tools - self'.packages.neovim-min - ]; + extraPackages = extraToolPackages; }).wrapper; }; } diff --git a/modules/users/john.nix b/modules/users/john.nix index 7e5b0bd..ab8d5cc 100644 --- a/modules/users/john.nix +++ b/modules/users/john.nix @@ -1,4 +1,4 @@ -{ self, inputs, lib, ... }: +{ self, inputs, ... }: let username = "john"; baseUserModules = self.factory.user { @@ -20,7 +20,7 @@ in }; flake.modules = { - nixos."${username}" = { ... }: { + nixos."${username}" = { config, pkgs, ... }: { imports = [ baseUserModules.nixos."${username}" ]; @@ -38,9 +38,6 @@ in inputs.self.modules.homeManager.ssh inputs.self.modules.homeManager.git ]; - # home.packages = [ - # inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.shell-tools - # ]; xdg.enable = true; programs.git.settings.user.name = name; programs.git.settings.user.email = email;