{
  description = "Unicode toy";

  inputs.nixpkgs.url = "github:nixos/nixpkgs/release-24.11";

  outputs = { self, nixpkgs }:
    let
      pkgs = nixpkgs.legacyPackages.x86_64-linux;

      utoy = pkgs.haskellPackages.developPackage {
        root = ./.;
        overrides = self: super: {
          unicode-data = super.unicode-data_0_6_0;
          unicode-data-names = pkgs.haskell.lib.markUnbroken super.unicode-data-names;
        };
      };
    in {
      packages.x86_64-linux = rec {
        docker =
          pkgs.dockerTools.buildImage {
            name = "git.pbrinkmeier.de/paul/utoy";
            tag = utoy.version;
            config.Cmd = [ "${pkgs.haskell.lib.justStaticExecutables utoy}/bin/utoy" ];
          };

        default = utoy;
      };

      devShells.x86_64-linux.default =
        (pkgs.haskellPackages.developPackage {
          root = ./.;
          overrides = self: super: {
            unicode-data = super.unicode-data_0_6_0;
            unicode-data-names = pkgs.haskell.lib.markUnbroken super.unicode-data-names;
          };
          modifier = drv:
            pkgs.haskell.lib.addBuildTools drv [
              pkgs.cabal-install
              pkgs.haskellPackages.implicit-hie
              pkgs.haskell-language-server
            ];
          cabal2nixOptions = "--benchmark";
        }).env;
  };
}