{ ... }: {
    # Shell prompt
    programs.starship = {
        enable = true;
        enableZshIntegration = true;
        settings = {
            add_newline = true;

            format = ""
                # Left powerline
                + "[╭─](fg:242)[](fg:238)"
                + "$os"
                + "[  ](fg:007 bg:prev_bg)"
                + "[$username@$hostname](bg:prev_bg)"
                + "[  ](fg:007 bg:prev_bg)"
                + "$shell$shlvl"
                + "[  ](fg:007 bg:prev_bg)"
                + "$directory"
                + "[ ](bg:prev_bg)[](fg:prev_bg bg:none)"
                # Middle filling
                + "$fill"
                # Right powerline
                + "[](fg:238 bg:none)[ ](bg:prev_fg)"
                + "\${custom.status}"
                + "\${custom.time}"
                + "[  ](fg:007 bg:prev_bg)"
                + "\${custom.date}"
                + "[  ](fg:007 bg:prev_bg)"
                + "$battery"
                + "[](fg:prev_bg)[─╮ ](fg:242)"
                # Left prompter
                + "\n[╰─ ](fg:242)";
            
            # Right prompter
            right_format = "[─╯ ](fg:242)";

            os = {
                disabled = false;
                style = "bg:238 fg:007";

                symbols = {
                    Arch = "󰣇";
                    Ubuntu = "󰕈";
                    NixOS = "󱄅";
                };
            };


            username = {
                disabled = false;
                format = "[$user]($style)";
                style_user = "bg:prev_bg fg:#63D0EE bold";
                style_root = "bg:prev_bg fg:#EFA9B1 bold";
                show_always = true;
            };

            hostname = {
                disabled = false;
                ssh_only = false;
                ssh_symbol = "🌐 ";
                trim_at = "";
                style = "bg:prev_bg fg:prev_fg";
                format = "[$ssh_symbol$hostname]($style)";
            };

            shell = {
                disabled = false;
                format = "[$indicator]($style)";
                style = "fg:#FFFFFF bg:prev_bg";
            };

            shlvl = {
                disabled = false;
                threshold = 2;
                symbol = "";
                repeat = false;
                format = "[ \\(](bg:prev_bg fg:#FFFFFF)[$symbol$shlvl]($style)[\\)](bg:prev_bg fg:#FFFFFF)";
                style = "bg:prev_bg fg:#F5F543";
            };

            directory = {
                disabled = false;
                home_symbol = "~";
                read_only = " ";
                truncate_to_repo = true;
                use_logical_path = true;
                fish_style_pwd_dir_length = 1;
                truncation_length = 3;
                style = "bold fg:#63D0EE bg:prev_bg";
                read_only_style = "bold fg:#63D0EE bg:prev_bg";
                format = "[$read_only]($read_only_style)[$path]($style)";
                repo_root_format = "[$read_only]($read_only_style)[$before_root_path]($before_repo_root_style)[$repo_root]($repo_root_style)[$path]($style)";
            };

            # [status]
            # disabled = false
            # recognize_signal_code = false
            # map_symbol = false

            # success_symbol = "✔"
            # symbol = "✘"

            # # TODO Figure out status-dependent styling
            # style = "bold fg:#26FF05 bg:prev_bg"
            # format = "[$status $symbol]($style)"

            custom.status = {
                disabled = false;
                when = ''test "$?" -ne 0'';
                command = ''echo "$?"'';
                style = "bg:238 fg:#EFA9B1";
                symbol = "✘";
                format = "[$output $symbol]($style)";
            };

            custom.time = {
                disabled = false;
                when = true;
                command = ''date +"%I:%M:%S"'';
                description = "The current local time";
                style = "bg:238 fg:#63D0EE bold";
                format = "[$output]($style)";
            };

            custom.date = {
                disabled = false;
                when = true;
                command = ''date +"%b %-d %Y"'';
                description = "The current local date";
                style = "bg:238 fg:#E5B9E9 bold";
                format = "[$output]($style)";
            };

            battery = {
                disabled = false;
                format = "[$symbol$percentage ]($style)";

                display = [
                    {
                        threshold = 10;
                        discharging_symbol = "󰂃 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#EFA9B1 bg:prev_bg";
                    }
                    {
                        threshold = 20;
                        discharging_symbol = "󰁻 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#FF9933 bg:prev_bg";
                    }
                    {
                        threshold = 30;
                        discharging_symbol = "󰁼 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#FF9933 bg:prev_bg";
                    }
                    {
                        threshold = 40;
                        discharging_symbol = "󰁽 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#F8E45C bg:prev_bg";
                    }
                    {
                        threshold = 50;
                        discharging_symbol = "󰁾 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#F8E45C bg:prev_bg";
                    }
                    {
                        threshold = 60;
                        discharging_symbol = "󰁿 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#FFFFFF bg:prev_bg";
                    }
                    {
                        threshold = 70;
                        discharging_symbol = "󰂀 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:#FFFFFF bg:prev_bg";
                    }
                    {
                        threshold = 75;
                        discharging_symbol = "󰂀 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:green bg:prev_bg";
                    }
                    {
                        threshold = 80;
                        discharging_symbol = "󰂁 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:green bg:prev_bg";
                    }
                    {
                        threshold = 97;
                        discharging_symbol = "󰁹 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:green bg:prev_bg";
                    }
                    {
                        threshold = 100;
                        discharging_symbol = "󰁹 ";
                        charging_symbol = "󰂄 ";
                        style = "bold fg:green bg:prev_bg";
                    }
                ];
            };

            fill = {
                disabled = false;
                style = "fg:242";
                symbol = "─";
            };
        };
    };
}