{
  description = "Bob: The HTML and HTML fragment builder";
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

  outputs = { self, nixpkgs }: 
    let
      rootPath = ./.;
      releaseJson = builtins.fromJSON (builtins.readFile "${rootPath}/release.json");
      currentVersion = releaseJson.version;
    
      systems = [ "x86_64-linux" "aarch64-linux" ];
      forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
      makePackage = system: 
        let
          pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; };
        in
          pkgs.bob;
    in
    {
      overlay = final: prev: {
        bob =  final.buildGoModule rec {
          name = "bob";
          src = ././application/source; 
          vendorSha256 = "sha256-qiObIbA75kfkGzZoTtZbkm4zQqXokL+hiWrJdmL8oxU="; # Use "nix to-sri --type sha256" on the actual hash
          doCheck = true;
          nativeBuildInputs = [ final.jq ];
          ldflags=''-X main.version=${currentVersion} -X main.build=${self.lastModifiedDate}'';
        };
      };

      defaultPackage = forAllSystems makePackage;

      packages = forAllSystems (system: {
        bob = makePackage system;
      });

      checks = {
        test = forAllSystems makePackage;
      };
    };
}