diff --git a/home/shell/common.nix b/home/shell/common.nix index a2d1604..00a1cc7 100644 --- a/home/shell/common.nix +++ b/home/shell/common.nix @@ -1,12 +1,12 @@ { pkgs , ... }: -# nix tooling { + home.shellAliases = { + sudo = "sudo --preserve-env=PATH"; + }; + home.packages = with pkgs; [ - alejandra - deadnix - statix ]; programs.direnv = { diff --git a/home/shell/default.nix b/home/shell/default.nix index 2be3b3e..7c65da5 100644 --- a/home/shell/default.nix +++ b/home/shell/default.nix @@ -1,36 +1,11 @@ { config, ... }: -let - d = config.xdg.dataHome; - c = config.xdg.configHome; - cache = config.xdg.cacheHome; -in { imports = [ ./nushell ./common.nix ./starship.nix - ./terminals.nix + ./git.nix + ./eza.nix ]; - # add environment variables - home.sessionVariables = { - # clean up ~ - LESSHISTFILE = cache + "/less/history"; - LESSKEY = c + "/less/lesskey"; - WINEPREFIX = d + "/wine"; - - # set default applications - EDITOR = "vim"; - BROWSER = "firefox"; - TERMINAL = "alacritty"; - - # enable scrolling in git diff - DELTA_PAGER = "less -R"; - - MANPAGER = "sh -c 'col -bx | bat -l man -p'"; - }; - - home.shellAliases = { - k = "kubectl"; - }; } diff --git a/home/shell/eza.nix b/home/shell/eza.nix new file mode 100644 index 0000000..a1ef699 --- /dev/null +++ b/home/shell/eza.nix @@ -0,0 +1,10 @@ +{ config +, ... +}: +{ + programs.eza = { + enable = true; + enableAliases = true; + icons = true; + }; +} diff --git a/home/shell/starship.nix b/home/shell/starship.nix index afea194..08863d3 100644 --- a/home/shell/starship.nix +++ b/home/shell/starship.nix @@ -1,12 +1,75 @@ -{ config, ... }: { - home.sessionVariables.STARSHIP_CACHE = "${config.xdg.cacheHome}/starship"; +{ config, lib, ... }: { programs.starship = { enable = true; settings = { - character = { - success_symbol = "[›](bold green)"; - error_symbol = "[›](bold red)"; + add_newline = false; + format = lib.concatStrings [ + "[](blue)" + "[$username:$hostname](bold white bg:blue)" + "[](bg:#769ff0 fg:blue)" + "$directory" + "[](fg:#769ff0 bg:#394260)" + "$git_branch" + "$git_status" + "[](fg:#394260 bg:#212736)" + "[](fg:#212736 bg:#1d2230)" + "$time" + "[ ](fg:#1d2230)" + " $character" + ]; + command_timeout = 5000; + + # Disable the blank line at the start of the prompt + # add_newline = false + + # You can also replace your username with a neat symbol like  to save some space + username = { + show_always = true; + format = "$user"; + }; + + hostname = { + ssh_only = false; + format = "$hostname"; + disabled = false; + }; + + directory = { + style = "fg:#e3e5e5 bg:#769ff0"; + format = "[ $path ]($style)"; + truncation_length = 3; + truncation_symbol = "…/"; + }; + + # Here is how you can shorten some long paths by text replacement + # similar to mapped_locations in Oh My Posh: + directory.substitutions = { + "Documents" = "󰈙 "; + "Downloads" = " "; + "Music" = " "; + "Pictures" = " "; + }; + # Keep in mind that the order matters. For ezample: + # "Important Documents" = "  " + # will not be replaced, because "Documents" was already substituted before. + # So either put "Important Documents" before "Documents" or use the substituted version: + # "Important  " = "  " + git_branch = { + symbol = ""; + style = "bg:#4C566A"; + format = "[ $symbol $branch ]($style)"; + }; + git_status = { + style = "bg:#394260"; + format = + "[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)"; + }; + time = { + disabled = false; + time_format = "%R"; + style = "bg:#33658A"; + format = "[ $time ]($style)"; }; }; };