{
  description = "Nix PlanktoScope";
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";

    flake-compat = {
      url = "github:edolstra/flake-compat";
      flake = false;
    };

    flake-utils.url = "github:numtide/flake-utils";

    pre-commit-hooks = {
      url = "github:cachix/pre-commit-hooks.nix";
      inputs.nixpkgs.follows = "nixpkgs";
      inputs.flake-utils.follows = "flake-utils";
    };

    mach-nix.url = "mach-nix/3.5.0";
  };

  outputs = {
    self,
    nixpkgs,
    flake-utils,
    mach-nix,
    ...
  } @ inputs:
    flake-utils.lib.eachSystem ["x86_64-linux" "aarch64-linux"] (system: let
      pkgs = import nixpkgs {
        inherit system;
      };
      machNix = mach-nix.lib."${system}";
    in rec {
      packages = {
        planktoscope = machNix.buildPythonPackage {
          src = builtins.fetchGit {
            url = "https://github.com/PlanktoScope/PlanktoScope";
            ref = "master";
            rev = "d52e194de0604e6fdd41ba2e13de9ab91e7789da";
          };
          extras = [];
        };
      };
      devShell = import ./nix/shell.nix {inherit pkgs;};
    });
}
