contrarian notes on software engineering, Open Source hacking, cryptocurrencies etc.

NixOS module: my starship shell prompt config

#nix #nixos

Interesting part is that the time displayed in the prompt is always refreshed to when the command is issued, so I know at what time I issued the command, and not at what time the previous command finished.

{ config, pkgs, lib, ... }: {

  programs.starship = {
    enable = true;
    settings = {
      format = "$time$username$hostname$localip$shlvl$singularity$kubernetes$directory$vcsh$fossil_branch$git_branch$git_commit$git_state$git_metrics$git_status$hg_branch$pijul_channel$docker_context$package$bun$c$cmake$cobol$daml$dart$deno$dotnet$elixir$elm$erlang$fennel$golang$gradle$haskell$haxe$helm$java$julia$kotlin$lua$nim$nodejs$ocaml$opa$perl$php$pulumi$purescript$python$raku$rlang$red$ruby$rust$scala$swift$terraform$vlang$vagrant$zig$buf$guix_shell$nix_shell$conda$meson$spack$memory_usage$aws$gcloud$openstack$azure$env_var$crystal$custom$sudo$cmd_duration$line_break$jobs$battery$status$container$os$shell$character";
      add_newline = false;
      character.success_symbol = "[>](bold green)";
      character.error_symbol = "[>](bold red)";
      directory.truncate_to_repo = false;
      directory.truncation_symbol = "…";
      git_branch.always_show_remote = true;
      git_branch.format = "[$symbol$branch(:$remote_name/$remote_branch)]($style) ";
      time.format = "[$time]($style) ";
      time.disabled = false;

      rust.disabled = true;
      nix_shell.format = "[$symbol]($style) ";
      nix_shell.symbol = " ";
    };
  };

  programs.fish.interactiveShellInit = ''
    # function starship_transient_rprompt_func
    # end
    function starship_transient_prompt_func
      # redraw, just to refresh the time
      ${pkgs.starship}/bin/starship prompt
    end
    enable_transience
  '';

  environment.systemPackages = [
    pkgs.starship
  ];

  fonts.fonts = with pkgs; [
    (nerdfonts.override { fonts = [ "FiraCode" ]; })
  ];
}