diff --git a/nixos/doc/manual/release-notes/rl-2611.section.md b/nixos/doc/manual/release-notes/rl-2611.section.md index c6bc6f513d30..6f486e80a65e 100644 --- a/nixos/doc/manual/release-notes/rl-2611.section.md +++ b/nixos/doc/manual/release-notes/rl-2611.section.md @@ -24,6 +24,8 @@ - [Freescout](https://freescout.net/), a free, open source Helpdesk and shared mailbox. Available as [services.freescout](#opt-services.freescout.enable). +- [Koito](https://koito.io/), a modern, themeable scrobbler that you can use with any program that scrobbles to a custom ListenBrainz URL. Available as [services.koito](#opt-services.koito.enable). + - [FlapAlerted](https://github.com/Kioubit/FlapAlerted), detects BGP flapping events and provides statistics based on BGP update messages. Available as [services.flap-alerted](#opt-services.flap-alerted.enable). - [Unpackerr](https://unpackerr.zip), extracts downloads for Radarr, Sonarr, Lidarr, Readarr, and/or a Watch folder. Available as [services.unpackerr](#opt-services.unpackerr.enable). diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a889f8cabc1f..2535896d4790 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1707,6 +1707,7 @@ ./services/web-apps/kavita.nix ./services/web-apps/keycloak.nix ./services/web-apps/kimai.nix + ./services/web-apps/koito.nix ./services/web-apps/komga.nix ./services/web-apps/lanraragi.nix ./services/web-apps/lasuite-docs.nix diff --git a/nixos/modules/services/audio/music-assistant.nix b/nixos/modules/services/audio/music-assistant.nix index 6ff098a67723..8be485f1ec76 100644 --- a/nixos/modules/services/audio/music-assistant.nix +++ b/nixos/modules/services/audio/music-assistant.nix @@ -107,13 +107,17 @@ in ]; }; - services.avahi = lib.mkIf (lib.elem "airplay_receiver" cfg.providers) { - enable = true; - openFirewall = lib.mkIf cfg.openFirewall true; - publish = { + services = { + avahi = lib.mkIf (lib.elem "airplay_receiver" cfg.providers) { enable = true; - userServices = true; + openFirewall = lib.mkIf cfg.openFirewall true; + publish = { + enable = true; + userServices = true; + }; }; + + music-assistant.providers = cfg.package.providersBuiltins; }; systemd.services.music-assistant = { @@ -167,8 +171,12 @@ in DevicePolicy = "closed"; LockPersonality = true; # breaks pyopenssl's cffi calls, used in remote access feature + # not compatible with llvmlite which is required by numba -> librosa MemoryDenyWriteExecute = false; - ProcSubset = "pid"; + # required for torch to properly detect the supported engines + # allows Music-Assistant to warn, if x86_64-v2 cpu features are missing + BindReadOnlyPaths = [ "/proc/cpuinfo" ]; + ProcSubset = "all"; ProtectClock = true; ProtectControlGroups = true; ProtectHome = true; @@ -190,7 +198,7 @@ in SystemCallArchitectures = "native"; SystemCallFilter = [ "@system-service" - "~@privileged @resources" + "~@privileged" "mbind" ] ++ lib.optionals useYTMusic [ diff --git a/nixos/modules/services/web-apps/koito.nix b/nixos/modules/services/web-apps/koito.nix new file mode 100644 index 000000000000..f4b78770aed5 --- /dev/null +++ b/nixos/modules/services/web-apps/koito.nix @@ -0,0 +1,140 @@ +{ + lib, + config, + pkgs, + ... +}: +let + cfg = config.services.koito; + + inherit (lib) + getExe + mkEnableOption + mkIf + mkOption + mkPackageOption + types + ; +in +{ + options.services.koito = { + enable = mkEnableOption "koito"; + + package = mkPackageOption pkgs "koito" { }; + + openFirewall = mkOption { + type = types.bool; + default = false; + description = "Open the appropriate ports in the firewall for Koito."; + }; + + environment = mkOption { + type = types.submodule { + freeformType = types.attrsOf types.str; + options = { + KOITO_BIND_ADDR = mkOption { + type = types.str; + default = "127.0.0.1"; + example = "0.0.0.0"; + description = "The IP address to bind the Koito server to."; + }; + KOITO_LISTEN_PORT = mkOption { + type = types.port; + default = 4110; + description = "TCP port for the Koito server."; + }; + KOITO_CONFIG_DIR = mkOption { + type = types.path; + default = "/var/lib/koito"; + description = "Directory for Koito import folders and image caches."; + }; + }; + }; + default = { }; + example = { + KOITO_DEFAULT_THEME = "black"; + KOITO_LOGIN_GATE = "true"; + }; + description = '' + Environment variables to pass to the Koito service. + See for available options. + ''; + }; + + environmentFile = mkOption { + type = types.nullOr types.path; + example = "/run/secrets/koito"; + default = null; + description = '' + Path of a file with extra environment variables to be loaded from disk. + This file is not added to the nix store, so it can be used to pass secrets to Koito. + See for available options. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.services.koito = { + description = "Koito - modern scrobbler"; + after = [ "network-online.target" ]; + wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Environment = lib.mapAttrsToList (k: v: "${k}=${if builtins.isInt v then toString v else v}") ( + lib.filterAttrs (_: v: v != null) cfg.environment + ); + DynamicUser = true; + ExecStart = getExe cfg.package; + StateDirectory = "koito"; + EnvironmentFile = cfg.environmentFile; + + ProtectSystem = "strict"; + ProtectHome = true; + PrivateTmp = true; + PrivateDevices = true; + PrivateMounts = true; + ProtectControlGroups = true; + ProtectKernelTunables = true; + RestrictSUIDSGID = true; + RemoveIPC = true; + UMask = "0077"; + + CapabilityBoundingSet = [ "" ]; + NoNewPrivileges = true; + + ProtectKernelModules = true; + ProtectKernelLogs = true; + ProtectClock = true; + SystemCallArchitectures = "native"; + SystemCallFilter = [ + "@system-service" + "~@privileged" + "~@resources" + ]; + + RestrictAddressFamilies = [ + "AF_INET" + "AF_INET6" + "AF_UNIX" + ]; + + PrivateUsers = true; + + LockPersonality = true; + ProtectHostname = true; + RestrictRealtime = true; + RestrictNamespaces = true; + ProtectProc = "invisible"; + ProcSubset = "pid"; + DeviceAllow = [ "" ]; + }; + }; + networking.firewall = lib.mkIf cfg.openFirewall { + allowedTCPPorts = [ cfg.environment.KOITO_LISTEN_PORT ]; + }; + }; + + meta = { + maintainers = with lib.maintainers; [ iv-nn ]; + }; +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index fb62daf02797..5edcd7350e50 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -890,6 +890,7 @@ in kmonad = runTest ./kmonad.nix; kmscon = runTest ./kmscon.nix; knot = runTest ./knot.nix; + koito = runTest ./web-apps/koito.nix; komga = runTest ./komga.nix; komodo-periphery = runTest ./komodo-periphery.nix; krb5 = discoverTests (import ./krb5); diff --git a/nixos/tests/web-apps/koito.nix b/nixos/tests/web-apps/koito.nix new file mode 100644 index 000000000000..8839d4bfc57f --- /dev/null +++ b/nixos/tests/web-apps/koito.nix @@ -0,0 +1,20 @@ +{ ... }: +{ + name = "koito"; + + nodes.machine = { + services.koito.enable = true; + }; + + testScript = + { nodes, ... }: + let + port = toString nodes.machine.services.koito.environment.KOITO_LISTEN_PORT; + in + '' + machine.wait_for_unit('koito.service') + + machine.wait_for_open_port(${port}) + machine.succeed('curl --fail http://localhost:${port}') + ''; +} diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index 3f970303d764..9b08c6a7f926 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -446,12 +446,12 @@ final: prev: { SchemaStore-nvim = buildVimPlugin { pname = "SchemaStore.nvim"; - version = "0-unstable-2026-06-18"; + version = "0-unstable-2026-06-26"; src = fetchFromGitHub { owner = "b0o"; repo = "SchemaStore.nvim"; - rev = "c73e2b170a4927d1dc1b48e878bba6cf0ed9b07c"; - hash = "sha256-C5RIJHqT55QByx02erUkoi2rFUDh/LivP4MIFbRSArI="; + rev = "490afbd7fd3b316330550405ac74758a971104a4"; + hash = "sha256-jdH0D+L3Y+5NJXoIik5Ao18dHRKc3dN3ZmKVUH+R9/4="; }; meta.homepage = "https://github.com/b0o/SchemaStore.nvim/"; meta.license = getLicenseFromSpdxId "Apache-2.0"; @@ -868,12 +868,12 @@ final: prev: { ale = buildVimPlugin { pname = "ale"; - version = "4.0.0-unstable-2026-06-01"; + version = "4.0.0-unstable-2026-06-21"; src = fetchFromGitHub { owner = "dense-analysis"; repo = "ale"; - rev = "178fe113564d31cba304263765aeb21e7ed23a7e"; - hash = "sha256-9O1LLT4l+bxfCcYTLpazhEQsNGaAfueaIlQarbF0GjA="; + rev = "d0ea94323207abcdee717d76bb57b38d46055664"; + hash = "sha256-m8ztWD74kc3Pd5dDDAJcAcC6tH2EHOp4ZHp3tvYEGZw="; }; meta.homepage = "https://github.com/dense-analysis/ale/"; meta.license = getLicenseFromSpdxId "BSD-2-Clause"; @@ -1050,12 +1050,12 @@ final: prev: { artio-nvim = buildVimPlugin { pname = "artio.nvim"; - version = "0-unstable-2026-06-14"; + version = "0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "comfysage"; repo = "artio.nvim"; - rev = "ff2b4351004f3b512525276d554dc6f0cd412a14"; - hash = "sha256-6wEtjgF36RfaHBanNp49Nb/+WR/b9qElUpV7SNbpESU="; + rev = "52a074e6a15780df350c03b5c7ab47f706fe6da8"; + hash = "sha256-8hbFtJXpkH1L2ZI6Rv9HTQcseog77yf78Wc/9WsvzPA="; }; meta.homepage = "https://github.com/comfysage/artio.nvim/"; meta.license = getLicenseFromSpdxId "EUPL-1.2"; @@ -1610,12 +1610,12 @@ final: prev: { base16-nvim = buildVimPlugin { pname = "base16-nvim"; - version = "0-unstable-2026-06-19"; + version = "0-unstable-2026-06-21"; src = fetchFromGitHub { owner = "RRethy"; repo = "base16-nvim"; - rev = "7d7a00013066f8ab41be28bd43136d5ca8d0fabd"; - hash = "sha256-wwKPgnkGEP4ztW/31M6+nRnOVHkzGrmm6ElNMul0Buo="; + rev = "21233d5fd574439ae1e2f5e4bfbc574214f4ab3d"; + hash = "sha256-Dizi44p6XYaQlXEL5qnfJFX44nXKIAkZAZvQ5QH11eA="; }; meta.homepage = "https://github.com/RRethy/base16-nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -1792,12 +1792,12 @@ final: prev: { blink-calc = buildVimPlugin { pname = "blink-calc"; - version = "0-unstable-2025-10-06"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "joelazar"; repo = "blink-calc"; - rev = "199e8a5fe356d553d33a3511ca28e625dac5c470"; - hash = "sha256-3w+vQf3N6+umBUF+PkCbPXggn53rNekxHgR2y+ICwHw="; + rev = "1b75c20cbb21c95bf08694eed605fa0bdbbe5ca2"; + hash = "sha256-hWPRXBIQ2uaoWNSXFQ1OGcWLbfE9nCmX/Q6Zs5JCjqE="; }; meta.homepage = "https://github.com/joelazar/blink-calc/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -2547,12 +2547,12 @@ final: prev: { claudecode-nvim = buildVimPlugin { pname = "claudecode.nvim"; - version = "0.3.0-unstable-2026-06-18"; + version = "0.3.0-unstable-2026-06-25"; src = fetchFromGitHub { owner = "coder"; repo = "claudecode.nvim"; - rev = "bcb3fe205efe88771e8801d0a99b6fcb0a982bbb"; - hash = "sha256-pJtrh/3pGvALhQheB3LMB01IahTSYvxfCUNdiMvq8L0="; + rev = "2390c6e45c4789072c293ac69de051d169668b29"; + hash = "sha256-oMBPSRQFDmJ9Lq+ZP8vFMHaocm4sPX3D/orVMNwVXuM="; }; meta.homepage = "https://github.com/coder/claudecode.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -3484,12 +3484,12 @@ final: prev: { coc-nvim = buildVimPlugin { pname = "coc.nvim"; - version = "0.0.82-unstable-2026-06-16"; + version = "0.0.82-unstable-2026-06-26"; src = fetchFromGitHub { owner = "neoclide"; repo = "coc.nvim"; - rev = "6535506db1d0f8462ba668b5ca27e15e7f406598"; - hash = "sha256-KG9vSlp6qM3mldJb9xHXYBUrd4Sm8ihAYU2ICf3LTF4="; + rev = "4783286c40bcced33e2755f41a338bacc8232f90"; + hash = "sha256-ardShVUN0QYzBtb8QWPsOQYw6NDjAmlBJVNsSFTe5Wc="; }; meta.homepage = "https://github.com/neoclide/coc.nvim/"; meta.license = unfree; @@ -3568,12 +3568,12 @@ final: prev: { codecompanion-nvim = buildVimPlugin { pname = "codecompanion.nvim"; - version = "19.16.0"; + version = "19.17.0"; src = fetchFromGitHub { owner = "olimorris"; repo = "codecompanion.nvim"; - tag = "v19.16.0"; - hash = "sha256-EUzpQYHEtIP5pVdhsUNWF0Gv7PegMVd25j9WC3Knsq4="; + tag = "v19.17.0"; + hash = "sha256-/1XlRYSEucUMJAllX27OJNbydgLyzbWS+SXhyNXj4QU="; }; meta.homepage = "https://github.com/olimorris/codecompanion.nvim/"; meta.license = getLicenseFromSpdxId "Apache-2.0"; @@ -4157,12 +4157,12 @@ final: prev: { coq-thirdparty = buildVimPlugin { pname = "coq.thirdparty"; - version = "0-unstable-2025-10-29"; + version = "0-unstable-2026-06-21"; src = fetchFromGitHub { owner = "ms-jpq"; repo = "coq.thirdparty"; - rev = "2bd969a2bcd2624f9c260b1000957c7e665e308e"; - hash = "sha256-l+wMABt0lnKn1V6d7uhe6rUjfKsZw9XcO6RHwEVrZSI="; + rev = "a021e24f1ff538d339aece0de80d621b68862701"; + hash = "sha256-x08Ggz/maGv1tUY0P0ITFym+4W8vg6sXPLgGo6kXFNQ="; }; meta.homepage = "https://github.com/ms-jpq/coq.thirdparty/"; meta.license = unfree; @@ -4185,12 +4185,12 @@ final: prev: { coq_nvim = buildVimPlugin { pname = "coq_nvim"; - version = "0-unstable-2026-06-18"; + version = "0-unstable-2026-06-29"; src = fetchFromGitHub { owner = "ms-jpq"; repo = "coq_nvim"; - rev = "51660094e77742fd13bf98719fa90fdb5490a599"; - hash = "sha256-5MeBi/lBaQ1oln90hwMg9pwBQbfyt1tziaNRn6QurvU="; + rev = "6b2ba42652d935b4bc70707b9addb37e2d38ef20"; + hash = "sha256-PKqpmhVez3M5+kuoLzMZS1GjAoQMjvLiAUDmlI0daEA="; }; meta.homepage = "https://github.com/ms-jpq/coq_nvim/"; meta.license = getLicenseFromSpdxId "GPL-3.0-only"; @@ -4395,12 +4395,12 @@ final: prev: { cyberdream-nvim = buildVimPlugin { pname = "cyberdream.nvim"; - version = "5.4.0"; + version = "5.5.0"; src = fetchFromGitHub { owner = "scottmckendry"; repo = "cyberdream.nvim"; - tag = "v5.4.0"; - hash = "sha256-lz9TlZRhJIUnv/4qTT8SoimRiY/vGFlrOKT3xc3FtoQ="; + tag = "v5.5.0"; + hash = "sha256-iLdBf66y5nZgSj3OJWjjv07vBOMMRxx0ncSH477eXIg="; }; meta.homepage = "https://github.com/scottmckendry/cyberdream.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -4535,12 +4535,12 @@ final: prev: { ddc-filter-matcher_head = buildVimPlugin { pname = "ddc-filter-matcher_head"; - version = "0-unstable-2025-09-02"; + version = "0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "Shougo"; repo = "ddc-filter-matcher_head"; - rev = "7a955d2f6a44e39687459f8f3a22f4daa063a981"; - hash = "sha256-VYNjVH1OtmSyvBoFxF5WBf150GwoIpjTe0Y0oK8Hp8A="; + rev = "7a52b2facb97a352fcd900baca1b4efa7b652176"; + hash = "sha256-toNCobCS9NiLQewXZpKyZvuA3AZ83v/rhUbMkV1WOOQ="; }; meta.homepage = "https://github.com/Shougo/ddc-filter-matcher_head/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -4549,12 +4549,12 @@ final: prev: { ddc-filter-sorter_rank = buildVimPlugin { pname = "ddc-filter-sorter_rank"; - version = "0-unstable-2025-09-02"; + version = "0-unstable-2026-06-29"; src = fetchFromGitHub { owner = "Shougo"; repo = "ddc-filter-sorter_rank"; - rev = "eed3cb33b3ae3f9128257fcfb95e0511d1b13891"; - hash = "sha256-8zoRsX7ZNCNkokku0TW0LNkjXmBL8UCu8h3EAe4KQ+g="; + rev = "69a1109addf0e639811ec9a4a81bc09f09357c2a"; + hash = "sha256-H2Bh9aIMzMvE+Hz6Fqq5Ztt9004JYjzUAgaFcOJh1Os="; }; meta.homepage = "https://github.com/Shougo/ddc-filter-sorter_rank/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -4577,12 +4577,12 @@ final: prev: { ddc-source-around = buildVimPlugin { pname = "ddc-source-around"; - version = "0-unstable-2025-09-03"; + version = "0-unstable-2026-06-29"; src = fetchFromGitHub { owner = "Shougo"; repo = "ddc-source-around"; - rev = "68e679ca0b989cfe3300acac9099b893d0675063"; - hash = "sha256-wLQ9vpKgl4fyjLEWo1XIElw8CbFjpBkvYMFoMPrQTxM="; + rev = "c4268422e397ffea86fc1b2bda8ec9bb088c9771"; + hash = "sha256-q8N4bmL6D9lE1kh2ZOv6ITBhkudJF6fOR8vlBUhZMEY="; }; meta.homepage = "https://github.com/Shougo/ddc-source-around/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -4759,12 +4759,12 @@ final: prev: { demicolon-nvim = buildVimPlugin { pname = "demicolon.nvim"; - version = "2.0-unstable-2026-01-25"; + version = "2.0-unstable-2026-06-20"; src = fetchFromGitHub { owner = "mawkler"; repo = "demicolon.nvim"; - rev = "a9ca137474b3a02e1d6ac48bfdb1985172e2ec9a"; - hash = "sha256-jDvdyAT2lngYDSDw4c+zziUYUuNeET0FBWJA+IeD2Ts="; + rev = "153444f17494e2ff6ab7d226e6173c1841b1130a"; + hash = "sha256-gBGJphvT1AXN/UImrSWiWhhzcQt4i68Vbwtr9jXipwo="; }; meta.homepage = "https://github.com/mawkler/demicolon.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -5433,12 +5433,12 @@ final: prev: { easy-dotnet-nvim = buildVimPlugin { pname = "easy-dotnet.nvim"; - version = "0-unstable-2026-06-19"; + version = "0-unstable-2026-06-25"; src = fetchFromGitHub { owner = "GustavEikaas"; repo = "easy-dotnet.nvim"; - rev = "4a4a12add28922e5e22d9cfdeda88194f487a8e2"; - hash = "sha256-rWAxDFuqatT3UTPMxn7JhzVCflCpOoxSZagVqaSY5dg="; + rev = "07a41015af3bcbad7dff94191d5ad4b8a67fd202"; + hash = "sha256-/XQu9ywd4AK8sD7AIRdPJYjrPqM5ZorZv266tJViz/M="; }; meta.homepage = "https://github.com/GustavEikaas/easy-dotnet.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -6346,12 +6346,12 @@ final: prev: { fyler-nvim = buildVimPlugin { pname = "fyler.nvim"; - version = "2.0.0-unstable-2025-11-23"; + version = "2.0.0-unstable-2026-06-28"; src = fetchFromGitHub { owner = "FylerOrg"; repo = "fyler.nvim"; - rev = "bb8b9f30c652c948d35211958b0deec3496bcc08"; - hash = "sha256-Caf1dJiIATbs0PNjSANjA3QgHg7PdeMz9Pjoc0Ti7G4="; + rev = "70e1202434a21b45649dd59ec82dc3330f79125e"; + hash = "sha256-va0a+y6fjut99A7MBjKYvfmhQUDp/zyD/65neYWVHE8="; }; meta.homepage = "https://github.com/FylerOrg/fyler.nvim/"; meta.license = getLicenseFromSpdxId "Apache-2.0"; @@ -6696,11 +6696,11 @@ final: prev: { gitlab-vim = buildVimPlugin { pname = "gitlab.vim"; - version = "1.1.0-unstable-2026-06-10"; + version = "1.1.0-unstable-2026-06-24"; src = fetchgit { url = "https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim"; - rev = "eaddfb6717d7d1118b40403dd8ae76b79e28eb33"; - hash = "sha256-RSPu9WhHfb5JyaYYZGJ4tYe0USOQ4ap68Z27ZhkA5Vc="; + rev = "94cadd5075cfefadd5dcfe8a820313a3fb99465e"; + hash = "sha256-awuHlEw7jV7gBMVi57MOYDowexdtqLyQCUljV0mYlCg="; }; meta.homepage = "https://gitlab.com/gitlab-org/editor-extensions/gitlab.vim"; meta.license = unfree; @@ -7087,12 +7087,12 @@ final: prev: { guh-nvim = buildVimPlugin { pname = "guh.nvim"; - version = "0.0.1-unstable-2026-06-19"; + version = "0.0.1-unstable-2026-06-24"; src = fetchFromGitHub { owner = "justinmk"; repo = "guh.nvim"; - rev = "ebe54715626173abba55e17282c60561bcfbfb6c"; - hash = "sha256-v6N+Y86heqpt46qOJwpzXs2yGamM6sxd9DJDzo8nm4g="; + rev = "943779f7cdb0acee203985ad531fb53ff95d9c8e"; + hash = "sha256-IfcrDH4B5J4aeV/Ff8mZ93nh3TNNoX/miZRWn6uMcu0="; }; meta.homepage = "https://github.com/justinmk/guh.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -7255,12 +7255,12 @@ final: prev: { haskell-snippets-nvim = buildVimPlugin { pname = "haskell-snippets.nvim"; - version = "1.5.0-unstable-2026-05-11"; + version = "1.5.0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "mrcjkb"; repo = "haskell-snippets.nvim"; - rev = "f7482c1097007e8bac0502c0644e375a12ae72ba"; - hash = "sha256-BygC8L0Jau5/7ljHfD9LJO18jhXvIq1SSvtyb7bNv40="; + rev = "5be33b79f0320ad9ef7f558507f2e365deebef4f"; + hash = "sha256-/xJ1Wx6Y24NvrbX4+v2lF+anEhP14p+N9jc2/p859LU="; }; meta.homepage = "https://github.com/mrcjkb/haskell-snippets.nvim/"; meta.license = getLicenseFromSpdxId "GPL-2.0-only"; @@ -9817,11 +9817,11 @@ final: prev: { mini-ai = buildVimPlugin { pname = "mini.ai"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.ai"; - rev = "d73c36349aa7b0bab5f77ad71701a1d42211a1df"; + tag = "v0.18.0"; hash = "sha256-5lmxcbEwlUcV3D4Zw93dLH2onFdpGMEAhul51lbxFIg="; }; meta.homepage = "https://github.com/nvim-mini/mini.ai/"; @@ -9831,11 +9831,11 @@ final: prev: { mini-align = buildVimPlugin { pname = "mini.align"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.align"; - rev = "8cebe89d82f20e6d21b27346bcde4b4b6244a9f1"; + tag = "v0.18.0"; hash = "sha256-0YVTahHSbzhEEpw9zYfGljxx+ufsuZ0qWiu2SZzTD9U="; }; meta.homepage = "https://github.com/nvim-mini/mini.align/"; @@ -9845,11 +9845,11 @@ final: prev: { mini-animate = buildVimPlugin { pname = "mini.animate"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.animate"; - rev = "1c243baec3a308ea3552fbbd2f5d24ed804bf17d"; + tag = "v0.18.0"; hash = "sha256-xxEoAH267h7oEMaMtv9YRsJRL5X1pWbAeCy/U+i33gs="; }; meta.homepage = "https://github.com/nvim-mini/mini.animate/"; @@ -9859,11 +9859,11 @@ final: prev: { mini-base16 = buildVimPlugin { pname = "mini.base16"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.base16"; - rev = "ecbcb4e363169a663ece476f35fd87870c6d6a8b"; + tag = "v0.18.0"; hash = "sha256-Q038ztqiCjX9WAqlcKC4auNNeRtC+hOV6BvMml/Tdp8="; }; meta.homepage = "https://github.com/nvim-mini/mini.base16/"; @@ -9873,11 +9873,11 @@ final: prev: { mini-basics = buildVimPlugin { pname = "mini.basics"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.basics"; - rev = "b5be271ebe862ca0570e450976799554e585d16e"; + tag = "v0.18.0"; hash = "sha256-/H9/3JkZigApufNvWMtOFbsrHuG4cwPuY+fKmklWkU8="; }; meta.homepage = "https://github.com/nvim-mini/mini.basics/"; @@ -9887,11 +9887,11 @@ final: prev: { mini-bracketed = buildVimPlugin { pname = "mini.bracketed"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.bracketed"; - rev = "7662c280946faf573c4eabf307d78406ad0783e4"; + tag = "v0.18.0"; hash = "sha256-vsj7cf6deB9o0UkFN/ewk/kxKooC0lB7txRpbbNnaLc="; }; meta.homepage = "https://github.com/nvim-mini/mini.bracketed/"; @@ -9901,11 +9901,11 @@ final: prev: { mini-bufremove = buildVimPlugin { pname = "mini.bufremove"; - version = "0.17.0-unstable-2026-05-12"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.bufremove"; - rev = "4cfbb201b2760da79ca6e1a00e9f67cbc99cbb8f"; + tag = "v0.18.0"; hash = "sha256-TVae69MHavTTgBCWpIbQk0L3EgLlRQgqXZlotSbG8bk="; }; meta.homepage = "https://github.com/nvim-mini/mini.bufremove/"; @@ -9915,11 +9915,11 @@ final: prev: { mini-clue = buildVimPlugin { pname = "mini.clue"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.clue"; - rev = "62e9e38c3dc4b7d429f1b6e28d96f96cdff71132"; + tag = "v0.18.0"; hash = "sha256-ivDrHCyW7YaaEtUwkmqRKwT4bYnvy3Nn3fH//STYsPA="; }; meta.homepage = "https://github.com/nvim-mini/mini.clue/"; @@ -9929,11 +9929,11 @@ final: prev: { mini-cmdline = buildVimPlugin { pname = "mini.cmdline"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.cmdline"; - rev = "8e3fe6ee41a960226bc0dc663120363a40bc18bd"; + tag = "v0.18.0"; hash = "sha256-WCsFDbk4/Cql9kJ44m++YlanasLE7ptYaaGrLoSpxYw="; }; meta.homepage = "https://github.com/nvim-mini/mini.cmdline/"; @@ -9943,11 +9943,11 @@ final: prev: { mini-colors = buildVimPlugin { pname = "mini.colors"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.colors"; - rev = "3c67f88070edb27035ae10c4fd094650a7a8efc7"; + tag = "v0.18.0"; hash = "sha256-YMBNhdIRSAKhTA3h0K1jKAW4+z/+Nj6kApMAHxkIUaE="; }; meta.homepage = "https://github.com/nvim-mini/mini.colors/"; @@ -9957,11 +9957,11 @@ final: prev: { mini-comment = buildVimPlugin { pname = "mini.comment"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.comment"; - rev = "4677392f091e8b5c18d4b535130220a6d1da4aca"; + tag = "v0.18.0"; hash = "sha256-14YdoEPMudcfYWrb62Fv2GuoWW85v2F9s3/yKxbFN88="; }; meta.homepage = "https://github.com/nvim-mini/mini.comment/"; @@ -9971,11 +9971,11 @@ final: prev: { mini-completion = buildVimPlugin { pname = "mini.completion"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.completion"; - rev = "0aeee1231b90d70563e24facc238ab4359b8d5fc"; + tag = "v0.18.0"; hash = "sha256-GD6s5qDvKrGk3qM+rk5L8fp7SmvhfKrZO+B6h7cwpAg="; }; meta.homepage = "https://github.com/nvim-mini/mini.completion/"; @@ -9985,11 +9985,11 @@ final: prev: { mini-cursorword = buildVimPlugin { pname = "mini.cursorword"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.cursorword"; - rev = "331bc17172e41343d39d91a4ab571d510766812e"; + tag = "v0.18.0"; hash = "sha256-FHD3fBCmYpw3P/o//CocQNSBoElOr7EleIdiSKM7c8E="; }; meta.homepage = "https://github.com/nvim-mini/mini.cursorword/"; @@ -9999,11 +9999,11 @@ final: prev: { mini-deps = buildVimPlugin { pname = "mini.deps"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.deps"; - rev = "75a5568a36dfb15cf2f459bca30120335bf91ec7"; + tag = "v0.18.0"; hash = "sha256-nbtOiQAgUfgoLzjXVb/SKPVRBp7bdYLBvYPg4CvchsI="; }; meta.homepage = "https://github.com/nvim-mini/mini.deps/"; @@ -10013,11 +10013,11 @@ final: prev: { mini-diff = buildVimPlugin { pname = "mini.diff"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.diff"; - rev = "0743d26bd858ebe32efcf5c86a91a422a000f273"; + tag = "v0.18.0"; hash = "sha256-ZhCsTAzuVRMbVSWWepsA8qrS1GTPNokm0NxXn3hYEoM="; }; meta.homepage = "https://github.com/nvim-mini/mini.diff/"; @@ -10027,11 +10027,11 @@ final: prev: { mini-doc = buildVimPlugin { pname = "mini.doc"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.doc"; - rev = "54bb11880f2208a059a8d2564c3f4b586b78e044"; + tag = "v0.18.0"; hash = "sha256-g1JvCOxQY5oFEr2Q5l8e31gC0O5VvIP9ZuHncK83QSE="; }; meta.homepage = "https://github.com/nvim-mini/mini.doc/"; @@ -10041,11 +10041,11 @@ final: prev: { mini-extra = buildVimPlugin { pname = "mini.extra"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.extra"; - rev = "e5ecf197f8954d002cb9e85b3715851e2c8d3cd5"; + tag = "v0.18.0"; hash = "sha256-QjA7O9AXfRWgsq3ma2Q0eonD66WRvd4qT3Jk61PgfG0="; }; meta.homepage = "https://github.com/nvim-mini/mini.extra/"; @@ -10055,11 +10055,11 @@ final: prev: { mini-files = buildVimPlugin { pname = "mini.files"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.files"; - rev = "a5689dae6b732955e33eec225b798d6815063179"; + tag = "v0.18.0"; hash = "sha256-RhD0kEdJL47nSDjrKzuN+l5+65gJ/7w+eqtP3zLVln8="; }; meta.homepage = "https://github.com/nvim-mini/mini.files/"; @@ -10069,11 +10069,11 @@ final: prev: { mini-fuzzy = buildVimPlugin { pname = "mini.fuzzy"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.fuzzy"; - rev = "016c90a5e2c7235c26684dc0e13f6f019e1dcd84"; + tag = "v0.18.0"; hash = "sha256-xk7PqaKzvUXl7v2DSRD3xu6aV1lrHB0GtbGOaoSRyZc="; }; meta.homepage = "https://github.com/nvim-mini/mini.fuzzy/"; @@ -10083,11 +10083,11 @@ final: prev: { mini-git = buildVimPlugin { pname = "mini-git"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini-git"; - rev = "96db7676696e53add56726e9e80f92dff9f63d17"; + tag = "v0.18.0"; hash = "sha256-Xu3yiQU1ibvq1skFiyie5IkHWGU7UQ46jChyO3hrgZw="; }; meta.homepage = "https://github.com/nvim-mini/mini-git/"; @@ -10097,11 +10097,11 @@ final: prev: { mini-hipatterns = buildVimPlugin { pname = "mini.hipatterns"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.hipatterns"; - rev = "607d604e650cdf21d71f863d040c496a1d0cb320"; + tag = "v0.18.0"; hash = "sha256-7ydDX9dKXFKg4o9omp+ZZfC3DLjQoIDC6n+iAYoH2ug="; }; meta.homepage = "https://github.com/nvim-mini/mini.hipatterns/"; @@ -10111,11 +10111,11 @@ final: prev: { mini-hues = buildVimPlugin { pname = "mini.hues"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.hues"; - rev = "38e6aec74052818aef0ed4b8a24ea7113125f9ad"; + tag = "v0.18.0"; hash = "sha256-x//2b2QUSmHP7HgjG1Ri31vwJ0acDkI6Pr75927wNrI="; }; meta.homepage = "https://github.com/nvim-mini/mini.hues/"; @@ -10125,11 +10125,11 @@ final: prev: { mini-icons = buildVimPlugin { pname = "mini.icons"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.icons"; - rev = "e56797f90192d81f1fda02e662fc3e8e3d775027"; + tag = "v0.18.0"; hash = "sha256-Lr5/aHSnwfDAidvGTIOfEvp0lNpnp5kFNnIUSssnaOw="; }; meta.homepage = "https://github.com/nvim-mini/mini.icons/"; @@ -10139,11 +10139,11 @@ final: prev: { mini-indentscope = buildVimPlugin { pname = "mini.indentscope"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.indentscope"; - rev = "d3f955f09b1a05d25d5a7740338fba2baaee41a3"; + tag = "v0.18.0"; hash = "sha256-ahA7Ud+f55wpEK7Lp0Zuf1djB8NcIpqmvwFPO2r6EPs="; }; meta.homepage = "https://github.com/nvim-mini/mini.indentscope/"; @@ -10153,12 +10153,12 @@ final: prev: { mini-input = buildVimPlugin { pname = "mini.input"; - version = "0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.input"; - rev = "906dfc354e8c5f9925e019612d042efe1c2c3bf3"; - hash = "sha256-sKWRtSEWqKOaMLiemYiOyRgIWYsaLgycRmyYDKd389k="; + tag = "v0.18.0"; + hash = "sha256-lATmLit9sU/7xcoEz4gD277hoDbPuifGGIwlbWKNrjg="; }; meta.homepage = "https://github.com/nvim-mini/mini.input/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -10167,11 +10167,11 @@ final: prev: { mini-jump = buildVimPlugin { pname = "mini.jump"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.jump"; - rev = "7dc394e21a59ecfd786242314dc4a68619de216d"; + tag = "v0.18.0"; hash = "sha256-AsrwzaOsh+c3BtN4knD6FvLvQl0JwQ8kPi6c/8KZGSw="; }; meta.homepage = "https://github.com/nvim-mini/mini.jump/"; @@ -10181,11 +10181,11 @@ final: prev: { mini-jump2d = buildVimPlugin { pname = "mini.jump2d"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.jump2d"; - rev = "ef08ddb40e04657b9439427f276b0546a8837c04"; + tag = "v0.18.0"; hash = "sha256-tEYxxutbVzMg2nthOVvMUQFW9MZDLlTTB9HRMS2Y62M="; }; meta.homepage = "https://github.com/nvim-mini/mini.jump2d/"; @@ -10195,11 +10195,11 @@ final: prev: { mini-keymap = buildVimPlugin { pname = "mini.keymap"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.keymap"; - rev = "2779b4a5d21ddd738b4c4c4b2347da6c89c62713"; + tag = "v0.18.0"; hash = "sha256-hAkaV2IXBYhoObNOZO2JOxYC+0f2dY090x+d91B0MCg="; }; meta.homepage = "https://github.com/nvim-mini/mini.keymap/"; @@ -10209,11 +10209,11 @@ final: prev: { mini-map = buildVimPlugin { pname = "mini.map"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.map"; - rev = "7e836e3679387012f84f2a389ace740d57a93a37"; + tag = "v0.18.0"; hash = "sha256-c80XxN/jrC9qqCWmERaRrpNOrkDadcXuy02zr7ffvlI="; }; meta.homepage = "https://github.com/nvim-mini/mini.map/"; @@ -10223,11 +10223,11 @@ final: prev: { mini-misc = buildVimPlugin { pname = "mini.misc"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.misc"; - rev = "29e2b6838b3f1399d5062f6d735ebc79eb8765f4"; + tag = "v0.18.0"; hash = "sha256-m5jbhTNVT2A9lQhwEVGay3hJD7SkFc+az6DwfishVj0="; }; meta.homepage = "https://github.com/nvim-mini/mini.misc/"; @@ -10237,11 +10237,11 @@ final: prev: { mini-move = buildVimPlugin { pname = "mini.move"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.move"; - rev = "b9e452f9c83565a1520e14f7531632160f3b0170"; + tag = "v0.18.0"; hash = "sha256-HVTI8k5KJeULmW6AC1qgCUXF5lHDcCzzp1aaI4H1PgU="; }; meta.homepage = "https://github.com/nvim-mini/mini.move/"; @@ -10251,12 +10251,12 @@ final: prev: { mini-notify = buildVimPlugin { pname = "mini.notify"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.notify"; - rev = "7d3832e369853eaf1a2d25dede9db34ae5a809e9"; - hash = "sha256-6oggS2HesLCUmWOybpyKYF/19b3RXChxn/dDTbo4L0g="; + tag = "v0.18.0"; + hash = "sha256-5qd0Kg7HCYHlgMjCiDRgqCXuqrlM2VuwpSjWXXVazN4="; }; meta.homepage = "https://github.com/nvim-mini/mini.notify/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -10265,12 +10265,12 @@ final: prev: { mini-nvim = buildVimPlugin { pname = "mini.nvim"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.nvim"; - rev = "ecb05c524a99490c95a8862eb5cb09b1e629ed42"; - hash = "sha256-n5xBMzebGmiIsL26jTKy+YfccRQ1iwvvMAnqc7bxFwo="; + tag = "v0.18.0"; + hash = "sha256-kCcyl4KUEY51UeGYmvuLD1hswWbwKhHGUt/0XLbPuUw="; }; meta.homepage = "https://github.com/nvim-mini/mini.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -10279,11 +10279,11 @@ final: prev: { mini-operators = buildVimPlugin { pname = "mini.operators"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.operators"; - rev = "59c7f7362461a5db830a5752b22ce9f5cd25a966"; + tag = "v0.18.0"; hash = "sha256-9RVfrlRd8THUJb8nJKqTbUPQKPwN8xyKzqZvr0oGQk0="; }; meta.homepage = "https://github.com/nvim-mini/mini.operators/"; @@ -10293,11 +10293,11 @@ final: prev: { mini-pairs = buildVimPlugin { pname = "mini.pairs"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.pairs"; - rev = "4a014143fcb4e9df26198ccb3ecff3b9e77a048c"; + tag = "v0.18.0"; hash = "sha256-35ewaDXW5RoQUHns0hVXMw6OTf/BTvKXLd1u/warDSE="; }; meta.homepage = "https://github.com/nvim-mini/mini.pairs/"; @@ -10307,11 +10307,11 @@ final: prev: { mini-pick = buildVimPlugin { pname = "mini.pick"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.pick"; - rev = "8c1f75f8ddd8c9f75d07ed2ab5718d2c3cb65a66"; + tag = "v0.18.0"; hash = "sha256-ebjHOQpHWsOdAIdJjimCJqXOmKCZnLobLOF8JroRRxk="; }; meta.homepage = "https://github.com/nvim-mini/mini.pick/"; @@ -10321,11 +10321,11 @@ final: prev: { mini-sessions = buildVimPlugin { pname = "mini.sessions"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.sessions"; - rev = "7cb2945ccc11323b7ca19796eb42618493e1dc12"; + tag = "v0.18.0"; hash = "sha256-hXdpKozw9ZFkrIe/wGxEJR8j02EAPnB5txq+NtrjHgI="; }; meta.homepage = "https://github.com/nvim-mini/mini.sessions/"; @@ -10335,11 +10335,11 @@ final: prev: { mini-snippets = buildVimPlugin { pname = "mini.snippets"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.snippets"; - rev = "cf5607c66571d130663fd20761d7cbebdbbf713d"; + tag = "v0.18.0"; hash = "sha256-AoSGqdCBdcCwZdwjhgSU3ACvE40FlrZARN/Lp1aZg54="; }; meta.homepage = "https://github.com/nvim-mini/mini.snippets/"; @@ -10349,11 +10349,11 @@ final: prev: { mini-splitjoin = buildVimPlugin { pname = "mini.splitjoin"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.splitjoin"; - rev = "4a0e6f5ea83148f6884eed03f287f94c3f22915d"; + tag = "v0.18.0"; hash = "sha256-/3S6D+kuSXgmf3dlCRcABnFpNY6eaFUbEDxGHduh1Es="; }; meta.homepage = "https://github.com/nvim-mini/mini.splitjoin/"; @@ -10363,11 +10363,11 @@ final: prev: { mini-starter = buildVimPlugin { pname = "mini.starter"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.starter"; - rev = "0575c96206d63fd98d7f786df78dc225bf847d95"; + tag = "v0.18.0"; hash = "sha256-4oaQrsp5f2NqxiiMEzHel0U/onctfnbCBKVTJqhQUPM="; }; meta.homepage = "https://github.com/nvim-mini/mini.starter/"; @@ -10377,11 +10377,11 @@ final: prev: { mini-statusline = buildVimPlugin { pname = "mini.statusline"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.statusline"; - rev = "b5547f44560dae3ccd81f914256fa6f705837022"; + tag = "v0.18.0"; hash = "sha256-CVebe3F7o7o+qXiEQkngfvmgtGF7dt1u7ALh1bgedzw="; }; meta.homepage = "https://github.com/nvim-mini/mini.statusline/"; @@ -10391,11 +10391,11 @@ final: prev: { mini-surround = buildVimPlugin { pname = "mini.surround"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.surround"; - rev = "580e4cb98c5900d9fe743865fb5a5b2178b4ab18"; + tag = "v0.18.0"; hash = "sha256-ILKwZ1+Dh4HH5DNnNwqH7xnDyCIEnxPRjLDCwqWOeXY="; }; meta.homepage = "https://github.com/nvim-mini/mini.surround/"; @@ -10405,11 +10405,11 @@ final: prev: { mini-tabline = buildVimPlugin { pname = "mini.tabline"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.tabline"; - rev = "7e8584a06b86902c64227e4abd0c39ae74061101"; + tag = "v0.18.0"; hash = "sha256-6vLYDvQWbI6xILsdedJCU7G129TzcMJdwC0xB50Gw8Y="; }; meta.homepage = "https://github.com/nvim-mini/mini.tabline/"; @@ -10419,11 +10419,11 @@ final: prev: { mini-trailspace = buildVimPlugin { pname = "mini.trailspace"; - version = "0.17.0-unstable-2026-05-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.trailspace"; - rev = "22653218f1aedc9bf306c8b4e8ec2c8a575f6fae"; + tag = "v0.18.0"; hash = "sha256-7qPgRedHWA3IQhshOGjENDBztJA+Q/j+ASpLdf9BQwM="; }; meta.homepage = "https://github.com/nvim-mini/mini.trailspace/"; @@ -10433,11 +10433,11 @@ final: prev: { mini-visits = buildVimPlugin { pname = "mini.visits"; - version = "0.17.0-unstable-2026-06-19"; + version = "0.18.0"; src = fetchFromGitHub { owner = "nvim-mini"; repo = "mini.visits"; - rev = "848858d4141f1cc6f98de79212a63270b09191a1"; + tag = "v0.18.0"; hash = "sha256-rDVKgX2T85i8b29QI8549RaHoEWhUQmxi++hwDR9mZk="; }; meta.homepage = "https://github.com/nvim-mini/mini.visits/"; @@ -11035,12 +11035,12 @@ final: prev: { neoconf-nvim = buildVimPlugin { pname = "neoconf.nvim"; - version = "1.4.0-unstable-2026-06-19"; + version = "1.4.0-unstable-2026-06-26"; src = fetchFromGitHub { owner = "folke"; repo = "neoconf.nvim"; - rev = "5eeb19f80e04d86e76abefb3204bd1aab009a9b2"; - hash = "sha256-ExcjOnKkfMIjxyeea5jnEcZEybe8uxopIgM75UXItnY="; + rev = "21fe7bede81cabd3281825c445a0b76b1279e840"; + hash = "sha256-odhIicmF3HEUyWCNXV+0u4MhU3sSoFAw6LbfMZqYJVs="; }; meta.homepage = "https://github.com/folke/neoconf.nvim/"; meta.license = getLicenseFromSpdxId "Apache-2.0"; @@ -11119,12 +11119,12 @@ final: prev: { neogit = buildVimPlugin { pname = "neogit"; - version = "3.0.0-unstable-2026-06-19"; + version = "3.0.0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "NeogitOrg"; repo = "neogit"; - rev = "828dd073e6ad180fdb5c1603c7ad7f68a384c40b"; - hash = "sha256-oai8d/Zin+7jsrde4wGN2x/2vI3dH/Hs4raV/h2lrIA="; + rev = "43ea1a0854052e583f647e0b35879f0158a70a78"; + hash = "sha256-WTnQnnOP98ZGnVRoQyhai0Bot4kQi6tGjWE7t4gSwdc="; }; meta.homepage = "https://github.com/NeogitOrg/neogit/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -11682,12 +11682,12 @@ final: prev: { neotest-vitest = buildVimPlugin { pname = "neotest-vitest"; - version = "0.2.0-unstable-2026-05-28"; + version = "0.2.0-unstable-2026-06-29"; src = fetchFromGitHub { owner = "marilari88"; repo = "neotest-vitest"; - rev = "2f19d215d7d4d7f121826f99f6f35a81e2c18a6f"; - hash = "sha256-QvtaCUno7/8pU32f5YLWrlYAzjDhBTmCtgxweIUFAow="; + rev = "ab5a73d6ec9d33e807d6c67ce5169c4ca4a5d7f3"; + hash = "sha256-daeDCN58hMAesXEBhc4gbN2ISGQ0orIUNhL2ApB3E+s="; }; meta.homepage = "https://github.com/marilari88/neotest-vitest/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -12493,11 +12493,11 @@ final: prev: { nvim-dap = buildVimPlugin { pname = "nvim-dap"; - version = "0.10.0-unstable-2026-05-20"; + version = "0.10.0-unstable-2026-06-19"; src = fetchgit { url = "https://codeberg.org/mfussenegger/nvim-dap/"; - rev = "531771530d4f82ad2d21e436e3cc052d68d7aebb"; - hash = "sha256-pgD51NWFyjK1FrXZ8MFFIM9DX2OBxL7cd7JlST2Twvc="; + rev = "9e848e09a697ee95302a3ef2dd43fd6eb709e570"; + hash = "sha256-IHm3CwO7qUTtOZqhljDjSzz4WbaAJ4kPY384MyZZ9ac="; }; meta.homepage = "https://codeberg.org/mfussenegger/nvim-dap/"; meta.license = unfree; @@ -12700,12 +12700,12 @@ final: prev: { nvim-early-retirement = buildVimPlugin { pname = "nvim-early-retirement"; - version = "0-unstable-2026-04-06"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-early-retirement"; - rev = "3b05315a61c8f01bb893249f9e044fc359122c9d"; - hash = "sha256-vc2Q2iiyx6WcEr4RYtvr4s5yYSYKst+DpNG1WNKLQCI="; + rev = "dee05ab8d105d091faa4aad5659348f0e9734628"; + hash = "sha256-FteHivPNYlBbu6xyVFTNMnxNfHe2wN3qb/xBwT4T9c4="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-early-retirement/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -12770,12 +12770,12 @@ final: prev: { nvim-genghis = buildVimPlugin { pname = "nvim-genghis"; - version = "0-unstable-2026-06-05"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-genghis"; - rev = "e6fd1f42736b15e63c0c703457c5ca162228a2f3"; - hash = "sha256-UG3yDZJ/j4Z+fDm5/qrVuUUA8rU4oc4chqFJK25jjYw="; + rev = "12100e3fe7fa863f60b5b81a3587c8c9d5a5b2ff"; + hash = "sha256-z4VSvOWY85W6A9jiZkAgY/ezvxSXKBJdgjGXC0Thud0="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-genghis/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -12854,12 +12854,12 @@ final: prev: { nvim-impairative = buildVimPlugin { pname = "nvim-impairative"; - version = "0.6.0"; + version = "0.6.1"; src = fetchFromGitHub { owner = "idanarye"; repo = "nvim-impairative"; - tag = "v0.6.0"; - hash = "sha256-xl33sp/+wjH8Y8Uoa7j7kaQIgcMXUWYlGfCDKkZQNLk="; + tag = "v0.6.1"; + hash = "sha256-rQGtfLCCICUtkhTp4/r0KLCouxOtP8XEvWJDWRpVw0I="; }; meta.homepage = "https://github.com/idanarye/nvim-impairative/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -12992,12 +12992,12 @@ final: prev: { nvim-justice = buildVimPlugin { pname = "nvim-justice"; - version = "0-unstable-2026-04-13"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-justice"; - rev = "a3e0d2d73d1748d1bed45e6b1797fbc73961e53f"; - hash = "sha256-gT+vPt9BWe1AylFqbZsoEXL8cXSpMjRdiY44Cxalwcg="; + rev = "11e4deec4c00d07b48d5b5008ab53bba267e71f5"; + hash = "sha256-VorppQ/Xs4vKzzSX5NXgtR2RQB2JBUjwgzbUbbwtVRQ="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-justice/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13076,11 +13076,11 @@ final: prev: { nvim-lint = buildVimPlugin { pname = "nvim-lint"; - version = "05-unstable-2026-06-17"; + version = "05-unstable-2026-06-25"; src = fetchgit { url = "https://codeberg.org/mfussenegger/nvim-lint/"; - rev = "4b7957daf4b81eb578114bd6fcf20b6f5a2b59e8"; - hash = "sha256-5df927RmgLzj2oOsQRrv7KRMOpTD59R4g22p94/6k7g="; + rev = "a219b2c9e5b4765e5c845aba119dad55806fcaf1"; + hash = "sha256-pABhzTRkcxAT/ELeltz47eCAKCnzdoCtc2QRu3wm0xU="; }; meta.homepage = "https://codeberg.org/mfussenegger/nvim-lint/"; meta.license = unfree; @@ -13327,12 +13327,12 @@ final: prev: { nvim-origami = buildVimPlugin { pname = "nvim-origami"; - version = "1.9-unstable-2026-05-27"; + version = "1.9-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-origami"; - rev = "47be2209d09755c0202da1e22a8d67af8f5ae178"; - hash = "sha256-Pg6pwiB8mEQfMDv5aLZKx06EEZuaVN1xtuVBOpd4iWo="; + rev = "f15aad8c58ef24b98ffe241ff52f9dfd74cff591"; + hash = "sha256-XDLiO1PxxdKzC2YPhMKwM6NK76SWe2933CXMjH9eHZs="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-origami/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13453,12 +13453,12 @@ final: prev: { nvim-rip-substitute = buildVimPlugin { pname = "nvim-rip-substitute"; - version = "0-unstable-2026-05-19"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-rip-substitute"; - rev = "c65592d88f0fa00396e260da99d9e419f4891e3b"; - hash = "sha256-sKfxZxB2b2jUNEc/EvCd81s9FMZqBdiMZXJJKkOUyz4="; + rev = "5aafa8e31971d2fb1dbb207f1ecd3b12b1ba0f88"; + hash = "sha256-U1/whBLVdHiS+ykAdOVdY+bIVcP/+kDE/rN2uM/D/vY="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-rip-substitute/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13467,12 +13467,12 @@ final: prev: { nvim-scissors = buildVimPlugin { pname = "nvim-scissors"; - version = "0-unstable-2026-04-13"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-scissors"; - rev = "9cc1ba06afa8b23b0d30cadc02c40940df1d701e"; - hash = "sha256-uhNlLndXpLiU0qYvnnCepqqCp5eA+GRxq/aWJcRts+U="; + rev = "4abd0dc9510599d90d871d112f01924ef7171705"; + hash = "sha256-JM9+rn64kWqvKFac8qHmCPEecRY+dj9AC7BSarMYNHs="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-scissors/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13537,12 +13537,12 @@ final: prev: { nvim-sioyek-highlights = buildVimPlugin { pname = "nvim-sioyek-highlights"; - version = "0-unstable-2026-05-20"; + version = "0-unstable-2026-06-27"; src = fetchFromGitHub { owner = "jbuck95"; repo = "nvim-sioyek-highlights"; - rev = "753f5d309d08229325134e5992cd032d06f72ee8"; - hash = "sha256-JiHBw/3LqYW4oxT+ObvU3IsDU1Q5JaKr4TDBZautNV0="; + rev = "ed275e3766d9055503b4ad1aebb9fde75e81b80a"; + hash = "sha256-RRVUG6OMjhQy2mw8LjFUSkoZd2u1FzdJlbZiXq/vwMU="; }; meta.homepage = "https://github.com/jbuck95/nvim-sioyek-highlights/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13607,12 +13607,12 @@ final: prev: { nvim-spider = buildVimPlugin { pname = "nvim-spider"; - version = "0-unstable-2026-04-13"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-spider"; - rev = "4fdd56a4f45bca13a607632e15a6f9f8d1b1f99e"; - hash = "sha256-2ZJV23CZ8B3x4DPHGuWnq84Jp3gLvyCARuyqtrZEOos="; + rev = "7f021426d4a615ea8f11cabed434b1f20376abae"; + hash = "sha256-r9b0dB2lzSUDWiPiclnjk7wOrLscTkd3UxFo0ZCBcek="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-spider/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13677,12 +13677,12 @@ final: prev: { nvim-tinygit = buildVimPlugin { pname = "nvim-tinygit"; - version = "1.0-unstable-2026-04-20"; + version = "1.0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-tinygit"; - rev = "f12990601dfa63c623049b470dc306ca905064c8"; - hash = "sha256-NNdwBJjVlCwR3VzN7JRMhRRNHENRO9SXNnUUr4zZ8Eg="; + rev = "7cc03bfd73863fc24e1a07e9465d3dba32336b74"; + hash = "sha256-2P8C0A2zPxlyGnex0yiKlpXUS1RpXHKZGuRDToieqXM="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-tinygit/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -13691,12 +13691,12 @@ final: prev: { nvim-tree-lua = buildVimPlugin { pname = "nvim-tree.lua"; - version = "1.17.0-unstable-2026-06-15"; + version = "1.17.0-unstable-2026-06-20"; src = fetchFromGitHub { owner = "nvim-tree"; repo = "nvim-tree.lua"; - rev = "fb343438d49fba8c35ecc4829d66fca7a1f0ed3d"; - hash = "sha256-JhLDjrRqY/vWN+R6suVvMZLkZQkLq5IpSFwPojkYYqg="; + rev = "8e8be709c9a93e1ebefde7964884a8b564bfd3e0"; + hash = "sha256-GAxve+xgXntwJ4B/WdNUiDwE3kgMRz8fKfOlJYp1Zg8="; }; meta.homepage = "https://github.com/nvim-tree/nvim-tree.lua/"; meta.license = unfree; @@ -13943,12 +13943,12 @@ final: prev: { nvim-various-textobjs = buildVimPlugin { pname = "nvim-various-textobjs"; - version = "0-unstable-2026-04-13"; + version = "0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "chrisgrieser"; repo = "nvim-various-textobjs"; - rev = "ad78e9d925c95d675b32dd7ba6d253f96ce063fe"; - hash = "sha256-FZKW7/9Y6MRxEbd00HBt9eGpJWbAP8GNM6p8M9s/3ts="; + rev = "fed132a88454e52c9691f4751090031944af4a7e"; + hash = "sha256-eYHMSng5gnnD6X71GlfUWbeX74z5CcXr35JLJZeiOCg="; }; meta.homepage = "https://github.com/chrisgrieser/nvim-various-textobjs/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -14111,12 +14111,12 @@ final: prev: { obsidian-nvim = buildVimPlugin { pname = "obsidian.nvim"; - version = "3.16.4"; + version = "3.16.5"; src = fetchFromGitHub { owner = "obsidian-nvim"; repo = "obsidian.nvim"; - tag = "v3.16.4"; - hash = "sha256-9Su5t8cJAHlXV+EE4GLa1+BhezfHZIZgl2P6kBrkX8E="; + tag = "v3.16.5"; + hash = "sha256-jSaAT7DCGsgzNJCd+ey3My2zqQ7kDcRm5ALDTOJKmJM="; }; meta.homepage = "https://github.com/obsidian-nvim/obsidian.nvim/"; meta.license = getLicenseFromSpdxId "Apache-2.0"; @@ -14419,12 +14419,12 @@ final: prev: { opencode-nvim = buildVimPlugin { pname = "opencode.nvim"; - version = "0.13.2"; + version = "0.13.3"; src = fetchFromGitHub { owner = "nickjvandyke"; repo = "opencode.nvim"; - tag = "v0.13.2"; - hash = "sha256-2+i0pA2Xn8OalHQ4yEnwLUnklT10r8rgE5qkc8k9754="; + tag = "v0.13.3"; + hash = "sha256-9pg1IRnDwQbPDSBZj9mLWW6jcQsIfubx+t3gb3I/JrU="; }; meta.homepage = "https://github.com/nickjvandyke/opencode.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -14588,12 +14588,12 @@ final: prev: { palenight-vim = buildVimPlugin { pname = "palenight.vim"; - version = "0-unstable-2023-04-27"; + version = "0-unstable-2026-06-20"; src = fetchFromGitHub { owner = "drewtempelmeyer"; repo = "palenight.vim"; - rev = "5552a6349bcd927df9f17db34f017b77b963e503"; - hash = "sha256-3zgTux85/9lttmIik+IVUJhXbwJCo4SRJDAD8g6tv1U="; + rev = "9e9b102c54b830b72f51917b6b86c3b3b02dcea2"; + hash = "sha256-WRe+PZdfbo0DyOwrtPCh1pi6NZoaTGx8uiEzN8mOmEw="; }; meta.homepage = "https://github.com/drewtempelmeyer/palenight.vim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -14868,12 +14868,12 @@ final: prev: { pi-nvim = buildVimPlugin { pname = "pi.nvim"; - version = "0-unstable-2026-05-18"; + version = "0-unstable-2026-06-21"; src = fetchFromGitHub { owner = "pablopunk"; repo = "pi.nvim"; - rev = "4ba6db0dd30406995a2e46e4f1ae39377e66e733"; - hash = "sha256-z1gN1TKQKrM8dMh8rQMaAtGgi4ELV21WgswJBVyXulE="; + rev = "4458f7cef8923ba396728e7218d66002fa07426e"; + hash = "sha256-uG3QFdpziSkesPdUx8rllI9hDg14NeZQtSU22CaGqhQ="; }; meta.homepage = "https://github.com/pablopunk/pi.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -15989,12 +15989,12 @@ final: prev: { searchbox-nvim = buildVimPlugin { pname = "searchbox.nvim"; - version = "0-unstable-2026-06-19"; + version = "0-unstable-2026-06-20"; src = fetchFromGitHub { owner = "VonHeikemen"; repo = "searchbox.nvim"; - rev = "c43e52a4ba50981e77334d676173e0e52dc99b28"; - hash = "sha256-Yygm/AsNrAlvwPb6SQKUdxVTNLVYDh7FJTitAfsYu7E="; + rev = "f86a9f7943ffa4dd5829ef0fc7c55fa2f95729ba"; + hash = "sha256-aLyflmkPj9aaqDeShyelD9NYwDl4V2MNY7W/KP47P7M="; }; meta.homepage = "https://github.com/VonHeikemen/searchbox.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -16200,12 +16200,12 @@ final: prev: { smart-splits-nvim = buildVimPlugin { pname = "smart-splits.nvim"; - version = "2.1.0-unstable-2026-06-19"; + version = "2.1.0-unstable-2026-06-26"; src = fetchFromGitHub { owner = "mrjones2014"; repo = "smart-splits.nvim"; - rev = "c02d70257e5d6065d4154acd596ec8054a725724"; - hash = "sha256-Pv1pVWOk7lKX3R71qFbR6Hk44CjdMdQ1vQPrYegSo5w="; + rev = "0e5bc00d2a32e6c782cd279cb96ab6c7ae49cd94"; + hash = "sha256-e3gTt/d6mpTNdQcsBUNN/B4WzDFp3Qj4//vTRaTgTB0="; }; meta.homepage = "https://github.com/mrjones2014/smart-splits.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -17899,12 +17899,12 @@ final: prev: { tinted-nvim = buildVimPlugin { pname = "tinted-nvim"; - version = "1.0.0-unstable-2026-06-18"; + version = "1.0.0-unstable-2026-06-27"; src = fetchFromGitHub { owner = "tinted-theming"; repo = "tinted-nvim"; - rev = "2ce11a2b73c61054ea47a9e5b8a6c537f517ab9f"; - hash = "sha256-fLOPbvsY2yvaCIshcLlq+6qMbnd0hXtZkUnXdQcp/Lg="; + rev = "f72f46057151de65ece4c280f67db84c63d64c76"; + hash = "sha256-U9SSaB68n/rDaeyQfRk0SnEwKW7MKG9gUaFG0ivt70A="; }; meta.homepage = "https://github.com/tinted-theming/tinted-nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -17913,12 +17913,12 @@ final: prev: { tinted-vim = buildVimPlugin { pname = "tinted-vim"; - version = "01-unstable-2026-06-18"; + version = "01-unstable-2026-06-21"; src = fetchFromGitHub { owner = "tinted-theming"; repo = "tinted-vim"; - rev = "e89c8ca390bbbb21f875b457b1f2e6d5d1950ca2"; - hash = "sha256-T4rXBjwhvYhoQvqdXbDQdojgf/Jf9sIo3WYP+hQtKQY="; + rev = "65a386074124f211536dc04f7427cbcbd80ee183"; + hash = "sha256-hRgKzVnFtpAsI4dxmOTdSdi02+VEvTydbdTU+HqyhzI="; }; meta.homepage = "https://github.com/tinted-theming/tinted-vim/"; meta.license = unfree; @@ -17927,12 +17927,12 @@ final: prev: { tiny-cmdline-nvim = buildVimPlugin { pname = "tiny-cmdline.nvim"; - version = "0-unstable-2026-05-31"; + version = "0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "rachartier"; repo = "tiny-cmdline.nvim"; - rev = "b1db8607a78f0c23b3bae08e079b1b7f147619d7"; - hash = "sha256-O2j7KGqlFGl1oHW/0yRmDDTGIHn4hnpShgHcX++KWz4="; + rev = "e247d9ee4c980734f8f8bf616d31e0ab7c27485d"; + hash = "sha256-DEfoqGFoGdybgZyO+Jqxz4gYkrgoek4cQYulLEsvnU8="; }; meta.homepage = "https://github.com/rachartier/tiny-cmdline.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -18209,12 +18209,12 @@ final: prev: { treewalker-nvim = buildVimPlugin { pname = "treewalker.nvim"; - version = "0-unstable-2026-06-04"; + version = "0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "aaronik"; repo = "treewalker.nvim"; - rev = "e1779657d41df2fdf8fd825712051f90e7c9c836"; - hash = "sha256-Byg5O1AndhqoBpv8VyGrGaiNsq4mGy57yoV3lFJDH2c="; + rev = "cfe3c69396233ddbbd6b581b00868985f78ffd9e"; + hash = "sha256-8ZkgoFcFym7gXnB/k9yY94wKEkgNSlUNROIsUxTqr1s="; }; meta.homepage = "https://github.com/aaronik/treewalker.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -18308,12 +18308,12 @@ final: prev: { ts-autotag-nvim = buildVimPlugin { pname = "ts-autotag.nvim"; - version = "0-unstable-2026-06-10"; + version = "0-unstable-2026-06-25"; src = fetchFromGitHub { owner = "tronikelis"; repo = "ts-autotag.nvim"; - rev = "b1d0dd4fe5e63e9a744595bdfd41b74c3dea2e88"; - hash = "sha256-lGDnNpG5kcKOI2AlVovuuTHx+AntKagw9c9e1Eg4T2M="; + rev = "6178353d9003e91eb053d69cf9a4d72e28137daa"; + hash = "sha256-JM6r91+3ehAk24kDt0O9iZhTPfXYt+zx5+86Ihh+fOU="; }; meta.homepage = "https://github.com/tronikelis/ts-autotag.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -18575,12 +18575,12 @@ final: prev: { unicode-vim = buildVimPlugin { pname = "unicode.vim"; - version = "21-unstable-2025-09-22"; + version = "21-unstable-2026-06-24"; src = fetchFromGitHub { owner = "chrisbra"; repo = "unicode.vim"; - rev = "902cd2b0a41a38528d080f8dd7a16ec5a865ebdd"; - hash = "sha256-Cv1ETqnqbVQgKrXTMDA1JgcqQSIzK6S7i9pZHDNI4BU="; + rev = "762993f8a8070c3126323a076510cf10de2ff3ce"; + hash = "sha256-Pc5tGq6DoiZUK98PbJrI7AKFjw6koGaPgiw2BbCb3cs="; }; meta.homepage = "https://github.com/chrisbra/unicode.vim/"; meta.license = unfree; @@ -19443,12 +19443,12 @@ final: prev: { vim-autoformat = buildVimPlugin { pname = "vim-autoformat"; - version = "0-unstable-2026-01-15"; + version = "0-unstable-2026-06-25"; src = fetchFromGitHub { owner = "vim-autoformat"; repo = "vim-autoformat"; - rev = "34c5309ab11d175c73d8ab7195a4d831b9f502c4"; - hash = "sha256-LQVXUmrNOvJr78ULU9/8SRtHec6p9iNUT1YBDuxFYVQ="; + rev = "38161c4e875cf198789f32e0f773039696a431f0"; + hash = "sha256-V1tun/l0bVgsT0jqdRF3Iqr5CtllQyX+gJY27aDf5xw="; }; meta.homepage = "https://github.com/vim-autoformat/vim-autoformat/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -20283,12 +20283,12 @@ final: prev: { vim-dirvish = buildVimPlugin { pname = "vim-dirvish"; - version = "1.0-unstable-2026-06-02"; + version = "1.0-unstable-2026-06-22"; src = fetchFromGitHub { owner = "justinmk"; repo = "vim-dirvish"; - rev = "ad478b4ac86484edc525bfc5379f261204dfbf4c"; - hash = "sha256-D76E8Wnl3x9RMUkpG7/izFLSTtuhp0/TMX/ZWP4TvD4="; + rev = "09c60f20ddc248fa2955c58b3183d44e1885f151"; + hash = "sha256-j/LFQjpXTuH13KbbrSGjZ8uv7FYqZpR7e9g5vgFGD7g="; }; meta.homepage = "https://github.com/justinmk/vim-dirvish/"; meta.license = unfree; @@ -21123,11 +21123,11 @@ final: prev: { vim-graphql = buildVimPlugin { pname = "vim-graphql"; - version = "1.6-unstable-2026-04-14"; + version = "1.6-unstable-2026-06-20"; src = fetchFromGitHub { owner = "jparise"; repo = "vim-graphql"; - rev = "640d32063cd2526e2395db1b67fcd733524099e2"; + rev = "d6c0991b70c0d6f4b3fa3283a2838d2ce47635d0"; hash = "sha256-hN+YE6PQnApdK5dKERJBVpKepicYIgsfY5mpZiiOcfE="; }; meta.homepage = "https://github.com/jparise/vim-graphql/"; @@ -22315,12 +22315,12 @@ final: prev: { vim-matchup = buildVimPlugin { pname = "vim-matchup"; - version = "0.8.0-unstable-2026-05-19"; + version = "0.8.0-unstable-2026-06-27"; src = fetchFromGitHub { owner = "andymass"; repo = "vim-matchup"; - rev = "a2d618496223386844acb5a6763cfc3cc1357af1"; - hash = "sha256-6v4kWrOxGvrtSkL7itcxXgOarKWmb0y++8mLnyc1XRI="; + rev = "055881643e1b37038a572c883de7b1969716db77"; + hash = "sha256-8PmYDrvUzUdg/ErnIGPdK8eZH7EvZezfpsjAjy/sAbw="; }; meta.homepage = "https://github.com/andymass/vim-matchup/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -25226,12 +25226,12 @@ final: prev: { vimtex = buildVimPlugin { pname = "vimtex"; - version = "2.17-unstable-2026-06-13"; + version = "2.17-unstable-2026-06-28"; src = fetchFromGitHub { owner = "lervag"; repo = "vimtex"; - rev = "fedb7ffc1bebf254cc74e7419c3a5930b6719065"; - hash = "sha256-h1GZnhQrm8c+e/vbecBwWbFj4QOX3TbagYp3Ea3tk/Q="; + rev = "5e6a06f5cec5ede3dc6ba045ef6eda13b6dccb1f"; + hash = "sha256-VFFsnjboIU/rvIDukClePaY2zsqgO+M1YkGTlq/Y5eU="; }; meta.homepage = "https://github.com/lervag/vimtex/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -25871,12 +25871,12 @@ final: prev: { yazi-nvim = buildVimPlugin { pname = "yazi.nvim"; - version = "13.1.7"; + version = "13.1.8"; src = fetchFromGitHub { owner = "mikavilpas"; repo = "yazi.nvim"; - tag = "v13.1.7"; - hash = "sha256-hPmdkCz/XTujUllBPfK7kjCrJA2rQQOBINczaGF3DKM="; + tag = "v13.1.8"; + hash = "sha256-fRKPfXAWAXlf9N5Z6DhYPCN8ygm3vRxvTp6HyYi4Uhw="; }; meta.homepage = "https://github.com/mikavilpas/yazi.nvim/"; meta.license = getLicenseFromSpdxId "MIT"; @@ -26052,12 +26052,12 @@ final: prev: { zk-nvim = buildVimPlugin { pname = "zk-nvim"; - version = "0.4.8"; + version = "0.4.9"; src = fetchFromGitHub { owner = "zk-org"; repo = "zk-nvim"; - tag = "v0.4.8"; - hash = "sha256-cq76bVNyoK1Oi0d61Wa3B3iFvLzboozZaZlWBTJik5U="; + tag = "v0.4.9"; + hash = "sha256-82MgzF6GCaOupMJ2+m6fHJmHUcTq5V/IdTFoIfXqx1I="; }; meta.homepage = "https://github.com/zk-org/zk-nvim/"; meta.license = getLicenseFromSpdxId "GPL-3.0-only"; @@ -26080,12 +26080,12 @@ final: prev: { zotcite = buildVimPlugin { pname = "zotcite"; - version = "0.7-unstable-2026-05-18"; + version = "0.7-unstable-2026-06-27"; src = fetchFromGitHub { owner = "jalvesaq"; repo = "zotcite"; - rev = "49e5fb6012077d2fe60681da3d8ff71e4c2a1c12"; - hash = "sha256-G/JnH9zF9m06Al8lzda6/P4K3S7iChaIzvZjKGLghAc="; + rev = "a58ac3cf19c2139b4a08d00c042746a81a884825"; + hash = "sha256-SyPg375RBK1uKJGBe+ckMoAA0ozG/LyvkXS4vuicXQk="; }; meta.homepage = "https://github.com/jalvesaq/zotcite/"; meta.license = getLicenseFromSpdxId "GPL-3.0-only"; diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 048136405dff..908c0606ca88 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -1551,6 +1551,18 @@ assertNoAdditions { ]; }; + fyler-nvim = super.fyler-nvim.overrideAttrs { + nvimSkipModules = [ + # Requires setup + "fyler.extensions.trash" + "fyler.finder" + "fyler.integrations.icon" + "fyler.integrations.window_picker" + "fyler.schemes.file" + "fyler.state" + ]; + }; + fzf-checkout-vim = super.fzf-checkout-vim.overrideAttrs { # The plugin has a makefile which tries to run tests in a docker container. # This prevents it. diff --git a/pkgs/by-name/au/autosuspend/package.nix b/pkgs/by-name/au/autosuspend/package.nix index fe75c939e0d2..3ba6de8a854c 100644 --- a/pkgs/by-name/au/autosuspend/package.nix +++ b/pkgs/by-name/au/autosuspend/package.nix @@ -51,10 +51,10 @@ python3.pkgs.buildPythonApplication (finalAttrs: { icalendar jsonpath-ng lxml - mpd2 psutil pygobject3 python-dateutil + python-mpd2 requests requests-file tzdata diff --git a/pkgs/by-name/be/beeper/package.nix b/pkgs/by-name/be/beeper/package.nix index 362e9db0fd59..043748aee6b2 100644 --- a/pkgs/by-name/be/beeper/package.nix +++ b/pkgs/by-name/be/beeper/package.nix @@ -10,10 +10,10 @@ }: let pname = "beeper"; - version = "4.2.936"; + version = "4.2.948"; src = fetchurl { url = "https://beeper-desktop.download.beeper.com/builds/Beeper-${version}-x86_64.AppImage"; - hash = "sha256-/9IHHE4qeygvPHFRz3EoejkQml6WdebdeUR0Y6afP5I="; + hash = "sha256-MvfQSCV8b5aOeOSlTnRlOupzg+wmHhG0hGWznwCx0Yc="; }; appimageContents = appimageTools.extract { inherit pname version src; diff --git a/pkgs/by-name/cl/cliairplay/package.nix b/pkgs/by-name/cl/cliairplay/package.nix index 389e973e6cb6..c357c16d8284 100644 --- a/pkgs/by-name/cl/cliairplay/package.nix +++ b/pkgs/by-name/cl/cliairplay/package.nix @@ -25,16 +25,16 @@ stdenv.mkDerivation { pname = "cliairplay"; # see the beginning of configure.ac for the upstream version number - version = "1.1-unstable-2026-03-16"; + version = "1.5-unstable-2026-05-03"; src = fetchFromGitHub { owner = "music-assistant"; repo = "cliairplay"; # we try to closely match the commit used in the last music-assistant release from # https://github.com/music-assistant/server/tree/stable/music_assistant/providers/airplay/bin - rev = "991c65acc2afa17ffe32e279dbc585b0b7f530f8"; + rev = "6aeceb49e4e37d044f09be9369b082fc26bcfa19"; fetchSubmodules = true; - hash = "sha256-m1O4l6gFEGNAyskYcRHcA15cubZnNgkaYjdVThRRX7w="; + hash = "sha256-Z2LzRhtQpuXPK6KibnxCqP0V6CulzkwNVHX1V7AFnDA="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/co/cook-cli/package.nix b/pkgs/by-name/co/cook-cli/package.nix index 45b16aa6fd80..b71119b5aee7 100644 --- a/pkgs/by-name/co/cook-cli/package.nix +++ b/pkgs/by-name/co/cook-cli/package.nix @@ -10,16 +10,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "cook-cli"; - version = "0.32.0"; + version = "0.32.1"; src = fetchFromGitHub { owner = "cooklang"; repo = "cookcli"; rev = "v${finalAttrs.version}"; - hash = "sha256-Lft44tBo8l+EhqEHuq6mKBVTjgpewd34SPtloVwkmGc="; + hash = "sha256-r6h7IHYvy3/3OS+6aueHj9ONXSYJ1K7gq7pcNTqN8wY="; }; - cargoHash = "sha256-pSvf3xW5UJWc6Z39w2FI5yoZS8KJpQj04LcTrNFrtGk="; + cargoHash = "sha256-agUqBXhLsjS1nVRwzuiUZomhcYdiXBLU1xX9xh8zN+c="; # Build without the self-updating feature buildNoDefaultFeatures = true; diff --git a/pkgs/by-name/gr/grafana-loki/package.nix b/pkgs/by-name/gr/grafana-loki/package.nix index c712c39e49eb..f8cb2576672d 100644 --- a/pkgs/by-name/gr/grafana-loki/package.nix +++ b/pkgs/by-name/gr/grafana-loki/package.nix @@ -9,14 +9,14 @@ }: buildGoModule (finalAttrs: { - version = "3.7.2"; + version = "3.7.3"; pname = "grafana-loki"; src = fetchFromGitHub { owner = "grafana"; repo = "loki"; rev = "v${finalAttrs.version}"; - hash = "sha256-2VM5/SMgjxHraP+7H+AmDor9g4r+xglhqd/cVL7mCgQ="; + hash = "sha256-2dqwnM2+9+P/ZIiz5Z9JPN9WicHLRzq9xn6jG1OBqLs="; }; vendorHash = null; diff --git a/pkgs/by-name/gr/graphlan/package.nix b/pkgs/by-name/gr/graphlan/package.nix new file mode 100644 index 000000000000..1a09c13a91ce --- /dev/null +++ b/pkgs/by-name/gr/graphlan/package.nix @@ -0,0 +1,44 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + nix-update-script, +}: + +python3Packages.buildPythonApplication { + pname = "graphlan"; + version = "0-unstable-2024-08-07"; + pyproject = true; + + src = fetchFromGitHub { + owner = "biobakery"; + repo = "graphlan"; + rev = "dc97f4feb0bb0bf3fa210e2699a86c5e476a647e"; + hash = "sha256-sBVlBu6RSs7dXQbxJrIQHWaDNliurY9UguzNeKj40gY="; + }; + + patchPhase = '' + sed -i 's|biopython==|biopython>=|' setup.py + ''; + + __structuredAttrs = true; + strictDeps = true; + build-system = with python3Packages; [ setuptools ]; + dependencies = with python3Packages; [ + biopython + matplotlib + scipy + ]; + + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + + meta = { + description = "Quality control tool for metagenomic and metatranscriptomic sequencing data"; + homepage = "https://github.com/biobakery/graphlan"; + changelog = "https://github.com/biobakery/graphlan/releases"; + license = lib.licenses.mit; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ pandapip1 ]; + mainProgram = "graphlan.py"; + }; +} diff --git a/pkgs/by-name/hi/high-tide/package.nix b/pkgs/by-name/hi/high-tide/package.nix index d0a6c34b1026..2d5230fb3a88 100644 --- a/pkgs/by-name/hi/high-tide/package.nix +++ b/pkgs/by-name/hi/high-tide/package.nix @@ -60,7 +60,7 @@ python313Packages.buildPythonApplication (finalAttrs: { pygobject3 tidalapi requests - mpd2 + python-mpd2 pypresence ]); diff --git a/pkgs/by-name/ko/koito/client.nix b/pkgs/by-name/ko/koito/client.nix new file mode 100644 index 000000000000..d696189f04a2 --- /dev/null +++ b/pkgs/by-name/ko/koito/client.nix @@ -0,0 +1,47 @@ +{ + src, + version, + stdenv, + yarn-berry_4, + nodejs, + gzip, +}: +let + yarn = yarn-berry_4; +in +stdenv.mkDerivation (finalAttrs: { + pname = "koito-frontend"; + inherit src version; + sourceRoot = "${finalAttrs.src.name}/client"; + + missingHashes = ./missing-hashes.json; + offlineCache = yarn.fetchYarnBerryDeps { + inherit (finalAttrs) src sourceRoot missingHashes; + hash = "sha256-VIlWld21GScJ/2UUkKQISM9jyU9wCVwwDNKkge+K044="; + }; + + nativeBuildInputs = [ + nodejs + yarn.yarnBerryConfigHook + yarn + gzip + ]; + + buildPhase = '' + runHook preBuild + export VITE_KOITO_VERSION=${version} + yarn run build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/client + cp -r build $out/client + + find $out/client/build -type f \( -name "*.js" -o -name "*.css" -o -name "*.html" -o -name "*.svg" \) -exec gzip -k -9 {} \; + + runHook postInstall + ''; +}) diff --git a/pkgs/by-name/ko/koito/missing-hashes.json b/pkgs/by-name/ko/koito/missing-hashes.json new file mode 100644 index 000000000000..482796c9c463 --- /dev/null +++ b/pkgs/by-name/ko/koito/missing-hashes.json @@ -0,0 +1,117 @@ +{ + "@esbuild/aix-ppc64@npm:0.27.7": "ff8c15b43770c8df995a7274efdb1df5553a3264bff0a42a66bc96a07fc0733a6825b4a339972d2d49fc9be9bec4ac2f4f3f072730fdedc879ce4f9cbf0b242d", + "@esbuild/aix-ppc64@npm:0.28.0": "bedc005d10511c3ee50a02edbb380d3134d34f038cb2638257cb9344aa399276e672c44f7e7eb395a96ccc843e0a5903eb0349f22be30af49ae338ed222d5662", + "@esbuild/android-arm64@npm:0.27.7": "c340fffda73dfcdf3513f900403d582cbcd8a5fc4cf7abd71aa0d4945391b4c0289e4389f51616cebaac63ec652457941e3e2eefe408230521227ae128c35c9f", + "@esbuild/android-arm64@npm:0.28.0": "76fa5b984e742b96e427749530e4e973b8da60950163c2dbd766c75ed4f616b7f06d08f01d5b6bd06b6a25cf59b27c3519a4ba343792003b5fcadf463b3d6575", + "@esbuild/android-arm@npm:0.27.7": "4abbbcb6b0f38d345b530148ebf883d3b1b7321a5c31f9c492bf645813e85afb8984c9d75295d779dbe602807b85995d9ff47ab8e8b22fa1bc67b1cbab9c45db", + "@esbuild/android-arm@npm:0.28.0": "b1e649f838c94ebac74e1c10561f010608f7226c0e444b4e178546cf6295bd46d691c52542bbe01598004e638bf9d75ed688b85b6ae31df55f2e2194482733ff", + "@esbuild/android-x64@npm:0.27.7": "719956b9b7eb922a2bf92cc3df93f7f476ae37ad2976bc2185c97b93d63bd1f17b031aec41e9d9a7c3d75c83d6df8daa68191bdfa0d02f4dc39b6fafa6999fd7", + "@esbuild/android-x64@npm:0.28.0": "9b611b9099d552e755d7b6b28dc39c26aad759ceb9379761a0bf2dfe6077c2437aea784152aefc711166b55c4159f03e6e2f39c1c71ffb923c5ef75c93f7282b", + "@esbuild/darwin-arm64@npm:0.27.7": "aefb157b95bb749ebf0cd70dd39d20c00825565a0fcc248b775b4cce6252adf694bf3e4894b25368652252139bfdc0d08b75d1139a78f197ee58ed8972cdb28d", + "@esbuild/darwin-arm64@npm:0.28.0": "09ecf7709c8d86f35624fa9d3475ccb3d1beb9704ddfd71b71adcefc23c3aa8ab95263542bbca52cb0d50f23cf831f468968978969184e1da00dc84cd8c61953", + "@esbuild/darwin-x64@npm:0.27.7": "898b6b02589dccb0a51655c57c407866bdb2ae5202dacce33e7d9b2f35dd117b3245f6393ffd6726373616147c3d12a462830f51da2a5cfd06e0f60cc252373e", + "@esbuild/darwin-x64@npm:0.28.0": "ba5ab146a8542f093bbe752fe85402894da18b304ae1f08eb455a864f124c61e1e03f8ad18c28eb2b9c1bd930c54dc773ad32b7ab4c7d7eb31f7be04451e74f4", + "@esbuild/freebsd-arm64@npm:0.27.7": "aaf8ebcd359f1228f5dd9d90ceca51eaa06d91570b27fa8be9da858ee124e37d45a5fed2aa4849320eb256215acf39b98623cf770ae87f0a0d50323d1acc7fbc", + "@esbuild/freebsd-arm64@npm:0.28.0": "8c05cebfefb0c9f481b52ce8b0290d0e5f6fda17939e27d60d6440c00312a5a10b82ca6e8ddbc19c9a1a2973282c9393958b8ace0512741d76429465d3bdb415", + "@esbuild/freebsd-x64@npm:0.27.7": "cc7fa741cebc7041643f1fbfe45d99ce870b8ea42e9a67f4d1cf2fddeb991623619d00865427b3d6aa63ae7618f10c5635c4d047859eaba8d5c7f317d7138d44", + "@esbuild/freebsd-x64@npm:0.28.0": "da4a620d46b73b610dccfa8c80d110175bb207e0a6bd1bfa96f98d427b3d14bbe54096ccdabaf10fb189a21f6555f7721737106d30ff12933c08ef1aee7adac0", + "@esbuild/linux-arm64@npm:0.27.7": "b1aea26033d1de82966141b350405e1205ea04fa24707084b50992bfc9d0fbf99e0ad83a31ecd8f8cbc01101f3d92f648ce2cc24273c1e8ced573726393f9c68", + "@esbuild/linux-arm64@npm:0.28.0": "589f88f21542ff9822fee3f6130051f19e19ec6714abc48d39795b201585c4f0e8dac42ec10a3e61521a4ad499abad5b3a8a8424d871ff5f464b86ba1bae8a65", + "@esbuild/linux-arm@npm:0.27.7": "0950f67b72af73de69483363f046d6a50fc85f6491adcfeadcb6014bdc8a1731e2575fc58d6c68d6834cd6be45e0b247a23f128162864e7686accda1ada3a9d6", + "@esbuild/linux-arm@npm:0.28.0": "429f4d7b938f2b72884f472bd9288c91899cacb4bf9c61df293dbe9e3c0368cc1700171cf86c3051df9e6ebdc8c1366db6a573995d327f156de63fd28a23e3a7", + "@esbuild/linux-ia32@npm:0.27.7": "6247a3b2658de166c69099208c72ba65d8ddc5ce1575f5e8fd05d4570f3a59bfbd6a5570cfbd890e19a24258edd1b7e91cebe75e2acf182c6087297f26bba29c", + "@esbuild/linux-ia32@npm:0.28.0": "45fcf60da75745f20ec6d98914de1dbb6bd97231a3d9fa1861a47ae43eb7db23780696530d17d68ee55693d189672b763cbdb9d0ad1ee5429ee9c7168a23dce8", + "@esbuild/linux-loong64@npm:0.27.7": "0d7f9b60a46e95d09889365b54ea0e2fd6e471e9ceeef27a0cc6b77616b1abe275456b50eae94bed3322dc6ee17fedebc3258dcc88a5522bd5318f6def0d0642", + "@esbuild/linux-loong64@npm:0.28.0": "d7a5710068e5909661f48c276d82c836b9b6131076e550c83d83e63db3f2538ecd3a3694dcbf8129bb773f7ca580b2fbef38ec15b9028d246cbc0e77a1a5946c", + "@esbuild/linux-mips64el@npm:0.27.7": "f3732fa442590b2219d2ec7de1d5086cd31682831dfc25516f2805326b4bd9f68a9fdbf3cce876ee764bf47765b85fdf22290b6a09f87a29c9d0c2d4af0a83c3", + "@esbuild/linux-mips64el@npm:0.28.0": "1aa72c485a56cf432748b8e0527e86a88deda0574e13d914dbe657dc2878ecc8b441783bd6c1582c0359b5a33d30216c0c94b3c9c17e5ca975fe6aa4b80aaa2c", + "@esbuild/linux-ppc64@npm:0.27.7": "df156f801042116c438c9259451e716533adec6b7d7af5c75cf27feec09ee4d941281049bf979dc0bb7a5b73b955d3974ecac4391a97600a4440a4a003b820e4", + "@esbuild/linux-ppc64@npm:0.28.0": "306bf03b0f6fd738bf74d9dfb23b8937227521b832fd901994600691b1f1fadb698a67a9990713b72ca1114715f82f0df35877281945e81b824ed437bf432742", + "@esbuild/linux-riscv64@npm:0.27.7": "76eccec1c7f047075353ef1f908998a0723f367a39aae39608f7978e5e231ea51ae25fd5258d16345567b94b77e28524cba45bc76afa5eda350adc5bda672142", + "@esbuild/linux-riscv64@npm:0.28.0": "c09c0f0ada23a3e55767586f3a341958c071d0b9adfe5460986e5e69f7397dfe2e37e2896a1c61092cececa929241d37f19b75ed608f5f00d535cd3b24c4ef1f", + "@esbuild/linux-s390x@npm:0.27.7": "788799f3e6e61efe6ec0a4a5e2d413dcfe57b27518d679a3d5f82265672fe53604a348658bc09b958cedaead008b63ef02e700469aed2a725e79361458901808", + "@esbuild/linux-s390x@npm:0.28.0": "40a939574f16362a5c9f1f82c20a8d82686efcf5f77e4b6c7e5c05bdcc596d8ce2ca188e6e7fa4772d4167bd18da630a3a3b3b70aa28308d3a9d1d48ff112feb", + "@esbuild/linux-x64@npm:0.27.7": "77c8cc00c2f647f5a04ca6640711c6e83214a8c619aeb3de52fee36c51709d5f44becaff095ffa2d1d40d53d1a792e80a1702193c155614350cc14de23a48e81", + "@esbuild/linux-x64@npm:0.28.0": "cde673ae0b9945bdc665c68b2df7ebe39d37bcd388c8e607ed4d369e7b6123ecdf3d1feb097ae13403d83c15952cb952d16f96146fa1a52405f09ec0e438d0f6", + "@esbuild/netbsd-arm64@npm:0.27.7": "cffa469f49165446e82f3031d6601e977131fcf619204370b3fad1b2a4a7dbf57d52e26e146cd1550c80af27470fb016d4b519fb74e3e6947a50391f84b87935", + "@esbuild/netbsd-arm64@npm:0.28.0": "c9738a8c3cfb817d9fbb46aa52fa532a0a74dc6d7d4e260e1eb8fd0acf729208932ce7f43e2c2dbf6cb1ca21f5db55f329936f81ae871953ff0e67e42d8eb362", + "@esbuild/netbsd-x64@npm:0.27.7": "123b51f84b61f13ae916c0d7b1fa057181ded0e510f762acca178fe7fb679041a30df4f740db381afe8919d41877630ccef0a16ded46248820da0af4b967c29d", + "@esbuild/netbsd-x64@npm:0.28.0": "c0be9ca72b5c18279e02e63a17a7fef428395f48fc1e0e251622c3cfe8a70b15cfb0bb814d355318917461a4e20d11723b837f6e4d1f1c0ce44e915ff80b3047", + "@esbuild/openbsd-arm64@npm:0.27.7": "cca5a166f47d125703451c4369bd337f08516e17aa69db17ff6822c229fcd9beb9bd29b2856c0f13d9d441178011e8c081879418f376c002f72c6aeab83576ed", + "@esbuild/openbsd-arm64@npm:0.28.0": "fda84f2526cb29d943047f68e725c688e4a89ebcbc224e19ddc3479509783cd254e581b19c8fad1a28e55e193512f37842252f36b06b3df2c005a0dbca0a0d84", + "@esbuild/openbsd-x64@npm:0.27.7": "d9c2ca562e27331124fcddb230f5b204adfadfd87b746d8369c1c3a72fc6f6e7375684cded7ffadab6f785228d80c4a4ff2c6f593f7ce354f6d57f5b4e43c3c3", + "@esbuild/openbsd-x64@npm:0.28.0": "7a67881986611c0b851c246c2ccdb445ecc5e587c70efae0165cd963d149ebfec3a7b6820338cf38dc70cee95fbd17e80dcb636c7f1de113c9a85dfe867a0d97", + "@esbuild/openharmony-arm64@npm:0.27.7": "6566b08b37e3faee6577ae43253f163ce5af22e872e30a93c08fc41e5b3525d742366b1049ba87de16c75c77abd6fce002b49b52a5a1898efb8be5eb18d8dcf3", + "@esbuild/openharmony-arm64@npm:0.28.0": "8cd175332efcedc6b69a980410426cbb7c76ed264f28cbf16cc807938e29f39c03353901179a88655377c39db1860d9df5c76294f2624a2db75b387334e9baa3", + "@esbuild/sunos-x64@npm:0.27.7": "589389cd4be3de5c24bb5820e4fd1f15f665b3be6b0ab6167f435776bb367e32209d6bf477bdba481195fbe515e1999c1e73adf321a8fb8400fe72052a4aef48", + "@esbuild/sunos-x64@npm:0.28.0": "99820c945c05651182afe4ec5a1bad80790775acefa403f25ad48ed9638efc573f3bf6fabdd273556854c609990a8a0c8fda7b140edabe3322d6a3ea77734d9c", + "@esbuild/win32-arm64@npm:0.27.7": "519a2c68186c2cd9f548d89f00f5aa3b5f2fa481fd03908d7b1c922de03bf20236d9fc21a3b4e83915d3611471843b41536c97d74273fb3369b2525767c278be", + "@esbuild/win32-arm64@npm:0.28.0": "84314f636841e4568e4960e4ee50e66c5d4d74fc274d256f3c903904186014bed197316c8bedb3c38f9855ca8ad9c4ecc1c6e64df4c40ea6cd5f4cb7739ab66c", + "@esbuild/win32-ia32@npm:0.27.7": "76470f36efe5290ac694e675a799a46a364aeba9a734cf10869769094b8b9022adc51fdea5869c45a8fdbfcb60ef8d787ae652c264468cdc0f4afb3869157b9c", + "@esbuild/win32-ia32@npm:0.28.0": "41296dae0b5e74ca689460cd510cb88df7b92d0c027130c373138e09847dd48eb685c2c825f36337a7bff7c6eceba2cb75b7f4f76d78e140504159a59e2feb89", + "@esbuild/win32-x64@npm:0.27.7": "b4df3d0c4024f0daf0891075822718dc31d35aeb91c18c4e8ee750be69f35ebd840d184006746dd88eca0e44574e438d5ab81c614605cc707fb79cf45cf76cba", + "@esbuild/win32-x64@npm:0.28.0": "f2d53b57cb338ddf0bbfb5eb64dc95bd0b686817eee8ab2307085c04f18e1d9d5b27e1b74f327cd46a8f246e3df9fc6ee9158ab9977255b7d4a511d438e411de", + "@rolldown/binding-android-arm64@npm:1.0.0-rc.18": "bd5c11810a9a4e450277fc59f6b5ce2d2bfe97e663714e922bfae65d12b2bed41f097f4cef1001bf8c3ed42e639cc1be9c6fa4708f01e472b7bf4f67c81a6b6e", + "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.18": "fb96ff29b508ad304fece44de5be3ece019093d097d48e3ced9977baa10d6e7601e0684774c46e7c82cba6204c10afe307626a77990f12bf693ba5dce27b81f4", + "@rolldown/binding-darwin-x64@npm:1.0.0-rc.18": "e6392296c0c7c10fcdf4bc91937d4de3c53522215059347d49259e14dcf31f6955f596a734aee7eb3e9c68e43af9ac9b7f0e806188fbbda8b1be9155ebc15880", + "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.18": "23ff9940c19013961c5fe3e6ae1534d4c9663aca7d7c7904e996001cd7ceb7abd7e5181a232cf8989d5b48bfa0c686c2e278f0f65b8d7a735783bdc4f5c6628f", + "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.18": "ce1d652b54747ceee65911b751d9a726da30c2fd45398898db2600c0353715ea952f9b4769b76fa271a1f70b2a7eee6e6d514af8edf31d037892ef42e725168e", + "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.18": "59d1457922e400cb74d4777a584505c9eeb72d9628282b418a1698c56498155736718b1fb4aaa063a12b74cc91ffb6e49bc37bab1f49118b2585bdd45a070b79", + "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.18": "f0a4a160a63c5511e32ec654f64617c341a283b121492991f07e3ec286cca94c64e5caa854f85119c0d66fbe2cf672440fbaed116d15a557235bc69a2d0f5464", + "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.18": "638edd82a2e751dcd450cd1ada7f28573bbf1e986129620284bd92e1a4e29cdb99c422f1b8c244672413cda916d74a3da39c92294b6b356aff0f79ac1abdafa7", + "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.18": "f2d685d32cfeaf4b6ded07c6f890bb431e8303de9916d053fc57fd23832747c5aa515971cd39f82643b1005abef813ab075eb04d34fd74553e6711525b23b1f7", + "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.18": "32680fe23669e9513dd9192420b8e2b9ca35a202942ac74aa399239902ae11d15c75cd9a9f73d2c2c484011cdb75adfb08ffb64075b4a4fd2e213e007955ae36", + "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.18": "936a6ba7cda7d1454b3d3917337bbabba9eaf6ee1b0b713d1ecd19799feaa108b4d2e33ca2b6683e930de7ab5c4201029293370a71790303a70a8add011acfc6", + "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.18": "99daa2b391ac36c63413a698413de0392a7e8316d4df9e8f3c652eead0173bfe289dcb351a9c47ab8143c7541c91b4321dbbdced18b606afe7800935bc147ae7", + "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.18": "4a92446817179ea1d9f98f80f5b19217f72015d94fe04875cbc9e4f9e88e5de42efdca7bd8d25706ee322ee7edbd1289a7390eb14bca905f3295dcc6fc5c9b5f", + "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.18": "446b6c6980839ca089b72ccd943cb5cac789197c969a963059c78b5b9bd8351cbf05cb489f7b46876c2e6bdfb28f48cb2bb7f6c124204dc4704e5c08347d27a9", + "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.18": "405c63338f7164b78666b45d4a8844f97594877677a14fe812f750296c15a3c22592050e5c8df5e67ef573146a2ea754ec9bbb90e6893ae90e75a2784a392525", + "@rollup/rollup-android-arm-eabi@npm:4.60.3": "17aa353e3527f39dda3c5165f5182e83b705cc98fd6e349b6f71a38f3e31084ddcc089bd92611049689ff782f8c303de1fcfc3ae3e469846c59fdb502de3150f", + "@rollup/rollup-android-arm64@npm:4.60.3": "043fbe640414cd4ee48a791835aab00759297b2ab5f810ba3d3aca3ca416a713c0d749cf2b5866ba95319f2aff7be0508eecdc0745abf5a1a8eabeef67591c56", + "@rollup/rollup-darwin-arm64@npm:4.60.3": "8869930149fa4a1c2b3a1fdfb782ba3f3b28efc523027a5275772ca7e804d88d3c4bed44d575a450d0ed84ab304f263720e09781fa2b390e17f4c5c0a1febf92", + "@rollup/rollup-darwin-x64@npm:4.60.3": "71089410f74facf224fd39c7d6a96fc3bb587afb5851b3094be5c7030eba600acc1c175613bd1a5c7be8c94217e94a3fb7f4d7b18643e4fabf483c68862881cd", + "@rollup/rollup-freebsd-arm64@npm:4.60.3": "4c36273bf2250bb3291042e16ce3fe77b0423cf65420546b546036f773259339896656d51aa09182387b9468c7c3c8b738ae632fed103d18d5910059009ac897", + "@rollup/rollup-freebsd-x64@npm:4.60.3": "b3d3b26fde4665c5512fc2d0233fdee2bc7d1bc891d80faf146bf799241d397b29d7859d2e3820cac35a49228adca25f7ccee305fae242414b6ba22fbe74e6d9", + "@rollup/rollup-linux-arm-gnueabihf@npm:4.60.3": "ddc1212e3b7143ed51700375644227ccfb42d619bd04b8cde6a844258105a7217a832efd15bd296dabf4ab6a7d958f91a76a56a918b72dfb978bc783d31b53e1", + "@rollup/rollup-linux-arm-musleabihf@npm:4.60.3": "2fc53ec264c1bc2fc6ef31b5254343961aa571795544481d64065f7070752d8aa2776c3d352ead112870382d9a74c0e6a421fe271d8efaeb7a5f4d3f879cd092", + "@rollup/rollup-linux-arm64-gnu@npm:4.60.3": "3fa392f7136ebe742ee24ff71513bda01a4f494f9c41b3185d7c19a621ab56ab7471250a287e7745475105a26e1a5b82c90626bab5095818cce544dae8fc1f0a", + "@rollup/rollup-linux-arm64-musl@npm:4.60.3": "82cb64d456d5a6c27cc1bb4c78233ca5692152b838ee97f22bf2319db9f6abdf7af6b12418c1eecfef173b03acf06b04d556854874ca7dbed6eb69a7219b7025", + "@rollup/rollup-linux-loong64-gnu@npm:4.60.3": "0e5ecd83672bc7df3a64c536ad37e7021138f1b729d09820307db49ddb2eef9f33387e0455ca62a28592deb264e28e7b3364a2b6d011016eb7b107dadcd4d00a", + "@rollup/rollup-linux-loong64-musl@npm:4.60.3": "ce424a66d497b376d8bc69ba8ff500cf7b8ab32432254f1921653a421bfdd58489354c626950cb14eed53e56f99fe896af98a3cf9f275861e60ee8bacef5de65", + "@rollup/rollup-linux-ppc64-gnu@npm:4.60.3": "b4cffd1305c1d2ad9b5af0488fb1809b20111b17e07a36081bd0fb8fd05cef917bbc49ee8392f89850f633f0a2fde2f8a959077c81577ef4b5466a0c06b87b7d", + "@rollup/rollup-linux-ppc64-musl@npm:4.60.3": "db107b5139caa39915df56dc4d0244cd4ed650cb74450b5cb04ddec6d15c9c7a2b5ef831ed3af731a471518ba6463e577ad38165abf349f31ea3959daf050572", + "@rollup/rollup-linux-riscv64-gnu@npm:4.60.3": "5abfd50e21ca6da0ef060ee2863e0c4e7d0629e2d9b5b0d1cf3c38659e5b475ceeb22c14bb05eb450fd6cc06df61293bd276f3a932b3aca16a72dea8486c6ef1", + "@rollup/rollup-linux-riscv64-musl@npm:4.60.3": "70e620271513fa67369eb1d3afbaaa520f624187febb34763cba5fc968468cd48e8b366710d34c3f8ca9ae10cc26476270cd017424148394c36e305da59cdba4", + "@rollup/rollup-linux-s390x-gnu@npm:4.60.3": "44b8787091403559b648dc4b416df3914d22bd2e71c3fed5418f2469bea45abb1b1d846c86d05ef9e98096eb5d15d7336a30c09ff83147af31d08a0a68028f97", + "@rollup/rollup-linux-x64-gnu@npm:4.60.3": "d3044ce18567e39467409a124bba0e5c0987e6a32afb32c4e216b40a841cf2ed88aa51782ee49381f2d4f5c38534ff4de455181ddc2438f770eb6e79d57ee4f4", + "@rollup/rollup-linux-x64-musl@npm:4.60.3": "5a2ea801bf4ecac23f2050e153b8ea242308f34f2a24f0e55e5cde9d88bffb9badb489b342b2892a077402273b2623aefc376c7b45ba6b0aface4fb784b32255", + "@rollup/rollup-openbsd-x64@npm:4.60.3": "281535d6ba7cae7292f6081cf983be2a574479f5f0523bba53250982421dffea8e54c5ad5915ae0c09a3df6de36eb181f815118e1cb64616ffae3ee7ebacb6cf", + "@rollup/rollup-openharmony-arm64@npm:4.60.3": "5b5ba8fbe2c12276b89c3ac53ee27c125bda4857a69872a0670c9e785b58ba2003135222ec8d7628e3b4eddc898cce58b941a4ee33fac6a24ea019af25e74079", + "@rollup/rollup-win32-arm64-msvc@npm:4.60.3": "5021cfd286de0d282fb553b6d0c5fe4e4810f02ea4131634db80c29dcf93203f3eee6995e2a7c2c3b2a7edc60ab95a108f1c1e2890a4d1d9cf985febc16257c3", + "@rollup/rollup-win32-ia32-msvc@npm:4.60.3": "1d5f9ff21955657c4045044ead2845c8cd3c7cbc72e8bc2353bef4d79302680a5000793fbc9b85502682292bd28f5c8d026245ea8d6bfe4f3574576cb32e64c2", + "@rollup/rollup-win32-x64-gnu@npm:4.60.3": "b2a9c131a563939feb4f1fa1301e2c9178212431b6b2e8558745bebb1ebed22ed5ab29443c492fc2c6cc67d97af86c73e37c232f35159045422114dd72211eaa", + "@rollup/rollup-win32-x64-msvc@npm:4.60.3": "a62845765830efae8b738cd01412d5a427bc9cc91db7c410a308f0a0d5c0d406f4a31260935836f57fecc23645b365e155a1d3e151fe3d1a98a49f3fc8a8df8d", + "@tailwindcss/oxide-android-arm64@npm:4.3.0": "4ff1b0c205a905253dd7e4287d22e3ee0ef2dcb2a1bc82482a64a81ec443e0f011ccd677db34913a953774e3fa016386269c29e7b33ccc25b355295d1639b24c", + "@tailwindcss/oxide-darwin-arm64@npm:4.3.0": "16899c458e60e7b81021d6cf8b367bd7b9b42e5b6a071f237c16cf8f5adacb0e7de8bb8ed531eb5d397c971e235b74be22be4873b8d35d95e2236d2eec583020", + "@tailwindcss/oxide-darwin-x64@npm:4.3.0": "273443e9b888ba1f2bb27ba81d7b3591356d9215b9bd3351aae3a252e34ae096a49c1e1e7a40e1edff01348233ecf3cff2f95f772155baa2bac94349f445af0a", + "@tailwindcss/oxide-freebsd-x64@npm:4.3.0": "19e9ac688462aebd2a20683eea3d651be9fd6b42f90104e2bdd76d3d91fa3a1fdbc84e68a62777cf4544a9de0dfb3689f6bab31e475d64b114c0573c8fa31769", + "@tailwindcss/oxide-linux-arm-gnueabihf@npm:4.3.0": "f4171517c70ca18c560746febe99ee580e0b647e6555e8052fc28ea29cc09e8aec9b2f4ba25d4a5477e86ffdcf445c4e40e97a82419f54a262988d3b41f4f457", + "@tailwindcss/oxide-linux-arm64-gnu@npm:4.3.0": "8d50a0392266022dd3cca25620941f7cb48398536c8839ad7b4fc3da5cb85140c54c001a431c436c7eb7c4b01576fb32a04299e3ab93f0f9f3036b799502fb27", + "@tailwindcss/oxide-linux-arm64-musl@npm:4.3.0": "6743633b11429b80404405dff5940c98f011ba0897480ab2c24cf8059258e2333463157874382f5610edfaf67970671b68396a3783fdf6bd04b9a4f83afb75ab", + "@tailwindcss/oxide-linux-x64-gnu@npm:4.3.0": "830fde5deff303d1dd9c57a2b00ab02b088bdcb62103b4dca47a520fe76c1d6a1cf29c02ab4fc2bf3a209f9f94b209a217ba3057a9d35f0077cee94b9fcf9bb7", + "@tailwindcss/oxide-linux-x64-musl@npm:4.3.0": "f360e5074810e7bbe906b35f5aed3b0d044318adba50081cbd60483552782b8c9e56502635cd36c3db23a0afed64131902da164b8a43d9a93918648dda7231b4", + "@tailwindcss/oxide-wasm32-wasi@npm:4.3.0": "ec47c4ec6fe61afc14da01b276e0431ff2d986b8fa71aa85a359105dfb79833deb0ad545872a6d6314995206ebf45f1be6b3b0fa01df045460cb9fc7ea74844b", + "@tailwindcss/oxide-win32-arm64-msvc@npm:4.3.0": "2d35fe2b97422ad33d0e1e7bbb61e65e2d9050a5a778cd8792ba1e4d0693015e3d85f964a34a73cd8ccf4ba8694b51b924bad79ccdc600b8a4b7da2bdb897787", + "@tailwindcss/oxide-win32-x64-msvc@npm:4.3.0": "154b40ea54aca2f479f4fe7ff29a20d3f4efaf962f34517d330f220abc8bb4867bc1e3b29fcf8b4b2a52b091b835f7392fb777dfc9024513329f9e54c2bac5bf", + "lightningcss-android-arm64@npm:1.32.0": "1cb326ad39dcb02cf9f45025c167b6900e3a04b08f5149d3c5ee26054b00d08db3736fb69183a6c3ed1cb32dddd148608c784b6631b4777623f7dd0c032c392d", + "lightningcss-darwin-arm64@npm:1.32.0": "da954d0c215d0e95f15a92c8717f871017586e1332b98fd40e96196571d2fd3d51a727dc530768afee9f6a04da210510740574dd0c8dbf2ecced79e5996f1a06", + "lightningcss-darwin-x64@npm:1.32.0": "b1d298c9173f839e8447d1917ed8bc5ab098ed0fc4e4b419d36ac5afe8b27bf21cb47d00a35c3d2edadcac598086e9b4f26c992a809d79f9681d6865a230d79e", + "lightningcss-freebsd-x64@npm:1.32.0": "0eb59f6acf2fcdc944c921b0ac2a16ee803452b9438f573ad6bc41be00040b791ed698698ed5c06f98ef43a6fed0a54987ba3a88da204de9978db2fca96a4a65", + "lightningcss-linux-arm-gnueabihf@npm:1.32.0": "7d1ea43986d2370a90cefc920dac3e041e0d19445cc4fdaf244644b57b6937588d7c3a464c31440617231f55a6dad79744cf707912e05f3b46a1694abb5b4e00", + "lightningcss-linux-arm64-gnu@npm:1.32.0": "f01ede75f41480a164d18338fa46d9fccdb4a821717174ce848ff8b2aa4badba4f1d331deb3ebec3ee2f0eb95bfa2e35f54877f371427b04e6f36a4783aa1414", + "lightningcss-linux-arm64-musl@npm:1.32.0": "38d373f99768f1c5ab6a9c87e1c0ec45eccdb3fe4d216dd5cd06629648c4b0689570ad4e89285d490662cde1790cd36e6b3d176c14e5e31f6869c604aa2df820", + "lightningcss-linux-x64-gnu@npm:1.32.0": "0a1433d46a4a010f87b615c3fa43725a456bae259858a2c927899cbf93074f0ae40f49901bf6af6daa30a4d169c86f594f6341fd775bf7b59293b8d7947b81c5", + "lightningcss-linux-x64-musl@npm:1.32.0": "a6f48ccc30a73d30563c7b61856d1fd6a8812ce62b1bee797f227e06612df70aab4ccd1908552952f77ca7ff2a51019f62d14ae5310ca67311635eeec55d3a9e", + "lightningcss-win32-arm64-msvc@npm:1.32.0": "a919be7fb298c1102bccf18b6f83d54946adfac70ab2ac9c95e4ae38ded76d8f530215b0bcda4d38df4ffc40a70abe3afd91d01d35fd122e7d119ed0e46972d0", + "lightningcss-win32-x64-msvc@npm:1.32.0": "5b8d3431aadbdc40a0a7eae32f2415e4f28b547af1a1cd5b35a35d67f772a89492c7fa03e9fc88ce804b14f5f88e412e49fff40d1b0aad67177de815c434207e" +} diff --git a/pkgs/by-name/ko/koito/package.nix b/pkgs/by-name/ko/koito/package.nix new file mode 100644 index 000000000000..1b088365b8f8 --- /dev/null +++ b/pkgs/by-name/ko/koito/package.nix @@ -0,0 +1,66 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + callPackage, + pkg-config, + vips, + makeWrapper, + nixosTests, +}: +buildGoModule (finalAttrs: { + pname = "koito"; + version = "0.3.2"; + src = fetchFromGitHub { + owner = "gabehf"; + repo = "koito"; + rev = "v${finalAttrs.version}"; + hash = "sha256-68+Z4Alzu+4v/PxU1IOboqZkF1pO+y6gswuO+HPS7dk="; + }; + __structuredAttrs = true; + + vendorHash = "sha256-W/+ByBlEPd4yIUD/E28q93fz6wYgvhwyBvJL8Fm1lNY="; + + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + + buildInputs = [ vips ]; + + ldflags = [ + "-s" + "-w" + "-X main.Version=${finalAttrs.version}" + ]; + + postInstall = '' + mv $out/bin/api $out/bin/.koito-wrapped + + mkdir -p $out/share + cp -r --no-preserve=mode ${finalAttrs.passthru.client}/client $out/share/client + + makeWrapper $out/bin/.koito-wrapped $out/bin/koito \ + --run "cd $out/share" + ''; + + passthru = { + client = callPackage ./client.nix { + inherit (finalAttrs) src version; + }; + + tests = { + inherit (nixosTests) koito; + }; + + updateScript = ./update.sh; + }; + + meta = { + description = "Modern, themeable scrobbler that you can use with any program that scrobbles to a custom ListenBrainz URL"; + homepage = "https://koito.io"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ iv-nn ]; + mainProgram = "koito"; + }; +}) diff --git a/pkgs/by-name/ko/koito/update.sh b/pkgs/by-name/ko/koito/update.sh new file mode 100755 index 000000000000..526510085521 --- /dev/null +++ b/pkgs/by-name/ko/koito/update.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl gnused jq nix coreutils nix-update yarn-berry_4.yarn-berry-fetcher + +set -euo pipefail + +owner="gabehf" +repo="koito" +package_dir="$(realpath "$(dirname "$0")")" + +latest_tag=$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} -sL "https://api.github.com/repos/${owner}/${repo}/releases/latest" | jq -r .tag_name) +latest_version="${latest_tag#v}" + +if [[ "${UPDATE_NIX_OLD_VERSION}" == "${latest_version}" ]]; then + echo "koito is up to date: ${UPDATE_NIX_OLD_VERSION}" + exit 0 +fi + +echo "Updating koito from ${UPDATE_NIX_OLD_VERSION} to ${latest_version}…" + +nix-update koito --version "${latest_version}" + +src_path=$(nix-build --no-out-link -A koito.src) + +echo "Regenerating missing-hashes.json…" +yarn-berry-fetcher missing-hashes "${src_path}/client/yarn.lock" >"${package_dir}/missing-hashes.json" + +echo "Updating offline cache hash…" +offline_cache_hash=$(yarn-berry-fetcher prefetch "${src_path}/client/yarn.lock" "${package_dir}/missing-hashes.json") +old_hash=$(nix-instantiate --eval --expr "with import ./. {}; koito.client.offlineCache.outputHash" --raw) +sed -i "s|${old_hash}|${offline_cache_hash}|" "${package_dir}/client.nix" + +echo "Done." diff --git a/pkgs/by-name/li/libnfs/package.nix b/pkgs/by-name/li/libnfs/package.nix index ef8e36e810a9..60c527970028 100644 --- a/pkgs/by-name/li/libnfs/package.nix +++ b/pkgs/by-name/li/libnfs/package.nix @@ -2,24 +2,24 @@ lib, stdenv, fetchFromGitHub, - autoreconfHook, + cmake, }: stdenv.mkDerivation (finalAttrs: { pname = "libnfs"; - version = "5.0.3"; + version = "6.0.2"; src = fetchFromGitHub { owner = "sahlberg"; repo = "libnfs"; tag = "libnfs-${finalAttrs.version}"; - hash = "sha256-OFzoDCDBo+O7PtUKcyKnUJJ9TrALrkvk5Yo0zn08Q6w="; + hash = "sha256-uD7PtW2rcpGVzqD6U0DXK1gUaCKlKh+p+i6CW6jLGdw="; }; - nativeBuildInputs = [ autoreconfHook ]; + nativeBuildInputs = [ cmake ]; - configureFlags = [ - "--enable-pthread" + cmakeFlags = [ + "-DENABLE_MULTITHREADING=ON" ]; enableParallelBuilding = true; diff --git a/pkgs/by-name/lo/locker/package.nix b/pkgs/by-name/lo/locker/package.nix new file mode 100644 index 000000000000..1d5f474146b6 --- /dev/null +++ b/pkgs/by-name/lo/locker/package.nix @@ -0,0 +1,31 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "locker"; + version = "4.0.1"; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "tgirlcloud"; + repo = "locker"; + tag = "v${finalAttrs.version}"; + hash = "sha256-rVW2OcRG2h5G46UdRLYeZ5A0Gmca2fj5rRbZzMeDqqc="; + }; + + cargoHash = "sha256-gfhOOgZ8wkqbcghcCGCBMtImLfZazR2Dg/FgnjbofAg="; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "A linter for your flake.lock file"; + homepage = "https://github.com/tgirlcloud/locker"; + license = lib.licenses.eupl12; + maintainers = with lib.maintainers; [ isabelroses ]; + mainProgram = "locker"; + }; +}) diff --git a/pkgs/by-name/ly/lyx/package.nix b/pkgs/by-name/ly/lyx/package.nix index a766d92207a1..a76a7b6d0966 100644 --- a/pkgs/by-name/ly/lyx/package.nix +++ b/pkgs/by-name/ly/lyx/package.nix @@ -12,12 +12,12 @@ }: stdenv.mkDerivation rec { - version = "2.4.4"; + version = "2.5.1"; pname = "lyx"; src = fetchurl { - url = "ftp://ftp.lyx.org/pub/lyx/stable/2.4.x/${pname}-${version}.tar.xz"; - hash = "sha256-/6zTdIDzIPPz+PMERf5AiX6d9EyU7oe6BBPjZAhvS5A="; + url = "ftp://ftp.lyx.org/pub/lyx/stable/2.5.x/lyx-${version}.tar.xz"; + hash = "sha256-8qI4e8s/L1RsH8E+THTLT4qmSHBs5XiO9wXdUTRNLP0="; }; # LaTeX is used from $PATH, as people often want to have it with extra pkgs @@ -53,6 +53,7 @@ stdenv.mkDerivation rec { qtWrapperArgs = [ " --prefix PATH : ${python3}/bin" ]; meta = { + changelog = "https://www.lyx.org/announce/${lib.replaceString "." "_" version}.txt"; description = "WYSIWYM frontend for LaTeX, DocBook"; homepage = "https://www.lyx.org"; license = lib.licenses.gpl2Plus; diff --git a/pkgs/by-name/ma/mangowc/package.nix b/pkgs/by-name/ma/mango/package.nix similarity index 95% rename from pkgs/by-name/ma/mangowc/package.nix rename to pkgs/by-name/ma/mango/package.nix index b691f96d8ed0..775bf111216a 100644 --- a/pkgs/by-name/ma/mangowc/package.nix +++ b/pkgs/by-name/ma/mango/package.nix @@ -23,7 +23,9 @@ libGL, }: stdenv.mkDerivation (finalAttrs: { - pname = "mangowc"; + __structuredAttrs = true; + strictDeps = true; + pname = "mango"; version = "0.14.4"; src = fetchFromGitHub { diff --git a/pkgs/by-name/mi/miniplayer/package.nix b/pkgs/by-name/mi/miniplayer/package.nix index 4d374d5187b7..bccb55faaa34 100644 --- a/pkgs/by-name/mi/miniplayer/package.nix +++ b/pkgs/by-name/mi/miniplayer/package.nix @@ -23,7 +23,7 @@ buildPythonApplication (finalAttrs: { dependencies = [ colorthief ffmpeg-python - mpd2 + python-mpd2 pillow pixcat requests diff --git a/pkgs/by-name/mp/mpdris2/package.nix b/pkgs/by-name/mp/mpdris2/package.nix index bb1f9cca323c..8cccd6c2fba1 100644 --- a/pkgs/by-name/mp/mpdris2/package.nix +++ b/pkgs/by-name/mp/mpdris2/package.nix @@ -42,7 +42,7 @@ python3Packages.buildPythonApplication (finalAttrs: { dependencies = with python3Packages; [ dbus-python - mpd2 + python-mpd2 mutagen pygobject3 ]; diff --git a/pkgs/by-name/mp/mpv/scripts/manga-reader.nix b/pkgs/by-name/mp/mpv/scripts/manga-reader.nix index 7a892438aed6..2b820ee39b35 100644 --- a/pkgs/by-name/mp/mpv/scripts/manga-reader.nix +++ b/pkgs/by-name/mp/mpv/scripts/manga-reader.nix @@ -8,12 +8,12 @@ buildLua { pname = "manga-reader"; - version = "0-unstable-2026-03-03"; + version = "0-unstable-2026-06-23"; src = fetchFromGitHub { owner = "Dudemanguy"; repo = "mpv-manga-reader"; - rev = "2e8c21a82eb5fbe0b6feb64375e396d27bd8d5fa"; - hash = "sha256-Q6ekBvGsHSiZtO9QYnv5zAoAdkqrcFvmSJQsjVTuwSg="; + rev = "0551b033ac22b97298d94e480216748f68786b9f"; + hash = "sha256-TmRWBKgTlgOszOI1CLHveGMNH23UHSvbijz8wC4M/mM="; }; passthru.updateScript = unstableGitUpdater { }; diff --git a/pkgs/by-name/mu/music-assistant/disable-default-provider.diff b/pkgs/by-name/mu/music-assistant/disable-default-provider.diff new file mode 100644 index 000000000000..a86aa4175cb7 --- /dev/null +++ b/pkgs/by-name/mu/music-assistant/disable-default-provider.diff @@ -0,0 +1,12 @@ +diff --git a/music_assistant/mass.py b/music_assistant/mass.py +index 752f9e0af..9d7b3a521 100644 +--- a/music_assistant/mass.py ++++ b/music_assistant/mass.py +@@ -923,6 +923,7 @@ async def _load_providers(self) -> None: + changes_made = False + newly_created_defaults: set[str] = set() + for default_provider, require_mdns in DEFAULT_PROVIDERS: ++ continue + if default_provider in default_providers_setup: + # already processed/setup before, skip + continue diff --git a/pkgs/by-name/mu/music-assistant/dont-install-deps.patch b/pkgs/by-name/mu/music-assistant/dont-install-deps.patch index d074e18fa67c..0df4cf58b369 100644 --- a/pkgs/by-name/mu/music-assistant/dont-install-deps.patch +++ b/pkgs/by-name/mu/music-assistant/dont-install-deps.patch @@ -43,7 +43,7 @@ index 0ac8a70f..5d74e25b 100644 """Set up the YTMusic provider.""" logging.getLogger("yt_dlp").setLevel(self.logger.level + 10) - await self._install_packages() - self._cookie = self.config.get_value(CONF_COOKIE) + self._cookie = str(self.config.get_value(CONF_COOKIE)) self._po_token_server_url = ( self.config.get_value(CONF_PO_TOKEN_SERVER_URL) or DEFAULT_PO_TOKEN_SERVER_URL @@ -1103,8 +1102,6 @@ async def _install_packages(self) -> None: diff --git a/pkgs/by-name/mu/music-assistant/frontend.nix b/pkgs/by-name/mu/music-assistant/frontend.nix index ab091182c71e..e6cf66afac4d 100644 --- a/pkgs/by-name/mu/music-assistant/frontend.nix +++ b/pkgs/by-name/mu/music-assistant/frontend.nix @@ -8,13 +8,13 @@ buildPythonPackage rec { pname = "music-assistant-frontend"; - version = "2.17.146"; + version = "2.17.186"; pyproject = true; src = fetchPypi { pname = "music_assistant_frontend"; inherit version; - hash = "sha256-VU2SXL6SLFiKntmJJtCabBOYOeImYFPHYxvMPmnhmEc="; + hash = "sha256-dNGzXDRZuQLRkMY0erjJZE4h26yFP4Fdn9a3K6T0RvM="; }; build-system = [ setuptools ]; diff --git a/pkgs/by-name/mu/music-assistant/package.nix b/pkgs/by-name/mu/music-assistant/package.nix index 1adda47f84a0..c66e51117c4d 100644 --- a/pkgs/by-name/mu/music-assistant/package.nix +++ b/pkgs/by-name/mu/music-assistant/package.nix @@ -6,6 +6,7 @@ ffmpeg_7-headless, nixosTests, replaceVars, + writableTmpDirAsHomeHook, providers ? [ ], }: @@ -15,16 +16,17 @@ let music-assistant-frontend = prev.callPackage ./frontend.nix { }; music-assistant-models = final.music-assistant-models.overridePythonAttrs (oldAttrs: { - version = "1.1.115"; + version = "1.1.129"; src = oldAttrs.src.override { - hash = "sha256-oEXL0B8JNH4PcltpES375ov7QGs+gtYKlMGr1B7BlKY="; + hash = "sha256-6gVHlFTt/bsj4nUGPS6HDUQ7zczpfos75U6l4Yk9W6k="; }; }); } ); - providerPackages = (import ./providers.nix).providers; + providersMeta = import ./providers.nix; + providerPackages = providersMeta.providers; providerNames = lib.attrNames providerPackages; providerDependencies = lib.concatMap ( provider: (providerPackages.${provider} pythonPackages) @@ -38,14 +40,14 @@ assert pythonPackages.buildPythonApplication rec { pname = "music-assistant"; - version = "2.8.7"; + version = "2.9.4"; pyproject = true; src = fetchFromGitHub { owner = "music-assistant"; repo = "server"; tag = version; - hash = "sha256-m91q/8XYoZ5Azu79fKD0euRCuf29w3vj5cxdFheDsmI="; + hash = "sha256-PiSBghhlxknijRqghkO8wn1CB2XqaJrjrvGNvZUlNbo="; }; patches = [ @@ -78,9 +80,18 @@ pythonPackages.buildPythonApplication rec { # ^^^^^^^^^^^^^^^ # E IndexError: tuple index out of range ./fix-webserver-tests-in-sandbox.patch + + # As providers must be configured through the nixos module, there is no gain + # if Music Assistant tries to enable some of them without the proper dependencies. + ./disable-default-provider.diff ]; postPatch = '' + # Undo Python 3.14 only syntax + substituteInPlace music_assistant/controllers/streams/controller.py \ + --replace-fail "except BrokenPipeError, ConnectionResetError, ConnectionError:" "except (BrokenPipeError, ConnectionResetError, ConnectionError):" \ + --replace-fail "except BrokenPipeError, ConnectionResetError:" "except (BrokenPipeError, ConnectionResetError):" + substituteInPlace pyproject.toml \ --replace-fail "0.0.0" "${version}" \ --replace-fail "==" ">=" @@ -109,6 +120,7 @@ pythonPackages.buildPythonApplication rec { "mashumaro" "orjson" "xmltodict" + "zeroconf" ]; pythonRemoveDeps = [ @@ -139,6 +151,7 @@ pythonPackages.buildPythonApplication rec { ifaddr librosa mashumaro + modern-colorthief music-assistant-frontend music-assistant-models mutagen @@ -150,6 +163,8 @@ pythonPackages.buildPythonApplication rec { pyjwt python-slugify shortuuid + torch + torchaudio unidecode xmltodict zeroconf @@ -174,18 +189,36 @@ pythonPackages.buildPythonApplication rec { with pythonPackages; [ pytestCheckHook + writableTmpDirAsHomeHook ] ++ lib.concatAttrValues optional-dependencies - ++ (lib.concatMap (provider: providerPackages.${provider} python.pkgs) [ + ++ (lib.concatMap (provider: providerPackages.${provider} pythonPackages) [ + "acoustid_lookup" "audible" "dlna" + "fastmcp_server" "jellyfin" + "mpd" + "msx_bridge" "opensubsonic" "sendspin" + "smart_fades" "snapcast" + "sonic_analysis" + "sonic_similarity" "tidal" + "wiim" + "ytmusic" ]); + preCheck = '' + export NUMBA_CACHE_DIR=$(mktemp -d) + + # required for smart_fades tests + mkdir -p $HOME/.cache/torch/hub/checkpoints/ + cp ${pythonPackages.beat-this.passthru.small0Ckpt} $HOME/.cache/torch/hub/checkpoints/beat_this-small0.ckpt + ''; + disabledTestPaths = [ # no multicast support in build sandbox: # "OSError: [Errno 19] No such device" @@ -193,9 +226,12 @@ pythonPackages.buildPythonApplication rec { # provider is missing dependencies "tests/providers/apple_music" "tests/providers/bandcamp" + "tests/providers/hue_entertainment" "tests/providers/kion_music" "tests/providers/nicovideo" + "tests/providers/qqmusic" "tests/providers/yandex_music" + "tests/providers/yandex_ynison" "tests/providers/zvuk_music" # mocking music_assistant.providers.airplay.pairing.AirPlayPairing does not work "tests/providers/airplay/test_player.py::test_start_pairing__pin_decision" @@ -210,6 +246,7 @@ pythonPackages.buildPythonApplication rec { providerPackages providerNames ; + providersBuiltins = providersMeta.builtins; tests = nixosTests.music-assistant; }; diff --git a/pkgs/by-name/mu/music-assistant/providers.nix b/pkgs/by-name/mu/music-assistant/providers.nix index 4acb6678c682..8c75a4f5c2c2 100644 --- a/pkgs/by-name/mu/music-assistant/providers.nix +++ b/pkgs/by-name/mu/music-assistant/providers.nix @@ -1,8 +1,27 @@ # Do not edit manually, run ./update-providers.py { - version = "2.8.7"; + version = "2.9.4"; + builtins = [ + "builtin" + "coverartarchive" + "fanarttv" + "itunes_artwork" + "local_audio" + "loudness_analysis" + "lrclib" + "musicbrainz" + "sendspin" + "sync_group" + "theaudiodb" + "universal_player" + "wikipedia" + ]; providers = { + acoustid_lookup = + ps: with ps; [ + pyacoustid + ]; airplay = ps: with ps; [ srptools @@ -65,6 +84,10 @@ ]; fanarttv = ps: [ ]; + fastmcp_server = + ps: with ps; [ + fastmcp + ]; filesystem_local = ps: [ ]; filesystem_nfs = ps: [ @@ -89,10 +112,14 @@ ps: with ps; [ pyheos ]; + hue_entertainment = ps: [ + ]; # missing hue-entertainment ibroadcast = ps: [ ]; # missing ibroadcastaio internet_archive = ps: [ ]; + itunes_artwork = ps: [ + ]; itunes_podcasts = ps: [ ]; jellyfin = @@ -101,6 +128,8 @@ ]; kion_music = ps: [ ]; # missing yandex-music + lastfm_recommendations = ps: [ + ]; lastfm_scrobble = ps: with ps; [ pylast @@ -109,16 +138,40 @@ ps: with ps; [ liblistenbrainz ]; + local_audio = + ps: with ps; [ + sounddevice + ]; + loudness_analysis = ps: [ + ]; lrclib = ps: [ ]; + motherearthradio = ps: [ + ]; + mpd = + ps: with ps; [ + python-mpd2 + ]; + msx_bridge = + ps: with ps; [ + pydantic + ]; musicbrainz = ps: [ ]; musiccast = ps: with ps; [ aiomusiccast ]; - nicovideo = ps: [ - ]; # missing niconico.py-ma + musicme = ps: [ + ]; + neteasecloudmusic = ps: [ + ]; + nicovideo = + ps: with ps; [ + pydantic + ]; # missing niconico.py-ma + nts = ps: [ + ]; nugs = ps: [ ]; opensubsonic = @@ -147,6 +200,8 @@ ]; qobuz = ps: [ ]; + qqmusic = ps: [ + ]; # missing qqmusic-api-python radiobrowser = ps: with ps; [ radios @@ -158,13 +213,26 @@ async-upnp-client rokuecp ]; + samsung_wam = ps: [ + ]; # missing pywam sendspin = - ps: with ps; [ + ps: + with ps; + [ aiosendspin av - ]; + ] + ++ aiosendspin.optional-dependencies.server; siriusxm = ps: [ ]; # missing sxm + smart_fades = + ps: with ps; [ + beat-this + nnaudio + threadpoolctl + ]; + smart_playlist = ps: [ + ]; snapcast = ps: with ps; [ bidict @@ -173,6 +241,20 @@ ]; somafm = ps: [ ]; + sonic_analysis = + ps: with ps; [ + huggingface-hub + pyyaml + threadpoolctl + torchlibrosa + transformers + ]; + sonic_similarity = + ps: with ps; [ + huggingface-hub + transformers + usearch + ]; sonos = ps: with ps; [ aiosonos @@ -220,8 +302,20 @@ ps: with ps; [ aiovban ]; + webdav = ps: [ + ]; + wiim = + ps: with ps; [ + wiim + ]; + wikipedia = ps: [ + ]; yandex_music = ps: [ - ]; # missing yandex-music + ]; # missing yandex-music, ya-passport-auth + yandex_smarthome = ps: [ + ]; # missing ya-passport-auth + yandex_ynison = ps: [ + ]; # missing ya-passport-auth yousee = ps: [ ]; ytmusic = @@ -232,6 +326,7 @@ ytmusicapi ]; # missing deno zvuk_music = ps: [ - ]; # missing zvuk-music + ]; + # missing zvuk-music }; } diff --git a/pkgs/by-name/mu/music-assistant/update-providers.py b/pkgs/by-name/mu/music-assistant/update-providers.py index c464fc1cd5b1..b9273f4280b7 100755 --- a/pkgs/by-name/mu/music-assistant/update-providers.py +++ b/pkgs/by-name/mu/music-assistant/update-providers.py @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -I nixpkgs=./. -i python3 -p "music-assistant.python.withPackages (ps: music-assistant.dependencies ++ (with ps; [ jinja2 packaging ]))" -p nixfmt pyright ruff isort +#!nix-shell -I nixpkgs=./. -i python3 -p "music-assistant.pythonPackages.python.withPackages (ps: music-assistant.dependencies ++ (with ps; [ jinja2 packaging ]))" -p nixfmt pyright ruff isort import asyncio import json import os.path @@ -24,13 +24,22 @@ TEMPLATE = """# Do not edit manually, run ./update-providers.py { version = "{{ version }}"; + builtins = [ +{%- for builtin in builtins | sort %} + "{{ builtin }}" +{%- endfor %} + ]; providers = { {%- for provider in providers | sort(attribute='domain') %} {{ provider.domain }} = {% if provider.available %}ps: with ps;{% else %}ps:{% endif %} [ {%- for requirement in provider.available | sort %} - {{ requirement }} + {{ requirement }} {%- endfor %} - ];{% if provider.missing %} # missing {{ ", ".join(provider.missing) }}{% endif %} + ] +{%- for requirement in provider.extra_list_deps | sort %} + ++ {{ requirement }} +{%- endfor %} +;{% if provider.missing %} # missing {{ ", ".join(provider.missing) }}{% endif %} {%- endfor %} }; } @@ -50,13 +59,16 @@ ROOT: Final = ( .strip() ) -PACKAGE_SET = "music-assistant.python.pkgs" +PACKAGE_SET = "music-assistant.pythonPackages" PACKAGE_MAP = { "git+https://github.com/MarvinSchenkel/pytube.git": "pytube", } EXTRA_DEPS = { + # Those providers cannot guard pydantic behind TYPE_CHECKING + "msx_bridge": ["pydantic"], + "nicovideo": ["pydantic"], "ytmusic": [ # https://github.com/music-assistant/server/blob/2.5.8/music_assistant/providers/ytmusic/__init__.py#L120 "bgutil-ytdlp-pot-provider", @@ -65,6 +77,11 @@ EXTRA_DEPS = { } +EXTRA_LIST_DEPS = { + "sendspin": ["aiosendspin.optional-dependencies.server"], +} + + def run_sync(cmd: List[str]) -> None: print(f"$ {' '.join(cmd)}") process = run(cmd) @@ -143,7 +160,7 @@ def packageset_attributes(): ROOT, "-qa", "-A", - "music-assistant.python.pkgs", + "music-assistant.pythonPackages", "--arg", "config", "{ allowAliases = false; }", @@ -162,7 +179,7 @@ class NoMatch(Exception): def resolve_package_attribute(package: str) -> str: - pattern = re.compile(rf"^music-assistant\.python\.pkgs\.{package}$", re.I) + pattern = re.compile(rf"^music-assistant\.pythonPackages\.{package}$", re.I) packages = packageset_attributes() matches = [] for attr in packages.keys(): @@ -189,6 +206,7 @@ class Provider: domain: str available: list[str] = field(default_factory=list) missing: list[str] = field(default_factory=list) + extra_list_deps: list[str] = field(default_factory=list) def __eq__(self, other): return self.domain == other.domain @@ -197,12 +215,12 @@ class Provider: return hash(self.domain) -async def resolve_providers(manifests) -> Set: +async def resolve_providers(manifests) -> tuple[Set, Set]: errors = [] providers = set() for manifest in manifests: provider = Provider(manifest.domain) - requirements = manifest.requirements + EXTRA_DEPS.get(manifest.domain, []) + requirements = manifest.requirements for requirement in requirements: # allow substituting requirement specifications that packaging cannot parse if requirement in PACKAGE_MAP: @@ -223,26 +241,37 @@ async def resolve_providers(manifests) -> Set: version = await get_package_version(attr) if version not in requirement.specifier: errors.append(f"{requirement} not satisfied by version {version}") + if manifest.domain in EXTRA_DEPS: + for requirement in EXTRA_DEPS[manifest.domain]: + provider.available.append(requirement) + if manifest.domain in EXTRA_LIST_DEPS: + for requirement in EXTRA_LIST_DEPS[manifest.domain]: + provider.extra_list_deps.append(requirement) providers.add(provider) if errors: print("\n - ", end="") print("\n - ".join(errors)) - return providers + + builtins = {manifest.domain for manifest in manifests if manifest.builtin} + + return providers, builtins -def render(outpath: str, version: str, providers: Set): +def render(outpath: str, version: str, providers: Set, builtins: Set): env = Environment() template = env.from_string(TEMPLATE) - template.stream(version=version, providers=providers).dump(outpath) + template.stream(version=version, providers=providers, builtins=builtins).dump( + outpath + ) async def main(): version: str = cast(str, await Nix.eval("music-assistant.version")) manifests = await get_provider_manifests(version) - providers = await resolve_providers(manifests) + providers, builtins = await resolve_providers(manifests) outpath = os.path.join(ROOT, "pkgs/by-name/mu/music-assistant/providers.nix") - render(outpath, version, providers) + render(outpath, version, providers, builtins) run_sync(["nixfmt", outpath]) diff --git a/pkgs/by-name/na/nats-server/package.nix b/pkgs/by-name/na/nats-server/package.nix index 8b1b47de2a4a..c35933178c98 100644 --- a/pkgs/by-name/na/nats-server/package.nix +++ b/pkgs/by-name/na/nats-server/package.nix @@ -7,16 +7,16 @@ buildGoModule (finalAttrs: { pname = "nats-server"; - version = "2.14.2"; + version = "2.14.3"; src = fetchFromGitHub { owner = "nats-io"; repo = "nats-server"; rev = "v${finalAttrs.version}"; - hash = "sha256-XK+Yu1DGmS8F0Sbi3Y6KrGtOw63JzJ1ax5LjoZWCkcY="; + hash = "sha256-139eSr6ECC1vThHbdnDPg8wJS0FJuwDKpm4BupRdjSk="; }; - vendorHash = "sha256-q52NL8I/7xkLb6qeDyv8vTuW0C3CRFuyc6UIPw92uD4="; + vendorHash = "sha256-F7XKN/MMX8FOiRY8gugrKU2j+RQE/vY3eTV7ORVRc2U="; doCheck = false; diff --git a/pkgs/by-name/ne/neovim-remote/package.nix b/pkgs/by-name/ne/neovim-remote/package.nix index b59e027d1c6c..da9599188336 100644 --- a/pkgs/by-name/ne/neovim-remote/package.nix +++ b/pkgs/by-name/ne/neovim-remote/package.nix @@ -25,6 +25,10 @@ python3.pkgs.buildPythonApplication (finalAttrs: { url = "https://github.com/mhinz/neovim-remote/commit/56d2a4097f4b639a16902390d9bdd8d1350f948c.patch"; hash = "sha256-/PjE+9yfHtOUEp3xBaobzRM8Eo2wqOhnF1Es7SIdxvM="; }) + # Fix nvr --version: replace deprecated pkg_resources with importlib.metadata + # (stdlib since Python 3.8). setuptools was correctly kept in build-system + # only; this avoids adding it as a spurious runtime dependency. + ./use-importlib-metadata.patch ]; build-system = with python3.pkgs; [ setuptools ]; diff --git a/pkgs/by-name/ne/neovim-remote/use-importlib-metadata.patch b/pkgs/by-name/ne/neovim-remote/use-importlib-metadata.patch new file mode 100644 index 000000000000..dd197b1e8d34 --- /dev/null +++ b/pkgs/by-name/ne/neovim-remote/use-importlib-metadata.patch @@ -0,0 +1,20 @@ +Use importlib.metadata instead of pkg_resources for version queries. + +pkg_resources is a legacy setuptools API. importlib.metadata (stdlib since +Python 3.8) is the correct replacement and requires no extra runtime dependency. + +--- a/nvr/nvr.py ++++ b/nvr/nvr.py +@@ -360,10 +360,10 @@ + + + def print_versions(): +- import pkg_resources +- print('nvr ' + pkg_resources.require("neovim-remote")[0].version) +- print('pynvim ' + pkg_resources.require('pynvim')[0].version) +- print('psutil ' + pkg_resources.require('psutil')[0].version) ++ from importlib.metadata import version ++ print('nvr ' + version("neovim-remote")) ++ print('pynvim ' + version('pynvim')) ++ print('psutil ' + version('psutil')) + print('Python ' + sys.version.split('\n')[0]) diff --git a/pkgs/by-name/or/organicmaps/force-vendored-protobuf.patch b/pkgs/by-name/or/organicmaps/force-vendored-protobuf.patch new file mode 100644 index 000000000000..61f7c6cb7b9e --- /dev/null +++ b/pkgs/by-name/or/organicmaps/force-vendored-protobuf.patch @@ -0,0 +1,24 @@ +diff --git a/3party/CMakeLists.txt b/3party/CMakeLists.txt +index c802251db8..314f4d4543 100644 +--- a/3party/CMakeLists.txt ++++ b/3party/CMakeLists.txt +@@ -33,9 +33,6 @@ if (NOT WITH_SYSTEM_PROVIDED_3PARTY) + # Add pugixml library. + add_subdirectory(pugixml) + +- # Add protobuf library. +- add_subdirectory(protobuf) +- + add_subdirectory(freetype) + add_subdirectory(icu) + add_subdirectory(harfbuzz) +@@ -45,6 +42,9 @@ if (NOT WITH_SYSTEM_PROVIDED_3PARTY) + target_include_directories(utf8cpp SYSTEM INTERFACE "${OMIM_ROOT}/3party/utfcpp/source") + endif() + ++# Add protobuf library. ++add_subdirectory(protobuf) ++ + add_subdirectory(agg) + add_subdirectory(bsdiff-courgette) + add_subdirectory(glaze) diff --git a/pkgs/by-name/or/organicmaps/package.nix b/pkgs/by-name/or/organicmaps/package.nix index c797594b6fb2..a94a7935227b 100644 --- a/pkgs/by-name/or/organicmaps/package.nix +++ b/pkgs/by-name/or/organicmaps/package.nix @@ -18,42 +18,32 @@ libxrandr, libxinerama, libxcursor, + gflags, + expat, + jansson, + boost, + fast-float, + utf8cpp, nix-update-script, }: -let - world_feed_integration_tests_data = fetchFromGitHub { - owner = "organicmaps"; - repo = "world_feed_integration_tests_data"; - rev = "30ecb0b3fe694a582edfacc2a7425b6f01f9fec6"; - hash = "sha256-1FF658OhKg8a5kKX/7TVmsxZ9amimn4lB6bX9i7pnI4="; - }; -in stdenv.mkDerivation (finalAttrs: { pname = "organicmaps"; - version = "2026.01.26-11"; + version = "2026.05.27-11"; src = fetchFromGitHub { owner = "organicmaps"; repo = "organicmaps"; tag = "${finalAttrs.version}-android"; - hash = "sha256-EsVPzibUta0cmKA6bYLqCKKij5FWbwPHgMmIs2THpL0="; + hash = "sha256-zLNQk9CCCk3linmAyAT5qsS5GhrOrlSVOdDf5koBwrc="; fetchSubmodules = true; }; - postPatch = '' - # Disable certificate check. It's dependent on time - echo "exit 0" > tools/unix/check_cert.sh - - # crude fix for https://github.com/organicmaps/organicmaps/issues/1862 - echo "echo ${lib.replaceStrings [ "." "-" ] [ "" "" ] finalAttrs.version}" > tools/unix/version.sh - - # TODO use system boost instead, see https://github.com/organicmaps/organicmaps/issues/5345 - patchShebangs 3party/boost/tools/build/src/engine/build.sh - - # Prefetch test data, or the build system will try to fetch it with git. - ln -s ${world_feed_integration_tests_data} data/test_data/world_feed_integration_tests_data - ''; + patches = [ + # Needs the very old protobuf 3.3, so we use the vendored one + # https://github.com/organicmaps/organicmaps/pull/6310 + ./force-vendored-protobuf.patch + ]; nativeBuildInputs = [ cmake @@ -65,7 +55,6 @@ stdenv.mkDerivation (finalAttrs: { qt6.wrapQtAppsHook ]; - # Most dependencies are vendored buildInputs = [ qt6.qtbase qt6.qtpositioning @@ -80,12 +69,21 @@ stdenv.mkDerivation (finalAttrs: { libxrandr libxinerama libxcursor + gflags + expat + jansson + boost + fast-float + utf8cpp ]; - # Yes, this is PRE configure. The configure phase uses cmake - preConfigure = '' - bash ./configure.sh - ''; + cmakeFlags = [ + (lib.cmakeBool "WITH_SYSTEM_PROVIDED_3PARTY" true) + (lib.cmakeBool "SKIP_TESTS" true) + (lib.cmakeBool "SKIP_TOOLS" true) + ]; + + env.NIX_CFLAGS_COMPILE = "-I${lib.getDev utf8cpp}/include/utf8cpp"; passthru = { updateScript = nix-update-script { diff --git a/pkgs/by-name/pg/pgcenter/package.nix b/pkgs/by-name/pg/pgcenter/package.nix index 0b39185b3276..e84db93fb5fa 100644 --- a/pkgs/by-name/pg/pgcenter/package.nix +++ b/pkgs/by-name/pg/pgcenter/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "pgcenter"; - version = "0.10.1"; + version = "0.11.0"; src = fetchFromGitHub { owner = "lesovsky"; repo = "pgcenter"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-HSSHRMkzb0WkRAPEtG654ngnJw9rjkBq/v2Su4bUO8Y="; + sha256 = "sha256-sIdCcle7s9ZL8XlEd09yGgq/gC5YDVONzm5Fj9z0lLw="; }; vendorHash = "sha256-nHPS/iLHQwM39UYpajQRAbZcK7PxTPU0mO2HapDRFDU="; diff --git a/pkgs/by-name/pl/plattenalbum/package.nix b/pkgs/by-name/pl/plattenalbum/package.nix index c2933b59180c..8eb024408df8 100644 --- a/pkgs/by-name/pl/plattenalbum/package.nix +++ b/pkgs/by-name/pl/plattenalbum/package.nix @@ -36,7 +36,7 @@ python3Packages.buildPythonApplication (finalAttrs: { dependencies = with python3Packages; [ pygobject3 - mpd2 + python-mpd2 ]; dontWrapGApps = true; diff --git a/pkgs/by-name/ro/rofi-mpd/package.nix b/pkgs/by-name/ro/rofi-mpd/package.nix index 32a26f44c668..7ad80a7b09b0 100644 --- a/pkgs/by-name/ro/rofi-mpd/package.nix +++ b/pkgs/by-name/ro/rofi-mpd/package.nix @@ -20,7 +20,7 @@ python3Packages.buildPythonApplication (finalAttrs: { dependencies = with python3Packages; [ mutagen - mpd2 + python-mpd2 toml appdirs ]; diff --git a/pkgs/by-name/sd/SDL2_image/package.nix b/pkgs/by-name/sd/SDL2_image/package.nix index 401f1191aeff..cecad747879a 100644 --- a/pkgs/by-name/sd/SDL2_image/package.nix +++ b/pkgs/by-name/sd/SDL2_image/package.nix @@ -25,6 +25,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-OT9e+1BTbsE8pPSv+2nMmWbTw/lp5sXnAfrd+fl4U4E="; }; + outputs = [ + "out" + "dev" + ]; + nativeBuildInputs = [ SDL2 autoreconfHook diff --git a/pkgs/by-name/sd/SDL2_ttf/package.nix b/pkgs/by-name/sd/SDL2_ttf/package.nix index fe27887ddfbb..ac53f4a4860c 100644 --- a/pkgs/by-name/sd/SDL2_ttf/package.nix +++ b/pkgs/by-name/sd/SDL2_ttf/package.nix @@ -21,6 +21,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-Cyvx57ZWitvbybuSRkP3nZ3tr+Bh+h7Wh9HZrE5FO/0="; }; + outputs = [ + "out" + "dev" + ]; + nativeBuildInputs = [ SDL2 pkg-config diff --git a/pkgs/by-name/se/senv/package.nix b/pkgs/by-name/se/senv/package.nix index a930f35ca51f..0ab9db48c73a 100644 --- a/pkgs/by-name/se/senv/package.nix +++ b/pkgs/by-name/se/senv/package.nix @@ -25,7 +25,6 @@ buildGoModule (finalAttrs: { homepage = "https://github.com/SpectralOps/senv"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ SuperSandro2000 ]; - broken = stdenv.hostPlatform.isDarwin; # needs golang.org/x/sys bump mainProgram = "senv"; }; }) diff --git a/pkgs/by-name/so/sonata/package.nix b/pkgs/by-name/so/sonata/package.nix index 0d755644ef25..5200dcc04c02 100644 --- a/pkgs/by-name/so/sonata/package.nix +++ b/pkgs/by-name/so/sonata/package.nix @@ -17,7 +17,7 @@ let buildPythonApplication dbus-python pygobject3 - mpd2 + python-mpd2 setuptools ; in @@ -53,7 +53,7 @@ buildPythonApplication (finalAttrs: { # included because it's difficult to build. pythonPath = [ dbus-python - mpd2 + python-mpd2 pygobject3 setuptools # pkg_resources is imported during runtime ]; diff --git a/pkgs/by-name/ti/ticker/package.nix b/pkgs/by-name/ti/ticker/package.nix index 3cd184d25c83..a8a38292e487 100644 --- a/pkgs/by-name/ti/ticker/package.nix +++ b/pkgs/by-name/ti/ticker/package.nix @@ -8,16 +8,21 @@ buildGoModule (finalAttrs: { pname = "ticker"; - version = "5.2.1"; + version = "5.3.0"; src = fetchFromGitHub { owner = "achannarasappa"; repo = "ticker"; tag = "v${finalAttrs.version}"; - hash = "sha256-1q+TMCYPp9AicWJZzWrrr5ukj6AcckNkp2yP4NyOm5g="; + hash = "sha256-DXaW1pL0MDM6GTm1i7ns94OgBqSsR94wFYoumOZsnXo="; }; - vendorHash = "sha256-kEyZMFW1ex45yC4G9qZUOeXVdQKjcExG7hKvN8lxrDI="; + postPatch = '' + substituteInPlace go.mod \ + --replace-fail "go 1.26.4" "go 1.26.3" + ''; + + vendorHash = "sha256-ulAmWbsLp5oiIRJNyI0jRXBGUnjRzkZt3zHdbxkCLV0="; ldflags = [ "-s" diff --git a/pkgs/by-name/tr/transmission_4-gtk/package.nix b/pkgs/by-name/tr/transmission_4-gtk/package.nix index 697c50dbf572..d4840aca93a8 100644 --- a/pkgs/by-name/tr/transmission_4-gtk/package.nix +++ b/pkgs/by-name/tr/transmission_4-gtk/package.nix @@ -1,3 +1,3 @@ { transmission_4 }: -transmission_4.override { enableGTK4 = true; } +transmission_4.override { enableGTK = true; } diff --git a/pkgs/by-name/tr/transmission_4-qt/package.nix b/pkgs/by-name/tr/transmission_4-qt/package.nix new file mode 100644 index 000000000000..daccb10ce1ab --- /dev/null +++ b/pkgs/by-name/tr/transmission_4-qt/package.nix @@ -0,0 +1,3 @@ +{ transmission_4 }: + +transmission_4.override { enableQt = true; } diff --git a/pkgs/by-name/tr/transmission_4-qt5/package.nix b/pkgs/by-name/tr/transmission_4-qt5/package.nix deleted file mode 100644 index e3352cf2d08c..000000000000 --- a/pkgs/by-name/tr/transmission_4-qt5/package.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ transmission_4 }: - -transmission_4.override { enableQt5 = true; } diff --git a/pkgs/by-name/tr/transmission_4-qt6/package.nix b/pkgs/by-name/tr/transmission_4-qt6/package.nix deleted file mode 100644 index bee8183b5abe..000000000000 --- a/pkgs/by-name/tr/transmission_4-qt6/package.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ transmission_4 }: - -transmission_4.override { enableQt6 = true; } diff --git a/pkgs/by-name/tr/transmission_4/package.nix b/pkgs/by-name/tr/transmission_4/package.nix index cf520ab7091b..96a9b6da8a43 100644 --- a/pkgs/by-name/tr/transmission_4/package.nix +++ b/pkgs/by-name/tr/transmission_4/package.nix @@ -24,15 +24,13 @@ dht, libnatpmp, # Build options - enableGTK4 ? false, + enableGTK ? false, gtkmm4, libpthread-stubs, libayatana-appindicator, wrapGAppsHook4, - enableQt5 ? false, - enableQt6 ? false, + enableQt ? false, enableMac ? false, - qt5, qt6Packages, nixosTests, enableSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, @@ -98,9 +96,9 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (cmakeBool "ENABLE_CLI" enableCli) (cmakeBool "ENABLE_DAEMON" enableDaemon) - (cmakeBool "ENABLE_GTK" enableGTK4) + (cmakeBool "ENABLE_GTK" enableGTK) (cmakeBool "ENABLE_MAC" enableMac) - (cmakeBool "ENABLE_QT" (enableQt5 || enableQt6)) + (cmakeBool "ENABLE_QT" enableQt) (cmakeBool "INSTALL_LIB" installLib) (cmakeBool "RUN_CLANG_TIDY" false) ] @@ -132,7 +130,7 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace CMakeLists.txt \ --replace-fail 'find_package(UtfCpp)' 'find_package(utf8cpp)' '' - + optionalString (stdenv.hostPlatform.isDarwin && (enableQt5 || enableQt6)) '' + + optionalString (stdenv.hostPlatform.isDarwin && enableQt) '' substituteInPlace qt/CMakeLists.txt \ --replace-fail \ 'transmission::qt_impl)' \ @@ -144,9 +142,8 @@ stdenv.mkDerivation (finalAttrs: { cmake python3 ] - ++ optionals enableGTK4 [ wrapGAppsHook4 ] - ++ optionals enableQt5 [ qt5.wrapQtAppsHook ] - ++ optionals enableQt6 [ qt6Packages.wrapQtAppsHook ] + ++ optionals enableGTK [ wrapGAppsHook4 ] + ++ optionals enableQt [ qt6Packages.wrapQtAppsHook ] ++ optionals enableMac [ ibtool actool @@ -171,14 +168,7 @@ stdenv.mkDerivation (finalAttrs: { utf8cpp zlib ] - ++ optionals enableQt5 ( - with qt5; - [ - qttools - qtbase - ] - ) - ++ optionals enableQt6 ( + ++ optionals enableQt ( with qt6Packages; [ qttools @@ -186,7 +176,7 @@ stdenv.mkDerivation (finalAttrs: { qtsvg ] ) - ++ optionals enableGTK4 [ + ++ optionals enableGTK [ gtkmm4 libpthread-stubs libayatana-appindicator @@ -230,9 +220,9 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Fast, easy and free BitTorrent client"; mainProgram = - if (enableQt5 || enableQt6) then + if enableQt then "transmission-qt" - else if enableGTK4 then + else if enableGTK then "transmission-gtk" else if enableMac then "transmission-mac" diff --git a/pkgs/by-name/ur/urbit/package.nix b/pkgs/by-name/ur/urbit/package.nix index 5a900a6e50d7..8bc85a12e162 100644 --- a/pkgs/by-name/ur/urbit/package.nix +++ b/pkgs/by-name/ur/urbit/package.nix @@ -11,16 +11,16 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "urbit"; - version = "4.3"; + version = "4.5"; src = fetchurl { url = "https://github.com/urbit/vere/releases/download/vere-v${finalAttrs.version}/${platform}.tgz"; sha256 = { - x86_64-linux = "14svyh258iqw8zrbf6nmsc1rfhrsyp6wb2a84fc72lsh28jm7fm0"; - aarch64-linux = "0gbpfsysmag9wnka9lgd812wsgrp78fr5l5nwin524zx47cq0fdm"; - x86_64-darwin = "0ff77jpsblgbsx03w0yqqsnyrw6g6c90bcj4bvm6idjdxknfnpfv"; - aarch64-darwin = "037860zqp9l9gzr3s0d8pbis3xsd26f3a6k63rpvjn76bpwy6swb"; + x86_64-linux = "1vbyh6glh4fqcx8d8x2jp88nzl9922dj709zgwhvy858s2m30ymz"; + aarch64-linux = "18gc1kyxj4j6vikxpif4a1b6l629m0lnhdzmlwx5i2v0l18drvbp"; + x86_64-darwin = "02g431xgjw8gwa823kkxnzhg1cgswi3nlkv54mzkjxbhw856qa4z"; + aarch64-darwin = "06x8mdxmbmhg78jzsf0n83cwmp2czp74ssh616ikqf1r8v5l0h2p"; } .${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}"); }; diff --git a/pkgs/by-name/ve/veracrypt/package.nix b/pkgs/by-name/ve/veracrypt/package.nix index 25bfcf8663b8..4ed9843fc890 100644 --- a/pkgs/by-name/ve/veracrypt/package.nix +++ b/pkgs/by-name/ve/veracrypt/package.nix @@ -1,11 +1,11 @@ { lib, stdenv, - fetchurl, + fetchFromGitHub, pkg-config, makeself, yasm, - fuse, + fuse3, wxwidgets_3_2, lvm2, replaceVars, @@ -21,9 +21,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "veracrypt"; version = "1.26.29"; - src = fetchurl { - url = "https://launchpad.net/veracrypt/trunk/${finalAttrs.version}/+download/VeraCrypt_${finalAttrs.version}_Source.tar.bz2"; - hash = "sha256-YIJnMeKYK0vSMeOTDoWkQ5EWljhnGhsgDFGPjItGyyo="; + src = fetchFromGitHub { + owner = "veracrypt"; + repo = "VeraCrypt"; + tag = "VeraCrypt_${finalAttrs.version}"; + hash = "sha256-Q+WUz8F63cP9/KlZUn9xLu2V9wO4FeY7AtErE1T9Km4="; }; patches = [ @@ -40,7 +42,9 @@ stdenv.mkDerivation (finalAttrs: { ./nix-system-paths.patch ]; - sourceRoot = "src"; + sourceRoot = "${finalAttrs.src.name}/src"; + + buildFlags = [ "WITHFUSE3=1" ]; nativeBuildInputs = [ makeself @@ -49,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: { wrapGAppsHook3 ]; buildInputs = [ - fuse + fuse3 lvm2 wxwidgets_3_2 pcsclite @@ -70,10 +74,12 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Free Open-Source filesystem on-the-fly encryption"; homepage = "https://www.veracrypt.fr/"; - license = with lib.licenses; [ - asl20 # and - unfree # TrueCrypt License version 3.0 - ]; + license = + with lib.licenses; + AND [ + asl20 # and + unfree # TrueCrypt License version 3.0 + ]; maintainers = [ lib.maintainers.ryand56 ]; platforms = lib.platforms.linux; }; diff --git a/pkgs/by-name/ve/vesktop/package.nix b/pkgs/by-name/ve/vesktop/package.nix index 5bde8c1f72f8..daddf229bc5a 100644 --- a/pkgs/by-name/ve/vesktop/package.nix +++ b/pkgs/by-name/ve/vesktop/package.nix @@ -13,7 +13,7 @@ pipewire, libpulseaudio, autoPatchelfHook, - pnpm_10_29_2, + pnpm_10, fetchPnpmDeps, pnpmConfigHook, nodejs, @@ -46,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: { src patches ; - pnpm = pnpm_10_29_2; + pnpm = pnpm_10; fetcherVersion = 3; hash = "sha256-Ue1K1KmRi4gF7E519deVY7QH+22dqlECMjdA7Z7qDCA="; }; @@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ nodejs pnpmConfigHook - pnpm_10_29_2 + pnpm_10 jq ] ++ lib.optionals stdenv.hostPlatform.isLinux [ diff --git a/pkgs/by-name/ya/yams/package.nix b/pkgs/by-name/ya/yams/package.nix index c5b84b0bb80a..4cb3a31b01b8 100644 --- a/pkgs/by-name/ya/yams/package.nix +++ b/pkgs/by-name/ya/yams/package.nix @@ -22,7 +22,7 @@ python3Packages.buildPythonPackage rec { dependencies = with python3Packages; [ pyyaml psutil - mpd2 + python-mpd2 requests ]; diff --git a/pkgs/development/python-modules/aiosendspin/default.nix b/pkgs/development/python-modules/aiosendspin/default.nix index c56e51a03d3f..3f661ddceaa2 100644 --- a/pkgs/development/python-modules/aiosendspin/default.nix +++ b/pkgs/development/python-modules/aiosendspin/default.nix @@ -29,17 +29,17 @@ buildPythonPackage (finalAttrs: { pname = "aiosendspin"; - version = "4.4.0"; + version = "6.0.5"; pyproject = true; src = fetchFromGitHub { owner = "Sendspin"; repo = "aiosendspin"; tag = finalAttrs.version; - hash = "sha256-7edFCGNbECW5rrTbF7vJ4lJUc2IrQZD9VTR3IxJRP08="; + hash = "sha256-veX6MZSqEQb+tEqZTEgdCObLdaVPJEdTFW5Ivmb0TNQ="; }; - # https://github.com/Sendspin/aiosendspin/blob/4.4.0/pyproject.toml#L7 + # https://github.com/Sendspin/aiosendspin/blob/5.3.0/pyproject.toml#L27 postPatch = '' substituteInPlace pyproject.toml \ --replace-fail 'version = "0.0.0"' 'version = "${finalAttrs.version}"' @@ -54,20 +54,26 @@ buildPythonPackage (finalAttrs: { dependencies = [ aiohttp - av mashumaro - numpy orjson - pillow zeroconf ]; + optional-dependencies = { + server = [ + av + numpy + pillow + ]; + }; + nativeCheckInputs = [ pytest-aiohttp pytest-cov-stub pytest-xdist pytestCheckHook - ]; + ] + ++ finalAttrs.passthru.optional-dependencies.server; pythonImportsCheck = [ "aiosendspin" diff --git a/pkgs/development/python-modules/aiovban-pyaudio/default.nix b/pkgs/development/python-modules/aiovban-pyaudio/default.nix new file mode 100644 index 000000000000..d4d74d872661 --- /dev/null +++ b/pkgs/development/python-modules/aiovban-pyaudio/default.nix @@ -0,0 +1,44 @@ +{ + lib, + setproctitle, + uvloop, + aiovban, + buildPythonPackage, + pyaudio, + setuptools, +}: + +buildPythonPackage (finalAttrs: { + pname = "aiovban-pyaudio"; + inherit (aiovban) version pyproject src; + + sourceRoot = "${aiovban.src.name}/aiovban_pyaudio"; + + build-system = [ setuptools ]; + + dependencies = [ + aiovban + pyaudio + ]; + + pythonImportsCheck = [ + "aiovban_pyaudio" + ]; + + optional-dependencies = { + cli = [ + setproctitle + uvloop + ]; + }; + + __structuredAttrs = true; + + meta = { + changelog = "https://github.com/wmbest2/aiovban/releases/tag/${finalAttrs.src.tag}"; + description = "PyAudio wrapper for aiovban"; + homepage = "https://github.com/wmbest2/aiovban/tree/main/aiovban_pyaudio"; + license = lib.licenses.mit; + inherit (aiovban.meta) maintainers; + }; +}) diff --git a/pkgs/development/python-modules/aiovban/default.nix b/pkgs/development/python-modules/aiovban/default.nix index 67440599968d..5f56f697b3e9 100644 --- a/pkgs/development/python-modules/aiovban/default.nix +++ b/pkgs/development/python-modules/aiovban/default.nix @@ -1,32 +1,52 @@ { lib, + aiovban-pyaudio, buildPythonPackage, fetchFromGitHub, - setuptools, pytestCheckHook, + textual, + uv-build, music-assistant, }: buildPythonPackage (finalAttrs: { pname = "aiovban"; - version = "0.7.0"; + version = "1.1.0"; pyproject = true; src = fetchFromGitHub { owner = "wmbest2"; repo = "aiovban"; tag = "v${finalAttrs.version}"; - hash = "sha256-0mhpmpsV0zSOWbhrPF9bfR9xAtJe6X57guWDZWMH6f0="; + hash = "sha256-yPp4+aQGJISTIFI/OoO7+mAR8daEytxrQn21SsFWEyc="; }; - build-system = [ setuptools ]; + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "uv_build>=0.10.0,<0.11.0" "uv_build" + ''; - nativeCheckInputs = [ pytestCheckHook ]; + build-system = [ uv-build ]; + + dependencies = [ textual ]; + + # avoid infinite recursion with aiovban-pyaudio + doCheck = false; + + nativeCheckInputs = [ + aiovban-pyaudio + pytestCheckHook + ] + ++ aiovban-pyaudio.optional-dependencies.cli; pythonImportsCheck = [ "aiovban" ]; + passthru.tests = finalAttrs.finalPackage.overrideAttrs (_: { + doInstallCheck = true; + }); + meta = { changelog = "https://github.com/wmbest2/aiovban/releases/tag/${finalAttrs.src.tag}"; description = "Asyncio VBAN Protocol Wrapper"; diff --git a/pkgs/development/python-modules/beat-this/default.nix b/pkgs/development/python-modules/beat-this/default.nix new file mode 100644 index 000000000000..09211960cf3a --- /dev/null +++ b/pkgs/development/python-modules/beat-this/default.nix @@ -0,0 +1,73 @@ +{ + lib, + buildPythonPackage, + einops, + fetchFromGitHub, + fetchurl, + numpy, + pytestCheckHook, + rotary-embedding-torch, + setuptools, + soundfile, + soxr, + torch, + torchaudio, + writableTmpDirAsHomeHook, +}: + +buildPythonPackage (finalAttrs: { + pname = "beat-this"; + version = "1.1.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "CPJKU"; + repo = "beat_this"; + tag = "v${finalAttrs.version}"; + hash = "sha256-AEcDptPn5FUBb8+FuYSKjd00sFY5z6bS2iEOU64jido="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + einops + numpy + rotary-embedding-torch + soxr + torch + torchaudio + ]; + + nativeCheckInputs = [ + pytestCheckHook + soundfile + writableTmpDirAsHomeHook + ]; + + preCheck = '' + mkdir -p $HOME/.cache/torch/hub/checkpoints/ + cp ${finalAttrs.passthru.final0Ckpt} $HOME/.cache/torch/hub/checkpoints/beat_this-final0.ckpt + ''; + + pythonImportsCheck = [ "beat_this" ]; + + passthru = { + # The program prints the download URLs in the error message when it cannot download things in the nix sandbox + final0Ckpt = fetchurl { + url = "https://cloud.cp.jku.at/public.php/dav/files/7ik4RrBKTS273gp/final0.ckpt"; + hash = "sha256-jDKLRfWdjdPf8hklP/ao1kgr5X0BM6KRQOL+u/jrgzE="; + }; + small0Ckpt = fetchurl { + url = "https://cloud.cp.jku.at/public.php/dav/files/7ik4RrBKTS273gp/small0.ckpt"; + hash = "sha256-YHS+LE1JDF9hAfzDdKHscq6TRW4ju2AZeDuEn13H1Hs="; + }; + }; + + meta = { + description = "Accurate and general beat tracker"; + homepage = "https://github.com/CPJKU/beat_this"; + changelog = "https://github.com/CPJKU/beat_this/blob/main/CHANGELOG.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ SuperSandro2000 ]; + }; +}) diff --git a/pkgs/development/python-modules/beets/default.nix b/pkgs/development/python-modules/beets/default.nix index 6507544714d6..80bdd408fb56 100644 --- a/pkgs/development/python-modules/beets/default.nix +++ b/pkgs/development/python-modules/beets/default.nix @@ -70,7 +70,7 @@ librosa, mp3gain, mp3val, - mpd2, + python-mpd2, pyacoustid, pylast, pyxdg, @@ -350,9 +350,9 @@ buildPythonPackage (finalAttrs: { mbpseudo = { }; metasync.testPaths = [ ]; missing.testPaths = [ ]; - mpdstats.propagatedBuildInputs = [ mpd2 ]; + mpdstats.propagatedBuildInputs = [ python-mpd2 ]; mpdupdate = { - propagatedBuildInputs = [ mpd2 ]; + propagatedBuildInputs = [ python-mpd2 ]; testPaths = [ ]; }; musicbrainz = { }; diff --git a/pkgs/development/python-modules/fastmcp-slim/default.nix b/pkgs/development/python-modules/fastmcp-slim/default.nix new file mode 100644 index 000000000000..6eb705b108ba --- /dev/null +++ b/pkgs/development/python-modules/fastmcp-slim/default.nix @@ -0,0 +1,132 @@ +{ + lib, + buildPythonPackage, + fastmcp, + + # build-system + hatchling, + uv-dynamic-versioning, + + # dependencies + anthropic, + authlib, + azure-identity, + cyclopts, + exceptiongroup, + google-genai, + griffelib, + httpx, + jsonref, + jsonschema-path, + mcp, + openai, + openapi-pydantic, + opentelemetry-api, + packaging, + platformdirs, + py-key-value-aio, + pydantic, + pydantic-monty, + pydantic-settings, + pydocket, + pyjwt, + pyperclip, + python-dotenv, + python-multipart, + pyyaml, + rich, + typing-extensions, + uncalled-for, + uvicorn, + watchfiles, + websockets, +}: + +buildPythonPackage (finalAttrs: { + pname = "fastmcp-slim"; + inherit (fastmcp) version src; + sourceRoot = "${finalAttrs.src.name}/fastmcp_slim"; + pyproject = true; + + build-system = [ + hatchling + uv-dynamic-versioning + ]; + + dependencies = [ + platformdirs + pydantic + pydantic-settings + python-dotenv + rich + typing-extensions + ] + ++ pydantic.optional-dependencies.email; + + optional-dependencies = { + anthropic = [ anthropic ]; + apps = [ + # unpackaged prefab-ui + ]; + azure = [ + azure-identity + pyjwt + ]; + client = [ + authlib + ] + ++ finalAttrs.passthru.optional-dependencies.mcp + ++ py-key-value-aio.optional-dependencies.filetree + ++ py-key-value-aio.optional-dependencies.keyring + ++ py-key-value-aio.optional-dependencies.memory; + code-mode = [ pydantic-monty ]; + gemini = [ + google-genai + jsonref + ]; + mcp = [ + exceptiongroup + httpx + mcp + opentelemetry-api + ]; + openai = [ openai ]; + server = [ + authlib + cyclopts + griffelib + jsonref + jsonschema-path + openapi-pydantic + packaging + py-key-value-aio + pyperclip + python-multipart + pyyaml + uncalled-for + uvicorn + watchfiles + websockets + ] + ++ finalAttrs.passthru.optional-dependencies.mcp + ++ py-key-value-aio.optional-dependencies.filetree + ++ py-key-value-aio.optional-dependencies.keyring + ++ py-key-value-aio.optional-dependencies.memory; + tasks = [ + pydocket + ]; + }; + + pythonImportsCheck = [ "fastmcp" ]; + + # tests are done in fastmcp package + doCheck = false; + + meta = { + description = "Dependency-slim FastMCP package"; + changelog = "https://github.com/jlowin/fastmcp/releases/tag/${finalAttrs.src.tag}"; + homepage = "https://github.com/PrefectHQ/fastmcp/tree/main/fastmcp_slim"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ GaetanLepage ]; + }; +}) diff --git a/pkgs/development/python-modules/fastmcp/default.nix b/pkgs/development/python-modules/fastmcp/default.nix index 531d87fdfc38..3879e40bb830 100644 --- a/pkgs/development/python-modules/fastmcp/default.nix +++ b/pkgs/development/python-modules/fastmcp/default.nix @@ -10,54 +10,26 @@ uv-dynamic-versioning, # dependencies - anthropic, - authlib, - azure-identity, - cyclopts, - exceptiongroup, - griffelib, - httpx, - jsonref, - jsonschema-path, - mcp, - fakeredis, - google-genai, - openai, - openapi-pydantic, - opentelemetry-api, - packaging, - platformdirs, - py-key-value-aio, - pydantic, - pydantic-monty, - pydocket, - pyjwt, - pyperclip, - python-dotenv, - pyyaml, - rich, - uncalled-for, - uvicorn, - watchfiles, - websockets, + fastmcp-slim, # tests dirty-equals, - email-validator, fastapi, inline-snapshot, - lupa, opentelemetry-sdk, psutil, pytest-asyncio, pytest-examples, pytest-httpx, + pytest-rerunfailures, + pytest-timeout, + pytest-xdist, pytestCheckHook, }: buildPythonPackage (finalAttrs: { pname = "fastmcp"; - version = "3.2.4"; + version = "3.3.1"; pyproject = true; __structuredAttrs = true; @@ -65,7 +37,7 @@ buildPythonPackage (finalAttrs: { owner = "PrefectHQ"; repo = "fastmcp"; tag = "v${finalAttrs.version}"; - hash = "sha256-rJpxPvqAaa6/vXhG1+R9dI32cY/54e6I+F/zyBVoqBM="; + hash = "sha256-1W5NbWIULxFXGSozZEeITcPt1EbY6IsJLQdyevcn9BI="; }; build-system = [ @@ -73,121 +45,66 @@ buildPythonPackage (finalAttrs: { uv-dynamic-versioning ]; - pythonRelaxDeps = [ - "py-key-value-aio" - "pydocket" - ]; dependencies = [ - authlib - cyclopts - exceptiongroup - griffelib - httpx - jsonref - jsonschema-path - mcp - openapi-pydantic - opentelemetry-api - packaging - platformdirs - py-key-value-aio - pydantic - pyperclip - python-dotenv - pyyaml - rich - uncalled-for - uvicorn - watchfiles - websockets + fastmcp-slim ] - ++ py-key-value-aio.optional-dependencies.filetree - ++ py-key-value-aio.optional-dependencies.keyring - ++ py-key-value-aio.optional-dependencies.memory - ++ pydantic.optional-dependencies.email; + ++ fastmcp-slim.optional-dependencies.client + ++ fastmcp-slim.optional-dependencies.server; optional-dependencies = { - anthropic = [ anthropic ]; - azure = [ - azure-identity - pyjwt - ]; - code-mode = [ pydantic-monty ]; - gemini = [ google-genai ]; - openai = [ openai ]; - tasks = [ - pydocket - fakeredis - ] - ++ fakeredis.optional-dependencies.lua; + anthropic = fastmcp-slim.optional-dependencies.anthropic; + apps = fastmcp-slim.optional-dependencies.apps; + azure = fastmcp-slim.optional-dependencies.azure; + code-mode = fastmcp-slim.optional-dependencies.code-mode; + gemini = fastmcp-slim.optional-dependencies.gemini; + openai = fastmcp-slim.optional-dependencies.openai; + tasks = fastmcp-slim.optional-dependencies.tasks; }; pythonImportsCheck = [ "fastmcp" ]; nativeCheckInputs = [ dirty-equals - email-validator fastapi inline-snapshot - lupa opentelemetry-sdk psutil pytest-asyncio pytest-examples pytest-httpx + pytest-rerunfailures + pytest-timeout + pytest-xdist pytestCheckHook writableTmpDirAsHomeHook ] ++ finalAttrs.passthru.optional-dependencies.anthropic + ++ finalAttrs.passthru.optional-dependencies.apps ++ finalAttrs.passthru.optional-dependencies.azure ++ finalAttrs.passthru.optional-dependencies.code-mode ++ finalAttrs.passthru.optional-dependencies.gemini ++ finalAttrs.passthru.optional-dependencies.openai + ++ finalAttrs.passthru.optional-dependencies.tasks ++ inline-snapshot.optional-dependencies.dirty-equals; disabledTests = [ + # requires internet + "test_github_api_schema_performance" + # RuntimeError: Client failed to connect: Connection closed - "test_keep_alive_maintains_session_across_multiple_calls" - "test_keep_alive_false_starts_new_session_across_multiple_calls" - "test_keep_alive_false_exit_scope_kills_server" - "test_keep_alive_starts_new_session_if_manually_closed" - "test_keep_alive_true_exit_scope_kills_client" - "test_keep_alive_maintains_session_if_reentered" - "test_close_session_and_try_to_use_client_raises_error" - "test_parallel_calls" + "test_single_server_config_include_tags_filtering" "test_run_mcp_config" - "test_settings_from_environment_issue_1749" + + # requires uv "test_uv_transport" "test_uv_transport_module" - "test_github_api_schema_performance" # Hang forever "test_nested_streamable_http_server_resolves_correctly" - # RuntimeError: Client failed to connect: Timed out while waiting for response - "test_timeout" - "test_timeout_tool_call_overrides_client_timeout_even_if_lower" - # Requires prefab-ui (optional dependency) - "test_auto_registers_renderer_resource" - "test_auto_synthesizes_renderer_resource" - "test_equivalent_to_app_true" - - # Requires pydocket (tasks optional dependency, not in test inputs) - "test_mounted_server_does_not_have_docket" - "test_get_tasks_returns_task_eligible_tools" - "test_task_teardown_does_not_hang" - "test_background_task_can_read_snapshotted_request_headers" - "test_background_task_current_http_dependencies_restore_headers" - "test_task_execution_auto_populated_for_task_enabled_tool" - "test_function_tool_task_config_still_works" - "test_async_partial_with_task_true_does_not_raise" - "test_sync_partial_with_task_true_raises" - "test_is_docket_available" - "test_require_docket_passes_when_installed" - - # Shared dependency caching differs in sandbox - "TestSharedDependencies" + "TestPrefabAppConfig" + "test_doc_examples_quality" # AssertionError: assert 'INFO' == 'DEBUG' "test_temporary_settings" @@ -195,36 +112,21 @@ buildPythonPackage (finalAttrs: { # Subprocess-based multi-client tests fail in sandbox "test_multi_client" "test_multi_server" - "test_single_server_config_include_tags_filtering" "test_server_starts_without_auth" "test_canonical_multi_client_with_transforms" ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - # RuntimeError: Server failed to start after 10 attempts - "test_unauthorized_access" - "test_stateless_proxy" + ++ lib.optionals stdenv.hostPlatform.isAarch64 [ + # floating point error + "test_index_retrieval[float32-quantization1-1-metric0-3]" ]; disabledTestPaths = [ # Requires prefab-ui (optional dependency) "tests/apps" - "tests/docs/test_doc_examples.py" "tests/test_apps_prefab.py" "tests/test_fastmcp_app.py" # Subprocess crash recovery tests are flaky in sandbox "tests/client/test_stdio.py" - # Requires pydocket/fakeredis (tasks optional dependency, not in test inputs) - "tests/server/tasks" - "tests/server/test_server_docket.py" - "tests/client/tasks" - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - # RuntimeError: Server failed to start after 10 attempts - "tests/client/auth/test_oauth_client.py" - "tests/client/test_sse.py" - "tests/client/test_streamable_http.py" - "tests/server/auth/test_jwt_provider.py" - "tests/server/http/test_http_dependencies.py" ]; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/hebi-py/default.nix b/pkgs/development/python-modules/hebi-py/default.nix new file mode 100644 index 000000000000..1a499724a11a --- /dev/null +++ b/pkgs/development/python-modules/hebi-py/default.nix @@ -0,0 +1,54 @@ +{ + lib, + python, + buildPythonPackage, + fetchPypi, + setuptools, + numpy, + patchelfUnstable, + pyyaml, + nix-update-script, +}: + +buildPythonPackage (finalAttrs: { + pname = "hebi-py"; + version = "2.7.9"; + pyproject = true; + + src = fetchPypi { + pname = "hebi-py"; + inherit (finalAttrs) version; + hash = "sha256-7B0oxG1CVDTUVDFTJpuYvaCj+HnCL/2zmsD33W4nTLs="; + }; + + __structuredAttrs = true; + strictDeps = true; + build-system = [ + setuptools + patchelfUnstable # Depends on --clear-execstack which is not in any tagged release yet + ]; + dependencies = [ + numpy + pyyaml + ]; + + doCheck = false; # no tests + + postFixup = '' + for lib in $out/${python.sitePackages}/hebi/lib/linux_x86_64/libhebi.so*; do + patchelf --clear-execstack "$lib" + done + ''; + + pythonImportsCheck = [ "hebi" ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Python library for the Hebi Robotics API"; + homepage = "https://docs.hebi.us/"; + license = lib.licenses.unfree; + platforms = [ "x86_64-linux" ]; + maintainers = with lib.maintainers; [ pandapip1 ]; + }; +}) diff --git a/pkgs/development/python-modules/nnaudio/default.nix b/pkgs/development/python-modules/nnaudio/default.nix new file mode 100644 index 000000000000..3d54bcdf3d40 --- /dev/null +++ b/pkgs/development/python-modules/nnaudio/default.nix @@ -0,0 +1,80 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + fetchurl, + librosa, + numpy, + pytestCheckHook, + setuptools, + scipy, + stdenv, + torch, + writableTmpDirAsHomeHook, +}: +let + choice = fetchurl { + url = "https://librosa.org/data/audio/admiralbob77_-_Choice_-_Drum-bass.ogg"; + hash = "sha256-rGRPlkXnwVF05KT4Vh5NFEjX9uWf9rBVazEOu87Yebw="; + }; + vibeace = fetchurl { + url = "https://librosa.org/data/audio/Kevin_MacLeod_-_Vibe_Ace.ogg"; + hash = "sha256-bCOu091apX8rFlLsq2jRXZuCrSV/VOY56yiAygm8EYo="; + }; +in +buildPythonPackage (finalAttrs: { + pname = "nnaudio"; + version = "0.3.4"; + pyproject = true; + + src = fetchFromGitHub { + owner = "KinWaiCheuk"; + repo = "nnAudio"; + rev = "e77d9f874cf37b273f44f68aefbd32fb0b979912"; + hash = "sha256-uJySa2A7IbuY/9Wq/w9gRkBk1NhMrhipyclOWO5koHE="; + }; + + sourceRoot = "${finalAttrs.src.name}/Installation"; + + build-system = [ setuptools ]; + + dependencies = [ + numpy + scipy + torch + ]; + + nativeCheckInputs = [ + librosa + pytestCheckHook + writableTmpDirAsHomeHook + ]; + + preCheck = '' + mkdir -p $HOME/.cache/librosa/ + cp ${choice} $HOME/.cache/librosa/admiralbob77_-_Choice_-_Drum-bass.ogg + cp ${vibeace} $HOME/.cache/librosa/Kevin_MacLeod_-_Vibe_Ace.ogg + export NUMBA_CACHE_DIR=$(mktemp -d) + ''; + + disabledTests = [ + # AttributeError: module 'scipy.signal' has no attribute 'blackmanharris' + "test_cfp_original[cpu]" + "test_cfp_new[cpu]" + # Test fixture matrix has other values + "test_vqt_gamma_zero[cpu]" + ] + ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ + # Test fixture matrix has other values + "test_cqt_1992_v2_log[cpu]" + ]; + + pythonImportsCheck = [ "nnAudio" ]; + + meta = { + description = "Fast GPU audio processing toolbox with 1D convolutional neural network"; + homepage = "https://github.com/KinWaiCheuk/nnAudio"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ SuperSandro2000 ]; + }; +}) diff --git a/pkgs/development/python-modules/py-opensonic/default.nix b/pkgs/development/python-modules/py-opensonic/default.nix index 831ae47316b9..1df9023f1d9f 100644 --- a/pkgs/development/python-modules/py-opensonic/default.nix +++ b/pkgs/development/python-modules/py-opensonic/default.nix @@ -1,23 +1,24 @@ { lib, + aiohttp, buildPythonPackage, fetchFromGitHub, - setuptools, - aiohttp, mashumaro, - requests, + pytest-asyncio, + pytestCheckHook, + setuptools, }: buildPythonPackage rec { pname = "py-opensonic"; - version = "9.1.0"; + version = "10.0.0"; pyproject = true; src = fetchFromGitHub { owner = "khers"; repo = "py-opensonic"; tag = "v${version}"; - hash = "sha256-xZHlI62QoKkR4sZf0GUEzUGMpG2urHooPs8GvVyqpIQ="; + hash = "sha256-LT6pTtXCUMhk6uV9Y2inlAuP8osWUwsWOH7/yOW2OXI="; }; build-system = [ setuptools ]; @@ -25,10 +26,16 @@ buildPythonPackage rec { dependencies = [ aiohttp mashumaro - requests ]; - doCheck = false; # no tests + pythonRelaxDeps = [ + "mashumaro" + ]; + + nativeCheckInputs = [ + pytest-asyncio + pytestCheckHook + ]; pythonImportsCheck = [ "libopensonic" diff --git a/pkgs/development/python-modules/pyblu/default.nix b/pkgs/development/python-modules/pyblu/default.nix index baa7ff79bd63..6c2cea7a524f 100644 --- a/pkgs/development/python-modules/pyblu/default.nix +++ b/pkgs/development/python-modules/pyblu/default.nix @@ -1,25 +1,25 @@ { aiohttp, - aioresponses, buildPythonPackage, fetchFromGitHub, hatchling, lib, lxml, + mocket, pytest-asyncio, pytestCheckHook, }: buildPythonPackage rec { pname = "pyblu"; - version = "2.0.6"; + version = "2.0.8"; pyproject = true; src = fetchFromGitHub { owner = "LouisChrist"; repo = "pyblu"; tag = "v${version}"; - hash = "sha256-qLB9o40tRYgmbYJEEx8r3SodH1hB8MM4yLXbdKIs/xA="; + hash = "sha256-uYYiu0V491eHg47Rc9HGEiddONnFqGuPj34Mkfk5Gnk="; }; pythonRelaxDeps = [ "aiohttp" ]; @@ -34,11 +34,17 @@ buildPythonPackage rec { pythonImportsCheck = [ "pyblu" ]; nativeCheckInputs = [ - aioresponses + mocket pytest-asyncio pytestCheckHook ]; + disabledTestPaths = [ + # all tests fail with: + # aiohttp.client_exceptions.ClientConnectorDNSError: Cannot connect to host node:11000 ssl:default [Could not contact DNS servers] + "tests/test_player.py" + ]; + meta = { changelog = "https://github.com/LouisChrist/pyblu/releases/tag/${src.tag}"; description = "BluOS API client"; diff --git a/pkgs/development/python-modules/mpd2/default.nix b/pkgs/development/python-modules/python-mpd2/default.nix similarity index 100% rename from pkgs/development/python-modules/mpd2/default.nix rename to pkgs/development/python-modules/python-mpd2/default.nix diff --git a/pkgs/development/python-modules/qtile/default.nix b/pkgs/development/python-modules/qtile/default.nix index d096c7a57165..3dfedfa3eb98 100644 --- a/pkgs/development/python-modules/qtile/default.nix +++ b/pkgs/development/python-modules/qtile/default.nix @@ -16,7 +16,7 @@ dbus-fast, iwlib, libcst, - mpd2, + python-mpd2, prompt-toolkit, psutil, pulsectl-asyncio, @@ -118,7 +118,7 @@ buildPythonPackage (finalAttrs: { dbus-fast iwlib libcst - mpd2 + python-mpd2 # prompt-toolkit used for qtile repl # see https://github.com/qtile/qtile/blob/master/libqtile/scripts/repl.py prompt-toolkit diff --git a/pkgs/development/python-modules/sendspin/default.nix b/pkgs/development/python-modules/sendspin/default.nix index 67e7bf4a0e44..64c212f41054 100644 --- a/pkgs/development/python-modules/sendspin/default.nix +++ b/pkgs/development/python-modules/sendspin/default.nix @@ -8,6 +8,7 @@ numpy, pulsectl-asyncio, pychromecast, + pytest-asyncio, pytestCheckHook, qrcode, readchar, @@ -18,14 +19,14 @@ buildPythonPackage (finalAttrs: { pname = "sendspin"; - version = "5.9.0"; + version = "7.4.0"; pyproject = true; src = fetchFromGitHub { owner = "Sendspin"; repo = "sendspin-cli"; tag = finalAttrs.version; - hash = "sha256-g+qw3mDHij50CEDKGjltMGNZoI6/HeJQ8zq8NSvD3Ls="; + hash = "sha256-B375jsOik0IdLtozH3t3hZKqoO+dtqkzX2bk5YuoO9Y="; }; postPatch = '' @@ -45,20 +46,23 @@ buildPythonPackage (finalAttrs: { readchar rich sounddevice - ]; + ] + ++ aiosendspin.optional-dependencies.server; optional-dependencies = { cast = [ pychromecast ]; }; - nativeCheckInputs = [ pytestCheckHook ]; + nativeCheckInputs = [ + pytest-asyncio + pytestCheckHook + ]; pythonImportsCheck = [ "sendspin" ]; disabledTests = [ - # AssertionError: assert None == (1, 'Digital') - "test_alsa_available_for_hw_device_with_mixer" - "test_hifiberry_dac_discovery" + # requires internet + "test_multi_worker_starts_and_serves_status" ]; meta = { diff --git a/pkgs/development/python-modules/sounddevice/default.nix b/pkgs/development/python-modules/sounddevice/default.nix index 3f3fdb55ad07..3ac147f224e8 100644 --- a/pkgs/development/python-modules/sounddevice/default.nix +++ b/pkgs/development/python-modules/sounddevice/default.nix @@ -4,6 +4,7 @@ buildPythonPackage, fetchPypi, setuptools, + setuptools-scm, cffi, numpy, portaudio, @@ -12,15 +13,18 @@ buildPythonPackage rec { pname = "sounddevice"; - version = "0.5.3"; + version = "0.5.5"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-y6wrYBmPurhFM2l+fEkEzIlexp1fs5c1VsnrdKRimyw="; + hash = "sha256-Ikh7ZRmMtb8iCHVRBbUk94rRc+Wra0Rb2rHJifZpjfM="; }; - build-system = [ setuptools ]; + build-system = [ + setuptools + setuptools-scm + ]; dependencies = [ cffi @@ -43,7 +47,8 @@ buildPythonPackage rec { meta = { description = "Play and Record Sound with Python"; - homepage = "http://python-sounddevice.rtfd.org/"; + homepage = "https://python-sounddevice.readthedocs.io/"; + changelog = "https://github.com/spatialaudio/python-sounddevice/releases/tag/${version}"; license = with lib.licenses; [ mit ]; }; } diff --git a/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch b/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch index 6ec399e25d5f..89f19cdfe528 100644 --- a/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch +++ b/pkgs/development/python-modules/sounddevice/fix-portaudio-library-path.patch @@ -1,8 +1,8 @@ -diff --git a/sounddevice.py b/sounddevice.py -index 0974289..2d56c28 100644 ---- a/sounddevice.py -+++ b/sounddevice.py -@@ -58,32 +58,7 @@ from ctypes.util import find_library as _find_library +diff --git a/src/sounddevice.py b/src/sounddevice.py +index 00fc6f8..72abede 100644 +--- a/src/sounddevice.py ++++ b/src/sounddevice.py +@@ -59,36 +59,7 @@ from _sounddevice import ffi as _ffi @@ -17,22 +17,26 @@ index 0974289..2d56c28 100644 - break - else: - raise OSError('PortAudio library not found') -- _lib = _ffi.dlopen(_libname) +- _lib: ... = _ffi.dlopen(_libname) -except OSError: - if _platform.system() == 'Darwin': - _libname = 'libportaudio.dylib' - elif _platform.system() == 'Windows': -- if 'SD_ENABLE_ASIO' in _os.environ: -- _libname = 'libportaudio' + _platform.architecture()[0] + '-asio.dll' +- if _platform.machine().lower() in ('arm64', 'aarch64'): +- _platform_suffix = 'arm64' - else: -- _libname = 'libportaudio' + _platform.architecture()[0] + '.dll' +- _platform_suffix = _platform.architecture()[0] +- if 'SD_ENABLE_ASIO' in _os.environ: +- _libname = 'libportaudio' + _platform_suffix + '-asio.dll' +- else: +- _libname = 'libportaudio' + _platform_suffix + '.dll' - else: - raise - import _sounddevice_data - _libname = _os.path.join( - next(iter(_sounddevice_data.__path__)), 'portaudio-binaries', _libname) -- _lib = _ffi.dlopen(_libname) -+_lib = _ffi.dlopen('@portaudio@') +- _lib: ... = _ffi.dlopen(_libname) ++_lib: ... = _ffi.dlopen('@portaudio@') - _sampleformats = { + _sampleformats: ... = { 'float32': _lib.paFloat32, diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix index 9a95fa154501..ee46cfa8c7c5 100644 --- a/pkgs/servers/home-assistant/component-packages.nix +++ b/pkgs/servers/home-assistant/component-packages.nix @@ -4245,7 +4245,7 @@ ]; "mpd" = ps: with ps; [ - mpd2 + python-mpd2 ]; "mqtt" = ps: with ps; [ diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 5e95fa15ab10..cb5c04222cd6 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1470,6 +1470,7 @@ mapAliases { mailnagWithPlugins = throw "mailnagWithPlugins has been removed because mailnag has been marked as broken since 2022."; # Added 2025-10-12 makeOverridable = warnAlias "'makeOverridable' has been removed from pkgs, use `lib.makeOverridable` instead" lib.makeOverridable; # Added 2025-10-30 manaplus = throw "manaplus has been removed, as it was broken"; # Added 2025-08-25 + mangowc = throw "'mangowc' has been renamed to 'mango'"; # Added 2026-06-23 manrope = throw "'manrope' has been removed because its source has been pulled"; # Added 2025-12-20 mariadb-client = throw "mariadb-client has been renamed to mariadb.client"; # Converted to throw 2025-10-26 marwaita-manjaro = throw "'marwaita-manjaro' has been renamed to/replaced by 'marwaita-teal'"; # Converted to throw 2025-10-27 @@ -2245,7 +2246,8 @@ mapAliases { transmission_3-gtk = throw "transmission_3-gtk has been removed in favour of transmission_4-gtk. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 transmission_3-qt = throw "transmission_3-qt has been removed in favour of transmission_4-qt. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 transmission_3_noSystemd = throw "transmission_3_noSystemd has been removed in favour of transmission_4. Note that upgrade caused data loss for some users so backup is recommended (see NixOS 24.11 release notes for details)"; # Added 2025-10-26 - transmission_4-qt = transmission_4-qt5; # Added 2026-06-05 + transmission_4-qt5 = lib.warnOnInstantiate "'transmission_4-qt5' has been removed in favour of 'transmission_4-qt'" transmission_4-qt; # Added 2026-06-25 + transmission_4-qt6 = lib.warnOnInstantiate "'transmission_4-qt6' has been renamed to 'transmission_4-qt'" transmission_4-qt; # Added 2026-06-25 travis = throw "'travis' has been removed because upstream has stopped maintaining it, and it contains dependencies with security vulnerabilities."; # Added 2026-02-14 treefmt2 = throw "'treefmt2' has been renamed to/replaced by 'treefmt'"; # Converted to throw 2025-10-27 tremor-language-server = throw "'tremor-language-server' has been removed because it is unmaintained"; # Added 2025-11-17 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b477f4ce4269..bd5f15a42713 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1855,6 +1855,8 @@ with pkgs; cffconvert = python3Packages.toPythonApplication python3Packages.cffconvert; + aiovban-pyaudio = python3Packages.toPythonApplication python3Packages.aiovban-pyaudio; + clickhouse-lts = callPackage ../by-name/cl/clickhouse/lts.nix { }; cmdpack = callPackages ../tools/misc/cmdpack { }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index ad1f9a67a80a..2d86b5780d55 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -371,6 +371,7 @@ mapAliases { monarchmoney = throw "'monarchmoney' has been renamed to/replaced by 'monarchmoneycommunity'"; # Added 2026-03-05 monkeytype = throw "'monkeytype' has been removed as it was unmaintained upstream"; # Added 2026-04-19 moretools = "'moretools' has been removed because it is unmaintained"; # Added 2026-01-19 + mpd2 = warnAlias "'mpd2' has been renamed to 'python-mpd2'"; # Added 2026-06-14 mpire = throw "'mpire' has been removed because it is unused in Nixpkgs"; # Added 2026-06-22 msldap-bad = throw "'msldap-bad' has been renamed to/replaced by 'badldap'"; # added 2025-11-06 mullvad-closest = throw "'mullvad-closest' has been removed as it was unmaintained. Consider using 'mullvad-compass' instead."; # Added 2026-01-13 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 4666c70de2f0..f9b1c6175496 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -578,6 +578,8 @@ self: super: with self; { aiovban = callPackage ../development/python-modules/aiovban { }; + aiovban-pyaudio = callPackage ../development/python-modules/aiovban-pyaudio { }; + aiovlc = callPackage ../development/python-modules/aiovlc { }; aiovodafone = callPackage ../development/python-modules/aiovodafone { }; @@ -2030,6 +2032,8 @@ self: super: with self; { beartype = callPackage ../development/python-modules/beartype { }; + beat-this = callPackage ../development/python-modules/beat-this { }; + beaupy = callPackage ../development/python-modules/beaupy { }; beautiful-date = callPackage ../development/python-modules/beautiful-date { }; @@ -5596,6 +5600,8 @@ self: super: with self; { fastmcp = callPackage ../development/python-modules/fastmcp { }; + fastmcp-slim = callPackage ../development/python-modules/fastmcp-slim { }; + fastmri = callPackage ../development/python-modules/fastmri { }; fastnlo-toolkit = toPythonModule ( @@ -7199,6 +7205,8 @@ self: super: with self; { hebg = callPackage ../development/python-modules/hebg { }; + hebi-py = callPackage ../development/python-modules/hebi-py { }; + hegel-ip-client = callPackage ../development/python-modules/hegel-ip-client { }; helion = callPackage ../development/python-modules/helion { }; @@ -10550,8 +10558,6 @@ self: super: with self; { callPackage ../development/python-modules/mozjpeg_lossless_optimization { }; - mpd2 = callPackage ../development/python-modules/mpd2 { }; - mpegdash = callPackage ../development/python-modules/mpegdash { }; mpi-pytest = callPackage ../development/python-modules/mpi-pytest { }; @@ -11466,6 +11472,8 @@ self: super: with self; { nmcli = callPackage ../development/python-modules/nmcli { }; + nnaudio = callPackage ../development/python-modules/nnaudio { }; + nnpdf = toPythonModule (pkgs.nnpdf.override { python3 = python; }); noaa-coops = callPackage ../development/python-modules/noaa-coops { }; @@ -16308,6 +16316,8 @@ self: super: with self; { python-motionmount = callPackage ../development/python-modules/python-motionmount { }; + python-mpd2 = callPackage ../development/python-modules/python-mpd2 { }; + python-mpv-jsonipc = callPackage ../development/python-modules/python-mpv-jsonipc { }; python-multipart = callPackage ../development/python-modules/python-multipart { };