{ config, lib, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.shell.oh-my-posh; in { options = { shell.oh-my-posh.enable = mkEnableOption "enable oh my posh"; }; config = mkIf cfg.enable { programs.oh-my-posh = { enable = true; settings = { # version = 2; final_space = true; shell_integration = true; console_title_template = "{{ .Shell }} in {{ .Folder }}"; blocks = [ { type = "prompt"; alignment = "left"; overflow = "hidden"; segments = [ { type = "path"; style = "plain"; background = "transparent"; foreground = "blue"; template = "{{ .Path }}"; properties = { style = "full"; }; } { type = "text"; style = "plain"; background = "transparent"; template = "{{ if .Env.BW_SESSION }} 󰞀{{ end }}"; } { type = "nix-shell"; style = "plain"; background = "transparent"; template = "{{ if ne .Type \"unknown\" }} {{ end }}"; } { type = "git"; style = "plain"; foreground = "p:grey"; background = "transparent"; template = " {{ .HEAD }}{{ if or (.Working.Changed) (.Staging.Changed) }}*{{ end }} {{ if gt .Behind 0 }}⇣{{ end }}{{ if gt .Ahead 0 }}⇡{{ end }}"; properties = { branch_icon = ""; commit_icon = "@"; fetch_status = true; }; } ]; } { type = "prompt"; alignment = "right"; segments = [ { type = "session"; style = "plain"; foreground = "white"; background = "transparent"; template = "{{ if .SSHSession }} {{ .UserName }}@{{ .HostName }}{{ end }}"; } { style = "plain"; foreground = "white"; background = "transparent"; properties = { charged_icon = "󰁹"; charging_icon = "󱟡"; discharging_icon = "󱟟"; }; template = "{{ if not .Error }} {{ .Icon }} {{ .Percentage }}%{{ end }}"; type = "battery"; } ]; } { type = "rprompt"; overflow = "hidden"; segments = [ { type = "executiontime"; style = "plain"; foreground = "yellow"; background = "transparent"; template = "{{.FormattedMs}}"; properties = { threshold = 5000; }; } ]; } { type = "prompt"; alignment = "left"; newline = true; segments = [ { type = "text"; style = "plain"; foreground_templates = ["{{if gt .Code 0}}red{{end}}" "{{if eq .Code 0}}magenta{{end}}"]; background = "transparent"; template = ">"; } ]; } ]; transient_prompt = { foreground_templates = ["{{if gt .Code 0}}red{{end}}" "{{if eq .Code 0}}magenta{{end}}"]; background = "transparent"; template = "> "; }; secondary_prompt = { foreground = "magenta"; background = "transparent"; template = "-> "; }; }; }; }; }