Files
quantenzitrone 7d8132a92c treewide: remove references to the xorg namespace in pkgs (automated)
this creates some eval errors that will be fixed in the next commit

done with the following script:

```fish
\#!/usr/bin/env fish

set packagesjson (nix eval --impure --json --expr '
let
  lib = import ./lib;
in
import pkgs/servers/x11/xorg/default.nix (lib.mapAttrs (
  name: _:
  if name == "lib" then
    lib
  else if name == "config" then
    { allowAliases = false; }
  else
    name
) (__functionArgs (import pkgs/servers/x11/xorg/default.nix))) { }
' | jq)

set one (grep '^    [A-Za-z0-9_-]*$' pkgs/servers/x11/xorg/default.nix | string trim | string replace -r '$' Z | sort | string sub -e -1)
set two (grep '^  [A-Za-z0-9_-]* = [A-Za-z0-9_-]*;$' pkgs/servers/x11/xorg/default.nix | cut -d= -f1 | string trim | string replace -r '$' Z | sort | string sub -e -1)

for arg in $one $two
    set oname $arg
    set nname (echo $packagesjson | jq -r .$oname)

    if test $nname = null
        echo (set_color red)warn:(set_color normal) unknown package xorg.$oname >&2
        continue
    end

    echo $oname "->" $nname

    # replace basic xorg.$name references
    for file in (rg -F "xorg.$oname" --files-with-matches pkgs)
        # special cases
        sd -F "$oname = xorg.$oname;" "$nname = $nname;" $file

        # replace
        sd -F "xorg.$oname" "$nname" $file

        # fixup function arguments

        # prevent duplicate function args
        if grep -E " ($oname|$nname),\$" $file >/dev/null
            continue
        end

        if grep 'xorg\..' $file >/dev/null # case1: there is more so we can't just remove the function arg

            if grep ' xorg,$' $file >/dev/null
                sd ' xorg,$' " xorg,
                $nname," $file

            else if grep ' xorg ? .*,$' $file >/dev/null
                sd 'xorg( ? .*),$' "xorg\$1,
                $nname," $file

            else
                sd -F 'xorg,' "$nname,
                xorg," $file
            end

        else # case there is no more xorg..* so we can just replace the function arg
            sd 'xorg(| ? .*),.*$' "$nname," $file
        end
    end
end

nix fmt
```
2026-01-25 22:28:09 +01:00

89 lines
2.1 KiB
Nix

{
lib,
stdenv,
cmake,
pkg-config,
ninja,
makeWrapper,
wgpu-native,
glfw,
wayland,
libxrandr,
libx11,
vulkan-loader,
version,
src,
}:
stdenv.mkDerivation (finalAttrs: {
inherit version src;
pname = "wgpu-native-examples";
sourceRoot = "${src.name}/examples";
postPatch = ''
substituteInPlace ./CMakeLists.txt \
--replace-fail 'add_subdirectory(vendor/glfw)' 'find_package(glfw3 3.4 REQUIRED)'
'';
strictDeps = true;
nativeBuildInputs = [
cmake
pkg-config
ninja
makeWrapper
];
buildInputs = [
wgpu-native
glfw
]
++ lib.optionals stdenv.hostPlatform.isLinux [
wayland
libx11
libxrandr
];
runtimeInputs = lib.optionals stdenv.hostPlatform.isLinux [
# Without wayland in library path, this warning is raised:
# "No windowing system present. Using surfaceless platform"
wayland
# Without vulkan-loader present, wgpu won't find any adapter
vulkan-loader
];
makeWrapperArgs = lib.optionals (finalAttrs.runtimeInputs != [ ]) [
"--prefix LD_LIBRARY_PATH : ${toString (lib.makeLibraryPath finalAttrs.runtimeInputs)}"
];
installPhase = ''
runHook preInstall
concatTo makeWrapperArgsArray makeWrapperArgs
# find all executables that have the same name as their directory
for executable in $(find . -regex '.*\(/[^/]*\)\1' -type f -executable)
do
target="$(basename "$(dirname "$executable")")"
install -Dm755 $executable -t $out/bin
mkdir -p $out/share/$target
wrapProgram $out/bin/$target --chdir $out/share/$target "''${makeWrapperArgsArray[@]}"
# The examples expect their shaders in the CWD, so we copy them into the store
# and wrap the examples to run in the directory containing the shader.
for shader in $(find ../$target -type f -name '*.wgsl'); do
install -Dm644 $shader $out/share/$target/
done
done
runHook postInstall
'';
meta = wgpu-native.meta // {
description = "Examples for the native WebGPU implementation based on wgpu-core";
mainProgram = "triangle";
};
})