From 0801cb17aa38c9f5fa06f729f5cade860638e9e4 Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Fri, 27 Feb 2026 12:32:34 +0100 Subject: [PATCH 1/5] feat: add remmina --- hosts/nb/modules/desktop/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/nb/modules/desktop/default.nix b/hosts/nb/modules/desktop/default.nix index f91fef5..5ac08db 100644 --- a/hosts/nb/modules/desktop/default.nix +++ b/hosts/nb/modules/desktop/default.nix @@ -65,6 +65,7 @@ in pavucontrol pinentry-gnome3 rbw + remmina rofi-rbw swayimg thunderbird From 539cb58493b621705c94b739f1397dfa7a9444d1 Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Fri, 27 Feb 2026 12:32:59 +0100 Subject: [PATCH 2/5] feat: add bluetooth to waybar and fix battery max loading --- hosts/nb/configuration.nix | 1 + hosts/nb/modules/bluetooth-waybar.nix | 106 ++++++++++++++++++++++++++ hosts/nb/modules/charge-control.nix | 2 +- hosts/nb/modules/sway/waybar.conf | 12 ++- hosts/nb/modules/sway/waybar.css | 11 +++ 5 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 hosts/nb/modules/bluetooth-waybar.nix diff --git a/hosts/nb/configuration.nix b/hosts/nb/configuration.nix index da643ef..d0c41b8 100644 --- a/hosts/nb/configuration.nix +++ b/hosts/nb/configuration.nix @@ -32,6 +32,7 @@ in ./modules/qdrant.nix ./modules/battery-brightness.nix ./modules/charge-control.nix + ./modules/bluetooth-waybar.nix ./modules/suspend-fixes.nix ./cachix.nix diff --git a/hosts/nb/modules/bluetooth-waybar.nix b/hosts/nb/modules/bluetooth-waybar.nix new file mode 100644 index 0000000..919ae09 --- /dev/null +++ b/hosts/nb/modules/bluetooth-waybar.nix @@ -0,0 +1,106 @@ +{ pkgs, ... }: +let + waybar-bluetooth = pkgs.writeShellScriptBin "waybar-bluetooth" '' + powered=$(${pkgs.bluez}/bin/bluetoothctl show | ${pkgs.gnugrep}/bin/grep "Powered:" | ${pkgs.gawk}/bin/awk '{print $2}') + if [ "$powered" = "yes" ]; then + connected_device=$(${pkgs.bluez}/bin/bluetoothctl devices Connected | head -1 | cut -d' ' -f3-) + if [ -n "$connected_device" ]; then + icon="󰂱" + text="$icon $connected_device" + class="connected" + tooltip="Connected: $connected_device" + else + icon="󰂯" + text="$icon" + class="on" + tooltip="Bluetooth on (no device connected)" + fi + else + icon="󰂲" + text="$icon" + class="off" + tooltip="Bluetooth off" + fi + + ${pkgs.jq}/bin/jq -cn \ + --arg text "$text" \ + --arg tooltip "$tooltip" \ + --arg class "$class" \ + '{text: $text, tooltip: $tooltip, class: $class}' + ''; + + bluetooth-toggle = pkgs.writeShellScriptBin "bluetooth-toggle" '' + powered=$(${pkgs.bluez}/bin/bluetoothctl show | ${pkgs.gnugrep}/bin/grep "Powered:" | ${pkgs.gawk}/bin/awk '{print $2}') + if [ "$powered" = "yes" ]; then + ${pkgs.bluez}/bin/bluetoothctl power off + ${pkgs.util-linux}/bin/rfkill block bluetooth + else + ${pkgs.util-linux}/bin/rfkill unblock bluetooth + sleep 0.5 + ${pkgs.bluez}/bin/bluetoothctl power on + fi + ''; + + bluetooth-connect-menu = pkgs.writeShellScriptBin "bluetooth-connect-menu" '' + # Power on bluetooth if off + powered=$(${pkgs.bluez}/bin/bluetoothctl show | ${pkgs.gnugrep}/bin/grep "Powered:" | ${pkgs.gawk}/bin/awk '{print $2}') + if [ "$powered" != "yes" ]; then + ${pkgs.util-linux}/bin/rfkill unblock bluetooth + sleep 0.5 + ${pkgs.bluez}/bin/bluetoothctl power on + sleep 1 + fi + + # Build list of paired devices with connection status + devices="" + while IFS= read -r line; do + mac=$(echo "$line" | ${pkgs.gawk}/bin/awk '{print $2}') + name=$(echo "$line" | cut -d' ' -f3-) + [ -z "$mac" ] && continue + + # Check if connected + info=$(${pkgs.bluez}/bin/bluetoothctl info "$mac" 2>/dev/null) + connected=$(echo "$info" | ${pkgs.gnugrep}/bin/grep "Connected:" | ${pkgs.gawk}/bin/awk '{print $2}') + if [ "$connected" = "yes" ]; then + devices="''${devices}[connected] $name\n" + else + devices="''${devices}$name\n" + fi + done < <(${pkgs.bluez}/bin/bluetoothctl devices Paired) + + devices="''${devices}Open Bluetooth Manager" + + # Show fzf menu + choice=$(printf "%b" "$devices" | ${pkgs.fzf}/bin/fzf --prompt="Bluetooth > " --reverse --no-info) + [ -z "$choice" ] && exit 0 + + if [ "$choice" = "Open Bluetooth Manager" ]; then + ${pkgs.blueman}/bin/blueman-manager & + exit 0 + fi + + # Extract device name (strip [connected] prefix if present) + device_name="''${choice#\[connected\] }" + + # Find MAC address for the device + mac=$(${pkgs.bluez}/bin/bluetoothctl devices Paired | ${pkgs.gnugrep}/bin/grep "$device_name" | ${pkgs.gawk}/bin/awk '{print $2}') + [ -z "$mac" ] && exit 1 + + if [[ "$choice" == \[connected\]* ]]; then + echo "Disconnecting $device_name..." + ${pkgs.bluez}/bin/bluetoothctl disconnect "$mac" + else + echo "Connecting to $device_name..." + ${pkgs.bluez}/bin/bluetoothctl connect "$mac" + fi + + sleep 1 + ''; +in +{ + environment.systemPackages = [ + waybar-bluetooth + bluetooth-toggle + bluetooth-connect-menu + ]; +} diff --git a/hosts/nb/modules/charge-control.nix b/hosts/nb/modules/charge-control.nix index f9045f3..0fd60fe 100644 --- a/hosts/nb/modules/charge-control.nix +++ b/hosts/nb/modules/charge-control.nix @@ -11,7 +11,7 @@ let ''; charge-limit-menu = pkgs.writeShellScriptBin "charge-limit-menu" '' - choice=$(printf "80%%\n100%%" | ${pkgs.wofi}/bin/wofi --dmenu --prompt "Charge limit") + choice=$(printf "80%%\n100%%" | ${pkgs.fzf}/bin/fzf --prompt="Charge limit > " --reverse --no-info) case "$choice" in "80%") /run/wrappers/bin/sudo ${charge-limit-apply}/bin/charge-limit-apply 80 ;; "100%") /run/wrappers/bin/sudo ${charge-limit-apply}/bin/charge-limit-apply 100 ;; diff --git a/hosts/nb/modules/sway/waybar.conf b/hosts/nb/modules/sway/waybar.conf index c43e39f..eff3d4e 100644 --- a/hosts/nb/modules/sway/waybar.conf +++ b/hosts/nb/modules/sway/waybar.conf @@ -24,6 +24,9 @@ "network", "custom/left-arrow-light", "custom/left-arrow-dark", + "custom/bluetooth", + "custom/left-arrow-light", + "custom/left-arrow-dark", "pulseaudio", "custom/left-arrow-light", "custom/left-arrow-dark", @@ -109,11 +112,18 @@ "interval": 5, "format": " {usage:2}%" }, + "custom/bluetooth": { + "exec": "waybar-bluetooth", + "return-type": "json", + "interval": 5, + "on-click": "bluetooth-toggle", + "on-click-right": "foot -a launcher -e bluetooth-connect-menu" + }, "custom/battery": { "exec": "waybar-battery", "return-type": "json", "interval": 10, - "on-click": "charge-limit-menu" + "on-click": "foot -a launcher -e charge-limit-menu" }, "disk": { "interval": 5, diff --git a/hosts/nb/modules/sway/waybar.css b/hosts/nb/modules/sway/waybar.css index 490ae18..192545b 100644 --- a/hosts/nb/modules/sway/waybar.css +++ b/hosts/nb/modules/sway/waybar.css @@ -25,6 +25,7 @@ window#waybar { #clock.2, #clock.3, #network, +#custom-bluetooth, #pulseaudio, #memory, #cpu, @@ -53,6 +54,15 @@ window#waybar { #network { color: #8be9fd; } +#custom-bluetooth { + color: #8be9fd; +} +#custom-bluetooth.off { + color: #6272a4; +} +#custom-bluetooth.connected { + color: #50fa7b; +} #pulseaudio { color: #6272a4; } @@ -74,6 +84,7 @@ window#waybar { } #network, +#custom-bluetooth, #pulseaudio, #memory, #cpu, From 95e0c05db7f53228dab69108dfb96eb9948f4f8f Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Fri, 27 Feb 2026 12:33:30 +0100 Subject: [PATCH 3/5] feat: add ssh host configs --- hosts/nb/users/dominik.nix | 44 +++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/hosts/nb/users/dominik.nix b/hosts/nb/users/dominik.nix index 4b32f5f..d61c410 100644 --- a/hosts/nb/users/dominik.nix +++ b/hosts/nb/users/dominik.nix @@ -692,18 +692,10 @@ in user = "git"; identitiesOnly = true; }; - "gitlab.epicenter.works" = { - user = "git"; + "mac.cloonar.com" = { + user = "dominikpolakovics"; identitiesOnly = true; }; - "tools.epicenter.works" = { - user = "root"; - identityFile = "~/.ssh/epicenter_id_ed25519"; - }; - "*.epicenter.works !tools.epicenter.works" = { - user = "dominik"; - identityFile = "~/.ssh/epicenter.id_rsa"; - }; "*.dearmep.eu" = { user = "root"; identityFile = "~/.ssh/epicenter.id_rsa"; @@ -725,12 +717,34 @@ in "*.cloonar.smart" = { user = "root"; }; + "u149513.your-backup.de" = { + user = "u149513"; + # user = "u149513-sub2"; # fw.cloonar.com + port = 23; + }; + "u428777.your-storagebox.de" = { + user = "u428777"; + # user = "u149513-sub2"; # fw.cloonar.com + port = 23; + }; "*.wsw.at" = { user = "wswdpolakovics"; setEnv = { TERM = "xterm-256color"; }; }; + "gitlab.epicenter.works" = { + user = "git"; + identitiesOnly = true; + }; + "tools.epicenter.works" = { + user = "root"; + identityFile = "~/.ssh/epicenter_id_ed25519"; + }; + "*.epicenter.works !tools.epicenter.works" = { + user = "dominik"; + identityFile = "~/.ssh/epicenter.id_rsa"; + }; "*.nycro.net" = { user = "hilgenberg-gmbh.de_kk33i9d2xv"; # prod #user = "hilgenberg.gmbh.de_pci2n5aqzt"; # stage @@ -750,16 +764,6 @@ in TERM = "xterm-256color"; }; }; - "u149513.your-backup.de" = { - user = "u149513"; - # user = "u149513-sub2"; # fw.cloonar.com - port = 23; - }; - "u428777.your-storagebox.de" = { - user = "u428777"; - # user = "u149513-sub2"; # fw.cloonar.com - port = 23; - }; }; }; }; From d127dbd70816d82454548269882f4c56c333a677 Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Fri, 27 Feb 2026 12:33:44 +0100 Subject: [PATCH 4/5] fix: claude-code statusline command --- .../claude-code/statusline-command.sh | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/home-manager/claude-code/statusline-command.sh b/utils/home-manager/claude-code/statusline-command.sh index 6240e86..73f0412 100644 --- a/utils/home-manager/claude-code/statusline-command.sh +++ b/utils/home-manager/claude-code/statusline-command.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash -# ANSI color codes -GREEN='\033[32m' -YELLOW='\033[33m' -RED='\033[31m' -CYAN='\033[36m' -GRAY='\033[90m' -MAGENTA='\033[35m' -RESET='\033[0m' +# ANSI color codes (actual escape bytes, not printf-interpreted strings) +GREEN=$'\033[32m' +YELLOW=$'\033[33m' +RED=$'\033[31m' +CYAN=$'\033[36m' +GRAY=$'\033[90m' +MAGENTA=$'\033[35m' +RESET=$'\033[0m' input=$(cat) usage=$(echo "$input" | jq '.context_window.current_usage') @@ -91,4 +91,4 @@ if [ -n "$project" ]; then fi fi -printf "%b" "$output" +printf '%s' "$output" From b8527d928cda192ffe221f09a12970e65f86139e Mon Sep 17 00:00:00 2001 From: Dominik Polakovics Date: Fri, 27 Feb 2026 12:34:47 +0100 Subject: [PATCH 5/5] feat: update claude-code --- utils/pkgs/claude-code/default.nix | 6 +- utils/pkgs/claude-code/package-lock.json | 148 +++++++++++++---------- 2 files changed, 87 insertions(+), 67 deletions(-) diff --git a/utils/pkgs/claude-code/default.nix b/utils/pkgs/claude-code/default.nix index dec94e9..b571138 100644 --- a/utils/pkgs/claude-code/default.nix +++ b/utils/pkgs/claude-code/default.nix @@ -1,11 +1,11 @@ { lib, pkgs, runCommand, claude-code }: let - version = "2.1.32"; + version = "2.1.62"; src = pkgs.fetchzip { url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz"; - hash = "sha256-oN+Pl/SpMpI4JiU+x73Z9lNYwaz2mJpYnc4ssAG+oAo="; + hash = "sha256-pPOmZSRq44SU5QySWNmIvUovEOg7q9lcLFyHkkngN5Y="; }; # Create a modified source with our package-lock.json @@ -22,7 +22,7 @@ in npmDeps = pkgs.fetchNpmDeps { src = srcWithLock; - hash = "sha256-PhYhhu6hH1D7TwjHTOxw57V1b07xFWw+e38U9TJ6zYM="; + hash = "sha256-MPDLDJvU734yRhLGbZ+vAkO0O6KhQvEPt6eQ8BWwGdU="; }; # Remove the old postPatch since srcWithLock already includes package-lock.json diff --git a/utils/pkgs/claude-code/package-lock.json b/utils/pkgs/claude-code/package-lock.json index 98642e0..81b9279 100644 --- a/utils/pkgs/claude-code/package-lock.json +++ b/utils/pkgs/claude-code/package-lock.json @@ -5,13 +5,13 @@ "packages": { "": { "dependencies": { - "@anthropic-ai/claude-code": "^2.1.32" + "@anthropic-ai/claude-code": "^2.1.62" } }, "node_modules/@anthropic-ai/claude-code": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.32.tgz", - "integrity": "sha512-TWySpzIPJCdn/RNHI7nIn/j/2PLGaw1d+v7v9JyVHk8i+cNND3eUm2YACO9219psbdtE1IpG1qeq/xsaHxlyDg==", + "version": "2.1.62", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-2.1.62.tgz", + "integrity": "sha512-IzslR/dbIlQj0W1bqd9opLaSsSknhwLZVZ3i03LlanWbe1MczBskQn6Veg5CgzmZeWEwKJR1kR3+5t4bCUmLmg==", "license": "SEE LICENSE IN README.md", "bin": { "claude": "cli.js" @@ -20,20 +20,21 @@ "node": ">=18.0.0" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "^0.33.5", - "@img/sharp-darwin-x64": "^0.33.5", - "@img/sharp-linux-arm": "^0.33.5", - "@img/sharp-linux-arm64": "^0.33.5", - "@img/sharp-linux-x64": "^0.33.5", - "@img/sharp-linuxmusl-arm64": "^0.33.5", - "@img/sharp-linuxmusl-x64": "^0.33.5", - "@img/sharp-win32-x64": "^0.33.5" + "@img/sharp-darwin-arm64": "^0.34.2", + "@img/sharp-darwin-x64": "^0.34.2", + "@img/sharp-linux-arm": "^0.34.2", + "@img/sharp-linux-arm64": "^0.34.2", + "@img/sharp-linux-x64": "^0.34.2", + "@img/sharp-linuxmusl-arm64": "^0.34.2", + "@img/sharp-linuxmusl-x64": "^0.34.2", + "@img/sharp-win32-arm64": "^0.34.2", + "@img/sharp-win32-x64": "^0.34.2" } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", "cpu": [ "arm64" ], @@ -49,13 +50,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.2.4" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", "cpu": [ "x64" ], @@ -71,13 +72,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.2.4" } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", "cpu": [ "arm64" ], @@ -91,9 +92,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", "cpu": [ "x64" ], @@ -107,9 +108,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", "cpu": [ "arm" ], @@ -123,9 +124,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", "cpu": [ "arm64" ], @@ -139,9 +140,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", "cpu": [ "x64" ], @@ -155,9 +156,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", "cpu": [ "arm64" ], @@ -171,9 +172,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", "cpu": [ "x64" ], @@ -187,9 +188,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", "cpu": [ "arm" ], @@ -205,13 +206,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "@img/sharp-libvips-linux-arm": "1.2.4" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", "cpu": [ "arm64" ], @@ -227,13 +228,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "@img/sharp-libvips-linux-arm64": "1.2.4" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", "cpu": [ "x64" ], @@ -249,13 +250,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "@img/sharp-libvips-linux-x64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", "cpu": [ "arm64" ], @@ -271,13 +272,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", "cpu": [ "x64" ], @@ -293,13 +294,32 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", "cpu": [ "x64" ],