{ config, lib, pkgs, ... }: { environment.systemPackages = with pkgs; [ util-linux rclone neovim fd jq btop lshw gnupg git git-lfs ranger nixfmt aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science fishPlugins.done fishPlugins.fzf-fish fishPlugins.forgit killall nodejs libtool grc fzf ispell fishPlugins.grc unzip ripgrep usbutils sqlite silver-searcher bat exfatprogs eza screen libsecret cmake gnumake gcc lazygit ]; programs.git = { package = pkgs.gitFull; enable = true; config = { user = { email = "joe@5sigma.io"; }; # credential.helper = "libsecret"; }; # aliases = { # aa = "add --all"; # c = "commit"; # co = "checkout"; # st = "status"; # }; }; programs.dconf.enable = true; programs.partition-manager.enable = true; environment.variables = { EDITOR = "nvim"; ERL_AFLAGS = "-kernel shell_history enabled"; }; environment.sessionVariables.NIXOS_OZONE_WL = "1"; users.users.joe.shell = pkgs.nushell; home-manager.users.joe = { programs = { starship = { enableNushellIntegration = true; enableFishIntegration = true; enableBashIntegration = true; enable = true; settings = { add_newline = true; character = { success_symbol = "[➜](bold green)"; error_symbol = "[➜](bold red)"; }; }; }; zoxide = { enable = true; enableFishIntegration = true; enableNushellIntegration = true; }; carapace = { enable = true; enableNushellIntegration = true; }; direnv = { enable = true; enableFishIntegration = true; enableNushellIntegration = true; enableBashIntegration = true; }; nushell = { enable = true; # The config.nu can be anywhere you want if you like to edit your Nushell with Nu configFile.source = ./dotfiles/config.nu; # for editing directly to config.nu extraConfig = '' let carapace_completer = {|spans| carapace $spans.0 nushell ...$spans | from json } $env.config = { show_banner: false, completions: { case_sensitive: false # quick: true partial: true algorithm: "fuzzy" external: { enable: true max_results: 100 completer: $carapace_completer # check 'carapace_completer' } } } $env.PATH = ($env.PATH | split row (char esep) | prepend /home/myuser/.apps | append /usr/bin/env ) ''; shellAliases = { cat = "bat --theme ansi"; }; }; }; }; programs = { fish = { enable = true; shellAliases = { ls = "eza"; cat = "bat --theme ansi"; }; }; }; # programs.bash = { # interactiveShellInit = '' # if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] # then # shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" # exec ${pkgs.fish}/bin/fish $LOGIN_OPTION # fi # ''; # }; }