{
  description = "subtitlesStatus, the c3subtitles.de frontend code";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05";
    utils.url = "github:gytis-ivaskevicius/flake-utils-plus";
    poetry2nix = {
      url = "github:nix-community/poetry2nix";
      inputs = {
        nixpkgs.follows = "nixpkgs";
        flake-utils.follows = "utils/flake-utils";
      };
    };
  };

  outputs = { self, nixpkgs, utils, poetry2nix, ... }@inputs:
    let overlay = import ./nix;
    in utils.lib.mkFlake {
      inherit self inputs overlay;

      sharedOverlays = [ poetry2nix.overlay overlay ];

      outputsBuilder = channels: {
        devShell = let
          poetryEnv = channels.nixpkgs.poetry2nix.mkPoetryEnv {
            projectDir = ./.;
            overrides = channels.nixpkgs.poetry2nix.overrides.withDefaults
              (self: super: {
                uwsgi = null;
                cryptography = super.cryptography.overridePythonAttrs (old: {
                  cargoDeps = channels.nixpkgs.rustPlatform.fetchCargoTarball {
                    inherit (old) src;
                    name = "${old.pname}-${old.version}";
                    sourceRoot = "${old.pname}-${old.version}/src/rust/";
                    sha256 =
                      "sha256-f8r6QclTwkgK20CNe9i65ZOqvSUeDc4Emv6BFBhh1hI=";
                  };
                  cargoRoot = "src/rust";
                  nativeBuildInputs = old.nativeBuildInputs
                    ++ (with channels.nixpkgs.rustPlatform; [
                      rust.rustc
                      rust.cargo
                      cargoSetupHook
                    ]);
                });

              });
          };
        in poetryEnv.env.overrideAttrs (oldAttrs: {
          SUBTITLESTATUS_CONFIG = "${channels.nixpkgs.subtitleStatusCfg}";
          buildInputs = [ channels.nixpkgs.poetry ];
        });
      };
    };
}