diff --git a/pkgs/by-name/sh/shadershark/package.nix b/pkgs/by-name/sh/shadershark/package.nix new file mode 100644 index 000000000000..e27036575be7 --- /dev/null +++ b/pkgs/by-name/sh/shadershark/package.nix @@ -0,0 +1,63 @@ +{ stdenv +, lib +, fetchhg +, libepoxy +, xorg +, libGLU +, glm +, pkg-config +, imagemagick +, makeWrapper +, installShellFiles +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "shadershark"; + version = "0.1"; + + src = fetchhg { + url = "https://hg.globalcode.info/graphics/shader-shark"; + rev = "v${finalAttrs.version}"; + hash = "sha256-AYZWfqMckPKgXNIX9kAAv1mvD3opLi5EUElFsigiF3c="; + }; + + nativeBuildInputs = [ + pkg-config + makeWrapper + installShellFiles + ]; + + buildInputs = [ + libepoxy + xorg.libX11 + libGLU + glm + imagemagick + ]; + + installPhase = '' + runHook preInstall + mkdir -p $out/{bin,share/shadershark} + + install -m755 -D build/shader-shark $out/bin + cp -r shaders textures $out/share/shadershark + + wrapProgram $out/bin/shader-shark \ + --set SHADER_SHARK_DATA_DIR $out/share/shadershark + + installShellCompletion --bash --name shader-shark.bash bash-completion.sh + + runHook postInstall + ''; + + passthru.updateScript = [ ./update.sh finalAttrs.src.url ]; + + meta = with lib; { + mainProgram = "shader-shark"; + description = "OpenGL/X11 application for GNU/Linux consisting of a single window that shows simple 3D scene of a textured rectangle with applied vertex and fragment shaders (GLSL)"; + homepage = "https://graphics.globalcode.info/v_0/shader-shark.xhtml"; + license = licenses.gpl3; + maintainers = [ maintainers.lucasew ]; + platforms = platforms.linux; + }; +}) diff --git a/pkgs/by-name/sh/shadershark/update.sh b/pkgs/by-name/sh/shadershark/update.sh new file mode 100755 index 000000000000..0bd125caac95 --- /dev/null +++ b/pkgs/by-name/sh/shadershark/update.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p curl common-updater-scripts + +set -e + +repo_url="$1"; shift + +data="$(curl "$repo_url/tags")" + +rev="$(echo "$data" | grep '/rev/v' | sed 's;.*/rev/v\([^"]*\)[^$]*;\1;' | head -n 1)" +echo "new rev: $rev" + +update-source-version shadershark "$rev" \ + --print-changes