config-new/modules/common/nushell/default.nix
2025-07-03 09:03:46 +02:00

82 lines
2.2 KiB
Nix

{ config, pkgs, lib, ... }: let
inherit (lib) readFile getExe mkIf optionalAttrs;
in {
# TODO: starship + change the zoxide src
# TODO: Rust tooling
environment = optionalAttrs config.onLinux {
sessionVariables.SHELLS = [ (getExe pkgs.nushell) (getExe pkgs.zsh) ];
} // {
shells = mkIf (!config.onLinux) [ pkgs.nushell pkgs.zsh ];
systemPackages = with pkgs; [
nushell
fish
zoxide
vivid
ripgrep
yazi
jq
yq-go
eza
fzf
gh
fastfetch
];
shellAliases = {
v = "nvim .";
ff = "fastfetch --load-config examples/10.jsonc";
g = "glimpse --interactive -o both -f llm.md";
gg = "open llm.md | save -r /dev/stdout | ^xclip -sel c";
rn = "yazi";
c = "clear";
e = "exa";
el = "exa -la";
l = "ls -a";
ll = "ls -la";
cl = "c; l";
ap = "cd ~/personal";
ad = "cd ~/Downloads";
ab = "cd ~/books";
a = "cd ~";
ah = "cd ~/dotfiles/hosts/thegeneralist";
ai3 = "nvim /home/thegeneralist/dotfiles/hosts/thegeneralist/dotfiles/i3/config";
rb = "nh os switch . -v -- --show-trace --verbose";
};
};
home-manager.sharedModules = [
({
home.file = {
".zshrc" = let
configFile = ./config.nu;
envFile = ./env.nu;
in {
text = "exec nu --env-config ${envFile} --config ${configFile}";
force = true;
};
".config/nushell/zoxide.nu".source = pkgs.runCommand "zoxide.nu" {} ''
${getExe pkgs.zoxide} init nushell --cmd cd > $out
'';
".config/nushell/ls_colors.txt".source = pkgs.runCommand "ls_colors.txt" {} ''
${getExe pkgs.vivid} generate gruvbox-dark-hard > $out
'';
};
})
(homeArgs: {
programs.nushell = {
enable = true;
package = pkgs.nushell;
configFile.text = readFile ./config.nu;
envFile.text = readFile ./env.nu;
environmentVariables = config.environment.variables // homeArgs.config.home.sessionVariables;
};
programs.zsh = {
enable = true;
sessionVariables = config.environment.variables // homeArgs.config.home.sessionVariables;
};
})
];
}