{
  pkgs,
  lib,
  ...
}: let
  common = pkgs.callPackage ./common.nix {};

  # Definieren eines schreibbaren Verzeichnisses
  writableDir = pkgs.stdenv.mkDerivation {
    name = "cover-report";
    buildCommand = ''
      mkdir -p $out
    '';
  };
in
  pkgs.writeShellScriptBin "build-cover-report" ''
    ${common}

    echo_header "Building cover report"

    download_test_images
    setup_go_env

    echo_section "Building"
    ${pkgs.go}/bin/go test -v -coverprofile=${writableDir}/coverage.out ./...
    if [ $? -ne 0 ];
    then
      echo_fail "Failed to run tests"
      exit 1
    fi

    if ! ${pkgs.go}/bin/go tool cover -html=${writableDir}/coverage.out -o ${writableDir}/coverage.html
    then
      echo_fail "Failed to generate coverage report"
      exit 1
    fi
    echo_ok "Coverage report stored at ${writableDir}"

    echo_step "Opening coverage report in browser"
    if ! ${pkgs.xdg-utils}/bin/xdg-open ${writableDir}/coverage.html > /dev/null 2>&1
    then
      echo_fail "Failed to open coverage report in browser"
      exit 1
    fi

    echo_ok "Report opened in browser"
  ''