Rewrite all rules using pkgs.writeTextFile

- It is more compact and easier to read
- Escaping is correctly done

This fixs #21 and #22
This commit is contained in:
Guillaume Bouchard 2020-03-03 17:06:31 +01:00 committed by Guillaume Bouchard
parent 5ba3174763
commit 13352162de

View File

@ -32,34 +32,22 @@ rec {
kernel = null; kernel = null;
}; };
nixGLNvidiaBumblebee = runCommand "nixGLNvidiaBumblebee" { nixGLNvidiaBumblebee = writeTextFile {
buildInputs = [ nvidia bumblebee ]; name = "nixGLNvidiaBumblebee";
executable = true;
meta = with pkgs.stdenv.lib; { destination = "/bin/nixGLNvidiaBumblebee";
description = "A tool to launch OpenGL application on system other than NixOS - Nvidia bumblebee version"; text = ''
homepage = "https://github.com/guibou/nixGL";
};
} ''
mkdir -p $out/bin
cat > $out/bin/nixGLNvidiaBumblebee << FOO
#!/usr/bin/env sh #!/usr/bin/env sh
export LD_LIBRARY_PATH=${nvidia}/lib:\$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${nvidia}/lib:$LD_LIBRARY_PATH
${bumblebee}/bin/optirun --ldpath ${libglvnd}/lib:${nvidia}/lib "\$@" ${bumblebee}/bin/optirun --ldpath ${libglvnd}/lib:${nvidia}/lib "$@"
FOO
chmod u+x $out/bin/nixGLNvidiaBumblebee
''; '';
};
nixNvidiaWrapper = api: runCommand "nix${api}Nvidia" { nixNvidiaWrapper = api: writeTextFile {
buildInputs = [ nvidiaLibsOnly ]; name = "nix${api}Nvidia";
executable = true;
meta = with pkgs.stdenv.lib; { destination = "/bin/nix${api}Nvidia";
description = "A tool to launch ${api} application on system other than NixOS - Nvidia version"; text = ''
homepage = "https://github.com/guibou/nixGL";
};
} ''
mkdir -p $out/bin
cat > $out/bin/nix${api}Nvidia << 'FOO'
#!/usr/bin/env sh #!/usr/bin/env sh
${lib.optionalString (api == "Vulkan") ''export VK_LAYER_PATH=${nixpkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d''} ${lib.optionalString (api == "Vulkan") ''export VK_LAYER_PATH=${nixpkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d''}
@ -68,43 +56,31 @@ rec {
nvidiaLibsOnly nvidiaLibsOnly
] ++ lib.optional (api == "Vulkan") nixpkgs.vulkan-validation-layers) ] ++ lib.optional (api == "Vulkan") nixpkgs.vulkan-validation-layers)
}''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} }''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
"\$@" "$@"
FOO
chmod u+x $out/bin/nix${api}Nvidia
''; '';
};
nixGLNvidia = nixNvidiaWrapper "GL"; nixGLNvidia = nixNvidiaWrapper "GL";
nixVulkanNvidia = nixNvidiaWrapper "Vulkan"; nixVulkanNvidia = nixNvidiaWrapper "Vulkan";
nixGLIntel = runCommand "nixGLIntel" { nixGLIntel = writeTextFile {
buildInputs = [ mesa_drivers ]; name = "nixGLIntel";
executable = true;
meta = with pkgs.stdenv.lib; { destination = "/bin/nixGLIntel";
description = "A tool to launch OpenGL application on system other than NixOS - Intel version"; text = ''
homepage = "https://github.com/guibou/nixGL";
};
} ''
mkdir -p $out/bin
cat > $out/bin/nixGLIntel << FOO
#!/usr/bin/env sh #!/usr/bin/env sh
export LIBGL_DRIVERS_PATH=${mesa_drivers}/lib/dri export LIBGL_DRIVERS_PATH=${mesa_drivers}/lib/dri
export LD_LIBRARY_PATH=${mesa_drivers}/lib:\$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${mesa_drivers}/lib:$LD_LIBRARY_PATH
"\$@" "$@"
FOO
chmod u+x $out/bin/nixGLIntel
''; '';
};
nixVulkanIntel = runCommand "nixVulkanIntel" { nixVulkanIntel = writeTextFile {
meta = with pkgs.stdenv.lib; { name = "nixVulkanIntel";
description = "A tool to launch Vulkan application on system other than NixOS - Intel version"; executable = true;
homepage = "https://github.com/guibou/nixGL"; destination = "/bin/nixVulkanIntel";
}; text = ''
} ''
mkdir -p "$out/bin"
cat > "$out/bin/nixVulkanIntel" << EOF
#!/usr/bin/env bash #!/usr/bin/env bash
if [ ! -z "$LD_LIBRARY_PATH" ]; then if [ ! -z "$LD_LIBRARY_PATH" ]; then
echo "Warning, nixVulkanIntel overwriting existing LD_LIBRARY_PATH" 1>&2 echo "Warning, nixVulkanIntel overwriting existing LD_LIBRARY_PATH" 1>&2
@ -117,12 +93,10 @@ rec {
xorg.libxshmfence xorg.libxshmfence
wayland wayland
gcc.cc gcc.cc
]}:\$LD_LIBRARY_PATH ]}:$LD_LIBRARY_PATH
exec "\$@" exec "$@"
EOF '';
chmod u+x "$out/bin/nixVulkanIntel" };
${shellcheck}/bin/shellcheck "$out/bin/nixVulkanIntel"
'';
nixGLCommon = nixGL: nixGLCommon = nixGL:
runCommand "nixGLCommon" { runCommand "nixGLCommon" {