{
  stdenv,
  lib,
  pkg-config,
  gcc,
  gnumake,
  sbcl,
  sbclPackages,
  makeWrapper,
  openssl,
  pkgs,
  ...
}:

let
  sbcl' = sbcl.withPackages (ps: with ps; [
    hunchentoot
    dexador
    jzon
    serapeum
    deploy
    spinneret
    lass
    cl-smtp
    log4cl
    buildapp
    pkgs.openssl
    pkgs.openssl.out
    pkgs.openssl.dev
  ]);
in
pkgs.sbcl.buildASDFSystem {
  pname = "tfcconnection";
  version = "0.0.1";

  src = ./.;

  nativeBuildInputs = [
    gcc
    stdenv
    gnumake
    pkg-config
    makeWrapper
  ];

  propagatedBuildInputs = [
    pkg-config
    sbcl'
    openssl
    openssl.out
    openssl.dev
  ];

  buildPhase = ''
  export HOME=$(pwd)
  make api
  '';

  # cp target/debug/tfcapi $out/bin
  installPhase = ''
  mkdir -p $out/bin
  cp -v tfcserver $out/bin
  export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [ sbcl' openssl.dev openssl.out openssl pkg-config ]}"
  wrapProgram $out/bin/tfcserver \
    --prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH \
  '';

  meta = with lib; {
    name = "tfcconnection";
    description = "TFC Connection Website";
    homepage = "https://tfcconnection.org";
    license = licenses.gpl3;
    maintainers = [ "chriscochrun" ];
    platforms = platforms.all;
  };
}