diff --git a/.github/workflows/periodic-merge.yml b/.github/workflows/periodic-merge.yml index 2eb0e347a0c1..66681b2ece3a 100644 --- a/.github/workflows/periodic-merge.yml +++ b/.github/workflows/periodic-merge.yml @@ -60,10 +60,10 @@ jobs: github_token: ${{ steps.app-token.outputs.token }} - name: Comment on failure - uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0 if: ${{ failure() }} - with: - issue-number: 105153 - body: | + env: + BODY_TEXT: | Periodic merge from `${{ inputs.from }}` into [`${{ inputs.into }}`](https://github.com/NixOS/nixpkgs/tree/${{ inputs.into }}) has [failed](https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }}). - token: ${{ steps.app-token.outputs.token }} + GH_TOKEN: ${{ steps.app-token.outputs.token }} + run: | + gh pr comment 105153 --body "$BODY_TEXT" diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 87ca92510536..dfbb691ef8b2 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -9974,6 +9974,12 @@ githubId = 66037909; name = "Graham J. Norris"; }; + granddave = { + email = "davidisaksson93@gmail.com"; + github = "Granddave"; + githubId = 13297896; + name = "David Isaksson"; + }; gravndal = { email = "gaute.ravndal+nixos@gmail.com"; github = "gravndal"; diff --git a/nixos/modules/i18n/input-method/default.md b/nixos/modules/i18n/input-method/default.md index f2d7934f94fb..c05f8311a0f4 100644 --- a/nixos/modules/i18n/input-method/default.md +++ b/nixos/modules/i18n/input-method/default.md @@ -108,6 +108,8 @@ Available extra Fcitx5 addons are: - Anthy (`fcitx5-anthy`): Anthy is a system for Japanese input method. It converts Hiragana text to Kana Kanji mixed text. + - Array (`fcitx5-array`): Array is a Chinese shape-based input method that + uses a grid of 30 keys. - Chewing (`fcitx5-chewing`): Chewing is an intelligent Zhuyin input method. It is one of the most popular input methods among Traditional Chinese Unix users. diff --git a/nixos/modules/services/desktop-managers/lomiri.nix b/nixos/modules/services/desktop-managers/lomiri.nix index 1f40afb3732a..a05923fd82b5 100644 --- a/nixos/modules/services/desktop-managers/lomiri.nix +++ b/nixos/modules/services/desktop-managers/lomiri.nix @@ -99,6 +99,10 @@ in libayatana-common ubports-click ]) + # Qt5 qtwebengine is not secure: https://github.com/NixOS/nixpkgs/pull/435067 + ++ (with pkgs.lomiri-qt6; [ + morph-browser + ]) ++ (with pkgs.lomiri; [ hfd-service libusermetrics @@ -125,10 +129,6 @@ in lomiri-thumbnailer lomiri-url-dispatcher mediascanner2 # TODO possibly needs to be kicked off by graphical-session.target - # Qt5 qtwebengine is not secure: https://github.com/NixOS/nixpkgs/pull/435067 - # morph-browser - # Adding another browser that is known-working until Morph Browser can migrate to Qt6 - pkgs.epiphany qtmir # not having its desktop file for Xwayland available causes any X11 application to crash the session teleports ]); diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index badad067fe11..1263569e52ce 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -991,7 +991,7 @@ in moonraker = runTest ./moonraker.nix; moosefs = runTest ./moosefs.nix; mopidy = runTest ./mopidy.nix; - morph-browser = runTest ./morph-browser.nix; + morph-browser = discoverTests (import ./morph-browser.nix); mosquitto = runTest ./mosquitto.nix; movim = import ./web-apps/movim { inherit runTest; diff --git a/nixos/tests/lomiri.nix b/nixos/tests/lomiri.nix index b548288c62c6..68254fbeeb35 100644 --- a/nixos/tests/lomiri.nix +++ b/nixos/tests/lomiri.nix @@ -507,16 +507,15 @@ in machine.send_key("alt-f4") # Morph is how we go online - # Qt5 qtwebengine is not secure: https://github.com/NixOS/nixpkgs/pull/435067 - # with subtest("morph browser works"): - # open_starter() - # machine.send_chars("Morph\n") - # wait_for_text(r"(Bookmarks|address|site|visited any)") - # machine.screenshot("morph_open") - # - # # morph-browser has a separate VM test to test its basic functionalities - # - # machine.send_key("alt-f4") + with subtest("morph browser works"): + open_starter() + machine.send_chars("Morph\n") + wait_for_text(r"(Bookmarks|address|site|visited any)") + machine.screenshot("morph_open") + + # morph-browser has a separate VM test to test its basic functionalities + + machine.send_key("alt-f4") # LSS provides DE settings with subtest("system settings open"): @@ -689,7 +688,7 @@ in machine.screenshot("settings_lomiri-content-hub_peers") # Select Gallery as content source - mouse_click(460, 80) + mouse_click(540, 80) # Expect Gallery to be brought into the foreground, with its sharing page open wait_for_text("Photos") diff --git a/nixos/tests/morph-browser.nix b/nixos/tests/morph-browser.nix index 04857ceeeb10..03d338e96817 100644 --- a/nixos/tests/morph-browser.nix +++ b/nixos/tests/morph-browser.nix @@ -1,64 +1,81 @@ -{ pkgs, lib, ... }: -{ - name = "morph-browser-standalone"; - meta.maintainers = lib.teams.lomiri.members; - - nodes.machine = - { config, pkgs, ... }: +let + makeTest = import ./make-test-python.nix; + generic = { - imports = [ - ./common/x11.nix - ]; + withQt6, + }: + makeTest ( + { pkgs, lib, ... }: + { + name = "morph-browser-${if withQt6 then "qt6" else "qt5"}-standalone"; + meta.maintainers = lib.teams.lomiri.members; - services.xserver.enable = true; + nodes.machine = + { + config, + pkgs, + ... + }: + { + imports = [ + ./common/x11.nix + ]; - environment = { - systemPackages = with pkgs.lomiri; [ - suru-icon-theme - morph-browser - ]; - variables = { - UITK_ICON_THEME = "suru"; - }; - }; + services.xserver.enable = true; - i18n.supportedLocales = [ "all" ]; + environment = { + systemPackages = with (if withQt6 then pkgs.lomiri-qt6 else pkgs.lomiri); [ + suru-icon-theme + morph-browser + ]; + variables = { + UITK_ICON_THEME = "suru"; + }; + }; - fonts.packages = with pkgs; [ - # Intended font & helps with OCR - ubuntu-classic - ]; - }; + i18n.supportedLocales = [ "all" ]; - enableOCR = true; + fonts.packages = with pkgs; [ + # Intended font & helps with OCR + ubuntu-classic + ]; + }; - testScript = '' - machine.wait_for_x() + enableOCR = true; - with subtest("morph browser launches"): - machine.succeed("morph-browser >&2 &") - machine.sleep(10) - machine.send_key("alt-f10") - machine.sleep(5) - machine.wait_for_text(r"Web Browser|New|sites|Bookmarks") - machine.screenshot("morph_open") + testScript = '' + machine.wait_for_x() - with subtest("morph browser displays HTML"): - machine.send_chars("file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html\n") - machine.wait_for_text("Valgrind Documentation") - machine.screenshot("morph_htmlcontent") + with subtest("morph browser launches"): + machine.succeed("morph-browser >&2 &") + machine.sleep(10) + machine.send_key("alt-f10") + machine.sleep(5) + machine.wait_for_text(r"Web Browser|New|sites|Bookmarks") + machine.screenshot("morph_open") - machine.succeed("pkill -f morph-browser") + with subtest("morph browser displays HTML"): + machine.send_chars("file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html\n") + machine.wait_for_text("Valgrind Documentation") + machine.screenshot("morph_htmlcontent") - # Get rid of saved tabs, to show localised start page - machine.succeed("rm -r /root/.local/share/morph-browser") + machine.succeed("pkill -f morph-browser") - with subtest("morph browser localisation works"): - machine.succeed("env LANG=de_DE.UTF-8 morph-browser >&2 &") - machine.sleep(10) - machine.send_key("alt-f10") - machine.sleep(5) - machine.wait_for_text(r"Web-Browser|Neuer|Seiten|Lesezeichen") - machine.screenshot("morph_localised") - ''; + # Get rid of saved tabs, to show localised start page + machine.succeed("rm -r /root/.local/share/morph-browser") + + with subtest("morph browser localisation works"): + machine.succeed("env LANG=de_DE.UTF-8 morph-browser >&2 &") + machine.sleep(10) + machine.send_key("alt-f10") + machine.sleep(5) + machine.wait_for_text(r"Web-Browser|Neuer|Seiten|Lesezeichen") + machine.screenshot("morph_localised") + ''; + } + ); +in +{ + qt5 = generic { withQt6 = false; }; + qt6 = generic { withQt6 = true; }; } diff --git a/pkgs/applications/editors/jetbrains/ides/goland.nix b/pkgs/applications/editors/jetbrains/ides/goland.nix index 5797ad63fce4..a058837e8e65 100644 --- a/pkgs/applications/editors/jetbrains/ides/goland.nix +++ b/pkgs/applications/editors/jetbrains/ides/goland.nix @@ -12,20 +12,20 @@ let # update-script-start: urls urls = { x86_64-linux = { - url = "https://download.jetbrains.com/go/goland-2025.3.4.tar.gz"; - hash = "sha256-S8IRWe+viRxtLrnCgQPR0J8QrOSr5yvtcOpwsjkq9DY="; + url = "https://download.jetbrains.com/go/goland-2026.1.tar.gz"; + hash = "sha256-+TORnDso307j+WwFspoQRZ8IN2TFyy5uUvLyjiNhHiY="; }; aarch64-linux = { - url = "https://download.jetbrains.com/go/goland-2025.3.4-aarch64.tar.gz"; - hash = "sha256-yUI3hURv5jdQ2CrALp7wLShL7pGFa2d7BUSstwFd2mo="; + url = "https://download.jetbrains.com/go/goland-2026.1-aarch64.tar.gz"; + hash = "sha256-inAjJw9xzpGjdo4pgoqQwM+ZyEnvLQZggPt4S/LGFxg="; }; x86_64-darwin = { - url = "https://download.jetbrains.com/go/goland-2025.3.4.dmg"; - hash = "sha256-e9CC9bZ02mxHr788w9SKB6VvhMJ02UbZn0K4IDLTgjw="; + url = "https://download.jetbrains.com/go/goland-2026.1.dmg"; + hash = "sha256-zFAjXSdOaf3C2zQDDriOK9F2xOxGTrAyacVHUh0Sqck="; }; aarch64-darwin = { - url = "https://download.jetbrains.com/go/goland-2025.3.4-aarch64.dmg"; - hash = "sha256-9XW909OrBLhWuMX/doFFxychU97vP5uAC3bgTs2FaLg="; + url = "https://download.jetbrains.com/go/goland-2026.1-aarch64.dmg"; + hash = "sha256-Zo48RMtVUweV541ImYxtQTBp4L4ZhyTDxFFwK+YyrZk="; }; }; # update-script-end: urls @@ -39,8 +39,8 @@ in product = "Goland"; # update-script-start: version - version = "2025.3.4"; - buildNumber = "253.32098.60"; + version = "2026.1"; + buildNumber = "261.22158.291"; # update-script-end: version src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}")); diff --git a/pkgs/applications/editors/jetbrains/ides/phpstorm.nix b/pkgs/applications/editors/jetbrains/ides/phpstorm.nix index a0d8b42686d5..8fc96148791c 100644 --- a/pkgs/applications/editors/jetbrains/ides/phpstorm.nix +++ b/pkgs/applications/editors/jetbrains/ides/phpstorm.nix @@ -12,20 +12,20 @@ let # update-script-start: urls urls = { x86_64-linux = { - url = "https://download.jetbrains.com/webide/PhpStorm-2025.3.4.tar.gz"; - hash = "sha256-rUFOzut21nrAoKq88W8naa61Y/ncA7pn0MO3rGmuBIY="; + url = "https://download.jetbrains.com/webide/PhpStorm-2026.1.tar.gz"; + hash = "sha256-OpSc/Xg4nWh9XRpVN8FLaV1Gwz8kbM+S9WVk27jJ7gY="; }; aarch64-linux = { - url = "https://download.jetbrains.com/webide/PhpStorm-2025.3.4-aarch64.tar.gz"; - hash = "sha256-wjBhibJGItzDKkRtx4tXqM0Kqn4K8HNGdAVMGalm7Fw="; + url = "https://download.jetbrains.com/webide/PhpStorm-2026.1-aarch64.tar.gz"; + hash = "sha256-StoSzSx4fxeeB+PnZB5PCEzPJuWCa+HeY9u6hGGlUHg="; }; x86_64-darwin = { - url = "https://download.jetbrains.com/webide/PhpStorm-2025.3.4.dmg"; - hash = "sha256-emlgbnHw1yaRHaiFjCL9EBYFffdWWNF7AFWyIERj0QA="; + url = "https://download.jetbrains.com/webide/PhpStorm-2026.1.dmg"; + hash = "sha256-KN4OVeR7TCA+PigHemh0eIT+y3hRKAGFJlEFmRc45Xg="; }; aarch64-darwin = { - url = "https://download.jetbrains.com/webide/PhpStorm-2025.3.4-aarch64.dmg"; - hash = "sha256-mxrTc5v4IIDgZzwMtbvdifmetoDacGNEhyVzPiVMSSw="; + url = "https://download.jetbrains.com/webide/PhpStorm-2026.1-aarch64.dmg"; + hash = "sha256-V3TQIvaYH3+NmWIDJFyTcO7Zwdd+TPP0TSFmX5pjEhM="; }; }; # update-script-end: urls @@ -39,8 +39,8 @@ mkJetBrainsProduct { product = "PhpStorm"; # update-script-start: version - version = "2025.3.4"; - buildNumber = "253.32098.40"; + version = "2026.1"; + buildNumber = "261.22158.283"; # update-script-end: version src = fetchurl (urls.${system} or (throw "Unsupported system: ${system}")); diff --git a/pkgs/applications/emulators/libretro/cores/o2em.nix b/pkgs/applications/emulators/libretro/cores/o2em.nix index 0af8242cee2f..bce4470721ca 100644 --- a/pkgs/applications/emulators/libretro/cores/o2em.nix +++ b/pkgs/applications/emulators/libretro/cores/o2em.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "o2em"; - version = "0-unstable-2024-10-21"; + version = "0-unstable-2026-03-31"; src = fetchFromGitHub { owner = "libretro"; repo = "libretro-o2em"; - rev = "3ba4231c1dc8dcdf487428712856b790d2e4b8f3"; - hash = "sha256-HhTkFm9Jte4wDPxTcXRgCg2tCfdQvo0M3nHRhlPmz/w="; + rev = "dee1076eb70c728d4ff47186aea9cd1c11ce7638"; + hash = "sha256-djj7sEkUIoze1sZaZciIw7PdYDb1wETuZd4CFdZTiUM="; }; makefile = "Makefile"; diff --git a/pkgs/applications/emulators/libretro/cores/same_cdi.nix b/pkgs/applications/emulators/libretro/cores/same_cdi.nix index d0ee91f77bbb..d8527523a885 100644 --- a/pkgs/applications/emulators/libretro/cores/same_cdi.nix +++ b/pkgs/applications/emulators/libretro/cores/same_cdi.nix @@ -12,13 +12,13 @@ }: mkLibretroCore { core = "same_cdi"; - version = "0-unstable-2025-01-31"; + version = "0-unstable-2026-03-31"; src = fetchFromGitHub { owner = "libretro"; repo = "same_cdi"; - rev = "7ee1d8e9cb4307b7cd44ee1dd757e9b3f48f41d5"; - hash = "sha256-EGE3NuO0gpZ8MKPypH8rFwJiv4QsdKuIyLKVuKTcvws="; + rev = "2184aa6d87a31fb6c64534b9b7b2d26e36bae757"; + hash = "sha256-8QJtAyVF6KQmWSzQ6t5s4qmSVT8CmRx5uulq4c3LDRo="; }; patches = [ diff --git a/pkgs/by-name/ae/aegis-rs/package.nix b/pkgs/by-name/ae/aegis-rs/package.nix new file mode 100644 index 000000000000..353dad556495 --- /dev/null +++ b/pkgs/by-name/ae/aegis-rs/package.nix @@ -0,0 +1,34 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, + versionCheckHook, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "aegis-rs"; + version = "0.5.0"; + + src = fetchFromGitHub { + owner = "Granddave"; + repo = "aegis-rs"; + tag = "v${finalAttrs.version}"; + hash = "sha256-V6b9CDLjpyRb/MlbAswQ2kJFGeYDu9r2Y/8lBB+kLGc="; + }; + cargoHash = "sha256-QYTmTJiwqslFM1VT+B+HtA8idvhKOPY4+ip/FqQGZ34="; + + passthru.updateScript = nix-update-script { }; + + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + + meta = { + description = "Aegis compatible OTP generator for the CLI"; + homepage = "https://github.com/Granddave/aegis-rs"; + changelog = "https://github.com/Granddave/aegis-rs/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ granddave ]; + mainProgram = "aegis-rs"; + }; +}) diff --git a/pkgs/by-name/ay/ayatana-indicator-display/package.nix b/pkgs/by-name/ay/ayatana-indicator-display/package.nix index 83adddf1ae61..c13451700809 100644 --- a/pkgs/by-name/ay/ayatana-indicator-display/package.nix +++ b/pkgs/by-name/ay/ayatana-indicator-display/package.nix @@ -15,8 +15,6 @@ intltool, libayatana-common, libgudev, - libqtdbusmock, - libqtdbustest, librda, libsForQt5, lomiri, @@ -91,8 +89,8 @@ stdenv.mkDerivation (finalAttrs: { checkInputs = [ gtest - libqtdbusmock - libqtdbustest + libsForQt5.libqtdbusmock + libsForQt5.libqtdbustest properties-cpp ]; diff --git a/pkgs/by-name/ay/ayatana-indicator-sound/package.nix b/pkgs/by-name/ay/ayatana-indicator-sound/package.nix index 142aefe75ad6..623925635e97 100644 --- a/pkgs/by-name/ay/ayatana-indicator-sound/package.nix +++ b/pkgs/by-name/ay/ayatana-indicator-sound/package.nix @@ -16,8 +16,6 @@ libgee, libnotify, libpulseaudio, - libqtdbusmock, - libqtdbustest, libsForQt5, libxml2, lomiri, @@ -99,8 +97,8 @@ stdenv.mkDerivation (finalAttrs: { dbus-test-runner gtest libsForQt5.qtbase - libqtdbusmock - libqtdbustest + libsForQt5.libqtdbusmock + libsForQt5.libqtdbustest lomiri.gmenuharness ]; diff --git a/pkgs/by-name/ba/balena-cli/package.nix b/pkgs/by-name/ba/balena-cli/package.nix index a46598d869c0..318ee8928b71 100644 --- a/pkgs/by-name/ba/balena-cli/package.nix +++ b/pkgs/by-name/ba/balena-cli/package.nix @@ -3,7 +3,7 @@ stdenv, buildNpmPackage, fetchFromGitHub, - nodejs_latest, + nodejs_24, versionCheckHook, node-gyp, python3, @@ -13,10 +13,10 @@ let buildNpmPackage' = buildNpmPackage.override { - nodejs = nodejs_latest; + nodejs = nodejs_24; }; node-gyp' = node-gyp.override { - nodejs = nodejs_latest; + nodejs = nodejs_24; }; in buildNpmPackage' rec { diff --git a/pkgs/by-name/be/betterdisplay/package.nix b/pkgs/by-name/be/betterdisplay/package.nix index fa2c511d2b8c..275f7652af3c 100644 --- a/pkgs/by-name/be/betterdisplay/package.nix +++ b/pkgs/by-name/be/betterdisplay/package.nix @@ -6,7 +6,7 @@ nix-update-script, versionCheckHook, writeShellScript, - xcbuild, + re-plistbuddy, }: stdenvNoCC.mkDerivation (finalAttrs: { @@ -37,7 +37,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgram = writeShellScript "version-check" '' - ${xcbuild}/bin/PlistBuddy -c "Print :CFBundleShortVersionString" "$1" + ${lib.getExe' re-plistbuddy "PlistBuddy"} -c "Print :CFBundleShortVersionString" "$1" ''; versionCheckProgramArg = [ "${placeholder "out"}/Applications/BetterDisplay.app/Contents/Info.plist" diff --git a/pkgs/by-name/bu/burn-central-cli/package.nix b/pkgs/by-name/bu/burn-central-cli/package.nix new file mode 100644 index 000000000000..f4a9270dbc68 --- /dev/null +++ b/pkgs/by-name/bu/burn-central-cli/package.nix @@ -0,0 +1,54 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + pkg-config, + openssl, + zlib, + nix-update-script, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "burn-central-cli"; + version = "0.4.0"; + + src = fetchFromGitHub { + owner = "tracel-ai"; + repo = "burn-central-cli"; + tag = "v${finalAttrs.version}"; + hash = "sha256-gZ92DFZPox6s4+EKPQ/uxWNV5+F7kYhSnv/Mtpur3Vo="; + }; + + buildAndTestSubdir = "crates/burn-central-cli"; + + cargoHash = "sha256-kUCjkkIog+xXFMTw8LAoHE/D6aBPR6S7Mtqg/Hjuw+o="; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + openssl + # Pulled in by flate2 + zlib + ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Command-line tool for interacting with Burn Central"; + longDescription = '' + The Burn Central CLI (burn) is the command-line tool for interacting + with Burn Central, the centralized platform for experiment tracking, + model sharing, and deployment for Burn users. + ''; + homepage = "https://github.com/tracel-ai/burn-central-cli"; + changelog = "https://github.com/tracel-ai/burn-central-cli/releases/tag/v${finalAttrs.version}"; + license = with lib.licenses; [ + mit + asl20 + ]; + maintainers = with lib.maintainers; [ kilyanni ]; + mainProgram = "burn"; + }; +}) diff --git a/pkgs/by-name/cy/cyberduck/package.nix b/pkgs/by-name/cy/cyberduck/package.nix index 8ec704005524..fb23195c4578 100644 --- a/pkgs/by-name/cy/cyberduck/package.nix +++ b/pkgs/by-name/cy/cyberduck/package.nix @@ -6,8 +6,7 @@ makeBinaryWrapper, versionCheckHook, writeShellScript, - coreutils, - xcbuild, + re-plistbuddy, }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "cyberduck"; @@ -36,8 +35,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgram = writeShellScript "version-check" '' - marketing_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleShortVersionString" "$1" | ${coreutils}/bin/tr -d '"') - build_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleVersion" "$1") + marketing_version=$(${lib.getExe' re-plistbuddy "PlistBuddy"} -c "Print :CFBundleShortVersionString" "$1") + build_version=$(${lib.getExe' re-plistbuddy "PlistBuddy"} -c "Print :CFBundleVersion" "$1") echo $marketing_version.$build_version ''; diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix index 15bde47de803..170f35405d86 100644 --- a/pkgs/by-name/de/devenv/package.nix +++ b/pkgs/by-name/de/devenv/package.nix @@ -53,6 +53,11 @@ rustPlatform.buildRustPackage { cargoHash = "sha256-p5kI7HlG6RVxCCEb/J0L2gh36jkm/atAV98ny3h4vqo="; + # Upstream tagged v2.0.6 with Cargo.toml already bumped to 2.0.7 + postPatch = '' + substituteInPlace Cargo.toml --replace-fail 'version = "2.0.7"' 'version = "${version}"' + ''; + env = { RUSTFLAGS = "--cfg tracing_unstable"; LIBSQLITE3_SYS_USE_PKG_CONFIG = "1"; diff --git a/pkgs/by-name/el/elephant/package.nix b/pkgs/by-name/el/elephant/package.nix index aad099a93348..1629406617d5 100644 --- a/pkgs/by-name/el/elephant/package.nix +++ b/pkgs/by-name/el/elephant/package.nix @@ -74,16 +74,16 @@ let in buildGoModule (finalAttrs: { pname = "elephant"; - version = "2.20.2"; + version = "2.20.3"; src = fetchFromGitHub { owner = "abenz1267"; repo = "elephant"; rev = "v${finalAttrs.version}"; - hash = "sha256-RvCzINnVISBT3d0F1DoIcQFbQsbRJISW9qZeKTzmNaA="; + hash = "sha256-5PLTPbnbtK0iDbsB9yFeHr5y/pv6/XzoVm/CDeXXt/c="; }; - vendorHash = "sha256-tO+5x2FIY1UBvWl9x3ZSpHwTWUlw1VNDTi9+2uY7xdU="; + vendorHash = "sha256-EWXZ+9/QDRpidpVHBcfJgp0xoc3YtRsiC/UTk1R+FSY="; buildInputs = [ protobuf ]; nativeBuildInputs = [ diff --git a/pkgs/by-name/en/enpass-mac/package.nix b/pkgs/by-name/en/enpass-mac/package.nix index ecc81914c6a7..b1ee0150ace4 100644 --- a/pkgs/by-name/en/enpass-mac/package.nix +++ b/pkgs/by-name/en/enpass-mac/package.nix @@ -12,8 +12,7 @@ common-updater-scripts, versionCheckHook, writeShellScript, - coreutils, - xcbuild, + re-plistbuddy, }: stdenvNoCC.mkDerivation (finalAttrs: { @@ -71,8 +70,8 @@ stdenvNoCC.mkDerivation (finalAttrs: { nativeInstallCheckInputs = [ versionCheckHook ]; versionCheckProgram = writeShellScript "version-check" '' - marketing_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleShortVersionString" "$1" | ${coreutils}/bin/tr -d '"') - build_version=$(${xcbuild}/bin/PlistBuddy -c "Print :CFBundleVersion" "$1") + marketing_version=$(${lib.getExe' re-plistbuddy "PlistBuddy"} -c "Print :CFBundleShortVersionString" "$1") + build_version=$(${lib.getExe' re-plistbuddy "PlistBuddy"} -c "Print :CFBundleVersion" "$1") echo $marketing_version.$build_version ''; diff --git a/pkgs/by-name/fc/fcitx5-array/package.nix b/pkgs/by-name/fc/fcitx5-array/package.nix new file mode 100644 index 000000000000..873b5faad5c3 --- /dev/null +++ b/pkgs/by-name/fc/fcitx5-array/package.nix @@ -0,0 +1,48 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fmt, + cmake, + extra-cmake-modules, + gettext, + fcitx5, + sqlite, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "fcitx5-array"; + version = "0.9.6"; + + src = fetchFromGitHub { + owner = "ray2501"; + repo = "fcitx5-array"; + tag = finalAttrs.version; + hash = "sha256-YDFT/CawFiPN3kXzHMpenCzWMJSA1dFUhVe22EDfnU8="; + }; + + nativeBuildInputs = [ + cmake + extra-cmake-modules + gettext + ]; + + buildInputs = [ + fmt + fcitx5 + sqlite + ]; + + strictDeps = true; + + meta = { + description = "Array wrapper for Fcitx5"; + homepage = "https://github.com/ray2501/fcitx5-array"; + license = with lib.licenses; [ + gpl2Plus + lgpl21Plus + ]; + maintainers = with lib.maintainers; [ yanganto ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/pkgs/by-name/ff/ffmpreg/package.nix b/pkgs/by-name/ff/ffmpreg/package.nix new file mode 100644 index 000000000000..6d2161b71e7a --- /dev/null +++ b/pkgs/by-name/ff/ffmpreg/package.nix @@ -0,0 +1,27 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, +}: + +rustPlatform.buildRustPackage { + pname = "ffmpreg"; + version = "0.1.2-unstable-2026-03-25"; + + src = fetchFromGitHub { + owner = "yazaldefilimone"; + repo = "ffmpreg"; + rev = "a6fca970b98357ccd275acd797673ef7cf4ca02f"; + hash = "sha256-p2dtNmJ7fXFzgsfg32Tmr6xr1wuZAHziNgMeUOfyjgw="; + }; + + cargoHash = "sha256-GxUBhFWoAq6zCDHWTiZ/pC6BWu4JcW71Sh9Du2H36wg="; + + meta = { + description = "Experimental safe Rust-native multimedia toolkit for decoding, transforming, and encoding audio and video"; + homepage = "https://github.com/yazaldefilimone/ffmpreg"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ aprl ]; + mainProgram = "ffmpreg"; + }; +} diff --git a/pkgs/by-name/fo/fosrl-newt/package.nix b/pkgs/by-name/fo/fosrl-newt/package.nix index 547ccf033c97..61c667b1a7f2 100644 --- a/pkgs/by-name/fo/fosrl-newt/package.nix +++ b/pkgs/by-name/fo/fosrl-newt/package.nix @@ -8,13 +8,13 @@ buildGoModule (finalAttrs: { pname = "newt"; - version = "1.10.3"; + version = "1.10.4"; src = fetchFromGitHub { owner = "fosrl"; repo = "newt"; tag = finalAttrs.version; - hash = "sha256-b/ZcU4N13+91tVhKMDPBaCGmBW11m5yQNgd1FaTxbsE="; + hash = "sha256-Dtzx/Rs7aa2GkG7Qq4pvGN4ghfS7EyVhx7rQh8sRlQU="; }; vendorHash = "sha256-vy6Dqjek7pLdASbCrM9snq5Dt9lbwNJ0AuQboy1JWNQ="; diff --git a/pkgs/by-name/ge/gegl/package.nix b/pkgs/by-name/ge/gegl/package.nix index a59ce0cf13d6..d1da3ad9284f 100644 --- a/pkgs/by-name/ge/gegl/package.nix +++ b/pkgs/by-name/ge/gegl/package.nix @@ -29,7 +29,7 @@ gexiv2, libwebp, luajit, - openexr_2, + openexr, suitesparse, withLuaJIT ? lib.meta.availableOn stdenv.hostPlatform luajit, gimp, @@ -77,7 +77,7 @@ stdenv.mkDerivation (finalAttrs: { libraw libwebp gexiv2 - openexr_2 + openexr suitesparse ] ++ lib.optionals stdenv.cc.isClang [ diff --git a/pkgs/by-name/ge/gelly/package.nix b/pkgs/by-name/ge/gelly/package.nix index d42e743c8517..472bd8dd2bc5 100644 --- a/pkgs/by-name/ge/gelly/package.nix +++ b/pkgs/by-name/ge/gelly/package.nix @@ -18,16 +18,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "gelly"; - version = "0.19.0"; + version = "1.0.0"; src = fetchFromGitHub { owner = "Fingel"; repo = "gelly"; tag = "v${finalAttrs.version}"; - hash = "sha256-pxyO5CVNfLHMrTKamyEBUj8QTg2bPTfS5FZ3YTmkkQk="; + hash = "sha256-ZmtofGQYC32pz9WWTvENTU1qSVOXDu+CneyX/YelvZU="; }; - cargoHash = "sha256-ZKeVAgQsBOhhNbqdHYRTtpq6+z+xa1Be4eFnrY71f+s="; + cargoHash = "sha256-dlMC+nUStrrjYlwxG+NVoqFOuTMcdaUL5a20dN3G5HQ="; nativeBuildInputs = [ pkg-config diff --git a/pkgs/by-name/gi/gitea-actions-runner/package.nix b/pkgs/by-name/gi/gitea-actions-runner/package.nix index acc6a49f91ec..592b027064ef 100644 --- a/pkgs/by-name/gi/gitea-actions-runner/package.nix +++ b/pkgs/by-name/gi/gitea-actions-runner/package.nix @@ -8,17 +8,17 @@ buildGoModule (finalAttrs: { pname = "gitea-actions-runner"; - version = "0.3.0"; + version = "0.3.1"; src = fetchFromGitea { domain = "gitea.com"; owner = "gitea"; repo = "act_runner"; rev = "v${finalAttrs.version}"; - hash = "sha256-D2b0m3XEEEugjnrEzpYGxwD8hzpoPzIW9lNrCbgmKVc="; + hash = "sha256-D3/vJUQuNAgUWNyfL9QWmByZ9A/F4+pfA6GR0SDcMpQ="; }; - vendorHash = "sha256-EqU+YJrwKtA9LHa7DkRJ6er5GNocR8Gbhjjx72mPhqE="; + vendorHash = "sha256-XRXoChH2ApQS65xnzeGP4NIUL0RKovLWvVIAnBncT7Y="; ldflags = [ "-s" diff --git a/pkgs/by-name/go/goreleaser/package.nix b/pkgs/by-name/go/goreleaser/package.nix index c290c94dad01..20de5b683a4a 100644 --- a/pkgs/by-name/go/goreleaser/package.nix +++ b/pkgs/by-name/go/goreleaser/package.nix @@ -10,16 +10,16 @@ }: buildGo126Module (finalAttrs: { pname = "goreleaser"; - version = "2.14.3"; + version = "2.15.0"; src = fetchFromGitHub { owner = "goreleaser"; repo = "goreleaser"; rev = "v${finalAttrs.version}"; - hash = "sha256-2zG7B6d+NZ1XJrObCfgBZyin5JDv6hKlvZ8C4ckAJ8Q="; + hash = "sha256-IoNa4D3OM0B+/6KNS/n0T1uQwDK34aFE/I6tsavKhVQ="; }; - vendorHash = "sha256-ImjoPvxkg35Fn4XdhTFLT2o4cDCjuyEOn1mDkMTjksk="; + vendorHash = "sha256-Yx0K3/6WuWRpP3sLoo+xnMDoJN+OtVZGtBbNaroMRy8="; ldflags = [ "-s" diff --git a/pkgs/by-name/gr/greenmask/package.nix b/pkgs/by-name/gr/greenmask/package.nix index 5c33ad6cee71..5a8d3abae55d 100644 --- a/pkgs/by-name/gr/greenmask/package.nix +++ b/pkgs/by-name/gr/greenmask/package.nix @@ -7,16 +7,16 @@ buildGoModule (finalAttrs: { pname = "greenmask"; - version = "0.2.17"; + version = "0.2.18"; src = fetchFromGitHub { owner = "GreenmaskIO"; repo = "greenmask"; tag = "v${finalAttrs.version}"; - hash = "sha256-pH+e+CXC18jpAq/xLV5CE0BicxgPtLF7kBgUusebWDg="; + hash = "sha256-ZFlfX6JgJOaq+8OxSzhulRTkKabGoNsnBxFVpg81RDs="; }; - vendorHash = "sha256-t2U65GAGBGdMRXPTkCQCuXfLuqohA6erTlvAN/xx/ek="; + vendorHash = "sha256-SB71/Tf9Bw8AlTYGXOaRR8sdiwx8l9wQba93p6vAbAk="; subPackages = [ "cmd/greenmask/" ]; diff --git a/pkgs/by-name/he/hentai-at-home/package.nix b/pkgs/by-name/he/hentai-at-home/package.nix index b94b3f0eeba5..7dfb5ac2f0db 100644 --- a/pkgs/by-name/he/hentai-at-home/package.nix +++ b/pkgs/by-name/he/hentai-at-home/package.nix @@ -9,11 +9,11 @@ }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "hentai-at-home"; - version = "1.6.4"; + version = "1.6.5"; src = fetchzip { url = "https://repo.e-hentai.org/hath/HentaiAtHome_${finalAttrs.version}_src.zip"; - hash = "sha512-dcHWZiU0ySLlEhZeK1n2T/dyO6Wk9eS7CpZRSfzY3KvHrPBthQnaFrarSopPXJan1+zWROu1pEff1WSr5+HO4Q=="; + hash = "sha512-oKyvzHZTPwSTcjsNOQ0LIl6rV+b7JDnuWbYKFogWWkyKcR/xDcNPNhUrKv8QLH6a1AQ2T8DYkxcJYnjhgsaovA=="; stripRoot = false; }; diff --git a/pkgs/by-name/i2/i2p/package.nix b/pkgs/by-name/i2/i2p/package.nix index 86adad7c1306..08966315466b 100644 --- a/pkgs/by-name/i2/i2p/package.nix +++ b/pkgs/by-name/i2/i2p/package.nix @@ -26,12 +26,13 @@ let "java.security.jgss" "java.sql" "java.xml" + "jdk.zipfs" ]; }; in stdenv.mkDerivation (finalAttrs: { pname = "i2p"; - version = "2.10.0"; + version = "2.11.0"; src = fetchzip { urls = [ @@ -42,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: { "https://files.i2p-projekt.de/" "https://download.i2p2.no/releases/" ]); - hash = "sha256-Ogok7s5sawG27ucstG+NYiIAF66Pb3ExOYsL8mfNav8="; + hash = "sha256-NDiE3HhY18zZKLu1zkp3omwf8zmTJ9JPRIq34rDdpGc="; }; strictDeps = true; diff --git a/pkgs/by-name/il/ilmbase/package.nix b/pkgs/by-name/il/ilmbase/package.nix index 465bd610b3a8..82f387fb0ec1 100644 --- a/pkgs/by-name/il/ilmbase/package.nix +++ b/pkgs/by-name/il/ilmbase/package.nix @@ -38,6 +38,6 @@ stdenv.mkDerivation { homepage = "https://www.openexr.com/"; license = lib.licenses.bsd3; platforms = lib.platforms.all; - insecure = true; + inherit (openexr_2.meta) knownVulnerabilities; }; } diff --git a/pkgs/by-name/ke/keto/package.nix b/pkgs/by-name/ke/keto/package.nix index 582bae643c67..2c65e602a957 100644 --- a/pkgs/by-name/ke/keto/package.nix +++ b/pkgs/by-name/ke/keto/package.nix @@ -5,8 +5,8 @@ }: let pname = "keto"; - version = "25.4.0"; - commit = "f5635433a56324f266ea414727bf7395bb2da429"; + version = "26.2.0"; + commit = "e4393662cd2e744deeb79de77669e07b6ccf51f3"; in buildGoModule { inherit pname version commit; @@ -15,10 +15,10 @@ buildGoModule { owner = "ory"; repo = "keto"; rev = "v${version}"; - hash = "sha256-2DktCLYOj2azYBAhMVuqfU7QQ+eC3qDLtcp+fPljFAg="; + hash = "sha256-wRtz4RvJ7LxVnSLmXVZFGa9QXjcPnDNJxHKosbyTed0="; }; - vendorHash = "sha256-+zHvIf3CBMMqKVmQYzMRGQg9iGf9Khnhpgt95lA0BBA="; + vendorHash = "sha256-B27aC4yXS36eOoq53+RWp0vq1Oqw2aR+gOjv0m+b/I4="; tags = [ "sqlite" diff --git a/pkgs/by-name/kr/kratos/package.nix b/pkgs/by-name/kr/kratos/package.nix index 59771ff580e0..3a8dfc9b50ab 100644 --- a/pkgs/by-name/kr/kratos/package.nix +++ b/pkgs/by-name/kr/kratos/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "kratos"; - version = "25.4.0"; + version = "26.2.0"; src = fetchFromGitHub { owner = "ory"; repo = "kratos"; rev = "v${finalAttrs.version}"; - hash = "sha256-f/K86B5h7xM7Zsbr5w2rZgsyNlCSemrBkqtMRQq/Xws="; + hash = "sha256-u298vFFD/zc7ScdQ5rmvcHqkMMenMVIRC9GChfukml8="; }; - vendorHash = "sha256-ayL3V8TQ+9Tk2Wkhvn+Tft9AqxiFegznKXD0eBkFbhs="; + vendorHash = "sha256-qnG8hdWazKlIFfNPz2z5F7hhgZaTTttUBbg59T+N5OI="; subPackages = [ "." ]; @@ -56,6 +56,9 @@ buildGoModule (finalAttrs: { description = "API-first Identity and User Management system that is built according to cloud architecture best practices"; homepage = "https://www.ory.sh/kratos/"; license = lib.licenses.asl20; - maintainers = with lib.maintainers; [ mrmebelman ]; + maintainers = with lib.maintainers; [ + mrmebelman + debtquity + ]; }; }) diff --git a/pkgs/by-name/li/listenbrainz-mpd/package.nix b/pkgs/by-name/li/listenbrainz-mpd/package.nix index 53a3e91947be..2351a7809ae6 100644 --- a/pkgs/by-name/li/listenbrainz-mpd/package.nix +++ b/pkgs/by-name/li/listenbrainz-mpd/package.nix @@ -9,20 +9,21 @@ sqlite, installShellFiles, asciidoctor, + nix-update-script, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "listenbrainz-mpd"; - version = "2.3.9"; + version = "2.5.1"; src = fetchFromCodeberg { owner = "elomatreb"; repo = "listenbrainz-mpd"; rev = "v${finalAttrs.version}"; - hash = "sha256-j9MlvE2upocwC5xxroms3am6tqJX30sSw7PFNw8Ofog="; + hash = "sha256-087+l3calge6hKu3h84C98mIpW6qFAZwRMe4lkQCU4o="; }; - cargoHash = "sha256-1x3F2TqNlqwfPUvLwU8ac4aEeEwpIy5gEyxRBC0Q5YM="; + cargoHash = "sha256-SxXEathWAGqdgeJmIn5h9Zvv7Z3DGXa4htkODf/ANRQ="; nativeBuildInputs = [ pkg-config @@ -61,12 +62,17 @@ rustPlatform.buildRustPackage (finalAttrs: { installManPage listenbrainz-mpd.1 ''; + passthru.updateScript = nix-update-script { }; + meta = { homepage = "https://codeberg.org/elomatreb/listenbrainz-mpd"; changelog = "https://codeberg.org/elomatreb/listenbrainz-mpd/src/tag/v${finalAttrs.version}/CHANGELOG.md"; description = "ListenBrainz submission client for MPD"; license = lib.licenses.agpl3Only; - maintainers = with lib.maintainers; [ DeeUnderscore ]; + maintainers = with lib.maintainers; [ + DeeUnderscore + Kladki + ]; mainProgram = "listenbrainz-mpd"; }; }) diff --git a/pkgs/by-name/ma/mautrix-discord/package.nix b/pkgs/by-name/ma/mautrix-discord/package.nix index ac96008951b2..29caba09196e 100644 --- a/pkgs/by-name/ma/mautrix-discord/package.nix +++ b/pkgs/by-name/ma/mautrix-discord/package.nix @@ -10,16 +10,16 @@ buildGoModule rec { pname = "mautrix-discord"; - version = "0.7.5"; + version = "0.7.6"; src = fetchFromGitHub { owner = "mautrix"; repo = "discord"; rev = "v${version}"; - hash = "sha256-puYPsHahXdKYR16hPnvYCrSGqnWc7sZ8HmmPlkysvs0="; + hash = "sha256-qpyySoYX+JMEKDf7Iv5WSZFOxkrmd3ihAaAXAKcZs9Q="; }; - vendorHash = "sha256-ffdR5OymFO7di4eOmL3zn6BvHgaLFBsmBkC4LKnw8Qg="; + vendorHash = "sha256-ZjY2+1M1LP/zBVG5+zfX4T8Lyjx/tpDwSxLlpsBG3iA="; ldflags = [ "-s" diff --git a/pkgs/by-name/my/mycelium/package.nix b/pkgs/by-name/my/mycelium/package.nix index 6bc51e7dd609..93bbe79bedb9 100644 --- a/pkgs/by-name/my/mycelium/package.nix +++ b/pkgs/by-name/my/mycelium/package.nix @@ -10,7 +10,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "mycelium"; - version = "0.7.3"; + version = "0.7.5"; sourceRoot = "${finalAttrs.src.name}/myceliumd"; @@ -18,10 +18,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "threefoldtech"; repo = "mycelium"; rev = "v${finalAttrs.version}"; - hash = "sha256-WB08dcQiz9byHNKu3ObyiQ99h18osOMeKe5hdvVaeqw="; + hash = "sha256-9PjYvzCHSOPlULbElJPVMnLFGTEy/FX56ZaRHUozqvE="; }; - cargoHash = "sha256-Wo+J0aVGiS4d1oipvrvV0abdWtHQj8iJozFM7Fj/jNs="; + cargoHash = "sha256-LSCa8euuOX4BgEDkNQlOdgiL0QzRRMlCoA9opSnPQbI="; nativeBuildInputs = [ versionCheckHook ]; diff --git a/pkgs/by-name/nu/nuclei-templates/package.nix b/pkgs/by-name/nu/nuclei-templates/package.nix index 3017c65cd548..e5a65e3394db 100644 --- a/pkgs/by-name/nu/nuclei-templates/package.nix +++ b/pkgs/by-name/nu/nuclei-templates/package.nix @@ -6,13 +6,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "nuclei-templates"; - version = "10.4.0"; + version = "10.4.1"; src = fetchFromGitHub { owner = "projectdiscovery"; repo = "nuclei-templates"; tag = "v${finalAttrs.version}"; - hash = "sha256-XhzaBVNIKJ5khNNER69tqBYCMzc7G+pDiibgyNRWwEA="; + hash = "sha256-JHnHntfa1CPj3v0mlu7cLsOhmw+eFcd13jWU9E17mRY="; }; installPhase = '' diff --git a/pkgs/by-name/op/opencode/package.nix b/pkgs/by-name/op/opencode/package.nix index e13b41819e8c..b5f3dda285dd 100644 --- a/pkgs/by-name/op/opencode/package.nix +++ b/pkgs/by-name/op/opencode/package.nix @@ -16,13 +16,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "opencode"; - version = "1.3.7"; + version = "1.3.10"; src = fetchFromGitHub { owner = "anomalyco"; repo = "opencode"; tag = "v${finalAttrs.version}"; - hash = "sha256-DL/3AFyYevK4SD3pC+goTHLrlD29dRoyL0QAlxZDLcU="; + hash = "sha256-/pVesY9fyfeAheT1gMvoVCaO9GlRHQB0H4HIB56pwnE="; }; node_modules = stdenvNoCC.mkDerivation { @@ -72,7 +72,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { # NOTE: Required else we get errors that our fixed-output derivation references store paths dontFixup = true; - outputHash = "sha256-//yE+ngjobja2Y5yIcvW0oEVSu85nqNAvjWu5OyISGU="; + outputHash = "sha256-Q7eyK6GNYE5dBYooDHbIQSkfe4fs6L7tzCfbsIlYY7o="; outputHashAlgo = "sha256"; outputHashMode = "recursive"; }; diff --git a/pkgs/by-name/op/openfga/package.nix b/pkgs/by-name/op/openfga/package.nix index 5b3eefa1f4c0..0826a2c58aa3 100644 --- a/pkgs/by-name/op/openfga/package.nix +++ b/pkgs/by-name/op/openfga/package.nix @@ -7,16 +7,16 @@ buildGoModule (finalAttrs: { pname = "openfga"; - version = "1.12.1"; + version = "1.13.1"; src = fetchFromGitHub { owner = "openfga"; repo = "openfga"; rev = "v${finalAttrs.version}"; - hash = "sha256-uIdsHYrVp57HnIrJLv0VtysaehqrZLVTsPfrlJjmBco="; + hash = "sha256-fmTb5mRAbJGDfE4lLSFtfHuQv2pQn4fQnX7fTjq7KKs="; }; - vendorHash = "sha256-lQeUfLfYpk4HPyhpp/rKWVoWwPzKKyk/sHE1rgtcyxA="; + vendorHash = "sha256-sd1kDRicWb5ShEFDCJIjv4kk2dA5XwABH3Ii/P3uVvI="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/or/ory-hydra/package.nix b/pkgs/by-name/or/ory-hydra/package.nix index 97b54a394e3d..14ab16c90129 100644 --- a/pkgs/by-name/or/ory-hydra/package.nix +++ b/pkgs/by-name/or/ory-hydra/package.nix @@ -6,16 +6,16 @@ }: buildGoModule (finalAttrs: { pname = "hydra"; - version = "25.4.0"; + version = "26.2.0"; src = fetchFromGitHub { owner = "ory"; repo = "hydra"; tag = "v${finalAttrs.version}"; - hash = "sha256-vcbJiwWoq7WA7K5WpD68za1VecNwdzqfyXuPfUpa1QU="; + hash = "sha256-LnF1k/C9uPRY4xXeBCJPSQ8gxwwZx0N1e1s+Rhop5ic="; }; - vendorHash = "sha256-ADS1kBqSJXDwmCS4CCfiMvmlzzL39E0G4J2UEKXy2Qs="; + vendorHash = "sha256-KVCoDATyt5Qp0r3vGwdXqkjh0FEdNyKi6mXk99D6HD8="; # `json1` not needed (see: https://github.com/ory/hydra/commit/93edc9ad894771c67f46ae2c57ee7e50382d73cd) # `sqlite_omit_load_extension` consistency with upstream (see: https://github.com/ory/hydra/blob/master/.docker/Dockerfile-local-build#L20C58-L20C84). Will disable sqlite runtime extension loading (see: https://sqlite.org/loadext.html) diff --git a/pkgs/by-name/ln/lnreader/package.nix b/pkgs/by-name/pd/pdf-cli/package.nix similarity index 64% rename from pkgs/by-name/ln/lnreader/package.nix rename to pkgs/by-name/pd/pdf-cli/package.nix index 06cf04be4fb1..85fc0e7dc6ce 100644 --- a/pkgs/by-name/ln/lnreader/package.nix +++ b/pkgs/by-name/pd/pdf-cli/package.nix @@ -7,17 +7,17 @@ }: buildGoModule (finalAttrs: { - pname = "lnreader"; - version = "1.0"; + pname = "pdf-cli"; + version = "2.0"; src = fetchFromGitHub { owner = "Yujonpradhananga"; - repo = "CLI-PDF-EPUB-reader"; + repo = "pdf-cli"; rev = "v${finalAttrs.version}"; - hash = "sha256-JeVS0wnShlD4+UfnMsuHMYi6R7pse4Gvh0PdREwmG6k="; + hash = "sha256-TvfSauT9UWjQjkzQtepEVyxm/LaiCANmxMtVmjiw8kI="; }; - vendorHash = "sha256-66rqTJeV6u4aVciifp41n2onx81w9KE0PGYHlVwsl54="; + vendorHash = "sha256-LCIv135ywuq494hZbrKdbqkGPSsSlSkVQ9hCE8i7www="; nativeBuildInputs = [ pkg-config @@ -34,10 +34,10 @@ buildGoModule (finalAttrs: { meta = { description = "Lightweight, fast and responsive terminal PDF/EPUB viewer with image support"; - homepage = "https://github.com/Yujonpradhananga/CLI-PDF-EPUB-reader"; + homepage = "https://github.com/Yujonpradhananga/pdf-cli"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ yujonpradhananga ]; - mainProgram = "lnreader"; + mainProgram = "pdf-cli"; platforms = lib.platforms.unix; }; }) diff --git a/pkgs/by-name/pr/prosody/package.nix b/pkgs/by-name/pr/prosody/package.nix index 6132bb9f901e..a84c062d03ec 100644 --- a/pkgs/by-name/pr/prosody/package.nix +++ b/pkgs/by-name/pr/prosody/package.nix @@ -56,8 +56,8 @@ stdenv.mkDerivation (finalAttrs: { # version. communityModules = fetchhg { url = "https://hg.prosody.im/prosody-modules"; - rev = "83355cfcad1d"; - hash = "sha256-v8o2FMUY2dQEQ+G81Ec4RJ7J5Mz5CkXc4iabAAb13L4="; + rev = "ce716e5e0fee"; + hash = "sha256-jjsHL9+lLwhFXO61h6SmQjwEdRJQ/zKgc1PDnH+wHxs="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/re/re-plistbuddy/package.nix b/pkgs/by-name/re/re-plistbuddy/package.nix new file mode 100644 index 000000000000..8e51a23b8378 --- /dev/null +++ b/pkgs/by-name/re/re-plistbuddy/package.nix @@ -0,0 +1,26 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, +}: +rustPlatform.buildRustPackage rec { + pname = "re-plistbuddy"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "viraptor"; + repo = "re-plistbuddy"; + tag = version; + hash = "sha256-Iumrj0JLpdrS3cg3jAj/Wrbx7PthlCnTuRMYsYdywyw="; + }; + + cargoHash = "sha256-RyHM6CMxdhDJrg6mGt8jQCDLVjt0BiLYswelOHoellw="; + + meta = { + description = "Open reimplementation of Apple's PlistBuddy and plutil"; + homepage = "https://github.com/viraptor/re-plistbuddy"; + license = with lib.licenses; [ mit ]; + maintainers = with lib.maintainers; [ viraptor ]; + platforms = lib.platforms.darwin; + }; +} diff --git a/pkgs/by-name/ri/river/build.zig.zon.nix b/pkgs/by-name/ri/river/build.zig.zon.nix index 82218cc8dbfd..9ba533294dc2 100644 --- a/pkgs/by-name/ri/river/build.zig.zon.nix +++ b/pkgs/by-name/ri/river/build.zig.zon.nix @@ -29,10 +29,10 @@ linkFarm "zig-packages" [ }; } { - name = "wlroots-0.19.4-jmOlcqQMBABhKYH6NMSnoK1sohTbhc97_JP-hGg2UZaK"; + name = "wlroots-0.20.0-jmOlcmtCBADS6eoJ6mkeiSNZkibrhD-c5Qwn-LiM86r1"; path = fetchzip { - url = "https://codeberg.org/ifreund/zig-wlroots/archive/v0.19.4.tar.gz"; - hash = "sha256-g1LOSMMnjGJIS+U7zrx6FAoUyavqwaQ2UrDv6GxCQsY="; + url = "https://codeberg.org/ifreund/zig-wlroots/archive/v0.20.0.tar.gz"; + hash = "sha256-QblQBVsDV2kSj31jqmVVi4hQUXuv8bsRgRMaCqlNxNM="; }; } { diff --git a/pkgs/by-name/ri/river/package.nix b/pkgs/by-name/ri/river/package.nix index cae1a65d716d..66439a4bff31 100644 --- a/pkgs/by-name/ri/river/package.nix +++ b/pkgs/by-name/ri/river/package.nix @@ -16,7 +16,7 @@ wayland, wayland-protocols, wayland-scanner, - wlroots_0_19, + wlroots_0_20, xwayland, zig_0_15, withManpages ? true, @@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "river"; - version = "0.4.1"; + version = "0.4.2"; outputs = [ "out" ] ++ lib.optionals withManpages [ "man" ]; @@ -33,7 +33,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "river"; repo = "river"; tag = "v${finalAttrs.version}"; - hash = "sha256-EGWLJY9VPdoc4LrXkWi8cNLkahorvDeAIfSOc5yDfbU="; + hash = "sha256-Nufonz39XphxPW1lERq2acVgE5mGmW+x1yimyS6O4tc="; }; strictDeps = true; @@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: { wayland wayland-protocols wayland-scanner - wlroots_0_19 + wlroots_0_20 ] ++ lib.optionals xwaylandSupport [ libx11 diff --git a/pkgs/by-name/se/sequoia-git/package.nix b/pkgs/by-name/se/sequoia-git/package.nix new file mode 100644 index 000000000000..47ef3dcee3a9 --- /dev/null +++ b/pkgs/by-name/se/sequoia-git/package.nix @@ -0,0 +1,61 @@ +{ + lib, + rustPlatform, + fetchFromGitLab, + openssl, + nettle, + sqlite, + pkg-config, + installShellFiles, + gnupg, + gitMinimal, + libfaketime, + ... +}: +rustPlatform.buildRustPackage rec { + pname = "sequoia-git"; + version = "0.5.0"; + + src = fetchFromGitLab { + owner = "sequoia-pgp"; + repo = "sequoia-git"; + rev = "v${version}"; + hash = "sha256-7ynaz48j/ebQAZ2QxeWwkf7kFP70HKtHCv4/wGxxaVY="; + }; + + cargoHash = "sha256-+sIH4zFLewNNkpd42co2B0rLrIsde5gsBDsqSSc0HZQ="; + + buildInputs = [ + openssl.dev + nettle.dev + sqlite.dev + ]; + + nativeBuildInputs = [ + pkg-config + rustPlatform.bindgenHook + installShellFiles + ]; + + nativeCheckInputs = [ + gnupg + gitMinimal + libfaketime + ]; + + env.ASSET_OUT_DIR = "target"; + + postInstall = '' + installManPage ${env.ASSET_OUT_DIR}/man-pages/*.1 + installShellCompletion --bash ${env.ASSET_OUT_DIR}/shell-completions/${meta.mainProgram}.bash + installShellCompletion --zsh ${env.ASSET_OUT_DIR}/shell-completions/_${meta.mainProgram} + installShellCompletion --fish ${env.ASSET_OUT_DIR}/shell-completions/${meta.mainProgram}.fish + ''; + + meta = { + homepage = "https://sequoia-pgp.gitlab.io/sequoia-git"; + license = lib.licenses.lgpl2Plus; + maintainers = [ lib.maintainers.matthiasbeyer ]; + mainProgram = "sq-git"; + }; +} diff --git a/pkgs/by-name/up/uppaal/package.nix b/pkgs/by-name/up/uppaal/package.nix index a2ef8f764987..ad8f57da5c36 100644 --- a/pkgs/by-name/up/uppaal/package.nix +++ b/pkgs/by-name/up/uppaal/package.nix @@ -64,7 +64,8 @@ stdenvNoCC.mkDerivation rec { makeWrapper $out/lib/uppaal/uppaal $out/bin/uppaal \ --set JAVA_HOME ${jdk17} \ --set PATH $out/lib/uppaal:$PATH \ - --prefix _JAVA_OPTIONS " " "-Dawt.useSystemAAFontSettings=gasp" + --prefix _JAVA_OPTIONS " " "-Dawt.useSystemAAFontSettings=gasp" \ + --set _JAVA_AWT_WM_NONREPARENTING 1 # Java Swing renders a blank window on Wayland without this runHook postInstall ''; diff --git a/pkgs/desktops/lomiri/applications/morph-browser/default.nix b/pkgs/desktops/lomiri/applications/morph-browser/default.nix index 7b0b9d732ce4..4e5b38564e40 100644 --- a/pkgs/desktops/lomiri/applications/morph-browser/default.nix +++ b/pkgs/desktops/lomiri/applications/morph-browser/default.nix @@ -15,18 +15,21 @@ lomiri-ui-toolkit, mesa, pkg-config, - qqc2-suru-style, + qqc2-suru-style ? null, + qt5compat ? null, qtbase, qtdeclarative, - qtquickcontrols2, - qtsystems, + qtquickcontrols2 ? null, + qtsystems ? null, qttools, qtwebengine, wrapQtAppsHook, xvfb-run, + withDocumentation ? true, }: let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; in stdenv.mkDerivation (finalAttrs: { @@ -42,6 +45,8 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" + ] + ++ lib.optionals withDocumentation [ "doc" ]; @@ -55,16 +60,22 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace doc/CMakeLists.txt \ --replace-fail 'COMMAND ''${QDOC_BIN} -qt5' 'COMMAND ''${QDOC_BIN}' + '' + + lib.optionalString (!withDocumentation) '' + substituteInPlace CMakeLists.txt \ + --replace-fail 'add_subdirectory(doc)' 'message(WARNING "[Nix] Not building documentation")' ''; - strictDeps = true; + strictDeps = !withQt6; nativeBuildInputs = [ cmake gettext pkg-config - qttools # qdoc wrapQtAppsHook + ] + ++ lib.optionals withDocumentation [ + qttools # qdoc ]; buildInputs = [ @@ -79,9 +90,20 @@ stdenv.mkDerivation (finalAttrs: { lomiri-content-hub lomiri-ui-extras lomiri-ui-toolkit + ] + ++ lib.optionals (!withQt6) [ + # Not ported to Qt6 yet, explicitly disabled in the Qt6 build + # https://gitlab.com/ubports/development/core/morph-browser/-/blob/4f20c943e78694818d1b80b5563bd89901230e75/src/app/browserapplication.cpp#L196 qqc2-suru-style + + # Folded into qtdeclarative in Qt6 qtquickcontrols2 + + # Will prolly want this in the future, but needs porting to Qt6 qtsystems + ] + ++ lib.optionals withQt6 [ + qt5compat ]; nativeCheckInputs = [ @@ -92,11 +114,14 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (lib.cmakeBool "CLICK_MODE" false) - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) - (lib.cmakeBool "WERROR" true) + (lib.cmakeBool "ENABLE_QT6" withQt6) + (lib.cmakeBool "WERROR" (!withQt6)) # Porting WIP ]; - doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + doCheck = + stdenv.buildPlatform.canExecute stdenv.hostPlatform + # Hard dependency on Qt5 still + && (!withQt6); disabledTests = [ # Don't care about linter failures @@ -115,6 +140,8 @@ stdenv.mkDerivation (finalAttrs: { lomiri-ui-toolkit qtwebengine qtdeclarative + ] + ++ lib.optionals (!withQt6) [ qtquickcontrols2 qtsystems ] @@ -134,8 +161,9 @@ stdenv.mkDerivation (finalAttrs: { updateScript = gitUpdater { }; tests = { # Test of morph-browser itself - standalone = nixosTests.morph-browser; - + standalone = if withQt6 then nixosTests.morph-browser.qt6 else nixosTests.morph-browser.qt5; + } + // lib.optionalAttrs withQt6 { # Interactions between the Lomiri ecosystem and this browser inherit (nixosTests.lomiri) desktop-basics desktop-appinteractions; }; diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index fda0ef24c3f6..a4872027f911 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -3,16 +3,60 @@ lib, pkgs, ayatana-indicator-datetime, + useQt6 ? false, libsForQt5, + qt6Packages, }: let + qtPackages = if useQt6 then qt6Packages else libsForQt5; packages = self: let inherit (self) callPackage; in { + #### Core Apps + morph-browser = callPackage ./applications/morph-browser { + # get_target_property() called with non-existent target "Qt6::qdoc". + withDocumentation = !useQt6; + }; + + #### Data + lomiri-schemas = callPackage ./data/lomiri-schemas { }; + lomiri-sounds = callPackage ./data/lomiri-sounds { }; + lomiri-wallpapers = callPackage ./data/lomiri-wallpapers { }; + suru-icon-theme = callPackage ./data/suru-icon-theme { }; + + #### Development tools / libraries + cmake-extras = callPackage ./development/cmake-extras { }; + deviceinfo = callPackage ./development/deviceinfo { }; + gsettings-qt = callPackage ./development/gsettings-qt { }; + lomiri-api = callPackage ./development/lomiri-api { }; + lomiri-app-launch = callPackage ./development/lomiri-app-launch { }; + + #### QML / QML-related + lomiri-action-api = callPackage ./qml/lomiri-action-api { + # The dependency target "qmldoc" of target "doc" does not exist. + withDocumentation = !useQt6; + }; + lomiri-ui-extras = callPackage ./qml/lomiri-ui-extras { }; + lomiri-ui-toolkit = callPackage ./qml/lomiri-ui-toolkit { }; + + #### Services + biometryd = callPackage ./services/biometryd { }; + lomiri-content-hub = callPackage ./services/lomiri-content-hub { + # Check for working qdoc: not found + withDocumentation = !useQt6; + }; + lomiri-download-manager = callPackage ./services/lomiri-download-manager { + # Check for working qdoc: not found + withDocumentation = !useQt6; + }; + lomiri-indicator-network = callPackage ./services/lomiri-indicator-network { }; + lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { }; + } + // lib.optionalAttrs (!useQt6) { #### Core Apps lomiri = callPackage ./applications/lomiri { }; lomiri-calculator-app = callPackage ./applications/lomiri-calculator-app { }; @@ -27,55 +71,37 @@ let lomiri-system-settings-unwrapped = callPackage ./applications/lomiri-system-settings { }; lomiri-system-settings = callPackage ./applications/lomiri-system-settings/wrapper.nix { }; lomiri-terminal-app = callPackage ./applications/lomiri-terminal-app { }; - morph-browser = callPackage ./applications/morph-browser { }; teleports = callPackage ./applications/teleports { }; #### Data - lomiri-schemas = callPackage ./data/lomiri-schemas { }; lomiri-session = callPackage ./data/lomiri-session { }; - lomiri-sounds = callPackage ./data/lomiri-sounds { }; - lomiri-wallpapers = callPackage ./data/lomiri-wallpapers { }; - suru-icon-theme = callPackage ./data/suru-icon-theme { }; #### Development tools / libraries - cmake-extras = callPackage ./development/cmake-extras { }; - deviceinfo = callPackage ./development/deviceinfo { }; geonames = callPackage ./development/geonames { }; gmenuharness = callPackage ./development/gmenuharness { }; - gsettings-qt = callPackage ./development/gsettings-qt { }; libusermetrics = callPackage ./development/libusermetrics { }; - lomiri-api = callPackage ./development/lomiri-api { }; - lomiri-app-launch = callPackage ./development/lomiri-app-launch { }; qtmir = callPackage ./development/qtmir { }; trust-store = callPackage ./development/trust-store { }; u1db-qt = callPackage ./development/u1db-qt { }; #### QML / QML-related - lomiri-action-api = callPackage ./qml/lomiri-action-api { }; lomiri-notifications = callPackage ./qml/lomiri-notifications { }; lomiri-push-qml = callPackage ./qml/lomiri-push-qml { }; lomiri-settings-components = callPackage ./qml/lomiri-settings-components { }; - lomiri-ui-extras = callPackage ./qml/lomiri-ui-extras { }; - lomiri-ui-toolkit = callPackage ./qml/lomiri-ui-toolkit { }; qqc2-suru-style = callPackage ./qml/qqc2-suru-style { }; #### Services - biometryd = callPackage ./services/biometryd { }; - lomiri-content-hub = callPackage ./services/lomiri-content-hub { }; hfd-service = callPackage ./services/hfd-service { }; - lomiri-download-manager = callPackage ./services/lomiri-download-manager { }; lomiri-history-service = callPackage ./services/lomiri-history-service { }; lomiri-indicator-datetime = ayatana-indicator-datetime.override { enableLomiriFeatures = true; }; - lomiri-indicator-network = callPackage ./services/lomiri-indicator-network { }; lomiri-polkit-agent = callPackage ./services/lomiri-polkit-agent { }; lomiri-telephony-service = callPackage ./services/lomiri-telephony-service { }; lomiri-thumbnailer = callPackage ./services/lomiri-thumbnailer { }; - lomiri-url-dispatcher = callPackage ./services/lomiri-url-dispatcher { }; mediascanner2 = callPackage ./services/mediascanner2 { }; }; in -lib.makeScope libsForQt5.newScope packages -// lib.optionalAttrs config.allowAliases { +lib.makeScope qtPackages.newScope packages +// lib.optionalAttrs (config.allowAliases && !useQt6) { content-hub = lib.warnOnInstantiate "`content-hub` was renamed to `lomiri-content-hub`." pkgs.lomiri.lomiri-content-hub; # Added on 2024-09-11 history-service = lib.warnOnInstantiate "`history-service` was renamed to `lomiri-history-service`." pkgs.lomiri.lomiri-history-service; # Added on 2024-11-11 lomiri-system-settings-security-privacy = lib.warnOnInstantiate "`lomiri-system-settings-security-privacy` upstream was merged into `lomiri-system-settings`. Please use `pkgs.lomiri.lomiri-system-settings-unwrapped` if you need to directly access the plugins that belonged to this project." pkgs.lomiri.lomiri-system-settings-unwrapped; # Added on 2024-08-08 diff --git a/pkgs/desktops/lomiri/development/gsettings-qt/default.nix b/pkgs/desktops/lomiri/development/gsettings-qt/default.nix index 285af24eedec..8a6f97977ff5 100644 --- a/pkgs/desktops/lomiri/development/gsettings-qt/default.nix +++ b/pkgs/desktops/lomiri/development/gsettings-qt/default.nix @@ -7,11 +7,15 @@ cmake, cmake-extras, glib, + libglvnd, pkg-config, qtbase, qtdeclarative, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "gsettings-qt"; version = "1.1.1"; @@ -39,6 +43,9 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ cmake-extras glib + ] + ++ lib.optionals withQt6 [ + libglvnd ]; # Library @@ -60,6 +67,11 @@ stdenv.mkDerivation (finalAttrs: { + '' substituteInPlace GSettings/CMakeLists.txt \ --replace-fail "\''${CMAKE_INSTALL_LIBDIR}/qt\''${QT_VERSION_MAJOR}/qml" '${placeholder "out"}/${qtbase.qtQmlPrefix}' + '' + # Need QtQuick.Window in QML2_IMPORT_PATH + + '' + substituteInPlace tests/CMakeLists.txt \ + --replace-fail 'QML2_IMPORT_PATH=' 'QML2_IMPORT_PATH=${lib.getBin qtdeclarative}/${qtbase.qtQmlPrefix}:' ''; preBuild = @@ -69,7 +81,7 @@ stdenv.mkDerivation (finalAttrs: { ''; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_WERROR" true) ]; @@ -96,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: { teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; pkgConfigModules = [ - "gsettings-qt" + "gsettings-qt${lib.optionalString withQt6 "6"}" ]; }; }) diff --git a/pkgs/desktops/lomiri/development/lomiri-api/default.nix b/pkgs/desktops/lomiri/development/lomiri-api/default.nix index 903e8da48645..3fa57e8c820c 100644 --- a/pkgs/desktops/lomiri/development/lomiri-api/default.nix +++ b/pkgs/desktops/lomiri/development/lomiri-api/default.nix @@ -17,8 +17,12 @@ python3, qtbase, qtdeclarative, + withDocumentation ? true, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-api"; version = "0.3.0"; @@ -33,6 +37,8 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + ] + ++ lib.optionals withDocumentation [ "doc" ]; @@ -53,10 +59,12 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - doxygen - graphviz pkg-config qtdeclarative + ] + ++ lib.optionals withDocumentation [ + doxygen + graphviz ]; buildInputs = [ @@ -76,7 +84,8 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) + (lib.cmakeBool "NO_TESTS" (!finalAttrs.finalPackage.doCheck)) ]; env.FONTCONFIG_FILE = makeFontsConf { fontDirectories = [ ]; }; @@ -95,7 +104,10 @@ stdenv.mkDerivation (finalAttrs: { ''; passthru = { - tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + # https://gitlab.com/ubports/development/core/lomiri-api/-/issues/5 + tests = lib.optionalAttrs (!withQt6) { + pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; updateScript = gitUpdater { }; }; @@ -113,10 +125,10 @@ stdenv.mkDerivation (finalAttrs: { platforms = lib.platforms.linux; pkgConfigModules = [ "liblomiri-api" - "lomiri-shell-api" - "lomiri-shell-application" - "lomiri-shell-launcher" - "lomiri-shell-notifications" + "lomiri-shell-api${lib.optionalString withQt6 "-qt6"}" + "lomiri-shell-application${lib.optionalString withQt6 "-qt6"}" + "lomiri-shell-launcher${lib.optionalString withQt6 "-qt6"}" + "lomiri-shell-notifications${lib.optionalString withQt6 "-qt6"}" ]; }; }) diff --git a/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix b/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix index 97005ae77345..e327a297e33a 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix +++ b/pkgs/desktops/lomiri/qml/lomiri-action-api/default.nix @@ -2,6 +2,7 @@ stdenv, lib, fetchFromGitLab, + fetchpatch, gitUpdater, testers, cmake, @@ -13,8 +14,12 @@ qtdeclarative, qttools, validatePkgConfig, + withDocumentation ? true, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-action-api"; version = "1.2.1"; @@ -26,9 +31,19 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-pwHvbiUvkAi7/XgpNfgrqcp3znFKSXlAAacB2XsHQkg="; }; + patches = [ + (fetchpatch { + name = "0001-lomiri-action-api-fix-qt6-unit-tests.patch"; + url = "https://gitlab.com/ubports/development/core/lomiri-action-api/-/commit/8fadb3d75938403aca2dc0e9392370c0d9b45c3e.patch"; + hash = "sha256-qqgFgw2YY6cPEbzGKI7r4fk/CgR9NRe1ZY2HUsKLNlo="; + }) + ]; + outputs = [ "out" "dev" + ] + ++ lib.optionals withDocumentation [ "doc" ]; @@ -46,11 +61,13 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - doxygen pkg-config qtdeclarative - qttools # qdoc validatePkgConfig + ] + ++ lib.optionals withDocumentation [ + doxygen + qttools # qdoc ]; buildInputs = [ @@ -64,9 +81,9 @@ stdenv.mkDerivation (finalAttrs: { ]; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_TESTING" finalAttrs.finalPackage.doCheck) - (lib.cmakeBool "GENERATE_DOCUMENTATION" true) + (lib.cmakeBool "GENERATE_DOCUMENTATION" withDocumentation) # Use vendored libhud2, TODO package libhud2 separately? (lib.cmakeBool "use_libhud2" false) ]; @@ -92,6 +109,8 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.lgpl3Only; teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; - pkgConfigModules = [ "lomiri-action-qt-1" ]; + pkgConfigModules = [ + "lomiri-action-qt${lib.optionalString withQt6 "6"}-1" + ]; }; }) diff --git a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/2002-Nixpkgs-versioned-QML-path.patch.in b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/2002-Nixpkgs-versioned-QML-path.patch.in index d2e83baf98ae..065b670f4b46 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/2002-Nixpkgs-versioned-QML-path.patch.in +++ b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/2002-Nixpkgs-versioned-QML-path.patch.in @@ -1,29 +1,20 @@ -From ca4c52a80532732243067eb00ec12b4ef84010a6 Mon Sep 17 00:00:00 2001 -From: OPNA2608 -Date: Tue, 30 Jan 2024 19:46:09 +0100 -Subject: [PATCH] Nixpkgs versioned QML path - ---- - src/LomiriToolkit/uctheme.cpp | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/LomiriToolkit/uctheme.cpp b/src/LomiriToolkit/uctheme.cpp -index a10c89344..4b0653589 100644 ---- a/src/LomiriToolkit/uctheme.cpp -+++ b/src/LomiriToolkit/uctheme.cpp -@@ -180,6 +180,12 @@ QStringList themeSearchPath() +diff '--color=auto' -ruN a/src/LomiriToolkit/uctheme.cpp b/src/LomiriToolkit/uctheme.cpp +--- a/src/LomiriToolkit/uctheme.cpp 2025-12-04 00:43:06.543074583 +0100 ++++ b/src/LomiriToolkit/uctheme.cpp 2025-12-04 00:45:35.424986792 +0100 +@@ -192,6 +192,16 @@ pathList << QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); } + // append versioned QML import path from Nixpkgs + const QString nixpkgsQmlImportPath = QString::fromLocal8Bit(getenv("NIXPKGS_QT@qtVersion@_QML_IMPORT_PATH")); + if (!nixpkgsQmlImportPath.isEmpty()) { ++#if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) + pathList << nixpkgsQmlImportPath.split(':', QString::SkipEmptyParts); ++#else ++ pathList << nixpkgsQmlImportPath.split(':', Qt::SkipEmptyParts); ++#endif + } + // append QML import path(s); we must explicitly support env override here const QString qml2ImportPath = QString::fromLocal8Bit(getenv("QML2_IMPORT_PATH")); if (!qml2ImportPath.isEmpty()) { --- -2.42.0 - diff --git a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix index 36aac994b024..6593044e6e60 100644 --- a/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix +++ b/pkgs/desktops/lomiri/qml/lomiri-ui-toolkit/default.nix @@ -5,10 +5,14 @@ gitUpdater, replaceVars, testers, + bluez, + cmake, dbus-test-runner, dpkg, gdb, glib, + kdePackages, + libevdev, lttng-ust, mesa, perl, @@ -17,13 +21,15 @@ qmake, qtbase, qtdeclarative, - qtfeedback, - qtgraphicaleffects, - qtpim, - qtquickcontrols2, + qtfeedback ? null, + qtgraphicaleffects ? null, + qtpim ? null, + qtquickcontrols2 ? null, qtsvg, - qtsystems, + qtsystems ? null, qttools, + qt5compat ? null, + spirv-tools, suru-icon-theme, validatePkgConfig, wrapQtAppsHook, @@ -31,32 +37,47 @@ }: let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; - qtPluginPaths = listToQtVar qtbase.qtPluginPrefix [ - qtbase - qtpim - qtsvg - ]; - qtQmlPaths = listToQtVar qtbase.qtQmlPrefix [ - qtdeclarative - qtfeedback - qtgraphicaleffects - ]; + qtPluginPaths = listToQtVar qtbase.qtPluginPrefix ( + [ + qtbase + qtsvg + ] + ++ lib.optionals (!withQt6) [ + # Will prolly want this in the future, but needs porting to Qt6 + qtpim + ] + ); + qtQmlPaths = listToQtVar qtbase.qtQmlPrefix ( + [ + qtdeclarative + ] + ++ lib.optionals (!withQt6) [ + # Deprecated in Qt6 + qtgraphicaleffects + + # Will prolly want this in the future, but needs porting to Qt6 + qtfeedback + ] + ); in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-ui-toolkit"; - version = "1.3.5903"; + version = "1.3.5904"; src = fetchFromGitLab { owner = "ubports"; repo = "development/core/lomiri-ui-toolkit"; rev = finalAttrs.version; - hash = "sha256-NdEYXv1LVblUgOu/P8z+vYnd/jNDS+/LFsh63ojJ2KA="; + hash = "sha256-lrytLk7+RpD3V4g9m7JruqOfLggJO9sGLzt5UrGbs/Q="; }; outputs = [ "out" "dev" + ] + ++ lib.optionals (!withQt6) [ "doc" ]; @@ -71,23 +92,6 @@ stdenv.mkDerivation (finalAttrs: { postPatch = '' patchShebangs documentation/docs.sh tests/ - for subproject in po app-launch-profiler lomiri-ui-toolkit-launcher; do - substituteInPlace $subproject/$subproject.pro \ - --replace-fail "\''$\''$[QT_INSTALL_PREFIX]" "$out" \ - --replace-warn "\''$\''$[QT_INSTALL_LIBS]" "$out/lib" - done - - # Install apicheck tool into bin - substituteInPlace apicheck/apicheck.pro \ - --replace-fail "\''$\''$[QT_INSTALL_LIBS]/lomiri-ui-toolkit" "$out/bin" - - substituteInPlace documentation/documentation.pro \ - --replace-fail '/usr/share/doc' '$$PREFIX/share/doc' \ - --replace-fail '$$[QT_INSTALL_DOCS]' '$$PREFIX/share/doc/lomiri-ui-toolkit' - - # Causes redefinition error with our own fortify hardening - sed -i '/DEFINES += _FORTIFY_SOURCE/d' features/lomiri_common.prf - # Reverse dependencies (and their reverse dependencies too) access the function patched here to register their gettext catalogues, # so hardcoding any prefix here will make only catalogues in that prefix work. APP_DIR envvar will override this, but with domains from multiple derivations being # used in a single application (lomiri-system-settings), that's of not much use either. @@ -113,19 +117,50 @@ stdenv.mkDerivation (finalAttrs: { tests/unit/visual/tst_icon.{11,13}.qml \ tests/unit/visual/tst_imageprovider.11.qml \ --replace-fail '/usr/share' '${suru-icon-theme}/share' + '' + + lib.optionalString (!withQt6) '' + for subproject in po app-launch-profiler lomiri-ui-toolkit-launcher; do + substituteInPlace $subproject/$subproject.pro \ + --replace-fail "\''$\''$[QT_INSTALL_PREFIX]" "$out" \ + --replace-warn "\''$\''$[QT_INSTALL_LIBS]" "$out/lib" + done + + # Install apicheck tool into bin + substituteInPlace apicheck/apicheck.pro \ + --replace-fail "\''$\''$[QT_INSTALL_LIBS]/lomiri-ui-toolkit" "$out/bin" + + substituteInPlace documentation/documentation.pro \ + --replace-fail '/usr/share/doc' '$$PREFIX/share/doc' \ + --replace-fail '$$[QT_INSTALL_DOCS]' '$$PREFIX/share/doc/lomiri-ui-toolkit' + + # Causes redefinition error with our own fortify hardening + sed -i '/DEFINES += _FORTIFY_SOURCE/d' features/lomiri_common.prf + '' + + lib.optionalString withQt6 '' + substituteInPlace CMakeLists.txt \ + --replace-fail "\''${CMAKE_INSTALL_LIBDIR}/qt\''${QT_VERSION_MAJOR}/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" \ + --replace-fail "\''${CMAKE_INSTALL_LIBDIR}/qt\''${QT_VERSION_MAJOR}/plugins" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtPluginPrefix}" ''; - # With strictDeps, QMake only picks up Qt dependencies from nativeBuildInputs + # With strictDeps + # - QMake only picks up Qt dependencies from nativeBuildInputs + # - Qt6's CMake module seems to struggle with picking up other Qt modules from buildInputs strictDeps = false; nativeBuildInputs = [ perl pkg-config python3 - qmake qttools # qdoc, qhelpgenerator validatePkgConfig wrapQtAppsHook + ] + ++ lib.optionals withQt6 [ + cmake + spirv-tools + ] + ++ lib.optionals (!withQt6) [ + qmake ]; buildInputs = [ @@ -133,15 +168,34 @@ stdenv.mkDerivation (finalAttrs: { lttng-ust qtbase qtdeclarative - qtpim + ] + ++ lib.optionals (!withQt6) [ + # Folded into qtdeclarative in Qt6 qtquickcontrols2 + + # Will prolly want this in the future, but needs porting to Qt6 + qtpim qtsystems + ] + ++ lib.optionals withQt6 [ + bluez + kdePackages.extra-cmake-modules + libevdev ]; propagatedBuildInputs = [ - qtfeedback - qtgraphicaleffects qtsvg + ] + ++ lib.optionals withQt6 [ + # Qt5Compat.GraphicalEffects + qt5compat + ] + ++ lib.optionals (!withQt6) [ + # Deprecated in Qt6 + qtgraphicaleffects + + # Will prolly want this in the future, but needs porting to Qt6 + qtfeedback ]; nativeCheckInputs = [ @@ -152,7 +206,7 @@ stdenv.mkDerivation (finalAttrs: { xvfb-run ]; - qmakeFlags = [ + qmakeFlags = lib.optionals (!withQt6) [ # Ubuntu UITK compatibility, for older / not-yet-migrated applications "CONFIG+=ubuntu-uitk-compat" "QMAKE_PKGCONFIG_PREFIX=${placeholder "out"}" @@ -180,12 +234,14 @@ stdenv.mkDerivation (finalAttrs: { export UITK_BUILD_ROOT=$PWD - tests/xvfb.sh make check ''${enableParallelChecking:+-j''${NIX_BUILD_CORES}} + ${lib.optionalString withQt6 "../"}tests/xvfb.sh make ${ + if withQt6 then "test" else "check" + } ''${enableParallelChecking:+-j''${NIX_BUILD_CORES}} runHook postCheck ''; - preInstall = '' + preInstall = lib.optionalString (!withQt6) '' # wrapper script calls qmlplugindump, crashes due to lack of minimal platform plugin # Could not find the Qt platform plugin "minimal" in "" # Available platform plugins are: wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx. @@ -198,20 +254,24 @@ stdenv.mkDerivation (finalAttrs: { done ''; - postInstall = '' - # Code loads Qt's qt_module.prf, which force-overrides all QMAKE_PKGCONFIG_* variables except PREFIX for QMake-generated pkg-config files - for pcFile in Lomiri{Gestures,Metrics,Toolkit}.pc; do - substituteInPlace $out/lib/pkgconfig/$pcFile \ - --replace-fail "${lib.getLib qtbase}/lib" "\''${prefix}/lib" \ - --replace-fail "${lib.getDev qtbase}/include" "\''${prefix}/include" - done - - # These are all dev-related tools, but declaring a bin output also moves around the QML modules - moveToOutput "bin" "$dev" - ''; + postInstall = + lib.optionalString (!withQt6) '' + # Code loads Qt's qt_module.prf, which force-overrides all QMAKE_PKGCONFIG_* variables except PREFIX for QMake-generated pkg-config files + for pcFile in Lomiri{Gestures,Metrics,Toolkit}${lib.optionalString withQt6 "-Qt6"}.pc; do + substituteInPlace $out/lib/pkgconfig/$pcFile \ + --replace-fail "${lib.getLib qtbase}/lib" "\''${prefix}/lib" \ + --replace-fail "${lib.getDev qtbase}/include" "\''${prefix}/include" + done + '' + + '' + # These are all dev-related tools, but declaring a bin output also moves around the QML modules + moveToOutput "bin" "$dev" + ''; postFixup = '' - for qtBin in $dev/bin/{apicheck,lomiri-ui-toolkit-launcher}; do + for qtBin in ${ + if withQt6 then "$out/libexec/lomiri-ui-toolkit/qt6" else "$dev/bin" + }/apicheck $dev/bin/lomiri-ui-toolkit-launcher${lib.optionalString withQt6 "-qt6"}; do wrapQtApp $qtBin done ''; @@ -246,9 +306,9 @@ stdenv.mkDerivation (finalAttrs: { teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; pkgConfigModules = [ - "LomiriGestures" - "LomiriMetrics" - "LomiriToolkit" + "LomiriGestures${lib.optionalString withQt6 "-Qt6"}" + "LomiriMetrics${lib.optionalString withQt6 "-Qt6"}" + "LomiriToolkit${lib.optionalString withQt6 "-Qt6"}" ]; }; }) diff --git a/pkgs/desktops/lomiri/services/biometryd/default.nix b/pkgs/desktops/lomiri/services/biometryd/default.nix index 40fcd228444e..cff11cdafc6d 100644 --- a/pkgs/desktops/lomiri/services/biometryd/default.nix +++ b/pkgs/desktops/lomiri/services/biometryd/default.nix @@ -23,6 +23,11 @@ validatePkgConfig, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; + listToQtVar = suffix: lib.makeSearchPathOutput "bin" suffix; + qtQmlPaths = listToQtVar qtbase.qtQmlPrefix [ qtdeclarative ]; +in stdenv.mkDerivation (finalAttrs: { pname = "biometryd"; version = "0.4.0"; @@ -60,6 +65,12 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace data/biometryd.pc.in \ --replace-fail 'libdir=''${exec_prefix}' 'libdir=''${prefix}' \ --replace-fail 'includedir=''${exec_prefix}' 'includedir=''${prefix}' \ + + # Suffix our QML2_IMPORT_PATH + substituteInPlace tests/CMakeLists.txt \ + --replace-fail \ + 'QML2_IMPORT_PATH=''${CMAKE_BINARY_DIR}/src/biometry/qml;' \ + 'QML2_IMPORT_PATH=''${CMAKE_BINARY_DIR}/src/biometry/qml:${qtQmlPaths};' '' + lib.optionalString (!finalAttrs.finalPackage.doCheck) '' sed -i -e '/add_subdirectory(tests)/d' CMakeLists.txt @@ -96,14 +107,14 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_WERROR" true) (lib.cmakeBool "WITH_HYBRIS" false) ]; preBuild = '' # Generating plugins.qmltypes (also used in checkPhase?) - export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix} + export QT_PLUGIN_PATH=${listToQtVar qtbase.qtPluginPrefix [ qtbase ]} ''; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; diff --git a/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix b/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix index 36194fe15587..d135f1380474 100644 --- a/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-content-hub/default.nix @@ -23,14 +23,18 @@ properties-cpp, qtbase, qtdeclarative, - qtfeedback, - qtgraphicaleffects, + qtfeedback ? null, + qtgraphicaleffects ? null, qttools, validatePkgConfig, wrapGAppsHook3, xvfb-run, + withDocumentation ? true, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-content-hub"; version = "2.2.2"; @@ -45,8 +49,10 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" - "doc" "examples" + ] + ++ lib.optionals withDocumentation [ + "doc" ]; patches = [ @@ -69,6 +75,11 @@ stdenv.mkDerivation (finalAttrs: { # Don't override default theme search path (which honours XDG_DATA_DIRS) with a FHS assumption substituteInPlace import/Lomiri/Content/contenthubplugin.cpp \ --replace-fail 'QIcon::setThemeSearchPaths(QStringList() << ("/usr/share/icons/"));' "" + '' + # Need QtQuick.Window on QML2_IMPORT_PATH + + '' + substituteInPlace tests/qml6-tests/CMakeLists.txt \ + --replace-fail 'QML2_IMPORT_PATH=' 'QML2_IMPORT_PATH=${lib.getBin qtdeclarative}/${qtbase.qtQmlPrefix}:' ''; strictDeps = true; @@ -78,9 +89,11 @@ stdenv.mkDerivation (finalAttrs: { gettext pkg-config qtdeclarative # qmlplugindump - qttools # qdoc validatePkgConfig wrapGAppsHook3 + ] + ++ lib.optionals withDocumentation [ + qttools # qdoc ]; buildInputs = [ @@ -96,8 +109,13 @@ stdenv.mkDerivation (finalAttrs: { properties-cpp qtbase qtdeclarative - qtfeedback + ] + ++ lib.optionals (!withQt6) [ + # Deprecated in Qt6 qtgraphicaleffects + + # Will prolly want this in the future, but needs porting to Qt6 + qtfeedback ]; nativeCheckInputs = [ @@ -112,11 +130,13 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ (lib.cmakeBool "GSETTINGS_COMPILE" true) (lib.cmakeBool "GSETTINGS_LOCALINSTALL" true) - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck) - (lib.cmakeBool "ENABLE_DOC" true) - (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" true) # in case something still depends on it - (lib.cmakeBool "ENABLE_WERROR" true) + (lib.cmakeBool "ENABLE_DOC" withDocumentation) + # in case something still depends on it + # no longer available in the Qt6 build + (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" (!withQt6)) + (lib.cmakeBool "ENABLE_WERROR" (!withQt6)) # Known issues on Qt6 ]; preBuild = @@ -128,12 +148,19 @@ stdenv.mkDerivation (finalAttrs: { # Executes qmlplugindump export QT_PLUGIN_PATH=${listToQtVar [ qtbase ] qtbase.qtPluginPrefix} export QML2_IMPORT_PATH=${ - listToQtVar [ - qtdeclarative - lomiri-ui-toolkit - qtfeedback - qtgraphicaleffects - ] qtbase.qtQmlPrefix + listToQtVar ( + [ + qtdeclarative + lomiri-ui-toolkit + ] + ++ lib.optionals (!withQt6) [ + # Deprecated in Qt6 + qtgraphicaleffects + + # Will prolly want this in the future, but needs porting to Qt6 + qtfeedback + ] + ) qtbase.qtQmlPrefix } ''; @@ -160,6 +187,8 @@ stdenv.mkDerivation (finalAttrs: { passthru = { tests = { pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + } + // lib.optionalAttrs (!withQt6) { # Tests content-hub functionality, up to the point where one app receives a content exchange request # from another and changes into a mode to pick the content to send vm = nixosTests.lomiri.desktop-appinteractions; @@ -183,7 +212,7 @@ stdenv.mkDerivation (finalAttrs: { teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; pkgConfigModules = [ - "liblomiri-content-hub" + "liblomiri-content-hub${lib.optionalString withQt6 "-qt6"}" "liblomiri-content-hub-glib" ]; }; diff --git a/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix b/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix index cd2dc035498a..7d73afde6502 100644 --- a/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-download-manager/default.nix @@ -21,12 +21,16 @@ python3, qtbase, qtdeclarative, + qtscxml, qttools, validatePkgConfig, wrapQtAppsHook, xvfb-run, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-download-manager"; version = "0.3.0"; @@ -72,6 +76,9 @@ stdenv.mkDerivation (finalAttrs: { validatePkgConfig wrapQtAppsHook ] + ++ lib.optionals withQt6 [ + qtscxml + ] ++ lib.optionals withDocumentation [ doxygen graphviz @@ -98,9 +105,9 @@ stdenv.mkDerivation (finalAttrs: { checkInputs = [ gtest ]; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_DOC" withDocumentation) - (lib.cmakeBool "ENABLE_WERROR" true) + (lib.cmakeBool "ENABLE_WERROR" (!withQt6)) ]; makeTargets = [ "all" ] ++ lib.optionals withDocumentation [ "doc" ]; @@ -129,7 +136,7 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.lgpl3Only; teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; - pkgConfigModules = [ + pkgConfigModules = map (pc: pc + lib.optionalString withQt6 "-qt6") [ "ldm-common" "lomiri-download-manager-client" "lomiri-download-manager-common" diff --git a/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix b/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix index 60dd87c0753a..0c1a030d237b 100644 --- a/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-indicator-network/default.nix @@ -12,11 +12,11 @@ doxygen, gettext, glib, - gmenuharness, + gmenuharness ? null, # not ported to Qt6 yet gtest, intltool, libsecret, - libqofono, + libqofono ? null, # not ported to Qt6 yet libqtdbusmock, libqtdbustest, lomiri-api, @@ -25,12 +25,15 @@ ofono, pkg-config, python3, - qtdeclarative, qtbase, + qtdeclarative, qttools, validatePkgConfig, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-indicator-network"; version = "1.2.0"; @@ -45,6 +48,8 @@ stdenv.mkDerivation (finalAttrs: { outputs = [ "out" "dev" + ] + ++ lib.optionals (!withQt6) [ "doc" ]; @@ -59,26 +64,33 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - doxygen gettext - intltool pkg-config qtdeclarative - qttools # qdoc validatePkgConfig + ] + ++ lib.optionals (!withQt6) [ + doxygen + intltool + qttools # qdoc ]; buildInputs = [ cmake-extras + lomiri-api + qtbase + ] + ++ lib.optionals withQt6 [ + qtdeclarative + ] + ++ lib.optionals (!withQt6) [ dbus glib libqofono libsecret - lomiri-api lomiri-url-dispatcher networkmanager ofono - qtbase ]; nativeCheckInputs = [ (python3.withPackages (ps: with ps; [ python-dbusmock ])) ]; @@ -93,37 +105,45 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; cmakeFlags = [ - (lib.cmakeBool "BUILD_DOC" true) - (lib.cmakeBool "BUILD_LIBCONNECTIVITY_ONLY" false) + (lib.cmakeBool "BUILD_DOC" (!withQt6)) + # Indicator is not ported to Qt6 yet + (lib.cmakeBool "BUILD_LIBCONNECTIVITY_ONLY" withQt6) (lib.cmakeBool "ENABLE_COVERAGE" false) - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck) - (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" (!lib.strings.versionAtLeast qtbase.version "6")) - (lib.cmakeBool "GSETTINGS_COMPILE" true) - (lib.cmakeBool "GSETTINGS_LOCALINSTALL" true) - (lib.cmakeBool "USE_SYSTEMD" true) + (lib.cmakeBool "ENABLE_UBUNTU_COMPAT" (!withQt6)) + (lib.cmakeBool "GSETTINGS_COMPILE" (!withQt6)) + (lib.cmakeBool "GSETTINGS_LOCALINSTALL" (!withQt6)) + (lib.cmakeBool "USE_SYSTEMD" (!withQt6)) ]; - doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + doCheck = + stdenv.buildPlatform.canExecute stdenv.hostPlatform + # Indicator is not ported to Qt6 yet, tests only cover indicator + && !withQt6; # Multiple tests spin up & speak to D-Bus, avoid cross-talk causing failures enableParallelChecking = false; - postInstall = '' + postInstall = lib.optionalString (!withQt6) '' substituteInPlace $out/etc/dbus-1/services/com.lomiri.connectivity1.service \ --replace-fail '/bin/false' '${lib.getExe' coreutils "false"}' ''; passthru = { - ayatana-indicators = { - lomiri-indicator-network = [ "lomiri" ]; - }; tests = { pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + } + // lib.optionalAttrs (!withQt6) { startup = nixosTests.ayatana-indicators; lomiri = nixosTests.lomiri.desktop-ayatana-indicator-network; }; updateScript = gitUpdater { }; + } + // lib.optionalAttrs (!withQt6) { + ayatana-indicators = { + lomiri-indicator-network = [ "lomiri" ]; + }; }; meta = { @@ -135,6 +155,6 @@ stdenv.mkDerivation (finalAttrs: { license = lib.licenses.gpl3Only; teams = [ lib.teams.lomiri ]; platforms = lib.platforms.linux; - pkgConfigModules = [ "lomiri-connectivity-qt1" ]; + pkgConfigModules = [ "lomiri-connectivity-qt${if withQt6 then "6" else "1"}" ]; }; }) diff --git a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix index d28de698e310..d9a7435ec4ee 100644 --- a/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-url-dispatcher/default.nix @@ -28,6 +28,9 @@ wrapQtAppsHook, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "lomiri-url-dispatcher"; version = "0.1.4"; @@ -93,7 +96,6 @@ stdenv.mkDerivation (finalAttrs: { libapparmor lomiri-app-launch lomiri-ui-toolkit - qtdeclarative sqlite systemd libxkbcommon @@ -128,13 +130,19 @@ stdenv.mkDerivation (finalAttrs: { wrapProgram $out/bin/lomiri-url-dispatcher-dump \ --prefix PATH : ${lib.makeBinPath [ sqlite ]} - + '' + # https://gitlab.com/ubports/development/core/lomiri-url-dispatcher/-/work_items/13 + + lib.optionalString withQt6 '' + rm $out/bin/lomiri-url-dispatcher-gui + rm -r $out/share/lomiri-url-dispatcher/gui + '' + + lib.optionalString (!withQt6) '' mkdir -p $out/share/icons/hicolor/scalable/apps ln -s $out/share/lomiri-url-dispatcher/gui/lomiri-url-dispatcher-gui.svg $out/share/icons/hicolor/scalable/apps/ # Calls qmlscene from PATH, needs Qt plugins & QML components qtWrapperArgs+=( - --prefix PATH : ${lib.makeBinPath [ qtdeclarative.dev ]} + --prefix PATH : ${lib.makeBinPath [ (if withQt6 then qtdeclarative.out else qtdeclarative.dev) ]} ) wrapQtApp $out/bin/lomiri-url-dispatcher-gui ''; diff --git a/pkgs/development/beam-modules/elvis-erlang/default.nix b/pkgs/development/beam-modules/elvis-erlang/default.nix index cb80d7e3b3ca..605fd728534a 100644 --- a/pkgs/development/beam-modules/elvis-erlang/default.nix +++ b/pkgs/development/beam-modules/elvis-erlang/default.nix @@ -11,12 +11,12 @@ rebar3Relx rec { releaseType = "escript"; pname = "elvis-erlang"; - version = "4.2.3"; + version = "5.0.2"; src = fetchFromGitHub { owner = "inaka"; repo = "elvis"; - hash = "sha256-4hStLm76HZmO3vk/RdeRGJPJ3gevUkjVO2jGpVff32Q="; + hash = "sha256-QGA9vAWMgRhKHKc0XdoAymssFJSMM/xYDvKY6NC0Yys="; tag = version; }; diff --git a/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix b/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix index 43985a064e84..207c83bf3b74 100644 --- a/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix +++ b/pkgs/development/beam-modules/elvis-erlang/rebar-deps.nix @@ -24,11 +24,11 @@ let }; katana_code = builder { name = "katana_code"; - version = "2.4.1"; + version = "2.4.3"; src = fetchHex { pkg = "katana_code"; - version = "2.4.1"; - sha256 = "sha256-WO/GO12dq8giMMq1DN5/eyWSh6aQ7Wmfeaf6gPSbCzo="; + version = "2.4.3"; + sha256 = "sha256-YUxjQ9uqRc7e8n0j6wkBo4PEa/61dwOaXmDK0XGGzO4="; }; beamDeps = [ ]; }; @@ -44,11 +44,11 @@ let }; elvis_core = builder { name = "elvis_core"; - version = "4.2.3"; + version = "5.0.2"; src = fetchHex { pkg = "elvis_core"; - version = "4.2.3"; - sha256 = "sha256-xy4xinPab51p3uDxh/h5dHH57kbPTdrO36LJ+byxjqA="; + version = "5.0.2"; + sha256 = "sha256-SFa4TuS6ENxtjKBAoS2tZ5yXAuBRFIADvTsfsYUTxdc="; }; beamDeps = [ katana_code diff --git a/pkgs/development/libraries/libqtdbusmock/default.nix b/pkgs/development/libraries/libqtdbusmock/default.nix index 6beeda70e863..f78387b40594 100644 --- a/pkgs/development/libraries/libqtdbusmock/default.nix +++ b/pkgs/development/libraries/libqtdbusmock/default.nix @@ -16,6 +16,9 @@ qtbase, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "libqtdbusmock"; version = "0.10.0"; @@ -68,7 +71,7 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; cmakeFlags = [ - (lib.cmakeBool "ENABLE_QT6" (lib.strings.versionAtLeast qtbase.version "6")) + (lib.cmakeBool "ENABLE_QT6" withQt6) ]; doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; @@ -95,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: { platforms = lib.platforms.unix; teams = [ lib.teams.lomiri ]; pkgConfigModules = [ - "libqtdbusmock-1" + "libqtdbusmock${lib.optionalString withQt6 "-qt6"}-1" ]; }; }) diff --git a/pkgs/development/libraries/libqtdbustest/default.nix b/pkgs/development/libraries/libqtdbustest/default.nix index 67535a59c0a3..dd40f9066d4a 100644 --- a/pkgs/development/libraries/libqtdbustest/default.nix +++ b/pkgs/development/libraries/libqtdbustest/default.nix @@ -16,6 +16,9 @@ qtbase, }: +let + withQt6 = lib.strings.versionAtLeast qtbase.version "6"; +in stdenv.mkDerivation (finalAttrs: { pname = "libqtdbustest"; version = "0.4.0"; @@ -79,6 +82,10 @@ stdenv.mkDerivation (finalAttrs: { dontWrapQtApps = true; + cmakeFlags = [ + (lib.cmakeBool "ENABLE_QT6" withQt6) + ]; + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; enableParallelChecking = false; @@ -104,7 +111,7 @@ stdenv.mkDerivation (finalAttrs: { teams = [ lib.teams.lomiri ]; mainProgram = "qdbus-simple-test-runner"; pkgConfigModules = [ - "libqtdbustest-1" + "libqtdbustest-${if withQt6 then "qt6" else "1"}" ]; }; }) diff --git a/pkgs/development/libraries/openexr/2.nix b/pkgs/development/libraries/openexr/2.nix index f17381c9c9b1..aca401ee32c9 100644 --- a/pkgs/development/libraries/openexr/2.nix +++ b/pkgs/development/libraries/openexr/2.nix @@ -75,6 +75,20 @@ stdenv.mkDerivation rec { homepage = "https://www.openexr.com/"; license = lib.licenses.bsd3; platforms = lib.platforms.all; - insecure = true; + knownVulnerabilities = [ + "CVE-2021-3598: ImfDeepScanLineInputFile Out-of-Bounds Read" + "CVE-2021-3605: rleUncompress Out-of-Bounds Read" + "CVE-2021-3933: Integer Overflow Vulnerability in File Processing on 32-bit Systems" + "CVE-2021-23169: copyIntoFrameBuffer Heap Buffer Overflow Leading to Arbitrary Code Execution" + "CVE-2021-23215: DwaCompressor Integer Overflow Leads to Heap Buffer Overflow" + "CVE-2021-26260: DwaCompressor Integer Overflow Leading to Heap Buffer Overflow" + "CVE-2021-26945: Integer Overflow Leading to Heap Buffer Overflow" + "CVE-2023-5841: Heap Overflow in Scanline Deep Data Parsing" + "CVE-2024-31047: convert Function Denial of Service" + "CVE-2025-12495: EXR File Parsing Heap-based Buffer Overflow Remote Code Execution" + "CVE-2025-12839: EXR File Parsing Heap-based Buffer Overflow Remote Code Execution" + "CVE-2025-12840: EXR File Parsing Heap-based Buffer Overflow Remote Code Execution" + "CVE-2026-27622: CompositeDeepScanLine integer-overflow leads to heap OOB write" + ]; }; } diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index e102d84f2a11..e5ba8394ff18 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -358,13 +358,13 @@ buildPythonPackage (finalAttrs: { pname = "boto3-stubs"; - version = "1.42.78"; + version = "1.42.79"; pyproject = true; src = fetchPypi { pname = "boto3_stubs"; inherit (finalAttrs) version; - hash = "sha256-QjM1uM6ak15AQFSXhYnNuY2fodS9Rgc9aCG/HD+tjKc="; + hash = "sha256-Xx++FvmCk6Z85Zdp5nCThgXVnkRCIcGwijoNeMOVB3s="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/busylight-core/default.nix b/pkgs/development/python-modules/busylight-core/default.nix index f6c0add36894..be098b691e4f 100644 --- a/pkgs/development/python-modules/busylight-core/default.nix +++ b/pkgs/development/python-modules/busylight-core/default.nix @@ -10,16 +10,16 @@ uv-build, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "busylight-core"; - version = "2.0.1"; + version = "2.2.0"; pyproject = true; src = fetchFromGitHub { owner = "JnyJny"; repo = "busylight-core"; - tag = "v${version}"; - hash = "sha256-BJJkuArs7zRvnxVykcMzc/K+MC9r/NYy3wUfAUxrnNE="; + tag = "v${finalAttrs.version}"; + hash = "sha256-as2IvaxyMjGKPGlBmz1cntAhbpuW+f3INtnNIcwpWh8="; }; postPatch = '' @@ -45,8 +45,8 @@ buildPythonPackage rec { meta = { description = "Library for interacting programmatically with USB-connected LED lights"; homepage = "https://github.com/JnyJny/busylight-core"; - changelog = "https://github.com/JnyJny/busylight-core/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/JnyJny/busylight-core/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/construct-classes/default.nix b/pkgs/development/python-modules/construct-classes/default.nix index e10a7942d489..2f7bab65abb9 100644 --- a/pkgs/development/python-modules/construct-classes/default.nix +++ b/pkgs/development/python-modules/construct-classes/default.nix @@ -1,30 +1,25 @@ { lib, buildPythonPackage, + flit-core, construct, fetchFromGitHub, pytestCheckHook, - uv-build, }: buildPythonPackage rec { pname = "construct-classes"; - version = "0.2.2"; + version = "0.2.3"; pyproject = true; src = fetchFromGitHub { owner = "matejcik"; repo = "construct-classes"; tag = "v${version}"; - hash = "sha256-goOQMt/nVjWXYltpnKHtJaLOhR+gRTmtoUh7zVb7go4="; + hash = "sha256-xRYf6Tg4XyQN+g8uOaws46KKb0abD/M/5Q+SlnzEp/8="; }; - postPatch = '' - substituteInPlace pyproject.toml \ - --replace-fail "uv_build>=0.8.13,<0.9.0" "uv_build>=0.8.13" - ''; - - build-system = [ uv-build ]; + build-system = [ flit-core ]; dependencies = [ construct ]; diff --git a/pkgs/development/python-modules/dvc/default.nix b/pkgs/development/python-modules/dvc/default.nix index 230016648ef1..bce6cec11566 100644 --- a/pkgs/development/python-modules/dvc/default.nix +++ b/pkgs/development/python-modules/dvc/default.nix @@ -64,14 +64,14 @@ buildPythonPackage (finalAttrs: { pname = "dvc"; - version = "3.67.0"; + version = "3.67.1"; pyproject = true; src = fetchFromGitHub { owner = "iterative"; repo = "dvc"; tag = finalAttrs.version; - hash = "sha256-JNwlZFDW/qRkGuGiXnqmp+Dfp1hod9ZfMwMJgWJ8X00="; + hash = "sha256-KzHaR7o3PUHMBrtSDWXvH7/YMPxSafPSGUnS9018XKg="; }; pythonRelaxDeps = [ diff --git a/pkgs/development/python-modules/freud/default.nix b/pkgs/development/python-modules/freud/default.nix index aba9138088fd..6181840f24f8 100644 --- a/pkgs/development/python-modules/freud/default.nix +++ b/pkgs/development/python-modules/freud/default.nix @@ -80,12 +80,17 @@ buildPythonPackage (finalAttrs: { pytestCheckHook sympy ]; + # https://github.com/NixOS/nixpkgs/issues/255262 preCheck = '' rm -rf freud ''; disabledTests = [ + # 4 tests fail with: + # # AttributeError: module 'scipy.special' has no attribute 'sph_harm' + # + # See: https://github.com/glotzerlab/freud/issues/1408 "test_ld" "test_multiple_l" "test_qlmi" diff --git a/pkgs/development/python-modules/google-cloud-workstations/default.nix b/pkgs/development/python-modules/google-cloud-workstations/default.nix index efad3ceffba4..68692799c173 100644 --- a/pkgs/development/python-modules/google-cloud-workstations/default.nix +++ b/pkgs/development/python-modules/google-cloud-workstations/default.nix @@ -15,13 +15,13 @@ buildPythonPackage (finalAttrs: { pname = "google-cloud-workstations"; - version = "0.7.0"; + version = "0.8.0"; pyproject = true; src = fetchPypi { pname = "google_cloud_workstations"; inherit (finalAttrs) version; - hash = "sha256-poGhvPGpD+qOFacXsSqwaki5EZaTMQpAoXh7X0kqUsc="; + hash = "sha256-wuFFlOxCyTK0n39LB3XGwvoQ7FCSjUDJa3n6uElvSEQ="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/habiticalib/default.nix b/pkgs/development/python-modules/habiticalib/default.nix index f4093c11ac3a..38ec61bf89f1 100644 --- a/pkgs/development/python-modules/habiticalib/default.nix +++ b/pkgs/development/python-modules/habiticalib/default.nix @@ -4,7 +4,6 @@ aioresponses, buildPythonPackage, fetchFromGitHub, - habitipy, hatch-regex-commit, hatchling, mashumaro, @@ -19,7 +18,7 @@ buildPythonPackage rec { pname = "habiticalib"; - version = "0.4.6"; + version = "0.4.7"; pyproject = true; disabled = pythonOlder "3.12"; @@ -28,7 +27,7 @@ buildPythonPackage rec { owner = "tr4nt0r"; repo = "habiticalib"; tag = "v${version}"; - hash = "sha256-Z3VJ0AaB4HeCOffV5B2WFIvGJXoCn1isNPMnERoUrp0="; + hash = "sha256-ZZY7UnA4d4JNHGLMtaEGobAgzAwYDgL2SUGfxGABxTs="; }; build-system = [ @@ -36,9 +35,12 @@ buildPythonPackage rec { hatchling ]; + pythonRelaxDeps = [ + "orjson" + ]; + dependencies = [ aiohttp - habitipy mashumaro orjson pillow @@ -52,8 +54,6 @@ buildPythonPackage rec { syrupy ]; - pytestFlags = [ "--snapshot-update" ]; - pythonImportsCheck = [ "habiticalib" ]; disabledTests = [ diff --git a/pkgs/development/python-modules/iamdata/default.nix b/pkgs/development/python-modules/iamdata/default.nix index 2a92f7c2d298..2cce1032fab0 100644 --- a/pkgs/development/python-modules/iamdata/default.nix +++ b/pkgs/development/python-modules/iamdata/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "iamdata"; - version = "0.1.202603301"; + version = "0.1.202603311"; pyproject = true; src = fetchFromGitHub { owner = "cloud-copilot"; repo = "iam-data-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-cJ+CvwbPLyZZazeKVZywBLsIChvZKZ8huQbEh3yIsto="; + hash = "sha256-r4BpJJq/2xopL16+JXss7Xj7XgebQTmKdDkc9KeEbU0="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index 65d2e841449b..2aee8a14ee6a 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -127,8 +127,8 @@ in "sha256-Mvf3bBhrRRR+hoAsBPq7p9COJqVxV9LL+GrnikrHX2g="; mypy-boto3-appstream = - buildMypyBoto3Package "appstream" "1.42.54" - "sha256-NrR4wQslCosBCvmAkGe7qJ3WNu428hD3+SZUk1Ga870="; + buildMypyBoto3Package "appstream" "1.42.79" + "sha256-EG6G33/7BTIjlEXxSa0ygnT80WytlAMCM/bAI9jz3Jg="; mypy-boto3-appsync = buildMypyBoto3Package "appsync" "1.42.6" @@ -147,8 +147,8 @@ in "sha256-jW+LgaUpdeCSJLnpNE13DSio9nFmp0icoLEMwxX44KU="; mypy-boto3-autoscaling = - buildMypyBoto3Package "autoscaling" "1.42.33" - "sha256-F1+6Sd7kaCrZlulXzrFmF3RFUPEmRNvKeB1xQeSGgq4="; + buildMypyBoto3Package "autoscaling" "1.42.79" + "sha256-izdIT33QiFDXbe+VUes3ErQphuiCL+Q/c32qBjJzyDw="; mypy-boto3-autoscaling-plans = buildMypyBoto3Package "autoscaling-plans" "1.42.3" @@ -459,8 +459,8 @@ in "sha256-syjw4M02YXRXsJpM3e7OikE3sSTl/hIIJ3857PP2BII="; mypy-boto3-ecs = - buildMypyBoto3Package "ecs" "1.42.69" - "sha256-+ysRw8dohrQWQGdBU5qzHpNr6DF/BcELn90WdUCNPes="; + buildMypyBoto3Package "ecs" "1.42.79" + "sha256-qNwhq5px+DbifDPRN0VeHk0j7AzWSxgiXkvKovyHIQE="; mypy-boto3-efs = buildMypyBoto3Package "efs" "1.42.3" @@ -559,8 +559,8 @@ in "sha256-NqNGcL3HfJgx2ScPLKMNNwpVS3bO4Cu7JpYlenSJwJg="; mypy-boto3-gamelift = - buildMypyBoto3Package "gamelift" "1.42.75" - "sha256-Iv1OjFAKOny91w2G++yfwZLH8dMREz+1iF7+t8jgM1k="; + buildMypyBoto3Package "gamelift" "1.42.79" + "sha256-IYvjnVdbVYFkX7Qu3Sr9iaRFMeq/F7njuPW3EBWldlE="; mypy-boto3-glacier = buildMypyBoto3Package "glacier" "1.42.30" @@ -762,8 +762,8 @@ in "sha256-bCVvuhK3mpTeNDYDYaACVWgQMhKR9mIi9BbbCI0ynCA="; mypy-boto3-lakeformation = - buildMypyBoto3Package "lakeformation" "1.42.45" - "sha256-CG1b4lkqvsQLguhkYuJ5CH5Gu0IrC1mbsYYQ2Itjys4="; + buildMypyBoto3Package "lakeformation" "1.42.79" + "sha256-tMre640822/6JE0YVSHud03xqS4VbgJy9RJsN3eIEhE="; mypy-boto3-lambda = buildMypyBoto3Package "lambda" "1.42.37" @@ -806,8 +806,8 @@ in "sha256-VGQzgnrUynTDjfYpEk+FR+PrljbULl0UpbeqbaPKqSc="; mypy-boto3-logs = - buildMypyBoto3Package "logs" "1.42.77" - "sha256-2SCge72wHVg5703SucdtTdadJn9fnbnxiz8NhDXAWB0="; + buildMypyBoto3Package "logs" "1.42.79" + "sha256-CPFaU1Cz1OfBiOSh5jfPWIU64cV4k8Mf5cCM1S7ZlXw="; mypy-boto3-lookoutequipment = buildMypyBoto3Package "lookoutequipment" "1.42.3" @@ -966,8 +966,8 @@ in "sha256-h0urK602L1j2CtD1xsUOMaXizzc2CxbttMlaSNyQNoM="; mypy-boto3-opensearch = - buildMypyBoto3Package "opensearch" "1.42.73" - "sha256-aRXlQy744sPCF4lUZTLaUXIzHtFUJEB9r6xaYQC6Ric="; + buildMypyBoto3Package "opensearch" "1.42.79" + "sha256-oGczBLqgxxiP+MeOt3p+5qbe32r6YzqRGJfe3CQ7srU="; mypy-boto3-opensearchserverless = buildMypyBoto3Package "opensearchserverless" "1.42.75" @@ -1158,8 +1158,8 @@ in "sha256-4/Q39UsUYaluauoaLm6BOej+Krl2VbO1xKKo1orRIkI="; mypy-boto3-s3 = - buildMypyBoto3Package "s3" "1.42.67" - "sha256-OjqRiplJ8tb4Bx1JC4lo3c5jSqGVkGl1N+UYnL3KQD4="; + buildMypyBoto3Package "s3" "1.42.79" + "sha256-NTwMCEMM3fUVkiYYdeokwq64juVcyiMHLXbbZqkhoYg="; mypy-boto3-s3control = buildMypyBoto3Package "s3control" "1.42.37" @@ -1170,8 +1170,8 @@ in "sha256-juVfwdjPDNPaT5tvyXpzDtomugqxeu++AERLkVtFIxw="; mypy-boto3-sagemaker = - buildMypyBoto3Package "sagemaker" "1.42.77" - "sha256-gm5z5bnS57ZsNpKroi91/KfYWxnAjgjPwB6IOZ6eSno="; + buildMypyBoto3Package "sagemaker" "1.42.79" + "sha256-HSSrvBgXk0HwS8ys2e8+euzupPc075axwh7WAduvvR8="; mypy-boto3-sagemaker-a2i-runtime = buildMypyBoto3Package "sagemaker-a2i-runtime" "1.42.3" diff --git a/pkgs/development/python-modules/openrazer/common.nix b/pkgs/development/python-modules/openrazer/common.nix index a2ab448303e8..cb93df1f0d69 100644 --- a/pkgs/development/python-modules/openrazer/common.nix +++ b/pkgs/development/python-modules/openrazer/common.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub }: rec { - version = "3.11.0"; + version = "3.12.0"; pyproject = true; src = fetchFromGitHub { owner = "openrazer"; repo = "openrazer"; tag = "v${version}"; - hash = "sha256-pk3nghd16jhdf7zokwMzBGwGtBU7ta4nSHsOoGxjD4w="; + hash = "sha256-Sgn+7DABsTnRTx/lh/++JPmfsQ7dM6frkyzG0F5k2gA="; }; meta = { diff --git a/pkgs/development/python-modules/pydrawise/default.nix b/pkgs/development/python-modules/pydrawise/default.nix index 06de33708cb2..04623dcd79a7 100644 --- a/pkgs/development/python-modules/pydrawise/default.nix +++ b/pkgs/development/python-modules/pydrawise/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "pydrawise"; - version = "2025.9.0"; + version = "2026.3.0"; pyproject = true; src = fetchFromGitHub { owner = "dknowles2"; repo = "pydrawise"; tag = version; - hash = "sha256-eHy3pdzgN5CvKfsoa5ZdT9lor4AiZr8K1g/8qyzP3eo="; + hash = "sha256-h91J8gcc5qiBCYvOeFhSDtvdMKfuWUTys6uw5wmLehI="; }; build-system = [ diff --git a/pkgs/development/python-modules/pyoverkiz/default.nix b/pkgs/development/python-modules/pyoverkiz/default.nix index 5c96b8d2324a..aeb3153acd7c 100644 --- a/pkgs/development/python-modules/pyoverkiz/default.nix +++ b/pkgs/development/python-modules/pyoverkiz/default.nix @@ -15,14 +15,14 @@ buildPythonPackage (finalAttrs: { pname = "pyoverkiz"; - version = "1.20.0"; + version = "1.20.1"; pyproject = true; src = fetchFromGitHub { owner = "iMicknl"; repo = "python-overkiz-api"; tag = "v${finalAttrs.version}"; - hash = "sha256-H1G85vleaV+ZWbjH3tozI6fvWPKxwrIVRIXiFwsUWOA="; + hash = "sha256-PaJ4AC0N82iGTsgP620uI6Iw9l0aHrR7UutWLYxrOYE="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/scantree/default.nix b/pkgs/development/python-modules/scantree/default.nix new file mode 100644 index 000000000000..f9f8423968e4 --- /dev/null +++ b/pkgs/development/python-modules/scantree/default.nix @@ -0,0 +1,46 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + setuptools, + versioneer, + attrs, + pathspec, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "scantree"; + version = "0.0.4"; + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-Fb1cskSDsE2yxwZTYE6Oo1IumAh9t+OKuEgvBTmEwKw="; + }; + + build-system = [ + setuptools + versioneer + ]; + + dependencies = [ + attrs + pathspec + ]; + + pythonImportsCheck = [ + "scantree" + ]; + + nativeCheckInputs = [ + pytestCheckHook + ]; + + meta = { + description = "Flexible recursive directory iterator: scandir meets glob(\"**\", recursive=True)"; + homepage = "https://github.com/andhus/scantree"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ wentasah ]; + }; +} diff --git a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix index 9876d11ecb1b..75ee18c69a44 100644 --- a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix +++ b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix @@ -9,14 +9,14 @@ buildPythonPackage (finalAttrs: { pname = "tencentcloud-sdk-python"; - version = "3.1.64"; + version = "3.1.67"; pyproject = true; src = fetchFromGitHub { owner = "TencentCloud"; repo = "tencentcloud-sdk-python"; tag = finalAttrs.version; - hash = "sha256-X8UCnuXhaPsBrtuFz8cLkvag86Fa5aO7YXuPmazZdVA="; + hash = "sha256-J5svdEmr8jGq7OstSRk/Sv/QsmwPanm0gemciOyHjHc="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/tools/rust/rustup/0001-dynamically-patchelf-binaries.patch b/pkgs/development/tools/rust/rustup/0001-dynamically-patchelf-binaries.patch index 59fcf039795c..edb83da77139 100644 --- a/pkgs/development/tools/rust/rustup/0001-dynamically-patchelf-binaries.patch +++ b/pkgs/development/tools/rust/rustup/0001-dynamically-patchelf-binaries.patch @@ -1,16 +1,16 @@ diff --git a/src/dist/component/package.rs b/src/dist/component/package.rs -index dfccc661..85233f3b 100644 +index dc545d4b62..4dd8ade86e 100644 --- a/src/dist/component/package.rs +++ b/src/dist/component/package.rs -@@ -113,6 +113,7 @@ impl Package for DirectoryPackage { +@@ -130,6 +130,7 @@ } else { builder.move_file(path.clone(), &src_path)? } + nix_patchelf_if_needed(&target.prefix().path().join(path.clone())) } - "dir" => { + ComponentPartKind::Dir => { if self.copy { -@@ -135,6 +136,176 @@ impl Package for DirectoryPackage { +@@ -152,6 +153,176 @@ } } @@ -31,7 +31,7 @@ index dfccc661..85233f3b 100644 + .parent() + .ok_or(anyhow!("failed to get parent directory"))? + .with_file_name("nix-support"); -+ let mut file = std::fs::File::create(dest_lld_path)?; ++ let mut file = fs::File::create(dest_lld_path)?; + ld_wrapper_path.push("ld-wrapper.sh"); + + let wrapped_script = format!( @@ -184,6 +184,6 @@ index dfccc661..85233f3b 100644 + } +} + - #[derive(Debug)] - pub(crate) struct TarPackage<'a>(DirectoryPackage, temp::Dir<'a>); - + /// Handle the async result of io operations + /// Replaces op.result with Ok(()) + fn filter_result(op: &mut CompletedIo) -> io::Result<()> { diff --git a/pkgs/development/tools/rust/rustup/default.nix b/pkgs/development/tools/rust/rustup/default.nix index 43d1860bb03b..e191a9b2e151 100644 --- a/pkgs/development/tools/rust/rustup/default.nix +++ b/pkgs/development/tools/rust/rustup/default.nix @@ -25,16 +25,16 @@ in rustPlatform.buildRustPackage (finalAttrs: { pname = "rustup"; - version = "1.28.2"; + version = "1.29.0"; src = fetchFromGitHub { owner = "rust-lang"; repo = "rustup"; tag = finalAttrs.version; - hash = "sha256-iX5hEaQwCW9MuyafjXml8jV3EDnxRNUlOoy3Cur/Iyw="; + hash = "sha256-jbB0nmXtc95Ac+YfmyELh6n5OTRMmeDPT4OFIlJNrZc="; }; - cargoHash = "sha256-KljaAzYHbny7KHOO51MotdmNpHCKWdt6kc/FIpFN6c0="; + cargoHash = "sha256-m/KoXNJh00zYKZo7MIJsBvo4zldfKdofrUh8AItJqXI="; nativeBuildInputs = [ makeBinaryWrapper @@ -78,9 +78,7 @@ rustPlatform.buildRustPackage (finalAttrs: { # TODO: Investigate this. doCheck = !stdenv.hostPlatform.isDarwin; # Random failures when running tests in parallel. - preCheck = '' - export NIX_BUILD_CORES=1 - ''; + dontUseCargoParallelTests = true; # skip failing tests checkFlags = [ @@ -89,7 +87,10 @@ rustPlatform.buildRustPackage (finalAttrs: { "--skip=suite::cli_exact::check_updates_some" "--skip=suite::cli_exact::check_updates_with_update" # rustup-init is not used in nix rustup - "--skip=suite::cli_ui::rustup_init_ui_doc_text_tests" + "--skip=suite::cli_rustup_init_ui" + # reaches out to the network to test TLS roots, which can't be done in the + # build sandbox + "--skip=suite::static_roots::store_static_roots" ]; postInstall = '' diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix index 6b21667d761d..73408318ef7d 100644 --- a/pkgs/servers/nextcloud/default.nix +++ b/pkgs/servers/nextcloud/default.nix @@ -53,14 +53,14 @@ let in { nextcloud32 = generic { - version = "32.0.6"; - hash = "sha256-RLwz/A4xplC7UguxI8CqplGbf3uThhM9Vhred+U/cTA="; + version = "32.0.7"; + hash = "sha256-RQtPKybIO+TXuGgiKafYaOKAL9VK6PPuY2dhiZVjenY="; packages = nextcloud32Packages; }; nextcloud33 = generic { - version = "33.0.0"; - hash = "sha256-b3cwkCJpyHn58q1KoKInyxa1QI7kbwk/aL0yYz90Gr8="; + version = "33.0.1"; + hash = "sha256-0D8V3p36Zq1zjjfFDnek8BfCaAzcuYQlwg2rQwjQ+Ms="; packages = nextcloud33Packages; }; diff --git a/pkgs/servers/nextcloud/packages/32.json b/pkgs/servers/nextcloud/packages/32.json index 153d6547356a..50e5aa83d923 100644 --- a/pkgs/servers/nextcloud/packages/32.json +++ b/pkgs/servers/nextcloud/packages/32.json @@ -30,9 +30,9 @@ ] }, "collectives": { - "hash": "sha256-BYgY9kC91ftpw/eXlFT5ryNhjz138pzPoIh89k46GZ8=", - "url": "https://github.com/nextcloud/collectives/releases/download/v4.1.0/collectives-4.1.0.tar.gz", - "version": "4.1.0", + "hash": "sha256-h6Krtrm9YLZ0TEfsInN2bmY+/2v4Gyef5x0TIo9n/Ns=", + "url": "https://github.com/nextcloud/collectives/releases/download/v4.2.0/collectives-4.2.0.tar.gz", + "version": "4.2.0", "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.", "homepage": "https://github.com/nextcloud/collectives", "licenses": [ @@ -420,9 +420,9 @@ ] }, "twofactor_admin": { - "hash": "sha256-tZG2NCd4WxnPwf1KJq5mBX7Zfy0rDjigJGOw2qypUlU=", - "url": "https://github.com/nextcloud-releases/twofactor_admin/releases/download/v4.11.0/twofactor_admin-v4.11.0.tar.gz", - "version": "4.11.0", + "hash": "sha256-dx8bEsC/rSAKN9rwP2hf3d8G3f3J1RzCrSqU6BbcvRY=", + "url": "https://github.com/nextcloud-releases/twofactor_admin/releases/download/v4.11.1/twofactor_admin-v4.11.1.tar.gz", + "version": "4.11.1", "description": "This two-factor auth (2FA) provider for Nextcloud allows admins to generate a one-time\n\t\tcode for users to log into a 2FA protected account. This is helpful in situations where\n\t\tusers have lost access to their other 2FA methods or mandatory 2FA without any previously\n\t\tenabled 2FA provider.", "homepage": "", "licenses": [ @@ -460,9 +460,9 @@ ] }, "user_oidc": { - "hash": "sha256-Xl35Ss/P6PvK6pvm7i/J+0EHJaLPbOCffR8ZT5c3XA4=", - "url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v8.6.1/user_oidc-v8.6.1.tar.gz", - "version": "8.6.1", + "hash": "sha256-wAAooaPTsCjCS6UCzUuFeSJ6EUnXPYo3TK6jXLs/Lfk=", + "url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v8.7.0/user_oidc-v8.7.0.tar.gz", + "version": "8.7.0", "description": "Allows flexible configuration of an OIDC server as Nextcloud login user backend.", "homepage": "https://github.com/nextcloud/user_oidc", "licenses": [ @@ -470,9 +470,9 @@ ] }, "user_saml": { - "hash": "sha256-oezyc/YXOG1vlw8kNLfVkhA7/WVWfTnL/hb1KSY78ho=", - "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v7.1.3/user_saml-v7.1.3.tar.gz", - "version": "7.1.3", + "hash": "sha256-A4e4LYCcrt+LcyrSK9vQoNGG/a+bZU6K4umajrgDBIM=", + "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v7.1.4/user_saml-v7.1.4.tar.gz", + "version": "7.1.4", "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.", "homepage": "https://github.com/nextcloud/user_saml", "licenses": [ diff --git a/pkgs/servers/nextcloud/packages/33.json b/pkgs/servers/nextcloud/packages/33.json index 593f7afdd3ad..3e1d2e1abfb6 100644 --- a/pkgs/servers/nextcloud/packages/33.json +++ b/pkgs/servers/nextcloud/packages/33.json @@ -30,9 +30,9 @@ ] }, "collectives": { - "hash": "sha256-BYgY9kC91ftpw/eXlFT5ryNhjz138pzPoIh89k46GZ8=", - "url": "https://github.com/nextcloud/collectives/releases/download/v4.1.0/collectives-4.1.0.tar.gz", - "version": "4.1.0", + "hash": "sha256-h6Krtrm9YLZ0TEfsInN2bmY+/2v4Gyef5x0TIo9n/Ns=", + "url": "https://github.com/nextcloud/collectives/releases/download/v4.2.0/collectives-4.2.0.tar.gz", + "version": "4.2.0", "description": "Collectives is a Nextcloud App for activist and community projects to organize together.\nCome and gather in collectives to build shared knowledge.\n\n* 👥 **Collective and non-hierarchical workflow by heart**: Collectives are\n tied to a [Nextcloud Team](https://github.com/nextcloud/circles) and\n owned by the collective.\n* 📝 **Collaborative page editing** like known from Etherpad thanks to the\n [Text app](https://github.com/nextcloud/text).\n* 🔤 **Well-known [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax**\n for page formatting.\n\n## Installation\n\nIn your Nextcloud instance, simply navigate to **»Apps«**, find the\n**»Teams«** and **»Collectives«** apps and enable them.", "homepage": "https://github.com/nextcloud/collectives", "licenses": [ @@ -420,9 +420,9 @@ ] }, "twofactor_admin": { - "hash": "sha256-tZG2NCd4WxnPwf1KJq5mBX7Zfy0rDjigJGOw2qypUlU=", - "url": "https://github.com/nextcloud-releases/twofactor_admin/releases/download/v4.11.0/twofactor_admin-v4.11.0.tar.gz", - "version": "4.11.0", + "hash": "sha256-dx8bEsC/rSAKN9rwP2hf3d8G3f3J1RzCrSqU6BbcvRY=", + "url": "https://github.com/nextcloud-releases/twofactor_admin/releases/download/v4.11.1/twofactor_admin-v4.11.1.tar.gz", + "version": "4.11.1", "description": "This two-factor auth (2FA) provider for Nextcloud allows admins to generate a one-time\n\t\tcode for users to log into a 2FA protected account. This is helpful in situations where\n\t\tusers have lost access to their other 2FA methods or mandatory 2FA without any previously\n\t\tenabled 2FA provider.", "homepage": "", "licenses": [ @@ -460,9 +460,9 @@ ] }, "user_oidc": { - "hash": "sha256-Xl35Ss/P6PvK6pvm7i/J+0EHJaLPbOCffR8ZT5c3XA4=", - "url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v8.6.1/user_oidc-v8.6.1.tar.gz", - "version": "8.6.1", + "hash": "sha256-wAAooaPTsCjCS6UCzUuFeSJ6EUnXPYo3TK6jXLs/Lfk=", + "url": "https://github.com/nextcloud-releases/user_oidc/releases/download/v8.7.0/user_oidc-v8.7.0.tar.gz", + "version": "8.7.0", "description": "Allows flexible configuration of an OIDC server as Nextcloud login user backend.", "homepage": "https://github.com/nextcloud/user_oidc", "licenses": [ @@ -470,9 +470,9 @@ ] }, "user_saml": { - "hash": "sha256-oezyc/YXOG1vlw8kNLfVkhA7/WVWfTnL/hb1KSY78ho=", - "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v7.1.3/user_saml-v7.1.3.tar.gz", - "version": "7.1.3", + "hash": "sha256-A4e4LYCcrt+LcyrSK9vQoNGG/a+bZU6K4umajrgDBIM=", + "url": "https://github.com/nextcloud-releases/user_saml/releases/download/v7.1.4/user_saml-v7.1.4.tar.gz", + "version": "7.1.4", "description": "Using the SSO & SAML app of your Nextcloud you can make it easily possible to integrate your existing Single-Sign-On solution with Nextcloud. In addition, you can use the Nextcloud LDAP user provider to keep the convenience for users. (e.g. when sharing)\nThe following providers are supported and tested at the moment:\n\n* **SAML 2.0**\n\t* OneLogin\n\t* Shibboleth\n\t* Active Directory Federation Services (ADFS)\n\n* **Authentication via Environment Variable**\n\t* Kerberos (mod_auth_kerb)\n\t* Any other provider that authenticates using the environment variable\n\nWhile theoretically any other authentication provider implementing either one of those standards is compatible, we like to note that they are not part of any internal test matrix.", "homepage": "https://github.com/nextcloud/user_saml", "licenses": [ diff --git a/pkgs/tools/inputmethods/fcitx5/update.py b/pkgs/tools/inputmethods/fcitx5/update.py index 08b8f6938678..5da7d34a51a6 100755 --- a/pkgs/tools/inputmethods/fcitx5/update.py +++ b/pkgs/tools/inputmethods/fcitx5/update.py @@ -5,24 +5,27 @@ import requests import subprocess REPOS = [ - "libime", - "xcb-imdkit", + ( "fcitx", "libime" ), + ( "fcitx", "xcb-imdkit"), - "fcitx5", - "fcitx5-anthy", - "fcitx5-chewing", - "fcitx5-chinese-addons", - "fcitx5-configtool", - "fcitx5-gtk", - "fcitx5-hangul", - "fcitx5-lua", - "fcitx5-m17n", - "fcitx5-qt", - "fcitx5-rime", - "fcitx5-skk", - "fcitx5-table-extra", - "fcitx5-table-other", - "fcitx5-unikey" + ( "fcitx", "fcitx5" ), + ( "fcitx", "fcitx5-anthy" ), + ( "fcitx", "fcitx5-chewing" ), + ( "fcitx", "fcitx5-chinese-addons" ), + ( "fcitx", "fcitx5-configtool" ), + ( "fcitx", "fcitx5-gtk" ), + ( "fcitx", "fcitx5-hangul" ), + ( "fcitx", "fcitx5-lua" ), + ( "fcitx", "fcitx5-m17n" ), + ( "fcitx", "fcitx5-qt" ), + ( "fcitx", "fcitx5-rime" ), + ( "fcitx", "fcitx5-skk" ), + ( "fcitx", "fcitx5-table-extra" ), + ( "fcitx", "fcitx5-table-other" ), + ( "fcitx", "fcitx5-unikey" ), + ( "fcitx", "fcitx5-unikey" ) + + ( "ray2501", "fcitx5-array" ) ] OWNER = "fcitx" @@ -32,8 +35,8 @@ def get_latest_tag(repo, owner=OWNER): return r.json()[0].get("name") def main(): - for repo in REPOS: - rev = get_latest_tag(repo) + for (owner, repo) in REPOS: + rev = get_latest_tag(repo, owner) if repo == "fcitx5-qt": subprocess.run(["nix-update", "--commit", "--version", rev, "qt6Packages.{}".format(repo)]) else: diff --git a/pkgs/tools/misc/tdarr/common.nix b/pkgs/tools/misc/tdarr/common.nix index dd08fb81adde..6ef7469c2308 100644 --- a/pkgs/tools/misc/tdarr/common.nix +++ b/pkgs/tools/misc/tdarr/common.nix @@ -100,7 +100,7 @@ let in stdenv.mkDerivation (finalAttrs: { inherit pname; - version = "2.58.02"; + version = "2.66.01"; src = fetchzip { url = "https://storage.tdarr.io/versions/${finalAttrs.version}/${platform}/${componentName}.zip"; @@ -160,9 +160,6 @@ stdenv.mkDerivation (finalAttrs: { postInstall = '' makeWrapper $out/share/${pname}/${componentName} $out/bin/${pname} ${commonWrapperArgs} - '' - # TODO: Check on each update to see if the Tdarr_Node_tray gets re-added to the aarch64-linux build. Reach out to upstream? - + lib.optionalString (stdenv.hostPlatform.system != "aarch64-linux") '' makeWrapper $out/share/${pname}/${componentTrayName} $out/bin/${pname}-tray ${commonWrapperArgs} '' + lib.optionalString installIcons '' @@ -177,7 +174,7 @@ stdenv.mkDerivation (finalAttrs: { '' + ""; - desktopItems = lib.optionals (stdenv.isLinux && stdenv.hostPlatform.system != "aarch64-linux") [ + desktopItems = lib.optionals stdenv.isLinux [ (makeDesktopItem { desktopName = "Tdarr ${componentUpper} Tray"; name = "Tdarr ${componentUpper} Tray"; diff --git a/pkgs/tools/misc/tdarr/node.nix b/pkgs/tools/misc/tdarr/node.nix index 45c910ba00e4..869ac289ce23 100644 --- a/pkgs/tools/misc/tdarr/node.nix +++ b/pkgs/tools/misc/tdarr/node.nix @@ -5,9 +5,9 @@ callPackage ./common.nix { } { component = "node"; hashes = { - linux_x64 = "sha256-+vD5oaoYh/bOCuk/Bxc8Fsm9UnFICownSKvg9i726nk="; - linux_arm64 = "sha256-2uPtEno0dSdVBg5hCiUuvBCB5tuTOcpeU2BuXPiqdUU="; - darwin_x64 = "sha256-8O5J1qFpQxD6fzojxjWnbkS4XQoCZauxCtbl/drplfI="; - darwin_arm64 = "sha256-oA+nTkO4LDAX5/cGkjNOLnPu0Rss9el+4JF8PBEfsPQ="; + linux_x64 = "sha256-3dd8ouRfThm481rDJDnxxUuSkqNlFR+2aywPzyy7xrw="; + linux_arm64 = "sha256-LD/cQECal9dLZY/FQSFztOVzd7MaeHL1rdbMUJ2DPNY="; + darwin_x64 = "sha256-icgzoHqZ+P6gXJ8jQTau3O2D6uRvET4MtNoWJI/JnvM="; + darwin_arm64 = "sha256-Rw478IpDLLe+Ek3Jt5Duaq1sHL1D3pE0HkVqk+v1ECE="; }; } diff --git a/pkgs/tools/misc/tdarr/server.nix b/pkgs/tools/misc/tdarr/server.nix index 96e40e403508..65c17f87598b 100644 --- a/pkgs/tools/misc/tdarr/server.nix +++ b/pkgs/tools/misc/tdarr/server.nix @@ -5,10 +5,10 @@ callPackage ./common.nix { } { component = "server"; hashes = { - linux_x64 = "sha256-+nxwSGAkA+BPf481N6KHW7s0iJzoGFPWp0XCbsVEwrI="; - linux_arm64 = "sha256-tA5VX27XmH3C4Bkll2mJlr1BYz5V7PPvzbJeaDht7uI="; - darwin_x64 = "sha256-jgHEezqtzUWTIvmxsmV1VgaXY9wHePkg6bQO16eSSGI="; - darwin_arm64 = "sha256-pcPpqFbqYsXf5Og9uC+eF/1kOQ1ZiletDzkk3qavPS0="; + linux_x64 = "sha256-YbEFgvOEAY5HGyTZw9vr4SC85zLQHUQKq++Qbsg1+5A="; + linux_arm64 = "sha256-PGguxjOGVUPV5CW3iAtoehnxqGkTe9UA6Vu+7bf6DlQ="; + darwin_x64 = "sha256-Gya1DmrLM5UCChwocEwdjYxSWECOl5Ew/e8LpmPQB7M="; + darwin_arm64 = "sha256-RJYQZ4L49WTwgMj+vZYFd5Kl3gX1DrkR+fF5E7L9fVs="; }; includeInPath = [ ccextractor ]; diff --git a/pkgs/tools/misc/tdarr/update-hashes.sh b/pkgs/tools/misc/tdarr/update-hashes.sh index 822ff243d9ca..9e50086ca940 100755 --- a/pkgs/tools/misc/tdarr/update-hashes.sh +++ b/pkgs/tools/misc/tdarr/update-hashes.sh @@ -1,4 +1,5 @@ -#!/usr/bin/env bash +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq unzip set -euo pipefail # Updates tdarr packages to the latest version @@ -20,11 +21,12 @@ fi echo "Latest version: $LATEST_VERSION" >&2 -# Check current version in common.nix -CURRENT_VERSION=$(grep -oP '(?<=version = ")[^"]+' "$COMMON_FILE" 2>/dev/null) +# Use the current version injected by update.nix, falling back to grepping common.nix for standalone use +CURRENT_VERSION="${UPDATE_NIX_OLD_VERSION:-$(grep -oP '(?<=version = ")[^"]+' "$COMMON_FILE")}" if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then echo "Tdarr packages are already on the latest version ($LATEST_VERSION)" >&2 + echo "[]" exit 0 fi @@ -32,7 +34,14 @@ echo "Updating from $CURRENT_VERSION to $LATEST_VERSION..." >&2 fetch_and_convert() { local url=$1 - nix-prefetch-url --unpack "$url" 2>/dev/null | xargs nix hash convert --hash-algo sha256 --to sri + local tmpdir + tmpdir=$(mktemp -d) + # Clean up temp directory on return + trap "rm -rf '$tmpdir'" RETURN + + curl -sSL -o "$tmpdir/archive.zip" "$url" || { echo "Error: failed to download $url" >&2; return 1; } + unzip -q "$tmpdir/archive.zip" -d "$tmpdir/unpacked" || { echo "Error: failed to unzip $url" >&2; return 1; } + nix hash path "$tmpdir/unpacked" } # Fetch all hashes for both server and node diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index e802736b7cab..69322770da6c 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -497,6 +497,7 @@ mapAliases { clang_17 = throw "clang_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-09 clashmi = throw "'clashmi' has been removed, as it is unmaintained in nixpkgs"; # Added 2026-01-31 clasp = throw "'clasp' has been renamed to/replaced by 'clingo'"; # Converted to throw 2025-10-27 + claude-code-acp = warnAlias "'claude-code-acp' has been renamed to 'claude-agent-acp'" claude-agent-acp; # Added 2026-03-31 clearlyU = clearly-u; # Added 2026-02-08 cli-visualizer = throw "'cli-visualizer' has been removed as the upstream repository is gone"; # Added 2025-06-05 clima = throw "'clima' has been removed, as it has been unmaintained upstream since December 2024, use glow instead"; # Added 2026-01-01 @@ -1070,6 +1071,8 @@ mapAliases { libpthreadstubs = libpthread-stubs; # Added 2025-02-04 libpulseaudio-vanilla = throw "'libpulseaudio-vanilla' has been renamed to/replaced by 'libpulseaudio'"; # Converted to throw 2025-10-27 libqt5pas = throw "'libqt5pas' has been renamed to/replaced by 'libsForQt5.libqtpas'"; # Converted to throw 2025-10-27 + libqtdbusmock = warnAlias "'libqtdbusmock' has been renamed to 'libsForQt5.libqtdbusmock'"; # Added 2026-03-10 + libqtdbustest = warnAlias "'libqtdbustest' has been renamed to 'libsForQt5.libqtdbustest'"; # Added 2026-03-10 libquotient = throw "'libquotient' for qt5 was removed as upstream removed qt5 support. Consider explicitly upgrading to qt6 'libquotient'"; # Converted to throw 2025-07-04 LibreArp = throw "'LibreArp' has been renamed to/replaced by 'librearp'"; # Converted to throw 2025-10-27 LibreArp-lv2 = throw "'LibreArp-lv2' has been renamed to/replaced by 'librearp-lv2'"; # Converted to throw 2025-10-27 @@ -1241,6 +1244,7 @@ mapAliases { llvmPackages_15 = throw "llvmPackages_15 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-12 llvmPackages_16 = throw "llvmPackages_16 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-09 llvmPackages_17 = throw "llvmPackages_17 has been removed, as it is unmaintained and obsolete"; # Added 2025-08-09 + lnreader = warnAlias "'lnreader' has been renamed to 'pdf-cli'" pdf-cli; # Added 2026-03-18 lockfileProgs = warnAlias "'lockfileProgs' has been renamed to 'lockfile-progs'" lockfile-progs; # Added 2026-02-08 loco-cli = throw "'loco-cli' has been renamed to/replaced by 'loco'"; # Converted to throw 2025-10-27 log4j-detect = throw "'log4j-detect' has been removed, as it was unmaintained upstream and no longer relevant given that the Log4Shell vulnerability has been fixed."; # Added 2025-11-15 @@ -1688,6 +1692,7 @@ mapAliases { qflipper = throw "'qflipper' has been renamed to/replaced by 'qFlipper'"; # Converted to throw 2025-10-27 qMasterPassword = warnAlias "'qMasterPassword' has been renamed to/replaced by 'qmasterpassword'" qmasterpassword; # Added 2026-02-01 qMasterPassword-wayland = warnAlias "'qMasterPassword-wayland' has been renamed to/replaced by 'qmasterpassword-wayland'" qmasterpassword-wayland; # Added 2026-02-01 + qmenumodel = warnAlias "'qmenumodel' has been renamed to 'libsForQt5.qmenumodel'"; # Added 2026-03-26 qnial = throw "'qnial' has been removed due to failing to build and being unmaintained"; # Added 2025-06-26 qrscan = throw "qrscan has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-19 qscintilla = throw "'qscintilla' has been renamed to/replaced by 'libsForQt5.qscintilla'"; # Converted to throw 2025-10-27 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e395e3bf8dff..cb5759dcc792 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -108,13 +108,62 @@ with pkgs; gccStdenvNoLibs = mkStdenvNoLibs gccStdenv; clangStdenvNoLibs = mkStdenvNoLibs clangStdenv; + /** + Recurse into an attribute set depending on which `config.recursionMode` is set. + + This function only affects a single attribute set; + it does not apply itself recursively for nested attribute sets. + + # Inputs + `modes` + : An attribute set containg keys from `config.recursionMode` defaulting to true. + `attrs` + : An attribute set to scan for derivations. + + # Type + ``` + recurseIntoAttrsWith :: AttrSet -> AttrSet -> AttrSet + ``` + + # Examples + :::{.example} + ## `pkgs.recurseIntoAttrsWith` usage example + ```nix + { pkgs ? import {} }: + { + myTools = pkgs.recurseIntoAttrsWith { } { + inherit (pkgs) hello figlet; + }; + } + ``` + ::: + */ + recurseIntoAttrsWith = + { + hydra ? true, + eval ? true, + search ? true, + }: + attrs: + attrs + // { + recurseForDerivations = + let + modes = { + inherit hydra eval search; + }; + in + modes.${config.recursionMode}; + }; + ### Evaluating the entire Nixpkgs naively will likely fail, make failure fast AAAAAASomeThingsFailToEvaluate = throw '' This pseudo-package is likely not the only part of Nixpkgs that fails to evaluate. You should not evaluate entire Nixpkgs without measures to handle failing packages. ''; - tests = recurseIntoAttrs (callPackages ../test { }); + # Tests should not appear in search results + tests = recurseIntoAttrsWith { search = false; } (callPackages ../test { }); defaultPkgConfigPackages = # We don't want nix-env -q to enter this, because all of these are aliases. @@ -6720,14 +6769,6 @@ with pkgs; inherit (callPackage ../development/libraries/libliftoff { }) libliftoff_0_4 libliftoff_0_5; libliftoff = libliftoff_0_5; - libqtdbusmock = libsForQt5.callPackage ../development/libraries/libqtdbusmock { - inherit (lomiri) cmake-extras; - }; - - libqtdbustest = libsForQt5.callPackage ../development/libraries/libqtdbustest { - inherit (lomiri) cmake-extras; - }; - libretranslate = with python3.pkgs; toPythonApplication libretranslate; librsb = callPackage ../development/libraries/librsb { @@ -7284,10 +7325,6 @@ with pkgs; qdjango = libsForQt5.callPackage ../development/libraries/qdjango { }; - qmenumodel = libsForQt5.callPackage ../development/libraries/qmenumodel { - inherit (lomiri) cmake-extras; - }; - quarto = callPackage ../development/libraries/quarto { }; quartoMinimal = callPackage ../development/libraries/quarto { @@ -7975,11 +8012,17 @@ with pkgs; rstudioServerWrapper = rstudioWrapper.override { rstudio = rstudio-server; }; - rPackages = dontRecurseIntoAttrs ( - callPackage ../development/r-modules { - overrides = (config.rPackageOverrides or (_: { })) pkgs; - } - ); + rPackages = + recurseIntoAttrsWith + { + hydra = false; + eval = false; + } + ( + callPackage ../development/r-modules { + overrides = (config.rPackageOverrides or (_: { })) pkgs; + } + ); ### SERVERS @@ -8701,7 +8744,12 @@ with pkgs; }; mdadm = mdadm4; - minimal-bootstrap = recurseIntoAttrs ( + + # minimal-bootstrap packages aren't used for anything but bootstrapping our + # stdenv. They should not be used for any other purpose and therefore not + # show up in search results or repository tracking services that consume our + # packages.json https://github.com/NixOS/nixpkgs/issues/244966 + minimal-bootstrap = recurseIntoAttrsWith { search = false; } ( import ../os-specific/linux/minimal-bootstrap { inherit (stdenv) buildPlatform hostPlatform; inherit lib config; @@ -9397,9 +9445,11 @@ with pkgs; pkgs' = pkgs; # default pkgs used for bootstrapping the emacs package set }; - # emacsPackages is exposed on search.nixos.org. - # Also see pkgs/top-level/packages-config.nix - emacsPackages = dontRecurseIntoAttrs emacs.pkgs; + # We want emacsPackages to be visible in search but not be build on hydra + emacsPackages = recurseIntoAttrsWith { + hydra = false; + eval = false; + } emacs.pkgs; espeak-classic = callPackage ../applications/audio/espeak { }; @@ -11445,6 +11495,7 @@ with pkgs; gnome-session-ctl = callPackage ../by-name/gn/gnome-session/ctl.nix { }; lomiri = recurseIntoAttrs (callPackage ../desktops/lomiri { }); + lomiri-qt6 = recurseIntoAttrs (callPackage ../desktops/lomiri { useQt6 = true; }); lumina = recurseIntoAttrs (callPackage ../desktops/lumina { }); diff --git a/pkgs/top-level/config.nix b/pkgs/top-level/config.nix index b7f55f143576..fc96145da851 100644 --- a/pkgs/top-level/config.nix +++ b/pkgs/top-level/config.nix @@ -393,6 +393,21 @@ let ''; }; + recursionMode = mkOption { + type = types.uniq ( + types.enum [ + "hydra" + "eval" + "search" + ] + ); + default = "eval"; + description = '' + In which way to recurse through Nixpkgs. In most cases you want keep this as the default. + You can use this to emulate how `hydra` and `search` are going through Nixpkgs. + ''; + }; + hashedMirrors = mkOption { type = types.listOf types.str; default = [ "https://tarballs.nixos.org" ]; diff --git a/pkgs/top-level/packages-config.nix b/pkgs/top-level/packages-config.nix index f35ec01ceb09..0137e02abfb0 100644 --- a/pkgs/top-level/packages-config.nix +++ b/pkgs/top-level/packages-config.nix @@ -3,29 +3,5 @@ # Ensures no aliases are in the results. allowAliases = false; allowVariants = false; - - # Enable recursion into attribute sets that nix-env normally doesn't look into - # so that we can get a more complete picture of the available packages for the - # purposes of the index. - packageOverrides = - super: - with super; - lib.mapAttrs (_: set: lib.recurseIntoAttrs set) { - inherit (super) - rPackages - ; - - # emacsPackages is an alias for emacs.pkgs - # Re-introduce emacsPackages here so that emacs.pkgs can be searched. - emacsPackages = emacs.pkgs; - - # minimal-bootstrap packages aren't used for anything but bootstrapping our - # stdenv. They should not be used for any other purpose and therefore not - # show up in search results or repository tracking services that consume our - # packages.json https://github.com/NixOS/nixpkgs/issues/244966 - minimal-bootstrap = { }; - - # This makes it so that tests are not appering on search.nixos.org - tests = { }; - }; + recursionMode = "search"; } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1e44a6a96f94..c7dab8f398c4 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -17241,6 +17241,8 @@ self: super: with self; { scanpy = callPackage ../development/python-modules/scanpy { }; + scantree = callPackage ../development/python-modules/scantree { }; + scapy = callPackage ../development/python-modules/scapy { inherit (pkgs) libpcap; # Avoid confusion with python package of the same name }; diff --git a/pkgs/top-level/qt5-packages.nix b/pkgs/top-level/qt5-packages.nix index 58c73a157878..0daf7f661e54 100644 --- a/pkgs/top-level/qt5-packages.nix +++ b/pkgs/top-level/qt5-packages.nix @@ -116,6 +116,14 @@ makeScopeWithSplicing' { libqofono = callPackage ../development/libraries/libqofono { }; + libqtdbusmock = callPackage ../development/libraries/libqtdbusmock { + inherit (pkgs.lomiri) cmake-extras; + }; + + libqtdbustest = callPackage ../development/libraries/libqtdbustest { + inherit (pkgs.lomiri) cmake-extras; + }; + libqtpas = callPackage ../development/compilers/fpc/libqtpas.nix { }; libqaccessibilityclient = callPackage ../development/libraries/libqaccessibilityclient { }; @@ -161,6 +169,10 @@ makeScopeWithSplicing' { qjson = callPackage ../development/libraries/qjson { }; + qmenumodel = callPackage ../development/libraries/qmenumodel { + inherit (pkgs.lomiri) cmake-extras; + }; + qmltermwidget = callPackage ../development/libraries/qmltermwidget { }; qoauth = callPackage ../development/libraries/qoauth { }; diff --git a/pkgs/top-level/qt6-packages.nix b/pkgs/top-level/qt6-packages.nix index 42d87e0f4d62..d424a7168b75 100644 --- a/pkgs/top-level/qt6-packages.nix +++ b/pkgs/top-level/qt6-packages.nix @@ -75,6 +75,14 @@ makeScopeWithSplicing' { libqtpas = callPackage ../development/compilers/fpc/libqtpas.nix { }; + libqtdbusmock = callPackage ../development/libraries/libqtdbusmock { + inherit (pkgs.lomiri-qt6) cmake-extras; + }; + + libqtdbustest = callPackage ../development/libraries/libqtdbustest { + inherit (pkgs.lomiri-qt6) cmake-extras; + }; + libquotient = callPackage ../development/libraries/libquotient { }; mlt = pkgs.mlt.override { qt = qt6; diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix index 7ac774c51115..089094edd990 100644 --- a/pkgs/top-level/release.nix +++ b/pkgs/top-level/release.nix @@ -40,6 +40,7 @@ allowAliases = false; allowUnfree = false; inHydra = true; + recursionMode = "hydra"; # Exceptional unsafe packages that we still build and distribute, # so users choosing to allow don't have to rebuild them every time. permittedInsecurePackages = [