{
  description = "C++ Functional Terminal User Interface library";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
  };

  outputs = {self, nixpkgs, flake-utils}:
    flake-utils.lib.eachDefaultSystem (system:
      let pkgs = import nixpkgs { inherit system; }; in
      {
        packages.ftxui = pkgs.stdenv.mkDerivation rec {
          pname = "ftxui";
          version = "v4.0.0";
          src = pkgs.fetchFromGitHub {
            owner = "ArthurSonzogni";
            repo = "FTXUI";
            rev = version;
            sha256 = "sha256-3kAhHDUwzwdvHc8JZAcA14tGqa6w69qrN1JXhSxNBQY=";
          };

          nativeBuildInputs = [
            pkgs.cmake
          ];

          cmakeFlags = [
            "-DFTXUI_ENABLE_INSTALL=ON"
            "-DFTXUI_BUILD_EXAMPLES=OFF"
            "-DFTXUI_BUILD_TESTS=OFF"
            "-DFTXUI_BUILD_DOCS=OFF"
            "-DCMAKE_BUILD_TYPE=Release"
          ];

          meta = {
            homepage = "https://arthursonzogni.github.io/FTXUI/";
            description = "C++ Functional Terminal User Interface.";
            longDescription = ''
              Functional Terminal (X) User interface
              
              A simple C++ library for terminal based user interfaces!
              Feature
              - Functional style. Inspired by [1] and React
              - Simple and elegant syntax (in my opinion)
              - Keyboard & mouse navigation.
              - Support for UTF8 and fullwidth chars (→ 测试)
              - Support for animations. Demo 1, Demo 2
              - Support for drawing. Demo
              - No dependencies
              - Cross platform: Linux/MacOS (main target), WebAssembly, Windows (Thanks to contributors!).
              - Learn by examples, and tutorials
              - Multiple packages: CMake FetchContent (preferred), vcpkg, pkgbuild, conan, nix, etc...
              - Good practises: documentation, tests, fuzzers, performance tests, automated CI, automated packaging, etc...
            '';
            license = pkgs.lib.licenses.mit;
            platforms = pkgs.lib.platforms.all;
          };
        };
      }
    );
}
