{
  description = "TFC Website";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    cl-nix-lite.url = "github:hraban/cl-nix-lite";
    rust-overlay.url = "github:oxalica/rust-overlay";
  };

  outputs = inputs: with inputs;
    flake-utils.lib.eachDefaultSystem
      (system:
        let
          pkgs = nixpkgs.legacyPackages.${system};
          src = ./.;

          sbcl' = pkgs.sbcl.withPackages (ps: with ps; [
            hunchentoot
            dexador
            jzon
            serapeum
            deploy
            spinneret
            lass
            cl-smtp
            log4cl
            cl_plus_ssl
            fiveam
            slite
            clack
            woo
            ningle
            pkgs.openssl
            pkgs.openssl.out
            pkgs.openssl.dev
          ]);
          nbi = with pkgs; [
            gcc
            stdenv
            gnumake
            gdb
            pkg-config
            makeWrapper
            openssl
            openssl.out
            openssl.dev
          ];

          bi = with pkgs; [
            hugo
            go
            nodejs
            sbcl'
            clippy
            rustc
            cargo
            rustfmt
            rust-analyzer
            just
            openssl
            openssl.out
            openssl.dev
          ];

          nativeLibs = with pkgs; [
            openssl
            openssl.out
            openssl.dev
          ];
          
        in 
        {
          devShell = pkgs.mkShell {
            name = "tfc-api";
            version = "0.0.1";
            src = src;
            nativeBuildInputs = nbi;
            buildInputs = bi;
            nativeLibs = nativeLibs;
            shellHook = ''
            export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath nativeLibs}"
            '';
          };
          packages.default = pkgs.rustPlatform.buildRustPackage {
            pname = "api";
            version = "0.0.1";
            src = src;
            cargoBuildFlags = "";

            cargoLock = {
              lockFile = ./Cargo.lock;
            };
            nativeBuildInputs = nbi;
            buildInputs = bi;
          };
        }
      );
}