bevy_screen_diags 0.6.0

An on-screen FPS display for bevyengine.org
Documentation
{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

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

    naersk = {
      url = "github:nix-community/naersk";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    fenix.url = "github:nix-community/fenix";
  };

  outputs = {self, nixpkgs, flake-utils, fenix, naersk,  ... }@inputs:
    flake-utils.lib.eachDefaultSystem (system:
    let
      target = "x86_64-unknown-linux-gnu";
      toolchain = with fenix.packages.${system}; combine [
        latest.cargo
        latest.rustc
        targets.${target}.latest.rust-std
      ];
      pkgs = import nixpkgs {
        overlays = [
          (_: super: let pkgs = fenix.inputs.nixpkgs.legacyPackages.${super.system}; in fenix.overlays.default pkgs pkgs)
        ];
        inherit system;
      };
      extraInputs = if target == "x86_64-pc-windows-gnu" then
        with pkgs; [pkgsCross.mingwW64.windows.mingw_w64_pthreads pkgsCross.mingwW64.windows.pthreads]
      else 
        [];
      buildInputs = with pkgs; [
        rust-analyzer-nightly
        cargo-expand
        pkgsCross.mingwW64.buildPackages.gcc
        glibc_multi
        udev alsa-lib vulkan-loader
        xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr
        libxkbcommon wayland
        gperftools
      ] ++ extraInputs;
      src = ./.;
      copySources = [
        "graphical_alien_swarm_proc_macros"
        "gas_asset_loader"
      ];
      manifest = (pkgs.lib.importTOML ./Cargo.toml).package;
    in {
      packages.default = self.packages.${system}.buildGame;

      packages.buildGame = (naersk.lib.${system}.override {
          cargo = toolchain;
          rustc = toolchain;
        }).buildPackage rec {
        singleStep = true;
        pname = manifest.name;
        version = manifest.version;
        gameName = "${pname}-${version}";
        gitAllRefs = true;

        inherit src copySources buildInputs;
        
        nativeBuildInputs = with pkgs; [
          toolchain
          pkg-config
        ];

        preBuild = ''
          export CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS="-C link-args=''$(echo $NIX_LDFLAGS | tr ' ' '\n' | grep -- '^-L' | tr '\n' ' ')"
          export NIX_LDFLAGS=
        '';

        LD_LIBRARY_PATH = nixpkgs.lib.makeLibraryPath buildInputs;
        CARGO_BUILD_TARGET = target;
      };

      devShells.${system}.default = pkgs.mkShell {
        gitAllRefs = true;
        inherit src copySources buildInputs;
        nativeBuildInputs = with pkgs; [ toolchain ];

        LD_LIBRARY_PATH = nixpkgs.lib.makeLibraryPath buildInputs;
        CARGO_BUILD_TARGET = target;
      };
  });
}