final: prev: rec {
  comic-sans = final.callPackage ./comic-sans {};
  comic-code = final.callPackage ./comic-code {};

  gobar = final.callPackage ./gobar {};

  mk-enc-usb = final.callPackage ../extras/mk-enc-usb.nix {};
  mk-encrypted-drive = final.callPackage ../extras/mk-encrypted-drive.nix {};
  mk-raspberry-ext-drive = final.callPackage ../extras/mk-raspberry-ext-drive.nix {};

  kitty-terminfo = final.runCommand "kitty-terminfo" {} ''
    mkdir -p $out/share
    cp -r ${./kitty-terminfo}/* $out/share
  '';

  gotosocial = prev.gotosocial.overrideAttrs (_old: let
    owner = "superseriousbusiness";
    repo = "gotosocial";

    version = "0.11.1";
    source-hash = "sha256-qsgrHPQae1+LKF2y6e256ZfYR+a9ffe7oq1W3GJA1do=";
    web-assets-hash = "sha256-xPdSwsXjyjodgEHlwl4X32Pb6TniwM9Q+u56xAoY7SQ=";

    web-assets = final.fetchurl {
      url = "https://github.com/${owner}/${repo}/releases/download/v${version}/${repo}_${version}_web-assets.tar.gz";
      hash = web-assets-hash;
    };
  in {
    inherit version;

    src = final.fetchFromGitHub {
      inherit owner repo;
      rev = "refs/tags/v${version}";
      hash = source-hash;
    };

    passthru.web-assets = web-assets;

    ldflags = ["-s" "-w" "-X main.Version=${version}"];

    doCheck = false;

    postInstall = ''
      tar xf ${web-assets}
      mkdir -p $out/share/gotosocial
      mv web $out/share/gotosocial/
    '';
  });
}