imbuf 0.3.3

Image buffers that abstract over underlying storage (Vec, Arc, or custom backends). Features copy-on-write semantics for efficient memory usage.
Documentation
{
  description = "Deterministic Rust";

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

  outputs = { self, nixpkgs, flake-utils, fenix, ... }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        pkgs = import nixpkgs { inherit system; };
        rust = with fenix.packages.${system}; combine [
          stable.toolchain
        ];
        rustNightlyWithMiri = with fenix.packages.${system}; combine [
          (latest.withComponents [
            "rustc"
            "cargo"
            "miri"
          ])
        ];
      in
      {
        devShells.default = pkgs.mkShell {
          buildInputs = [
            rust
            pkgs.bashInteractive
            pkgs.cargo-tarpaulin
          ];

          LD_LIBRARY_PATH = "${pkgs.openssl.out}/lib";

          shellHook = ''
            echo "===================================="
            echo " Welcome to the deterministic dev shell! "
            echo "===================================="
            echo "Rust toolchain:"
            rustc --version
            echo "Cargo version:"
            cargo --version
            echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
            echo "===================================="
            echo "Ready to develop! 🦀"
          '';
        };

        apps.miri = {
          type = "app";
          program = toString (pkgs.writeShellScript "miri" ''
            export PATH="${rustNightlyWithMiri}/bin:${pkgs.openssl.out}/bin:$PATH"
            export LD_LIBRARY_PATH="${pkgs.openssl.out}/lib"
            exec ${rustNightlyWithMiri}/bin/cargo miri test
          '');
        };

        apps.coverage = {
          type = "app";
          program = toString (pkgs.writeShellScript "coverage" ''
            set -e
            
            # Create coverage directory
            mkdir -p coverage
            
            # Run tests with coverage
            echo "Running tests with coverage..."
            ${pkgs.cargo-tarpaulin}/bin/cargo-tarpaulin \
              --out Html \
              --out Xml \
              --output-dir target/coverage \
              --exclude-files 'tests/*' \
              --exclude-files 'target/*' \
              --timeout 120 \
              --all-features
            
            echo ""
            echo "Coverage report generated in coverage/tarpaulin-report.html"
            echo "XML report generated in coverage/cobertura.xml"
            echo ""
            echo "Open coverage/tarpaulin-report.html in your browser to view the report."
          '');
        };
      });
}