{ pkgs, ... }: let script = pkgs.writeShellApplication { name = "jj-prompt"; runtimeInputs = [ pkgs.jj ]; text = let bookmarkMax = 10; tagMax = 10; descriptionMax = 24; in '' jj log -r@ -n1 --ignore-working-copy --no-graph --color always -T ' separate(" ", bookmarks.map(|x| if( x.name().substr(0, ${builtins.toString bookmarkMax}).starts_with(x.name()), x.name().substr(0, ${builtins.toString bookmarkMax}), x.name().substr(0, ${builtins.toString (bookmarkMax - 1)}) ++ "…") ).join(" "), tags.map(|x| if( x.name().substr(0, ${builtins.toString tagMax}).starts_with(x.name()), x.name().substr(0, ${builtins.toString tagMax}), x.name().substr(0, ${builtins.toString (tagMax - 1)}) ++ "…") ).join(" "), surround("\"","\"", if( description.first_line().substr(0, ${builtins.toString descriptionMax}).starts_with(description.first_line()), description.first_line().substr(0, ${builtins.toString descriptionMax}), description.first_line().substr(0, ${builtins.toString (descriptionMax - 1)}) ++ "…" ) ), change_id.shortest(), commit_id.shortest(), if(empty, "(empty)"), if(conflict, "(conflict)"), if(divergent, "(divergent)"), if(hidden, "(hidden)"), ) ' ''; }; in { programs.oh-my-posh = { enable = true; settings = { "$schema" = "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json"; blocks = [ { alignment = "left"; segments = [ { background = "p:lavender"; foreground = "p:black"; leading_diamond = "ue0b6"; properties = { display_host = false; }; style = "diamond"; template = " {{ if .SSHSession }}U000f0318 {{ end }}{{ if .Env.IN_NIX_SHELL }}U000f1105 {{ end }}{{ .UserName }}@{{ .HostName }} "; trailing_diamond = "ue0b0"; type = "session"; } { background = "p:orange"; foreground = "p:black"; powerline_symbol = "ue0b0"; properties = { home_icon = "~"; style = "folder"; }; style = "powerline"; template = " ue613 {{ path .Path .Location }} "; type = "path"; } { background = "p:green"; background_templates = [ "{{ if or (.Working.Changed) (.Staging.Changed) }}p:yellow{{ end }}" "{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:red{{ end }}" "{{ if gt .Ahead 0 }}#49416D{{ end }}" "{{ if gt .Behind 0 }}#7A306C{{ end }}" ]; foreground = "p:black"; foreground_templates = [ "{{ if or (.Working.Changed) (.Staging.Changed) }}p:black{{ end }}" "{{ if and (gt .Ahead 0) (gt .Behind 0) }}p:white{{ end }}" "{{ if gt .Ahead 0 }}p:white{{ end }}" ]; powerline_symbol = "ue0b0"; properties = { branch_max_length = 25; fetch_status = true; fetch_upstream_icon = true; git_icon = "ue702"; github_icon = "uf408"; upstream_icons = { "codeberg.org" = "ue2a6"; "git.jojodev.com" = "U000f0d9e"; "gitea.com" = "U000f0d9e"; }; }; style = "powerline"; template = "{{ if not (glob \".jj\")}} {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }} {{ end }}{{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} uf044 {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} uf046 {{ .Staging.String }}{{ end }} {{ end }}"; type = "git"; } { background = "p:green"; foreground = "p:black"; powerline_symbol = "ue0b0"; properties = { inherit script; }; style = "powerline"; template = "{{ if (glob \".jj\")}} {{ .Output }} {{ end }}"; type = "command"; } { background = "p:blue"; background_templates = [ "{{ if gt .Code 0 }}p:red{{ end }}" ]; foreground = "p:black"; leading_diamond = "ue0b0"; properties = { always_enabled = true; }; style = "diamond"; template = " {{ if gt .Code 0 }}uf00d{{ else }}uf00c{{ end }} "; trailing_diamond = "ue0b4"; type = "exit"; } ]; type = "prompt"; } ]; console_title_template = "{{ .Folder }}"; final_space = true; palette = { black = "#1E1E1E"; blue = "#89B4FA"; green = "#A6E3A1"; lavender = "#B4BEFE"; orange = "#FAB387"; red = "#F38BA8"; white = "#CDD6F4"; yellow = "#F9E2AF"; }; version = 2; }; }; }