From e3b843e00d96b799dddb35559d3d802a8636b0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9ana=20=E6=B1=9F?= Date: Sat, 10 Jan 2026 22:28:56 +0100 Subject: [PATCH] packages/mullvad-status: init --- .../by-name/mullvad-status/mullvad-status.sh | 33 +++++++++++++++++++ .../by-name/mullvad-status/package.nix | 14 ++++++++ 2 files changed, 47 insertions(+) create mode 100644 nix/packages/by-name/mullvad-status/mullvad-status.sh create mode 100644 nix/packages/by-name/mullvad-status/package.nix diff --git a/nix/packages/by-name/mullvad-status/mullvad-status.sh b/nix/packages/by-name/mullvad-status/mullvad-status.sh new file mode 100644 index 00000000..af75f92f --- /dev/null +++ b/nix/packages/by-name/mullvad-status/mullvad-status.sh @@ -0,0 +1,33 @@ +if ! type mullvad >/dev/null; then + echo -n "Mullvad unavailable" + exit 1 +fi + +MULLVAD_STATUS="$(mullvad status -j)" + +function xmobarColor { + fg="$1" + x="$2" + echo -n "$x" +} + +case "$(echo "$MULLVAD_STATUS" | jq -r ".state")" in +connected) + function has-feature { + echo "$MULLVAD_STATUS" | jq --exit-status ".details.feature_indicators|contains([\"$1\"])" >/dev/null + } + if has-feature "LockdownMode"; then + xmobarColor "green" "Mullvad On " + else + xmobarColor "orange" "Mullvad On" + fi + + COUNTRY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.country')" + CITY="$(echo "$MULLVAD_STATUS" | jq -r '.details.location.city')" + + echo -n " ($COUNTRY,$CITY)" + ;; +disconnected) + xmobarColor "red" "Mullvad Off" + ;; +esac diff --git a/nix/packages/by-name/mullvad-status/package.nix b/nix/packages/by-name/mullvad-status/package.nix new file mode 100644 index 00000000..4841f3aa --- /dev/null +++ b/nix/packages/by-name/mullvad-status/package.nix @@ -0,0 +1,14 @@ +{ + writeShellApplication, + jq, + mullvad, +}: + +writeShellApplication { + name = "mullvad-status"; + runtimeInputs = [ + mullvad + jq + ]; + text = builtins.readFile ./mullvad-status.sh; +}