From d9cca60882b023e40f15b9a14f0e1d8d790b0436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= Date: Mon, 21 Apr 2025 22:52:17 +0200 Subject: [PATCH] refactor(starship): move config to a JSON file Should be faster to import than trying to parse the nix exprs. --- modules/nixos/starship.nix | 157 +------------------- modules/nixos/starship/short-text.json | 194 +++++++++++++++++++++++++ modules/nixos/starship/symbols.json | 175 ++++++++++++++++++++++ 3 files changed, 371 insertions(+), 155 deletions(-) create mode 100644 modules/nixos/starship/short-text.json create mode 100644 modules/nixos/starship/symbols.json diff --git a/modules/nixos/starship.nix b/modules/nixos/starship.nix index 3ab8d8b..cf24611 100644 --- a/modules/nixos/starship.nix +++ b/modules/nixos/starship.nix @@ -21,162 +21,9 @@ in sudo.disabled = false; } # Add nerdfont symbols - (lib.mkIf cfg.styling.enable { - aws.symbol = " "; - buf.symbol = " "; - c.symbol = " "; - conda.symbol = " "; - crystal.symbol = " "; - dart.symbol = " "; - directory.read_only = " 󰌾"; - docker_context.symbol = " "; - elixir.symbol = " "; - elm.symbol = " "; - fennel.symbol = " "; - fossil_branch.symbol = " "; - git_branch.symbol = " "; - git_commit.tag_symbol = "  "; - golang.symbol = " "; - gradle.symbol = " "; - guix_shell.symbol = " "; - haskell.symbol = " "; - haxe.symbol = " "; - hg_branch.symbol = " "; - hostname.ssh_symbol = " "; - java.symbol = " "; - julia.symbol = " "; - kotlin.symbol = " "; - lua.symbol = " "; - memory_usage.symbol = "󰍛 "; - meson.symbol = "󰔷 "; - nim.symbol = "󰆥 "; - nix_shell.symbol = " "; - nodejs.symbol = " "; - ocaml.symbol = " "; - package.symbol = "󰏗 "; - perl.symbol = " "; - php.symbol = " "; - pijul_channel.symbol = " "; - python.symbol = " "; - rlang.symbol = "󰟔 "; - ruby.symbol = " "; - rust.symbol = "󱘗 "; - scala.symbol = " "; - swift.symbol = " "; - zig.symbol = " "; - os.symbols = { - Alpaquita = " "; - Alpine = " "; - AlmaLinux = " "; - Amazon = " "; - Android = " "; - Arch = " "; - Artix = " "; - CentOS = " "; - Debian = " "; - DragonFly = " "; - Emscripten = " "; - EndeavourOS = " "; - Fedora = " "; - FreeBSD = " "; - Garuda = "󰛓 "; - Gentoo = " "; - HardenedBSD = "󰞌 "; - Illumos = "󰈸 "; - Kali = " "; - Linux = " "; - Mabox = " "; - Macos = " "; - Manjaro = " "; - Mariner = " "; - MidnightBSD = " "; - Mint = " "; - NetBSD = " "; - NixOS = " "; - OpenBSD = "󰈺 "; - openSUSE = " "; - OracleLinux = "󰌷 "; - Pop = " "; - Raspbian = " "; - Redhat = " "; - RedHatEnterprise = " "; - RockyLinux = " "; - Redox = "󰀘 "; - Solus = "󰠳 "; - SUSE = " "; - Ubuntu = " "; - Unknown = " "; - Void = " "; - Windows = "󰍲 "; - }; - }) + (lib.mkIf cfg.styling.enable (lib.importJSON ./starship/symbols.json)) # Remove the `in`s and `on`s from the prompt - { - aws.format = "[$symbol($profile)(\\($region\\))(\\[$duration\\])]($style) "; - bun.format = "[$symbol($version)]($style) "; - c.format = "[$symbol($version(-$name))]($style) "; - cmake.format = "[$symbol($version)]($style) "; - cmd_duration.format = "[⏱ $duration]($style) "; - cobol.format = "[$symbol($version)]($style) "; - conda.format = "[$symbol$environment]($style) "; - crystal.format = "[$symbol($version)]($style) "; - daml.format = "[$symbol($version)]($style) "; - dart.format = "[$symbol($version)]($style) "; - deno.format = "[$symbol($version)]($style) "; - docker_context.format = "[$symbol$context]($style) "; - dotnet.format = "[$symbol($version)(🎯 $tfm)]($style) "; - elixir.format = "[$symbol($version \\(OTP $otp_version\\))]($style) "; - elm.format = "[$symbol($version)]($style) "; - erlang.format = "[$symbol($version)]($style) "; - fennel.format = "[$symbol($version)]($style) "; - fossil_branch.format = "[$symbol$branch]($style) "; - gcloud.format = "[$symbol$account(@$domain)(\\($region\\))]($style) "; - git_branch.format = "[$symbol$branch]($style) "; - git_status.format = "[$all_status$ahead_behind]($style) "; - golang.format = "[$symbol($version)]($style) "; - gradle.format = "[$symbol($version)]($style) "; - guix_shell.format = "[$symbol]($style) "; - haskell.format = "[$symbol($version)]($style) "; - haxe.format = "[$symbol($version)]($style) "; - helm.format = "[$symbol($version)]($style) "; - hg_branch.format = "[$symbol$branch]($style) "; - java.format = "[$symbol($version)]($style) "; - julia.format = "[$symbol($version)]($style) "; - kotlin.format = "[$symbol($version)]($style) "; - kubernetes.format = "[$symbol$context( \\($namespace\\))]($style) "; - lua.format = "[$symbol($version)]($style) "; - memory_usage.format = "$symbol[$ram( | $swap)]($style) "; - meson.format = "[$symbol$project]($style) "; - nim.format = "[$symbol($version)]($style) "; - nix_shell.format = "[$symbol$state( \\($name\\))]($style) "; - nodejs.format = "[$symbol($version)]($style) "; - ocaml.format = "[$symbol($version)(\\($switch_indicator$switch_name\\))]($style) "; - opa.format = "[$symbol($version)]($style) "; - openstack.format = "[$symbol$cloud(\\($project\\))]($style) "; - os.format = "[$symbol]($style) "; - package.format = "[$symbol$version]($style) "; - perl.format = "[$symbol($version)]($style) "; - php.format = "[$symbol($version)]($style) "; - pijul_channel.format = "[$symbol$channel]($style) "; - pulumi.format = "[$symbol$stack]($style) "; - purescript.format = "[$symbol($version)]($style) "; - python.format = "[\${symbol}\${pyenv_prefix}(\${version})(\\($virtualenv\\))]($style) "; - raku.format = "[$symbol($version-$vm_version)]($style) "; - red.format = "[$symbol($version)]($style) "; - ruby.format = "[$symbol($version)]($style) "; - rust.format = "[$symbol($version)]($style) "; - scala.format = "[$symbol($version)]($style) "; - spack.format = "[$symbol$environment]($style) "; - sudo.format = "[as $symbol]($style) "; - swift.format = "[$symbol($version)]($style) "; - terraform.format = "[$symbol$workspace]($style) "; - time.format = "[$time]($style) "; - username.format = "[$user]($style) "; - vagrant.format = "[$symbol($version)]($style) "; - vlang.format = "[$symbol($version)]($style) "; - zig.format = "[$symbol($version)]($style) "; - solidity.format = "[$symbol($version)]($style) "; - } + (lib.importJSON ./starship/short-text.json) ]; }; }; diff --git a/modules/nixos/starship/short-text.json b/modules/nixos/starship/short-text.json new file mode 100644 index 0000000..8b75e70 --- /dev/null +++ b/modules/nixos/starship/short-text.json @@ -0,0 +1,194 @@ +{ + "aws": { + "format": "[$symbol($profile)(\\($region\\))(\\[$duration\\])]($style) " + }, + "bun": { + "format": "[$symbol($version)]($style) " + }, + "c": { + "format": "[$symbol($version(-$name))]($style) " + }, + "cmake": { + "format": "[$symbol($version)]($style) " + }, + "cmd_duration": { + "format": "[⏱ $duration]($style) " + }, + "cobol": { + "format": "[$symbol($version)]($style) " + }, + "conda": { + "format": "[$symbol$environment]($style) " + }, + "crystal": { + "format": "[$symbol($version)]($style) " + }, + "daml": { + "format": "[$symbol($version)]($style) " + }, + "dart": { + "format": "[$symbol($version)]($style) " + }, + "deno": { + "format": "[$symbol($version)]($style) " + }, + "docker_context": { + "format": "[$symbol$context]($style) " + }, + "dotnet": { + "format": "[$symbol($version)(🎯 $tfm)]($style) " + }, + "elixir": { + "format": "[$symbol($version \\(OTP $otp_version\\))]($style) " + }, + "elm": { + "format": "[$symbol($version)]($style) " + }, + "erlang": { + "format": "[$symbol($version)]($style) " + }, + "fennel": { + "format": "[$symbol($version)]($style) " + }, + "fossil_branch": { + "format": "[$symbol$branch]($style) " + }, + "gcloud": { + "format": "[$symbol$account(@$domain)(\\($region\\))]($style) " + }, + "git_branch": { + "format": "[$symbol$branch]($style) " + }, + "git_status": { + "format": "[$all_status$ahead_behind]($style) " + }, + "golang": { + "format": "[$symbol($version)]($style) " + }, + "gradle": { + "format": "[$symbol($version)]($style) " + }, + "guix_shell": { + "format": "[$symbol]($style) " + }, + "haskell": { + "format": "[$symbol($version)]($style) " + }, + "haxe": { + "format": "[$symbol($version)]($style) " + }, + "helm": { + "format": "[$symbol($version)]($style) " + }, + "hg_branch": { + "format": "[$symbol$branch]($style) " + }, + "java": { + "format": "[$symbol($version)]($style) " + }, + "julia": { + "format": "[$symbol($version)]($style) " + }, + "kotlin": { + "format": "[$symbol($version)]($style) " + }, + "kubernetes": { + "format": "[$symbol$context( \\($namespace\\))]($style) " + }, + "lua": { + "format": "[$symbol($version)]($style) " + }, + "memory_usage": { + "format": "$symbol[$ram( | $swap)]($style) " + }, + "meson": { + "format": "[$symbol$project]($style) " + }, + "nim": { + "format": "[$symbol($version)]($style) " + }, + "nix_shell": { + "format": "[$symbol$state( \\($name\\))]($style) " + }, + "nodejs": { + "format": "[$symbol($version)]($style) " + }, + "ocaml": { + "format": "[$symbol($version)(\\($switch_indicator$switch_name\\))]($style) " + }, + "opa": { + "format": "[$symbol($version)]($style) " + }, + "openstack": { + "format": "[$symbol$cloud(\\($project\\))]($style) " + }, + "os": { + "format": "[$symbol]($style) " + }, + "package": { + "format": "[$symbol$version]($style) " + }, + "perl": { + "format": "[$symbol($version)]($style) " + }, + "php": { + "format": "[$symbol($version)]($style) " + }, + "pijul_channel": { + "format": "[$symbol$channel]($style) " + }, + "pulumi": { + "format": "[$symbol$stack]($style) " + }, + "purescript": { + "format": "[$symbol($version)]($style) " + }, + "python": { + "format": "[${symbol}${pyenv_prefix}(${version})(\\($virtualenv\\))]($style) " + }, + "raku": { + "format": "[$symbol($version-$vm_version)]($style) " + }, + "red": { + "format": "[$symbol($version)]($style) " + }, + "ruby": { + "format": "[$symbol($version)]($style) " + }, + "rust": { + "format": "[$symbol($version)]($style) " + }, + "scala": { + "format": "[$symbol($version)]($style) " + }, + "spack": { + "format": "[$symbol$environment]($style) " + }, + "sudo": { + "format": "[as $symbol]($style) " + }, + "swift": { + "format": "[$symbol($version)]($style) " + }, + "terraform": { + "format": "[$symbol$workspace]($style) " + }, + "time": { + "format": "[$time]($style) " + }, + "username": { + "format": "[$user]($style) " + }, + "vagrant": { + "format": "[$symbol($version)]($style) " + }, + "vlang": { + "format": "[$symbol($version)]($style) " + }, + "zig": { + "format": "[$symbol($version)]($style) " + }, + "solidity": { + "format": "[$symbol($version)]($style) " + } +} diff --git a/modules/nixos/starship/symbols.json b/modules/nixos/starship/symbols.json new file mode 100644 index 0000000..8049a01 --- /dev/null +++ b/modules/nixos/starship/symbols.json @@ -0,0 +1,175 @@ +{ + "aws": { + "symbol": " " + }, + "buf": { + "symbol": " " + }, + "c": { + "symbol": " " + }, + "conda": { + "symbol": " " + }, + "crystal": { + "symbol": " " + }, + "dart": { + "symbol": " " + }, + "directory": { + "read_only": " 󰌾" + }, + "docker_context": { + "symbol": " " + }, + "elixir": { + "symbol": " " + }, + "elm": { + "symbol": " " + }, + "fennel": { + "symbol": " " + }, + "fossil_branch": { + "symbol": " " + }, + "git_branch": { + "symbol": " " + }, + "git_commit": { + "tag_symbol": "  " + }, + "golang": { + "symbol": " " + }, + "gradle": { + "symbol": " " + }, + "guix_shell": { + "symbol": " " + }, + "haskell": { + "symbol": " " + }, + "haxe": { + "symbol": " " + }, + "hg_branch": { + "symbol": " " + }, + "hostname": { + "ssh_symbol": " " + }, + "java": { + "symbol": " " + }, + "julia": { + "symbol": " " + }, + "kotlin": { + "symbol": " " + }, + "lua": { + "symbol": " " + }, + "memory_usage": { + "symbol": "󰍛 " + }, + "meson": { + "symbol": "󰔷 " + }, + "nim": { + "symbol": "󰆥 " + }, + "nix_shell": { + "symbol": " " + }, + "nodejs": { + "symbol": " " + }, + "ocaml": { + "symbol": " " + }, + "package": { + "symbol": "󰏗 " + }, + "perl": { + "symbol": " " + }, + "php": { + "symbol": " " + }, + "pijul_channel": { + "symbol": " " + }, + "python": { + "symbol": " " + }, + "rlang": { + "symbol": "󰟔 " + }, + "ruby": { + "symbol": " " + }, + "rust": { + "symbol": "󱘗 " + }, + "scala": { + "symbol": " " + }, + "swift": { + "symbol": " " + }, + "zig": { + "symbol": " " + }, + "os": { + "symbols": { + "Alpaquita": " ", + "Alpine": " ", + "AlmaLinux": " ", + "Amazon": " ", + "Android": " ", + "Arch": " ", + "Artix": " ", + "CentOS": " ", + "Debian": " ", + "DragonFly": " ", + "Emscripten": " ", + "EndeavourOS": " ", + "Fedora": " ", + "FreeBSD": " ", + "Garuda": "󰛓 ", + "Gentoo": " ", + "HardenedBSD": "󰞌 ", + "Illumos": "󰈸 ", + "Kali": " ", + "Linux": " ", + "Mabox": " ", + "Macos": " ", + "Manjaro": " ", + "Mariner": " ", + "MidnightBSD": " ", + "Mint": " ", + "NetBSD": " ", + "NixOS": " ", + "OpenBSD": "󰈺 ", + "openSUSE": " ", + "OracleLinux": "󰌷 ", + "Pop": " ", + "Raspbian": " ", + "Redhat": " ", + "RedHatEnterprise": " ", + "RockyLinux": " ", + "Redox": "󰀘 ", + "Solus": "󰠳 ", + "SUSE": " ", + "Ubuntu": " ", + "Unknown": " ", + "Void": " ", + "Windows": "󰍲 " + } + } +}