{ stdenvNoCC,
  lib,
  fetchFromGitHub,
  zip,
  nix-update-script, }:
let
  makeShaderPackage = {
    name,
    src,
    branch ? null,
  }: stdenvNoCC.mkDerivation {
    pname = name;
    inherit src;
    version = src.rev;
    phases = [ "installPhase" ];
    buildInputs = [ zip ];
    installPhase = ''
      cd "$src"
      mkdir -p "$out"
      zip -r "$out/${name}.zip" .
    '';
    passthru.updateScript = nix-update-script {
      # this doesn't work for some reason; don't use --use-update-script for now
      extraArgs = lib.optional (!(builtins.isNull branch)) "--version=branch=${branch}";
    };
  };
in
{
  bliss-dh = makeShaderPackage {
    name = "Bliss-DH";
    branch = "main";
    src = fetchFromGitHub {
      owner = "X0nk";
      repo = "Bliss-Shader";
      rev = "1cd49fe249db4cfeb102283fdc068e9cc1549e3e";
      hash = "sha256-0R+aebM2Cztkdj4020CUTr9ABwFyG9nEu7Op0K9k6+w=";
    };
  };

  complementary-reimagined-dh = makeShaderPackage {
    name = "ComplementaryReimagined-DH";
    src = fetchFromGitHub {
      owner = "Steveplays28";
      repo = "ComplementaryReimagined";
      rev = "c5cb31757c27550ae30b9c462fe3ed1993b39d9d";
      hash = "sha256-1HOscJ8afNC7t4yiobJBJgom7pDpwZPdA3B3EILlyWY=";
    };
  };

  rethinking-voxels-dh = makeShaderPackage {
    name = "RethinkingVoxels-DH";
    src = fetchFromGitHub {
      owner = "Steveplays28";
      repo = "ComplementaryReimagined";
      rev = "343915b7b18e1d83187fae1ea1f14eac90d4d09d";
      hash = "sha256-Hu+JeINQC09OS1WY1kpagoRH5Awnp4YhacWusQgRsqc=";
    };
  };
}