From 13352162de5a83bc48bfe4e471d71908d1c3b3f7 Mon Sep 17 00:00:00 2001 From: Guillaume Bouchard Date: Tue, 3 Mar 2020 17:06:31 +0100 Subject: [PATCH] Rewrite all rules using pkgs.writeTextFile - It is more compact and easier to read - Escaping is correctly done This fixs #21 and #22 --- default.nix | 90 +++++++++++++++++++---------------------------------- 1 file changed, 32 insertions(+), 58 deletions(-) diff --git a/default.nix b/default.nix index 6ee1821..eaad7e9 100644 --- a/default.nix +++ b/default.nix @@ -32,34 +32,22 @@ rec { kernel = null; }; - nixGLNvidiaBumblebee = runCommand "nixGLNvidiaBumblebee" { - buildInputs = [ nvidia bumblebee ]; - - meta = with pkgs.stdenv.lib; { - description = "A tool to launch OpenGL application on system other than NixOS - Nvidia bumblebee version"; - homepage = "https://github.com/guibou/nixGL"; - }; - } '' - mkdir -p $out/bin - cat > $out/bin/nixGLNvidiaBumblebee << FOO + nixGLNvidiaBumblebee = writeTextFile { + name = "nixGLNvidiaBumblebee"; + executable = true; + destination = "/bin/nixGLNvidiaBumblebee"; + text = '' #!/usr/bin/env sh - export LD_LIBRARY_PATH=${nvidia}/lib:\$LD_LIBRARY_PATH - ${bumblebee}/bin/optirun --ldpath ${libglvnd}/lib:${nvidia}/lib "\$@" - FOO - - chmod u+x $out/bin/nixGLNvidiaBumblebee + export LD_LIBRARY_PATH=${nvidia}/lib:$LD_LIBRARY_PATH + ${bumblebee}/bin/optirun --ldpath ${libglvnd}/lib:${nvidia}/lib "$@" ''; + }; - nixNvidiaWrapper = api: runCommand "nix${api}Nvidia" { - buildInputs = [ nvidiaLibsOnly ]; - - meta = with pkgs.stdenv.lib; { - description = "A tool to launch ${api} application on system other than NixOS - Nvidia version"; - homepage = "https://github.com/guibou/nixGL"; - }; - } '' - mkdir -p $out/bin - cat > $out/bin/nix${api}Nvidia << 'FOO' + nixNvidiaWrapper = api: writeTextFile { + name = "nix${api}Nvidia"; + executable = true; + destination = "/bin/nix${api}Nvidia"; + text = '' #!/usr/bin/env sh ${lib.optionalString (api == "Vulkan") ''export VK_LAYER_PATH=${nixpkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d''} @@ -68,43 +56,31 @@ rec { nvidiaLibsOnly ] ++ lib.optional (api == "Vulkan") nixpkgs.vulkan-validation-layers) }''${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} - "\$@" - FOO - - chmod u+x $out/bin/nix${api}Nvidia + "$@" ''; + }; nixGLNvidia = nixNvidiaWrapper "GL"; nixVulkanNvidia = nixNvidiaWrapper "Vulkan"; - nixGLIntel = runCommand "nixGLIntel" { - buildInputs = [ mesa_drivers ]; - - meta = with pkgs.stdenv.lib; { - description = "A tool to launch OpenGL application on system other than NixOS - Intel version"; - homepage = "https://github.com/guibou/nixGL"; - }; - } '' - mkdir -p $out/bin - cat > $out/bin/nixGLIntel << FOO + nixGLIntel = writeTextFile { + name = "nixGLIntel"; + executable = true; + destination = "/bin/nixGLIntel"; + text = '' #!/usr/bin/env sh export LIBGL_DRIVERS_PATH=${mesa_drivers}/lib/dri - export LD_LIBRARY_PATH=${mesa_drivers}/lib:\$LD_LIBRARY_PATH - "\$@" - FOO - - chmod u+x $out/bin/nixGLIntel + export LD_LIBRARY_PATH=${mesa_drivers}/lib:$LD_LIBRARY_PATH + "$@" ''; + }; - nixVulkanIntel = runCommand "nixVulkanIntel" { - meta = with pkgs.stdenv.lib; { - description = "A tool to launch Vulkan application on system other than NixOS - Intel version"; - homepage = "https://github.com/guibou/nixGL"; - }; - } '' - mkdir -p "$out/bin" - cat > "$out/bin/nixVulkanIntel" << EOF + nixVulkanIntel = writeTextFile { + name = "nixVulkanIntel"; + executable = true; + destination = "/bin/nixVulkanIntel"; + text = '' #!/usr/bin/env bash if [ ! -z "$LD_LIBRARY_PATH" ]; then echo "Warning, nixVulkanIntel overwriting existing LD_LIBRARY_PATH" 1>&2 @@ -117,12 +93,10 @@ rec { xorg.libxshmfence wayland gcc.cc - ]}:\$LD_LIBRARY_PATH - exec "\$@" - EOF - chmod u+x "$out/bin/nixVulkanIntel" - ${shellcheck}/bin/shellcheck "$out/bin/nixVulkanIntel" - ''; + ]}:$LD_LIBRARY_PATH + exec "$@" + ''; + }; nixGLCommon = nixGL: runCommand "nixGLCommon" {