{ static ? false }:

let
  # Pinned Nixpkgs for reproducibility
  nixpkgs = import (builtins.fetchTarball
    { name   = "nixpkgs-21.05-ee90403e147";
      url    = "https://github.com/nixos/nixpkgs/archive/ee90403e147.tar.gz";
      sha256 = "1mk3s4ncfa8z8mr6vrgjh74s8dci12yam7plpc1bqgz12wld73ax";
    }) {};

  # Exclude this file and build artifacts
  source = builtins.filterSource
    (path: type:
      !builtins.elem path [ "configure.mk" "default.nix" ]
      && baseNameOf path != "build") ./.;

  inherit (nixpkgs) lib pkgs;

in
  pkgs.stdenv.mkDerivation rec {
    pname = "gray";
    version = "0.1";
    src = source;

    nativeBuildInputs = with pkgs; [ makefile2graph graphviz gfortran ];
    buildInputs = lib.optional static pkgs.glibc.static;

    hardeningDisable = [ "format" ];
    configureFlags = [
      (lib.enableFeature static "static")
      "GIT_REV=${version}"
      "GIT_DIRTY="
    ];

    meta = {
      homepage = "https://doi.org/10.13182/FST07-A1494";
      description = "A quasi-optical beam-tracing code for EC waves in tokamaks";
      platforms = lib.platforms.unix;
      # license?
    };
  }