{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05";
    nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
    systems.url = "github:nix-systems/default";
  };
  outputs = { systems, nixpkgs, nixpkgs-unstable, ... }:
    let
      eachSystem = f:
        nixpkgs.lib.genAttrs (import systems) (system:
          let
            overlay-unstable = final: prev: {
              unstable = nixpkgs-unstable.legacyPackages.${prev.system};
            };
          in f (import nixpkgs {
            inherit system;
            overlays = [ overlay-unstable ];
          }));
    in {
      packages = eachSystem (pkgs:
        let
          toolchain = pkgs.rustPlatform;
        in {
          default = toolchain.buildRustPackage {
            pname = "thought";
            version = "2.0.0";
            src = ./.;
            cargoLock.lockFile = ./Cargo.lock;
          };
        });
    
      devShell = eachSystem (pkgs:
        pkgs.mkShell {
          packages = with pkgs; [
            cargo
            rustc
            rust-analyzer
            clippy
            rustfmt
            pkg-config
            openssl
          ];
        });
    };
}