{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";

  outputs =
    { self, nixpkgs }:
    let
      forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
    in
    {
      packages = forAllSystems (
        system:
        let
          pkgs = nixpkgs.legacyPackages.${system};
        in
        {
          default = pkgs.rustPlatform.buildRustPackage {
            pname = "macltok";
            version = "0.1.0";
            src = self;
            cargoLock.lockFile = ./Cargo.lock;
            preBuild = "export NIX_BUILD_CORES=2";
            SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
          };
        }
      );

      checks = forAllSystems (system: {
        default = self.packages.${system}.default;
        sqlite = nixpkgs.legacyPackages.${system}.rustPlatform.buildRustPackage {
          pname = "macltok-sqlite-check";
          version = "0.1.0";
          src = self;
          cargoLock.lockFile = ./Cargo.lock;
          preBuild = "export NIX_BUILD_CORES=2";
          buildFeatures = [ "sqlite" ];
          nativeBuildInputs = [ nixpkgs.legacyPackages.${system}.pkg-config ];
          buildInputs = [ nixpkgs.legacyPackages.${system}.sqlite ];
          SSL_CERT_FILE = "${nixpkgs.legacyPackages.${system}.cacert}/etc/ssl/certs/ca-bundle.crt";
        };
      });

      devShells = forAllSystems (
        system:
        let
          pkgs = nixpkgs.legacyPackages.${system};
        in
        {
          default = pkgs.mkShell {
            packages = with pkgs; [
              cargo
              clippy
              pkg-config
              rust-analyzer
              rustc
              rustfmt
              sqlite
            ];
          };
        }
      );
    };
}
