{
  description = "A Python Project Template.";

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

  outputs = {
    self,
    nixpkgs,
    ...
  } @ inputs: let
    supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
    forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
    pkgs = forAllSystems (system: nixpkgs.legacyPackages.${system}.extend overlay);

    overlay = final: prev: rec {
      python3Packages = prev.python3Packages.overrideScope (pfinal: pprev: {
        packageNameToDrv = x: builtins.getAttr (cleanPythonPackageName x) final.python3Packages;
      });

      cleanPythonPackageName = x: let
        cleanName = builtins.match "([a-z,A-Z,0-9,_,-]+).*" x;
      in
        if cleanName != null
        then builtins.elemAt cleanName 0
        else builtins.warn "Could not determine package name from '${x}'" null;
    };

    pyproject = builtins.fromTOML (builtins.readFile ./pyproject.toml);

    buildDependencies = forAllSystems (system: builtins.map pkgs.${system}.python3Packages.packageNameToDrv pyproject.build-system.requires);
    runtimeDependencies = forAllSystems (system: builtins.map pkgs.${system}.python3Packages.packageNameToDrv pyproject.project.dependencies);
    optionalDependencies = forAllSystems (system: builtins.mapAttrs (name: value: builtins.map pkgs.${system}.python3Packages.packageNameToDrv value) pyproject.project.optional-dependencies);
  in {
    # `nix build`
    packages = forAllSystems (system: let
      buildProject = {skipCheck ? false}:
        pkgs.${system}.python3Packages.buildPythonPackage {
          pname = pyproject.project.name;
          version = pyproject.project.version;
          src = ./.;

          pyproject = true;

          build-system = buildDependencies.${system};

          dependencies = runtimeDependencies.${system};

          optional-dependencies = optionalDependencies.${system};

          nativeCheckInputs = optionalDependencies.${system}.dev;

          checkPhase = let
            dev = builtins.map (x: x.pname) optionalDependencies.${system}.dev;
          in ''
            ${
              if builtins.elem "pytest" dev && !skipCheck
              then "pytest tests"
              else ""
            }
            ${
              if builtins.elem "mypy" dev && !skipCheck
              then "mypy src"
              else ""
            }
            ${
              if builtins.elem "pylint" dev && !skipCheck
              then "pylint src"
              else ""
            }
          '';
        };
    in {
      default = self.packages.${system}."${pyproject.project.name}";
      "${pyproject.project.name}" = buildProject {skipCheck = false;};
      quick = buildProject {skipCheck = true;};
    });

    # `nix fmt`
    formatter = forAllSystems (system: pkgs.${system}.alejandra);

    # `nix develop`
    devShells = forAllSystems (system: rec {
      default = venv;

      venv = pkgs.${system}.mkShell {
        shellHook = ''
          if [ ! -d .venv/ ]; then
            echo "Creating Virtual Environment..."
            ${pkgs.${system}.python3}/bin/python3 -m venv .venv
          fi

          alias activate='source .venv/bin/activate'

          echo "Entering Virtual Environment..."
          source .venv/bin/activate
        '';
      };
    });

    # NixOS Module
    nixosModules.default = import ./nix/module.nix inputs;
  };
}