diff --git a/README.md b/README.md index 76ecd7a0..c4b4b4fe 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # NixOS module for NVIDIA Jetson devices -This repository packages components from NVIDIA's [Jetpack SDK](https://developer.nvidia.com/embedded/jetpack) for use with NixOS, including: +This repository packages components from NVIDIA's [JetPack SDK](https://developer.nvidia.com/embedded/jetpack) for use with NixOS, including: * Platform firmware flashing scripts * A 5.10 Linux kernel from NVIDIA, which includes some open-source drivers like nvgpu * An [EDK2-based UEFI firmware](https://github.com/NVIDIA/edk2-nvidia) @@ -11,19 +11,22 @@ This repository packages components from NVIDIA's [Jetpack SDK](https://develope - Graphics: Wayland, GBM, EGL, Vulkan - Power/fan control: nvpmodel, nvfancontrol -This package is based on the Jetpack 5 release, and will only work with devices supported by Jetpack 5.1: - * Jetson Orin AGX - * Jetson Orin NX - * Jetson Xavier AGX - * Jetson Xavier NX +This package supports JetPack 5 and 6. It works with NVIDIA's developer kits supported by these versions only: -The Jetson Nano, TX2, and TX1 devices are _not_ supported, since support for them was dropped upstream in Jetpack 5. -In the future, when the Orin Nano is released, it should be possible to make it work as well. +| Device | JetPack 5 | JetPack 6 | +| ------------------ | --------- | --------- | +| Jetson Orin AGX | ✓ | ✓ | +| Jetson Orin NX | ✓ | ✓ | +| Jetson Orin Nano | ✓ | ✓ | +| Jetson Xavier AGX | ✓ | | +| Jetson Xavier NX | ✓ | | + +The Jetson Nano, TX2, and TX1 devices are _not_ supported, since support for them was dropped upstream in JetPack 5. ## Getting started ### Flashing UEFI firmware -This step may be optional if your device already has recent-enough firmware which includes UEFI. (Post-Jetpack 5. Only newly shipped Orin devices might have this) +This step may be optional if your device already has recent-enough firmware which includes UEFI. (Post-JetPack 5. Only newly shipped Orin devices might have this) If you are unsure, I'd recommend flashing the firmware anyway. Plug in your Jetson device, press the "power" button" and ensure the power light turns on. @@ -49,7 +52,7 @@ At this point, your device should have a working UEFI firmware accessible either Now, build and write the customized installer ISO to a USB drive: ```shell -$ nix build github:anduril/jetpack-nixos#iso_minimal +$ nix build github:anduril/jetpack-nixos#iso_minimal # iso_minimal_jp5 for Xavier (or otherwise wanting to use JetPack 5) $ sudo dd if=./result/iso/nixos-22.11pre-git-aarch64-linux.iso of=/dev/sdX bs=1M oflag=sync status=progress ``` (Replace `/dev/sdX` with the correct path for your USB drive) @@ -95,6 +98,20 @@ Concretely, that means that you cannot modify the EFI variables from Linux, so U You may need to enter the firmware menu and reorder it manually so NixOS will boot first. (See [this issue](https://forums.developer.nvidia.com/t/using-uefi-runtime-variables-on-xavier-agx/227970)) +### JetPack Versions +The major JetPack version may be changed by setting `hardware.nvidia-jetpack.majorVersion`. +It defaults to the latest version supported by the board (e.g. JetPack 6 for Orin and JetPack 5 for Xavier). +The "generic" som defaults to JetPack 6. + +Note that the JetPack firmware of a given version is incompatible with the kernel and rootfs of +the other. You cannot run the JetPack 5 firmware with the JetPack 6 kernel (and vice versa). Be +certain when upgrading that you are able to update both simulatenously. + +If not installing JetPack 6 firmware via flashing scripts, it is recommended to install the +JetPack 6 bootloader configuration (without live switch), then install the capsule update, +and finally reboot. The effect is that the device reboots, installs the JetPack 6 firmware +via a capsule update, and when finished, boots into a NixOS configuration for JetPack 6. + ### Graphical Output As of 2023-12-09, the status of graphical output on Jetsons is described below. If you have problems with configurations that are expected to work, try different ports (HDMI/DP/USB-C), different cables, and rebooting with the cables initially connected or disconnected. @@ -127,7 +144,7 @@ Set `hardware.nvidia-jetpack.modesetting.enable = true;` Weston and sway have been tested working on Orin devices, but do not work on Xavier devices. ### Updating firmware from device -Recent versions of Jetpack (>=5.1) support updating the device firmware from the device using the UEFI Capsule update mechanism. +Recent versions of JetPack (>=5.1) support updating the device firmware from the device using the UEFI Capsule update mechanism. This can be done as a more convenient alternative to physically attaching to the device and re-running the flash script. These updates can be performed automatically after a `nixos-rebuild switch` if the `hardware.nvidia-jetpack.bootloader.autoUpdate` setting is set to true. Otherwise, the instructions to apply the update manually are below. diff --git a/device-pkgs/flash-script.nix b/device-pkgs/flash-script.nix index 830f9a40..7a0fd56c 100644 --- a/device-pkgs/flash-script.nix +++ b/device-pkgs/flash-script.nix @@ -46,6 +46,9 @@ ${lib.optionalString (dtbsDir != null) "cp -r ${dtbsDir}/. kernel/dtb/"} ${lib.optionalString (uefi-firmware != null) '' cp ${uefi-firmware}/uefi_jetson.bin bootloader/uefi_jetson.bin + if [ -e "${uefi-firmware}/uefi_jetson_minimal.bin" ] ; then + cp ${uefi-firmware}/uefi_jetson_minimal.bin bootloader/uefi_jetson_minimal.bin + fi # For normal NixOS usage, we'd probably use systemd-boot or GRUB instead, # but lets replace the upstream L4TLauncher EFI payload anyway diff --git a/flake.nix b/flake.nix index 6544aedc..da102834 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,9 @@ buildPlatform = "x86_64-linux"; hostPlatform = "aarch64-linux"; }; - + }; + jetpack5_config = { + hardware.nvidia-jetpack.majorVersion = "5"; }; in { @@ -45,6 +47,12 @@ installer_minimal_cross = nixpkgs.lib.nixosSystem { modules = [ aarch64_cross_config installer_minimal_config ]; }; + installer_minimal_jp5 = nixpkgs.lib.nixosSystem { + modules = [ aarch64_config installer_minimal_config jetpack5_config ]; + }; + installer_minimal_cross_jp5 = nixpkgs.lib.nixosSystem { + modules = [ aarch64_cross_config installer_minimal_config jetpack5_config ]; + }; }; nixosModules.default = import ./modules/default.nix; @@ -56,7 +64,7 @@ let supportedConfigurations = lib.listToAttrs (map (c: { - name = "${c.som}" + (lib.optionalString (c.super or false) "-super") + "-${c.carrierBoard}"; + name = c.som + lib.optionalString (c.super or false) "-super" + "-${c.carrierBoard}" + lib.optionalString (c ? majorVersion) "-jp${c.majorVersion}"; value = c; }) [ { som = "orin-agx"; carrierBoard = "devkit"; } @@ -65,6 +73,12 @@ { som = "orin-nano"; carrierBoard = "devkit"; } { som = "orin-nx"; carrierBoard = "devkit"; super = true; } { som = "orin-nano"; carrierBoard = "devkit"; super = true; } + { som = "orin-agx"; carrierBoard = "devkit"; majorVersion = "5"; } + { som = "orin-agx-industrial"; carrierBoard = "devkit"; majorVersion = "5"; } + { som = "orin-nx"; carrierBoard = "devkit"; majorVersion = "5"; } + { som = "orin-nano"; carrierBoard = "devkit"; majorVersion = "5"; } + { som = "orin-nx"; carrierBoard = "devkit"; super = true; majorVersion = "5"; } + { som = "orin-nano"; carrierBoard = "devkit"; super = true; majorVersion = "5"; } { som = "xavier-agx"; carrierBoard = "devkit"; } { som = "xavier-agx-industrial"; carrierBoard = "devkit"; } # TODO: Entirely untested { som = "xavier-nx"; carrierBoard = "devkit"; } @@ -89,8 +103,8 @@ uefiCapsuleUpdates = lib.mapAttrs' (n: c: lib.nameValuePair "uefi-capsule-update-${n}" c.system.build.uefiCapsuleUpdate) supportedNixOSConfigurations; in { - # TODO: Untested iso_minimal = self.nixosConfigurations.installer_minimal_cross.config.system.build.isoImage; + iso_minimal_jp5 = self.nixosConfigurations.installer_minimal_cross_jp5.config.system.build.isoImage; inherit (self.legacyPackages.x86_64-linux) board-automation python-jetson; @@ -104,6 +118,7 @@ aarch64-linux = { iso_minimal = self.nixosConfigurations.installer_minimal.config.system.build.isoImage; + iso_minimal_jp5 = self.nixosConfigurations.installer_minimal_jp5.config.system.build.isoImage; }; }; @@ -140,7 +155,7 @@ ]; }); in - pkgs.nvidia-jetpack // { inherit (pkgs) nvidia-jetpack5; } + pkgs.nvidia-jetpack // { inherit (pkgs) nvidia-jetpack5 nvidia-jetpack6; } ); }; } diff --git a/mk-overlay.nix b/mk-overlay.nix index f81285e6..b254dff4 100644 --- a/mk-overlay.nix +++ b/mk-overlay.nix @@ -5,6 +5,7 @@ { jetpackMajorMinorPatchVersion , l4tMajorMinorPatchVersion , cudaMajorMinorPatchVersion +, cudaDriverMajorMinorVersion , bspHash }: final: _: @@ -27,6 +28,9 @@ let l4tMajorVersion = versions.major l4tMajorMinorPatchVersion; + l4tAtLeast = versionAtLeast l4tMajorMinorPatchVersion; + l4tOlder = versionOlder l4tMajorMinorPatchVersion; + sourceInfo = import ./sourceinfo { inherit l4tMajorMinorPatchVersion; inherit (final) lib fetchurl fetchgit; @@ -35,6 +39,7 @@ in makeScope final.newScope (self: { inherit (sourceInfo) debs gitRepos; inherit jetpackMajorMinorPatchVersion l4tMajorMinorPatchVersion cudaMajorMinorVersion; + inherit l4tAtLeast l4tOlder; callPackages = callPackagesWith (final // self); @@ -85,7 +90,7 @@ makeScope final.newScope (self: { # Nvidia's recommended toolchain is gcc9: # https://nv-tegra.nvidia.com/r/gitweb?p=tegra/optee-src/nv-optee.git;a=blob;f=optee/atf_and_optee_README.txt;h=591edda3d4ec96997e054ebd21fc8326983d3464;hb=5ac2ab218ba9116f1df4a0bb5092b1f6d810e8f7#l33 stdenv = final.gcc9Stdenv; - inherit (self) bspSrc gitRepos l4tMajorMinorPatchVersion uefi-firmware; + inherit (self) bspSrc gitRepos l4tMajorMinorPatchVersion l4tAtLeast uefi-firmware; }) buildTOS buildOpteeTaDevKit opteeClient; genEkb = self.callPackage ./pkgs/optee/gen-ekb.nix { }; @@ -130,11 +135,15 @@ makeScope final.newScope (self: { inherit (finalSamples) callPackage; }); - tests = final.callPackages ./pkgs/tests { inherit l4tMajorMinorPatchVersion; }; + tests = final.callPackages ./pkgs/tests { inherit l4tMajorMinorPatchVersion l4tAtLeast; }; - kernelPackagesOverlay = final: _: { - nvidia-display-driver = final.callPackage ./pkgs/kernels/r${l4tMajorVersion}/display-driver.nix { inherit (self) gitRepos l4tMajorMinorPatchVersion; }; - }; + kernelPackagesOverlay = final: _: + if self.l4tAtLeast "36" then { + devicetree = self.callPackage ./pkgs/kernels/r${l4tMajorVersion}/devicetree.nix { }; + nvidia-oot-modules = final.callPackage ./pkgs/kernels/r${l4tMajorVersion}/oot-modules.nix { inherit (self) bspSrc gitRepos l4tMajorMinorPatchVersion; }; + } else { + nvidia-display-driver = final.callPackage ./pkgs/kernels/r${l4tMajorVersion}/display-driver.nix { inherit (self) gitRepos l4tMajorMinorPatchVersion; }; + }; kernel = self.callPackage ./pkgs/kernels/r${l4tMajorVersion} { kernelPatches = [ ]; }; kernelPackages = (final.linuxPackagesFor self.kernel).extend self.kernelPackagesOverlay; @@ -171,5 +180,6 @@ makeScope final.newScope (self: { # attribute set, we cannot use self.callPackages because we would end up with infinite recursion. # Instead, we must either use final.callPackages or packagesFromDirectoryRecursive. // final.callPackages ./pkgs/l4t { - inherit (self) debs l4tMajorMinorPatchVersion; + inherit (self) debs; + inherit l4tMajorMinorPatchVersion cudaDriverMajorMinorVersion l4tAtLeast l4tOlder; }) diff --git a/modules/default.nix b/modules/default.nix index 02cf128f..1574c5b5 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -15,7 +15,7 @@ let cfg = config.hardware.nvidia-jetpack; - jetpackVersions = [ "5" ]; + jetpackVersions = [ "5" "6" ]; teeApplications = pkgs.symlinkJoin { name = "tee-applications"; @@ -29,6 +29,14 @@ let nvidiaDockerActive = with config.virtualisation; docker.enable && docker.enableNvidia; nvidiaPodmanActive = with config.virtualisation; podman.enable && podman.enableNvidia; + + checkValidSoms = soms: cfg.som == "generic" || lib.lists.any (s: lib.hasPrefix s cfg.som) soms; + validSomsAssertion = majorVersion: soms: { + assertion = cfg.majorVersion == majorVersion -> checkValidSoms soms; + message = "Jetpack ${majorVersion} only supports som families: ${lib.strings.concatStringsSep " " soms} (or generic). Configured som: ${cfg.som}."; + }; + + jetpackAtLeast = lib.versionAtLeast cfg.majorVersion; in { imports = [ @@ -45,7 +53,7 @@ in enable = mkEnableOption "NVIDIA Jetson device support"; majorVersion = mkOption { - default = "5"; + default = if cfg.som == "generic" || lib.hasPrefix "orin" cfg.som then "6" else "5"; type = types.enum jetpackVersions; description = "Jetpack major version to use"; }; @@ -158,268 +166,305 @@ in type = types.bool; description = "Enable boot.kernelParams default console configuration"; }; + + container-toolkit.enable = mkOption { + default = nvidiaDockerActive || nvidiaPodmanActive; + defaultText = "false"; + type = types.bool; + description = "Enable dynamic CDI configuration for Jetson devices."; + }; }; }; - config = mkIf cfg.enable { - assertions = [ - { - # NixOS provides two main ways to feed a package set into a config: - # 1. The options nixpkgs.hostPlatform/nixpkgs.buildPlatform, which are - # used to construct an import of nixpkgs. - # 2. The option nixpkgs.pkgs (set by default if you use the pkgs.nixos - # function), which is a pre-configured import of nixpkgs. + config = mkIf cfg.enable (lib.mkMerge [ + { + assertions = [ + { + # NixOS provides two main ways to feed a package set into a config: + # 1. The options nixpkgs.hostPlatform/nixpkgs.buildPlatform, which are + # used to construct an import of nixpkgs. + # 2. The option nixpkgs.pkgs (set by default if you use the pkgs.nixos + # function), which is a pre-configured import of nixpkgs. + # + # Regardless of how the package set is setup, it _must_ have its + # hostPlatform compatible with aarch64 in order to run on the Jetson + # platform. + assertion = pkgs.stdenv.hostPlatform.isAarch64; + message = '' + NixOS config has an invalid package set for the Jetson platform. Try + setting nixpkgs.hostPlatform to "aarch64-linux" or otherwise using an + aarch64-linux compatible package set. + ''; + } + { + assertion = (config.virtualisation.docker.enable && cfg.container-toolkit.enable) -> lib.versionAtLeast config.virtualisation.docker.package.version "25"; + message = "Docker version < 25 does not support CDI"; + } + { + assertion = !config.hardware.nvidia-container-toolkit.enable; + message = "hardware.nvidia-container-toolkit.enable does not work with jetson devices (yet), use hardware.nvidia-jetpack.container-toolkit.enable instead"; + } + (validSomsAssertion "5" [ "xavier" "orin" ]) + (validSomsAssertion "6" [ "orin" ]) + ]; + + warnings = (lib.optionals nvidiaDockerActive [ + "You have set virtualisation.docker.enableNvidia. This option is deprecated, please set hardware.nvidia-jetpack.container-toolkit.enable instead." + ]) ++ (lib.optionals nvidiaPodmanActive [ + "You have set virtualisation.podman.enableNvidia. This option is deprecated, please set hardware.nvidia-jetpack.container-toolkit.enable instead." + ]); + + # Use mkOptionDefault so that we prevent conflicting with the priority that + # `nixos-generate-config` uses. + nixpkgs.hostPlatform = lib.mkOptionDefault "aarch64-linux"; + + # Use mkBefore to ensure that our overlays get merged prior to any + # downstream jetpack-nixos users. This should prevent a situation where a + # user's overlay is merged before ours and that overlay depends on + # something defined in our overlay. + nixpkgs.overlays = lib.mkBefore [ + (import ../overlay.nix) + ( + let + otherJetpacks = builtins.filter (v: v != cfg.majorVersion) jetpackVersions; + mkWarnValue = v: lib.warn "nvidia-jetpack${v} is unsupported when nixos is configured to use Jetpack ${cfg.majorVersion}" { }; + in + final: prev: + # set default nvidia-jetpack to our jetpack version + { nvidia-jetpack = final."nvidia-jetpack${cfg.majorVersion}"; } + # and warn/fail if anyone tries to evaluate something else + // builtins.listToAttrs (builtins.map + (v: { name = "nvidia-jetpack${v}"; value = mkWarnValue v; }) + otherJetpacks) + ) + (import ../overlay-with-config.nix config) + ]; + + # Advertise support for CUDA. + nixpkgs.config = mkIf cfg.configureCuda { + cudaSupport = lib.mkDefault true; + cudaCapabilities = + let + isGeneric = cfg.som == "generic"; + isXavier = lib.hasPrefix "xavier-" cfg.som; + isOrin = lib.hasPrefix "orin-" cfg.som; + in + lib.mkDefault + (lib.optionals (isXavier || isGeneric) [ "7.2" ] + ++ lib.optionals (isOrin || isGeneric) [ "8.7" ]); + }; + + boot.kernelPackages = + if cfg.kernel.realtime then + pkgs.nvidia-jetpack.rtkernelPackages + else + pkgs.nvidia-jetpack.kernelPackages; + + boot.kernelParams = [ + # Needed on Orin at least, but upstream has it for both + "nvidia.rm_firmware_active=all" + ] + ++ lib.optionals cfg.console.enable [ + "console=tty0" # Output to HDMI/DP. May need fbcon=map:0 as well + "console=ttyTCU0,115200" # Provides console on "Tegra Combined UART" (TCU) + ] + ++ lib.optional (lib.hasPrefix "xavier-" cfg.som || cfg.som == "generic") "video=efifb:off"; # Disable efifb driver, which crashes Xavier NX and possibly AGX + + boot.initrd.includeDefaultModules = false; # Avoid a bunch of modules we may not get from tegra_defconfig + boot.initrd.availableKernelModules = [ "xhci-tegra" "ucsi_ccg" "typec_ucsi" "typec" ] # Make sure USB firmware makes it into initrd + ++ lib.optionals (pkgs.nvidia-jetpack.l4tAtLeast "36") [ + "nvme" + "tegra_mce" + "phy-tegra-xusb" + "i2c-tegra" + "fusb301" + # PCIe for nvme, ethernet, etc. + "phy_tegra194_p2u" + "pcie_tegra194" + # Ethernet for AGX + "nvpps" + "nvethernet" + ]; + + boot.kernelModules = + [ "nvgpu" ] + ++ lib.optionals cfg.modesetting.enable [ + "tegra-udrm" # For Xavier` + "nvidia-drm" # For Orin + ]; + + boot.extraModprobeConfig = lib.optionalString cfg.modesetting.enable '' + options tegra-udrm modeset=1 + options nvidia-drm modeset=1 + ''; + + boot.extraModulePackages = + # For Orin. Unsupported with PREEMPT_RT. + lib.optionals (cfg.majorVersion == "5" && !cfg.kernel.realtime) + [ config.boot.kernelPackages.nvidia-display-driver ] + ++ + lib.optionals (jetpackAtLeast "6") [ + (pkgs.nvidia-jetpack.kernelPackages.nvidia-oot-modules.overrideAttrs { + inherit (config.boot.kernelPackages) kernel; + }) + ]; + + hardware.firmware = with pkgs.nvidia-jetpack; [ + l4t-firmware + l4t-xusb-firmware # usb firmware also present in linux-firmware package, but that package is huge and has much more than needed + cudaPackages.vpi-firmware # Optional, but needed for pva_auth_allowlist firmware file used by VPI2 + ]; + + hardware.deviceTree.enable = true; + + hardware.graphics.package = pkgs.nvidia-jetpack.l4t-3d-core; + hardware.graphics.extraPackages = + with pkgs.nvidia-jetpack; + # l4t-core provides - among others - libnvrm_gpu.so and libnvrm_mem.so. + # The l4t-core/lib directory is directly set in the DT_RUNPATH of + # l4t-cuda's libcuda.so, thus the standard driver doesn't need them to be + # added in ${driverLink}. # - # Regardless of how the package set is setup, it _must_ have its - # hostPlatform compatible with aarch64 in order to run on the Jetson - # platform. - assertion = pkgs.stdenv.hostPlatform.isAarch64; - message = '' - NixOS config has an invalid package set for the Jetson platform. Try - setting nixpkgs.hostPlatform to "aarch64-linux" or otherwise using an - aarch64-linux compatible package set. - ''; - } - { - assertion = nvidiaDockerActive -> lib.versionAtLeast config.virtualisation.docker.package.version "25"; - message = "Docker version < 25 does not support CDI"; - } - { - assertion = (nvidiaDockerActive || nvidiaPodmanActive) -> (!config.hardware.nvidia-container-toolkit.enable); - message = "hardware.nvidia-container-toolkit.enable does not work with jetson devices (yet), use virtualisation.{docker,podman}.enableNvidia instead"; - } - ]; - - # Use mkOptionDefault so that we prevent conflicting with the priority that - # `nixos-generate-config` uses. - nixpkgs.hostPlatform = lib.mkOptionDefault "aarch64-linux"; - - # Use mkBefore to ensure that our overlays get merged prior to any - # downstream jetpack-nixos users. This should prevent a situation where a - # user's overlay is merged before ours and that overlay depends on - # something defined in our overlay. - nixpkgs.overlays = lib.mkBefore [ - (import ../overlay.nix) - ( - let - otherJetpacks = builtins.filter (v: v != cfg.majorVersion) jetpackVersions; - mkWarnValue = v: lib.warn "nvidia-jetpack${v} is unsupported when nixos is configured to use Jetpack ${cfg.majorVersion}" { }; - in - final: prev: - # set default nvidia-jetpack to our jetpack version - { nvidia-jetpack = final."nvidia-jetpack${cfg.majorVersion}"; } - # and warn/fail if anyone tries to evaluate something else - // builtins.listToAttrs (builtins.map - (v: { name = "nvidia-jetpack${v}"; value = mkWarnValue v; }) - otherJetpacks) - ) - (import ../overlay-with-config.nix config) - ]; - - # Advertise support for CUDA. - nixpkgs.config = mkIf cfg.configureCuda { - cudaSupport = lib.mkDefault true; - cudaCapabilities = + # However, this isn't the case for cuda_compat's driver currently, which + # is why we're including this derivation in extraPackages. + # + # To avoid exposing a bunch of other unrelated libraries from l4t-core, + # we're wrapping l4t-core in a derivation that only exposes the two + # required libraries. + # + # Those libraries should ideally be directly accessible from the + # DT_RUNPATH of cuda_compat's libcuda.so in the same way, but this + # requires more integration between upstream Nixpkgs and jetpack-nixos. + # When that happens, please remove l4tCoreWrapper below. let - isGeneric = cfg.som == "generic"; - isXavier = lib.hasPrefix "xavier-" cfg.som; - isOrin = lib.hasPrefix "orin-" cfg.som; + l4tCoreWrapper = pkgs.stdenv.mkDerivation { + name = "l4t-core-wrapper"; + phases = [ "installPhase" ]; + installPhase = '' + runHook preInstall + + mkdir -p $out/lib + ln -s ${l4t-core}/lib/libnvrm_gpu.so $out/lib/libnvrm_gpu.so + ln -s ${l4t-core}/lib/libnvrm_mem.so $out/lib/libnvrm_mem.so + + runHook postInstall + ''; + }; in - lib.mkDefault - (lib.optionals (isXavier || isGeneric) [ "7.2" ] - ++ lib.optionals (isOrin || isGeneric) [ "8.7" ]); - }; + [ + l4tCoreWrapper + l4t-cuda + l4t-nvsci # cuda may use nvsci + l4t-gbm + l4t-wayland + ]; - boot.kernelPackages = - if cfg.kernel.realtime then - pkgs.nvidia-jetpack.rtkernelPackages - else - pkgs.nvidia-jetpack.kernelPackages; - - boot.kernelParams = [ - # Needed on Orin at least, but upstream has it for both - "nvidia.rm_firmware_active=all" - ] - ++ lib.optionals cfg.console.enable [ - "console=tty0" # Output to HDMI/DP. May need fbcon=map:0 as well - "console=ttyTCU0,115200" # Provides console on "Tegra Combined UART" (TCU) - ] - ++ lib.optional (lib.hasPrefix "xavier-" cfg.som || cfg.som == "generic") "video=efifb:off"; # Disable efifb driver, which crashes Xavier NX and possibly AGX - - boot.initrd.includeDefaultModules = false; # Avoid a bunch of modules we may not get from tegra_defconfig - boot.initrd.availableKernelModules = [ "xhci-tegra" "ucsi_ccg" "typec_ucsi" "typec" ]; # Make sure USB firmware makes it into initrd - - boot.kernelModules = - [ "nvgpu" ] - ++ lib.optionals cfg.modesetting.enable [ - "tegra-udrm" # For Xavier` - "nvidia-drm" # For Orin + services.udev.packages = [ + (pkgs.runCommand "jetson-udev-rules" { } '' + install -D -t $out/etc/udev/rules.d ${pkgs.nvidia-jetpack.l4t-init}/etc/udev/rules.d/99-tegra-devices.rules + sed -i \ + -e '/camera_device_detect/d' \ + -e 's#/bin/mknod#${pkgs.coreutils}/bin/mknod#' \ + $out/etc/udev/rules.d/99-tegra-devices.rules + '') ]; - boot.extraModprobeConfig = lib.optionalString cfg.modesetting.enable '' - options tegra-udrm modeset=1 - options nvidia-drm modeset=1 - ''; - - # For Orin. Unsupported with PREEMPT_RT. - boot.extraModulePackages = lib.optional - ( - !cfg.kernel.realtime - ) - config.boot.kernelPackages.nvidia-display-driver; - - hardware.firmware = with pkgs.nvidia-jetpack; [ - l4t-firmware - l4t-xusb-firmware # usb firmware also present in linux-firmware package, but that package is huge and has much more than needed - cudaPackages.vpi2-firmware # Optional, but needed for pva_auth_allowlist firmware file used by VPI2 - ]; - - hardware.deviceTree.enable = true; - - hardware.graphics.package = pkgs.nvidia-jetpack.l4t-3d-core; - hardware.graphics.extraPackages = - with pkgs.nvidia-jetpack; - # l4t-core provides - among others - libnvrm_gpu.so and libnvrm_mem.so. - # The l4t-core/lib directory is directly set in the DT_RUNPATH of - # l4t-cuda's libcuda.so, thus the standard driver doesn't need them to be - # added in ${driverLink}. - # - # However, this isn't the case for cuda_compat's driver currently, which - # is why we're including this derivation in extraPackages. - # - # To avoid exposing a bunch of other unrelated libraries from l4t-core, - # we're wrapping l4t-core in a derivation that only exposes the two - # required libraries. - # - # Those libraries should ideally be directly accessible from the - # DT_RUNPATH of cuda_compat's libcuda.so in the same way, but this - # requires more integration between upstream Nixpkgs and jetpack-nixos. - # When that happens, please remove l4tCoreWrapper below. - let - l4tCoreWrapper = pkgs.stdenv.mkDerivation { - name = "l4t-core-wrapper"; - phases = [ "installPhase" ]; - installPhase = '' - runHook preInstall - - mkdir -p $out/lib - ln -s ${l4t-core}/lib/libnvrm_gpu.so $out/lib/libnvrm_gpu.so - ln -s ${l4t-core}/lib/libnvrm_mem.so $out/lib/libnvrm_mem.so - - runHook postInstall + # Force the driver, since otherwise the fbdev or modesetting X11 drivers + # may be used, which don't work and can interfere with the correct + # selection of GLX drivers. + services.xserver.drivers = lib.mkForce ( + lib.singleton { + name = "nvidia"; + modules = [ pkgs.nvidia-jetpack.l4t-3d-core ]; + display = true; + screenSection = '' + Option "AllowEmptyInitialConfiguration" "true" + ''; + } + ); + + # If we aren't using modesetting, we won't have a DRM device with the + # "master-of-seat" tag, so "loginctl show-seat seat0" reports + # "CanGraphical=false" and consequently lightdm doesn't start. We override + # that here. + services.xserver.displayManager.lightdm.extraConfig = + lib.optionalString (!cfg.modesetting.enable) + '' + logind-check-graphical = false ''; - }; - in - [ - l4tCoreWrapper - l4t-cuda - l4t-nvsci # cuda may use nvsci - l4t-gbm - l4t-wayland - ]; - - services.udev.packages = [ - (pkgs.runCommand "jetson-udev-rules" { } '' - install -D -t $out/etc/udev/rules.d ${pkgs.nvidia-jetpack.l4t-init}/etc/udev/rules.d/99-tegra-devices.rules - sed -i \ - -e '/camera_device_detect/d' \ - -e 's#/bin/mknod#${pkgs.coreutils}/bin/mknod#' \ - $out/etc/udev/rules.d/99-tegra-devices.rules - '') - ]; - - # Force the driver, since otherwise the fbdev or modesetting X11 drivers - # may be used, which don't work and can interfere with the correct - # selection of GLX drivers. - services.xserver.drivers = lib.mkForce ( - lib.singleton { - name = "nvidia"; - modules = [ pkgs.nvidia-jetpack.l4t-3d-core ]; - display = true; - screenSection = '' - Option "AllowEmptyInitialConfiguration" "true" - ''; - } - ); - - # If we aren't using modesetting, we won't have a DRM device with the - # "master-of-seat" tag, so "loginctl show-seat seat0" reports - # "CanGraphical=false" and consequently lightdm doesn't start. We override - # that here. - services.xserver.displayManager.lightdm.extraConfig = - lib.optionalString (!cfg.modesetting.enable) - '' - logind-check-graphical = false - ''; - - # Used by libjetsonpower.so, which is used by nvfancontrol at least. - environment.etc."nvpower/libjetsonpower".source = "${pkgs.nvidia-jetpack.l4t-tools}/etc/nvpower/libjetsonpower"; - # Include nv_tegra_release, just so we can tell what version our NixOS machine was built from. - environment.etc."nv_tegra_release".source = "${pkgs.nvidia-jetpack.l4t-core}/etc/nv_tegra_release"; + # Used by libjetsonpower.so, which is used by nvfancontrol at least. + environment.etc."nvpower/libjetsonpower".source = "${pkgs.nvidia-jetpack.l4t-tools}/etc/nvpower/libjetsonpower"; - # https://developer.ridgerun.com/wiki/index.php/Xavier/JetPack_5.0.2/Performance_Tuning - systemd.services.jetson_clocks = mkIf cfg.maxClock { - enable = true; - description = "Set maximum clock speed"; - serviceConfig = { - Type = "oneshot"; - ExecStart = "${pkgs.nvidia-jetpack.l4t-tools}/bin/jetson_clocks"; - }; - after = [ "nvpmodel.service" ]; - wantedBy = [ "multi-user.target" ]; - }; + # Include nv_tegra_release, just so we can tell what version our NixOS machine was built from. + environment.etc."nv_tegra_release".source = "${pkgs.nvidia-jetpack.l4t-core}/etc/nv_tegra_release"; - systemd.services.tee-supplicant = - let - args = lib.escapeShellArgs ( - [ - "--ta-path=${teeApplications}" - "--plugin-path=${supplicantPlugins}" - ] - ++ cfg.firmware.optee.supplicant.extraArgs - ); - in - lib.mkIf cfg.firmware.optee.supplicant.enable { - description = "Userspace supplicant for OPTEE-OS"; + # https://developer.ridgerun.com/wiki/index.php/Xavier/JetPack_5.0.2/Performance_Tuning + systemd.services.jetson_clocks = mkIf cfg.maxClock { + enable = true; + description = "Set maximum clock speed"; serviceConfig = { - ExecStart = "${pkgs.nvidia-jetpack.opteeClient}/bin/tee-supplicant ${args}"; - Restart = "always"; + Type = "oneshot"; + ExecStart = "${pkgs.nvidia-jetpack.l4t-tools}/bin/jetson_clocks"; }; + after = [ "nvpmodel.service" ]; wantedBy = [ "multi-user.target" ]; }; - environment.systemPackages = with pkgs.nvidia-jetpack; [ - l4t-tools - otaUtils # Tools for UEFI capsule updates - ]; - - systemd.services.nvidia-cdi-generate = { - enable = nvidiaDockerActive || nvidiaPodmanActive; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; - RuntimeDirectory = "cdi"; - }; - wantedBy = [ "multi-user.target" ]; - script = + systemd.services.tee-supplicant = let - exe = lib.getExe pkgs.nvidia-jetpack.nvidia-ctk; + args = lib.escapeShellArgs ( + [ + "--ta-path=${teeApplications}" + "--plugin-path=${supplicantPlugins}" + ] + ++ cfg.firmware.optee.supplicant.extraArgs + ); in - '' - ${exe} cdi generate \ - --nvidia-ctk-path=${exe} \ - --driver-root=${pkgs.nvidia-jetpack.containerDeps} \ - --ldconfig-path ${lib.getExe' pkgs.glibc "ldconfig"} \ - --dev-root=/ \ - --mode=csv \ - --csv.file=${pkgs.nvidia-jetpack.l4tCsv} \ - --output="$RUNTIME_DIRECTORY/jetpack-nixos" - ''; - }; + lib.mkIf cfg.firmware.optee.supplicant.enable { + description = "Userspace supplicant for OPTEE-OS"; + serviceConfig = { + ExecStart = "${pkgs.nvidia-jetpack.opteeClient}/bin/tee-supplicant ${args}"; + Restart = "always"; + }; + wantedBy = [ "multi-user.target" ]; + }; - # Used by libEGL_nvidia.so.0 - environment.etc."egl/egl_external_platform.d".source = - "${pkgs.addDriverRunpath.driverLink}/share/egl/egl_external_platform.d/"; - }; + environment.systemPackages = with pkgs.nvidia-jetpack; [ + l4t-tools + otaUtils # Tools for UEFI capsule updates + ]; + + systemd.services.nvidia-cdi-generate = lib.mkIf cfg.container-toolkit.enable { + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + RuntimeDirectory = "cdi"; + }; + wantedBy = [ "multi-user.target" ]; + script = + let + exe = lib.getExe pkgs.nvidia-jetpack.nvidia-ctk; + in + '' + ${exe} cdi generate \ + --nvidia-ctk-path=${exe} \ + --driver-root=${pkgs.nvidia-jetpack.containerDeps} \ + --ldconfig-path ${lib.getExe' pkgs.glibc "ldconfig"} \ + --dev-root=/ \ + --mode=csv \ + $(for f in ${pkgs.nvidia-jetpack.l4tCsv}/*; do echo "--csv.file=$f"; done) \ + --output="$RUNTIME_DIRECTORY/jetpack-nixos" + ''; + }; + + # Used by libEGL_nvidia.so.0 + environment.etc."egl/egl_external_platform.d".source = + "${pkgs.addDriverRunpath.driverLink}/share/egl/egl_external_platform.d/"; + } + (lib.mkIf (jetpackAtLeast "6") + { + hardware.deviceTree.dtbSource = pkgs.nvidia-jetpack.kernelPackages.devicetree; + }) + ]); } diff --git a/modules/devices.nix b/modules/devices.nix index 7610f4bd..bfa9dcb8 100644 --- a/modules/devices.nix +++ b/modules/devices.nix @@ -48,6 +48,8 @@ let '' ) paths))); + + partitionTemplateDirectory = if cfg.majorVersion == "5" then "t186ref" else "generic"; in { config = lib.mkIf cfg.enable (lib.mkMerge [{ @@ -100,14 +102,14 @@ in targetBoard = mkDefault "jetson-agx-orin-devkit"; # We don't flash the sdmmc with kernel/initrd/etc at all. Just let it be a # regular NixOS machine instead of having some weird partition structure. - partitionTemplate = mkDefault "${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_t234_qspi.xml"; + partitionTemplate = mkDefault "${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_t234_qspi.xml"; }) (mkIf (cfg.som == "orin-agx-industrial") { targetBoard = mkDefault "jetson-agx-orin-devkit-industrial"; # Remove the sdmmc part of this flash.xmo file. The industrial spi part is still different partitionTemplate = mkDefault (pkgs.runCommand "flash.xml" { nativeBuildInputs = [ pkgs.buildPackages.xmlstarlet ]; } '' - xmlstarlet ed -d '//device[@type="sdmmc_user"]' ${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_t234_qspi_sdmmc_industrial.xml >$out + xmlstarlet ed -d '//device[@type="sdmmc_user"]' ${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_t234_qspi_sdmmc_industrial.xml >$out ''); }) @@ -115,7 +117,7 @@ in targetBoard = mkDefault "jetson-orin-nano-devkit${lib.optionalString cfg.super "-super"}"; # Use this instead if you want to use the original Xavier NX Devkit module (p3509-a02) #targetBoard = mkDefault "p3509-a02+p3767-0000"; - partitionTemplate = mkDefault "${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_t234_qspi.xml"; + partitionTemplate = mkDefault "${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_t234_qspi.xml"; }) (mkIf (cfg.som == "xavier-agx") { @@ -123,29 +125,29 @@ in # Remove unnecessary partitions to make it more like # flash_t194_uefi_sdmmc_min.xml, except also keep the A/B slots of # each partition - partitionTemplate = mkDefault (filterPartitions xavierAgxPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_t194_sdmmc.xml"); + partitionTemplate = mkDefault (filterPartitions xavierAgxPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_t194_sdmmc.xml"); }) (mkIf (cfg.som == "xavier-agx-industrial") { targetBoard = mkDefault "jetson-agx-xavier-industrial"; # Remove the sdmmc part of this flash.xml file. The industrial spi part is still different partitionTemplate = mkDefault (pkgs.runCommand "flash.xml" { nativeBuildInputs = [ pkgs.buildPackages.xmlstarlet ]; } '' - xmlstarlet ed -d '//device[@type="sdmmc_user"]' ${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_l4t_t194_spi_emmc_jaxi.xml >$out + xmlstarlet ed -d '//device[@type="sdmmc_user"]' ${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_l4t_t194_spi_emmc_jaxi.xml >$out ''); }) (mkIf (cfg.som == "xavier-nx") { targetBoard = mkDefault "jetson-xavier-nx-devkit"; - partitionTemplate = mkDefault (filterPartitions defaultPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_l4t_t194_spi_sd_p3668.xml"); + partitionTemplate = mkDefault (filterPartitions defaultPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_l4t_t194_spi_sd_p3668.xml"); }) (mkIf (cfg.som == "xavier-nx-emmc") { targetBoard = mkDefault "jetson-xavier-nx-devkit-emmc"; - partitionTemplate = mkDefault (filterPartitions defaultPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/t186ref/cfg/flash_l4t_t194_spi_emmc_p3668.xml"); + partitionTemplate = mkDefault (filterPartitions defaultPartitionsToRemove "${pkgs.nvidia-jetpack.bspSrc}/bootloader/${partitionTemplateDirectory}/cfg/flash_l4t_t194_spi_emmc_p3668.xml"); }) ]; - boot.kernelPatches = lib.mkIf (cfg.som == "orin-nx") [ + boot.kernelPatches = lib.mkIf (cfg.som == "orin-nx" && lib.versions.majorMinor config.system.build.kernel.version == "5.10") [ { name = "disable-usb-otg"; patch = null; diff --git a/overlay-with-config.nix b/overlay-with-config.nix index 7075b0b1..9afb5e51 100644 --- a/overlay-with-config.nix +++ b/overlay-with-config.nix @@ -78,7 +78,7 @@ final: prev: ( flashInitrd = let - modules = [ "qspi_mtd" "spi_tegra210_qspi" "at24" "spi_nor" ]; + modules = if lib.versions.majorMinor config.system.build.kernel.version == "5.10" then [ "qspi_mtd" "spi_tegra210_qspi" "at24" "spi_nor" ] else [ "mtdblock" "spi_tegra210_quad" ]; modulesClosure = prev.makeModulesClosure { rootModules = modules; kernel = config.system.modulesTree; @@ -152,8 +152,23 @@ final: prev: ( ${cfg.firmware.secureBoot.preSignCommands final.buildPackages} '' + lib.concatMapStringsSep "\n" (v: with v; - "BOARDID=${boardid} BOARDSKU=${boardsku} FAB=${fab} BOARDREV=${boardrev} FUSELEVEL=${fuselevel} CHIPREV=${chiprev} ${lib.optionalString (chipsku != null) "CHIP_SKU=${chipsku}"} ${lib.optionalString (ramcode != null) "RAMCODE=${ramcode}"} ./flash.sh ${lib.optionalString (cfg.flashScriptOverrides.partitionTemplate != null) "-c flash.xml"} --no-flash --bup --multi-spec ${builtins.toString cfg.flashScriptOverrides.flashArgs}" - ) + (lib.concatStringsSep " " [ + "BOARDID=${boardid}" + "BOARDSKU=${boardsku}" + "FAB=${fab}" + "BOARDREV=${boardrev}" + "FUSELEVEL=${fuselevel}" + "CHIPREV=${chiprev}" + (lib.optionalString (chipsku != null) "CHIP_SKU=${chipsku}") + (lib.optionalString (ramcode != null) "RAMCODE=${ramcode}") + "./flash.sh" + (lib.optionalString (cfg.flashScriptOverrides.partitionTemplate != null) "-c flash.xml") + "--no-flash" + (lib.optionalString (cfg.majorVersion == "6") "--sign") + "--bup" + "--multi-spec" + (builtins.toString cfg.flashScriptOverrides.flashArgs) + ])) cfg.firmware.variants; }) + '' mkdir -p $out diff --git a/overlay.nix b/overlay.nix index 422be80f..6b260221 100644 --- a/overlay.nix +++ b/overlay.nix @@ -7,10 +7,30 @@ final: prev: l4tMajorMinorPatchVersion = "35.6.1"; cudaMajorMinorPatchVersion = "11.4.298"; + # used to version libnvidia-ptxjitcompiler.so. L4T r35 uses l4tMajorMinorPatchVersion, so set to null + # and we'll use l4tMajorMinorPatchVersion instead + cudaDriverMajorMinorVersion = null; + bspHash = "sha256-nqKEd3R7MJXuec3Q4odDJ9SNTUD1FyluWg/SeeptbUE="; } final prev; + nvidia-jetpack6 = import ./mk-overlay.nix + { + # Below 3 are from release notes + jetpackMajorMinorPatchVersion = "6.2"; + l4tMajorMinorPatchVersion = "36.4.3"; + cudaMajorMinorPatchVersion = "12.6.10"; + + # nix build .#legacyPacakges.l4t-cuda.src; unpack the deb; find libnvidia-ptxjijtcompiler.so + # and use that. + cudaDriverMajorMinorVersion = "540.4.0"; + + bspHash = "sha256-lJpEBJxM5qjv31cuoIIMh09u5dQco+STW58OONEYc9I="; + } + final + prev; + nvidia-jetpack = final.nvidia-jetpack5; } diff --git a/pkgs/containers/l4t-csv.nix b/pkgs/containers/l4t-csv.nix index db1bbbdd..7f50c1df 100644 --- a/pkgs/containers/l4t-csv.nix +++ b/pkgs/containers/l4t-csv.nix @@ -1,5 +1,5 @@ { bspSrc, runCommand }: runCommand "l4t.csv" { } '' tar -xf "${bspSrc}/nv_tegra/config.tbz2" - install etc/nvidia-container-runtime/host-files-for-container.d/l4t.csv $out + install -Dt $out etc/nvidia-container-runtime/host-files-for-container.d/*.csv '' diff --git a/pkgs/containers/r36.4-l4t.json b/pkgs/containers/r36.4-l4t.json new file mode 100644 index 00000000..7d4dc496 --- /dev/null +++ b/pkgs/containers/r36.4-l4t.json @@ -0,0 +1,336 @@ +{ + "nvidia-l4t-3d-core": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libGLX_nvidia.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-eglcore.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glcore.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glsi.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-glvkspirv.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-gpucomp.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rtcore.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/nvidia_icd.json", + "/usr/lib/aarch64-linux-gnu/tegra-egl/", + "/usr/lib/aarch64-linux-gnu/tegra-egl/ld.so.conf", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libEGL_nvidia.so.0", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv1_CM_nvidia.so.1", + "/usr/lib/aarch64-linux-gnu/tegra-egl/libGLESv2_nvidia.so.2", + "/usr/lib/aarch64-linux-gnu/tegra-egl/nvidia.json", + "/etc/vulkan/icd.d/nvidia_icd.json", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-nvvm.so.4", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ptxjitcompiler.so.1", + "/usr/share/glvnd/egl_vendor.d/10_nvidia.json" + ], + "nvidia-l4t-camera": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketclient.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvargus_socketserver.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcam_imageencoder.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcameratools.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamerautils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamlog.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcamv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcapture.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfusacap.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfusacapinterface.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisp.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisppg.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_isp_ext.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvodm_imager.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvargus.so", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvargus.so" + ], + "nvidia-l4t-core": [ + "/usr/lib/aarch64-linux-gnu/nvidia/ld.so.conf", + "/usr/lib/aarch64-linux-gnu/nvidia/libjetsonpower.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcolorutil.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvddk_2d_v2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvddk_vic.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdla_runtime.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnet.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstoredefog.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvfnetstorehdfx.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_boot.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_camera.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_force.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_generic.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_gpucompute.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_graphics.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_il.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_spincircle.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_tbc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvgov_ui.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-rmapi-tegra.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-tls.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvimp.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvisp_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvos.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvphs.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvphsd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpva.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpva_algorithms.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpvaumd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_chip.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_gpu.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_host1x.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_mem.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_stream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_surface.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvrm_sync.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsciipc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvsocsys.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtegrahv.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvic.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libsensors.hal-client.nvs.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libsensors.l4t.no_fusion.nvs.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libsensors_hal.nvs.so", + "/usr/lib/aarch64-linux-gnu/tegra" + ], + "nvidia-l4t-cuda": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcucompat.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcudla.so", + "/usr/lib/aarch64-linux-gnu/libcuda.so", + "/usr/lib/aarch64-linux-gnu/libnvcucompat.so", + "/usr/lib/aarch64-linux-gnu/libnvcudla.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libcuda.so.1" + ], + "nvidia-l4t-cuda-utils": [ + "/usr/bin/nvidia-cuda-mps-control", + "/usr/bin/nvidia-cuda-mps-server" + ], + "nvidia-l4t-cudadebuggingsupport": [ + "/usr/lib/aarch64-linux-gnu/tegra/", + "/usr/lib/aarch64-linux-gnu/tegra/libcudadebugger.so.1" + ], + "nvidia-l4t-dla-compiler": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdla_compiler.so" + ], + "nvidia-l4t-firmware": [ + "/lib/firmware/tegra19x/nvhost_nvdec040_ns.fw", + "/lib/firmware/tegra23x/nvhost_nvdec050_desc_prod.bin" + ], + "nvidia-l4t-gbm": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1.1.0", + "/usr/lib/aarch64-linux-gnu/gbm/nvidia-drm_gbm.so", + "/usr/lib/aarch64-linux-gnu/gbm/tegra-udrm_gbm.so", + "/usr/lib/aarch64-linux-gnu/gbm/tegra_gbm.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-allocator.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-gbm.so.1" + ], + "nvidia-l4t-gstreamer": [ + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvdrmvideosink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglglessink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnveglstreamsrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvegltransform.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvipcpipeline.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvivafilter.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvjpeg.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvtee.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvunixfd.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvv4l2camerasrc.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvidconv.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideo4linux2.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosink.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvvideosinks.so", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstcapture-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstipctestapp-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/gstreamer-1.0/nvgstplayer-1.0_README.txt", + "/usr/lib/aarch64-linux-gnu/libgstnvegl-1.0.so.0", + "/usr/lib/aarch64-linux-gnu/libgstnvexifmeta.so", + "/usr/lib/aarch64-linux-gnu/libgstnvivameta.so", + "/usr/lib/aarch64-linux-gnu/libnvsample_cudaprocess.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnveglstreamproducer.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvcustomhelper.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libgstnvdsseimeta.so" + ], + "nvidia-l4t-libwayland-client0": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-client.so.0.22.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-client.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-client.so.0" + ], + "nvidia-l4t-libwayland-cursor0": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-cursor.so.0.22.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-cursor.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-cursor.so.0" + ], + "nvidia-l4t-libwayland-egl1": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-egl.so.1.22.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-egl.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-egl.so.1" + ], + "nvidia-l4t-libwayland-server0": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-server.so.0.22.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-server.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libwayland-server.so.0" + ], + "nvidia-l4t-multimedia": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvcuvidv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdecode2eglimage.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnveventlib.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvexif.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvjpeg.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_dla.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_eglstream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_parser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ide_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iep_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpd_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_ijpe_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_iofa_sci.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedia_tensor.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmedialdc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_contentpipe.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_parser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmm_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_image.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_utils.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvmmlite_video.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvofsdk.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvoggopus.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvomx.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvomxilclient.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvosd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvparser.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtracebuf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvtvmr_2d.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvv4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvv4lconvert.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvideo.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvvideoencode_ppe.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libtegrav4l2.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvcuvidvideocodec.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2_nvvideocodec.so", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvcuvidvideocodec.so", + "/usr/lib/aarch64-linux-gnu/libv4l/plugins/nv/libv4l2_nvvideocodec.so", + "/usr/lib/aarch64-linux-gnu/libv4l2.so.0.0.999999", + "/usr/lib/aarch64-linux-gnu/libv4lconvert.so.0.0.999999", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurftransform.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvdsbufferpool.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvid_mapper.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4l2.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libv4lconvert.so.0" + ], + "nvidia-l4t-multimedia-utils": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbuf_fdmap.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so.1.0.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvbufsurface.so" + ], + "nvidia-l4t-nvml": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-ml.so.1", + "/usr/sbin/nvidia-smi", + "/usr/share/doc/nvidia-tegra/LICENSE.nvidia-smi" + ], + "nvidia-l4t-nvsci": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscievent.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so.1", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscibuf.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscicommon.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscistream.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvscisync.so" + ], + "nvidia-l4t-openwfd": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libtegrawfd.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-kms.so" + ], + "nvidia-l4t-pva": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvpvaintf.so" + ], + "nvidia-l4t-tools": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvplayfair.so" + ], + "nvidia-l4t-vulkan-sc": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.540.4.0", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-vksc-core.so.1" + ], + "nvidia-l4t-vulkan-sc-sdk": [ + "/etc/vulkansc/icd.d/nvidia_icd_vksc.json", + "/usr/lib/aarch64-linux-gnu/nvidia/libVkLayer_json_gen.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libVkSCLayer_khronos_validation.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1.0.10", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so", + "/usr/lib/aarch64-linux-gnu/nvidia/libvulkansc.so.1" + ], + "nvidia-l4t-wayland": [ + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1.1.11", + "/usr/lib/aarch64-linux-gnu/nvidia/libnvidia-egl-wayland.so.1" + ], + "nvidia-l4t-weston": [ + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLInputEventExample", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/EGLWLMockNavigation", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/LayerManagerControl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/color-lcms.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/desktop-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/drm-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/fullscreen-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/gl-renderer.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/headless-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/hmi-controller.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-controller.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/ivi-shell.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmClient.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmCommon.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmControl.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libilmInput.so.2.3.2", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/libweston-13.so.0", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/simple-weston-client", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/spring-tool", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/wayland-backend.so", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-calibrator", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-clickdot", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-cliptest", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-content-protection", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-debug", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-desktop-shell", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-dnd", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-eventdemo", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-flower", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-fullscreen", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-image", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-ivi-shell-user-interface", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-keyboard", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-multi-resource", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-presentation-shm", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-resizor", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-scaler", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-screenshooter", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-damage", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-egldevice", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-dmabuf-feedback", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-egl", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-im", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-shm", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-simple-touch", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-smoke", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-stacking", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-subsurfaces", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-tablet", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-terminal", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-touch-calibrator", + "/usr/lib/aarch64-linux-gnu/nvidia/weston-13.0/weston-transformed" + ] +} diff --git a/pkgs/cuda-packages/cudaConfig.nix b/pkgs/cuda-packages/cudaConfig.nix index 19c7c3c6..d34e15d5 100644 --- a/pkgs/cuda-packages/cudaConfig.nix +++ b/pkgs/cuda-packages/cudaConfig.nix @@ -23,7 +23,7 @@ _: { isJetson = true; minCudaMajorMinorVersion = "11.4"; dontDefaultAfterCudaMajorMinorVersion = null; - maxCudaMajorMinorVersion = "12.2"; + maxCudaMajorMinorVersion = "12.8"; }; }; # NVCC compatibilities come from @@ -45,6 +45,19 @@ _: { minMajorVersion = "6"; }; }; + + # Maximum Clang version is 18 + # https://docs.nvidia.com/cuda/archive/12.6.0/cuda-installation-guide-linux/index.html#host-compiler-support-policy + "12.6" = { + clang = { + maxMajorVersion = "18"; + minMajorVersion = "7"; + }; + gcc = { + maxMajorVersion = "13"; + minMajorVersion = "6"; + }; + }; }; }; } diff --git a/pkgs/cuda-packages/cuda_cccl.nix b/pkgs/cuda-packages/cuda_cccl.nix index 076198fc..829d567e 100644 --- a/pkgs/cuda-packages/cuda_cccl.nix +++ b/pkgs/cuda-packages/cuda_cccl.nix @@ -1,6 +1,6 @@ -{ deb-builder }: +{ deb-builder, cudaOlder }: deb-builder { - sourceName = "cuda-thrust"; + sourceName = "cuda-${if cudaOlder "12" then "thrust" else "cccl"}"; packageName = "cuda_cccl"; outputs = [ "out" diff --git a/pkgs/cuda-packages/cuda_gdb/fixup.nix b/pkgs/cuda-packages/cuda_gdb/fixup.nix index da558b6c..e6212d37 100644 --- a/pkgs/cuda-packages/cuda_gdb/fixup.nix +++ b/pkgs/cuda-packages/cuda_gdb/fixup.nix @@ -4,6 +4,7 @@ , lib , python3 , stdenv +, gmp }: let inherit (lib.attrsets) recursiveUpdate; @@ -17,6 +18,7 @@ prevAttrs: { buildInputs = prevAttrs.buildInputs or [ ] + ++ optionals (cudaAtLeast "12") [ gmp ] # aarch64, sbsa needs expat ++ optionals stdenv.hostPlatform.isAarch64 [ expat ]; @@ -25,12 +27,11 @@ prevAttrs: { prevAttrs.postInstall or "" # Remove binaries requiring Python3 versions we do not have + optionalString (cudaAtLeast "12.5") '' - pushd "''${!outputBin:?}/bin" >/dev/null echo "removing cuda-gdb-python*-tui binaries for Python 3 versions we do not have" - mv "cuda-gdb-python${python3MajorMinorVersion}-tui" ../ - rm -f cuda-gdb-python*-tui - mv "../cuda-gdb-python${python3MajorMinorVersion}-tui" . - popd >/dev/null + find "''${!outputBin:?}/bin" \ + -name cuda-gdb-python\*-tui \ + \( ! -name "cuda-gdb-python${python3MajorMinorVersion}-tui" \) \ + -print -delete ''; passthru = recursiveUpdate (prevAttrs.passthru or { }) { diff --git a/pkgs/cuda-packages/cuda_nvcc/fixup.nix b/pkgs/cuda-packages/cuda_nvcc/fixup.nix index 9ef060dc..e6f219ac 100644 --- a/pkgs/cuda-packages/cuda_nvcc/fixup.nix +++ b/pkgs/cuda-packages/cuda_nvcc/fixup.nix @@ -1,18 +1,23 @@ # NOTE: All fixups must be at least binary functions to avoid callPackage adding override attributes. { backendStdenv , cudaAtLeast -, cudaConfig -, cudaMajorMinorPatchVersion -, cudaMajorMinorVersion , cudaOlder , lib -, makeBinaryWrapper , setupCudaHook }: let inherit (lib.strings) concatStringsSep optionalString; in +let cudaStdenv = backendStdenv; in finalAttrs: prevAttrs: { + # The nvcc and cicc binaries contain hard-coded references to /usr + allowFHSReferences = true; + # Entries here will be in nativeBuildInputs when cuda_nvcc is in nativeBuildInputs + propagatedBuildInputs = prevAttrs.propagatedBuildInputs or [ ] ++ [ + # nvccHook + cudaStdenv.cc + ]; + # Patch the nvcc.profile. # Syntax: # - `=` for assignment, @@ -73,8 +78,7 @@ finalAttrs: prevAttrs: { # Always move the nvvm directory to the bin output. '' moveToOutput "nvvm" "''${!outputBin:?}" - echo "moving nvvm/lib64 to nvvm/lib" - mv "''${!outputBin:?}/nvvm/lib64" "''${!outputBin:?}/nvvm/lib" + mv --verbose --no-clobber "''${!outputBin:?}/nvvm/lib64" "''${!outputBin:?}/nvvm/lib" '' # Create a directory for our manual propagation. + '' @@ -98,7 +102,7 @@ finalAttrs: prevAttrs: { "''${!outputInclude:?}/include" '' # Add the dependency on the include output to the nvcc.profile. - + '' + + lib.optionalString (cudaOlder "12") '' echo "adding ''${!outputInclude:?} to propagatedBuildInputs of ''${!outputBin:?}" printWords "''${!outputInclude:?}" >> "''${!outputBin:?}/nix-support/native-propagated-build-inputs" '' @@ -106,7 +110,11 @@ finalAttrs: prevAttrs: { + ( let # TODO: Should we also patch the LIBRARIES line's use of $(TOP)/$(_TARGET_DIR_)? - oldNvvmDir = concatStringsSep "/" [ "$(TOP)" "$(_NVVM_BRANCH_)" ]; + oldNvvmDir = lib.concatStringsSep "/" ( + [ "$(TOP)" ] + ++ lib.optionals (cudaOlder "12.5") [ "$(_NVVM_BRANCH_)" ] + ++ lib.optionals (cudaAtLeast "12.5") [ "nvvm" ] + ); newNvvmDir = ''''${!outputBin:?}/nvvm''; in # Unconditional patching to switch to the correct NVVM paths. @@ -122,11 +130,11 @@ finalAttrs: prevAttrs: { # Add the dependency on backendStdenv.cc and the new NVVM directories to the nvcc.profile. # NOTE: Escape the dollar sign in the variable expansion to prevent early expansion. + '' - echo "adding backendStdenv.cc and ${newNvvmDir} to nvcc.profile" + echo "adding cudaStdenv.cc and ${newNvvmDir} to nvcc.profile" cat << EOF >> "''${!outputBin:?}/bin/nvcc.profile" # Fix a compatible backend compiler - PATH += "${backendStdenv.cc}/bin": + PATH += "${cudaStdenv.cc}/bin": # Expose the split-out nvvm LIBRARIES =+ \$(_SPACE_) "-L${newNvvmDir}/lib" @@ -140,7 +148,7 @@ finalAttrs: prevAttrs: { # NOTE: mkDerivation's setup.sh clobbers all dependency files in fixupPhase, so we must register the paths in postFixup. postFixup = prevAttrs.postFixup or "" - + '' + + lib.optionalString (cudaOlder "12") ('' echo "adding setupCudaHook to propagatedBuildInputs of ''${!outputBin:?}" printWords "${setupCudaHook}" >> "''${!outputBin:?}/nix-support/propagated-build-inputs" '' @@ -149,10 +157,7 @@ finalAttrs: prevAttrs: { + '' echo "adding backendStdenv.cc to propagatedNativeBuildInputs of ''${!outputBin:?}" printWords "${backendStdenv.cc}" >> "''${!outputBin:?}/nix-support/propagated-native-build-inputs" - ''; - - # The nvcc and cicc binaries contain hard-coded references to /usr - allowFHSReferences = true; + ''); meta = prevAttrs.meta or { } // { mainProgram = "nvcc"; diff --git a/pkgs/cuda-packages/cudnn/fixup.nix b/pkgs/cuda-packages/cudnn/fixup.nix index 1b6518ed..751edfbd 100644 --- a/pkgs/cuda-packages/cudnn/fixup.nix +++ b/pkgs/cuda-packages/cudnn/fixup.nix @@ -3,11 +3,17 @@ , libcublas , patchelf , zlib +, cudaMajorVersion , }: let inherit (lib.attrsets) getLib; inherit (lib.meta) getExe; + + cudnnMajorVersion = { + "11" = "8"; + "12" = "9"; + }.${cudaMajorVersion}; in prevAttrs: { buildInputs = prevAttrs.buildInputs or [ ] ++ [ @@ -17,16 +23,22 @@ prevAttrs: { postFixup = prevAttrs.postFixup or "" - + '' + + lib.optionalString (lib.versionAtLeast cudnnMajorVersion "9") '' + pushd "''${!outputLib:?}/lib" >/dev/null + ln -s libcudnn.so.${cudnnMajorVersion} libcudnn.so + popd >/dev/null + '' + + lib.optionalString (lib.versionOlder cudnnMajorVersion "9") '' echo "patchelf-ing libcudnn with runtime dependencies" "${getExe patchelf}" "''${!outputLib:?}/lib/libcudnn.so" --add-needed libcudnn_cnn_infer.so "${getExe patchelf}" "''${!outputLib:?}/lib/libcudnn_ops_infer.so" --add-needed libcublas.so --add-needed libcublasLt.so - - echo "creating symlinks for header files in include without the _v8 suffix before the file extension" + '' + + '' + echo "creating symlinks for header files in include without the _v${cudnnMajorVersion} suffix before the file extension" pushd "''${!outputInclude:?}/include" >/dev/null for file in *.h; do - echo "symlinking $file to $(basename "$file" "_v8.h").h" - ln -s "$file" "$(basename "$file" "_v8.h").h" + echo "symlinking $file to $(basename "$file" "_v${cudnnMajorVersion}.h").h" + ln -s "$file" "$(basename "$file" "_v${cudnnMajorVersion}.h").h" done unset -v file popd >/dev/null diff --git a/pkgs/cuda-packages/libcusolver/fixup.nix b/pkgs/cuda-packages/libcusolver/fixup.nix index 5deef439..da7989c9 100644 --- a/pkgs/cuda-packages/libcusolver/fixup.nix +++ b/pkgs/cuda-packages/libcusolver/fixup.nix @@ -1,3 +1,15 @@ # NOTE: All fixups must be at least binary functions to avoid callPackage adding override attributes. -{ lib, libcublas }: -prevAttrs: { buildInputs = prevAttrs.buildInputs or [ ] ++ [ (lib.getLib libcublas) ]; } +{ lib +, libcublas +, libcusparse ? null +, libnvjitlink ? null +, cudaAtLeast +}: +prevAttrs: { + buildInputs = prevAttrs.buildInputs or [ ] ++ [ + (lib.getLib libcublas) + ] ++ lib.lists.optionals (cudaAtLeast "12") [ + (lib.getLib libcusparse) + (lib.getLib libnvjitlink) + ]; +} diff --git a/pkgs/cuda-packages/libcusparse/fixup.nix b/pkgs/cuda-packages/libcusparse/fixup.nix new file mode 100644 index 00000000..41f3360d --- /dev/null +++ b/pkgs/cuda-packages/libcusparse/fixup.nix @@ -0,0 +1,6 @@ +# NOTE: All fixups must be at least binary functions to avoid callPackage adding override attributes. +{ lib, libnvjitlink ? null, cudaAtLeast }: +prevAttrs: { + buildInputs = prevAttrs.buildInputs or [ ] + ++ lib.lists.optionals (cudaAtLeast "12") [ (lib.getLib libnvjitlink) ]; +} diff --git a/pkgs/cuda-packages/libcusparse.nix b/pkgs/cuda-packages/libcusparse/package.nix similarity index 88% rename from pkgs/cuda-packages/libcusparse.nix rename to pkgs/cuda-packages/libcusparse/package.nix index 3ed274dd..83729a16 100644 --- a/pkgs/cuda-packages/libcusparse.nix +++ b/pkgs/cuda-packages/libcusparse/package.nix @@ -1,6 +1,7 @@ { deb-builder }: deb-builder { sourceName = "libcusparse"; + fixupFns = [ ./fixup.nix ]; outputs = [ "out" "dev" diff --git a/pkgs/cuda-packages/libnvjitlink.nix b/pkgs/cuda-packages/libnvjitlink.nix new file mode 100644 index 00000000..b222ae2e --- /dev/null +++ b/pkgs/cuda-packages/libnvjitlink.nix @@ -0,0 +1,17 @@ +{ deb-builder }: +deb-builder { + sourceName = "libnvjitlink"; + packageName = "libnvjitlink"; + outputs = [ + "out" + "dev" + "include" + "lib" + "static" + "stubs" + ]; + releaseInfo = { + license = "CUDA Toolkit"; + name = "libnvjitlink"; + }; +} diff --git a/pkgs/cuda-packages/libnvjpeg.nix b/pkgs/cuda-packages/libnvjpeg.nix new file mode 100644 index 00000000..ca7e1995 --- /dev/null +++ b/pkgs/cuda-packages/libnvjpeg.nix @@ -0,0 +1,17 @@ +{ deb-builder }: +deb-builder { + sourceName = "libnvjpeg"; + packageName = "libnvjpeg"; + outputs = [ + "out" + "dev" + "include" + "lib" + "static" + "stubs" + ]; + releaseInfo = { + license = "CUDA Toolkit"; + name = "libnvjpeg"; + }; +} diff --git a/pkgs/cuda-packages/nsight_compute_host.nix b/pkgs/cuda-packages/nsight_compute_host.nix index 4a18cf9e..3f64c631 100644 --- a/pkgs/cuda-packages/nsight_compute_host.nix +++ b/pkgs/cuda-packages/nsight_compute_host.nix @@ -1,5 +1,5 @@ { alsa-lib -, buildFHSUserEnv +, buildFHSEnv , buildFromDebs , dbus , debs @@ -53,7 +53,7 @@ in # ncu-ui has some hardcoded /usr access so use fhs instead of trying to patchelf # it also comes with its own qt6 .so, trying to use Nix qt6 libs results in weird # behavior(blank window) so just supply qt6 dependency instead of qt6 itself -buildFHSUserEnv { +buildFHSEnv { pname = "ncu-ui"; inherit (nsight_out) version; targetPkgs = diff --git a/pkgs/cuda-packages/nsight_systems_host.nix b/pkgs/cuda-packages/nsight_systems_host.nix index 500893c1..77a71702 100644 --- a/pkgs/cuda-packages/nsight_systems_host.nix +++ b/pkgs/cuda-packages/nsight_systems_host.nix @@ -1,5 +1,5 @@ { alsa-lib -, buildFHSUserEnv +, buildFHSEnv , buildFromDebs , dbus , debs @@ -78,7 +78,7 @@ in # nsys-ui has some hardcoded /usr access so use fhs instead of trying to patchelf # it also comes with its own qt6 .so, trying to use Nix qt6 libs results in weird # behavior(blank window) so just supply qt6 dependency instead of qt6 itself -buildFHSUserEnv { +buildFHSEnv { pname = "nsys-ui"; inherit (nsight_out) version; targetPkgs = diff --git a/pkgs/cuda-packages/tensorrt/fixup.nix b/pkgs/cuda-packages/tensorrt/fixup.nix index 770ac7c4..acf256ce 100644 --- a/pkgs/cuda-packages/tensorrt/fixup.nix +++ b/pkgs/cuda-packages/tensorrt/fixup.nix @@ -7,6 +7,8 @@ , libcublas , libcudla , patchelf +, cudaAtLeast +, l4t-dla-compiler ? null # something bad if cudaAtLeast "12" passes }: prevAttrs: { # Samples, lib, and static all reference a FHS @@ -20,6 +22,8 @@ prevAttrs: { cudnn libcublas libcudla + ] ++ lib.optionals (cudaAtLeast "12") [ + l4t-dla-compiler ]; debNormalization = diff --git a/pkgs/cuda-packages/vpi-firmware.nix b/pkgs/cuda-packages/vpi-firmware.nix new file mode 100644 index 00000000..724c4184 --- /dev/null +++ b/pkgs/cuda-packages/vpi-firmware.nix @@ -0,0 +1,18 @@ +# Needed for vpi${majorVersion}-samples benchmark w/ pva to work +{ debs +, dpkg +, runCommand +, l4tMajorMinorPatchVersion +, lib +, +}: +let + majorVersion = { + "35" = "2"; + "36" = "3"; + }.${lib.versions.major l4tMajorMinorPatchVersion}; +in +runCommand "vpi${majorVersion}-firmware" { nativeBuildInputs = [ dpkg ]; } '' + dpkg-deb -x ${debs.common."libnvvpi${majorVersion}".src} source + install -D source/opt/nvidia/vpi${majorVersion}/lib64/priv/vpi${majorVersion}_pva_auth_allowlist $out/lib/firmware/pva_auth_allowlist +'' diff --git a/pkgs/cuda-packages/vpi2/package.nix b/pkgs/cuda-packages/vpi/package.nix similarity index 56% rename from pkgs/cuda-packages/vpi2/package.nix rename to pkgs/cuda-packages/vpi/package.nix index 209c9836..9565a0c9 100644 --- a/pkgs/cuda-packages/vpi2/package.nix +++ b/pkgs/cuda-packages/vpi/package.nix @@ -6,16 +6,24 @@ , l4t-multimedia , libcufft , libnpp +, l4tMajorMinorPatchVersion +, lib , }: +let + majorVersion = { + "35" = "2"; + "36" = "3"; + }.${lib.versions.major l4tMajorMinorPatchVersion}; +in buildFromDebs { - pname = "vpi2"; - version = debs.common.vpi2-dev.version; + pname = "vpi${majorVersion}"; + version = debs.common."vpi${majorVersion}-dev".version; srcs = [ - debs.common.libnvvpi2.src - debs.common.vpi2-dev.src + debs.common."libnvvpi${majorVersion}".src + debs.common."vpi${majorVersion}-dev".src ]; - sourceRoot = "source/opt/nvidia/vpi2"; + sourceRoot = "source/opt/nvidia/vpi${majorVersion}"; buildInputs = [ l4t-core l4t-3d-core diff --git a/pkgs/cuda-packages/vpi2/vpi2.patch b/pkgs/cuda-packages/vpi/vpi2.patch similarity index 100% rename from pkgs/cuda-packages/vpi2/vpi2.patch rename to pkgs/cuda-packages/vpi/vpi2.patch diff --git a/pkgs/cuda-packages/vpi2-firmware.nix b/pkgs/cuda-packages/vpi2-firmware.nix deleted file mode 100644 index 21ac1d9e..00000000 --- a/pkgs/cuda-packages/vpi2-firmware.nix +++ /dev/null @@ -1,10 +0,0 @@ -# Needed for vpi2-samples benchmark w/ pva to work -{ debs -, dpkg -, runCommand -, -}: -runCommand "vpi2-firmware" { nativeBuildInputs = [ dpkg ]; } '' - dpkg-deb -x ${debs.common.libnvvpi2.src} source - install -D source/opt/nvidia/vpi2/lib64/priv/vpi2_pva_auth_allowlist $out/lib/firmware/pva_auth_allowlist -'' diff --git a/pkgs/flash-from-device/default.nix b/pkgs/flash-from-device/default.nix index 8ac750ff..0b4a9551 100644 --- a/pkgs/flash-from-device/default.nix +++ b/pkgs/flash-from-device/default.nix @@ -1,13 +1,14 @@ { lib, pkgsStatic, runCommand, tegra-eeprom-tool-static }: let - # Workaround build failure with pkgsStatic.mtdutils in NixOS 24.11 - # > configure: WARNING: cannot find CMocka library required for unit tests - # > configure: unit tests can optionally be disabled - # > configure: error: missing one or more dependencies mtdutils = pkgsStatic.mtdutils.overrideAttrs (_: { - configureFlags = [ ]; - doCheck = false; + # Grab patches merged after 2.3.0 to let mtdutils build with musl + # https://lists.openembedded.org/g/openembedded-core/topic/patch_mtd_utils_upgrade_to/111205949 + src = fetchGit { + url = "git://git.infradead.org/mtd-utils.git"; + rev = "77981a2888c711268b0e7f32af6af159c2288e23"; + }; + version = "2.3.0-unstable-2025-06-02"; }); # Make the package smaller so it doesn't blow up the initrd size diff --git a/pkgs/flash-from-device/flash-from-device.sh b/pkgs/flash-from-device/flash-from-device.sh index b00c1e9d..91cd4a56 100644 --- a/pkgs/flash-from-device/flash-from-device.sh +++ b/pkgs/flash-from-device/flash-from-device.sh @@ -71,11 +71,11 @@ program_spi_partition() { return 1 fi fi - # Multiple copies of the BCT get installed at erase-block boundaries + # Multiple copies of the BCT get installed at 16KiB boundaries # within the defined BCT partition if [ "$partname" = "BCT" ]; then local slotsize - slotsize=$(cat /sys/class/mtd/mtd0/erasesize) + slotsize=16384 if [ -z "$slotsize" ]; then return 1 fi @@ -147,7 +147,7 @@ erase_bootdev() { BOOTDEV_TYPE= # Detect type to erase - while IFS=", " read -r partnumber partloc start_location partsize partfile partattrs partsha; do + while IFS=", " read -r partnumber partloc start_location partsize partfile filesize partattrs partsha; do devnum=$(echo "$partloc" | cut -d':' -f 1) instnum=$(echo "$partloc" | cut -d':' -f 2) partname=$(echo "$partloc" | cut -d':' -f 3) @@ -187,7 +187,7 @@ erase_bootdev() { write_partitions() { # shellcheck disable=SC2034 - while IFS=", " read -r partnumber partloc start_location partsize partfile partattrs partsha; do + while IFS=", " read -r partnumber partloc start_location partsize partfile filesize partattrs partsha; do # Need to trim off leading blanks devnum=$(echo "$partloc" | cut -d':' -f 1) instnum=$(echo "$partloc" | cut -d':' -f 2) diff --git a/pkgs/flash-tools/default.nix b/pkgs/flash-tools/default.nix index 1014f4ee..02b40910 100644 --- a/pkgs/flash-tools/default.nix +++ b/pkgs/flash-tools/default.nix @@ -46,7 +46,7 @@ let perl ]; - patches = [ ./flash-tools.patch ]; + patches = [ ./flash-tools-r${lib.versions.major l4tMajorMinorPatchVersion}.patch ]; postPatch = '' # Needed in Jetpack 5 @@ -77,12 +77,15 @@ let # Wrap x86 binaries in qemu pushd bootloader/ >/dev/null for filename in chkbdinfo mkbctpart mkbootimg mksparse tegrabct_v2 tegradevflash_v2 tegrahost_v2 tegrakeyhash tegraopenssl tegraparser_v2 tegrarcm_v2 tegrasign_v2; do - mv "$filename" ."$filename"-wrapped - cat >"$filename" <"$filename" </dev/null ''); diff --git a/pkgs/flash-tools/flash-tools.patch b/pkgs/flash-tools/flash-tools-r35.patch similarity index 100% rename from pkgs/flash-tools/flash-tools.patch rename to pkgs/flash-tools/flash-tools-r35.patch diff --git a/pkgs/flash-tools/flash-tools-r36.patch b/pkgs/flash-tools/flash-tools-r36.patch new file mode 100644 index 00000000..50fd579b --- /dev/null +++ b/pkgs/flash-tools/flash-tools-r36.patch @@ -0,0 +1,12 @@ +diff --color -Naur original/bootloader/l4t_bup_gen.func new/bootloader/l4t_bup_gen.func +--- original/bootloader/l4t_bup_gen.func 2025-01-07 17:42:15.358647998 -0800 ++++ new/bootloader/l4t_bup_gen.func 2025-04-14 15:21:33.105126516 -0700 +@@ -25,8 +25,6 @@ + + declare -A ENTRY_LIST + ENTRY_LIST[bl]="" +-ENTRY_LIST[kernel]="" +-ENTRY_LIST[safety_user]="" + + PART_NAME="" + IMAGE_SIGNED=0 diff --git a/pkgs/kernels/r36/0001-ipu-Depend-on-x86.patch b/pkgs/kernels/r36/0001-ipu-Depend-on-x86.patch new file mode 100644 index 00000000..3b0ee379 --- /dev/null +++ b/pkgs/kernels/r36/0001-ipu-Depend-on-x86.patch @@ -0,0 +1,29 @@ +From 684f238159a15e58b935a9fc861744126f6833df Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Mon, 28 Apr 2025 15:28:58 -0700 +Subject: [PATCH] ipu: Depend on x86 + +The ipu6 module makes use of the following x86-specific function: +clflush_cache_range(). Make the Kconfig reflect this so allmodconfig +works. + +Signed-off-by: Elliot Berman +--- + drivers/media/pci/intel/Kconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/media/pci/intel/Kconfig b/drivers/media/pci/intel/Kconfig +index ee4a77acb66f..5088f1e850c5 100644 +--- a/drivers/media/pci/intel/Kconfig ++++ b/drivers/media/pci/intel/Kconfig +@@ -3,6 +3,7 @@ config VIDEO_INTEL_IPU6 + depends on ACPI + depends on MEDIA_SUPPORT + depends on MEDIA_PCI_SUPPORT ++ depends on X86 + select IOMMU_API + select IOMMU_IOVA + select X86_DEV_DMA_OPS if X86 +-- +2.49.0 + diff --git a/pkgs/kernels/r36/0001-nvidia-drm-Guard-nv_dev-in-nv_drm_suspend_resume.patch b/pkgs/kernels/r36/0001-nvidia-drm-Guard-nv_dev-in-nv_drm_suspend_resume.patch new file mode 100644 index 00000000..67252cee --- /dev/null +++ b/pkgs/kernels/r36/0001-nvidia-drm-Guard-nv_dev-in-nv_drm_suspend_resume.patch @@ -0,0 +1,29 @@ +From 751364b6b30105aca2d67e2d84252699c15bac96 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Fri, 25 Apr 2025 14:25:29 -0700 +Subject: [PATCH 1/3] nvidia-drm: Guard nv_dev in nv_drm_suspend_resume + +All that code should be in a separate function :shrug: + +Signed-off-by: Elliot Berman +--- + kernel-open/nvidia-drm/nvidia-drm-drv.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/kernel-open/nvidia-drm/nvidia-drm-drv.c b/kernel-open/nvidia-drm/nvidia-drm-drv.c +index 61842e8..dd18e80 100644 +--- a/kernel-open/nvidia-drm/nvidia-drm-drv.c ++++ b/kernel-open/nvidia-drm/nvidia-drm-drv.c +@@ -1861,7 +1861,9 @@ void nv_drm_suspend_resume(NvBool suspend) + { + static DEFINE_MUTEX(nv_drm_suspend_mutex); + static NvU32 nv_drm_suspend_count = 0; ++#if defined(NV_DRM_ATOMIC_MODESET_AVAILABLE) + struct nv_drm_device *nv_dev; ++#endif /* NV_DRM_ATOMIC_MODESET_AVAILABLE */ + + mutex_lock(&nv_drm_suspend_mutex); + +-- +2.49.0 + diff --git a/pkgs/kernels/r36/0001-rtl8822ce-Fix-Werror-address.patch b/pkgs/kernels/r36/0001-rtl8822ce-Fix-Werror-address.patch new file mode 100644 index 00000000..db0a9c6e --- /dev/null +++ b/pkgs/kernels/r36/0001-rtl8822ce-Fix-Werror-address.patch @@ -0,0 +1,320 @@ +From b357cda254885375bde6d67ea2738e3481906d93 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Fri, 25 Apr 2025 08:21:53 -0700 +Subject: [PATCH 1/2] rtl8822ce: Fix -Werror=address + +For -Werror=address + +Signed-off-by: Elliot Berman +--- + drivers/net/wireless/realtek/rtl8822ce/core/rtw_sta_mgt.c | 3 +-- + .../net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf.c | 6 +++--- + .../realtek/rtl8822ce/hal/phydm/halrf/halrf_debug.c | 6 +++--- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_antdiv.c | 2 +- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_api.c | 2 +- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_cck_pd.c | 2 +- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_ccx.c | 4 ++-- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_debug.c | 6 +++--- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dig.c | 2 +- + .../realtek/rtl8822ce/hal/phydm/phydm_dynamictxpower.c | 2 +- + .../wireless/realtek/rtl8822ce/hal/phydm/phydm_lna_sat.c | 4 ++-- + .../wireless/realtek/rtl8822ce/hal/phydm/phydm_pathdiv.c | 2 +- + .../realtek/rtl8822ce/hal/phydm/phydm_pmac_tx_setting.c | 2 +- + .../wireless/realtek/rtl8822ce/hal/phydm/phydm_pow_train.c | 2 +- + .../wireless/realtek/rtl8822ce/hal/phydm/phydm_smt_ant.c | 4 ++-- + .../net/wireless/realtek/rtl8822ce/hal/phydm/phydm_soml.c | 2 +- + 16 files changed, 25 insertions(+), 26 deletions(-) + +diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_sta_mgt.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_sta_mgt.c +index d0966567..282d701d 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_sta_mgt.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_sta_mgt.c +@@ -390,8 +390,7 @@ void rtw_mfree_stainfo(struct sta_info *psta); + void rtw_mfree_stainfo(struct sta_info *psta) + { + +- if (&psta->lock != NULL) +- _rtw_spinlock_free(&psta->lock); ++ _rtw_spinlock_free(&psta->lock); + + _rtw_free_sta_xmit_priv_lock(&psta->sta_xmitpriv); + _rtw_free_sta_recv_priv_lock(&psta->sta_recvpriv); +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf.c +index ebe51b4f..abb5552e 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf.c +@@ -867,7 +867,7 @@ void halrf_support_ability_debug(void *dm_void, char input[][16], u32 *_used, + u8 i; + + for (i = 0; i < 5; i++) +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); + + if (dm_value[0] == 100) { +@@ -942,7 +942,7 @@ void halrf_support_band_shift_debug(void *dm_void, char input[][16], u32 *_used, + + #if (RTL8192F_SUPPORT == 1) + for (i = 0; i < 7; i++) +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); + + if (!(rf->rf_supportability & HAL_2GBAND_SHIFT)) { +@@ -4658,7 +4658,7 @@ void halrf_dump_rfk_reg(void *dm_void, char input[][16], u32 *_used, + + reg_1b00 = odm_get_bb_reg(dm, R_0x1b00, MASKDWORD); + +- if (input[2]) ++ if (input[2][0]) + PHYDM_SSCANF(input[2], DCMD_DECIMAL, &var1[0]); + + if ((strcmp(input[2], help) == 0)) +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf_debug.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf_debug.c +index 3f2d142b..822ba62e 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf_debug.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/halrf/halrf_debug.c +@@ -151,7 +151,7 @@ void halrf_debug_trace(void *dm_void, char input[][16], u32 *_used, + u8 i; + + for (i = 0; i < 5; i++) +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &rf_var[i]); + + if (rf_var[0] == 100) { +@@ -211,7 +211,7 @@ void halrf_dack_debug_cmd(void *dm_void, char input[][16]) + u8 i; + + for (i = 0; i < 7; i++) +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 2], DCMD_DECIMAL, &dm_value[i]); + + if (dm_value[0] == 1) +@@ -329,7 +329,7 @@ void halrf_cmd_parser(void *dm_void, char input[][16], u32 *_used, char *output, + PDM_SNPF(out_len, used, output + used, out_len - used, + "IQK DEBUG!!!!!\n"); + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 2], DCMD_HEX, + &rf_var[i]); + input_idx++; +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_antdiv.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_antdiv.c +index 3c2cc583..efb5955e 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_antdiv.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_antdiv.c +@@ -6440,7 +6440,7 @@ void phydm_antdiv_debug(void *dm_void, char input[][16], u32 *_used, + u8 i, input_idx = 0; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &dm_value[i]); + input_idx++; + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_api.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_api.c +index 349f3574..3f3e3d0b 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_api.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_api.c +@@ -433,7 +433,7 @@ void phydm_config_trx_path_v1(void *dm_void, char input[][16], u32 *_used, + return; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &val[i]); + input_idx++; + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_cck_pd.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_cck_pd.c +index 15a4b931..710ce2f6 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_cck_pd.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_cck_pd.c +@@ -1904,7 +1904,7 @@ void phydm_dig_cckpd_coex_dbg(void *dm_void, char input[][16], u32 *_used, + u8 i = 0; + + for (i = 0; i < 3; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var[i]); + } + +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_ccx.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_ccx.c +index dc88a20e..39ecf374 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_ccx.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_ccx.c +@@ -2997,7 +2997,7 @@ void phydm_ifs_clm_dbg(void *dm_void, char input[][16], u32 *_used, + return; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +@@ -3601,7 +3601,7 @@ void phydm_edcca_clm_dbg(void *dm_void, char input[][16], u32 *_used, + return; + + for (i = 0; i < 4; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &var1[i]); + } + +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_debug.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_debug.c +index dde03231..1a2db507 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_debug.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_debug.c +@@ -4193,7 +4193,7 @@ void phydm_enable_big_jump(void *dm_void, char input[][16], u32 *_used, + return; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &dm_value[i]); + input_idx++; + } +@@ -5190,7 +5190,7 @@ void phydm_spur_detect_dbg(void *dm_void, char input[][16], u32 *_used, + "{5: Adjust CSI weight threshold} {0:-,1:+} {th offset}\n"); + } else { + for (i = 0; i < 10; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +@@ -5843,7 +5843,7 @@ s32 phydm_cmd(struct dm_struct *dm, char *input, u32 in_len, u8 flag, + { + char *token; + u32 argc = 0; +- char argv[MAX_ARGC][MAX_ARGV]; ++ char argv[MAX_ARGC][MAX_ARGV] = {0}; + + do { + token = strsep(&input, ", "); +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dig.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dig.c +index 3798f989..66f3f358 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dig.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dig.c +@@ -969,7 +969,7 @@ void phydm_hwigi_dbg(void *dm_void, char input[][16], u32 *_used, + "Reset all hwigi : {5}\n"); + } else { + for (i = 0; i < 7; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dynamictxpower.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dynamictxpower.c +index 2ccbd1ae..c8ee0bc7 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dynamictxpower.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_dynamictxpower.c +@@ -653,7 +653,7 @@ void phydm_dtp_debug(void *dm_void, char input[][16], u32 *_used, char *output, + #endif + } else { + for (i = 0; i < 7; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_lna_sat.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_lna_sat.c +index 204765ee..d5246724 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_lna_sat.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_lna_sat.c +@@ -1480,7 +1480,7 @@ void phydm_auto_agc_tab_debug(void *dm_void, char input[][16], u32 *_used, + } else { + PHYDM_SSCANF(input[1], DCMD_DECIMAL, &var1[0]); + for (i = 1; i < 10; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +@@ -1565,7 +1565,7 @@ void phydm_lna_sat_debug(void *dm_void, char input[][16], u32 *_used, + PHYDM_SSCANF(input[1], DCMD_DECIMAL, &var1[0]); + + for (i = 1; i < 10; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var1[i]); + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pathdiv.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pathdiv.c +index a6b347cf..6b5043d6 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pathdiv.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pathdiv.c +@@ -519,7 +519,7 @@ void phydm_pathdiv_debug_8814a(void *dm_void, char input[][16], u32 *_used, + u8 i, input_idx = 0; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &dm_value[i]); + input_idx++; + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pmac_tx_setting.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pmac_tx_setting.c +index 296f39c3..caa6a41d 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pmac_tx_setting.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pmac_tx_setting.c +@@ -493,7 +493,7 @@ void phydm_pmac_tx_dbg(void *dm_void, char input[][16], u32 *_used, + "[pmac_tx] basic : {1} {rate_idx}(only 1M & 6M) {count}\n"); + } else { + for (i = 1; i < 7; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, + &var[i]); + } +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pow_train.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pow_train.c +index 56bc2411..c5d61e02 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pow_train.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_pow_train.c +@@ -149,7 +149,7 @@ void phydm_pow_train_debug( + "{0: Auto PT, 1:enable, 2: disable}\n"); + } else { + for (i = 0; i < 10; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &var1[i]); + } + +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_smt_ant.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_smt_ant.c +index 8e805b3c..1678cc40 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_smt_ant.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_smt_ant.c +@@ -319,7 +319,7 @@ void phydm_cumitek_smt_ant_debug( + } else if (dm_value[0] == 2) { /*@fix tx pattern*/ + + for (i = 1; i < 4; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &dm_value[i]); + } + +@@ -333,7 +333,7 @@ void phydm_cumitek_smt_ant_debug( + u8 table_path_b[8] = {0}; + + for (i = 1; i < 4; i++) { +- if (input[i + 1]) ++ if (input[i + 1][0]) + PHYDM_SSCANF(input[i + 1], DCMD_HEX, &dm_value[i]); + } + +diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_soml.c b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_soml.c +index cd4001af..315db53f 100644 +--- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_soml.c ++++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm_soml.c +@@ -316,7 +316,7 @@ void phydm_soml_debug(void *dm_void, char input[][16], u32 *_used, + return; + + for (i = 0; i < 5; i++) { +- if (input[i + 1]) { ++ if (input[i + 1][0]) { + PHYDM_SSCANF(input[i + 1], DCMD_DECIMAL, &dm_value[i]); + input_idx++; + } +-- +2.49.0 + diff --git a/pkgs/kernels/r36/0002-ANDURIL-Add-some-missing-BASE_CFLAGS.patch b/pkgs/kernels/r36/0002-ANDURIL-Add-some-missing-BASE_CFLAGS.patch new file mode 100644 index 00000000..0672ba5b --- /dev/null +++ b/pkgs/kernels/r36/0002-ANDURIL-Add-some-missing-BASE_CFLAGS.patch @@ -0,0 +1,32 @@ +From 31473d1beb229e885073d17a4d547e3015fe2791 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Tue, 20 May 2025 10:01:39 -0700 +Subject: [PATCH 2/3] ANDURIL: Add some missing BASE_CFLAGS + +After inspecting KBUILD_CFLAGS, observed some flags from the conftest +were missing. Add -fshort-wchar to avoid the following conftest +false-negative: + +/build/l4t-oot-sources/out/nvidia-linux-header/include/linux/efi.h:1122:17: error: passing argument 1 of 'get_var' from incompatible pointer type [8;;https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Warning-Options.html#index-Wincompatible-pointer-types-Wincompatible-pointer-types8;;] + +Signed-off-by: Elliot Berman +--- + kernel-open/conftest.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel-open/conftest.sh b/kernel-open/conftest.sh +index 391374f..b89a15e 100644 +--- a/kernel-open/conftest.sh ++++ b/kernel-open/conftest.sh +@@ -88,7 +88,7 @@ build_cflags() { + ISYSTEM=`$CC -print-file-name=include 2> /dev/null` + BASE_CFLAGS="-O2 -D__KERNEL__ \ + -DKBUILD_BASENAME=\"#conftest$$\" -DKBUILD_MODNAME=\"#conftest$$\" \ +--nostdinc -isystem $ISYSTEM \ ++-nostdinc -isystem $ISYSTEM -fshort-wchar -funsigned-char \ + -Wno-implicit-function-declaration -Wno-strict-prototypes" + + if [ "$OUTPUT" != "$SOURCES" ]; then +-- +2.49.0 + diff --git a/pkgs/kernels/r36/0002-sound-Fix-include-path-for-tegra-virt-alt-include.patch b/pkgs/kernels/r36/0002-sound-Fix-include-path-for-tegra-virt-alt-include.patch new file mode 100644 index 00000000..bf129087 --- /dev/null +++ b/pkgs/kernels/r36/0002-sound-Fix-include-path-for-tegra-virt-alt-include.patch @@ -0,0 +1,28 @@ +From 8ccff3029f2d8bf626adc1dcd44924e86ec91ba8 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Fri, 25 Apr 2025 08:40:40 -0700 +Subject: [PATCH 2/2] sound: Fix include path for tegra-virt-alt/include + +overlay isn't defined. + +Signed-off-by: Elliot Berman +--- + sound/soc/tegra-virt-alt/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sound/soc/tegra-virt-alt/Makefile b/sound/soc/tegra-virt-alt/Makefile +index 77bad808..2853f096 100644 +--- a/sound/soc/tegra-virt-alt/Makefile ++++ b/sound/soc/tegra-virt-alt/Makefile +@@ -4,7 +4,7 @@ + GCOV_PROFILE := y + + subdir-ccflags-y += -Werror +-ccflags-y += -I$(overlay)/$(src)/../tegra-virt-alt/include/ ++ccflags-y += -I$(srctree.nvidia-oot)/sound/soc/tegra-virt-alt/include/ + ccflags-y += -I$(overlay)/$(src)/../codecs + ccflags-y += -I$(srctree.nvidia-oot)/sound/soc/tegra-virt-alt/nvaudio_ivc/ + +-- +2.49.0 + diff --git a/pkgs/kernels/r36/0003-ANDURIL-Update-drm_gem_object_vmap_has_map_arg-test.patch b/pkgs/kernels/r36/0003-ANDURIL-Update-drm_gem_object_vmap_has_map_arg-test.patch new file mode 100644 index 00000000..7dbf637d --- /dev/null +++ b/pkgs/kernels/r36/0003-ANDURIL-Update-drm_gem_object_vmap_has_map_arg-test.patch @@ -0,0 +1,30 @@ +From f1a1f36fcac33d65488e63ad16ffa510553fb968 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Tue, 20 May 2025 10:06:14 -0700 +Subject: [PATCH 3/3] ANDURIL: Update drm_gem_object_vmap_has_map_arg test + +Kernel has renamed "struct dma_buf_map" as "struct iosys_map" and GCC +doesn't like the implicit cast. Use untyped pointer to make GCC fine +with it. + +Signed-off-by: Elliot Berman +--- + kernel-open/conftest.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kernel-open/conftest.sh b/kernel-open/conftest.sh +index b89a15e..971acb3 100644 +--- a/kernel-open/conftest.sh ++++ b/kernel-open/conftest.sh +@@ -5049,7 +5049,7 @@ compile_test() { + CODE=" + #include + int conftest_drm_gem_object_vmap_has_map_arg( +- struct drm_gem_object *obj, struct dma_buf_map *map) { ++ struct drm_gem_object *obj, void *map) { + return obj->funcs->vmap(obj, map); + }" + +-- +2.49.0 + diff --git a/pkgs/kernels/r36/Makefile.diff b/pkgs/kernels/r36/Makefile.diff new file mode 100644 index 00000000..201b83fa --- /dev/null +++ b/pkgs/kernels/r36/Makefile.diff @@ -0,0 +1,38 @@ +diff --git a/source/Makefile b/source/Makefile +index ad7dc07..602ddf0 100644 +--- a/source/Makefile ++++ b/source/Makefile +@@ -112,25 +112,22 @@ define display-cmd + KERNELRELEASE="" \ + SYSSRC=$(NVIDIA_HEADERS) \ + SYSOUT=$(NVIDIA_HEADERS) \ +- SYSSRCHOST1X=$(MAKEFILE_DIR)/nvidia-oot/drivers/gpu/host1x/include \ +- CC=$(CROSS_COMPILE)gcc \ +- LD=$(CROSS_COMPILE)ld.bfd \ +- AR=$(CROSS_COMPILE)ar \ +- CXX=$(CROSS_COMPILE)g++ \ +- OBJCOPY=$(CROSS_COMPILE)objcopy ++ SYSSRCHOST1X=$(MAKEFILE_DIR)/nvidia-oot/drivers/gpu/host1x/include + endef + + + nvidia-headers: nvidia-oot + mkdir -p $(NVIDIA_HEADERS) +- cp -LR $(KERNEL_HEADERS)/* $(NVIDIA_HEADERS) ++ cp -HR $(KERNEL_HEADERS)/* $(NVIDIA_HEADERS) ++ chmod -R u+w $(NVIDIA_HEADERS) + if [ "$(KERNEL_HEADERS)" != "$(KERNEL_OUTPUT)" ] ; then \ +- cp -LR $(KERNEL_OUTPUT)/include/* $(NVIDIA_HEADERS)/include/ ; \ +- cp -LR $(KERNEL_OUTPUT)/arch/arm64/include/* $(NVIDIA_HEADERS)/arch/arm64/include/ ; \ +- cp -LR $(KERNEL_OUTPUT)/scripts/* $(NVIDIA_HEADERS)/scripts/ ; \ ++ cp -HR $(KERNEL_OUTPUT)/include/* $(NVIDIA_HEADERS)/include/ ; \ ++ cp -HR $(KERNEL_OUTPUT)/arch/arm64/include/* $(NVIDIA_HEADERS)/arch/arm64/include/ ; \ ++ cp -HR $(KERNEL_OUTPUT)/scripts/* $(NVIDIA_HEADERS)/scripts/ ; \ + cp $(KERNEL_OUTPUT)/System.map $(NVIDIA_HEADERS)/ || true ; \ + fi +- cp -LR $(MAKEFILE_DIR)/nvidia-oot/include/* $(NVIDIA_HEADERS)/include/ ++ chmod -R u+w $(NVIDIA_HEADERS) ++ cp -HR $(MAKEFILE_DIR)/nvidia-oot/include/* $(NVIDIA_HEADERS)/include/ + cat $(KERNEL_OUTPUT)/Module.symvers $(MAKEFILE_DIR)/nvidia-oot/Module.symvers > \ + $(NVIDIA_HEADERS)/Module.symvers + diff --git a/pkgs/kernels/r36/default.nix b/pkgs/kernels/r36/default.nix new file mode 100644 index 00000000..02fb0f77 --- /dev/null +++ b/pkgs/kernels/r36/default.nix @@ -0,0 +1,123 @@ +{ applyPatches +, lib +, fetchFromGitHub +, l4t-xusb-firmware +, realtime ? false +, kernelPatches ? [ ] +, structuredExtraConfig ? { } +, argsOverride ? { } +, buildLinux +, gitRepos +, ... +}@args: +buildLinux (args // { + # See Makefile in kernel source root for VERSION/PATCHLEVEL/SUBLEVEL. + version = "5.15.148"; + extraMeta.branch = "5.15"; + + defconfig = "defconfig"; + + # https://github.com/NixOS/nixpkgs/pull/366004 + # introduced a breaking change that if a module is declared but it is not being used it will fail + # if you try to suppress each of he errors e.g. + # REISERFS_FS_SECURITY = lib.mkForce unset; within structuredExtraConfig + # that list runs to a long 100+ modules so we go back to the previous default and ignore them + ignoreConfigErrors = true; + + # disabling the dependency on the common-config would seem appropriate as we define our own defconfig + # however, it seems that some of the settings for e.g. fw loading are only made available there. + # TODO: a future task could be to set this, disable ignoreConfigErrors and add the needed modules to the + # structuredExtraConfig below. + #enableCommonConfig = false; + + # Using applyPatches here since it's not obvious how to append an extra + # postPatch. This is not very efficient. + src = gitRepos."kernel/kernel-jammy-src"; + autoModules = false; + features = { }; # TODO: Why is this needed in nixpkgs master (but not NixOS 22.05)? + + kernelPatches = [ + { + name = "ipu: Depend on x86"; + patch = ./0001-ipu-Depend-on-x86.patch; + } + ] ++ kernelPatches; + + structuredExtraConfig = with lib.kernel; { + # stage-1 links /lib/firmware to the /nix/store path in the initramfs. + # However, since it's builtin and not a module, that's too late, since + # the kernel will have already tried loading! + EXTRA_FIRMWARE_DIR = freeform "${l4t-xusb-firmware}/lib/firmware"; + + # Override the default CMA_SIZE_MBYTES=32M setting in common-config.nix with the default from tegra_defconfig + # Otherwise, nvidia's driver craps out + CMA_SIZE_MBYTES = lib.mkForce (freeform "64"); + + ### So nat.service and firewall work ### + NF_TABLES = module; # This one should probably be in common-config.nix + # this NFT_NAT is not actually being set. when build with enableCommonConfig = false; + # and not ignoreConfigErrors = true; it will fail with error about unused option + # unused means that it wanted to set it as a module, but make oldconfig didn't ask it about that option, + # so it didn't get a chance to set it. + NFT_NAT = module; + NFT_MASQ = module; + NFT_REJECT = module; + NFT_COMPAT = module; + NFT_LOG = module; + NFT_COUNTER = module; + + # search for "ip46tables" in nixpkgs and find all the -m options. + # Enable the corresponding Kconfigs + # TODO: nixpkgs should turn these on themselves. + NETFILTER_XT_MATCH_PKTTYPE = module; + NETFILTER_XT_MATCH_COMMENT = module; + NETFILTER_XT_MATCH_CONNTRACK = module; + NETFILTER_XT_MATCH_LIMIT = module; + NETFILTER_XT_MATCH_MARK = module; + NETFILTER_XT_MATCH_MULTIPORT = module; + + IP_NF_MATCH_RPFILTER = module; + + # IPv6 is enabled by default and without some of these `firewall.service` will explode. + IP6_NF_MATCH_AH = module; + IP6_NF_MATCH_EUI64 = module; + IP6_NF_MATCH_FRAG = module; + IP6_NF_MATCH_OPTS = module; + IP6_NF_MATCH_HL = module; + IP6_NF_MATCH_IPV6HEADER = module; + IP6_NF_MATCH_MH = module; + IP6_NF_MATCH_RPFILTER = module; + IP6_NF_MATCH_RT = module; + IP6_NF_MATCH_SRH = module; + + # Needed since mdadm stuff is currently unconditionally included in the initrd + # This will hopefully get changed, see: https://github.com/NixOS/nixpkgs/pull/183314 + MD_LINEAR = module; + MD_RAID0 = module; + MD_RAID1 = module; + MD_RAID10 = module; + MD_RAID456 = module; + + # Needed for booting from USB + USB_UAS = module; + + FW_LOADER_COMPRESS_XZ = yes; + FW_LOADER_COMPRESS_ZSTD = yes; + + # Restore default LSM from security/Kconfig. Undoes Nvidia downstream changes. + LSM = freeform "landlock,lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf"; + } // lib.optionalAttrs realtime { + PREEMPT_VOLUNTARY = lib.mkForce no; # Disable the one set in common-config.nix + # These are the options enabled/disabled by source/generic_rt_build.sh (this file comes after source/source_sync.sh) + PREEMPT_RT = yes; + DEBUG_PREEMPT = no; + KVM = no; + EMBEDDED = yes; + NAMESPACES = yes; + CPU_IDLE_TEGRA18X = no; + CPU_FREQ_GOV_INTERACTIVE = no; + CPU_FREQ_TIMES = no; + FAIR_GROUP_SCHED = no; + } // structuredExtraConfig; + +} // argsOverride) diff --git a/pkgs/kernels/r36/devicetree.nix b/pkgs/kernels/r36/devicetree.nix new file mode 100644 index 00000000..4f75ee27 --- /dev/null +++ b/pkgs/kernels/r36/devicetree.nix @@ -0,0 +1,53 @@ +{ bspSrc +, gitRepos +, kernel +, l4tMajorMinorPatchVersion +, lib +, runCommand +, stdenv +, buildPackages +, ... +}: +let + l4t-devicetree-sources = runCommand "l4t-devicetree-sources" { } + (lib.strings.concatStrings + ([ "mkdir -p $out ; cp ${bspSrc}/source/Makefile $out/Makefile ;" ] ++ + lib.lists.forEach + [ "hardware/nvidia/t23x/nv-public" "hardware/nvidia/tegra/nv-public" "kernel-devicetree" ] + ( + project: + '' + mkdir -p "$out/${project}" + cp --no-preserve=all -vr "${lib.attrsets.attrByPath [project] 0 gitRepos}"/. "$out/${project}" + '' + ))); +in +stdenv.mkDerivation (finalAttrs: { + pname = "l4t-devicetree"; + version = "${l4tMajorMinorPatchVersion}"; + src = l4t-devicetree-sources; + + inherit kernel; + + nativeBuildInputs = finalAttrs.kernel.moduleBuildDependencies; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + # See bspSrc/source/Makefile + makeFlags = [ + "KERNEL_HEADERS=${finalAttrs.kernel.dev}/lib/modules/${finalAttrs.kernel.modDirVersion}/source" + "KERNEL_OUTPUT=${finalAttrs.kernel.dev}/lib/modules/${finalAttrs.kernel.modDirVersion}/build" + ]; + + buildFlags = "dtbs"; + + installPhase = '' + runHook preInstall + + mkdir -p "$out"/ + # See kernel-devicetree/generic-dts/Makefile + # The dtbs are installed to kernel-devicetree/generic-dts/dtbs + install -Dm644 kernel-devicetree/generic-dts/dtbs/* "$out/" + + runHook postInstall + ''; +}) diff --git a/pkgs/kernels/r36/oot-modules.nix b/pkgs/kernels/r36/oot-modules.nix new file mode 100644 index 00000000..a90f7846 --- /dev/null +++ b/pkgs/kernels/r36/oot-modules.nix @@ -0,0 +1,94 @@ +{ applyPatches +, bspSrc +, buildPackages +, gitRepos +, kernel +, l4tMajorMinorPatchVersion +, lib +, runCommand +, stdenv +, ... +}: +let + patchedBsp = applyPatches { + name = "patchedBsp"; + src = bspSrc; + patches = [ + ./Makefile.diff + ]; + }; + + mkCopyProjectCommand = project: '' + mkdir -p "$out/${project.name}" + cp --no-preserve=all -vr "${project}"/. "$out/${project.name}" + ''; + + l4t-oot-projects = [ + (gitRepos.hwpm.overrideAttrs { name = "hwpm"; }) + (applyPatches { + name = "nvidia-oot"; + src = gitRepos.nvidia-oot; + patches = [ + ./0001-rtl8822ce-Fix-Werror-address.patch + ./0002-sound-Fix-include-path-for-tegra-virt-alt-include.patch + ]; + }) + (gitRepos.nvgpu.overrideAttrs { name = "nvgpu"; }) + (applyPatches { + name = "nvdisplay"; + src = gitRepos.nvdisplay; + patches = [ + ./0001-nvidia-drm-Guard-nv_dev-in-nv_drm_suspend_resume.patch + ./0002-ANDURIL-Add-some-missing-BASE_CFLAGS.patch + ./0003-ANDURIL-Update-drm_gem_object_vmap_has_map_arg-test.patch + ]; + }) + (applyPatches { + name = "nvethernetrm"; + src = gitRepos.nvethernetrm; + # Some directories in the git repo are RO. + # This works for L4T b/c they use different output directory + postPatch = '' + chmod -R u+w osi + ''; + }) + ]; + + l4t-oot-modules-sources = runCommand "l4t-oot-sources" { } + ( + # Copy the Makefile + '' + mkdir -p "$out" + cp "${patchedBsp}/source/Makefile" "$out/Makefile" + '' + # copy the projects + + lib.strings.concatMapStringsSep "\n" mkCopyProjectCommand l4t-oot-projects + # See bspSrc/source/source_sync.sh symlink at end of file + + '' + ln -vsrf "$out/nvethernetrm" "$out/nvidia-oot/drivers/net/ethernet/nvidia/nvethernet/nvethernetrm" + '' + ); +in +stdenv.mkDerivation (finalAttrs: { + pname = "l4t-oot-modules"; + version = "${l4tMajorMinorPatchVersion}"; + src = l4t-oot-modules-sources; + + inherit kernel; + + nativeBuildInputs = finalAttrs.kernel.moduleBuildDependencies; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + # See bspSrc/source/Makefile + makeFlags = finalAttrs.kernel.makeFlags ++ [ + "KERNEL_HEADERS=${finalAttrs.kernel.dev}/lib/modules/${finalAttrs.kernel.modDirVersion}/source" + "KERNEL_OUTPUT=${finalAttrs.kernel.dev}/lib/modules/${finalAttrs.kernel.modDirVersion}/build" + "INSTALL_MOD_PATH=$(out)" + ]; + + # # GCC 14.2 seems confused about DRM_MODESET_LOCK_ALL_BEGIN/DRM_MODESET_LOCK_ALL_END in nvdisplay/kernel-open/nvidia-drm/nvidia-drm-drv.c:1344 + # extraMakeFlags = [ "KCFLAGS=-Wno-error=unused-label" ]; + + buildFlags = [ "modules" ]; + installTargets = [ "modules_install" ]; +}) diff --git a/pkgs/l4t/default.nix b/pkgs/l4t/default.nix index c183768d..2c4ec4d5 100644 --- a/pkgs/l4t/default.nix +++ b/pkgs/l4t/default.nix @@ -21,7 +21,10 @@ , bc , debs , l4tMajorMinorPatchVersion +, l4tAtLeast +, l4tOlder , cudaPackages +, cudaDriverMajorMinorVersion }: let # The version currently in nixpkgs 23.11 and master 0.15 is pretty old and @@ -76,15 +79,26 @@ let fi if [[ -d lib/aarch64-linux-gnu ]]; then - mv lib/aarch64-linux-gnu/* lib + if [[ -n "$(ls lib/aarch64-linux-gnu)" ]] ; then + mv -v -t lib lib/aarch64-linux-gnu/* + fi rm -rf lib/aarch64-linux-gnu fi if [[ -d lib/tegra ]]; then - mv lib/tegra/* lib + if [[ -n "$(ls lib/tegra)" ]] ; then + mv -v -t lib lib/tegra/* + fi rm -rf lib/tegra fi + if [[ -d lib/nvidia ]]; then + if [[ -n "$(ls lib/nvidia)" ]] ; then + mv -v -t lib lib/nvidia/* + fi + rm -rf lib/nvidia + fi + ${postPatch} rm -f lib/ld.so.conf @@ -167,10 +181,11 @@ let # TODO: Replace this with appendRunpaths which is available in 23.11 preFixup = '' postFixupHooks+=(' + # ls to filter out libnvidia-vulkan-producer.so, which is only present in r35 patchelf --add-rpath ${lib.makeLibraryPath [ libglvnd ]} \ $out/lib/libEGL_nvidia.so.0 \ $out/lib/libGLX_nvidia.so.0 \ - $out/lib/libnvidia-vulkan-producer.so + $(ls $out/lib/libnvidia-vulkan-producer.so) patchelf --add-rpath ${lib.makeLibraryPath (with xorg; [ libX11 libXext libxcb ])} \ $out/lib/libGLX_nvidia.so.0 \ @@ -189,6 +204,10 @@ let buildInputs = [ l4t-core ]; postPatch = + let + version = lib.defaultTo l4tMajorMinorPatchVersion cudaDriverMajorMinorVersion; + folder = if cudaDriverMajorMinorVersion == null then "tegra" else "nvidia"; + in '' # Additional libcuda symlinks ln -sf libcuda.so.1.1 lib/libcuda.so.1 @@ -202,9 +221,9 @@ let # well as libnvidia-ptxjitcompiler in the same package. meta-tegra does a # similar thing where they pull libnvidia-ptxjitcompiler out of # l4t-3d-core and place it in the same package as libcuda. - dpkg --fsys-tarfile ${debs.t234.nvidia-l4t-3d-core.src} | tar -xO ./usr/lib/aarch64-linux-gnu/tegra/libnvidia-ptxjitcompiler.so.${l4tMajorMinorPatchVersion} > lib/libnvidia-ptxjitcompiler.so.${l4tMajorMinorPatchVersion} - ln -sf libnvidia-ptxjitcompiler.so.${l4tMajorMinorPatchVersion} lib/libnvidia-ptxjitcompiler.so.1 - ln -sf libnvidia-ptxjitcompiler.so.${l4tMajorMinorPatchVersion} lib/libnvidia-ptxjitcompiler.so + dpkg --fsys-tarfile ${debs.t234.nvidia-l4t-3d-core.src} | tar -xO ./usr/lib/aarch64-linux-gnu/${folder}/libnvidia-ptxjitcompiler.so.${version} > lib/libnvidia-ptxjitcompiler.so.${version} + ln -sf libnvidia-ptxjitcompiler.so.${version} lib/libnvidia-ptxjitcompiler.so.1 + ln -sf libnvidia-ptxjitcompiler.so.${version} lib/libnvidia-ptxjitcompiler.so ''; # libcuda.so actually depends on libnvcucompat.so at runtime (probably @@ -214,16 +233,33 @@ let ''; }; - l4t-cupva = buildFromDeb { - name = "cupva"; - src = debs.common."cupva-2.3-l4t".src; - version = debs.common."cupva-2.3-l4t".version; - buildInputs = [ stdenv.cc.cc.lib l4t-cuda l4t-nvsci l4t-pva ]; - postPatch = '' - mkdir -p lib - mv opt/nvidia/cupva-2.3/lib/aarch64-linux-gnu/* lib/ - rm -rf opt - ''; + l4t-cupva = buildFromDeb + ( + let + cupvaMajorMinorVersion = { + "35" = "2.3"; + "36" = "2.5"; + }.${lib.versions.major l4tMajorMinorPatchVersion}; + in + { + name = "cupva"; + src = debs.common."cupva-${cupvaMajorMinorVersion}-l4t".src; + version = debs.common."cupva-${cupvaMajorMinorVersion}-l4t".version; + buildInputs = [ stdenv.cc.cc.lib l4t-cuda l4t-nvsci l4t-pva ]; + postPatch = '' + mkdir -p lib + mv opt/nvidia/cupva-${cupvaMajorMinorVersion}/lib/aarch64-linux-gnu/* lib/ + rm -rf opt + ''; + } + ); + + # Only for L4T r36+ + l4t-dla-compiler = buildFromDeb { + name = "nvidia-l4t-dla-compiler"; + src = debs.common."nvidia-l4t-dla-compiler".src; + version = debs.common."nvidia-l4t-dla-compiler".version; + buildInputs = [ l4t-cuda ]; }; # TODO: Make nvwifibt systemd scripts work @@ -284,7 +320,7 @@ let ''; buildInputs = [ l4t-core l4t-cuda l4t-nvsci pango alsa-lib ] ++ (with gst_all_1; [ gstreamer gst-plugins-base ]); - patches = [ + patches = lib.optionals (l4tOlder "36") [ (fetchpatch { url = "https://raw.githubusercontent.com/OE4T/meta-tegra/af0a93313c13e9eac4e80082d8a8e8ac5f7ad6e8/recipes-multimedia/argus/files/0005-Remove-DO-NOT-USE-declarations-from-v4l2_nv_extensio.patch"; sha256 = "sha256-meHF7uS2TFMoh0qGCmjGzR8hfhE0cCwSP2T3ufzwM0s="; @@ -377,7 +413,8 @@ let buildInputs = [ stdenv.cc.cc.lib l4t-core ]; postPatch = '' # Remove a utility that bring in too many libraries - rm bin/nv_macsec_wpa_supplicant + # bin/ on L4T r35; sbin/ on L4T r36 + rm -f bin/nv_macsec_wpa_supplicant sbin/nv_wpa_supplicant_wifi sbin/wpa_supplicant # This just contains a symlink to a binary already in /bin (nvcapture-status-decoder) rm -rf opt @@ -421,4 +458,7 @@ in l4t-tools l4t-wayland l4t-xusb-firmware; +} // lib.optionalAttrs (l4tAtLeast "36") { + inherit + l4t-dla-compiler; } diff --git a/pkgs/optee/default.nix b/pkgs/optee/default.nix index d0895544..3228b33b 100644 --- a/pkgs/optee/default.nix +++ b/pkgs/optee/default.nix @@ -1,4 +1,5 @@ { l4tMajorMinorPatchVersion +, l4tAtLeast , bspSrc , buildPackages , lib @@ -21,16 +22,17 @@ let pname = "optee_client"; version = l4tMajorMinorPatchVersion; src = nvopteeSrc; - patches = [ - ./0001-Don-t-prepend-foo-bar-baz-to-TEEC_LOAD_PATH.patch - (fetchpatch { - name = "tee-supplicant-Allow-for-TA-load-path-to-be-specified-at-runtime.patch"; - url = "https://github.com/OP-TEE/optee_client/commit/f3845d8bee3645eedfcc494be4db034c3c69e9ab.patch"; - stripLen = 1; - extraPrefix = "optee/optee_client/"; - hash = "sha256-XjFpMbyXy74sqnc8l+EgTaPXqwwHcvni1Z68ShokTGc="; - }) - ]; + patches = + if l4tAtLeast "36" then [ ] else [ + ./0001-Don-t-prepend-foo-bar-baz-to-TEEC_LOAD_PATH.patch + (fetchpatch { + name = "tee-supplicant-Allow-for-TA-load-path-to-be-specified-at-runtime.patch"; + url = "https://github.com/OP-TEE/optee_client/commit/f3845d8bee3645eedfcc494be4db034c3c69e9ab.patch"; + stripLen = 1; + extraPrefix = "optee/optee_client/"; + hash = "sha256-XjFpMbyXy74sqnc8l+EgTaPXqwwHcvni1Z68ShokTGc="; + }) + ]; nativeBuildInputs = [ pkg-config ]; buildInputs = [ libuuid ]; enableParallelBuilding = true; @@ -204,6 +206,9 @@ let # `warning: /build/source/build/rk3399/release/bl31/bl31.elf has a LOAD segment with RWX permissions` # See also: https://developer.trustedfirmware.org/T996 "LDFLAGS=-no-warn-rwx-segments" + ] ++ lib.optionals (l4tAtLeast "36" && socType == "t234") [ + "BRANCH_PROTECTION=3" + "ARM_ARCH_MINOR=3" ]; enableParallelBuilding = true; diff --git a/pkgs/samples/0001-cupti-samples-Explicitly-ignore-fread-return.patch b/pkgs/samples/0001-cupti-samples-Explicitly-ignore-fread-return.patch new file mode 100644 index 00000000..74c731e2 --- /dev/null +++ b/pkgs/samples/0001-cupti-samples-Explicitly-ignore-fread-return.patch @@ -0,0 +1,28 @@ +From c9c6455af16a0d325fafc48c20d17f14796576d8 Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Tue, 29 Apr 2025 16:36:27 -0700 +Subject: [PATCH 1/2] cupti-samples: Explicitly ignore fread() return + +Suppresses -Wunused-result. +--- + extensions/include/c_util/FileOp.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/extensions/include/c_util/FileOp.h b/extensions/include/c_util/FileOp.h +index ae0bf76..0e187c6 100644 +--- a/extensions/include/c_util/FileOp.h ++++ b/extensions/include/c_util/FileOp.h +@@ -44,7 +44,7 @@ bool ReadBinaryFile(const char* pFileName, std::vector& image) + } + + image.resize((size_t)fileLength); +- fread(&image[0], 1, image.size(), fp); ++ (void)fread(&image[0], 1, image.size(), fp); + fclose(fp); + return true; +-} +\ No newline at end of file ++} +-- +2.49.0 + diff --git a/pkgs/samples/0002-cupti_samples-Fix-include-path-search-for-common-hea.patch b/pkgs/samples/0002-cupti_samples-Fix-include-path-search-for-common-hea.patch new file mode 100644 index 00000000..9b6365cc --- /dev/null +++ b/pkgs/samples/0002-cupti_samples-Fix-include-path-search-for-common-hea.patch @@ -0,0 +1,39 @@ +From e0b4eac5ccf0f85fa4b6cdd2793c9a7e3efac26b Mon Sep 17 00:00:00 2001 +From: Elliot Berman +Date: Tue, 29 Apr 2025 16:42:41 -0700 +Subject: [PATCH 2/2] cupti_samples: Fix include path search for common headers + +--- + pm_sampling/Makefile | 2 +- + sass_metrics/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pm_sampling/Makefile b/pm_sampling/Makefile +index 7b5a98d..fb8b2db 100644 +--- a/pm_sampling/Makefile ++++ b/pm_sampling/Makefile +@@ -9,7 +9,7 @@ endif + CUDA_INSTALL_PATH ?= ../../../.. + CUPTI_INSTALL_PATH ?= $(CUDA_INSTALL_PATH)/extras/CUPTI + NVCC := "$(CUDA_INSTALL_PATH)/bin/nvcc" +-INCLUDES := -I"$(CUDA_INSTALL_PATH)/include" -I$(CUPTI_INSTALL_PATH)/include -I$(CUPTI_INSTALL_PATH)/samples/common ++INCLUDES := -I"$(CUDA_INSTALL_PATH)/include" -I../../include -I../common + + ifeq ($(OS),Windows_NT) + LIB_PATH ?= $(CUPTI_INSTALL_PATH)\lib64 +diff --git a/sass_metrics/Makefile b/sass_metrics/Makefile +index ad37da3..d0be6e1 100644 +--- a/sass_metrics/Makefile ++++ b/sass_metrics/Makefile +@@ -9,7 +9,7 @@ endif + CUDA_INSTALL_PATH ?= ../../../.. + CUPTI_INSTALL_PATH ?= $(CUDA_INSTALL_PATH)/extras/CUPTI + NVCC := "$(CUDA_INSTALL_PATH)/bin/nvcc" +-INCLUDES := -I"$(CUDA_INSTALL_PATH)/include" -I"$(CUPTI_INSTALL_PATH)/include" -I"$(CUPTI_INSTALL_PATH)/samples/common" ++INCLUDES := -I"$(CUDA_INSTALL_PATH)/include" -I"../../include" -I"../common" + TARGET_ARCH ?= $(HOST_ARCH) + TARGET_OS ?= $(shell uname | tr A-Z a-z) + +-- +2.49.0 + diff --git a/pkgs/samples/combined-test.nix b/pkgs/samples/combined-test.nix index 82b4abc1..142b25df 100644 --- a/pkgs/samples/combined-test.nix +++ b/pkgs/samples/combined-test.nix @@ -3,7 +3,7 @@ , cupti-test , libnvinfer-test , multimedia-test -, vpi2-test +, vpi-test , writeShellApplication }: writeShellApplication { @@ -35,8 +35,8 @@ writeShellApplication { ${multimedia-test}/bin/multimedia-test echo "=====" - echo "Running VPI2 test" + echo "Running VPI test" echo "=====" - ${vpi2-test}/bin/vpi2-test + ${vpi-test}/bin/vpi-test ''; } diff --git a/pkgs/samples/cuda-samples.nix b/pkgs/samples/cuda-samples.nix index 1228b5eb..783090c2 100644 --- a/pkgs/samples/cuda-samples.nix +++ b/pkgs/samples/cuda-samples.nix @@ -8,6 +8,8 @@ , lib , pkg-config , stdenv +, cmake +, fetchFromGitHub }: let inherit (cudaPackages) @@ -16,56 +18,260 @@ let cudaMajorMinorVersion cudaVersionDashes flags + cuda_cccl + cuda_cudart + cuda_nvrtc + cuda_nvtx + cuda_profiler_api + cudaAtLeast + cudaOlder + libcublas + libcufft + libcurand + libcusolver + libcusparse + libnpp + libnvjpeg ; inherit (stdenv.hostPlatform) parsed; in -stdenv.mkDerivation { - __structuredAttrs = true; - strictDeps = true; - - pname = "cuda-samples"; - inherit (debs.common."cuda-samples-${cudaVersionDashes}") src version; - - unpackCmd = "dpkg -x $src source"; - sourceRoot = "source/usr/local/cuda-${cudaMajorMinorVersion}/samples"; - - nativeBuildInputs = [ autoAddDriverRunpath cuda_nvcc dpkg pkg-config ]; - buildInputs = [ cudatoolkit ]; - - # NOTE: ptxjit requires that we build for a single architecture, which we don't necessarily do. - postPatch = '' - substituteInPlace 0_Simple/matrixMul_nvrtc/Makefile \ - --replace-fail \ - '$(EXEC) cp "$(CUDA_PATH)/$(CUDA_INSTALL_TARGET_DIR)include/cooperative_groups.h" .' \ - '$(EXEC) cp "$(CUDA_PATH)/include/cooperative_groups.h" .' \ - --replace-fail \ - '$(EXEC) cp -r "$(CUDA_PATH)/$(CUDA_INSTALL_TARGET_DIR)include/cooperative_groups" .' \ - '$(EXEC) cp -r "$(CUDA_PATH)/include/cooperative_groups" .' - - substituteInPlace 6_Advanced/ptxjit/Makefile \ - --replace-fail \ - 'SAMPLE_ENABLED := 1' \ - 'SAMPLE_ENABLED := 0' - ''; - - makeFlags = [ - "CUDA_PATH=${cudatoolkit}" - "SMS=${lib.replaceStrings [ ";" ] [" "] flags.cmakeCudaArchitecturesString}" - # NOTE: CUDA_SEARCH_PATH is only ever used to find stubs. - # Some packages (like deviceQueryDrv) try to link against driver stubs and are not built if they are not found. - "CUDA_SEARCH_PATH=${cudatoolkit}/lib/stubs" - ]; - - enableParallelBuilding = true; - - installPhase = '' - runHook preInstall - - install -Dm755 -t $out/bin bin/${parsed.cpu.name}/${parsed.kernel.name}/release/* - - # *_nvrtc samples require your current working directory contains the corresponding .cu file - find -ipath "*_nvrtc/*.cu" -exec install -Dt $out/data {} \; - - runHook postInstall - ''; -} +if cudaOlder "12" then + stdenv.mkDerivation + { + __structuredAttrs = true; + strictDeps = true; + + pname = "cuda-samples"; + inherit (debs.common."cuda-samples-${cudaVersionDashes}") src version; + + unpackCmd = "dpkg -x $src source"; + sourceRoot = "source/usr/local/cuda-${cudaMajorMinorVersion}/samples"; + + nativeBuildInputs = [ autoAddDriverRunpath cuda_nvcc dpkg pkg-config ]; + buildInputs = [ cudatoolkit ]; + + # NOTE: ptxjit requires that we build for a single architecture, which we don't necessarily do. + postPatch = '' + substituteInPlace 0_Simple/matrixMul_nvrtc/Makefile \ + --replace-fail \ + '$(EXEC) cp "$(CUDA_PATH)/$(CUDA_INSTALL_TARGET_DIR)include/cooperative_groups.h" .' \ + '$(EXEC) cp "$(CUDA_PATH)/include/cooperative_groups.h" .' \ + --replace-fail \ + '$(EXEC) cp -r "$(CUDA_PATH)/$(CUDA_INSTALL_TARGET_DIR)include/cooperative_groups" .' \ + '$(EXEC) cp -r "$(CUDA_PATH)/include/cooperative_groups" .' + + substituteInPlace 6_Advanced/ptxjit/Makefile \ + --replace-fail \ + 'SAMPLE_ENABLED := 1' \ + 'SAMPLE_ENABLED := 0' + ''; + + makeFlags = [ + "CUDA_PATH=${cudatoolkit}" + "SMS=${lib.replaceStrings [ ";" ] [" "] flags.cmakeCudaArchitecturesString}" + # NOTE: CUDA_SEARCH_PATH is only ever used to find stubs. + # Some packages (like deviceQueryDrv) try to link against driver stubs and are not built if they are not found. + "CUDA_SEARCH_PATH=${cudatoolkit}/lib/stubs" + ]; + + enableParallelBuilding = true; + + installPhase = '' + runHook preInstall + + install -Dm755 -t $out/bin bin/${parsed.cpu.name}/${parsed.kernel.name}/release/* + + # *_nvrtc samples require your current working directory contains the corresponding .cu file + find -ipath "*_nvrtc/*.cu" -exec install -Dt $out/data {} \; + + runHook postInstall + ''; + } +else +# Copied from https://github.com/ConnorBaker/cuda-packages/blob/7731ebdf397c5ce123571abf2dc41ebac86237d3/pkgs/development/cuda-modules/packages/cuda-samples.nix + stdenv.mkDerivation (finalAttrs: { + __structuredAttrs = true; + strictDeps = true; + + pname = "cuda-samples"; + version = "12.8"; + + # We should be able to use samples from the latest version of CUDA + # on most of the CUDA package sets we have. + # Plus, 12.8 and later are rewritten to use CMake which makes it much, much easier to build. + src = fetchFromGitHub { + owner = "NVIDIA"; + repo = "cuda-samples"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Ba0Fi0v/sQ+1iJ4mslgyIAE+oK5KO0lMoTQCC91vpiA="; + }; + + prePatch = + # https://github.com/NVIDIA/cuda-samples/issues/333 + '' + echo "removing sample 0_Introduction/UnifiedMemoryStreams which requires OpenMP support for CUDA" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/0_Introduction/CMakeLists.txt" \ + --replace-fail \ + 'add_subdirectory(UnifiedMemoryStreams)' \ + '# add_subdirectory(UnifiedMemoryStreams)' + '' + # This sample tries to use a relative path, which doesn't work for our splayed installation. + + '' + echo "patching sample 0_Introduction/matrixMul_nvrtc" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/0_Introduction/matrixMul_nvrtc/CMakeLists.txt" \ + --replace-fail \ + "\''${CUDAToolkit_BIN_DIR}/../include/cooperative_groups" \ + "${lib.getOutput "include" cuda_cudart}/include/cooperative_groups" \ + --replace-fail \ + "\''${CUDAToolkit_BIN_DIR}/../include/nv" \ + "${lib.getOutput "include" cuda_cccl}/include/nv" \ + --replace-fail \ + "\''${CUDAToolkit_BIN_DIR}/../include/cuda" \ + "${lib.getOutput "include" cuda_cccl}/include/cuda" + '' + # These three samples give undefined references, like + # nvlink error : Undefined reference to '__cudaCDP2Free' in 'CMakeFiles/cdpBezierTessellation.dir/BezierLineCDP.cu.o' + # nvlink error : Undefined reference to '__cudaCDP2Malloc' in 'CMakeFiles/cdpBezierTessellation.dir/BezierLineCDP.cu.o' + # nvlink error : Undefined reference to '__cudaCDP2GetParameterBufferV2' in 'CMakeFiles/cdpBezierTessellation.dir/BezierLineCDP.cu.o' + # nvlink error : Undefined reference to '__cudaCDP2LaunchDeviceV2' in 'CMakeFiles/cdpBezierTessellation.dir/BezierLineCDP.cu.o' + + '' + for sample in cdp{AdvancedQuicksort,BezierTessellation,Quadtree,SimplePrint,SimpleQuicksort}; do + echo "removing sample 3_CUDA_Features/$sample which fails to link" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/3_CUDA_Features/CMakeLists.txt" \ + --replace-fail \ + "add_subdirectory($sample)" \ + "# add_subdirectory($sample)" + done + unset -v sample + '' + + lib.optionalString (cudaOlder "12.4") '' + echo "removing sample 3_CUDA_Features/graphConditionalNodes which requires at least CUDA 12.4" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/3_CUDA_Features/CMakeLists.txt" \ + --replace-fail \ + "add_subdirectory(graphConditionalNodes)" \ + "# add_subdirectory(graphConditionalNodes)" + '' + # For some reason this sample requires a static library, which we don't propagate by default due to size. + + '' + echo "patching sample 4_CUDA_Libraries/simpleCUFFT_callback to use dynamic library" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/4_CUDA_Libraries/simpleCUFFT_callback/CMakeLists.txt" \ + --replace-fail \ + 'CUDA::cufft_static' \ + 'CUDA::cufft' + '' + # Patch to use the correct path to libnvJitLink.so, or disable the sample if older than 12.4. + + lib.optionalString (cudaOlder "12.4") '' + echo "removing sample 4_CUDA_Libraries/jitLto which requires at least CUDA 12.4" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/4_CUDA_Libraries/CMakeLists.txt" \ + --replace-fail \ + "add_subdirectory(jitLto)" \ + "# add_subdirectory(jitLto)" + '' + + lib.optionalString (cudaAtLeast "12.4") '' + echo "patching sample 4_CUDA_Libraries/jitLto to use correct path to libnvJitLink.so" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/4_CUDA_Libraries/jitLto/CMakeLists.txt" \ + --replace-fail \ + "\''${CUDAToolkit_LIBRARY_DIR}/libnvJitLink.so" \ + "${lib.getLib cudaPackages.libnvjitlink}/lib/libnvJitLink.so" + '' + # /build/NVIDIA-cuda-samples-v12.8/Samples/4_CUDA_Libraries/watershedSegmentationNPP/watershedSegmentationNPP.cpp:272:80: error: cannot convert 'size_t*' {aka 'long unsigned int*'} to 'int*' + # 272 | nppStatus = nppiSegmentWatershedGetBufferSize_8u_C1R(oSizeROI[nImage], &aSegmentationScratchBufferSize[nImage]); + # | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + # | | + # | size_t* {aka long unsigned int*} + + lib.optionalString (cudaOlder "12.8") '' + echo "removing sample 4_CUDA_Libraries/watershedSegmentationNPP which requires at least CUDA 12.8" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/4_CUDA_Libraries/CMakeLists.txt" \ + --replace-fail \ + "add_subdirectory(watershedSegmentationNPP)" \ + "# add_subdirectory(watershedSegmentationNPP)" + '' + # NVVM samples require a specific build of LLVM, which is a hassle. + + '' + echo "removing samples 7_libNVVM which require a specific build of LLVM" + substituteInPlace \ + "$NIX_BUILD_TOP/$sourceRoot/Samples/CMakeLists.txt" \ + --replace-fail \ + 'add_subdirectory(7_libNVVM)' \ + '# add_subdirectory(7_libNVVM)' + '' + # Don't use hard-coded CUDA architectures + + '' + echo "patching CMakeLists.txt to use provided CUDA architectures" + local path="" + while IFS= read -r -d $'\0' path; do + echo "removing CMAKE_CUDA_ARCHITECTURES declaration from $path" + substituteInPlace \ + "$path" \ + --replace-fail \ + 'set(CMAKE_CUDA_ARCHITECTURES' \ + '# set(CMAKE_CUDA_ARCHITECTURES' + done < <(grep --files-with-matches --null "set(CMAKE_CUDA_ARCHITECTURES" --recursive "$NIX_BUILD_TOP/$sourceRoot") + unset -v path + ''; + + nativeBuildInputs = [ + # TODO(connorbaker): remove this if we want to support CUDA 12.8 or anything using cuda_compat + autoAddDriverRunpath + cmake + cuda_nvcc + ]; + + buildInputs = [ + cuda_cccl + cuda_cudart + cuda_nvrtc + cuda_nvtx + cuda_profiler_api + libcublas + libcufft + libcurand + libcusolver + libcusparse + libnpp + cudaPackages.libnvjitlink + libnvjpeg + (lib.getOutput "stubs" cuda_cudart) + ]; + + cmakeFlags = [ + (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" flags.cmakeCudaArchitecturesString) + (lib.cmakeBool "BUILD_TEGRA" true) + ]; + + # TODO(@connorbaker): + # For some reason, using the combined find command doesn't delete directories: + # find "$PWD/Samples" \ + # \( -type d -name CMakeFiles \) \ + # -o \( -type f -name cmake_install.cmake \) \ + # -o \( -type f -name Makefile \) \ + # -exec rm -rf {} + + installPhase = '' + runHook preInstall + + pushd "$NIX_BUILD_TOP/$sourceRoot/''${cmakeBuildDir:?}" >/dev/null + + echo "deleting CMake related files" + + find "$PWD/Samples" -type d -name CMakeFiles -exec rm -rf {} + + find "$PWD/Samples" -type f -name cmake_install.cmake -exec rm -rf {} + + find "$PWD/Samples" -type f -name Makefile -exec rm -rf {} + + + echo "copying $PWD/Samples to $out/" + mkdir -p "$out" + cp -rv "$PWD/Samples"/* "$out/" + + popd >/dev/null + + runHook postInstall + ''; + }) + diff --git a/pkgs/samples/cuda-test.nix b/pkgs/samples/cuda-test.nix index 7dd7a81e..ade9836b 100644 --- a/pkgs/samples/cuda-test.nix +++ b/pkgs/samples/cuda-test.nix @@ -6,11 +6,11 @@ writeShellApplication { deviceQuery deviceQueryDrv bandwidthTest clock clock_nvrtc matrixMul matrixMulCUBLAS matrixMulDrv matrixMulDynlinkJIT ) - # clock_nvrtc expects .cu files under $PWD/data - cd ${cuda-samples}/bin for binary in "''${BINARIES[@]}"; do - echo " * Running $binary" - ./"$binary" + real="$(find ${cuda-samples} -type f -name "$binary")" + echo " * Running $real" + # clock_nvrtc expects .cu files under $PWD/data + pushd "$(dirname "$real")" && "$real" && popd echo echo done diff --git a/pkgs/samples/cudnn-samples.nix b/pkgs/samples/cudnn-samples.nix index 654e3264..fd6980bc 100644 --- a/pkgs/samples/cudnn-samples.nix +++ b/pkgs/samples/cudnn-samples.nix @@ -10,18 +10,24 @@ let cuda_nvcc cudatoolkit cudnn + cudaMajorVersion flags ; + + cudnnMajorVersion = { + "11" = "8"; + "12" = "9"; + }.${cudaMajorVersion}; in stdenv.mkDerivation { __structuredAttrs = true; strictDeps = true; pname = "cudnn-samples"; - inherit (debs.common.libcudnn8-samples) src version; + inherit (debs.common."libcudnn${cudnnMajorVersion}-samples") src version; unpackCmd = "dpkg -x $src source"; - sourceRoot = "source/usr/src/cudnn_samples_v8"; + sourceRoot = "source/usr/src/cudnn_samples_v${cudnnMajorVersion}"; nativeBuildInputs = [ autoAddDriverRunpath cuda_nvcc dpkg ]; buildInputs = [ cudatoolkit cudnn ]; @@ -40,6 +46,8 @@ stdenv.mkDerivation { # Sample directories which we won't build. ignoredSampleDirs = { + cmake = 1; + common = 1; # `mnistCUDNN` requires freeimage which is marked vulnerable in upstream as of 24.05 mnistCUDNN = 1; }; diff --git a/pkgs/samples/cupti-samples.nix b/pkgs/samples/cupti-samples.nix index 600e0bba..6f5557c0 100644 --- a/pkgs/samples/cupti-samples.nix +++ b/pkgs/samples/cupti-samples.nix @@ -10,6 +10,7 @@ let inherit (cudaPackages) cuda_nvcc cudatoolkit + cudaAtLeast cudaMajorMinorVersion cudaVersionDashes flags @@ -40,8 +41,14 @@ stdenv.mkDerivation { enableParallelBuilding = true; + patches = lib.optionals (cudaAtLeast "12") [ + ./0001-cupti-samples-Explicitly-ignore-fread-return.patch + ./0002-cupti_samples-Fix-include-path-search-for-common-hea.patch + ]; + # Sample directories which we won't build. ignoredSampleDirs = { + common = 1; extensions = 1; }; @@ -87,8 +94,12 @@ stdenv.mkDerivation { # Skip directories that don't exist or are ignored [[ ! -d $sampleDir || ''${ignoredSampleDirs["$sampleDir"]-0} -eq 1 ]] && continue # Install the sample, using the special name if it exists and the directory name if it doesn't. - install -Dm755 -t "$out/bin" \ - "$sampleDir/''${sampleExes["$sampleDir"]:-"$sampleDir"}" + file="$sampleDir/''${sampleExes["$sampleDir"]:-"$sampleDir"}" + if [[ -x $file ]] ; then + install -Dm755 -t "$out/bin" "$file" + elif [[ -e $file.so ]] ; then + install -Dm555 -t "$out/lib" "$file" + fi done unset -v sampleDir diff --git a/pkgs/samples/libnvinfer-samples.nix b/pkgs/samples/libnvinfer-samples.nix index b93be535..1c248bd0 100644 --- a/pkgs/samples/libnvinfer-samples.nix +++ b/pkgs/samples/libnvinfer-samples.nix @@ -13,6 +13,7 @@ let cuda_nvcc cuda_profiler_api cudatoolkit + cudaOlder cudnn flags libcublas @@ -32,7 +33,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ autoAddDriverRunpath cuda_nvcc dpkg ]; buildInputs = [ cuda_cudart cuda_profiler_api cudnn libcublas tensorrt ]; - postPatch = '' + postPatch = lib.optionalString (cudaOlder "12") '' substituteInPlace Makefile.config \ --replace-fail \ '-I"$(CUDNN_INSTALL_DIR)/include"' \ diff --git a/pkgs/samples/multimedia-samples.nix b/pkgs/samples/multimedia-samples.nix index c61a4484..a306d969 100644 --- a/pkgs/samples/multimedia-samples.nix +++ b/pkgs/samples/multimedia-samples.nix @@ -8,6 +8,7 @@ , l4t-camera , l4t-cuda , l4t-multimedia +, l4tOlder , lib , libdrm , libglvnd @@ -63,10 +64,17 @@ stdenv.mkDerivation { # TODO: Unify this with headers in l4t-jetson-multimedia-api patches = [ - (fetchurl { - url = "https://raw.githubusercontent.com/OE4T/meta-tegra/af0a93313c13e9eac4e80082d8a8e8ac5f7ad6e8/recipes-multimedia/argus/files/0005-Remove-DO-NOT-USE-declarations-from-v4l2_nv_extensio.patch"; - sha256 = "sha256-IJ1teGEUxYDEPYSvYZbqdmUYg9tOORN7WGYpDaUUnHY="; - }) + (if (l4tOlder "36") then + (fetchurl { + url = "https://raw.githubusercontent.com/OE4T/meta-tegra/af0a93313c13e9eac4e80082d8a8e8ac5f7ad6e8/recipes-multimedia/argus/files/0005-Remove-DO-NOT-USE-declarations-from-v4l2_nv_extensio.patch"; + sha256 = "sha256-IJ1teGEUxYDEPYSvYZbqdmUYg9tOORN7WGYpDaUUnHY="; + }) + else + (fetchurl { + url = "https://raw.githubusercontent.com/OE4T/meta-tegra/2b51abd5b3e2436f8eeb98e8f985806521379174/recipes-multimedia/argus/files/0001-Remove-DO-NOT-USE-declarations-from-v4l2_nv_extensio.patch"; + sha256 = "sha256-J9Hhm7oOptUR39KMbxZB1+esAlKWTyyKk1Ep3ZlJ488="; + }) + ) (fetchurl { url = "https://raw.githubusercontent.com/OE4T/meta-tegra/4f825ddeb2e9a1b5fbff623955123c20b82c8274/recipes-multimedia/argus/tegra-mmapi-samples/0004-samples-classes-fix-a-data-race-in-shutting-down-deq.patch"; sha256 = "sha256-mkS2eKuDvXDhHkIglUGcYbEWGxCP5gRSdmEvuVw/chI="; diff --git a/pkgs/samples/vpi2-samples.nix b/pkgs/samples/vpi-samples.nix similarity index 80% rename from pkgs/samples/vpi2-samples.nix rename to pkgs/samples/vpi-samples.nix index 5a99e2b3..2f3e6af2 100644 --- a/pkgs/samples/vpi2-samples.nix +++ b/pkgs/samples/vpi-samples.nix @@ -2,6 +2,7 @@ , cudaPackages , debs , dpkg +, lib , opencv , stdenv }: @@ -9,21 +10,23 @@ let inherit (cudaPackages) cuda_cudart cuda_nvcc - vpi2 + vpi ; + + vpiMajor = lib.versions.major vpi.version; in stdenv.mkDerivation { __structuredAttrs = true; strictDeps = true; - pname = "vpi2-samples"; - inherit (debs.common.vpi2-samples) src version; + pname = "vpi-samples"; + inherit (debs.common."vpi${vpiMajor}-samples") src version; unpackCmd = "dpkg -x $src source"; - sourceRoot = "source/opt/nvidia/vpi2/samples"; + sourceRoot = "source/opt/nvidia/vpi${vpiMajor}/samples"; nativeBuildInputs = [ cmake cuda_nvcc dpkg ]; - buildInputs = [ cuda_cudart opencv vpi2 ]; + buildInputs = [ cuda_cudart opencv vpi ]; configurePhase = '' runHook preBuild diff --git a/pkgs/samples/vpi2-test.nix b/pkgs/samples/vpi-test.nix similarity index 80% rename from pkgs/samples/vpi2-test.nix rename to pkgs/samples/vpi-test.nix index ff2a4750..fd5ae547 100644 --- a/pkgs/samples/vpi2-test.nix +++ b/pkgs/samples/vpi-test.nix @@ -1,21 +1,21 @@ -{ vpi2-samples, writeShellApplication }: +{ vpi-samples, writeShellApplication }: # Tested via "./result/bin/vpi_sample_05_benchmark " (Try pva especially) # Getting a bunch of "pva 16000000.pva0: failed to get firmware" messages, so unsure if its working. writeShellApplication { name = "vpi2-test"; text = '' echo " * Running vpi_sample_05_benchmark cuda" - ${vpi2-samples}/bin/vpi_sample_05_benchmark cuda + ${vpi-samples}/bin/vpi_sample_05_benchmark cuda echo echo " * Running vpi_sample_05_benchmark cpu" - ${vpi2-samples}/bin/vpi_sample_05_benchmark cpu + ${vpi-samples}/bin/vpi_sample_05_benchmark cpu echo CHIP="$(tr -d '\0' < /proc/device-tree/compatible)" if [[ "''${CHIP}" =~ "tegra194" ]]; then echo " * Running vpi_sample_05_benchmark pva" - ${vpi2-samples}/bin/vpi_sample_05_benchmark pva + ${vpi-samples}/bin/vpi_sample_05_benchmark pva echo fi ''; diff --git a/pkgs/tests/default.nix b/pkgs/tests/default.nix index 2ebac64d..ae0cc4a1 100644 --- a/pkgs/tests/default.nix +++ b/pkgs/tests/default.nix @@ -1,21 +1,38 @@ { l4tMajorMinorPatchVersion , dockerTools , writeShellScriptBin +, lib +, l4tAtLeast }: let - l4tImage = dockerTools.pullImage { + imageArgs = { + "35" = { + imageDigest = "sha256:d1c8e971ab994235840eacc31c4ef4173bf9156317b1bf8aabe7e01eb21b2a0e"; + finalImageTag = "r35.4.1"; # As of 2024-10-27 there is (still) no 35.6.0 image published + sha256 = "sha256-IDePYGssk6yrcaocnluxBaRJb7BrXxS7tBlEo6hNtHw="; + }; + "36" = { + imageDigest = "sha256:34ccf0f3b63c6da9eee45f2e79de9bf7fdf3beda9abfd72bbf285ae9d40bb673"; + finalImageTag = "r36.4.0"; + sha256 = "sha256-+5+GRmyCl2ZcdYIJHU5snuFzEx1QkZic9bhtx9ZjXeo="; + }; + }; + l4tImage = dockerTools.pullImage ({ imageName = "nvcr.io/nvidia/l4t-jetpack"; - imageDigest = "sha256:d1c8e971ab994235840eacc31c4ef4173bf9156317b1bf8aabe7e01eb21b2a0e"; - finalImageTag = "r35.4.1"; # As of 2024-10-27 there is (still) no 35.6.0 image published - sha256 = "sha256-IDePYGssk6yrcaocnluxBaRJb7BrXxS7tBlEo6hNtHw="; os = "linux"; arch = "arm64"; - }; + } // imageArgs.${lib.versions.major l4tMajorMinorPatchVersion}); + + container_commands = + if l4tAtLeast "36" then + "apt-get update && apt-get install --yes cmake build-essential && wget https://github.com/NVIDIA/cuda-samples/archive/refs/tags/v12.9.tar.gz && tar xf v12.9.tar.gz && mkdir cuda-samples-12.9/build && cd cuda-samples-12.9/build && cmake -DBUILD_TEGRA=True .. ; make -C Samples/1_Utilities/deviceQuery && Samples/1_Utilities/deviceQuery/deviceQuery" + else + "cd /usr/local/cuda/samples/1_Utilities/deviceQuery && make && ./deviceQuery"; in { oci = writeShellScriptBin "oci-test" '' image=${l4tImage.imageName}:${l4tImage.imageTag} - container_commands="cd /usr/local/cuda/samples/1_Utilities/deviceQuery && make && ./deviceQuery" + container_commands="${container_commands}" for runtime in docker podman; do if command -v $runtime 2>&1 >/dev/null; then diff --git a/pkgs/uefi-firmware/r36/capsule-authentication.diff b/pkgs/uefi-firmware/r36/capsule-authentication.diff new file mode 100644 index 00000000..0c4ac0f5 --- /dev/null +++ b/pkgs/uefi-firmware/r36/capsule-authentication.diff @@ -0,0 +1,14 @@ +diff --git a/Platform/NVIDIA/NVIDIA.common.dsc.inc b/Platform/NVIDIA/NVIDIA.common.dsc.inc +index 8e8ddbbe..84b8a84b 100644 +--- a/Platform/NVIDIA/NVIDIA.common.dsc.inc ++++ b/Platform/NVIDIA/NVIDIA.common.dsc.inc +@@ -945,6 +945,9 @@ gEfiSecurityPkgTokenSpaceGuid.PcdSingleBootApplicationGuid|{ GUID("cbf481fb-b373 + gNVIDIATokenSpaceGuid.PcdNvLogToScratchRegs|TRUE + !endif + ++ !include PublicCapsuleKey.cer.gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer.inc ++ !include PublicCapsuleKey.cer.gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr.inc ++ + [PcdsDynamicDefault] + # + # Enable emulated variable NV mode in variable driver. diff --git a/pkgs/uefi-firmware/r36/default.nix b/pkgs/uefi-firmware/r36/default.nix new file mode 100644 index 00000000..1a2dd107 --- /dev/null +++ b/pkgs/uefi-firmware/r36/default.nix @@ -0,0 +1,363 @@ +{ lib +, stdenv +, callPackage +, buildPackages +, fetchFromGitHub +, fetchpatch +, runCommand +, acpica-tools +, dtc +, python3 +, unixtools +, libuuid +, which +, nasm +, applyPatches +, nukeReferences +, l4tMajorMinorPatchVersion +, uniqueHash ? "" +, # Optional path to a boot logo that will be converted and cropped into the format required + bootLogo ? null +, # Patches to apply to edk2-nvidia source tree + edk2NvidiaPatches ? [ ] +, # Patches to apply to edk2 source tree + edk2UefiPatches ? [ ] +, debugMode ? false +, errorLevelInfo ? debugMode +, # Enables a bunch more info messages + + # The root certificate (in PEM format) for authenticating capsule updates. By + # default, EDK2 authenticates using a test keypair commited upstream. + trustedPublicCertPemFile ? null +}: + +let + # TODO: Move this generation out of uefi-firmware.nix, because this .nix + # file is callPackage'd using an aarch64 version of nixpkgs, and we don't + # want to have to recompilie imagemagick + bootLogoVariants = runCommand "uefi-bootlogo" { nativeBuildInputs = [ buildPackages.buildPackages.imagemagick ]; } '' + mkdir -p "$out" + convert "${bootLogo}" -resize 1920x1080 -gravity Center -extent 1920x1080 -format bmp -define bmp:format=bmp3 "$out/logo1080.bmp" + convert "${bootLogo}" -resize 1280x720 -gravity Center -extent 1280x720 -format bmp -define bmp:format=bmp3 "$out/logo720.bmp" + convert "${bootLogo}" -resize 640x480 -gravity Center -extent 640x480 -format bmp -define bmp:format=bmp3 "$out/logo480.bmp" + ''; + + # See: https://github.com/NVIDIA/edk2-edkrepo-manifest/blob/main/edk2-nvidia/Platform/NVIDIAPlatformsManifest.xml + edk2-src = applyPatches { + name = "edk2"; + src = (fetchFromGitHub { + owner = "NVIDIA"; + repo = "edk2"; + rev = "r${l4tMajorMinorPatchVersion}"; + fetchSubmodules = true; + hash = "sha256-TBroMmFyZt6ypooDtSzScjA3POPr76rJKfLQfAkRwdU="; + }).overrideAttrs + # see https://github.com/NixOS/nixpkgs/pull/354193 + { + env = { + GIT_CONFIG_COUNT = 1; + GIT_CONFIG_KEY_0 = "url.https://github.com/tianocore/edk2-subhook.git.insteadOf"; + GIT_CONFIG_VALUE_0 = "https://github.com/Zeex/subhook.git"; + }; + }; + # see https://github.com/NixOS/nixpkgs/blob/9e7e65f7c5ec6a9cfb4ca7239c78a3d237c160ac/pkgs/by-name/ed/edk2/package.nix#L51-L98 + patches = [ + # pass targetPrefix as an env var + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/edk2/raw/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/0021-Tweak-the-tools_def-to-support-cross-compiling.patch"; + hash = "sha256-E1/fiFNVx0aB1kOej2DJ2DlBIs9tAAcxoedym2Zhjxw="; + }) + # https://github.com/tianocore/edk2/pull/5658 + (fetchpatch { + name = "fix-cross-compilation-antlr-dlg.patch"; + url = "https://github.com/tianocore/edk2/commit/a34ff4a8f69a7b8a52b9b299153a8fac702c7df1.patch"; + hash = "sha256-u+niqwjuLV5tNPykW4xhb7PW2XvUmXhx5uvftG1UIbU="; + }) + (fetchpatch { + name = "[PATCH] MdePkg: Check if compiler has __has_builtin before trying to"; + url = "https://github.com/tianocore/edk2/commit/57a890fd03356350a1b7a2a0064c8118f44e9958.patch"; + hash = "sha256-on+yJOlH9B2cD1CS9b8Pmg99pzrlrZT6/n4qPHAbDcA="; + }) + + ./remove-gcc-prefix-checks.diff + ]; + + # EDK2 is currently working on OpenSSL 3.3.x support. Use buildpackages.openssl again, + # when "https://github.com/tianocore/edk2/pull/6167" is merged. + postPatch = '' + # We don't want EDK2 to keep track of OpenSSL, they're frankly bad at it. + rm -r CryptoPkg/Library/OpensslLib/openssl + mkdir -p CryptoPkg/Library/OpensslLib/openssl + ( + cd CryptoPkg/Library/OpensslLib/openssl + tar --strip-components=1 -xf ${buildPackages.openssl_3.src} + + # Apply OpenSSL patches. + ${lib.pipe buildPackages.openssl_3.patches [ + (builtins.filter ( + patch: + !builtins.elem (baseNameOf patch) [ + # Exclude patches not required in this context. + "nix-ssl-cert-file.patch" + "openssl-disable-kernel-detection.patch" + "use-etc-ssl-certs-darwin.patch" + "use-etc-ssl-certs.patch" + ] + )) + (map (patch: "patch -p1 < ${patch}\n")) + lib.concatStrings + ]} + ) + + # enable compilation using Clang + # https://bugzilla.tianocore.org/show_bug.cgi?id=4620 + substituteInPlace BaseTools/Conf/tools_def.template --replace-fail \ + 'DEFINE CLANGPDB_WARNING_OVERRIDES = ' \ + 'DEFINE CLANGPDB_WARNING_OVERRIDES = -Wno-unneeded-internal-declaration ' + ''; + }; + + edk2-platforms = fetchFromGitHub rec { + owner = "NVIDIA"; + repo = "edk2-platforms"; + name = repo; + rev = "r${l4tMajorMinorPatchVersion}"; + sha256 = "sha256-27dKEi66UWBgJi3Sb2/naeeSC2CJ5+Dbtw8e0o5Y/Hg="; + }; + + edk2-non-osi = fetchFromGitHub rec { + owner = "NVIDIA"; + repo = "edk2-non-osi"; + name = repo; + rev = "r${l4tMajorMinorPatchVersion}"; + sha256 = "sha256-FnznH8KsB3rD7sL5Lx2GuQZRPZ+uqAYqenjk+7x89mE="; + }; + + edk2-nvidia = applyPatches { + name = "edk2-nvidia"; + src = fetchFromGitHub { + owner = "NVIDIA"; + repo = "edk2-nvidia"; + rev = "r${l4tMajorMinorPatchVersion}"; + sha256 = "sha256-Ri+0vrxvd7eE7TP/KBM0ET2jX0fupdC3+Dli+IshUP8="; + }; + patches = edk2NvidiaPatches ++ [ + ###### git log r36.4.3-updates ^r36.4.3 ###### + (fetchpatch { + # fix: Leave DisplayHandoff enabled on ACPI boot + url = "https://github.com/NVIDIA/edk2-nvidia/commit/7b2c3a5b0b1639a71df6770152d547f2d27740a5.patch"; + hash = "sha256-ONVHv0KhO4Xwr7dJUxNfsZJNesxBzCQAnI7/sWZHrCA="; + }) + (fetchpatch { + # fix: Early free of device nodes in AcpiDtbSsdtGenerator + url = "https://github.com/NVIDIA/edk2-nvidia/commit/cecfa36d3b600e932880d7d97d17c8080d87d97b.patch"; + hash = "sha256-lT6tunO3mmAzv4MtFmH+gpkWvvhH9ejgxMumS3s4qSY="; + }) + (fetchpatch { + # fix: bug in block erase logic + url = "https://github.com/NVIDIA/edk2-nvidia/commit/fc333bd6dcb7e0921303f35ee01055ef33df444b.patch"; + hash = "sha256-1IxQYgmpcGdF7ckhmmxa2Y+P59qXYTRvV7lrb2xbQl0="; + }) + (fetchpatch { + # fix: bug in secureboot hash compute and optimize reads + url = "https://github.com/NVIDIA/edk2-nvidia/commit/9d4a790e7786d9699405f15927f2fc391915bb19.patch"; + hash = "sha256-MVzWEzzKPRfDWiqgGnfl9dwgDnPLJxjsvijH5jM2Pgw="; + }) + # skip chore(github): Migrate to upload-artifact@v4 (#126) b/c not needed, could be added + (fetchpatch { + # fix: switch default value of PcdSocDisplayHandoffMode to Auto (#125) + url = "https://github.com/NVIDIA/edk2-nvidia/commit/a85e6cecf3e37eda685c7c8c9041a570a6397640.patch"; + hash = "sha256-f4XSCEYE1NOF4sr/OfHxcD/n06o5aod33+6TWyMaoRs="; + }) + ##################################################### + + # Fix Eqos driver to use correct TX clock name + # PR: https://github.com/NVIDIA/edk2-nvidia/pull/76 + (fetchpatch { + url = "https://github.com/NVIDIA/edk2-nvidia/commit/26f50dc3f0f041d20352d1656851c77f43c7238e.patch"; + hash = "sha256-cc+eGLFHZ6JQQix1VWe/UOkGunAzPb8jM9SXa9ScIn8="; + }) + + ./stuart-passthru-compiler-prefix.diff + ./repeatability.diff + ] ++ lib.optionals (trustedPublicCertPemFile != null) [ + ./capsule-authentication.diff + ]; + postPatch = lib.optionalString errorLevelInfo '' + sed -i 's#PcdDebugPrintErrorLevel|.*#PcdDebugPrintErrorLevel|0x8000004F#' Platform/NVIDIA/NVIDIA.common.dsc.inc + '' + lib.optionalString (bootLogo != null) '' + cp ${bootLogoVariants}/logo1080.bmp Silicon/NVIDIA/Assets/nvidiagray1080.bmp + cp ${bootLogoVariants}/logo720.bmp Silicon/NVIDIA/Assets/nvidiagray720.bmp + cp ${bootLogoVariants}/logo480.bmp Silicon/NVIDIA/Assets/nvidiagray480.bmp + ''; + }; + + edk2-nvidia-non-osi = fetchFromGitHub rec { + owner = "NVIDIA"; + repo = "edk2-nvidia-non-osi"; + name = repo; + rev = "r${l4tMajorMinorPatchVersion}"; + sha256 = "sha256-qQs1jO/h6+j9WLfz1OtYpgZutEeX284BlcUKJWvghEE="; + }; + + pythonEnv = buildPackages.python312.withPackages (ps: callPackage ./pyenv.nix { inherit ps edk2-nvidia; }); + + buildTarget = if debugMode then "DEBUG" else "RELEASE"; + + targetArch = + if stdenv.hostPlatform.isi686 then + "IA32" + else if stdenv.hostPlatform.isx86_64 then + "X64" + else if stdenv.hostPlatform.isAarch32 then + "ARM" + else if stdenv.hostPlatform.isAarch64 then + "AARCH64" + else if stdenv.hostPlatform.isRiscV64 then + "RISCV64" + else if stdenv.hostPlatform.isLoongArch64 then + "LOONGARCH64" + else + throw "Unsupported architecture"; + + mkStuartDrv = platformBuild: + # TODO: edk2.mkDerivation doesn't have a way to override the edk version used! + # Make it not via passthru ? + stdenv.mkDerivation (finalAttrs: { + pname = "${platformBuild}-edk2-uefi-${buildTarget}"; + version = l4tMajorMinorPatchVersion; + + srcs = [ + edk2-src + edk2-platforms + edk2-non-osi + edk2-nvidia + edk2-nvidia-non-osi + ]; + + sourceRoot = "."; + + depsBuildBuild = [ buildPackages.stdenv.cc buildPackages.bash libuuid ]; + nativeBuildInputs = [ + pythonEnv + + # from nixpkgs, for stuart + acpica-tools + dtc + nasm + unixtools.whereis + which + ]; + strictDeps = true; + + # trick taken from https://src.fedoraproject.org/rpms/edk2/blob/08f2354cd280b4ce5a7888aa85cf520e042955c3/f/edk2.spec#_319 + ${"GCC5_${targetArch}_PREFIX"} = stdenv.cc.targetPrefix; + # stuart (nvidia extensions) really wants CROSS_COMPILER_PREFIX to look like this + CROSS_COMPILER_PREFIX = "${stdenv.cc}/bin/${stdenv.cc.targetPrefix}"; + # DANGER: If someone else modifies PYTHONPATH, then we lose this + # We're okay when this was written. + PYTHONPATH = "${edk2-nvidia}/Silicon/NVIDIA"; + # Version is ${FIRMWARE_VERSION_BASE}-${GIT_SYNC_REVISION} + FIRMWARE_VERSION_BASE = "${l4tMajorMinorPatchVersion}"; + + # see nixpkgs/pkgs/by-name/ed/edk2/package.nix + hardeningDisable = [ + "format" + "fortify" + ]; + + patches = edk2UefiPatches; + + patchPhase = '' + find . -name \*_ext_dep.yaml -delete + patchShebangs . + ''; + + configurePhase = '' + runHook preConfigure + + unset AR + unset AS + unset CC + unset CXX + unset LD + unset NM + unset OBJCOPY + unset OBJDUMP + unset RANLIB + unset READELF + unset SIZE + unset STRINGS + unset STRIP + + export WORKSPACE=$(pwd) + GIT_SYNC_REVISION=$(printf "%s-%s" "${uniqueHash}" "$out" | sha256sum | head -c 12) + CFLAGS=$NIX_CFLAGS_COMPILE_FOR_BUILD LDFLAGS=$NIX_LDFLAGS_FOR_BUILD python edk2/BaseTools/Edk2ToolsBuild.py -t GCC5 + + ${lib.optionalString (trustedPublicCertPemFile != null) '' + echo Using ${trustedPublicCertPemFile} as public certificate for capsule verification + ${lib.getExe buildPackages.openssl} x509 -outform DER -in ${trustedPublicCertPemFile} -out edk2/PublicCapsuleKey.cer + python3 edk2/BaseTools/Scripts/BinToPcd.py -p gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer -i edk2/PublicCapsuleKey.cer -o edk2/PublicCapsuleKey.cer.gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer.inc + python3 edk2/BaseTools/Scripts/BinToPcd.py -x -p gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr -i edk2/PublicCapsuleKey.cer -o edk2/PublicCapsuleKey.cer.gFmpDevicePkgTokenSpaceGuid.PcdFmpDevicePkcs7CertBufferXdr.inc + ''} + + runHook postConfigure + ''; + + buildPhase = '' + stuart_setup -c "edk2-nvidia/Platform/NVIDIA/${platformBuild}/PlatformBuild.py" + stuart_build -c "edk2-nvidia/Platform/NVIDIA/${platformBuild}/PlatformBuild.py" --target ${buildTarget} + ''; + + installPhase = '' + runHook preInstall + mv -v Build/*/* $out + mv -v reports/* $out + runHook postInstall + ''; + }); + + jetson-edk2-uefi = mkStuartDrv "Jetson"; + jetson-edk2-uefi-minimal = mkStuartDrv "JetsonMinimal"; + jetson-edk-uefi-stmm-optee = mkStuartDrv "StandaloneMmOptee"; + + uefi-firmware = runCommand "uefi-firmware-${l4tMajorMinorPatchVersion}" + { + nativeBuildInputs = [ python3 nukeReferences ]; + # Keep in sync with FIRMWARE_VERSION_BASE and GIT_SYNC_REVISION above + passthru.biosVersion = "${l4tMajorMinorPatchVersion}-" + lib.substring 0 12 (builtins.hashString "sha256" "${uniqueHash}-${jetson-edk2-uefi}"); + } + '' + mkdir -p $out + python3 ${edk2-nvidia}/Silicon/NVIDIA/edk2nv/FormatUefiBinary.py \ + ${jetson-edk2-uefi}/FV/UEFI_NS.Fv \ + $out/uefi_jetson.bin + + python3 ${edk2-nvidia}/Silicon/NVIDIA/edk2nv/FormatUefiBinary.py \ + ${jetson-edk2-uefi}/AARCH64/L4TLauncher.efi \ + $out/L4TLauncher.efi + + mkdir -p $out/dtbs + for filename in ${jetson-edk2-uefi}/AARCH64/Silicon/NVIDIA/Tegra/DeviceTree/DeviceTree/OUTPUT/*.dtb; do + cp $filename $out/dtbs/$(basename "$filename" ".dtb").dtbo + done + + python3 ${edk2-nvidia}/Silicon/NVIDIA/edk2nv/FormatUefiBinary.py \ + ${jetson-edk2-uefi-minimal}/FV/UEFI_NS.Fv \ + $out/uefi_jetson_minimal.bin + + python3 ${edk2-nvidia}/Silicon/NVIDIA/edk2nv/FormatUefiBinary.py \ + ${jetson-edk-uefi-stmm-optee}/FV/UEFI_MM.Fv \ + $out/standalonemm_optee.bin + + # Get rid of any string references to source(s) + nuke-refs $out/uefi_jetson.bin + nuke-refs $out/uefi_jetson_minimal.bin + nuke-refs $out/standalonemm_optee.bin + ''; +in +{ + inherit uefi-firmware; +} + + diff --git a/pkgs/uefi-firmware/r36/pyenv.nix b/pkgs/uefi-firmware/r36/pyenv.nix new file mode 100644 index 00000000..ba399ac3 --- /dev/null +++ b/pkgs/uefi-firmware/r36/pyenv.nix @@ -0,0 +1,100 @@ +{ fetchFromGitHub +, ps +, ... +}: +with ps; +let + edk2-pytool-library = buildPythonPackage + rec { + pname = "edk2-pytool-library"; + # Bumped from 0.19.3 for edk2-basetools + version = "0.23.2"; + pyproject = true; + + src = fetchPypi { + pname = "edk2_pytool_library"; + inherit version; + hash = "sha256-v33XVI+m2CSOuuxsu2JcBjm0cQmspWQGireQzL6/6rI="; + }; + build-system = [ setuptools-scm ]; + + dependencies = [ + pyasn1 + pyasn1-modules + cryptography + joblib + GitPython + sqlalchemy + pygount + ]; + }; + edk2-pytool-extensions = buildPythonPackage + rec { + pname = "edk2-pytool-extensions"; + version = "0.29.4"; + pyproject = true; + + src = fetchPypi { + pname = "edk2_pytool_extensions"; + inherit version; + hash = "sha256-qHLLHjFKnfgn4aO6n+CxhEqwyR7MaHYOfZxJCDhR13s="; + }; + build-system = [ setuptools-scm ]; + + dependencies = [ + edk2-pytool-library + pyyaml + pefile + semantic-version + GitPython + openpyxl + XlsxWriter + ]; + }; + edk2-basetools = buildPythonPackage + rec { + pname = "edk2-basetools"; + # Want 0.1.48, but it hard-codes a fetch from pypi! + # 0.1.50 is broken, see tianocore/edk2-basetools#124 + version = "0.1.53"; + pyproject = true; + + src = fetchFromGitHub { + owner = "tianocore"; + repo = pname; + rev = "v${version}"; + hash = "sha256-qg54/2fYjX9pJbcu2iryrWIvQc1iOFl8v490zD7IhrA="; + }; + build-system = [ setuptools setuptools-scm pytest pytest-html pytest-cov flake8 build ]; + + dependencies = [ + edk2-pytool-library + antlr4-python3-runtime + ]; + }; + kconfiglib = buildPythonPackage + rec { + pname = "kconfiglib"; + version = "14.1.0"; # Latest when writing, conveniently not pinned + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-vtLMIhb1OOykJVqDpFiNiCNWPN1QEU+GzxomdOYCyTw="; + }; + build-system = [ setuptools ]; + }; +in +[ + # from edk2/pip-requirements.txt + edk2-pytool-library + edk2-pytool-extensions + edk2-basetools + antlr4-python3-runtime + lcov-cobertura + regex + # from edk2-nvidia + kconfiglib + # implicit! + setuptools +] diff --git a/pkgs/uefi-firmware/r36/remove-gcc-prefix-checks.diff b/pkgs/uefi-firmware/r36/remove-gcc-prefix-checks.diff new file mode 100644 index 00000000..cbd5913f --- /dev/null +++ b/pkgs/uefi-firmware/r36/remove-gcc-prefix-checks.diff @@ -0,0 +1,40 @@ +diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py +index dab7a87997..db18dc8341 100644 +--- a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py ++++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py +@@ -21,35 +21,6 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin): + + def do_pre_build(self, thebuilder): + self.Logger = logging.getLogger("LinuxGcc5ToolChain") +- +- # +- # GCC5 - The ARM and AARCH64 compilers need their paths set if available +- if thebuilder.env.GetValue("TOOL_CHAIN_TAG") == "GCC5": +- +- # Start with AARACH64 compiler +- ret = self._check_aarch64() +- if ret != 0: +- self.Logger.critical("Failed in check aarch64") +- return ret +- +- # Check arm compiler +- ret = self._check_arm() +- if ret != 0: +- self.Logger.critical("Failed in check arm") +- return ret +- +- # Check RISCV64 compiler +- ret = self._check_riscv64() +- if ret != 0: +- self.Logger.critical("Failed in check riscv64") +- return ret +- +- # Check LoongArch64 compiler +- ret = self._check_loongarch64() +- if ret != 0: +- self.Logger.critical("Failed in check loongarch64") +- return ret +- + return 0 + + def _check_arm(self): diff --git a/pkgs/uefi-firmware/r36/repeatability.diff b/pkgs/uefi-firmware/r36/repeatability.diff new file mode 100644 index 00000000..24f73828 --- /dev/null +++ b/pkgs/uefi-firmware/r36/repeatability.diff @@ -0,0 +1,13 @@ +diff --git a/Silicon/NVIDIA/edk2nv/stuart/builder.py b/Silicon/NVIDIA/edk2nv/stuart/builder.py +index 692400d2..f4e37d05 100644 +--- a/Silicon/NVIDIA/edk2nv/stuart/builder.py ++++ b/Silicon/NVIDIA/edk2nv/stuart/builder.py +@@ -323,7 +323,7 @@ class NVIDIAPlatformBuilder(UefiBuilder): + self.settings.GetGuid(), reason_dynamic) + + # Set additional build variables +- cur_time = datetime.datetime.now() ++ cur_time = datetime.datetime.fromtimestamp(int(os.getenv("SOURCE_DATE_EPOCH"))) + build_ts = cur_time.astimezone().replace(microsecond=0).isoformat() + self.env.SetValue("BLD_*_BUILD_DATE_TIME", build_ts, reason_dynamic) + epoch_time = int(time.time()) diff --git a/pkgs/uefi-firmware/r36/stuart-passthru-compiler-prefix.diff b/pkgs/uefi-firmware/r36/stuart-passthru-compiler-prefix.diff new file mode 100644 index 00000000..aead7267 --- /dev/null +++ b/pkgs/uefi-firmware/r36/stuart-passthru-compiler-prefix.diff @@ -0,0 +1,18 @@ +diff --git a/Silicon/NVIDIA/edk2nv/stuart/builder.py b/Silicon/NVIDIA/edk2nv/stuart/builder.py +index 692400d2..31cef6ae 100644 +--- a/Silicon/NVIDIA/edk2nv/stuart/builder.py ++++ b/Silicon/NVIDIA/edk2nv/stuart/builder.py +@@ -340,13 +340,6 @@ class NVIDIAPlatformBuilder(UefiBuilder): + str(ws_dir / self.settings.GetReportFile()), + reason_setman) + +- # Set shell env +- shell_environment.GetEnvironment().set_shell_var( +- f"{toolchain_tag}_AARCH64_PREFIX", +- self.settings.GetCrossCompilerPrefix()) +- shell_environment.GetEnvironment().set_shell_var( +- f"DTCPP_PREFIX", +- self.settings.GetCrossCompilerPrefix()) + # - Needed by build.py. + confdir_path = ws_dir / self.settings.GetConfDirName() + shell_environment.GetEnvironment().set_shell_var( diff --git a/sourceinfo/r36.4-debs.json b/sourceinfo/r36.4-debs.json new file mode 100644 index 00000000..20b856dc --- /dev/null +++ b/sourceinfo/r36.4-debs.json @@ -0,0 +1,1050 @@ +{ + "common": { + "cuda-cccl-12-6": { + "filename": "pool/main/c/cuda-cccl/cuda-cccl-12-6_12.6.37-1_arm64.deb", + "sha256": "0518e4f42f59d8fcc9081c331cce28b87494f2d66ae3d88a6bec35aa4fdb89d1", + "source": "cuda-cccl", + "version": "12.6.37-1" + }, + "cuda-command-line-tools-12-6": { + "filename": "pool/main/c/cuda-command-line-tools-12-6/cuda-command-line-tools-12-6_12.6.11-1_arm64.deb", + "sha256": "738965465725ee43de9ddec990f8da83dbacc820d6226844b8aaa1930a98daab", + "version": "12.6.11-1" + }, + "cuda-compat-12-6": { + "filename": "pool/main/c/cuda-compat/cuda-compat-12-6_12.6.36890662-1_arm64.deb", + "sha256": "a5bc64122f78abd2e87cf4282803e40ccef3aae4362d1b8ae87914e2970adc4b", + "source": "cuda-compat", + "version": "12.6.36890662-1" + }, + "cuda-compiler-12-6": { + "filename": "pool/main/c/cuda-compiler-12-6/cuda-compiler-12-6_12.6.11-1_arm64.deb", + "sha256": "4fd98aa6971aa57b314475c0acc508ac6e38e1ea3a66288a381d21767594f89a", + "version": "12.6.11-1" + }, + "cuda-crt-12-6": { + "filename": "pool/main/c/cuda-nvcc/cuda-crt-12-6_12.6.68-1_arm64.deb", + "sha256": "b95d26f0e63f113e6e2f5b8578841644de549293679d65c70e112164d2080311", + "source": "cuda-nvcc", + "version": "12.6.68-1" + }, + "cuda-cudart-12-6": { + "filename": "pool/main/c/cuda-cudart/cuda-cudart-12-6_12.6.68-1_arm64.deb", + "sha256": "54456ed3372670d6a6d7e19d5971ec234800fe620dfb822aa751bc7d80f2a516", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-cudart-dev-12-6": { + "filename": "pool/main/c/cuda-cudart/cuda-cudart-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "2ddcaeec93f2c508533f52bea7ad3f339d223d8724537e4695cf14a034b65193", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-cuobjdump-12-6": { + "filename": "pool/main/c/cuda-cuobjdump/cuda-cuobjdump-12-6_12.6.68-1_arm64.deb", + "sha256": "906f876946be37bd67bad65b2a01aad5b1f63e85a1547f13d19c547a8e8ebc10", + "source": "cuda-cuobjdump", + "version": "12.6.68-1" + }, + "cuda-cupti-12-6": { + "filename": "pool/main/c/cuda-cupti/cuda-cupti-12-6_12.6.68-1_arm64.deb", + "sha256": "4458ad07170a0a7f8a8d5864dfa0936bac767d7878a3cd753c3cf50dc1ff631a", + "source": "cuda-cupti", + "version": "12.6.68-1" + }, + "cuda-cupti-dev-12-6": { + "filename": "pool/main/c/cuda-cupti/cuda-cupti-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "aa44c4e149b4ee239a09c03c1fe3617b73157716d6820e2345b8244a3a8fb0d5", + "source": "cuda-cupti", + "version": "12.6.68-1" + }, + "cuda-cuxxfilt-12-6": { + "filename": "pool/main/c/cuda-cuxxfilt/cuda-cuxxfilt-12-6_12.6.68-1_arm64.deb", + "sha256": "abdb3b1f96722e9115a699ae02b795b7d67e127fe879612cbfb65ed86ebd6605", + "source": "cuda-cuxxfilt", + "version": "12.6.68-1" + }, + "cuda-documentation-12-6": { + "filename": "pool/main/c/cuda-documentation/cuda-documentation-12-6_12.6.68-1_arm64.deb", + "sha256": "fa976b3f74f2fbfe0653ad1796d70fc0910950cca6c4b1eae758ddc26c33551e", + "source": "cuda-documentation", + "version": "12.6.68-1" + }, + "cuda-driver-dev-12-6": { + "filename": "pool/main/c/cuda-cudart/cuda-driver-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "0c453507da39a28ca214723c8980c5a4832d8ea3e8f28dfd8ac83a1b2055dda1", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-gdb-12-6": { + "filename": "pool/main/c/cuda-gdb/cuda-gdb-12-6_12.6.68-1_arm64.deb", + "sha256": "db4c0ab18446e05a62c8f001c26327cc76d7988edc850ad1bff0661792d3afe5", + "source": "cuda-gdb", + "version": "12.6.68-1" + }, + "cuda-gdb-src-12-6": { + "filename": "pool/main/c/cuda-gdb/cuda-gdb-src-12-6_12.6.68-1_arm64.deb", + "sha256": "f9f85aaa70c407e8ce25870b88c1a0107451768b40592dd0fb977a5fd117b60f", + "source": "cuda-gdb", + "version": "12.6.68-1" + }, + "cuda-minimal-build-12-6": { + "filename": "pool/main/c/cuda-minimal-build-12-6/cuda-minimal-build-12-6_12.6.11-1_arm64.deb", + "sha256": "9f844ea82e4058b4db229f2c219f1203ac7f457e938547b3d1b156c6142487ad", + "version": "12.6.11-1" + }, + "cuda-nsight-compute-12-6": { + "filename": "pool/main/c/cuda-nsight-compute-12-6/cuda-nsight-compute-12-6_12.6.11-1_arm64.deb", + "sha256": "f165e703e5efc02c94dcda47814458cb118f6655bb7bbc1e550a11784432384c", + "version": "12.6.11-1" + }, + "cuda-nvcc-12-6": { + "filename": "pool/main/c/cuda-nvcc/cuda-nvcc-12-6_12.6.68-1_arm64.deb", + "sha256": "89dbfa6e7f791221f9886de6a32871be825d0001f6c4ac5a8c12229fda39c598", + "source": "cuda-nvcc", + "version": "12.6.68-1" + }, + "cuda-nvdisasm-12-6": { + "filename": "pool/main/c/cuda-nvdisasm/cuda-nvdisasm-12-6_12.6.68-1_arm64.deb", + "sha256": "973580bee9d6bf01ccfe1d2bc8a03437384c0fbf68af785390aa513062dc34b7", + "source": "cuda-nvdisasm", + "version": "12.6.68-1" + }, + "cuda-nvml-dev-12-6": { + "filename": "pool/main/c/cuda-nvml-dev/cuda-nvml-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "2a1050aff1a8297dc1bab6cdce2c35daf47eb6e77412d544b35e809e75f2746b", + "source": "cuda-nvml-dev", + "version": "12.6.68-1" + }, + "cuda-nvprune-12-6": { + "filename": "pool/main/c/cuda-nvprune/cuda-nvprune-12-6_12.6.68-1_arm64.deb", + "sha256": "fe39e03cf8ef59ca1dc5cc88f08c1e615776b0f9a574a770f85863bc6f34a68e", + "source": "cuda-nvprune", + "version": "12.6.68-1" + }, + "cuda-nvrtc-12-6": { + "filename": "pool/main/c/cuda-nvrtc/cuda-nvrtc-12-6_12.6.68-1_arm64.deb", + "sha256": "b8189ac22bb781b1dcccc61a902fb623238cd4e65cf456dcd95f8f319eb346be", + "source": "cuda-nvrtc", + "version": "12.6.68-1" + }, + "cuda-nvrtc-dev-12-6": { + "filename": "pool/main/c/cuda-nvrtc/cuda-nvrtc-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "a0a1596466507b8fb5fa0bfad848ec7c601c927d5f51db72a78135979e5c5423", + "source": "cuda-nvrtc", + "version": "12.6.68-1" + }, + "cuda-nvtx-12-6": { + "filename": "pool/main/c/cuda-nvtx/cuda-nvtx-12-6_12.6.68-1_arm64.deb", + "sha256": "99e06f439b736f8f1a44b7f11326e4eacd8fc1c78258a9ab8b9c2aed7612ca5f", + "source": "cuda-nvtx", + "version": "12.6.68-1" + }, + "cuda-nvvm-12-6": { + "filename": "pool/main/c/cuda-nvcc/cuda-nvvm-12-6_12.6.68-1_arm64.deb", + "sha256": "32ba801d719a593cb35abd4aeb93c672c0a02d47539455b5780c6004f03462cd", + "source": "cuda-nvcc", + "version": "12.6.68-1" + }, + "cuda-profiler-api-12-6": { + "filename": "pool/main/c/cuda-profiler-api/cuda-profiler-api-12-6_12.6.68-1_arm64.deb", + "sha256": "4e695d6e559f453c3e637e594d98c7b8b605a6816920ec0e5f501eda7e32818f", + "source": "cuda-profiler-api", + "version": "12.6.68-1" + }, + "cuda-sanitizer-12-6": { + "filename": "pool/main/c/cuda-sanitizer-api/cuda-sanitizer-12-6_12.6.68-1_arm64.deb", + "sha256": "9003f6266f6169b3c52eb2d5fa7f9114bc98048de9bd8a55f2574d41ebd3bed6", + "source": "cuda-sanitizer-api", + "version": "12.6.68-1" + }, + "cuda-toolkit-12-6-config-common": { + "filename": "pool/main/c/cuda-cudart/cuda-toolkit-12-6-config-common_12.6.68-1_all.deb", + "sha256": "4b3030e33bb2d58010d66ad1380987556906260c1438a47f088be5116b27925b", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-toolkit-12-config-common": { + "filename": "pool/main/c/cuda-cudart/cuda-toolkit-12-config-common_12.6.68-1_all.deb", + "sha256": "b24be39e9f8baa8a44e8a3d787f45f577e50f9de6af5e0b6c3b09a7b7e2edbcc", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-toolkit-config-common": { + "filename": "pool/main/c/cuda-cudart/cuda-toolkit-config-common_12.6.68-1_all.deb", + "sha256": "91b3cfe61d903a401c8ac043712c427042e3829ff2602f3aa594c1a2f25e48e8", + "source": "cuda-cudart", + "version": "12.6.68-1" + }, + "cuda-visual-tools-12-6": { + "filename": "pool/main/c/cuda-visual-tools-12-6/cuda-visual-tools-12-6_12.6.11-1_arm64.deb", + "sha256": "683819036194b788504e3744cbc474ae00b9b7690efbe05c916f20619afadca2", + "version": "12.6.11-1" + }, + "cudnn": { + "filename": "pool/main/c/cudnn/cudnn_9.3.0-1_arm64.deb", + "sha256": "f8a00d1db6857b6111a363338d8b6af7633c48afddda2dcae7feddc9466ff9c3", + "version": "9.3.0-1" + }, + "cudnn9": { + "filename": "pool/main/c/cudnn9/cudnn9_9.3.0-1_arm64.deb", + "sha256": "369ffe743aa3944221e1a7ddd643db5e797134383112a8171401bf1638f17c1f", + "version": "9.3.0-1" + }, + "cudnn9-cuda-12": { + "filename": "pool/main/c/cudnn/cudnn9-cuda-12_9.3.0.75-1_arm64.deb", + "sha256": "74e53ba6529de035acde125fc3c3ff511697f0e31a4e0fde5518f61986715aaa", + "source": "cudnn", + "version": "9.3.0.75-1" + }, + "cudnn9-cuda-12-6": { + "filename": "pool/main/c/cudnn/cudnn9-cuda-12-6_9.3.0.75-1_arm64.deb", + "sha256": "1af20b49dd7357d22b41ab8e8e20ce8cf0aeea76b81fe9516eeafa7ef673eb2c", + "source": "cudnn", + "version": "9.3.0.75-1" + }, + "cupva-2.5-l4t": { + "filename": "pool/main/c/cupva-2.5-l4t/cupva-2.5-l4t_2.5.3_arm64.deb", + "sha256": "c3729a78a6a03ce97ae988d808f8c1b6f36f1637b6662a22a8f0d5d37f334aca", + "version": "2.5.3" + }, + "deepstream-7.1": { + "filename": "pool/main/d/deepstream-7.1/deepstream-7.1_7.1.0-1_arm64.deb", + "sha256": "8cc657e4784108c1a17da9bb8fbf736bc2ae4017065bb493486548c274465ca4", + "version": "7.1.0-1" + }, + "gds-tools-12-6": { + "filename": "pool/main/libc/libcufile/gds-tools-12-6_1.11.1.6-1_arm64.deb", + "sha256": "539b7576f57ab08e24000529222c658d91f544999f3263ba9a5a47dd13ea620b", + "source": "libcufile", + "version": "1.11.1.6-1" + }, + "holoscan": { + "filename": "pool/main/h/holoscan/holoscan_3.1.0.3-1_arm64.deb", + "sha256": "92391427eaada1bfc62a390e2372b4a34136a2d99900a294091f896d0831e99e", + "version": "3.1.0.3-1" + }, + "libcublas-12-6": { + "filename": "pool/main/libc/libcublas/libcublas-12-6_12.6.1.4-1_arm64.deb", + "sha256": "3ff5d9c20e8cf1b8fd36841271846f2d2de23aaca9bf2e9213d5dac8e6488693", + "source": "libcublas", + "version": "12.6.1.4-1" + }, + "libcublas-dev-12-6": { + "filename": "pool/main/libc/libcublas/libcublas-dev-12-6_12.6.1.4-1_arm64.deb", + "sha256": "8125eeb5502d569a19f8bf8c54fd455c2a4a722f3c571e02bfe8c6bdd3d6e800", + "source": "libcublas", + "version": "12.6.1.4-1" + }, + "libcudla-12-6": { + "filename": "pool/main/libc/libcudla/libcudla-12-6_12.6.68-1_arm64.deb", + "sha256": "bc14ff94b6211e7536b54faa6a7f38bb67a919671869c22d13b2bcae2146887c", + "source": "libcudla", + "version": "12.6.68-1" + }, + "libcudla-dev-12-6": { + "filename": "pool/main/libc/libcudla/libcudla-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "1327073641f9ba48603338c271095940ca685997e22eda0583202733ad0800ba", + "source": "libcudla", + "version": "12.6.68-1" + }, + "libcudnn9-cuda-12": { + "filename": "pool/main/c/cudnn/libcudnn9-cuda-12_9.3.0.75-1_arm64.deb", + "sha256": "0f3a869f4b9f5c20912acfb043c911f210304a554de27c71346638ac73c96377", + "source": "cudnn", + "version": "9.3.0.75-1" + }, + "libcudnn9-dev-cuda-12": { + "filename": "pool/main/c/cudnn/libcudnn9-dev-cuda-12_9.3.0.75-1_arm64.deb", + "sha256": "749c910beca1b32216a0dbb2705aac261c3180437eb69922cb70932c2315ceff", + "source": "cudnn", + "version": "9.3.0.75-1" + }, + "libcudnn9-samples": { + "filename": "pool/main/c/cudnn-samples/libcudnn9-samples_9.3.0.75-1_all.deb", + "sha256": "d823a34d283bc12416e1a3606be83f50ee75d6ad59ae206a4ed037f60c79e215", + "source": "cudnn-samples", + "version": "9.3.0.75-1" + }, + "libcudnn9-static-cuda-12": { + "filename": "pool/main/c/cudnn/libcudnn9-static-cuda-12_9.3.0.75-1_arm64.deb", + "sha256": "8f951856fedc3b890b56109917e2877413c5c49a2d2cb81a4dd4d30269d2d565", + "source": "cudnn", + "version": "9.3.0.75-1" + }, + "libcufft-12-6": { + "filename": "pool/main/libc/libcufft/libcufft-12-6_11.2.6.59-1_arm64.deb", + "sha256": "68c95fdae59bde441a6ea9fc7d94eebb064f50e41fc51c4aeb4175cf098705e7", + "source": "libcufft", + "version": "11.2.6.59-1" + }, + "libcufft-dev-12-6": { + "filename": "pool/main/libc/libcufft/libcufft-dev-12-6_11.2.6.59-1_arm64.deb", + "sha256": "e4322f0712961be4b4bba58015e28dde0c30224cad27561cc73d4756463531f4", + "source": "libcufft", + "version": "11.2.6.59-1" + }, + "libcufile-12-6": { + "filename": "pool/main/libc/libcufile/libcufile-12-6_1.11.1.6-1_arm64.deb", + "sha256": "d48aadaf52731f2e058a976581e55f0ad18a24dafb020a1324a8c7a293cba5ef", + "source": "libcufile", + "version": "1.11.1.6-1" + }, + "libcufile-dev-12-6": { + "filename": "pool/main/libc/libcufile/libcufile-dev-12-6_1.11.1.6-1_arm64.deb", + "sha256": "a8e59753cab9e361454df3d4408b589e36659fe074ddb249ba6f36a2bfbeeaf7", + "source": "libcufile", + "version": "1.11.1.6-1" + }, + "libcurand-12-6": { + "filename": "pool/main/libc/libcurand/libcurand-12-6_10.3.7.68-1_arm64.deb", + "sha256": "7b8e1c2ce01db9539e92439859b3fb72ca95ff9da4424c9b8cd711934e7c7265", + "source": "libcurand", + "version": "10.3.7.68-1" + }, + "libcurand-dev-12-6": { + "filename": "pool/main/libc/libcurand/libcurand-dev-12-6_10.3.7.68-1_arm64.deb", + "sha256": "cee52e65f17de85e798130a7a201e3eb8cc127586f636aac6f145db91a00fb9d", + "source": "libcurand", + "version": "10.3.7.68-1" + }, + "libcusolver-12-6": { + "filename": "pool/main/libc/libcusolver/libcusolver-12-6_11.6.4.69-1_arm64.deb", + "sha256": "c4301dc5e91369e3eefd326f4552febdf7daceb232712c72b8094f8b92809fdd", + "source": "libcusolver", + "version": "11.6.4.69-1" + }, + "libcusolver-dev-12-6": { + "filename": "pool/main/libc/libcusolver/libcusolver-dev-12-6_11.6.4.69-1_arm64.deb", + "sha256": "e58aca1de60ae405e597e1b4c748372c230416b53067afbc4841dc4d80530fd2", + "source": "libcusolver", + "version": "11.6.4.69-1" + }, + "libcusparse-12-6": { + "filename": "pool/main/libc/libcusparse/libcusparse-12-6_12.5.3.3-1_arm64.deb", + "sha256": "c665700c6aae6a4aace16a7b1ff833fd73850a6fdafb41ed04f2e328a2769b9b", + "source": "libcusparse", + "version": "12.5.3.3-1" + }, + "libcusparse-dev-12-6": { + "filename": "pool/main/libc/libcusparse/libcusparse-dev-12-6_12.5.3.3-1_arm64.deb", + "sha256": "e7f4a85c4fcd99c236be4c336db1a6f985168a98bd8f1e94609e8db9232560cc", + "source": "libcusparse", + "version": "12.5.3.3-1" + }, + "libnpp-12-6": { + "filename": "pool/main/libn/libnpp/libnpp-12-6_12.3.1.54-1_arm64.deb", + "sha256": "65284b80a1fdbfe7fe3ee4e53720a71e4496df37b4702b5a2559f4bc15614b0f", + "source": "libnpp", + "version": "12.3.1.54-1" + }, + "libnpp-dev-12-6": { + "filename": "pool/main/libn/libnpp/libnpp-dev-12-6_12.3.1.54-1_arm64.deb", + "sha256": "7ca13092a34005bda3b82a8e61a156dee2b0c04c729d265501a1d2827783a258", + "source": "libnpp", + "version": "12.3.1.54-1" + }, + "libnvfatbin-12-6": { + "filename": "pool/main/libn/libnvfatbin/libnvfatbin-12-6_12.6.68-1_arm64.deb", + "sha256": "2dd434eafdb320bcc59465abb1eafa951fdd57ddd00afc4b1b5f1e2082d12330", + "source": "libnvfatbin", + "version": "12.6.68-1" + }, + "libnvfatbin-dev-12-6": { + "filename": "pool/main/libn/libnvfatbin/libnvfatbin-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "925e2735799bfdcd3c36e2b4005d013fd0bffe4113d7f3142f1a624a5c31d8e1", + "source": "libnvfatbin", + "version": "12.6.68-1" + }, + "libnvidia-container-tools": { + "filename": "pool/main/libn/libnvidia-container/libnvidia-container-tools_1.16.2-1_arm64.deb", + "sha256": "0b990ba7af550022cbf9ac95cc72fe988b2116147835f9ac56cf6b605cae1b36", + "source": "libnvidia-container", + "version": "1.16.2-1" + }, + "libnvidia-container1": { + "filename": "pool/main/libn/libnvidia-container/libnvidia-container1_1.16.2-1_arm64.deb", + "sha256": "69e47c18ee26640af03d3f2d64380707995e27bc0abaad9b3c12e4c8751ec2c7", + "source": "libnvidia-container", + "version": "1.16.2-1" + }, + "libnvinfer-bin": { + "filename": "pool/main/t/tensorrt/libnvinfer-bin_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "98494de17fc6596475141fa342ab34ce05f6c19d34769cf686628e16398484b7", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "b24b0c9d09fda80b2b9d4fdee6f02deb513e3f876f94e4119caa538a68964e15", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-dispatch-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-dispatch-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "a87c324e438bcc669c86c7e959ba9fb6827cd0d3122a1d730b2224f7ca82c91a", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-dispatch10": { + "filename": "pool/main/t/tensorrt/libnvinfer-dispatch10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "0a39d0e37017d677ee05e122ae3bad500e7d819c4c11ea3c92197dcc62e322bc", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-headers-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-headers-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "40a4fa566218f71176144a0eafa5aef8cf0af7ee9211b20487f1970d5344bbb8", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-headers-plugin-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-headers-plugin-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "ce43de06fdcaa65bb11378df10973bf726aa1c83f0ee53709d53b5b8c5a2d09f", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-lean-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-lean-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "3c8bba2c5a5fdac9e57ac13490ca42eb79ae9caf8ca1a07bd94a9f7ed10d370b", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-lean10": { + "filename": "pool/main/t/tensorrt/libnvinfer-lean10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "27e2d97fd79f1a0a6f864d6a2ec234be72c173f48dbfa8788b38e89df49261de", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-plugin-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-plugin-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "d61e98f8f477143a5a211bc01b3f240875700af591cc117b77af44f18433a941", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-plugin10": { + "filename": "pool/main/t/tensorrt/libnvinfer-plugin10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "709a8b3111e4d5966abaa806de3282c59586e175f3db9898f3f2a3bf93a5886b", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-samples": { + "filename": "pool/main/t/tensorrt/libnvinfer-samples_10.3.0.30-1+cuda12.5_all.deb", + "sha256": "57a3633cf1242a157138395da3e57ead9bcf1fc15c5653ad5422b1bd7a80aae0", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-vc-plugin-dev": { + "filename": "pool/main/t/tensorrt/libnvinfer-vc-plugin-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "86bc05dc389a94146c698e175505c7ca6b45d54d87f08865caf39fa92d0771c9", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer-vc-plugin10": { + "filename": "pool/main/t/tensorrt/libnvinfer-vc-plugin10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "318238a61b8a434ed54d148c05b31bebca0ad072657721a596190177fc1306d5", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvinfer10": { + "filename": "pool/main/t/tensorrt/libnvinfer10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "fabaad3ac8a50cf25da83a25938844808be4a3a43c2e76ea0b70b9cd2c6234bc", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvjitlink-12-6": { + "filename": "pool/main/libn/libnvjitlink/libnvjitlink-12-6_12.6.68-1_arm64.deb", + "sha256": "98c811d3fa81a1e55cc6c4fe3dc4fa0cb3b10a26b7ed23341418333b65b832a0", + "source": "libnvjitlink", + "version": "12.6.68-1" + }, + "libnvjitlink-dev-12-6": { + "filename": "pool/main/libn/libnvjitlink/libnvjitlink-dev-12-6_12.6.68-1_arm64.deb", + "sha256": "c97e77cef8833c13207ddaed119201434b643267be7c08f7e7f735467f7ec15b", + "source": "libnvjitlink", + "version": "12.6.68-1" + }, + "libnvjpeg-12-6": { + "filename": "pool/main/libn/libnvjpeg/libnvjpeg-12-6_12.3.3.54-1_arm64.deb", + "sha256": "0658635943cb77024c03990a9df0fd2543e4352377dff7b5a8654a87c4a54387", + "source": "libnvjpeg", + "version": "12.3.3.54-1" + }, + "libnvjpeg-dev-12-6": { + "filename": "pool/main/libn/libnvjpeg/libnvjpeg-dev-12-6_12.3.3.54-1_arm64.deb", + "sha256": "6414bacf8dcd7da1256a5251c32d1fa22d56c378dabc337d1a56d90eba631502", + "source": "libnvjpeg", + "version": "12.3.3.54-1" + }, + "libnvonnxparsers-dev": { + "filename": "pool/main/t/tensorrt/libnvonnxparsers-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "8a6675f3d444dead0e0430fb4e7e6b546af9d9a72414ee8964b18edf1fb28756", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvonnxparsers10": { + "filename": "pool/main/t/tensorrt/libnvonnxparsers10_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "042e21f28a271934d3c497504b41533e25f044893474e7567e3042e803384950", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "libnvvpi3": { + "filename": "pool/main/libn/libnvvpi3/libnvvpi3_3.2.4_arm64.deb", + "sha256": "5589eac155bba4a2f881963bb4e3c4cd06c7fc0fa12cb6d73196dca496daab1b", + "version": "3.2.4" + }, + "libopencv": { + "filename": "pool/main/libo/libopencv/libopencv_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "a43ac2a2f1fa7579fe526314bf04692ed6eca05ceb49447486e3ed46c3c85b67", + "version": "4.8.0-1-g6371ee1" + }, + "libopencv-dev": { + "filename": "pool/main/libo/libopencv-dev/libopencv-dev_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "09ad91e63b38fa432fb77b7a34ea956e4ac6c9a7d7ae00ad3a74591604ac1385", + "version": "4.8.0-1-g6371ee1" + }, + "libopencv-python": { + "filename": "pool/main/libo/libopencv-python/libopencv-python_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "739463b0755bc29deac458ad01948700d0e6680788a22eeda919bc44b3b43406", + "version": "4.8.0-1-g6371ee1" + }, + "libopencv-samples": { + "filename": "pool/main/libo/libopencv-samples/libopencv-samples_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "0dd890d6a410f1c7a3ca550c56685d8c4d26e6289827b314830141d49f7a4c08", + "version": "4.8.0-1-g6371ee1" + }, + "nsight-compute-2024.3.1": { + "filename": "pool/main/n/nsight-compute/nsight-compute-2024.3.1_2024.3.1.2-1_arm64.deb", + "sha256": "3907dce2827a6237648041d07968a75574e92b6cc9419ffacc44f41bf8c6cf47", + "source": "nsight-compute", + "version": "2024.3.1.2-1" + }, + "nsight-graphics-for-embeddedlinux-2024.2.0.0": { + "filename": "pool/main/n/nsight-graphics-for-embeddedlinux-2024.2.0.0/nsight-graphics-for-embeddedlinux-2024.2.0.0_2024.2.0.0_arm64.deb", + "sha256": "90ec132d56a3852a619693765e7473a34e007fdcb16d594cf99147083a972b17", + "version": "2024.2.0.0" + }, + "nsight-systems-2024.5.4": { + "filename": "pool/main/n/nsight-systems-2024.5.4/nsight-systems-2024.5.4_2024.5.4.34-245434855735v0_arm64.deb", + "sha256": "404b1d921366d94f60a027298523e295c5484ee6f6e3b8a27da304ad4fd92bad", + "version": "2024.5.4.34-245434855735v0" + }, + "nvidia-container": { + "filename": "pool/main/n/nvidia-container/nvidia-container_6.2+b77_arm64.deb", + "sha256": "98fecb14ed28fbb996bef93417448f476bdfb23ba408a2e4a0f46b7506a2cc3f", + "source": "nvidia-container (6.2)", + "version": "6.2+b77" + }, + "nvidia-container-toolkit": { + "filename": "pool/main/n/nvidia-container-toolkit/nvidia-container-toolkit_1.16.2-1_arm64.deb", + "sha256": "6bfca25bc5ea329fcc76897cef85371a85c50f714849666313332085069e8bb3", + "version": "1.16.2-1" + }, + "nvidia-container-toolkit-base": { + "filename": "pool/main/n/nvidia-container-toolkit/nvidia-container-toolkit-base_1.16.2-1_arm64.deb", + "sha256": "9f4db184a9ee96527e90d073ca32ab8baf199904066a90f49f01c6425f9ea79b", + "source": "nvidia-container-toolkit", + "version": "1.16.2-1" + }, + "nvidia-cuda": { + "filename": "pool/main/n/nvidia-cuda/nvidia-cuda_6.2+b77_arm64.deb", + "sha256": "dd5d3988f90c98bd2c7245e861543b30ced32cbb6c5699b80277ef000e1e961f", + "source": "nvidia-cuda (6.2)", + "version": "6.2+b77" + }, + "nvidia-cuda-dev": { + "filename": "pool/main/n/nvidia-cuda-dev/nvidia-cuda-dev_6.2+b77_arm64.deb", + "sha256": "a6ae7674c7023bef23d6667e19e4a506aa437747ee84f3dfad4a46483c4d07a5", + "source": "nvidia-cuda-dev (6.2)", + "version": "6.2+b77" + }, + "nvidia-cudnn": { + "filename": "pool/main/n/nvidia-cudnn/nvidia-cudnn_6.2+b77_arm64.deb", + "sha256": "e601adc982347f47d101800733eb912fafe0bad9bb6a3fb1942029cdc90cb34b", + "source": "nvidia-cudnn (6.2)", + "version": "6.2+b77" + }, + "nvidia-cudnn-dev": { + "filename": "pool/main/n/nvidia-cudnn-dev/nvidia-cudnn-dev_6.2+b77_arm64.deb", + "sha256": "9c7bb98e9abbee27af604034e4f59714ba473b2117a29cc54897a172c0698002", + "source": "nvidia-cudnn-dev (6.2)", + "version": "6.2+b77" + }, + "nvidia-cudnn9": { + "filename": "pool/main/n/nvidia-cudnn9/nvidia-cudnn9_6.1+b123_arm64.deb", + "sha256": "7685bd77097d574f0859c6728d7723755afc632fbcb6a67e2792961deca258c8", + "source": "nvidia-cudnn9 (6.1)", + "version": "6.1+b123" + }, + "nvidia-cudnn9-dev": { + "filename": "pool/main/n/nvidia-cudnn9-dev/nvidia-cudnn9-dev_6.1+b123_arm64.deb", + "sha256": "c45f5804e2457cb9b9166be0423431616d31754e1ef6a6a4bf5c7f11ad0af265", + "source": "nvidia-cudnn9-dev (6.1)", + "version": "6.1+b123" + }, + "nvidia-cupva": { + "filename": "pool/main/n/nvidia-cupva/nvidia-cupva_6.2+b77_arm64.deb", + "sha256": "8fa7efda033485080fb48f9013ff8c3ac2dd19f5d11d29bc206ac95eea28a699", + "source": "nvidia-cupva (6.2)", + "version": "6.2+b77" + }, + "nvidia-fs": { + "filename": "pool/main/n/nvidia-fs/nvidia-fs_2.22.3-1_arm64.deb", + "sha256": "c419c5c83dfaf152c98e1d5ba932adf5d022ce9d5505392bc59c66f7f1a83795", + "version": "2.22.3-1" + }, + "nvidia-fs-dkms": { + "filename": "pool/main/n/nvidia-fs/nvidia-fs-dkms_2.22.3-1_arm64.deb", + "sha256": "e8d20736c14058cb96045b50723130d0429c0e7f606bdcf44e0bced3aff2dd52", + "source": "nvidia-fs", + "version": "2.22.3-1" + }, + "nvidia-jetpack": { + "filename": "pool/main/n/nvidia-jetpack/nvidia-jetpack_6.2+b77_arm64.deb", + "sha256": "70553d4b5a802057f9436677ef8ce255db386fd3b5d24ff2c0a8ec0e485c59cd", + "source": "nvidia-jetpack (6.2)", + "version": "6.2+b77" + }, + "nvidia-jetpack-dev": { + "filename": "pool/main/n/nvidia-jetpack-dev/nvidia-jetpack-dev_6.2+b77_arm64.deb", + "sha256": "12404f223cb9b89a46a0dd3bf356a97f99146c4f1b3a596ae5add6f6b319168c", + "source": "nvidia-jetpack-dev (6.2)", + "version": "6.2+b77" + }, + "nvidia-jetpack-runtime": { + "filename": "pool/main/n/nvidia-jetpack-runtime/nvidia-jetpack-runtime_6.2+b77_arm64.deb", + "sha256": "77925ca1dd17d63bd690e512338bb65d7ae23847c12f1f1517116c3709acbecf", + "source": "nvidia-jetpack-runtime (6.2)", + "version": "6.2+b77" + }, + "nvidia-jetson-services": { + "filename": "pool/main/n/nvidia-jetson-services/nvidia-jetson-services_2.0.0_arm64.deb", + "sha256": "a38fb40c62e58f6831673602a44df73ad2da14937d0bd7fc80e6536bddd731eb", + "version": "2.0.0" + }, + "nvidia-l4t-cudadebuggingsupport": { + "filename": "pool/main/n/nvidia-l4t-cudadebuggingsupport/nvidia-l4t-cudadebuggingsupport_12.6-34622040.0_arm64.deb", + "sha256": "72c11a87ce3f741d2218957eb842d8a6061ca650ae0defc367ed322fffc45c46", + "version": "12.6-34622040.0" + }, + "nvidia-l4t-dla-compiler": { + "filename": "pool/main/n/nvidia-l4t-dla-compiler/nvidia-l4t-dla-compiler_36.4.3-20250107174145_arm64.deb", + "sha256": "928170c9e743257c063c235a610473cfec4be917a36f91a61a890ba2bfc47c94", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-gstreamer": { + "filename": "pool/main/n/nvidia-l4t-gstreamer/nvidia-l4t-gstreamer_36.4.3-20250107174145_arm64.deb", + "sha256": "93dbd3dc122b7181ab0a2573024dac972dd53c185830fcf1559b4d2b21870cb0", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-jetson-multimedia-api": { + "filename": "pool/main/n/nvidia-l4t-jetson-multimedia-api/nvidia-l4t-jetson-multimedia-api_36.4.3-20250107174145_arm64.deb", + "sha256": "c82bb071be5d8b87ab25ba3a57fab7d758e5aab5a538709fd70e911364eeb162", + "version": "36.4.3-20250107174145" + }, + "nvidia-nsight-graphics": { + "filename": "pool/main/n/nvidia-nsight-graphics/nvidia-nsight-graphics_6.2+b77_arm64.deb", + "sha256": "0b1023c6240c68c04a2d0654d88fb7ae3d6dc09f67bebbc437946e6f3bd29ea7", + "source": "nvidia-nsight-graphics (6.2)", + "version": "6.2+b77" + }, + "nvidia-nsight-systems": { + "filename": "pool/main/n/nvidia-nsight-systems/nvidia-nsight-systems_6.2+b77_arm64.deb", + "sha256": "7f1d2457ed15863bfdcd69f937e4a2a1a3b4d071863e1cd0ee5ac7353378af3c", + "source": "nvidia-nsight-systems (6.2)", + "version": "6.2+b77" + }, + "nvidia-opencv": { + "filename": "pool/main/n/nvidia-opencv/nvidia-opencv_6.2+b77_arm64.deb", + "sha256": "9202e589895d0ee3a22ed9ae9f936332a06672d9ecc74ae84e2651d1f1286c67", + "source": "nvidia-opencv (6.2)", + "version": "6.2+b77" + }, + "nvidia-opencv-dev": { + "filename": "pool/main/n/nvidia-opencv-dev/nvidia-opencv-dev_6.2+b77_arm64.deb", + "sha256": "2672d6789d4c5a827717da36eed86afb0aaa097fbd66b1e70dfa722a293b585c", + "source": "nvidia-opencv-dev (6.2)", + "version": "6.2+b77" + }, + "nvidia-tensorrt": { + "filename": "pool/main/n/nvidia-tensorrt/nvidia-tensorrt_6.2+b77_arm64.deb", + "sha256": "37b467e801f4d593cf34bfd4ea880f9c9c72a2e31bce740a41a909199672e772", + "source": "nvidia-tensorrt (6.2)", + "version": "6.2+b77" + }, + "nvidia-tensorrt-dev": { + "filename": "pool/main/n/nvidia-tensorrt-dev/nvidia-tensorrt-dev_6.2+b77_arm64.deb", + "sha256": "11d5af33ae0507960ade0d4c2064822ad3da9e0f5aec087ba7e273a5d29daf60", + "source": "nvidia-tensorrt-dev (6.2)", + "version": "6.2+b77" + }, + "nvidia-vpi": { + "filename": "pool/main/n/nvidia-vpi/nvidia-vpi_6.2+b77_arm64.deb", + "sha256": "32e45260df83668f46925568d0ed4a4cf08eccfe14c9322e9bd122a335048897", + "source": "nvidia-vpi (6.2)", + "version": "6.2+b77" + }, + "nvidia-vpi-dev": { + "filename": "pool/main/n/nvidia-vpi-dev/nvidia-vpi-dev_6.2+b77_arm64.deb", + "sha256": "5845e2e1db5ef3bbca22f1f7036b01c8cb9ff34256983cc59efad47e97ce3131", + "source": "nvidia-vpi-dev (6.2)", + "version": "6.2+b77" + }, + "opencv-licenses": { + "filename": "pool/main/o/opencv-licenses/opencv-licenses_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "9886503d64761eb5dc7eac0e2072ac91516a39fec2832c3e868787a8377873ee", + "version": "4.8.0-1-g6371ee1" + }, + "opencv-samples-data": { + "filename": "pool/main/o/opencv-samples-data/opencv-samples-data_4.8.0-1-g6371ee1_arm64.deb", + "sha256": "9e506af34a7b2a1583828365663521c80ed4a071892b23513f8e3f899db9b662", + "version": "4.8.0-1-g6371ee1" + }, + "pva-allow-2": { + "filename": "pool/main/p/pva-allow-2/pva-allow-2_2.0.5_all.deb", + "sha256": "cc20598f9076fdb9fba176c1e55c2065276236ba0a64305f1b9da94b98e4c301", + "version": "2.0.5" + }, + "pva-sdk-2.5-l4t": { + "filename": "pool/main/p/pva-sdk-2.5-l4t/pva-sdk-2.5-l4t_2.5.4_arm64.deb", + "sha256": "7a0b94aee7154753392c3b224ebd30f667046289255a574b760636e63242cb7a", + "version": "2.5.4" + }, + "python3-libnvinfer": { + "filename": "pool/main/t/tensorrt/python3-libnvinfer_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "d2b7d6e9755e7dc470c1bdb2a5564c0916989ae6a4b4063a1cbfc2510b644a6d", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "python3-libnvinfer-dev": { + "filename": "pool/main/t/tensorrt/python3-libnvinfer-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "a94bda70a4e6e28aee0dece0ea72dc76193cce7116e0365b394c1b42f54cedd3", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "python3-libnvinfer-dispatch": { + "filename": "pool/main/t/tensorrt/python3-libnvinfer-dispatch_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "b2c8b7b5e37953d8b30e8993d99ef0e89ffdafdc71c2249e1f7b34ce5c592002", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "python3-libnvinfer-lean": { + "filename": "pool/main/t/tensorrt/python3-libnvinfer-lean_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "521d353e2fa1e3ba1d2735b724218a1d2296e180c73a1879bcc3985dddd2bd06", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "python3.10-vpi3": { + "filename": "pool/main/p/python3.10-vpi3/python3.10-vpi3_3.2.4_arm64.deb", + "sha256": "5287483f97ff1c0ea734957f2a16e2b27f1e81b8bc634d69dfdcf73662fd4d26", + "version": "3.2.4" + }, + "tensorrt": { + "filename": "pool/main/t/tensorrt/tensorrt_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "5185fc2cb820d2adbcd42374d341002b5ebc105321e12d1ad6d25855c23d39fd", + "version": "10.3.0.30-1+cuda12.5" + }, + "tensorrt-dev": { + "filename": "pool/main/t/tensorrt/tensorrt-dev_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "2f1ddc135b31d7bc065131097196fd25e79305c25863a87d37c7c7e5dfc47434", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "tensorrt-libs": { + "filename": "pool/main/t/tensorrt/tensorrt-libs_10.3.0.30-1+cuda12.5_arm64.deb", + "sha256": "9804a2640442eef173b6f6fae6acd2729ddc40d4ed8f31a0beaaec859616d95b", + "source": "tensorrt", + "version": "10.3.0.30-1+cuda12.5" + }, + "vpi3-dev": { + "filename": "pool/main/v/vpi3-dev/vpi3-dev_3.2.4_arm64.deb", + "sha256": "6425dbf2c0fc00b2ab5b323c3834bda52edad7101d80176b0385c2a1d0e63ce8", + "version": "3.2.4" + }, + "vpi3-python-src": { + "filename": "pool/main/v/vpi3-python-src/vpi3-python-src_3.2.4_arm64.deb", + "sha256": "7e4962fa3a45214b82d1c09a7747e7ec2e0bc2cd57183f1aa8d4b4dbdbc22dc2", + "version": "3.2.4" + }, + "vpi3-samples": { + "filename": "pool/main/v/vpi3-samples/vpi3-samples_3.2.4_arm64.deb", + "sha256": "e7850f6675856507b5064c23315934a025e811ebf1264f059670730e45885eec", + "version": "3.2.4" + } + }, + "t234": { + "jetson-gpio-common": { + "filename": "pool/main/j/jetson-gpio/jetson-gpio-common_2.1.7ubuntu1_arm64.deb", + "sha256": "a378148c985c1e7853ff4c14b84b3db0757ffe96adf3f5c6efc2a326e30a0be5", + "source": "jetson-gpio", + "version": "2.1.7ubuntu1" + }, + "nvidia-igx-bootloader": { + "filename": "pool/main/n/nvidia-igx-bootloader/nvidia-igx-bootloader_36.4.3-20250107174145_arm64.deb", + "sha256": "54458be75ab032b41fbfc39f3719788d33e5be622bbd4c345bf80472a07f72a4", + "version": "36.4.3-20250107174145" + }, + "nvidia-igx-oem-config": { + "filename": "pool/main/n/nvidia-igx-oem-config/nvidia-igx-oem-config_36.4.3-20250107174145_arm64.deb", + "sha256": "702c40a7c9515b7f00eaae4e9126a0f6373e49b3fdd654fcd64f912448506f1b", + "version": "36.4.3-20250107174145" + }, + "nvidia-igx-systemd-reboot-hooks": { + "filename": "pool/main/n/nvidia-igx-systemd-reboot-hooks/nvidia-igx-systemd-reboot-hooks_36.4.3-20250107174145_arm64.deb", + "sha256": "6f8b59f00ee60d16a2230562faa06f2e96e956e9909e723d36233737e411b137", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-3d-core": { + "filename": "pool/main/n/nvidia-l4t-3d-core/nvidia-l4t-3d-core_36.4.3-20250107174145_arm64.deb", + "sha256": "ab19b524f942b35d21cc7893cf5b8a5d0a4007614e88c27dd85e2668a537cc5c", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-apt-source": { + "filename": "pool/main/n/nvidia-l4t-apt-source/nvidia-l4t-apt-source_36.4.3-20250107174145_arm64.deb", + "sha256": "f058ce7827bcab8efceec57f36deea1e0d07cc57afc9ff7f912dbb8b02b875a9", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-bootloader": { + "filename": "pool/main/n/nvidia-l4t-bootloader/nvidia-l4t-bootloader_36.4.3-20250107174145_arm64.deb", + "sha256": "5e36d1ebca83aaf8e4cda8621c60c3c8d224e02ab0f27e907510821d0f3c9f0d", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-camera": { + "filename": "pool/main/n/nvidia-l4t-camera/nvidia-l4t-camera_36.4.3-20250107174145_arm64.deb", + "sha256": "4483a57b203968caff0d36d7eebf8671fca6707fc9d7b77d42f4061f7ac0db42", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-configs": { + "filename": "pool/main/n/nvidia-l4t-configs/nvidia-l4t-configs_36.4.3-20250107174145_arm64.deb", + "sha256": "3af8e6c3791311ced4487d8eb7d5327a830f6579ea0a77a59d00faf324b4ce62", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-core": { + "filename": "pool/main/n/nvidia-l4t-core/nvidia-l4t-core_36.4.3-20250107174145_arm64.deb", + "sha256": "06e58e0decd9af534b3eeb23958ff9cb95d61079f2af443ec3908957a2d7e82b", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-cuda": { + "filename": "pool/main/n/nvidia-l4t-cuda/nvidia-l4t-cuda_36.4.3-20250107174145_arm64.deb", + "sha256": "b89095c419488d37212cbd10969277cf6e60922be89ee98cd83bbfdaed03ef86", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-cuda-utils": { + "filename": "pool/main/n/nvidia-l4t-cuda-utils/nvidia-l4t-cuda-utils_36.4.3-20250107174145_arm64.deb", + "sha256": "b57b29bbdfd13611c3c859411d422d72ed044efa6a92145e72e720e43d7072cd", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-dgpu-tools": { + "filename": "pool/main/n/nvidia-l4t-dgpu-tools/nvidia-l4t-dgpu-tools_36.4.3-20250107174145_arm64.deb", + "sha256": "178eff3c706280f82d1646554634c789bff5b47f1885852af7fdfe81c6426fa0", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-display-kernel": { + "filename": "pool/main/n/nvidia-l4t-display-kernel/nvidia-l4t-display-kernel_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "b012be571abd2759b4f4f04f8b33ec27b99d896b2e847cf9d5d3890042f727c5", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-factory-service": { + "filename": "pool/main/n/nvidia-l4t-factory-service/nvidia-l4t-factory-service_36.4.3-20250107174145_arm64.deb", + "sha256": "9a1d244682404a6f4b06bb92e0dea1cdce05c9737c6ea9cdbfd3144be9f01321", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-firmware": { + "filename": "pool/main/n/nvidia-l4t-firmware/nvidia-l4t-firmware_36.4.3-20250107174145_arm64.deb", + "sha256": "ec89d6a5c449bc6e7e89127bc7390bea7a113a69f92a4dc15462e9e943fad3ab", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-gbm": { + "filename": "pool/main/n/nvidia-l4t-gbm/nvidia-l4t-gbm_36.4.3-20250107174145_arm64.deb", + "sha256": "3131b3bd47c616732934bc9db32c65e7664b591e00308547b2dc3b960fe8bf76", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-graphics-demos": { + "filename": "pool/main/n/nvidia-l4t-graphics-demos/nvidia-l4t-graphics-demos_36.4.3-20250107174145_arm64.deb", + "sha256": "830f49b6b25ec7a8e682be1d700bee642a8ad324411722ce0b4214960d0aeb41", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-init": { + "filename": "pool/main/n/nvidia-l4t-init/nvidia-l4t-init_36.4.3-20250107174145_arm64.deb", + "sha256": "3a396551d88ebebd70b1eae57ed74837e82485c7897ab1c233735f3ea63e8215", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-initrd": { + "filename": "pool/main/n/nvidia-l4t-initrd/nvidia-l4t-initrd_36.4.3-20250107174145_arm64.deb", + "sha256": "161f0ee23c94730953f280a1d338787afa78bf35c46606f7687439f0907b443d", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-jetson-io": { + "filename": "pool/main/n/nvidia-l4t-jetson-io/nvidia-l4t-jetson-io_36.4.3-20250107174145_arm64.deb", + "sha256": "9d504c59f81ea9b4642d8e0bb3c4bb875147ac2438ca9201b9e2e850ec77048d", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-jetson-orin-nano-qspi-updater": { + "filename": "pool/main/n/nvidia-l4t-jetson-orin-nano-qspi-updater/nvidia-l4t-jetson-orin-nano-qspi-updater_36.4.3-20250107174145_arm64.deb", + "sha256": "f0a99de8822d20769ec4b18ee79f240a3fabd91533f3aad5a9ed19e32c0f8d5e", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-jetsonpower-gui-tools": { + "filename": "pool/main/n/nvidia-l4t-jetsonpower-gui-tools/nvidia-l4t-jetsonpower-gui-tools_36.4.3-20250107174145_arm64.deb", + "sha256": "2fd4f4f00251f31177d9b5ae9e482bd3f07b20f68ab90cfe680760fef851865b", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-kernel": { + "filename": "pool/main/n/nvidia-l4t-kernel/nvidia-l4t-kernel_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "243c42b541814d98f2ceb325ec9fad437309c08862b85d5280cd6bcbdbbe7c5d", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-kernel-dtbs": { + "filename": "pool/main/n/nvidia-l4t-kernel-dtbs/nvidia-l4t-kernel-dtbs_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "498947be0ab0feac9fcd67c7a0fc9840c67bb6e94d03f1261f0b54193d2924cc", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-kernel-headers": { + "filename": "pool/main/n/nvidia-l4t-kernel-headers/nvidia-l4t-kernel-headers_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "8734cd9df3eddfb4fd677cb1bf72b136c1a1d286bcf4655a998a8eefe6202fef", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-kernel-oot-headers": { + "filename": "pool/main/n/nvidia-l4t-kernel-oot-headers/nvidia-l4t-kernel-oot-headers_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "9c44c3f220760f5cf056aed8e588c66657239554241ece8281fc605bebec37cd", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-kernel-oot-modules": { + "filename": "pool/main/n/nvidia-l4t-kernel-oot-modules/nvidia-l4t-kernel-oot-modules_5.15.148-tegra-36.4.3-20250107174145_arm64.deb", + "sha256": "81580995d7f085100cc928d06f9c8b4f315cb313ba2dfa6cfc0b8e40125369ab", + "version": "5.15.148-tegra-36.4.3-20250107174145" + }, + "nvidia-l4t-libwayland-client0": { + "filename": "pool/main/n/nvidia-l4t-libwayland-client0/nvidia-l4t-libwayland-client0_36.4.3-20250107174145_arm64.deb", + "sha256": "2a900d20033bc6780a67d95341ef44a5ff8a90ddbf7a7f6de15e195cedaad03e", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-libwayland-cursor0": { + "filename": "pool/main/n/nvidia-l4t-libwayland-cursor0/nvidia-l4t-libwayland-cursor0_36.4.3-20250107174145_arm64.deb", + "sha256": "7d4fcb6417c493d2d98bfbbb2726e607c5bfda4a578aded06131fb76ac9dafa3", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-libwayland-egl1": { + "filename": "pool/main/n/nvidia-l4t-libwayland-egl1/nvidia-l4t-libwayland-egl1_36.4.3-20250107174145_arm64.deb", + "sha256": "d79ffddd63141b90be221768878e7ddbf8a1a6d8a05efa74b5cf549bf94b3697", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-libwayland-server0": { + "filename": "pool/main/n/nvidia-l4t-libwayland-server0/nvidia-l4t-libwayland-server0_36.4.3-20250107174145_arm64.deb", + "sha256": "33d9fbdb238f22cea828283a9f19e5eb4dcf087009b6475453267392c512bbbd", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-multimedia": { + "filename": "pool/main/n/nvidia-l4t-multimedia/nvidia-l4t-multimedia_36.4.3-20250107174145_arm64.deb", + "sha256": "a3067000eb63ebe954684367464e7f1de213abb0c78ec3400a59ceb9acdf69bb", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-multimedia-utils": { + "filename": "pool/main/n/nvidia-l4t-multimedia-utils/nvidia-l4t-multimedia-utils_36.4.3-20250107174145_arm64.deb", + "sha256": "8e57f5a9a8f9c7cf2045a3031c0ad397024f62ce7e14d1e34f65e631788c10b9", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-nvfancontrol": { + "filename": "pool/main/n/nvidia-l4t-nvfancontrol/nvidia-l4t-nvfancontrol_36.4.3-20250107174145_arm64.deb", + "sha256": "5ab541e2f32342da1dc74c83a309537b80ba3566f7b8050d554861ec5eebf0dc", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-nvml": { + "filename": "pool/main/n/nvidia-l4t-nvml/nvidia-l4t-nvml_36.4.3-20250107174145_arm64.deb", + "sha256": "c2e29277178d40c156b4c597f7f1d14f4330de84c71bf7785ef76ddaa23e812f", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-nvpmodel": { + "filename": "pool/main/n/nvidia-l4t-nvpmodel/nvidia-l4t-nvpmodel_36.4.3-20250107174145_arm64.deb", + "sha256": "7e6b9fd7b0ab74606e086540f9f21afa9d092989b6c831561a35b090389b1c93", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-nvpmodel-gui-tools": { + "filename": "pool/main/n/nvidia-l4t-nvpmodel-gui-tools/nvidia-l4t-nvpmodel-gui-tools_36.4.3-20250107174145_arm64.deb", + "sha256": "0484618e76d97a13e3c9e5075f930cfc1297fbcb38cd617196aff83c8065e193", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-nvsci": { + "filename": "pool/main/n/nvidia-l4t-nvsci/nvidia-l4t-nvsci_36.4.3-20250107174145_arm64.deb", + "sha256": "49a965b5339d07de91f5ed556609dbeb5dfcc7998747c5c7e070a558ea10602e", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-oem-config": { + "filename": "pool/main/n/nvidia-l4t-oem-config/nvidia-l4t-oem-config_36.4.3-20250107174145_arm64.deb", + "sha256": "7b7770f6124e9a345cacdd9f829021de37e480eca736f183d273da21cca520be", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-openwfd": { + "filename": "pool/main/n/nvidia-l4t-openwfd/nvidia-l4t-openwfd_36.4.3-20250107174145_arm64.deb", + "sha256": "a75f89fddaa76668da559efa6969cc938e86f3d475438e1458b062003fdcdbb2", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-optee": { + "filename": "pool/main/n/nvidia-l4t-optee/nvidia-l4t-optee_36.4.3-20250107174145_arm64.deb", + "sha256": "7e2f1812e09f048b8f019c16a7062b4b15c3f1b3eb5b33e17e736439687329c5", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-pva": { + "filename": "pool/main/n/nvidia-l4t-pva/nvidia-l4t-pva_36.4.3-20250107174145_arm64.deb", + "sha256": "8caa940b0bbd81958f523cda7fde8b7c4a91ef41caa9d68c5ab0271ce8553bf2", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-tools": { + "filename": "pool/main/n/nvidia-l4t-tools/nvidia-l4t-tools_36.4.3-20250107174145_arm64.deb", + "sha256": "5e861d7dea1dca2709461e4831946968fe526f31eb87fa205a7b073d2a151ac3", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-vulkan-sc": { + "filename": "pool/main/n/nvidia-l4t-vulkan-sc/nvidia-l4t-vulkan-sc_36.4.3-20250107174145_arm64.deb", + "sha256": "a512ecfd9fda277b984678537b71da5997d0ecf6151ad2f55a194407696f12aa", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-vulkan-sc-dev": { + "filename": "pool/main/n/nvidia-l4t-vulkan-sc-dev/nvidia-l4t-vulkan-sc-dev_36.4.3-20250107174145_arm64.deb", + "sha256": "234db2c177297c5881d40c30deb42591180fa5369915c2c9a3d5e7a2f31c0b5b", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-vulkan-sc-samples": { + "filename": "pool/main/n/nvidia-l4t-vulkan-sc-samples/nvidia-l4t-vulkan-sc-samples_36.4.3-20250107174145_arm64.deb", + "sha256": "d1b3d23abd468d337a3f774dea21d9b1553776eb7de856eaa9145261e5f78f60", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-vulkan-sc-sdk": { + "filename": "pool/main/n/nvidia-l4t-vulkan-sc-sdk/nvidia-l4t-vulkan-sc-sdk_36.4.3-20250107174145_arm64.deb", + "sha256": "a02ea891d3c5b53295793d2fdda93263d4439b999f6c2a12c3a4b713bc2773c6", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-wayland": { + "filename": "pool/main/n/nvidia-l4t-wayland/nvidia-l4t-wayland_36.4.3-20250107174145_arm64.deb", + "sha256": "9f5f77010f5b332dd5ef9bfaba9f397c2bb2dc4ef8e929c0ab1e73f121762f46", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-weston": { + "filename": "pool/main/n/nvidia-l4t-weston/nvidia-l4t-weston_36.4.3-20250107174145_arm64.deb", + "sha256": "9b86cc6f103bfbe1f188820a400b698b5fcfbbf98d9d338dadb3038a9f37ce57", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-x11": { + "filename": "pool/main/n/nvidia-l4t-x11/nvidia-l4t-x11_36.4.3-20250107174145_arm64.deb", + "sha256": "952db06d6fd11ef547cc74b8cc93377529f7d2b06a3472b4824dc647c78743e3", + "version": "36.4.3-20250107174145" + }, + "nvidia-l4t-xusb-firmware": { + "filename": "pool/main/n/nvidia-l4t-xusb-firmware/nvidia-l4t-xusb-firmware_36.4.3-20250107174145_arm64.deb", + "sha256": "411a41513403cc306a07aaa7e27453398e857c8f7fe0f746086202f4c7c3ff62", + "version": "36.4.3-20250107174145" + }, + "python-jetson-gpio": { + "filename": "pool/main/j/jetson-gpio/python-jetson-gpio_2.1.7ubuntu1_arm64.deb", + "sha256": "234950a48ec85815fc3847617cc05390487a50b659b2320f63ca96d68a69fd16", + "source": "jetson-gpio", + "version": "2.1.7ubuntu1" + }, + "python3-jetson-gpio": { + "filename": "pool/main/j/jetson-gpio/python3-jetson-gpio_2.1.7ubuntu1_arm64.deb", + "sha256": "32f23da75cd21749390529571f339098ee2ead646c60116da84627c5713fa78c", + "source": "jetson-gpio", + "version": "2.1.7ubuntu1" + } + } +} diff --git a/sourceinfo/r36.4.3-gitrepos.json b/sourceinfo/r36.4.3-gitrepos.json new file mode 100644 index 00000000..8be9af91 --- /dev/null +++ b/sourceinfo/r36.4.3-gitrepos.json @@ -0,0 +1,410 @@ +{ + "dtc-src/1.4.5": { + "date": "2025-01-21T05:25:07-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-FJocmB5uPrngj2KRTON8jn0mM6Zht3GhWI1GxniExcI=", + "leaveDotGit": false, + "path": "/nix/store/h7wi95xgp99zmwvc3607yh1irai20ih6-1.4.5", + "rev": "2cc61f91f230f2a62c5222a39dfd91b783a7c1a6", + "sha256": "1hn5hiwccildb2hp3dv1lqrjczcfgkilr4b2izhbjgkf3sc1r6hl", + "url": "https://nv-tegra.nvidia.com/3rdparty/dtc-src/1.4.5.git" + }, + "hardware/nvidia/t23x/nv-public": { + "date": "2024-12-25T10:18:53-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-YF4gyPH8he35tRg8DdcnPgI2Nm7ca3RNn+BnHAm5PnM=", + "leaveDotGit": false, + "path": "/nix/store/cr3qyqf2mw91m9z3kipwh18cydfwdf25-t23x-public-dts", + "rev": "85ce314b25a2f112ee4411dca63ecb72cbe508ff", + "sha256": "0wryp44iqrz0kx6p8sywdqv3c0iy4zbhsg0qnpwyv1gwy7420pk0", + "url": "https://nv-tegra.nvidia.com/device/hardware/nvidia/t23x-public-dts.git" + }, + "hardware/nvidia/tegra/nv-public": { + "date": "2023-06-28T02:06:21-07:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-NMp7UY0OlH2ddBSrUzCUSLkvnWrELhz8xH/dkV86ids=", + "leaveDotGit": false, + "path": "/nix/store/18pwc2x6sl43b6a1i895x58v3ag3dx2k-tegra-public-dts", + "rev": "8ba5d53ef1e1753f9f2a5b1f7b7b5fc5039de68e", + "sha256": "1nw979gr3pbzqky1qbn4dafjzfa8jhq57aqlfjfpv50fim8ppjil", + "url": "https://nv-tegra.nvidia.com/device/hardware/nvidia/tegra-public-dts.git" + }, + "hwpm": { + "date": "2024-08-01T10:24:36-07:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-otOVFeF+8XKORWMXTRTcXQUXvojdwInVC3jPXTgrk3A=", + "leaveDotGit": false, + "path": "/nix/store/19n1mf5knlz7wrh8xf0g5an9kiqn5i95-linux-hwpm", + "rev": "d47dc62f4011ffbb0353ba43df5cfb42b967bef2", + "sha256": "0w4k5cw5vkvq1gaqkh6xi2z1f1axvha4s5v38n775wbyw4arblx2", + "url": "https://nv-tegra.nvidia.com/linux-hwpm.git" + }, + "kernel-devicetree": { + "date": "2024-05-29T18:53:06Z", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-mFmxO7rg1DWnYK+HDFQnc9XLpS4lwXfSXGOibKC4FPY=", + "leaveDotGit": false, + "path": "/nix/store/hcnjzmavdp7wx4bslpr40rrjcm99q4vz-kernel-devicetree", + "rev": "19952c8e25702e9de23500c3b1fb351bf4380446", + "sha256": "1xhlp2h6r8k3bk97gh955sjwpmbk4xa0r1xgc2kkbm70p8xv2ncq", + "url": "https://nv-tegra.nvidia.com/linux/kernel-devicetree.git" + }, + "kernel/kernel-jammy-src": { + "date": "2024-09-12T20:40:42-07:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-WzSLoaSP5bWg6x0QAD+2FO1z6cEA3s1rWpMoKbc5kfk=", + "leaveDotGit": false, + "path": "/nix/store/8vr7l69pbvps7kqafvhk2dvd9j561cd0-linux-jammy", + "rev": "dac1b0b4ecfc5b1aae9617011565f6c6c4a72171", + "sha256": "1yci76vjja4kb9mwvph0q7lp7v8lnqzh040xxfhbbrcgljhqnd2v", + "url": "https://nv-tegra.nvidia.com/3rdparty/canonical/linux-jammy.git" + }, + "nvdisplay": { + "date": "2025-01-21T05:25:10-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-ZgoEXl4G5/lk+i5pdwqPwTi8eRNi+kLvC1hxmRZzj3k=", + "leaveDotGit": false, + "path": "/nix/store/g01kbwk24mrvjpl09bbj8n8jz2l36f2c-nv-kernel-display-driver", + "rev": "b2fb5ad0da0c8f24f7e5221b761cc01b4eadaa79", + "sha256": "0ycgfcb9jwaq1gpl5yk22dwvqf61iw57fs9fz9jgkrq6brg082k6", + "url": "https://nv-tegra.nvidia.com/tegra/kernel-src/nv-kernel-display-driver.git" + }, + "nvethernetrm": { + "date": "2023-06-06T02:05:11-07:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-cTJagcO7TYG0eT0dgZn67hX/EKT04OrTYvwBwWEe1YU=", + "leaveDotGit": false, + "path": "/nix/store/ryzmhzxifq2rxhjin3d4a7a0c561qzxh-nvethernetrm", + "rev": "1150fc9b2976463a6d839c3515d012b5a27a367b", + "sha256": "11fm3rhw20gwcb9ymq7llh8gy5gfzacq279xg6s82kdvqf0mlcki", + "url": "https://nv-tegra.nvidia.com/kernel/nvethernetrm.git" + }, + "nvgpu": { + "date": "2024-12-17T15:54:04-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-qI/YRdPIvXEDb4AU+ksLmgiwcGlSHLJTw2N/B/yOFpY=", + "leaveDotGit": false, + "path": "/nix/store/gvnsifv7wy7nl27fgwvi3v7fhrxgq4r8-linux-nvgpu", + "rev": "8a0a5345705e069e398a79dbcba96c5db54a37f1", + "sha256": "15hnivy0fzv3qd9v472jd5qb024s1d5zl540dw1p3gf8sd2xi3x8", + "url": "https://nv-tegra.nvidia.com/linux-nvgpu.git" + }, + "nvidia-oot": { + "date": "2024-12-17T15:56:55-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-SixXSU0lhOC3V1nII1YdEpyGXR0fxOS8rI7CHaWbFzo=", + "leaveDotGit": false, + "path": "/nix/store/ifvppy5p9vis4bwcazan6aw6nqva4s6n-linux-nv-oot", + "rev": "087418781c377c7e1aeae138024ef5c81950f85e", + "sha256": "0fhpkfjivhlfmjyf9i0z3mfqd70j3mb27j2rayvy11159m4mfb2a", + "url": "https://nv-tegra.nvidia.com/linux-nv-oot.git" + }, + "tegra/argus-cam-libav/argus_cam_libavencoder": { + "date": "2025-01-21T05:24:48-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-3wmV6I5/HOGreqCHt/lXO/qzuKRp5IYheI6pnYFKK1k=", + "leaveDotGit": false, + "path": "/nix/store/vancmbi7653k3wgqgvkf55llbjqcmvig-argus_cam_libavencoder", + "rev": "915c81c0e566cabfb2905d2613e3dd20bf3ac7d1", + "sha256": "0n9b9a0rvacfg0hqdr39ljwb7yivazwvg1x0gamy273zivl9a2fz", + "url": "https://nv-tegra.nvidia.com/tegra/argus-cam-libav/argus_cam_libavencoder.git" + }, + "tegra/cuda-src/nvsample_cudaprocess": { + "date": "2025-01-21T05:25:07-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-FkwWv++PL/0lxSCkBKEV8wqlI/Zby9i6vfsAq88tlMQ=", + "leaveDotGit": false, + "path": "/nix/store/9hhx3rdch7y2r896vzklkkyp0grqfpn5-nvsample_cudaprocess", + "rev": "15f8722ed872496f4c6d91946f3d969309882561", + "sha256": "1i4l5p7sn07vpnxdijsvyqisa2pk2nhh9910qljzsbwgxyzick0n", + "url": "https://nv-tegra.nvidia.com/tegra/cuda-src/nvsample_cudaprocess.git" + }, + "tegra/gfx-src/nv-xconfig": { + "date": "2025-01-21T05:24:49-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-UEid/cAtfLbwg1PEFm42+U+qJZIS73eDEgC5lKsZFyI=", + "leaveDotGit": false, + "path": "/nix/store/5pjpplmg097lihk9fcmy8i20g6x1xc6k-nv-xconfig", + "rev": "89880fc278ba498ebbe7d30417bebfccc482bdc3", + "sha256": "08hp36mr9f802a1pgvqjj8jslkzr6rp1di2khgqbcz1dq3yrsj2h", + "url": "https://nv-tegra.nvidia.com/tegra/gfx-src/nv-xconfig.git" + }, + "tegra/gst-src/gst-egl": { + "date": "2025-01-21T05:24:50-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-IFSfv30DK0El5yQ7JnkRBcI5iYoS5s2fYVc4J8P99sc=", + "leaveDotGit": false, + "path": "/nix/store/jnmy0gcrjgpi5q70y7iv8f2m4i31487f-gst-egl", + "rev": "4be089e6fb43ada35a8cbfab855b5645170bd25d", + "sha256": "1iznzp1jff2pc6gwvrhjia4kkhh525wjcfr4wwjl2aq3gnzrym10", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-egl.git" + }, + "tegra/gst-src/gst-jpeg": { + "date": "2025-01-21T05:24:50-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-YCy4NUl0GHAKoimiNLtDspOX/7vPYuhTqU6dJRIdjpI=", + "leaveDotGit": false, + "path": "/nix/store/g9pps0cv87cvbkr0paiw7zajfsb2g6w0-gst-jpeg", + "rev": "23634be9d6a242e6306f3aa5abed1899f2311ddf", + "sha256": "14lf3l92b7afm59yhqngpgzrg4xj8fxk98i9l857063l94svhb30", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-jpeg.git" + }, + "tegra/gst-src/gst-nvarguscamera": { + "date": "2025-01-21T05:25:06-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-VZwWNpy3qQ9PeAxtY+fP3cVYdlqCqPIXd64R3yANgXg=", + "leaveDotGit": false, + "path": "/nix/store/3bw1hrj82di6zzmy5xfzhyvylvklrgif-gst-nvarguscamera", + "rev": "77e672c5eabad3bf794f368725bb704991c51766", + "sha256": "0y411lhdy4dffwbz5a42b9v5iifxrzkn6v8cg17hzadpkhv1d72m", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvarguscamera.git" + }, + "tegra/gst-src/gst-nvcompositor": { + "date": "2025-01-21T05:25:19-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-3JR66vm2x6gyTQtiVqr5OMuWHlokKChjtq2MoS65mz4=", + "leaveDotGit": false, + "path": "/nix/store/5xh06w9kcxbd59w97w5j0873mfz8f2cf-gst-nvcompositor", + "rev": "79855ba9fccb3f7f149c7828f4449414eb5193e8", + "sha256": "0glvp4pa335dnrijha14b8g9djrqz6m5cqhb9lraiixnz7m7m56w", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvcompositor.git" + }, + "tegra/gst-src/gst-nvtee": { + "date": "2025-01-21T05:24:46-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-l3XGzRvzWIj1edFzladO2sNDix2P7xGGZWh7/3bgn7c=", + "leaveDotGit": false, + "path": "/nix/store/r21f6w4kpgpnpc3l6vbybzacycvbf3hb-gst-nvtee", + "rev": "6c60322bfac866d6200bccb71832c3b282a2415e", + "sha256": "1dwzw1vgyyv8cn313vwg3n5l7hys9skrawyig7sqhn7k3g6wcxcp", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvtee.git" + }, + "tegra/gst-src/gst-nvv4l2camera": { + "date": "2025-01-21T05:25:11-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-UYtfmzByrRC1QOkQ48Q7s4BNJVE5vPIpR1yyKjIzuwI=", + "leaveDotGit": false, + "path": "/nix/store/clnkpy0r4c43jz2jv1mkqk6fsancwr12-gst-nvv4l2camera", + "rev": "bb0d46b972a70c6a9159c4f49cae932edee4073a", + "sha256": "00mv6cr2mcjw8wlz5g1ra4jlv05k7g2f647982si1bbj62dmz2si", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvv4l2camera.git" + }, + "tegra/gst-src/gst-nvvidconv": { + "date": "2025-01-21T05:25:20-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-SGS3qf9E8XzfrsAFyQIYNG9nctFgx/ve/O8UiX+6rkE=", + "leaveDotGit": false, + "path": "/nix/store/gzzgn0zh0gfbwwnw5jkr60zl1bg3nx6r-gst-nvvidconv", + "rev": "9587d3aea68b7aa1ceb70f6ceb6691c4e3852867", + "sha256": "0hdfp9zqj57gzkggpiv0s5r6fvrl301cj1f0mvgprwa4zylvfr28", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvvidconv.git" + }, + "tegra/gst-src/gst-nvvideo4linux2": { + "date": "2025-01-21T05:24:47-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-lo6olm3Jm4Vqzf7pVEI9NF+Z1oiU7/nsHGfWTfHzqV8=", + "leaveDotGit": false, + "path": "/nix/store/bzxa8rg7w88012kl7qxwa1az9c7z3db4-gst-nvvideo4linux2", + "rev": "e102cca855e8f241a48ffb3f280046bea8d8062f", + "sha256": "0px9ygqlvmk73kngkvwli3b9jprl7m159sgyrmm8b6y9dnbai3ln", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/gst-nvvideo4linux2.git" + }, + "tegra/gst-src/libgstnvcustomhelper": { + "date": "2025-01-21T05:24:48-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-IYgNCwQXBQi88BLwyqxIrI7bnvcxcsyf07WO5ctYWWs=", + "leaveDotGit": false, + "path": "/nix/store/7g771whpkplg2j1p7dnzkird8wsyx11h-libgstnvcustomhelper", + "rev": "c71b7aad17ba4684fd093c137bb8d8b67c364d8a", + "sha256": "0ssrb35yb3mmsfgwqwiiyygdp3mc92ncmw0jy2y0h18p0h5hv211", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/libgstnvcustomhelper.git" + }, + "tegra/gst-src/libgstnvdrmvideosink": { + "date": "2025-01-21T05:24:47-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-GS+Gz8g2s0nP3s5nYQwTrTwydr4G7TfdvLzTd+2u51Y=", + "leaveDotGit": false, + "path": "/nix/store/i6ggc2jp9dhg1crn81qpvhvffcvvvr2h-libgstnvdrmvideosink", + "rev": "fe43724fe449664f46bc79f6fe2fe0356e8af305", + "sha256": "0mp7mvnpglxwpkfkgv86prv34g5d2c662ryfvv7lkcrnr37qcbqr", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/libgstnvdrmvideosink.git" + }, + "tegra/gst-src/libgstnvvideosinks": { + "date": "2025-01-21T05:25:21-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-ZOgTA1oQ2hRIdQ+vPPleKKDbnj3dD0ZivURcXqaAA6Q=", + "leaveDotGit": false, + "path": "/nix/store/dk4dr582b7m38hml95ygyl71hll3qlsy-libgstnvvideosinks", + "rev": "677753a9ee9661fa94bbf09c47c6477e56ae62a1", + "sha256": "1903h2k5wp24pmi4c3yx7ngdp818bvwkrbqgfm419nhhb81i7s34", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/libgstnvvideosinks.git" + }, + "tegra/gst-src/nvgstapps": { + "date": "2025-01-21T05:25:21-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-EZysmimkyi86Vq8dHuh8u9wOpZOE4hJbm1auTSn9srg=", + "leaveDotGit": false, + "path": "/nix/store/xbbj7p784nhq71rxkbkvif7a1cbi9gva-nvgstapps", + "rev": "4b224ccaf2346f7b7b8a21b94b00bc07b337f6bd", + "sha256": "1f5jzlllvbjnkddi5ql4jfjhxp5vgkl1w7dgaqx2zjm456dar70i", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/nvgstapps.git" + }, + "tegra/gst-src/opencv_gst_samples": { + "date": "2025-01-21T05:25:06-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-F3QN2lsB8RNmxEmnko+rhLTbTNiIpQ8/sOTo2UdghH4=", + "leaveDotGit": false, + "path": "/nix/store/zmnha6w9icn02vk61k86di6kdsx0h1p5-opencv_gst_samples", + "rev": "b49f0d21cf167c6dbba1721d18b18723dda06e9a", + "sha256": "0zl4c13xks74n0zhz9c8v16dpd44mf7r59s9qik17w81bgd0sx0p", + "url": "https://nv-tegra.nvidia.com/tegra/gst-src/opencv_gst_samples.git" + }, + "tegra/nv-sci-src/nvsci_headers": { + "date": "2025-01-21T05:25:20-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-UJYg8CWqUXa2m2lolNlEGqawwzrHoYMluejWqWh5rWU=", + "leaveDotGit": false, + "path": "/nix/store/c034vdkv8rg06g3cixbs1fpy645rxn45-nvsci_headers", + "rev": "2c56c6ae8d3e6c8fc8b617e992dd7b746c8548d3", + "sha256": "0rddg5lakmp8p4jq78f77b1v19hs8kcr8s39kfv7clda4pq215jh", + "url": "https://nv-tegra.nvidia.com/tegra/nv-sci-src/nvsci_headers.git" + }, + "tegra/nv-sci-src/nvsci_samples": { + "date": "2025-01-21T05:25:22-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-5A8RtYPDFWpHOwFM5R/n7YNq+NdDuC1ieNzHI5Jp8iQ=", + "leaveDotGit": false, + "path": "/nix/store/k6akz3raxq4q2hfxkviqirkq0zpmsl69-nvsci_samples", + "rev": "5482324389f18de3a894365914c3b0fa4af8ded0", + "sha256": "097jd6927iywg1i2vf23szw6m0zdwwgyak017d3nl5f3hfsi23z4", + "url": "https://nv-tegra.nvidia.com/tegra/nv-sci-src/nvsci_samples.git" + }, + "tegra/openwfd-src/openwfd_headers": { + "date": "2025-01-21T05:25:00-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-P31fq5ahOJRYsJ5LUT89y/F9vLllb+WdaMcG2noWSUk=", + "leaveDotGit": false, + "path": "/nix/store/g54zsfzl00nygym6075nciyg27n236c9-openwfd_headers", + "rev": "24f52694b123788001a92fdea539bbe057a8b644", + "sha256": "0ja92rxdl1n7d2fyavv5p6y7vwfb7lzm2jwyn1c98f51jsmmyz9z", + "url": "https://nv-tegra.nvidia.com/tegra/openwfd-src/openwfd_headers.git" + }, + "tegra/optee-src/atf": { + "date": "2025-01-21T05:25:18-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-uBclueCAeGsEldbl1OTfUHXLaWOICXy4CXW1VR8E2Iw=", + "leaveDotGit": false, + "path": "/nix/store/00yp2xh0q5raajxv0395n604kzcpww26-atf", + "rev": "6788fd9dde38dd72910694e940beaeaf3d1c30d2", + "sha256": "136q0hgmbdbm16w7q2c8cdlwnxahvzjd9rfnjl26ny40w2wja5xq", + "url": "https://nv-tegra.nvidia.com/tegra/optee-src/atf.git" + }, + "tegra/optee-src/nv-optee": { + "date": "2025-01-21T05:24:57-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-YIkONwvQ3PYF12PcGlX+C4/wlo4n12rrQI3PLnK408k=", + "leaveDotGit": false, + "path": "/nix/store/0miq6gcxssfa5n9ysjvdkwsnq4iz23mi-nv-optee", + "rev": "84c0c96776ebb0bf0bd02b8033e07977cea81b9c", + "sha256": "1jfkp1r2xkwd83mnmmr7isbg13qbzraimp33sw2zdp6h1cvhx2b0", + "url": "https://nv-tegra.nvidia.com/tegra/optee-src/nv-optee.git" + }, + "tegra/spe-src/spe-freertos-bsp": { + "date": "2025-01-21T05:25:03-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-PTrgmHtVK7nSzf4Tnshnjy1gv+s3tZcOvvUQeppXOKo=", + "leaveDotGit": false, + "path": "/nix/store/hs2nph09nfp6i8spb7abnsclsa8kxhhn-spe-freertos-bsp", + "rev": "c5599650343928607ee3ee8c126535a285ae1527", + "sha256": "1aiqayd7l47mpq79gd9pxfzn0bcgcz49w4zyrp9bjasmgfcf0fix", + "url": "https://nv-tegra.nvidia.com/tegra/spe-src/spe-freertos-bsp.git" + }, + "tegra/v4l2-src/libv4l2_nvargus": { + "date": "2025-01-21T05:25:00-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-qRPyMOHuBZn48mGoqiClVgK/xlp/hivWxIgmmS8A+Hk=", + "leaveDotGit": false, + "path": "/nix/store/xyg44bxwscbr84ddqaxjwn0d5f39r1zx-libv4l2_nvargus", + "rev": "833da9d669dbb9d614184c055fc281af664e0d55", + "sha256": "0ygq00prj9l8qkb2p1kzbb3by0jnllhama31ybw9j1gfw4qg44x9", + "url": "https://nv-tegra.nvidia.com/tegra/v4l2-src/libv4l2_nvargus.git" + }, + "tegra/v4l2-src/v4l2_libs": { + "date": "2025-01-21T05:25:05-08:00", + "deepClone": false, + "fetchLFS": false, + "fetchSubmodules": false, + "hash": "sha256-N6DQXJ/8nEAafhUiABfXm9gihZIbWrxD06YgQRmu93g=", + "leaveDotGit": false, + "path": "/nix/store/mgnxb9lf590y6ldk5v70s6gc3kjl6nni-v4l2_libs", + "rev": "41db982d533c441e11f4fae6b492476f8e18a689", + "sha256": "0y7pmqcl2856sd1vqnhvja2j5n4vswbh08hmgqd4177wkxfd181p", + "url": "https://nv-tegra.nvidia.com/tegra/v4l2-src/v4l2_libs.git" + } +} \ No newline at end of file