Full Code of nix-community/crate2nix for AI

master b873ca53dd64 cached
260 files
778.9 KB
214.1k tokens
303 symbols
1 requests
Download .txt
Showing preview only (850K chars total). Download the full file or copy to clipboard to get everything.
Repository: nix-community/crate2nix
Branch: master
Commit: b873ca53dd64
Files: 260
Total size: 778.9 KB

Directory structure:
gitextract_j4pbtguo/

├── .envrc
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── bug_report.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── static-docs.yml
│       ├── tests-nix-linux.yml
│       ├── tests-nix-macos.yml
│       └── update-flake-lock.yml
├── .gitignore
├── CHANGELOG.md
├── CLAUDE.md
├── CONTRIBUTING.md
├── LICENSE-APACHE
├── LICENSE-MIT
├── README.md
├── RELEASE.md
├── cargo.sh
├── crate2nix/
│   ├── Cargo.json
│   ├── Cargo.nix
│   ├── Cargo.toml
│   ├── crate-hashes.json
│   ├── default-json.nix
│   ├── default.nix
│   ├── deny.toml
│   ├── flake-module.nix
│   ├── mk-crate2nix.nix
│   ├── rustfmt.toml
│   ├── src/
│   │   ├── command.rs
│   │   ├── config.rs
│   │   ├── json_output.rs
│   │   ├── lib.rs
│   │   ├── lock.rs
│   │   ├── main.rs
│   │   ├── metadata.rs
│   │   ├── nix_build.rs
│   │   ├── prefetch.rs
│   │   ├── render.rs
│   │   ├── resolve.rs
│   │   ├── sources.rs
│   │   ├── test.rs
│   │   └── util.rs
│   ├── templates/
│   │   ├── Cargo-workspace.toml.tera
│   │   ├── Cargo.nix.tera
│   │   ├── crate2nix-sources.nix.tera
│   │   └── nix/
│   │       └── crate2nix/
│   │           ├── default.nix
│   │           └── tests/
│   │               ├── default.nix
│   │               ├── dependencyDerivations.nix
│   │               ├── dependencyFeatures.nix
│   │               ├── enableFeatures.nix
│   │               ├── expandFeatures.nix
│   │               ├── packageFeatures.nix
│   │               ├── run.nix
│   │               └── tests.nix
│   └── tests/
│       └── self_build_up_to_date.rs
├── crate2nix.sh
├── default.nix
├── docs/
│   ├── .gitignore
│   ├── .vscode/
│   │   ├── extensions.json
│   │   └── launch.json
│   ├── README.md
│   ├── astro.config.mjs
│   ├── flake-module.nix
│   ├── package.json
│   ├── src/
│   │   ├── content/
│   │   │   ├── config.ts
│   │   │   └── docs/
│   │   │       ├── 10_getting_started/
│   │   │       │   ├── 10_flake_template_new.md
│   │   │       │   ├── 20_installing_crate2nix.md
│   │   │       │   └── 30_running_crate2nix_without_install.md
│   │   │       ├── 20_generating/
│   │   │       │   ├── 10_generating.md
│   │   │       │   └── 20_auto_generating.mdx
│   │   │       ├── 30_building/
│   │   │       │   ├── 10_building_binaries.md
│   │   │       │   ├── 20_choosing_features.md
│   │   │       │   ├── 30_crateOverrides.md
│   │   │       │   └── 40_tests.md
│   │   │       ├── 35_toolchains/
│   │   │       │   ├── 10_custom_toolchains.md
│   │   │       │   └── 20_using_a_rust_overlay.md
│   │   │       ├── 40_external_sources/
│   │   │       │   ├── 10_building_fetched_sources.md
│   │   │       │   └── 20_generating_for_fetched_sources.md
│   │   │       ├── 50_contributing/
│   │   │       │   ├── 00_intro.md
│   │   │       │   ├── 05_code.md
│   │   │       │   ├── 10_docs.md
│   │   │       │   └── 90_release.md
│   │   │       ├── 70_design/
│   │   │       │   ├── 10_structure_and_phases.md
│   │   │       │   ├── 50_tools_nix.mdx
│   │   │       │   └── 90_inspiration.md
│   │   │       ├── 90_reference/
│   │   │       │   ├── 10_runtime_dependencies.md
│   │   │       │   ├── 20_known_restrictions.md
│   │   │       │   └── 90_CHANGELOG.md
│   │   │       └── index.mdx
│   │   └── env.d.ts
│   └── tsconfig.json
├── flake.nix
├── lib/
│   └── build-from-json.nix
├── nix/
│   ├── devshell/
│   │   └── flake-module.nix
│   ├── flakeInput.nix
│   ├── nix-test-runner/
│   │   ├── README.md
│   │   ├── default.nix
│   │   ├── package.nix
│   │   └── runTest.nix
│   ├── nixpkgs.nix
│   ├── perSystem-tools/
│   │   └── flake-module.nix
│   └── pre-commit/
│       └── flake-module.nix
├── nix-test.sh
├── nixpkgs-fmt.sh
├── out-of-tree-sources.md
├── regenerate_cargo_nix.sh
├── run_tests.sh
├── sample_projects/
│   ├── aliased-dependencies/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── hello/
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── src/
│   │       └── main.rs
│   ├── bin/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_required_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── bin/
│   │       │   └── bin_not_to_be_compiled.rs
│   │       └── main.rs
│   ├── bin_with_default_features/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── override-root-features.nix
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_dep_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_git_branch_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_git_submodule_dep/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── default-with-customBuildRustCrate.nix
│   │   ├── default-with-customBuildRustCrateForPkgs.nix
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_git_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_rerenamed_lib_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── cdylib/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   └── test.nix
│   ├── cfg-test/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── snowflake.txt
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   ├── test.nix
│   │   └── tests/
│   │       └── echo_foo_test.rs
│   ├── codegen/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── conditional_features/
│   │   ├── Cargo.toml
│   │   ├── optional/
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── src/
│   │       └── main.rs
│   ├── cross_compile_build_dependencies/
│   │   ├── Cargo.toml
│   │   ├── alice/
│   │   │   ├── Cargo.toml
│   │   │   ├── bob/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── dependency_issue_65/
│   │   ├── Cargo.toml
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── empty_cross/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── default.nix
│   │   └── src/
│   │       └── lib.rs
│   ├── future_util_multi_version/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── futures_compat/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── integration_test/
│   │   ├── Cargo.json
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── main.rs
│   │   ├── test-json.nix
│   │   ├── test.nix
│   │   └── tests/
│   │       ├── hello
│   │       └── integration_test.rs
│   ├── lib/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib_and_bin/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       ├── lib.rs
│   │       └── main.rs
│   ├── multiple_bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── bin1.rs
│   │       ├── bin2.rs
│   │       └── main.rs
│   ├── nix_workspaces/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   └── nix/
│   │       └── sources.nix
│   ├── numtest/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── numtest_new_cargo_lock/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── renamed_build_deps/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── main.rs
│   ├── renamed_dev_deps/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   ├── test.nix
│   │   └── tests.rs
│   ├── renaming/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── simple_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── sub_dir_crates/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── test_flag_passing/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   └── test.nix
│   ├── with_problematic_crates/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   └── workspace_with_nondefault_lib/
│       ├── Cargo.toml
│       └── crates/
│           ├── main/
│           │   ├── Cargo.toml
│           │   └── src/
│           │       └── main.rs
│           └── somelib/
│               ├── Cargo.toml
│               └── src/
│                   └── somelib.rs
├── sample_workspace/
│   ├── Cargo.toml
│   ├── bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_cond_lib_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_default_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── crate-hashes.json
│   ├── lib/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib_and_bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── main.rs
│   └── with_tera/
│       ├── Cargo.toml
│       └── src/
│           └── main.rs
├── shell.nix
├── templates/
│   └── flake-binary/
│       ├── .envrc
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── flake.nix
│       ├── nix/
│       │   ├── devshell/
│       │   │   └── flake-module.nix
│       │   └── rust-overlay/
│       │       └── flake-module.nix
│       ├── rust-toolchain.toml
│       └── src/
│           └── main.rs
├── tests.nix
└── tools.nix

================================================
FILE CONTENTS
================================================

================================================
FILE: .envrc
================================================
#!/usr/bin/env bash
# ^ make editor happy

#
# Use https://direnv.net/ to automatically load the dev shell.
#

if ! has nix_direnv_version || ! nix_direnv_version 3.0.4; then
  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.4/direnvrc" "sha256-DzlYZ33mWF/Gs8DDeyjr8mnVmQGx7ASYqA5WlxwvBG4="
fi  

watch_file nix/**
watch_file -- **/*.nix
# Adding files to git includes them in a flake
# But it is also a bit much reloading.
# watch_file .git/index .git/HEAD
use flake . --show-trace


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug Report
about: Report a bug with crate2nix
title: ''
labels: bug
assignees: ''
---

## Description

A clear description of the bug.

## Steps to Reproduce

1.
2.
3.

## Expected Behavior

What you expected to happen.

## Actual Behavior

What actually happened. Include error messages if applicable.

## Environment

- crate2nix version:
- Nix version:
- OS:

## Reproducible Test Case

**To help us fix this issue quickly, please provide a minimal reproducible example.**

The best way to do this is to submit a PR that adds a sample project to `sample_projects/`:

1. Create a minimal Cargo project that reproduces the issue
2. Add it to `sample_projects/your_project_name/`
3. Run `./regenerate_cargo_nix.sh` to generate the `Cargo.nix`
4. The test suite (`./run_tests.sh` or `nix flake check`) should demonstrate the failure

See existing projects in `sample_projects/` for examples of the expected structure.

If you can't submit a PR, please share:

- Your `Cargo.toml` and `Cargo.lock`
- Any relevant `crate2nix.json` configuration
- The generated `Cargo.nix` (or the error if generation fails)


================================================
FILE: .github/dependabot.yml
================================================
# Set update schedule for GitHub Actions

version: 2
updates:

  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      # Check for updates to GitHub Actions every weekday
      interval: "daily"

  - package-ecosystem: "cargo"
    directory: "/"
    schedule:
      interval: "monthly"
    exclude-paths:
      - "sample_projects/**"
      - "sample_workspace/**"


================================================
FILE: .github/workflows/static-docs.yml
================================================
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: [ "master" ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Single deploy job since we're just deploying
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
        - uses: actions/checkout@v6
        - uses: cachix/install-nix-action@v31
          with:
            nix_path: nixpkgs=channel:nixos-unstable
        - uses: cachix/cachix-action@v17
          with:
            name: eigenvalue
            signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
        - run: 'nix build .#docs'
        - name: Setup Pages
          uses: actions/configure-pages@v5
        - name: Upload artifact
          uses: actions/upload-pages-artifact@v4
          with:
            path: 'result'
        - name: Deploy to GitHub Pages
          id: deployment
          uses: actions/deploy-pages@v4


================================================
FILE: .github/workflows/tests-nix-linux.yml
================================================
name: "tests-nix-linux"
on:
  pull_request:
  push:
jobs:
  tests:
    strategy:
      matrix:
        platform:
          - ubuntu-latest
    runs-on: ${{ matrix.platform }}
    steps:
    - uses: actions/checkout@v6
    - uses: wimpysworld/nothing-but-nix@main
    - uses: cachix/install-nix-action@v31
      with:
        install_url: "https://releases.nixos.org/nix/nix-2.33.0/install"
        nix_path: nixpkgs=channel:nixos-unstable
    - uses: cachix/cachix-action@v17
      with:
        name: eigenvalue
        signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
    - run: "./run_tests.sh --no-cargo-build"
    - run: "nix --version"
    - run: "nix flake check -L"
    - run: "nix run . -- --help"


================================================
FILE: .github/workflows/tests-nix-macos.yml
================================================
name: "tests-nix-macos"
on:
  pull_request:
  push:
jobs:
  tests:
    strategy:
      matrix:
        platform:
          - macos-latest
    runs-on: ${{ matrix.platform }}
    steps:
    - uses: actions/checkout@v6
    - uses: cachix/install-nix-action@v31
      with:
        install_url: "https://releases.nixos.org/nix/nix-2.33.0/install"
        nix_path: nixpkgs=channel:nixos-unstable
    - uses: cachix/cachix-action@v17
      with:
        name: eigenvalue
        signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
    - run: "./run_tests.sh --no-cargo-build"
    - run: "nix --version"
    - run: "nix flake check -L"
    - run: "nix run . -- --help"


================================================
FILE: .github/workflows/update-flake-lock.yml
================================================
name: update-flake-lock
on:
  workflow_dispatch: # allows manual triggering
  schedule:
    - cron: '35 12 * * 3'

jobs:
  lockfile:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
      - name: Install Nix
        uses: DeterminateSystems/nix-installer-action@main
      - name: Update flake.lock
        uses: DeterminateSystems/update-flake-lock@main
        with:
          pr-title: "Update flake.lock"
          pr-labels: |
            dependencies
            automated

================================================
FILE: .gitignore
================================================
target
**/*.rs.bk
.idea
*.iml
/result*
/sample_projects/*/result
crate2nix/result*
/*.json
*.log
*~

# cachix tmp file
store-path-pre-build

# Devenv
.devenv*
devenv.local.nix

# direnv
.direnv

# pre-commit
.pre-commit-config.yaml

template/flake.lock

# Editor configuration
.zed/settings.json
.vscode/settings.json


================================================
FILE: CHANGELOG.md
================================================
# CHANGELOG

See
[CHANGELOG](https://nix-community.github.io/crate2nix/90_reference/90_changelog/).


================================================
FILE: CLAUDE.md
================================================
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working
with code in this repository.

## Project Overview

crate2nix generates Nix build files (`Cargo.nix`) for Rust/Cargo projects,
enabling crate-by-crate hermetic builds with Nix. It reads
`Cargo.toml`/`Cargo.lock`, resolves dependencies, prefetches hashes, and
renders Nix derivations via Tera templates.

## Development Environment

The project uses a Nix flake with direnv integration. Enter the dev shell
via `direnv allow` or `nix develop`. All shell scripts (e.g., `cargo.sh`,
`run_tests.sh`) auto-enter the pure nix-shell if not already inside.

## Common Commands

### Build

```bash
nix build                            # Build crate2nix via Nix
./cargo.sh build                     # Build with cargo (inside nix-shell)
```

### Test

```bash
./run_tests.sh                       # Full test suite
./run_tests.sh --no-cargo-build      # Skip cargo build/test steps (Nix-only)
./cargo.sh test                      # Rust unit tests only
./cargo.sh test test_name            # Single Rust test
./nix-test.sh ./crate2nix/templates/nix/crate2nix/tests/default.nix
nix flake check                      # Nix integration tests
```

### Lint & Format

```bash
./cargo.sh clippy                    # Rust linting
./cargo.sh fmt                       # Rust formatting
./nixpkgs-fmt.sh \
  ./{,nix/}{,*/}*.nix \
  ./crate2nix/templates/nix/crate2nix/{*.nix,tests/*.nix} \
  ./sample_projects/*/[[:lower:]]*.nix  # Nix formatting
```

### Regenerate Generated Files

```bash
./regenerate_cargo_nix.sh            # Regenerate all Cargo.nix files
```

### Docs (Astro/Starlight site in `docs/`)

```bash
nix build .#docs                     # Build static docs site
cd docs && npm run dev               # Local dev server
cd docs && npm run build             # Build via npm directly
```

## Architecture

### Rust Source (`crate2nix/src/`)

The CLI entry point is `main.rs` using `structopt`. The main command is
`generate`.

Core pipeline in `lib.rs` via `BuildInfo::for_config()`:

1. **metadata.rs** - Calls `cargo metadata`, merges results from
   multiple Cargo.toml files into `IndexedMetadata`
2. **resolve.rs** - Resolves each package into `CrateDerivation` with
   source type (`CratesIo`, `Git`, `Registry`, etc.), dependencies
   (normal/build/dev), platform conditions, and features
3. **lock.rs** - Parses `Cargo.lock` to extract checksums, avoiding
   unnecessary prefetches
4. **prefetch.rs** - Prefetches SHA256 hashes via
   `nix-prefetch-url`/`nix-prefetch-git`, caches in
   `crate-hashes.json` and `registry-hashes.json`
5. **render.rs** - Renders output using Tera templates
6. **config.rs** - Reads optional `crate2nix.json` for out-of-tree
   sources and configuration
7. **sources.rs** - Manages source fetching for crates.io, git, and
   alternative registries

### Nix Templates (`crate2nix/templates/`)

- `Cargo.nix.tera` - Main output template; generates a Nix file that
  provides `rootCrate`, `workspaceMembers`, and per-crate derivations
- `nix/` - Template includes for the build infrastructure (crate
  building, feature resolution, etc.)

### Key Nix Files (repo root)

- `tools.nix` - Public Nix API; provides `generatedCargoNix` helper
  for generating Cargo.nix in Nix builds
- `tests.nix` - Integration test harness; defines `buildTest` function
  and runs all `sample_projects/`
- `default.nix` - Package derivation for crate2nix itself

### Sample Projects (`sample_projects/`)

30+ test projects covering various scenarios: binary/library crates,
features, git dependencies, workspaces, cross-compilation, cdylib,
codegen, etc. Each has a pregenerated `Cargo.nix` that gets regenerated
by `regenerate_cargo_nix.sh`.

## Key Conventions

- Rust edition 2021, `#![forbid(unsafe_code)]`,
  `#![deny(missing_docs)]` in lib.rs
- Rust formatting: edition 2018 style with reordered imports
  (`rustfmt.toml`)
- Nix formatting: `nixpkgs-fmt`
- License: Apache-2.0 (Rust crate), dual Apache-2.0/MIT (repo)
- Version tags use bare numbers (e.g., `0.14.2`, not `v0.14.2`)
- The `Cargo.nix` files are checked into git; `run_tests.sh` verifies
  no uncommitted changes after regeneration


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

See
[Contributing](https://nix-community.github.io/crate2nix/50_contributing/00_intro/).


================================================
FILE: LICENSE-APACHE
================================================
                              Apache License
                        Version 2.0, January 2004
                     https://www.apache.org/licenses/LICENSE-2.0

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

   "License" shall mean the terms and conditions for use, reproduction,
   and distribution as defined by Sections 1 through 9 of this document.

   "Licensor" shall mean the copyright owner or entity authorized by
   the copyright owner that is granting the License.

   "Legal Entity" shall mean the union of the acting entity and all
   other entities that control, are controlled by, or are under common
   control with that entity. For the purposes of this definition,
   "control" means (i) the power, direct or indirect, to cause the
   direction or management of such entity, whether by contract or
   otherwise, or (ii) ownership of fifty percent (50%) or more of the
   outstanding shares, or (iii) beneficial ownership of such entity.

   "You" (or "Your") shall mean an individual or Legal Entity
   exercising permissions granted by this License.

   "Source" form shall mean the preferred form for making modifications,
   including but not limited to software source code, documentation
   source, and configuration files.

   "Object" form shall mean any form resulting from mechanical
   transformation or translation of a Source form, including but
   not limited to compiled object code, generated documentation,
   and conversions to other media types.

   "Work" shall mean the work of authorship, whether in Source or
   Object form, made available under the License, as indicated by a
   copyright notice that is included in or attached to the work
   (an example is provided in the Appendix below).

   "Derivative Works" shall mean any work, whether in Source or Object
   form, that is based on (or derived from) the Work and for which the
   editorial revisions, annotations, elaborations, or other modifications
   represent, as a whole, an original work of authorship. For the purposes
   of this License, Derivative Works shall not include works that remain
   separable from, or merely link (or bind by name) to the interfaces of,
   the Work and Derivative Works thereof.

   "Contribution" shall mean any work of authorship, including
   the original version of the Work and any modifications or additions
   to that Work or Derivative Works thereof, that is intentionally
   submitted to Licensor for inclusion in the Work by the copyright owner
   or by an individual or Legal Entity authorized to submit on behalf of
   the copyright owner. For the purposes of this definition, "submitted"
   means any form of electronic, verbal, or written communication sent
   to the Licensor or its representatives, including but not limited to
   communication on electronic mailing lists, source code control systems,
   and issue tracking systems that are managed by, or on behalf of, the
   Licensor for the purpose of discussing and improving the Work, but
   excluding communication that is conspicuously marked or otherwise
   designated in writing by the copyright owner as "Not a Contribution."

   "Contributor" shall mean Licensor and any individual or Legal Entity
   on behalf of whom a Contribution has been received by Licensor and
   subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
   this License, each Contributor hereby grants to You a perpetual,
   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
   copyright license to reproduce, prepare Derivative Works of,
   publicly display, publicly perform, sublicense, and distribute the
   Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
   this License, each Contributor hereby grants to You a perpetual,
   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
   (except as stated in this section) patent license to make, have made,
   use, offer to sell, sell, import, and otherwise transfer the Work,
   where such license applies only to those patent claims licensable
   by such Contributor that are necessarily infringed by their
   Contribution(s) alone or by combination of their Contribution(s)
   with the Work to which such Contribution(s) was submitted. If You
   institute patent litigation against any entity (including a
   cross-claim or counterclaim in a lawsuit) alleging that the Work
   or a Contribution incorporated within the Work constitutes direct
   or contributory patent infringement, then any patent licenses
   granted to You under this License for that Work shall terminate
   as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
   Work or Derivative Works thereof in any medium, with or without
   modifications, and in Source or Object form, provided that You
   meet the following conditions:

   (a) You must give any other recipients of the Work or
       Derivative Works a copy of this License; and

   (b) You must cause any modified files to carry prominent notices
       stating that You changed the files; and

   (c) You must retain, in the Source form of any Derivative Works
       that You distribute, all copyright, patent, trademark, and
       attribution notices from the Source form of the Work,
       excluding those notices that do not pertain to any part of
       the Derivative Works; and

   (d) If the Work includes a "NOTICE" text file as part of its
       distribution, then any Derivative Works that You distribute must
       include a readable copy of the attribution notices contained
       within such NOTICE file, excluding those notices that do not
       pertain to any part of the Derivative Works, in at least one
       of the following places: within a NOTICE text file distributed
       as part of the Derivative Works; within the Source form or
       documentation, if provided along with the Derivative Works; or,
       within a display generated by the Derivative Works, if and
       wherever such third-party notices normally appear. The contents
       of the NOTICE file are for informational purposes only and
       do not modify the License. You may add Your own attribution
       notices within Derivative Works that You distribute, alongside
       or as an addendum to the NOTICE text from the Work, provided
       that such additional attribution notices cannot be construed
       as modifying the License.

   You may add Your own copyright statement to Your modifications and
   may provide additional or different license terms and conditions
   for use, reproduction, or distribution of Your modifications, or
   for any such Derivative Works as a whole, provided Your use,
   reproduction, and distribution of the Work otherwise complies with
   the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
   names, trademarks, service marks, or product names of the Licensor,
   except as required for reasonable and customary use in describing the
   origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
   agreed to in writing, Licensor provides the Work (and each
   Contributor provides its Contributions) on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
   implied, including, without limitation, any warranties or conditions
   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
   PARTICULAR PURPOSE. You are solely responsible for determining the
   appropriateness of using or redistributing the Work and assume any
   risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
   whether in tort (including negligence), contract, or otherwise,
   unless required by applicable law (such as deliberate and grossly
   negligent acts) or agreed to in writing, shall any Contributor be
   liable to You for damages, including any direct, indirect, special,
   incidental, or consequential damages of any character arising as a
   result of this License or out of the use or inability to use the
   Work (including but not limited to damages for loss of goodwill,
   work stoppage, computer failure or malfunction, or any and all
   other commercial damages or losses), even if such Contributor
   has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
   the Work or Derivative Works thereof, You may choose to offer,
   and charge a fee for, acceptance of support, warranty, indemnity,
   or other liability obligations and/or rights consistent with this
   License. However, in accepting such obligations, You may act only
   on Your own behalf and on Your sole responsibility, not on behalf
   of any other Contributor, and only if You agree to indemnify,
   defend, and hold each Contributor harmless for any liability
   incurred by, or claims asserted against, such Contributor by reason
   of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

   To apply the Apache License to your work, attach the following
   boilerplate notice, with the fields enclosed by brackets "[]"
   replaced with your own identifying information. (Don't include
   the brackets!)  The text should be enclosed in the appropriate
   comment syntax for the file format. We also recommend that a
   file or class name and description of purpose be included on the
   same "printed page" as the copyright notice for easier
   identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

	https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


================================================
FILE: LICENSE-MIT
================================================
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
Software without restriction, including without
limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice
shall be included in all copies or substantial portions
of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
# crate2nix

[![tests-nix-linux](https://github.com/nix-community/crate2nix/actions/workflows/tests-nix-linux.yml/badge.svg)](https://github.com/nix-community/crate2nix/actions/workflows/tests-nix-linux.yml)
[![tests-nix-macos](https://github.com/nix-community/crate2nix/actions/workflows/tests-nix-macos.yml/badge.svg)](https://github.com/nix-community/crate2nix/actions/workflows/tests-nix-macos.yml)
[![Crate](https://img.shields.io/crates/v/crate2nix.svg)](https://crates.io/crates/crate2nix)

`crate2nix` generates [Nix](https://nixos.org/nix/) build files for
[Rust](https://www.rust-lang.org/)/[Cargo](https://crates.io/) projects,
building each crate individually for precise, incremental rebuilds.

- **Incremental CI builds** -- only rebuild the crates that actually changed.
- **Full Nix integration** -- remote builds, binary caches, Docker images, NixOS modules.
- **Local dev unchanged** -- keep using `cargo` and `rust-analyzer` as usual.

## Quick start

### Without installing

```bash
nix run nixpkgs#crate2nix -- generate
nix build -f Cargo.nix rootCrate.build
```

### With a flake template

```bash
nix flake init --template github:nix-community/crate2nix
```

### Installing

```bash
# From nixpkgs
nix profile install nixpkgs#crate2nix

# Latest development version
nix profile install github:nix-community/crate2nix
```

Then, inside your project:

```bash
crate2nix generate        # creates Cargo.nix
nix build -f Cargo.nix rootCrate.build
```

## How it works

`crate2nix` reads `Cargo.toml` and `Cargo.lock`, resolves the full dependency
tree via `cargo metadata`, prefetches source hashes, and renders a `Cargo.nix`
file through Tera templates. The generated file contains one Nix derivation per
crate, so Nix rebuilds only what changed.

Two generation strategies are supported:

| Strategy | Pros | Cons |
| --- | --- | --- |
| **Manual** (`crate2nix generate`) | No IFD, full build parallelism | Must regenerate when deps change |
| **Auto** (Import From Derivation) | Always in sync with `Cargo.lock` | May reduce parallelism |

## Nix API

`tools.nix` exposes helpers for use in your own Nix expressions:

```nix
let
  crate2nix = builtins.fetchTarball "https://github.com/nix-community/crate2nix/tarball/master";
  tools = import "${crate2nix}/tools.nix" { inherit pkgs; };

  generated = tools.generatedCargoNix {
    name = "my-project";
    src = ./.;
  };

  project = pkgs.callPackage "${generated}/default.nix" {};
in
  project.rootCrate.build
```

Or the shorthand `appliedCargoNix` which combines generation and import.

## JSON output (experimental)

`crate2nix generate --format json` emits a pre-resolved JSON file instead of
`Cargo.nix`. All dependency resolution — feature expansion, `cfg()` platform
filtering, optional dep activation — happens in Rust, so the Nix side is a
trivial data consumer with no O(n×m) eval-time logic.

### Generating

```bash
crate2nix generate --format json
```

This writes `./Cargo.json` by default (use `-o` to override). The output is
compact: empty fields and already-resolved feature maps are omitted, so the
JSON is typically smaller than the equivalent `Cargo.nix`.

### Consuming in Nix

Use `lib/build-from-json.nix` (shipped in this repo) to turn the JSON into
`buildRustCrate` derivations:

```nix
let
  cargoNix = import ./lib/build-from-json.nix {
    inherit pkgs;
    src = ./.;
    resolvedJson = ./Cargo.json;
  };
in {
  # Single crate
  my-binary = cargoNix.workspaceMembers.my-crate.build;

  # Root crate (if the workspace has one)
  default = cargoNix.rootCrate.build;

  # All workspace members linked together
  all = cargoNix.allWorkspaceMembers;
}
```

The consumer accepts two optional arguments for customisation:

- `buildRustCrateForPkgs` — override the `buildRustCrate` used (e.g. for a
  custom toolchain)
- `defaultCrateOverrides` — per-crate build fixups, same as the existing
  `Cargo.nix` workflow

## Documentation

Full documentation is at
**<https://nix-community.github.io/crate2nix/>**, covering:

- [Installation options](https://nix-community.github.io/crate2nix/10_getting_started/20_installing_crate2nix/)
- [Generation strategies](https://nix-community.github.io/crate2nix/20_generating/10_generating/)
- [Building binaries](https://nix-community.github.io/crate2nix/30_building/10_building_binaries/)
- [Feature selection](https://nix-community.github.io/crate2nix/30_building/20_choosing_features/)
- [Crate overrides](https://nix-community.github.io/crate2nix/30_building/30_crateoverrides/)
- [Known restrictions](https://nix-community.github.io/crate2nix/90_reference/20_known_restrictions/)
- [Changelog](https://nix-community.github.io/crate2nix/90_reference/90_changelog/)

## Contributing

Contributions are welcome! See the
[contributing guide](https://nix-community.github.io/crate2nix/50_contributing/)
for details.

## License

Apache-2.0


================================================
FILE: RELEASE.md
================================================
# Creating a release

Release checklist for crate2nix maintainers.

- [ ] Update flake dependencies: `nix flake update`
- [ ] `./run_tests.sh`
- [ ] Verify build on Mac OS X
- [ ] Verify that generated output looks nice
- [ ] Verify that CHANGELOG is up-to-date
- [ ] Verify that new features are documented
- [ ] Bump version in `crate2nix/Cargo.toml`
- [ ] `./run_tests.sh` to regenerate sources after version bump
- [ ] Tag version e.g. `0.14.2` (without leading `v`)
- [ ] Push
- [ ] `cargo publish`
- [ ] In `flake.nix`: bump input `crate2nix_stable` to the new tag
- [ ] Create release from tag


================================================
FILE: cargo.sh
================================================
#!/usr/bin/env bash

# Executes cargo from the pinned nixpkgs
#
# Example: ./cargo.sh test

set -Eeuo pipefail

top="$(dirname "$0")"
top="$(cd "$top"; pwd)"

if [ -z "${IN_CRATE2NIX_SHELL:-}" ]; then
  echo "=== Entering $top/shell.nix"
  exec nix-shell --pure "$top/shell.nix" --run "$(printf "%q " $0 "$@")"
fi

export TEMPLATES_DIR="$top/crate2nix/templates"

cargo "$@"


================================================
FILE: crate2nix/Cargo.json
================================================
{
  "generator": "@generated by crate2nix",
  "root": "crate2nix",
  "workspaceMembers": {
    "crate2nix": "crate2nix"
  },
  "crates": {
    "aho-corasick": {
      "crateName": "aho-corasick",
      "version": "1.1.3",
      "edition": "2021",
      "sha256": "05mrpkvdgp5d20y2p989f187ry9diliijgwrs254fs9s1m1x6q4f",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "memchr",
          "packageId": "memchr"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "perf-literal",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "ansi_term": {
      "crateName": "ansi_term",
      "version": "0.12.1",
      "edition": "2015",
      "sha256": "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "winapi",
          "packageId": "winapi",
          "target": "cfg(target_os = \"windows\")"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "ogham@bsago.me",
        "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>",
        "Josh Triplett <josh@joshtriplett.org>"
      ]
    },
    "anyhow": {
      "crateName": "anyhow",
      "version": "1.0.86",
      "edition": "2018",
      "sha256": "1nk301x8qhpdaks6a9zvcp7yakjqnczjmqndbg7vk4494d3d1ldk",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "atty": {
      "crateName": "atty",
      "version": "0.2.14",
      "edition": "2015",
      "sha256": "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "hermit-abi",
          "packageId": "hermit-abi",
          "target": "cfg(target_os = \"hermit\")"
        },
        {
          "name": "libc",
          "packageId": "libc",
          "target": "cfg(unix)"
        },
        {
          "name": "winapi",
          "packageId": "winapi",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "softprops <d.tangren@gmail.com>"
      ]
    },
    "bitflags 1.3.2": {
      "crateName": "bitflags",
      "version": "1.3.2",
      "edition": "2018",
      "sha256": "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "bitflags 2.6.0": {
      "crateName": "bitflags",
      "version": "2.6.0",
      "edition": "2021",
      "sha256": "1pkidwzn3hnxlsl8zizh0bncgbjnw7c41cx7bby26ncbzmiznj5h",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "block-buffer": {
      "crateName": "block-buffer",
      "version": "0.10.4",
      "edition": "2018",
      "sha256": "0w9sa2ypmrsqqvc20nhwr75wbb5cjr4kkyhpjm1z1lv2kdicfy1h",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "generic-array",
          "packageId": "generic-array"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "RustCrypto Developers"
      ]
    },
    "bstr": {
      "crateName": "bstr",
      "version": "1.9.1",
      "edition": "2021",
      "sha256": "01ipr5rncw3kf4dyc1p2g00njn1df2b0xpviwhb8830iv77wbvq5",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "memchr",
          "packageId": "memchr"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "camino": {
      "crateName": "camino",
      "version": "1.1.7",
      "edition": "2018",
      "sha256": "0ff28kc3qjcrmi8k88b2j2p7mzrvbag20yqcrj9sl30n3fanpv70",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "serde",
        "serde1"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Without Boats <saoirse@without.boats>",
        "Ashley Williams <ashley666ashley@gmail.com>",
        "Steve Klabnik <steve@steveklabnik.com>",
        "Rain <rain@sunshowers.io>"
      ]
    },
    "cargo-platform": {
      "crateName": "cargo-platform",
      "version": "0.1.8",
      "edition": "2021",
      "sha256": "1z5b7ivbj508wkqdg2vb0hw4vi1k1pyhcn6h1h1b8svcb8vg1c94",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "cargo_metadata": {
      "crateName": "cargo_metadata",
      "version": "0.18.1",
      "edition": "2018",
      "sha256": "0drh0zndl4qgndy6kg6783cydbvhxgv0hcg7d9hhqx0zwi3nb21d",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "camino",
          "packageId": "camino"
        },
        {
          "name": "cargo-platform",
          "packageId": "cargo-platform"
        },
        {
          "name": "semver",
          "packageId": "semver"
        },
        {
          "name": "serde",
          "packageId": "serde"
        },
        {
          "name": "serde_json",
          "packageId": "serde_json"
        },
        {
          "name": "thiserror",
          "packageId": "thiserror"
        }
      ],
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>"
      ]
    },
    "cfg-if": {
      "crateName": "cfg-if",
      "version": "1.0.0",
      "edition": "2018",
      "sha256": "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Alex Crichton <alex@alexcrichton.com>"
      ]
    },
    "clap": {
      "crateName": "clap",
      "version": "2.34.0",
      "edition": "2018",
      "sha256": "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "ansi_term",
          "packageId": "ansi_term",
          "target": "cfg(not(windows))"
        },
        {
          "name": "atty",
          "packageId": "atty"
        },
        {
          "name": "bitflags",
          "packageId": "bitflags 1.3.2"
        },
        {
          "name": "strsim",
          "packageId": "strsim"
        },
        {
          "name": "textwrap",
          "packageId": "textwrap"
        },
        {
          "name": "unicode-width",
          "packageId": "unicode-width"
        },
        {
          "name": "vec_map",
          "packageId": "vec_map"
        }
      ],
      "resolvedDefaultFeatures": [
        "ansi_term",
        "atty",
        "color",
        "default",
        "strsim",
        "suggestions",
        "vec_map"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Kevin K. <kbknapp@gmail.com>"
      ]
    },
    "colored-diff": {
      "crateName": "colored-diff",
      "version": "0.2.3",
      "edition": "2015",
      "sha256": "1dfwjxd13f8l8bdzm76kkp6cp4sr1pyc8lavp52avwy313mhh0j1",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "ansi_term",
          "packageId": "ansi_term"
        },
        {
          "name": "dissimilar",
          "packageId": "dissimilar"
        },
        {
          "name": "itertools",
          "packageId": "itertools 0.10.5"
        }
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "cpufeatures": {
      "crateName": "cpufeatures",
      "version": "0.2.12",
      "edition": "2018",
      "sha256": "012m7rrak4girqlii3jnqwrr73gv1i980q4wra5yyyhvzwk5xzjk",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "libc",
          "packageId": "libc",
          "target": "aarch64-linux-android"
        },
        {
          "name": "libc",
          "packageId": "libc",
          "target": "cfg(all(target_arch = \"aarch64\", target_os = \"linux\"))"
        },
        {
          "name": "libc",
          "packageId": "libc",
          "target": "cfg(all(target_arch = \"aarch64\", target_vendor = \"apple\"))"
        },
        {
          "name": "libc",
          "packageId": "libc",
          "target": "cfg(all(target_arch = \"loongarch64\", target_os = \"linux\"))"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "RustCrypto Developers"
      ]
    },
    "crate2nix": {
      "crateName": "crate2nix",
      "version": "0.15.0",
      "edition": "2021",
      "source": {
        "type": "local",
        "path": "."
      },
      "dependencies": [
        {
          "name": "anyhow",
          "packageId": "anyhow"
        },
        {
          "name": "cargo-platform",
          "packageId": "cargo-platform"
        },
        {
          "name": "cargo_metadata",
          "packageId": "cargo_metadata"
        },
        {
          "name": "hex",
          "packageId": "hex"
        },
        {
          "name": "itertools",
          "packageId": "itertools 0.12.1"
        },
        {
          "name": "lazy_static",
          "packageId": "lazy_static"
        },
        {
          "name": "nix-base32",
          "packageId": "nix-base32"
        },
        {
          "name": "pathdiff",
          "packageId": "pathdiff"
        },
        {
          "name": "semver",
          "packageId": "semver"
        },
        {
          "name": "serde",
          "packageId": "serde"
        },
        {
          "name": "serde_json",
          "packageId": "serde_json"
        },
        {
          "name": "structopt",
          "packageId": "structopt"
        },
        {
          "name": "tera",
          "packageId": "tera"
        },
        {
          "name": "toml",
          "packageId": "toml"
        },
        {
          "name": "url",
          "packageId": "url"
        }
      ],
      "devDependencies": [
        {
          "name": "colored-diff",
          "packageId": "colored-diff"
        },
        {
          "name": "fs_extra",
          "packageId": "fs_extra"
        },
        {
          "name": "tempdir",
          "packageId": "tempdir"
        }
      ],
      "crateBin": [
        {
          "name": "crate2nix",
          "path": "src/main.rs"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Peter Kolloch <info@eigenvalue.net>"
      ]
    },
    "crossbeam-deque": {
      "crateName": "crossbeam-deque",
      "version": "0.8.5",
      "edition": "2021",
      "sha256": "03bp38ljx4wj6vvy4fbhx41q8f585zyqix6pncz1mkz93z08qgv1",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "crossbeam-epoch",
          "packageId": "crossbeam-epoch"
        },
        {
          "name": "crossbeam-utils",
          "packageId": "crossbeam-utils"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "crossbeam-epoch": {
      "crateName": "crossbeam-epoch",
      "version": "0.9.18",
      "edition": "2021",
      "sha256": "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "crossbeam-utils",
          "packageId": "crossbeam-utils"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "crossbeam-utils": {
      "crateName": "crossbeam-utils",
      "version": "0.8.20",
      "edition": "2021",
      "sha256": "100fksq5mm1n7zj242cclkw6yf7a4a8ix3lvpfkhxvdhbda9kv12",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "crypto-common": {
      "crateName": "crypto-common",
      "version": "0.1.6",
      "edition": "2018",
      "sha256": "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "generic-array",
          "packageId": "generic-array"
        },
        {
          "name": "typenum",
          "packageId": "typenum"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "RustCrypto Developers"
      ]
    },
    "digest": {
      "crateName": "digest",
      "version": "0.10.7",
      "edition": "2018",
      "sha256": "14p2n6ih29x81akj097lvz7wi9b6b9hvls0lwrv7b6xwyy0s5ncy",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "block-buffer",
          "packageId": "block-buffer"
        },
        {
          "name": "crypto-common",
          "packageId": "crypto-common"
        }
      ],
      "resolvedDefaultFeatures": [
        "block-buffer",
        "core-api",
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "RustCrypto Developers"
      ]
    },
    "dissimilar": {
      "crateName": "dissimilar",
      "version": "1.0.9",
      "edition": "2018",
      "sha256": "0bcn4s99ghigd3yadpd7i3gljv5z2hkr07ijvvxvsxmz3yfygy2r",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "either": {
      "crateName": "either",
      "version": "1.13.0",
      "edition": "2018",
      "sha256": "1w2c1mybrd7vljyxk77y9f4w9dyjrmp3yp82mk7bcm8848fazcb0",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "use_std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "bluss"
      ]
    },
    "equivalent": {
      "crateName": "equivalent",
      "version": "1.0.1",
      "edition": "2015",
      "sha256": "1malmx5f4lkfvqasz319lq6gb3ddg19yzf9s8cykfsgzdmyq0hsl",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ]
    },
    "form_urlencoded": {
      "crateName": "form_urlencoded",
      "version": "1.2.1",
      "edition": "2018",
      "sha256": "0milh8x7nl4f450s3ddhg57a3flcv6yq8hlkyk6fyr3mcb128dp1",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "percent-encoding",
          "packageId": "percent-encoding"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The rust-url developers"
      ]
    },
    "fs_extra": {
      "crateName": "fs_extra",
      "version": "1.3.0",
      "edition": "2018",
      "sha256": "075i25z70j2mz9r7i9p9r521y8xdj81q7skslyb7zhqnnw33fw22",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Denis Kurilenko <webdesus@gmail.com>"
      ]
    },
    "fuchsia-cprng": {
      "crateName": "fuchsia-cprng",
      "version": "0.1.1",
      "edition": "2018",
      "sha256": "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Erick Tryzelaar <etryzelaar@google.com>"
      ]
    },
    "generic-array": {
      "crateName": "generic-array",
      "version": "0.14.7",
      "edition": "2015",
      "sha256": "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "typenum",
          "packageId": "typenum"
        }
      ],
      "buildDependencies": [
        {
          "name": "version_check",
          "packageId": "version_check"
        }
      ],
      "resolvedDefaultFeatures": [
        "more_lengths"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Bartłomiej Kamiński <fizyk20@gmail.com>",
        "Aaron Trent <novacrazy@gmail.com>"
      ]
    },
    "globset": {
      "crateName": "globset",
      "version": "0.4.14",
      "edition": "2021",
      "sha256": "1qab0c1drpybgm4nc92lf8b46x0ap44c9y4k23rndgc5bfdkpnjp",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "aho-corasick",
          "packageId": "aho-corasick"
        },
        {
          "name": "bstr",
          "packageId": "bstr"
        },
        {
          "name": "log",
          "packageId": "log"
        },
        {
          "name": "regex-automata",
          "packageId": "regex-automata"
        },
        {
          "name": "regex-syntax",
          "packageId": "regex-syntax"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "log"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "globwalk": {
      "crateName": "globwalk",
      "version": "0.9.1",
      "edition": "2021",
      "sha256": "0mz7bsa66p2rrgnz3l94ac4kbklh7mq8j30iizyxjy4qyvmn1xqb",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "bitflags",
          "packageId": "bitflags 2.6.0"
        },
        {
          "name": "ignore",
          "packageId": "ignore"
        },
        {
          "name": "walkdir",
          "packageId": "walkdir"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Gilad Naaman <gilad@naaman.io>"
      ]
    },
    "hashbrown": {
      "crateName": "hashbrown",
      "version": "0.14.5",
      "edition": "2021",
      "sha256": "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "raw"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Amanieu d'Antras <amanieu@gmail.com>"
      ]
    },
    "heck": {
      "crateName": "heck",
      "version": "0.3.3",
      "edition": "2018",
      "sha256": "0b0kkr790p66lvzn9nsmfjvydrbmh9z5gb664jchwgw64vxiwqkd",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unicode-segmentation",
          "packageId": "unicode-segmentation"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Without Boats <woboats@gmail.com>"
      ]
    },
    "hermit-abi": {
      "crateName": "hermit-abi",
      "version": "0.1.19",
      "edition": "2018",
      "sha256": "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "libc",
          "packageId": "libc"
        }
      ],
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Stefan Lankes"
      ]
    },
    "hex": {
      "crateName": "hex",
      "version": "0.4.3",
      "edition": "2018",
      "sha256": "0w1a4davm1lgzpamwnba907aysmlrnygbqmfis2mqjx5m552a93z",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "KokaKiwi <kokakiwi@kokakiwi.net>"
      ]
    },
    "idna": {
      "crateName": "idna",
      "version": "0.5.0",
      "edition": "2018",
      "sha256": "1xhjrcjqq0l5bpzvdgylvpkgk94panxgsirzhjnnqfdgc4a9nkb3",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unicode-bidi",
          "packageId": "unicode-bidi"
        },
        {
          "name": "unicode-normalization",
          "packageId": "unicode-normalization"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The rust-url developers"
      ]
    },
    "ignore": {
      "crateName": "ignore",
      "version": "0.4.22",
      "edition": "2021",
      "sha256": "1wcaqpi6djqgi1brghrdyw4d5qgnwzhqrqyn4mar4vp677gi0s5l",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "crossbeam-deque",
          "packageId": "crossbeam-deque"
        },
        {
          "name": "globset",
          "packageId": "globset"
        },
        {
          "name": "log",
          "packageId": "log"
        },
        {
          "name": "memchr",
          "packageId": "memchr"
        },
        {
          "name": "regex-automata",
          "packageId": "regex-automata"
        },
        {
          "name": "same-file",
          "packageId": "same-file"
        },
        {
          "name": "walkdir",
          "packageId": "walkdir"
        },
        {
          "name": "winapi-util",
          "packageId": "winapi-util",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "indexmap": {
      "crateName": "indexmap",
      "version": "2.2.6",
      "edition": "2021",
      "sha256": "09hgwi2ig0wyj5rjziia76zmhgfj95k0jb4ic3iiawm4vlavg3qn",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "equivalent",
          "packageId": "equivalent"
        },
        {
          "name": "hashbrown",
          "packageId": "hashbrown"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "itertools 0.10.5": {
      "crateName": "itertools",
      "version": "0.10.5",
      "edition": "2018",
      "sha256": "0ww45h7nxx5kj6z2y6chlskxd1igvs4j507anr6dzg99x1h25zdh",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "either",
          "packageId": "either"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "bluss"
      ]
    },
    "itertools 0.12.1": {
      "crateName": "itertools",
      "version": "0.12.1",
      "edition": "2018",
      "sha256": "0s95jbb3ndj1lvfxyq5wanc0fm0r6hg6q4ngb92qlfdxvci10ads",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "either",
          "packageId": "either"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "use_alloc",
        "use_std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "bluss"
      ]
    },
    "itoa": {
      "crateName": "itoa",
      "version": "1.0.11",
      "edition": "2018",
      "sha256": "0nv9cqjwzr3q58qz84dcz63ggc54yhf1yqar1m858m1kfd4g3wa9",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "lazy_static": {
      "crateName": "lazy_static",
      "version": "1.5.0",
      "edition": "2015",
      "sha256": "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Marvin Löbel <loebel.marvin@gmail.com>"
      ]
    },
    "libc": {
      "crateName": "libc",
      "version": "0.2.155",
      "edition": "2015",
      "sha256": "0z44c53z54znna8n322k5iwg80arxxpdzjj5260pxxzc9a58icwp",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "log": {
      "crateName": "log",
      "version": "0.4.22",
      "edition": "2021",
      "sha256": "093vs0wkm1rgyykk7fjbqp2lwizbixac1w52gv109p5r4jh0p9x7",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "memchr": {
      "crateName": "memchr",
      "version": "2.7.4",
      "edition": "2021",
      "sha256": "18z32bhxrax0fnjikv475z7ii718hq457qwmaryixfxsl2qrmjkq",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>",
        "bluss"
      ]
    },
    "nix-base32": {
      "crateName": "nix-base32",
      "version": "0.1.1",
      "edition": "2018",
      "sha256": "04jnq6arig0amz0scadavbzn9bg9k4zphmrm1562n6ygfj1dnj45",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Peter Kolloch <info@eigenvalue.net>"
      ]
    },
    "once_cell": {
      "crateName": "once_cell",
      "version": "1.19.0",
      "edition": "2021",
      "sha256": "14kvw7px5z96dk4dwdm1r9cqhhy2cyj1l5n5b29mynbb8yr15nrz",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "race",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Aleksey Kladov <aleksey.kladov@gmail.com>"
      ]
    },
    "pathdiff": {
      "crateName": "pathdiff",
      "version": "0.2.1",
      "edition": "2018",
      "sha256": "1pa4dcmb7lwir4himg1mnl97a05b2z0svczg62l8940pbim12dc8",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Manish Goregaokar <manishsmail@gmail.com>"
      ]
    },
    "percent-encoding": {
      "crateName": "percent-encoding",
      "version": "2.3.1",
      "edition": "2018",
      "sha256": "0gi8wgx0dcy8rnv1kywdv98lwcx67hz0a0zwpib5v2i08r88y573",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The rust-url developers"
      ]
    },
    "pest": {
      "crateName": "pest",
      "version": "2.7.10",
      "edition": "2021",
      "sha256": "1s4fvis7h6l872g6nk17r130kcllj4c0hjvwkzd3hi196g3320an",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "memchr",
          "packageId": "memchr"
        },
        {
          "name": "thiserror",
          "packageId": "thiserror"
        },
        {
          "name": "ucd-trie",
          "packageId": "ucd-trie"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "memchr",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Dragoș Tiselice <dragostiselice@gmail.com>"
      ]
    },
    "pest_derive": {
      "crateName": "pest_derive",
      "version": "2.7.10",
      "edition": "2021",
      "sha256": "0n8lsk9s21dp7958p9yarbk2gsc8wg0rvdzr7cd7pjpvjf8kqa96",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "pest",
          "packageId": "pest"
        },
        {
          "name": "pest_generator",
          "packageId": "pest_generator"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "procMacro": true,
      "authors": [
        "Dragoș Tiselice <dragostiselice@gmail.com>"
      ]
    },
    "pest_generator": {
      "crateName": "pest_generator",
      "version": "2.7.10",
      "edition": "2021",
      "sha256": "11s6q0vf25lckbzak0qndzpv87ksaxy6pa9cvn2hlizvsgvjmhiy",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "pest",
          "packageId": "pest"
        },
        {
          "name": "pest_meta",
          "packageId": "pest_meta"
        },
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "syn",
          "packageId": "syn 2.0.68"
        }
      ],
      "resolvedDefaultFeatures": [
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Dragoș Tiselice <dragostiselice@gmail.com>"
      ]
    },
    "pest_meta": {
      "crateName": "pest_meta",
      "version": "2.7.10",
      "edition": "2021",
      "sha256": "1kdxl164yyjsmn01lvllsll4sz3xbgy4dmkq33n63hrp5w1418np",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "once_cell",
          "packageId": "once_cell"
        },
        {
          "name": "pest",
          "packageId": "pest"
        }
      ],
      "buildDependencies": [
        {
          "name": "sha2",
          "packageId": "sha2"
        }
      ],
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Dragoș Tiselice <dragostiselice@gmail.com>"
      ]
    },
    "proc-macro-error": {
      "crateName": "proc-macro-error",
      "version": "1.0.4",
      "edition": "2018",
      "sha256": "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro-error-attr",
          "packageId": "proc-macro-error-attr"
        },
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "syn",
          "packageId": "syn 1.0.109"
        }
      ],
      "buildDependencies": [
        {
          "name": "version_check",
          "packageId": "version_check"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "syn",
        "syn-error"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "CreepySkeleton <creepy-skeleton@yandex.ru>"
      ]
    },
    "proc-macro-error-attr": {
      "crateName": "proc-macro-error-attr",
      "version": "1.0.4",
      "edition": "2018",
      "sha256": "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        }
      ],
      "buildDependencies": [
        {
          "name": "version_check",
          "packageId": "version_check"
        }
      ],
      "procMacro": true,
      "authors": [
        "CreepySkeleton <creepy-skeleton@yandex.ru>"
      ]
    },
    "proc-macro2": {
      "crateName": "proc-macro2",
      "version": "1.0.86",
      "edition": "2021",
      "sha256": "0xrv22p8lqlfdf1w0pj4si8n2ws4aw0kilmziwf0vpv5ys6rwway",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unicode-ident",
          "packageId": "unicode-ident"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "proc-macro"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>",
        "Alex Crichton <alex@alexcrichton.com>"
      ]
    },
    "quote": {
      "crateName": "quote",
      "version": "1.0.36",
      "edition": "2018",
      "sha256": "19xcmh445bg6simirnnd4fvkmp6v2qiwxh5f6rw4a70h76pnm9qg",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "proc-macro"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "rand": {
      "crateName": "rand",
      "version": "0.4.6",
      "edition": "2015",
      "sha256": "14qjfv3gggzhnma20k0sc1jf8y6pplsaq7n1j9ls5c8kf2wl0a2m",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "fuchsia-cprng",
          "packageId": "fuchsia-cprng",
          "target": "cfg(target_os = \"fuchsia\")"
        },
        {
          "name": "libc",
          "packageId": "libc",
          "target": "cfg(unix)"
        },
        {
          "name": "rand_core",
          "packageId": "rand_core 0.3.1",
          "target": "cfg(target_env = \"sgx\")"
        },
        {
          "name": "rdrand",
          "packageId": "rdrand",
          "target": "cfg(target_env = \"sgx\")"
        },
        {
          "name": "winapi",
          "packageId": "winapi",
          "target": "cfg(windows)"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "libc",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "rand_core 0.3.1": {
      "crateName": "rand_core",
      "version": "0.3.1",
      "edition": "2015",
      "sha256": "0jzdgszfa4bliigiy4hi66k7fs3gfwi2qxn8vik84ph77fwdwvvs",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "rand_core",
          "packageId": "rand_core 0.4.2"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rand Project Developers",
        "The Rust Project Developers"
      ]
    },
    "rand_core 0.4.2": {
      "crateName": "rand_core",
      "version": "0.4.2",
      "edition": "2015",
      "sha256": "1p09ynysrq1vcdlmcqnapq4qakl2yd1ng3kxh3qscpx09k2a6cww",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rand Project Developers",
        "The Rust Project Developers"
      ]
    },
    "rdrand": {
      "crateName": "rdrand",
      "version": "0.4.0",
      "edition": "2015",
      "sha256": "1cjq0kwx1bk7jx3kzyciiish5gqsj7620dm43dc52sr8fzmm9037",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "rand_core",
          "packageId": "rand_core 0.3.1"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Simonas Kazlauskas <rdrand@kazlauskas.me>"
      ]
    },
    "regex": {
      "crateName": "regex",
      "version": "1.10.5",
      "edition": "2021",
      "sha256": "0zsiqk2sxc1kd46qw0yp87s2a14ialwyxinpl0k266ddkm1i64mr",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "aho-corasick",
          "packageId": "aho-corasick"
        },
        {
          "name": "memchr",
          "packageId": "memchr"
        },
        {
          "name": "regex-automata",
          "packageId": "regex-automata"
        },
        {
          "name": "regex-syntax",
          "packageId": "regex-syntax"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "perf",
        "perf-backtrack",
        "perf-cache",
        "perf-dfa",
        "perf-inline",
        "perf-literal",
        "perf-onepass",
        "std",
        "unicode",
        "unicode-age",
        "unicode-bool",
        "unicode-case",
        "unicode-gencat",
        "unicode-perl",
        "unicode-script",
        "unicode-segment"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers",
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "regex-automata": {
      "crateName": "regex-automata",
      "version": "0.4.7",
      "edition": "2021",
      "sha256": "1pwjdi4jckpbaivpl6x4v5g4crb37zr2wac93wlfsbzgqn6gbjiq",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "aho-corasick",
          "packageId": "aho-corasick"
        },
        {
          "name": "memchr",
          "packageId": "memchr"
        },
        {
          "name": "regex-syntax",
          "packageId": "regex-syntax"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "dfa-onepass",
        "hybrid",
        "meta",
        "nfa",
        "nfa-backtrack",
        "nfa-pikevm",
        "nfa-thompson",
        "perf",
        "perf-inline",
        "perf-literal",
        "perf-literal-multisubstring",
        "perf-literal-substring",
        "std",
        "syntax",
        "unicode",
        "unicode-age",
        "unicode-bool",
        "unicode-case",
        "unicode-gencat",
        "unicode-perl",
        "unicode-script",
        "unicode-segment",
        "unicode-word-boundary"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers",
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "regex-syntax": {
      "crateName": "regex-syntax",
      "version": "0.8.4",
      "edition": "2021",
      "sha256": "16r0kjy20vx33dr4mhasj5l1f87czas714x2fz6zl0f8wwxa0rks",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default",
        "std",
        "unicode",
        "unicode-age",
        "unicode-bool",
        "unicode-case",
        "unicode-gencat",
        "unicode-perl",
        "unicode-script",
        "unicode-segment"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers",
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "remove_dir_all": {
      "crateName": "remove_dir_all",
      "version": "0.5.3",
      "edition": "2015",
      "sha256": "1rzqbsgkmr053bxxl04vmvsd1njyz0nxvly97aip6aa2cmb15k9s",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "winapi",
          "packageId": "winapi",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Aaronepower <theaaronepower@gmail.com>"
      ]
    },
    "ryu": {
      "crateName": "ryu",
      "version": "1.0.18",
      "edition": "2018",
      "sha256": "17xx2s8j1lln7iackzd9p0sv546vjq71i779gphjq923vjh5pjzk",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "same-file": {
      "crateName": "same-file",
      "version": "1.0.6",
      "edition": "2018",
      "sha256": "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "winapi-util",
          "packageId": "winapi-util",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "semver": {
      "crateName": "semver",
      "version": "1.0.23",
      "edition": "2018",
      "sha256": "12wqpxfflclbq4dv8sa6gchdh92ahhwn4ci1ls22wlby3h57wsb1",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "serde",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "serde": {
      "crateName": "serde",
      "version": "1.0.203",
      "edition": "2018",
      "sha256": "1500ghq198n6py5anvz5qbqagd9h1hq04f4qpsvjzrvix56snlvj",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde_derive",
          "packageId": "serde_derive"
        },
        {
          "name": "serde_derive",
          "packageId": "serde_derive",
          "target": "cfg(any())"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "derive",
        "serde_derive",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "serde_derive": {
      "crateName": "serde_derive",
      "version": "1.0.203",
      "edition": "2015",
      "sha256": "1fmmqmfza3mwxb1v80737dj01gznrh8mhgqgylkndx5npq7bq32h",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "syn",
          "packageId": "syn 2.0.68"
        }
      ],
      "resolvedDefaultFeatures": [
        "default"
      ],
      "procMacro": true,
      "authors": [
        "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "serde_json": {
      "crateName": "serde_json",
      "version": "1.0.118",
      "edition": "2021",
      "sha256": "1r7jpqdfnrv8skn5va1r202g6lhdhka0vyn42vm5g21x2srzciyr",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "itoa",
          "packageId": "itoa"
        },
        {
          "name": "ryu",
          "packageId": "ryu"
        },
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "std",
        "unbounded_depth"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Erick Tryzelaar <erick.tryzelaar@gmail.com>",
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "serde_spanned": {
      "crateName": "serde_spanned",
      "version": "0.6.6",
      "edition": "2021",
      "sha256": "1839b6m5p9ijjmcwamiya2r612ks2vg6w2pp95yg76lr3zh79rkr",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "serde"
      ],
      "libCrateTypes": [
        "lib"
      ]
    },
    "sha2": {
      "crateName": "sha2",
      "version": "0.10.8",
      "edition": "2018",
      "sha256": "1j1x78zk9il95w9iv46dh9wm73r6xrgj32y6lzzw7bxws9dbfgbr",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "cfg-if",
          "packageId": "cfg-if"
        },
        {
          "name": "cpufeatures",
          "packageId": "cpufeatures",
          "target": "cfg(any(target_arch = \"aarch64\", target_arch = \"x86_64\", target_arch = \"x86\"))"
        },
        {
          "name": "digest",
          "packageId": "digest"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "RustCrypto Developers"
      ]
    },
    "strsim": {
      "crateName": "strsim",
      "version": "0.8.0",
      "edition": "2015",
      "sha256": "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Danny Guo <dannyguo91@gmail.com>"
      ]
    },
    "structopt": {
      "crateName": "structopt",
      "version": "0.3.26",
      "edition": "2018",
      "sha256": "043sg3qxllann6q9i71d05qp3q13scmcvhxhd950ka2v8ij5qsqc",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "clap",
          "packageId": "clap"
        },
        {
          "name": "lazy_static",
          "packageId": "lazy_static"
        },
        {
          "name": "structopt-derive",
          "packageId": "structopt-derive"
        }
      ],
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Guillaume Pinot <texitoi@texitoi.eu>",
        "others"
      ]
    },
    "structopt-derive": {
      "crateName": "structopt-derive",
      "version": "0.4.18",
      "edition": "2018",
      "sha256": "1q5gcigmvw0cinjxzpyrkflliq5r1ivljmrvfrl3phcwgwraxdfw",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "heck",
          "packageId": "heck"
        },
        {
          "name": "proc-macro-error",
          "packageId": "proc-macro-error"
        },
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "syn",
          "packageId": "syn 1.0.109"
        }
      ],
      "procMacro": true,
      "authors": [
        "Guillaume Pinot <texitoi@texitoi.eu>"
      ]
    },
    "syn 1.0.109": {
      "crateName": "syn",
      "version": "1.0.109",
      "edition": "2018",
      "sha256": "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "unicode-ident",
          "packageId": "unicode-ident"
        }
      ],
      "resolvedDefaultFeatures": [
        "clone-impls",
        "default",
        "derive",
        "full",
        "parsing",
        "printing",
        "proc-macro",
        "quote"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "syn 2.0.68": {
      "crateName": "syn",
      "version": "2.0.68",
      "edition": "2021",
      "sha256": "1sf1y2hajhjav38ipg63c934xrgkz4v42fz24a0ckmmri06sf7wh",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "unicode-ident",
          "packageId": "unicode-ident"
        }
      ],
      "resolvedDefaultFeatures": [
        "clone-impls",
        "default",
        "derive",
        "parsing",
        "printing",
        "proc-macro"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "tempdir": {
      "crateName": "tempdir",
      "version": "0.3.7",
      "edition": "2015",
      "sha256": "1n5n86zxpgd85y0mswrp5cfdisizq2rv3la906g6ipyc03xvbwhm",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "rand",
          "packageId": "rand"
        },
        {
          "name": "remove_dir_all",
          "packageId": "remove_dir_all"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Rust Project Developers"
      ]
    },
    "tera": {
      "crateName": "tera",
      "version": "1.20.0",
      "edition": "2018",
      "sha256": "1vnj9imw2h9szkd1izsrhwrc9jvazvdsp84x65wg2rg88ldqb7db",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "globwalk",
          "packageId": "globwalk"
        },
        {
          "name": "lazy_static",
          "packageId": "lazy_static"
        },
        {
          "name": "pest",
          "packageId": "pest"
        },
        {
          "name": "pest_derive",
          "packageId": "pest_derive"
        },
        {
          "name": "regex",
          "packageId": "regex"
        },
        {
          "name": "serde",
          "packageId": "serde"
        },
        {
          "name": "serde_json",
          "packageId": "serde_json"
        },
        {
          "name": "unic-segment",
          "packageId": "unic-segment"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Vincent Prouillet <hello@prouilletvincent.com>"
      ]
    },
    "textwrap": {
      "crateName": "textwrap",
      "version": "0.11.0",
      "edition": "2015",
      "sha256": "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unicode-width",
          "packageId": "unicode-width"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Martin Geisler <martin@geisler.net>"
      ]
    },
    "thiserror": {
      "crateName": "thiserror",
      "version": "1.0.61",
      "edition": "2021",
      "sha256": "028prh962l16cmjivwb1g9xalbpqip0305zhq006mg74dc6whin5",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "thiserror-impl",
          "packageId": "thiserror-impl"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "thiserror-impl": {
      "crateName": "thiserror-impl",
      "version": "1.0.61",
      "edition": "2021",
      "sha256": "0cvm37hp0kbcyk1xac1z0chpbd9pbn2g456iyid6sah0a113ihs6",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "proc-macro2",
          "packageId": "proc-macro2"
        },
        {
          "name": "quote",
          "packageId": "quote"
        },
        {
          "name": "syn",
          "packageId": "syn 2.0.68"
        }
      ],
      "procMacro": true,
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "tinyvec": {
      "crateName": "tinyvec",
      "version": "1.6.1",
      "edition": "2018",
      "sha256": "10idfhsvp7zhbr8pn37wfra2bn02vr5xg6mhdvrbxlp2zg31alf5",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "tinyvec_macros",
          "packageId": "tinyvec_macros"
        }
      ],
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "tinyvec_macros"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Lokathor <zefria@gmail.com>"
      ]
    },
    "tinyvec_macros": {
      "crateName": "tinyvec_macros",
      "version": "0.1.1",
      "edition": "2018",
      "sha256": "081gag86208sc3y6sdkshgw3vysm5d34p431dzw0bshz66ncng0z",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Soveu <marx.tomasz@gmail.com>"
      ]
    },
    "toml": {
      "crateName": "toml",
      "version": "0.8.14",
      "edition": "2021",
      "sha256": "0dgk8bacrza09npifba1xsx7wyjjvhz3igxpdnyjcbqxn8mfnjbg",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        },
        {
          "name": "serde_spanned",
          "packageId": "serde_spanned"
        },
        {
          "name": "toml_datetime",
          "packageId": "toml_datetime"
        },
        {
          "name": "toml_edit",
          "packageId": "toml_edit"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "display",
        "parse"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Alex Crichton <alex@alexcrichton.com>"
      ]
    },
    "toml_datetime": {
      "crateName": "toml_datetime",
      "version": "0.6.6",
      "edition": "2021",
      "sha256": "1grcrr3gh7id3cy3j700kczwwfbn04p5ncrrj369prjaj9bgvbab",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "serde"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Alex Crichton <alex@alexcrichton.com>"
      ]
    },
    "toml_edit": {
      "crateName": "toml_edit",
      "version": "0.22.14",
      "edition": "2021",
      "sha256": "0f2fw0viqvisjhqwjavgypz5mgbldh53przrsjlrrggijyppl77j",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "indexmap",
          "packageId": "indexmap"
        },
        {
          "name": "serde",
          "packageId": "serde"
        },
        {
          "name": "serde_spanned",
          "packageId": "serde_spanned"
        },
        {
          "name": "toml_datetime",
          "packageId": "toml_datetime"
        },
        {
          "name": "winnow",
          "packageId": "winnow"
        }
      ],
      "resolvedDefaultFeatures": [
        "display",
        "parse",
        "serde"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andronik Ordian <write@reusable.software>",
        "Ed Page <eopage@gmail.com>"
      ]
    },
    "typenum": {
      "crateName": "typenum",
      "version": "1.17.0",
      "edition": "2018",
      "sha256": "09dqxv69m9lj9zvv6xw5vxaqx15ps0vxyy5myg33i0kbqvq0pzs2",
      "source": {
        "type": "crates-io"
      },
      "build": "build/main.rs",
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Paho Lurie-Gregg <paho@paholg.com>",
        "Andre Bogus <bogusandre@gmail.com>"
      ]
    },
    "ucd-trie": {
      "crateName": "ucd-trie",
      "version": "0.1.6",
      "edition": "2021",
      "sha256": "1ff4yfksirqs37ybin9aw71aa5gva00hw7jdxbw8w668zy964r7d",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "unic-char-property": {
      "crateName": "unic-char-property",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "08g21dn3wwix3ycfl0vrbahn0835nv2q3swm8wms0vwvgm07mid8",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unic-char-range",
          "packageId": "unic-char-range"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unic-char-range": {
      "crateName": "unic-char-range",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "1g0z7iwvjhqspi6194zsff8vy6i3921hpqcrp3v1813hbwnh5603",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unic-common": {
      "crateName": "unic-common",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "1g1mm954m0zr497dl4kx3vr09yaly290zs33bbl4wrbaba1gzmw0",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unic-segment": {
      "crateName": "unic-segment",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "08wgz2q6vrdvmbd23kf9pbg8cyzm5q8hq9spc4blzy2ppqk5vvg4",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unic-ucd-segment",
          "packageId": "unic-ucd-segment"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unic-ucd-segment": {
      "crateName": "unic-ucd-segment",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "0027lczcg0r401g6fnzm2bq9fxhgxvri1nlryhhv8192lqic2y90",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unic-char-property",
          "packageId": "unic-char-property"
        },
        {
          "name": "unic-char-range",
          "packageId": "unic-char-range"
        },
        {
          "name": "unic-ucd-version",
          "packageId": "unic-ucd-version"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unic-ucd-version": {
      "crateName": "unic-ucd-version",
      "version": "0.9.0",
      "edition": "2018",
      "sha256": "1i5hnzpfnxkp4ijfk8kvhpvj84bij575ybqx1b6hyigy6wi2zgcn",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "unic-common",
          "packageId": "unic-common"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The UNIC Project Developers"
      ]
    },
    "unicode-bidi": {
      "crateName": "unicode-bidi",
      "version": "0.3.15",
      "edition": "2018",
      "sha256": "0xcdxm7h0ydyprwpcbh436rbs6s6lph7f3gr527lzgv6lw053y88",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "hardcoded-data",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The Servo Project Developers"
      ]
    },
    "unicode-ident": {
      "crateName": "unicode-ident",
      "version": "1.0.12",
      "edition": "2018",
      "sha256": "0jzf1znfpb2gx8nr8mvmyqs1crnv79l57nxnbiszc7xf7ynbjm1k",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "David Tolnay <dtolnay@gmail.com>"
      ]
    },
    "unicode-normalization": {
      "crateName": "unicode-normalization",
      "version": "0.1.23",
      "edition": "2018",
      "sha256": "1x81a50h2zxigj74b9bqjsirxxbyhmis54kg600xj213vf31cvd5",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "tinyvec",
          "packageId": "tinyvec"
        }
      ],
      "resolvedDefaultFeatures": [
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "kwantam <kwantam@gmail.com>",
        "Manish Goregaokar <manishsmail@gmail.com>"
      ]
    },
    "unicode-segmentation": {
      "crateName": "unicode-segmentation",
      "version": "1.11.0",
      "edition": "2018",
      "sha256": "00kjpwp1g8fqm45drmwivlacn3y9jx73bvs09n6s3x73nqi7vj6l",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "kwantam <kwantam@gmail.com>",
        "Manish Goregaokar <manishsmail@gmail.com>"
      ]
    },
    "unicode-width": {
      "crateName": "unicode-width",
      "version": "0.1.13",
      "edition": "2021",
      "sha256": "0p92vl8n7qc8mxz45xn6qbgi0259z96n32a158l6vj5bywwdadh3",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "kwantam <kwantam@gmail.com>",
        "Manish Goregaokar <manishsmail@gmail.com>"
      ]
    },
    "url": {
      "crateName": "url",
      "version": "2.5.2",
      "edition": "2018",
      "sha256": "0v2dx50mx7xzl9454cl5qmpjnhkbahmn59gd3apyipbgyyylsy12",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "form_urlencoded",
          "packageId": "form_urlencoded"
        },
        {
          "name": "idna",
          "packageId": "idna"
        },
        {
          "name": "percent-encoding",
          "packageId": "percent-encoding"
        },
        {
          "name": "serde",
          "packageId": "serde"
        }
      ],
      "resolvedDefaultFeatures": [
        "default",
        "serde"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "The rust-url developers"
      ]
    },
    "vec_map": {
      "crateName": "vec_map",
      "version": "0.8.2",
      "edition": "2015",
      "sha256": "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Alex Crichton <alex@alexcrichton.com>",
        "Jorge Aparicio <japaricious@gmail.com>",
        "Alexis Beingessner <a.beingessner@gmail.com>",
        "Brian Anderson <>",
        "tbu- <>",
        "Manish Goregaokar <>",
        "Aaron Turon <aturon@mozilla.com>",
        "Adolfo Ochagavía <>",
        "Niko Matsakis <>",
        "Steven Fackler <>",
        "Chase Southwood <csouth3@illinois.edu>",
        "Eduard Burtescu <>",
        "Florian Wilkens <>",
        "Félix Raimundo <>",
        "Tibor Benke <>",
        "Markus Siemens <markus@m-siemens.de>",
        "Josh Branchaud <jbranchaud@gmail.com>",
        "Huon Wilson <dbau.pp@gmail.com>",
        "Corey Farwell <coref@rwell.org>",
        "Aaron Liblong <>",
        "Nick Cameron <nrc@ncameron.org>",
        "Patrick Walton <pcwalton@mimiga.net>",
        "Felix S Klock II <>",
        "Andrew Paseltiner <apaseltiner@gmail.com>",
        "Sean McArthur <sean.monstar@gmail.com>",
        "Vadim Petrochenkov <>"
      ]
    },
    "version_check": {
      "crateName": "version_check",
      "version": "0.9.4",
      "edition": "2015",
      "sha256": "0gs8grwdlgh0xq660d7wr80x14vxbizmd8dbp29p2pdncx8lp1s9",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Sergio Benitez <sb@sergio.bz>"
      ]
    },
    "walkdir": {
      "crateName": "walkdir",
      "version": "2.5.0",
      "edition": "2018",
      "sha256": "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "same-file",
          "packageId": "same-file"
        },
        {
          "name": "winapi-util",
          "packageId": "winapi-util",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "winapi": {
      "crateName": "winapi",
      "version": "0.3.9",
      "edition": "2015",
      "sha256": "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "winapi-i686-pc-windows-gnu",
          "packageId": "winapi-i686-pc-windows-gnu",
          "target": "i686-pc-windows-gnu"
        },
        {
          "name": "winapi-x86_64-pc-windows-gnu",
          "packageId": "winapi-x86_64-pc-windows-gnu",
          "target": "x86_64-pc-windows-gnu"
        }
      ],
      "resolvedDefaultFeatures": [
        "consoleapi",
        "errhandlingapi",
        "fileapi",
        "handleapi",
        "minwinbase",
        "minwindef",
        "ntsecapi",
        "processenv",
        "profileapi",
        "std",
        "winbase",
        "winerror",
        "winnt"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Peter Atashian <retep998@gmail.com>"
      ]
    },
    "winapi-i686-pc-windows-gnu": {
      "crateName": "winapi-i686-pc-windows-gnu",
      "version": "0.4.0",
      "edition": "2015",
      "sha256": "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Peter Atashian <retep998@gmail.com>"
      ]
    },
    "winapi-util": {
      "crateName": "winapi-util",
      "version": "0.1.8",
      "edition": "2021",
      "sha256": "0svcgddd2rw06mj4r76gj655qsa1ikgz3d3gzax96fz7w62c6k2d",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "windows-sys",
          "packageId": "windows-sys",
          "target": "cfg(windows)"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Andrew Gallant <jamslam@gmail.com>"
      ]
    },
    "winapi-x86_64-pc-windows-gnu": {
      "crateName": "winapi-x86_64-pc-windows-gnu",
      "version": "0.4.0",
      "edition": "2015",
      "sha256": "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Peter Atashian <retep998@gmail.com>"
      ]
    },
    "windows-sys": {
      "crateName": "windows-sys",
      "version": "0.52.0",
      "edition": "2021",
      "sha256": "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "windows-targets",
          "packageId": "windows-targets"
        }
      ],
      "resolvedDefaultFeatures": [
        "Win32",
        "Win32_Foundation",
        "Win32_Storage",
        "Win32_Storage_FileSystem",
        "Win32_System",
        "Win32_System_Console",
        "Win32_System_SystemInformation",
        "default"
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows-targets": {
      "crateName": "windows-targets",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1sz7jrnkygmmlj1ia8fk85wbyil450kq5qkh5qh9sh2rcnj161vg",
      "source": {
        "type": "crates-io"
      },
      "dependencies": [
        {
          "name": "windows_aarch64_gnullvm",
          "packageId": "windows_aarch64_gnullvm",
          "target": "aarch64-pc-windows-gnullvm"
        },
        {
          "name": "windows_aarch64_msvc",
          "packageId": "windows_aarch64_msvc",
          "target": "cfg(all(target_arch = \"aarch64\", target_env = \"msvc\", not(windows_raw_dylib)))"
        },
        {
          "name": "windows_i686_gnu",
          "packageId": "windows_i686_gnu",
          "target": "cfg(all(target_arch = \"x86\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))"
        },
        {
          "name": "windows_i686_gnullvm",
          "packageId": "windows_i686_gnullvm",
          "target": "i686-pc-windows-gnullvm"
        },
        {
          "name": "windows_i686_msvc",
          "packageId": "windows_i686_msvc",
          "target": "cfg(all(target_arch = \"x86\", target_env = \"msvc\", not(windows_raw_dylib)))"
        },
        {
          "name": "windows_x86_64_gnu",
          "packageId": "windows_x86_64_gnu",
          "target": "cfg(all(target_arch = \"x86_64\", target_env = \"gnu\", not(target_abi = \"llvm\"), not(windows_raw_dylib)))"
        },
        {
          "name": "windows_x86_64_gnullvm",
          "packageId": "windows_x86_64_gnullvm",
          "target": "x86_64-pc-windows-gnullvm"
        },
        {
          "name": "windows_x86_64_msvc",
          "packageId": "windows_x86_64_msvc",
          "target": "cfg(all(any(target_arch = \"x86_64\", target_arch = \"arm64ec\"), target_env = \"msvc\", not(windows_raw_dylib)))"
        }
      ],
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_aarch64_gnullvm": {
      "crateName": "windows_aarch64_gnullvm",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "0qrjimbj67nnyn7zqy15mzzmqg0mn5gsr2yciqjxm3cb3vbyx23h",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_aarch64_msvc": {
      "crateName": "windows_aarch64_msvc",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1dmga8kqlmln2ibckk6mxc9n59vdg8ziqa2zr8awcl720hazv1cr",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_i686_gnu": {
      "crateName": "windows_i686_gnu",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "0w4np3l6qwlra9s2xpflqrs60qk1pz6ahhn91rr74lvdy4y0gfl8",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_i686_gnullvm": {
      "crateName": "windows_i686_gnullvm",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1s9f4gff0cixd86mw3n63rpmsm4pmr4ffndl6s7qa2h35492dx47",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_i686_msvc": {
      "crateName": "windows_i686_msvc",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1gw7fklxywgpnwbwg43alb4hm0qjmx72hqrlwy5nanrxs7rjng6v",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_x86_64_gnu": {
      "crateName": "windows_x86_64_gnu",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1n8p2mcf3lw6300k77a0knksssmgwb9hynl793mhkzyydgvlchjf",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_x86_64_gnullvm": {
      "crateName": "windows_x86_64_gnullvm",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "15n56jrh4s5bz66zimavr1rmcaw6wa306myrvmbc6rydhbj9h8l5",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "windows_x86_64_msvc": {
      "crateName": "windows_x86_64_msvc",
      "version": "0.52.5",
      "edition": "2021",
      "sha256": "1w1bn24ap8dp9i85s8mlg8cim2bl2368bd6qyvm0xzqvzmdpxi5y",
      "source": {
        "type": "crates-io"
      },
      "libCrateTypes": [
        "lib"
      ],
      "authors": [
        "Microsoft"
      ]
    },
    "winnow": {
      "crateName": "winnow",
      "version": "0.6.13",
      "edition": "2021",
      "sha256": "189b0mrr9lkckdyr0177hwj1c59igxc2lsl71f4wg8wrqbvfbdar",
      "source": {
        "type": "crates-io"
      },
      "resolvedDefaultFeatures": [
        "alloc",
        "default",
        "std"
      ],
      "libCrateTypes": [
        "lib"
      ]
    }
  }
}

================================================
FILE: crate2nix/Cargo.nix
================================================

# This file was @generated by crate2nix 0.15.0 with the command:
#   "generate" "-n" "../nix/nixpkgs.nix" "-f" "./crate2nix/Cargo.toml" "-o" "./crate2nix/Cargo.nix"
# See https://github.com/kolloch/crate2nix for more info.

{ nixpkgs ? ../nix/nixpkgs.nix
, pkgs ? import nixpkgs { config = {}; }
, fetchurl ? pkgs.fetchurl
, lib ? pkgs.lib
, stdenv ? pkgs.stdenv
, buildRustCrateForPkgs ? pkgs: pkgs.buildRustCrate
  # This is used as the `crateOverrides` argument for `buildRustCrate`.
, defaultCrateOverrides ? pkgs.defaultCrateOverrides
  # The features to enable for the root_crate or the workspace_members.
, rootFeatures ? [ "default" ]
  # If true, throw errors instead of issueing deprecation warnings.
, strictDeprecation ? false
  # Elements to add to the `-C target-feature=` argument passed to `rustc`
  # (separated by `,`, prefixed with `+`).
  # Used for conditional compilation based on CPU feature detection.
, targetFeatures ? []
  # Additional target attributes for conditional dependencies.
  # Use this for custom cfg flags that are passed via rustcflags but need to
  # be known at Nix evaluation time for dependency resolution.
  # Example: { tracing_unstable = true; } for crates using cfg(tracing_unstable).
, extraTargetFlags ? {}
  # Whether to perform release builds: longer compile times, faster binaries.
, release ? true
  # Additional crate2nix configuration if it exists.
, crateConfig
  ? if builtins.pathExists ./crate-config.nix
    then pkgs.callPackage ./crate-config.nix {}
    else {}
}:

rec {
  #
  # "public" attributes that we attempt to keep stable with new versions of crate2nix.
  #

  rootCrate = rec {
    packageId = "crate2nix";

    # Use this attribute to refer to the derivation building your root crate package.
    # You can override the features with rootCrate.build.override { features = [ "default" "feature1" ... ]; }.
    build = internal.buildRustCrateWithFeatures {
      inherit packageId;
    };

    # Debug support which might change between releases.
    # File a bug if you depend on any for non-debug work!
    debug = internal.debugCrate { inherit packageId; };
  };
  # Refer your crate build derivation by name here.
  # You can override the features with
  # workspaceMembers."${crateName}".build.override { features = [ "default" "feature1" ... ]; }.
  workspaceMembers = {
    "crate2nix" = rec {
      packageId = "crate2nix";
      build = internal.buildRustCrateWithFeatures {
        packageId = "crate2nix";
      };

      # Debug support which might change between releases.
      # File a bug if you depend on any for non-debug work!
      debug = internal.debugCrate { inherit packageId; };
    };
  };



  # A derivation that joins the outputs of all workspace members together.
  allWorkspaceMembers = pkgs.symlinkJoin {
      name = "all-workspace-members";
      paths =
        let members = builtins.attrValues workspaceMembers;
        in builtins.map (m: m.build) members;
  };

  #
  # "internal" ("private") attributes that may change in every new version of crate2nix.
  #

  internal = rec {
    # Build and dependency information for crates.
    # Many of the fields are passed one-to-one to buildRustCrate.
    #
    # Noteworthy:
    # * `dependencies`/`buildDependencies`: similar to the corresponding fields for buildRustCrate.
    #   but with additional information which is used during dependency/feature resolution.
    # * `resolvedDependencies`: the selected default features reported by cargo - only included for debugging.
    # * `devDependencies` as of now not used by `buildRustCrate` but used to
    #   inject test dependencies into the build

    crates = {
      "aho-corasick" = rec {
        crateName = "aho-corasick";
        version = "1.1.3";
        edition = "2021";
        sha256 = "05mrpkvdgp5d20y2p989f187ry9diliijgwrs254fs9s1m1x6q4f";
        libName = "aho_corasick";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "perf-literal" ];
          "logging" = [ "dep:log" ];
          "perf-literal" = [ "dep:memchr" ];
          "std" = [ "memchr?/std" ];
        };
        resolvedDefaultFeatures = [ "default" "perf-literal" "std" ];
      };
      "ansi_term" = rec {
        crateName = "ansi_term";
        version = "0.12.1";
        edition = "2015";
        sha256 = "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm";
        authors = [
          "ogham@bsago.me"
          "Ryan Scheel (Havvy) <ryan.havvy@gmail.com>"
          "Josh Triplett <josh@joshtriplett.org>"
        ];
        dependencies = [
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: ("windows" == target."os" or null);
            features = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "processenv" ];
          }
        ];
        features = {
          "derive_serde_style" = [ "serde" ];
          "serde" = [ "dep:serde" ];
        };
      };
      "anyhow" = rec {
        crateName = "anyhow";
        version = "1.0.86";
        edition = "2018";
        sha256 = "1nk301x8qhpdaks6a9zvcp7yakjqnczjmqndbg7vk4494d3d1ldk";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
          "backtrace" = [ "dep:backtrace" ];
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "atty" = rec {
        crateName = "atty";
        version = "0.2.14";
        edition = "2015";
        sha256 = "1s7yslcs6a28c5vz7jwj63lkfgyx8mx99fdirlhi9lbhhzhrpcyr";
        authors = [
          "softprops <d.tangren@gmail.com>"
        ];
        dependencies = [
          {
            name = "hermit-abi";
            packageId = "hermit-abi";
            target = { target, features }: ("hermit" == target."os" or null);
          }
          {
            name = "libc";
            packageId = "libc";
            usesDefaultFeatures = false;
            target = { target, features }: (target."unix" or false);
          }
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "consoleapi" "processenv" "minwinbase" "minwindef" "winbase" ];
          }
        ];

      };
      "bitflags 1.3.2" = rec {
        crateName = "bitflags";
        version = "1.3.2";
        edition = "2018";
        sha256 = "12ki6w8gn1ldq7yz9y680llwk5gmrhrzszaa17g1sbrw2r2qvwxy";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "bitflags 2.6.0" = rec {
        crateName = "bitflags";
        version = "2.6.0";
        edition = "2021";
        sha256 = "1pkidwzn3hnxlsl8zizh0bncgbjnw7c41cx7bby26ncbzmiznj5h";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "arbitrary" = [ "dep:arbitrary" ];
          "bytemuck" = [ "dep:bytemuck" ];
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
          "serde" = [ "dep:serde" ];
        };
      };
      "block-buffer" = rec {
        crateName = "block-buffer";
        version = "0.10.4";
        edition = "2018";
        sha256 = "0w9sa2ypmrsqqvc20nhwr75wbb5cjr4kkyhpjm1z1lv2kdicfy1h";
        libName = "block_buffer";
        authors = [
          "RustCrypto Developers"
        ];
        dependencies = [
          {
            name = "generic-array";
            packageId = "generic-array";
          }
        ];

      };
      "bstr" = rec {
        crateName = "bstr";
        version = "1.9.1";
        edition = "2021";
        sha256 = "01ipr5rncw3kf4dyc1p2g00njn1df2b0xpviwhb8830iv77wbvq5";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            usesDefaultFeatures = false;
          }
          {
            name = "serde";
            packageId = "serde";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "alloc" = [ "memchr/alloc" "serde?/alloc" ];
          "default" = [ "std" "unicode" ];
          "serde" = [ "dep:serde" ];
          "std" = [ "alloc" "memchr/std" "serde?/std" ];
          "unicode" = [ "dep:regex-automata" ];
        };
        resolvedDefaultFeatures = [ "alloc" "std" ];
      };
      "camino" = rec {
        crateName = "camino";
        version = "1.1.7";
        edition = "2018";
        sha256 = "0ff28kc3qjcrmi8k88b2j2p7mzrvbag20yqcrj9sl30n3fanpv70";
        authors = [
          "Without Boats <saoirse@without.boats>"
          "Ashley Williams <ashley666ashley@gmail.com>"
          "Steve Klabnik <steve@steveklabnik.com>"
          "Rain <rain@sunshowers.io>"
        ];
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
            optional = true;
            features = [ "derive" ];
          }
        ];
        features = {
          "proptest" = [ "dep:proptest" ];
          "proptest1" = [ "proptest" ];
          "serde" = [ "dep:serde" ];
          "serde1" = [ "serde" ];
        };
        resolvedDefaultFeatures = [ "serde" "serde1" ];
      };
      "cargo-platform" = rec {
        crateName = "cargo-platform";
        version = "0.1.8";
        edition = "2021";
        sha256 = "1z5b7ivbj508wkqdg2vb0hw4vi1k1pyhcn6h1h1b8svcb8vg1c94";
        libName = "cargo_platform";
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
          }
        ];

      };
      "cargo_metadata" = rec {
        crateName = "cargo_metadata";
        version = "0.18.1";
        edition = "2018";
        sha256 = "0drh0zndl4qgndy6kg6783cydbvhxgv0hcg7d9hhqx0zwi3nb21d";
        authors = [
          "Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>"
        ];
        dependencies = [
          {
            name = "camino";
            packageId = "camino";
            features = [ "serde1" ];
          }
          {
            name = "cargo-platform";
            packageId = "cargo-platform";
          }
          {
            name = "semver";
            packageId = "semver";
            features = [ "serde" ];
          }
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
          {
            name = "serde_json";
            packageId = "serde_json";
            features = [ "unbounded_depth" ];
          }
          {
            name = "thiserror";
            packageId = "thiserror";
          }
        ];
        features = {
          "builder" = [ "derive_builder" ];
          "derive_builder" = [ "dep:derive_builder" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "cfg-if" = rec {
        crateName = "cfg-if";
        version = "1.0.0";
        edition = "2018";
        sha256 = "1za0vb97n4brpzpv8lsbnzmq5r8f2b0cpqqr0sy8h5bn751xxwds";
        libName = "cfg_if";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        features = {
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
        };
      };
      "clap" = rec {
        crateName = "clap";
        version = "2.34.0";
        edition = "2018";
        sha256 = "071q5d8jfwbazi6zhik9xwpacx5i6kb2vkzy060vhf0c3120aqd0";
        authors = [
          "Kevin K. <kbknapp@gmail.com>"
        ];
        dependencies = [
          {
            name = "ansi_term";
            packageId = "ansi_term";
            optional = true;
            target = { target, features }: (!(target."windows" or false));
          }
          {
            name = "atty";
            packageId = "atty";
            optional = true;
          }
          {
            name = "bitflags";
            packageId = "bitflags 1.3.2";
          }
          {
            name = "strsim";
            packageId = "strsim";
            optional = true;
          }
          {
            name = "textwrap";
            packageId = "textwrap";
          }
          {
            name = "unicode-width";
            packageId = "unicode-width";
          }
          {
            name = "vec_map";
            packageId = "vec_map";
            optional = true;
          }
        ];
        features = {
          "ansi_term" = [ "dep:ansi_term" ];
          "atty" = [ "dep:atty" ];
          "clippy" = [ "dep:clippy" ];
          "color" = [ "ansi_term" "atty" ];
          "default" = [ "suggestions" "color" "vec_map" ];
          "doc" = [ "yaml" ];
          "strsim" = [ "dep:strsim" ];
          "suggestions" = [ "strsim" ];
          "term_size" = [ "dep:term_size" ];
          "vec_map" = [ "dep:vec_map" ];
          "wrap_help" = [ "term_size" "textwrap/term_size" ];
          "yaml" = [ "yaml-rust" ];
          "yaml-rust" = [ "dep:yaml-rust" ];
        };
        resolvedDefaultFeatures = [ "ansi_term" "atty" "color" "default" "strsim" "suggestions" "vec_map" ];
      };
      "colored-diff" = rec {
        crateName = "colored-diff";
        version = "0.2.3";
        edition = "2015";
        sha256 = "1dfwjxd13f8l8bdzm76kkp6cp4sr1pyc8lavp52avwy313mhh0j1";
        libName = "colored_diff";
        dependencies = [
          {
            name = "ansi_term";
            packageId = "ansi_term";
          }
          {
            name = "dissimilar";
            packageId = "dissimilar";
          }
          {
            name = "itertools";
            packageId = "itertools 0.10.5";
            usesDefaultFeatures = false;
          }
        ];

      };
      "cpufeatures" = rec {
        crateName = "cpufeatures";
        version = "0.2.12";
        edition = "2018";
        sha256 = "012m7rrak4girqlii3jnqwrr73gv1i980q4wra5yyyhvzwk5xzjk";
        authors = [
          "RustCrypto Developers"
        ];
        dependencies = [
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (target.name == "aarch64-linux-android");
          }
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (("aarch64" == target."arch" or null) && ("linux" == target."os" or null));
          }
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (("aarch64" == target."arch" or null) && ("apple" == target."vendor" or null));
          }
          {
            name = "libc";
            packageId = "libc";
            target = { target, features }: (("loongarch64" == target."arch" or null) && ("linux" == target."os" or null));
          }
        ];

      };
      "crate2nix" = rec {
        crateName = "crate2nix";
        version = "0.15.0";
        edition = "2021";
        crateBin = [
          {
            name = "crate2nix";
            path = "src/main.rs";
            requiredFeatures = [ ];
          }
        ];
        src = lib.cleanSourceWith { filter = sourceFilter;  src = ./.; };
        authors = [
          "Peter Kolloch <info@eigenvalue.net>"
        ];
        dependencies = [
          {
            name = "anyhow";
            packageId = "anyhow";
          }
          {
            name = "cargo-platform";
            packageId = "cargo-platform";
          }
          {
            name = "cargo_metadata";
            packageId = "cargo_metadata";
          }
          {
            name = "hex";
            packageId = "hex";
          }
          {
            name = "itertools";
            packageId = "itertools 0.12.1";
          }
          {
            name = "lazy_static";
            packageId = "lazy_static";
          }
          {
            name = "nix-base32";
            packageId = "nix-base32";
          }
          {
            name = "pathdiff";
            packageId = "pathdiff";
          }
          {
            name = "semver";
            packageId = "semver";
            features = [ "serde" ];
          }
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
          {
            name = "serde_json";
            packageId = "serde_json";
            features = [ "unbounded_depth" ];
          }
          {
            name = "structopt";
            packageId = "structopt";
          }
          {
            name = "tera";
            packageId = "tera";
            usesDefaultFeatures = false;
          }
          {
            name = "toml";
            packageId = "toml";
          }
          {
            name = "url";
            packageId = "url";
            features = [ "serde" ];
          }
        ];
        devDependencies = [
          {
            name = "colored-diff";
            packageId = "colored-diff";
          }
          {
            name = "fs_extra";
            packageId = "fs_extra";
          }
          {
            name = "tempdir";
            packageId = "tempdir";
          }
        ];

      };
      "crossbeam-deque" = rec {
        crateName = "crossbeam-deque";
        version = "0.8.5";
        edition = "2021";
        sha256 = "03bp38ljx4wj6vvy4fbhx41q8f585zyqix6pncz1mkz93z08qgv1";
        libName = "crossbeam_deque";
        dependencies = [
          {
            name = "crossbeam-epoch";
            packageId = "crossbeam-epoch";
            usesDefaultFeatures = false;
          }
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "crossbeam-epoch/std" "crossbeam-utils/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "crossbeam-epoch" = rec {
        crateName = "crossbeam-epoch";
        version = "0.9.18";
        edition = "2021";
        sha256 = "03j2np8llwf376m3fxqx859mgp9f83hj1w34153c7a9c7i5ar0jv";
        libName = "crossbeam_epoch";
        dependencies = [
          {
            name = "crossbeam-utils";
            packageId = "crossbeam-utils";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "loom" = [ "loom-crate" "crossbeam-utils/loom" ];
          "loom-crate" = [ "dep:loom-crate" ];
          "nightly" = [ "crossbeam-utils/nightly" ];
          "std" = [ "alloc" "crossbeam-utils/std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "std" ];
      };
      "crossbeam-utils" = rec {
        crateName = "crossbeam-utils";
        version = "0.8.20";
        edition = "2021";
        sha256 = "100fksq5mm1n7zj242cclkw6yf7a4a8ix3lvpfkhxvdhbda9kv12";
        libName = "crossbeam_utils";
        features = {
          "default" = [ "std" ];
          "loom" = [ "dep:loom" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "crypto-common" = rec {
        crateName = "crypto-common";
        version = "0.1.6";
        edition = "2018";
        sha256 = "1cvby95a6xg7kxdz5ln3rl9xh66nz66w46mm3g56ri1z5x815yqv";
        libName = "crypto_common";
        authors = [
          "RustCrypto Developers"
        ];
        dependencies = [
          {
            name = "generic-array";
            packageId = "generic-array";
            features = [ "more_lengths" ];
          }
          {
            name = "typenum";
            packageId = "typenum";
          }
        ];
        features = {
          "getrandom" = [ "rand_core/getrandom" ];
          "rand_core" = [ "dep:rand_core" ];
        };
      };
      "digest" = rec {
        crateName = "digest";
        version = "0.10.7";
        edition = "2018";
        sha256 = "14p2n6ih29x81akj097lvz7wi9b6b9hvls0lwrv7b6xwyy0s5ncy";
        authors = [
          "RustCrypto Developers"
        ];
        dependencies = [
          {
            name = "block-buffer";
            packageId = "block-buffer";
            optional = true;
          }
          {
            name = "crypto-common";
            packageId = "crypto-common";
          }
        ];
        features = {
          "blobby" = [ "dep:blobby" ];
          "block-buffer" = [ "dep:block-buffer" ];
          "const-oid" = [ "dep:const-oid" ];
          "core-api" = [ "block-buffer" ];
          "default" = [ "core-api" ];
          "dev" = [ "blobby" ];
          "mac" = [ "subtle" ];
          "oid" = [ "const-oid" ];
          "rand_core" = [ "crypto-common/rand_core" ];
          "std" = [ "alloc" "crypto-common/std" ];
          "subtle" = [ "dep:subtle" ];
        };
        resolvedDefaultFeatures = [ "block-buffer" "core-api" "default" ];
      };
      "dissimilar" = rec {
        crateName = "dissimilar";
        version = "1.0.9";
        edition = "2018";
        sha256 = "0bcn4s99ghigd3yadpd7i3gljv5z2hkr07ijvvxvsxmz3yfygy2r";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];

      };
      "either" = rec {
        crateName = "either";
        version = "1.13.0";
        edition = "2018";
        sha256 = "1w2c1mybrd7vljyxk77y9f4w9dyjrmp3yp82mk7bcm8848fazcb0";
        authors = [
          "bluss"
        ];
        features = {
          "default" = [ "use_std" ];
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "use_std" ];
      };
      "equivalent" = rec {
        crateName = "equivalent";
        version = "1.0.1";
        edition = "2015";
        sha256 = "1malmx5f4lkfvqasz319lq6gb3ddg19yzf9s8cykfsgzdmyq0hsl";

      };
      "form_urlencoded" = rec {
        crateName = "form_urlencoded";
        version = "1.2.1";
        edition = "2018";
        sha256 = "0milh8x7nl4f450s3ddhg57a3flcv6yq8hlkyk6fyr3mcb128dp1";
        authors = [
          "The rust-url developers"
        ];
        dependencies = [
          {
            name = "percent-encoding";
            packageId = "percent-encoding";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "alloc" = [ "percent-encoding/alloc" ];
          "default" = [ "std" ];
          "std" = [ "alloc" "percent-encoding/std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "fs_extra" = rec {
        crateName = "fs_extra";
        version = "1.3.0";
        edition = "2018";
        sha256 = "075i25z70j2mz9r7i9p9r521y8xdj81q7skslyb7zhqnnw33fw22";
        authors = [
          "Denis Kurilenko <webdesus@gmail.com>"
        ];

      };
      "fuchsia-cprng" = rec {
        crateName = "fuchsia-cprng";
        version = "0.1.1";
        edition = "2018";
        sha256 = "1fnkqrbz7ixxzsb04bsz9p0zzazanma8znfdqjvh39n14vapfvx0";
        libName = "fuchsia_cprng";
        authors = [
          "Erick Tryzelaar <etryzelaar@google.com>"
        ];

      };
      "generic-array" = rec {
        crateName = "generic-array";
        version = "0.14.7";
        edition = "2015";
        sha256 = "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45";
        libName = "generic_array";
        authors = [
          "Bartłomiej Kamiński <fizyk20@gmail.com>"
          "Aaron Trent <novacrazy@gmail.com>"
        ];
        dependencies = [
          {
            name = "typenum";
            packageId = "typenum";
          }
        ];
        buildDependencies = [
          {
            name = "version_check";
            packageId = "version_check";
          }
        ];
        features = {
          "serde" = [ "dep:serde" ];
          "zeroize" = [ "dep:zeroize" ];
        };
        resolvedDefaultFeatures = [ "more_lengths" ];
      };
      "globset" = rec {
        crateName = "globset";
        version = "0.4.14";
        edition = "2021";
        sha256 = "1qab0c1drpybgm4nc92lf8b46x0ap44c9y4k23rndgc5bfdkpnjp";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "aho-corasick";
            packageId = "aho-corasick";
          }
          {
            name = "bstr";
            packageId = "bstr";
            usesDefaultFeatures = false;
            features = [ "std" ];
          }
          {
            name = "log";
            packageId = "log";
            optional = true;
          }
          {
            name = "regex-automata";
            packageId = "regex-automata";
            usesDefaultFeatures = false;
            features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" ];
          }
          {
            name = "regex-syntax";
            packageId = "regex-syntax";
            usesDefaultFeatures = false;
            features = [ "std" ];
          }
        ];
        features = {
          "default" = [ "log" ];
          "log" = [ "dep:log" ];
          "serde" = [ "dep:serde" ];
          "serde1" = [ "serde" ];
        };
        resolvedDefaultFeatures = [ "default" "log" ];
      };
      "globwalk" = rec {
        crateName = "globwalk";
        version = "0.9.1";
        edition = "2021";
        sha256 = "0mz7bsa66p2rrgnz3l94ac4kbklh7mq8j30iizyxjy4qyvmn1xqb";
        authors = [
          "Gilad Naaman <gilad@naaman.io>"
        ];
        dependencies = [
          {
            name = "bitflags";
            packageId = "bitflags 2.6.0";
          }
          {
            name = "ignore";
            packageId = "ignore";
          }
          {
            name = "walkdir";
            packageId = "walkdir";
          }
        ];

      };
      "hashbrown" = rec {
        crateName = "hashbrown";
        version = "0.14.5";
        edition = "2021";
        sha256 = "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5";
        authors = [
          "Amanieu d'Antras <amanieu@gmail.com>"
        ];
        features = {
          "ahash" = [ "dep:ahash" ];
          "alloc" = [ "dep:alloc" ];
          "allocator-api2" = [ "dep:allocator-api2" ];
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "default" = [ "ahash" "inline-more" "allocator-api2" ];
          "equivalent" = [ "dep:equivalent" ];
          "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ];
          "rayon" = [ "dep:rayon" ];
          "rkyv" = [ "dep:rkyv" ];
          "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ];
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "raw" ];
      };
      "heck" = rec {
        crateName = "heck";
        version = "0.3.3";
        edition = "2018";
        sha256 = "0b0kkr790p66lvzn9nsmfjvydrbmh9z5gb664jchwgw64vxiwqkd";
        authors = [
          "Without Boats <woboats@gmail.com>"
        ];
        dependencies = [
          {
            name = "unicode-segmentation";
            packageId = "unicode-segmentation";
          }
        ];

      };
      "hermit-abi" = rec {
        crateName = "hermit-abi";
        version = "0.1.19";
        edition = "2018";
        sha256 = "0cxcm8093nf5fyn114w8vxbrbcyvv91d4015rdnlgfll7cs6gd32";
        libName = "hermit_abi";
        authors = [
          "Stefan Lankes"
        ];
        dependencies = [
          {
            name = "libc";
            packageId = "libc";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins/rustc-dep-of-std" "libc/rustc-dep-of-std" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "hex" = rec {
        crateName = "hex";
        version = "0.4.3";
        edition = "2018";
        sha256 = "0w1a4davm1lgzpamwnba907aysmlrnygbqmfis2mqjx5m552a93z";
        authors = [
          "KokaKiwi <kokakiwi@kokakiwi.net>"
        ];
        features = {
          "default" = [ "std" ];
          "serde" = [ "dep:serde" ];
          "std" = [ "alloc" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "idna" = rec {
        crateName = "idna";
        version = "0.5.0";
        edition = "2018";
        sha256 = "1xhjrcjqq0l5bpzvdgylvpkgk94panxgsirzhjnnqfdgc4a9nkb3";
        authors = [
          "The rust-url developers"
        ];
        dependencies = [
          {
            name = "unicode-bidi";
            packageId = "unicode-bidi";
            usesDefaultFeatures = false;
            features = [ "hardcoded-data" ];
          }
          {
            name = "unicode-normalization";
            packageId = "unicode-normalization";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "alloc" "unicode-bidi/std" "unicode-normalization/std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "ignore" = rec {
        crateName = "ignore";
        version = "0.4.22";
        edition = "2021";
        sha256 = "1wcaqpi6djqgi1brghrdyw4d5qgnwzhqrqyn4mar4vp677gi0s5l";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "crossbeam-deque";
            packageId = "crossbeam-deque";
          }
          {
            name = "globset";
            packageId = "globset";
          }
          {
            name = "log";
            packageId = "log";
          }
          {
            name = "memchr";
            packageId = "memchr";
          }
          {
            name = "regex-automata";
            packageId = "regex-automata";
            usesDefaultFeatures = false;
            features = [ "std" "perf" "syntax" "meta" "nfa" "hybrid" "dfa-onepass" ];
          }
          {
            name = "same-file";
            packageId = "same-file";
          }
          {
            name = "walkdir";
            packageId = "walkdir";
          }
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];
        features = {
        };
      };
      "indexmap" = rec {
        crateName = "indexmap";
        version = "2.2.6";
        edition = "2021";
        sha256 = "09hgwi2ig0wyj5rjziia76zmhgfj95k0jb4ic3iiawm4vlavg3qn";
        dependencies = [
          {
            name = "equivalent";
            packageId = "equivalent";
            usesDefaultFeatures = false;
          }
          {
            name = "hashbrown";
            packageId = "hashbrown";
            usesDefaultFeatures = false;
            features = [ "raw" ];
          }
        ];
        features = {
          "arbitrary" = [ "dep:arbitrary" ];
          "borsh" = [ "dep:borsh" ];
          "default" = [ "std" ];
          "quickcheck" = [ "dep:quickcheck" ];
          "rayon" = [ "dep:rayon" ];
          "rustc-rayon" = [ "dep:rustc-rayon" ];
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "itertools 0.10.5" = rec {
        crateName = "itertools";
        version = "0.10.5";
        edition = "2018";
        sha256 = "0ww45h7nxx5kj6z2y6chlskxd1igvs4j507anr6dzg99x1h25zdh";
        authors = [
          "bluss"
        ];
        dependencies = [
          {
            name = "either";
            packageId = "either";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "use_std" ];
          "use_std" = [ "use_alloc" "either/use_std" ];
        };
      };
      "itertools 0.12.1" = rec {
        crateName = "itertools";
        version = "0.12.1";
        edition = "2018";
        sha256 = "0s95jbb3ndj1lvfxyq5wanc0fm0r6hg6q4ngb92qlfdxvci10ads";
        authors = [
          "bluss"
        ];
        dependencies = [
          {
            name = "either";
            packageId = "either";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "use_std" ];
          "use_std" = [ "use_alloc" "either/use_std" ];
        };
        resolvedDefaultFeatures = [ "default" "use_alloc" "use_std" ];
      };
      "itoa" = rec {
        crateName = "itoa";
        version = "1.0.11";
        edition = "2018";
        sha256 = "0nv9cqjwzr3q58qz84dcz63ggc54yhf1yqar1m858m1kfd4g3wa9";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
          "no-panic" = [ "dep:no-panic" ];
        };
      };
      "lazy_static" = rec {
        crateName = "lazy_static";
        version = "1.5.0";
        edition = "2015";
        sha256 = "1zk6dqqni0193xg6iijh7i3i44sryglwgvx20spdvwk3r6sbrlmv";
        authors = [
          "Marvin Löbel <loebel.marvin@gmail.com>"
        ];
        features = {
          "spin" = [ "dep:spin" ];
          "spin_no_std" = [ "spin" ];
        };
      };
      "libc" = rec {
        crateName = "libc";
        version = "0.2.155";
        edition = "2015";
        sha256 = "0z44c53z54znna8n322k5iwg80arxxpdzjj5260pxxzc9a58icwp";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "default" = [ "std" ];
          "rustc-dep-of-std" = [ "align" "rustc-std-workspace-core" ];
          "rustc-std-workspace-core" = [ "dep:rustc-std-workspace-core" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "log" = rec {
        crateName = "log";
        version = "0.4.22";
        edition = "2021";
        sha256 = "093vs0wkm1rgyykk7fjbqp2lwizbixac1w52gv109p5r4jh0p9x7";
        authors = [
          "The Rust Project Developers"
        ];
        features = {
          "kv_serde" = [ "kv_std" "value-bag/serde" "serde" ];
          "kv_std" = [ "std" "kv" "value-bag/error" ];
          "kv_sval" = [ "kv" "value-bag/sval" "sval" "sval_ref" ];
          "kv_unstable" = [ "kv" "value-bag" ];
          "kv_unstable_serde" = [ "kv_serde" "kv_unstable_std" ];
          "kv_unstable_std" = [ "kv_std" "kv_unstable" ];
          "kv_unstable_sval" = [ "kv_sval" "kv_unstable" ];
          "serde" = [ "dep:serde" ];
          "sval" = [ "dep:sval" ];
          "sval_ref" = [ "dep:sval_ref" ];
          "value-bag" = [ "dep:value-bag" ];
        };
      };
      "memchr" = rec {
        crateName = "memchr";
        version = "2.7.4";
        edition = "2021";
        sha256 = "18z32bhxrax0fnjikv475z7ii718hq457qwmaryixfxsl2qrmjkq";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
          "bluss"
        ];
        features = {
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "default" = [ "std" ];
          "logging" = [ "dep:log" ];
          "rustc-dep-of-std" = [ "core" "compiler_builtins" ];
          "std" = [ "alloc" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "nix-base32" = rec {
        crateName = "nix-base32";
        version = "0.1.1";
        edition = "2018";
        sha256 = "04jnq6arig0amz0scadavbzn9bg9k4zphmrm1562n6ygfj1dnj45";
        libName = "nix_base32";
        authors = [
          "Peter Kolloch <info@eigenvalue.net>"
        ];

      };
      "once_cell" = rec {
        crateName = "once_cell";
        version = "1.19.0";
        edition = "2021";
        sha256 = "14kvw7px5z96dk4dwdm1r9cqhhy2cyj1l5n5b29mynbb8yr15nrz";
        authors = [
          "Aleksey Kladov <aleksey.kladov@gmail.com>"
        ];
        features = {
          "alloc" = [ "race" ];
          "atomic-polyfill" = [ "critical-section" ];
          "critical-section" = [ "dep:critical-section" "portable-atomic" ];
          "default" = [ "std" ];
          "parking_lot" = [ "dep:parking_lot_core" ];
          "portable-atomic" = [ "dep:portable-atomic" ];
          "std" = [ "alloc" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "race" "std" ];
      };
      "pathdiff" = rec {
        crateName = "pathdiff";
        version = "0.2.1";
        edition = "2018";
        sha256 = "1pa4dcmb7lwir4himg1mnl97a05b2z0svczg62l8940pbim12dc8";
        authors = [
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        features = {
          "camino" = [ "dep:camino" ];
        };
      };
      "percent-encoding" = rec {
        crateName = "percent-encoding";
        version = "2.3.1";
        edition = "2018";
        sha256 = "0gi8wgx0dcy8rnv1kywdv98lwcx67hz0a0zwpib5v2i08r88y573";
        libName = "percent_encoding";
        authors = [
          "The rust-url developers"
        ];
        features = {
          "default" = [ "std" ];
          "std" = [ "alloc" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "std" ];
      };
      "pest" = rec {
        crateName = "pest";
        version = "2.7.10";
        edition = "2021";
        sha256 = "1s4fvis7h6l872g6nk17r130kcllj4c0hjvwkzd3hi196g3320an";
        authors = [
          "Dragoș Tiselice <dragostiselice@gmail.com>"
        ];
        dependencies = [
          {
            name = "memchr";
            packageId = "memchr";
            optional = true;
          }
          {
            name = "thiserror";
            packageId = "thiserror";
            optional = true;
          }
          {
            name = "ucd-trie";
            packageId = "ucd-trie";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "memchr" ];
          "memchr" = [ "dep:memchr" ];
          "pretty-print" = [ "dep:serde" "dep:serde_json" ];
          "std" = [ "ucd-trie/std" "dep:thiserror" ];
        };
        resolvedDefaultFeatures = [ "default" "memchr" "std" ];
      };
      "pest_derive" = rec {
        crateName = "pest_derive";
        version = "2.7.10";
        edition = "2021";
        sha256 = "0n8lsk9s21dp7958p9yarbk2gsc8wg0rvdzr7cd7pjpvjf8kqa96";
        procMacro = true;
        authors = [
          "Dragoș Tiselice <dragostiselice@gmail.com>"
        ];
        dependencies = [
          {
            name = "pest";
            packageId = "pest";
            usesDefaultFeatures = false;
          }
          {
            name = "pest_generator";
            packageId = "pest_generator";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "grammar-extras" = [ "pest_generator/grammar-extras" ];
          "not-bootstrap-in-src" = [ "pest_generator/not-bootstrap-in-src" ];
          "std" = [ "pest/std" "pest_generator/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "pest_generator" = rec {
        crateName = "pest_generator";
        version = "2.7.10";
        edition = "2021";
        sha256 = "11s6q0vf25lckbzak0qndzpv87ksaxy6pa9cvn2hlizvsgvjmhiy";
        authors = [
          "Dragoș Tiselice <dragostiselice@gmail.com>"
        ];
        dependencies = [
          {
            name = "pest";
            packageId = "pest";
            usesDefaultFeatures = false;
          }
          {
            name = "pest_meta";
            packageId = "pest_meta";
          }
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn 2.0.68";
          }
        ];
        features = {
          "default" = [ "std" ];
          "grammar-extras" = [ "pest_meta/grammar-extras" ];
          "not-bootstrap-in-src" = [ "pest_meta/not-bootstrap-in-src" ];
          "std" = [ "pest/std" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "pest_meta" = rec {
        crateName = "pest_meta";
        version = "2.7.10";
        edition = "2021";
        sha256 = "1kdxl164yyjsmn01lvllsll4sz3xbgy4dmkq33n63hrp5w1418np";
        authors = [
          "Dragoș Tiselice <dragostiselice@gmail.com>"
        ];
        dependencies = [
          {
            name = "once_cell";
            packageId = "once_cell";
          }
          {
            name = "pest";
            packageId = "pest";
          }
        ];
        buildDependencies = [
          {
            name = "sha2";
            packageId = "sha2";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "not-bootstrap-in-src" = [ "dep:cargo" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "proc-macro-error" = rec {
        crateName = "proc-macro-error";
        version = "1.0.4";
        edition = "2018";
        sha256 = "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs";
        libName = "proc_macro_error";
        authors = [
          "CreepySkeleton <creepy-skeleton@yandex.ru>"
        ];
        dependencies = [
          {
            name = "proc-macro-error-attr";
            packageId = "proc-macro-error-attr";
          }
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn 1.0.109";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        buildDependencies = [
          {
            name = "version_check";
            packageId = "version_check";
          }
        ];
        features = {
          "default" = [ "syn-error" ];
          "syn" = [ "dep:syn" ];
          "syn-error" = [ "syn" ];
        };
        resolvedDefaultFeatures = [ "default" "syn" "syn-error" ];
      };
      "proc-macro-error-attr" = rec {
        crateName = "proc-macro-error-attr";
        version = "1.0.4";
        edition = "2018";
        sha256 = "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1";
        procMacro = true;
        libName = "proc_macro_error_attr";
        authors = [
          "CreepySkeleton <creepy-skeleton@yandex.ru>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
        ];
        buildDependencies = [
          {
            name = "version_check";
            packageId = "version_check";
          }
        ];

      };
      "proc-macro2" = rec {
        crateName = "proc-macro2";
        version = "1.0.86";
        edition = "2021";
        sha256 = "0xrv22p8lqlfdf1w0pj4si8n2ws4aw0kilmziwf0vpv5ys6rwway";
        libName = "proc_macro2";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        dependencies = [
          {
            name = "unicode-ident";
            packageId = "unicode-ident";
          }
        ];
        features = {
          "default" = [ "proc-macro" ];
        };
        resolvedDefaultFeatures = [ "default" "proc-macro" ];
      };
      "quote" = rec {
        crateName = "quote";
        version = "1.0.36";
        edition = "2018";
        sha256 = "19xcmh445bg6simirnnd4fvkmp6v2qiwxh5f6rw4a70h76pnm9qg";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "proc-macro" ];
          "proc-macro" = [ "proc-macro2/proc-macro" ];
        };
        resolvedDefaultFeatures = [ "default" "proc-macro" ];
      };
      "rand" = rec {
        crateName = "rand";
        version = "0.4.6";
        edition = "2015";
        sha256 = "14qjfv3gggzhnma20k0sc1jf8y6pplsaq7n1j9ls5c8kf2wl0a2m";
        authors = [
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "fuchsia-cprng";
            packageId = "fuchsia-cprng";
            target = { target, features }: ("fuchsia" == target."os" or null);
          }
          {
            name = "libc";
            packageId = "libc";
            optional = true;
            target = { target, features }: (target."unix" or false);
          }
          {
            name = "rand_core";
            packageId = "rand_core 0.3.1";
            usesDefaultFeatures = false;
            target = { target, features }: ("sgx" == target."env" or null);
          }
          {
            name = "rdrand";
            packageId = "rdrand";
            target = { target, features }: ("sgx" == target."env" or null);
          }
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "minwindef" "ntsecapi" "profileapi" "winnt" ];
          }
        ];
        features = {
          "default" = [ "std" ];
          "libc" = [ "dep:libc" ];
          "nightly" = [ "i128_support" ];
          "std" = [ "libc" ];
        };
        resolvedDefaultFeatures = [ "default" "libc" "std" ];
      };
      "rand_core 0.3.1" = rec {
        crateName = "rand_core";
        version = "0.3.1";
        edition = "2015";
        sha256 = "0jzdgszfa4bliigiy4hi66k7fs3gfwi2qxn8vik84ph77fwdwvvs";
        authors = [
          "The Rand Project Developers"
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "rand_core";
            packageId = "rand_core 0.4.2";
          }
        ];
        features = {
          "alloc" = [ "rand_core/alloc" ];
          "default" = [ "std" ];
          "serde1" = [ "rand_core/serde1" ];
          "std" = [ "rand_core/std" ];
        };
      };
      "rand_core 0.4.2" = rec {
        crateName = "rand_core";
        version = "0.4.2";
        edition = "2015";
        sha256 = "1p09ynysrq1vcdlmcqnapq4qakl2yd1ng3kxh3qscpx09k2a6cww";
        authors = [
          "The Rand Project Developers"
          "The Rust Project Developers"
        ];
        features = {
          "serde" = [ "dep:serde" ];
          "serde1" = [ "serde" "serde_derive" ];
          "serde_derive" = [ "dep:serde_derive" ];
          "std" = [ "alloc" ];
        };
      };
      "rdrand" = rec {
        crateName = "rdrand";
        version = "0.4.0";
        edition = "2015";
        sha256 = "1cjq0kwx1bk7jx3kzyciiish5gqsj7620dm43dc52sr8fzmm9037";
        authors = [
          "Simonas Kazlauskas <rdrand@kazlauskas.me>"
        ];
        dependencies = [
          {
            name = "rand_core";
            packageId = "rand_core 0.3.1";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" ];
      };
      "regex" = rec {
        crateName = "regex";
        version = "1.10.5";
        edition = "2021";
        sha256 = "0zsiqk2sxc1kd46qw0yp87s2a14ialwyxinpl0k266ddkm1i64mr";
        authors = [
          "The Rust Project Developers"
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "aho-corasick";
            packageId = "aho-corasick";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "memchr";
            packageId = "memchr";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "regex-automata";
            packageId = "regex-automata";
            usesDefaultFeatures = false;
            features = [ "alloc" "syntax" "meta" "nfa-pikevm" ];
          }
          {
            name = "regex-syntax";
            packageId = "regex-syntax";
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "perf" "unicode" "regex-syntax/default" ];
          "logging" = [ "aho-corasick?/logging" "memchr?/logging" "regex-automata/logging" ];
          "perf" = [ "perf-cache" "perf-dfa" "perf-onepass" "perf-backtrack" "perf-inline" "perf-literal" ];
          "perf-backtrack" = [ "regex-automata/nfa-backtrack" ];
          "perf-dfa" = [ "regex-automata/hybrid" ];
          "perf-dfa-full" = [ "regex-automata/dfa-build" "regex-automata/dfa-search" ];
          "perf-inline" = [ "regex-automata/perf-inline" ];
          "perf-literal" = [ "dep:aho-corasick" "dep:memchr" "regex-automata/perf-literal" ];
          "perf-onepass" = [ "regex-automata/dfa-onepass" ];
          "std" = [ "aho-corasick?/std" "memchr?/std" "regex-automata/std" "regex-syntax/std" ];
          "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "regex-automata/unicode" "regex-syntax/unicode" ];
          "unicode-age" = [ "regex-automata/unicode-age" "regex-syntax/unicode-age" ];
          "unicode-bool" = [ "regex-automata/unicode-bool" "regex-syntax/unicode-bool" ];
          "unicode-case" = [ "regex-automata/unicode-case" "regex-syntax/unicode-case" ];
          "unicode-gencat" = [ "regex-automata/unicode-gencat" "regex-syntax/unicode-gencat" ];
          "unicode-perl" = [ "regex-automata/unicode-perl" "regex-automata/unicode-word-boundary" "regex-syntax/unicode-perl" ];
          "unicode-script" = [ "regex-automata/unicode-script" "regex-syntax/unicode-script" ];
          "unicode-segment" = [ "regex-automata/unicode-segment" "regex-syntax/unicode-segment" ];
          "unstable" = [ "pattern" ];
          "use_std" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "default" "perf" "perf-backtrack" "perf-cache" "perf-dfa" "perf-inline" "perf-literal" "perf-onepass" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
      };
      "regex-automata" = rec {
        crateName = "regex-automata";
        version = "0.4.7";
        edition = "2021";
        sha256 = "1pwjdi4jckpbaivpl6x4v5g4crb37zr2wac93wlfsbzgqn6gbjiq";
        libName = "regex_automata";
        authors = [
          "The Rust Project Developers"
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "aho-corasick";
            packageId = "aho-corasick";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "memchr";
            packageId = "memchr";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "regex-syntax";
            packageId = "regex-syntax";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" "syntax" "perf" "unicode" "meta" "nfa" "dfa" "hybrid" ];
          "dfa" = [ "dfa-build" "dfa-search" "dfa-onepass" ];
          "dfa-build" = [ "nfa-thompson" "dfa-search" ];
          "dfa-onepass" = [ "nfa-thompson" ];
          "hybrid" = [ "alloc" "nfa-thompson" ];
          "internal-instrument" = [ "internal-instrument-pikevm" ];
          "internal-instrument-pikevm" = [ "logging" "std" ];
          "logging" = [ "dep:log" "aho-corasick?/logging" "memchr?/logging" ];
          "meta" = [ "syntax" "nfa-pikevm" ];
          "nfa" = [ "nfa-thompson" "nfa-pikevm" "nfa-backtrack" ];
          "nfa-backtrack" = [ "nfa-thompson" ];
          "nfa-pikevm" = [ "nfa-thompson" ];
          "nfa-thompson" = [ "alloc" ];
          "perf" = [ "perf-inline" "perf-literal" ];
          "perf-literal" = [ "perf-literal-substring" "perf-literal-multisubstring" ];
          "perf-literal-multisubstring" = [ "std" "dep:aho-corasick" ];
          "perf-literal-substring" = [ "aho-corasick?/perf-literal" "dep:memchr" ];
          "std" = [ "regex-syntax?/std" "memchr?/std" "aho-corasick?/std" "alloc" ];
          "syntax" = [ "dep:regex-syntax" "alloc" ];
          "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "unicode-word-boundary" "regex-syntax?/unicode" ];
          "unicode-age" = [ "regex-syntax?/unicode-age" ];
          "unicode-bool" = [ "regex-syntax?/unicode-bool" ];
          "unicode-case" = [ "regex-syntax?/unicode-case" ];
          "unicode-gencat" = [ "regex-syntax?/unicode-gencat" ];
          "unicode-perl" = [ "regex-syntax?/unicode-perl" ];
          "unicode-script" = [ "regex-syntax?/unicode-script" ];
          "unicode-segment" = [ "regex-syntax?/unicode-segment" ];
        };
        resolvedDefaultFeatures = [ "alloc" "dfa-onepass" "hybrid" "meta" "nfa" "nfa-backtrack" "nfa-pikevm" "nfa-thompson" "perf" "perf-inline" "perf-literal" "perf-literal-multisubstring" "perf-literal-substring" "std" "syntax" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" "unicode-word-boundary" ];
      };
      "regex-syntax" = rec {
        crateName = "regex-syntax";
        version = "0.8.4";
        edition = "2021";
        sha256 = "16r0kjy20vx33dr4mhasj5l1f87czas714x2fz6zl0f8wwxa0rks";
        libName = "regex_syntax";
        authors = [
          "The Rust Project Developers"
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        features = {
          "arbitrary" = [ "dep:arbitrary" ];
          "default" = [ "std" "unicode" ];
          "unicode" = [ "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
        };
        resolvedDefaultFeatures = [ "default" "std" "unicode" "unicode-age" "unicode-bool" "unicode-case" "unicode-gencat" "unicode-perl" "unicode-script" "unicode-segment" ];
      };
      "remove_dir_all" = rec {
        crateName = "remove_dir_all";
        version = "0.5.3";
        edition = "2015";
        sha256 = "1rzqbsgkmr053bxxl04vmvsd1njyz0nxvly97aip6aa2cmb15k9s";
        authors = [
          "Aaronepower <theaaronepower@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi";
            packageId = "winapi";
            target = { target, features }: (target."windows" or false);
            features = [ "std" "errhandlingapi" "winerror" "fileapi" "winbase" ];
          }
        ];

      };
      "ryu" = rec {
        crateName = "ryu";
        version = "1.0.18";
        edition = "2018";
        sha256 = "17xx2s8j1lln7iackzd9p0sv546vjq71i779gphjq923vjh5pjzk";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        features = {
          "no-panic" = [ "dep:no-panic" ];
        };
      };
      "same-file" = rec {
        crateName = "same-file";
        version = "1.0.6";
        edition = "2018";
        sha256 = "00h5j1w87dmhnvbv9l8bic3y7xxsnjmssvifw2ayvgx9mb1ivz4k";
        libName = "same_file";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];

      };
      "semver" = rec {
        crateName = "semver";
        version = "1.0.23";
        edition = "2018";
        sha256 = "12wqpxfflclbq4dv8sa6gchdh92ahhwn4ci1ls22wlby3h57wsb1";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
            optional = true;
            usesDefaultFeatures = false;
          }
        ];
        features = {
          "default" = [ "std" ];
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "default" "serde" "std" ];
      };
      "serde" = rec {
        crateName = "serde";
        version = "1.0.203";
        edition = "2018";
        sha256 = "1500ghq198n6py5anvz5qbqagd9h1hq04f4qpsvjzrvix56snlvj";
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "serde_derive";
            packageId = "serde_derive";
            optional = true;
          }
          {
            name = "serde_derive";
            packageId = "serde_derive";
            target = { target, features }: false;
          }
        ];
        devDependencies = [
          {
            name = "serde_derive";
            packageId = "serde_derive";
          }
        ];
        features = {
          "default" = [ "std" ];
          "derive" = [ "serde_derive" ];
          "serde_derive" = [ "dep:serde_derive" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "derive" "serde_derive" "std" ];
      };
      "serde_derive" = rec {
        crateName = "serde_derive";
        version = "1.0.203";
        edition = "2015";
        sha256 = "1fmmqmfza3mwxb1v80737dj01gznrh8mhgqgylkndx5npq7bq32h";
        procMacro = true;
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
            features = [ "proc-macro" ];
          }
          {
            name = "quote";
            packageId = "quote";
            usesDefaultFeatures = false;
            features = [ "proc-macro" ];
          }
          {
            name = "syn";
            packageId = "syn 2.0.68";
            usesDefaultFeatures = false;
            features = [ "clone-impls" "derive" "parsing" "printing" "proc-macro" ];
          }
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "serde_json" = rec {
        crateName = "serde_json";
        version = "1.0.118";
        edition = "2021";
        sha256 = "1r7jpqdfnrv8skn5va1r202g6lhdhka0vyn42vm5g21x2srzciyr";
        authors = [
          "Erick Tryzelaar <erick.tryzelaar@gmail.com>"
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "itoa";
            packageId = "itoa";
          }
          {
            name = "ryu";
            packageId = "ryu";
          }
          {
            name = "serde";
            packageId = "serde";
            usesDefaultFeatures = false;
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
        ];
        features = {
          "alloc" = [ "serde/alloc" ];
          "default" = [ "std" ];
          "indexmap" = [ "dep:indexmap" ];
          "preserve_order" = [ "indexmap" "std" ];
          "std" = [ "serde/std" ];
        };
        resolvedDefaultFeatures = [ "default" "std" "unbounded_depth" ];
      };
      "serde_spanned" = rec {
        crateName = "serde_spanned";
        version = "0.6.6";
        edition = "2021";
        sha256 = "1839b6m5p9ijjmcwamiya2r612ks2vg6w2pp95yg76lr3zh79rkr";
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
            optional = true;
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
          }
        ];
        features = {
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "serde" ];
      };
      "sha2" = rec {
        crateName = "sha2";
        version = "0.10.8";
        edition = "2018";
        sha256 = "1j1x78zk9il95w9iv46dh9wm73r6xrgj32y6lzzw7bxws9dbfgbr";
        authors = [
          "RustCrypto Developers"
        ];
        dependencies = [
          {
            name = "cfg-if";
            packageId = "cfg-if";
          }
          {
            name = "cpufeatures";
            packageId = "cpufeatures";
            target = { target, features }: (("aarch64" == target."arch" or null) || ("x86_64" == target."arch" or null) || ("x86" == target."arch" or null));
          }
          {
            name = "digest";
            packageId = "digest";
          }
        ];
        devDependencies = [
          {
            name = "digest";
            packageId = "digest";
            features = [ "dev" ];
          }
        ];
        features = {
          "asm" = [ "sha2-asm" ];
          "asm-aarch64" = [ "asm" ];
          "default" = [ "std" ];
          "oid" = [ "digest/oid" ];
          "sha2-asm" = [ "dep:sha2-asm" ];
          "std" = [ "digest/std" ];
        };
      };
      "strsim" = rec {
        crateName = "strsim";
        version = "0.8.0";
        edition = "2015";
        sha256 = "0sjsm7hrvjdifz661pjxq5w4hf190hx53fra8dfvamacvff139cf";
        authors = [
          "Danny Guo <dannyguo91@gmail.com>"
        ];

      };
      "structopt" = rec {
        crateName = "structopt";
        version = "0.3.26";
        edition = "2018";
        sha256 = "043sg3qxllann6q9i71d05qp3q13scmcvhxhd950ka2v8ij5qsqc";
        authors = [
          "Guillaume Pinot <texitoi@texitoi.eu>"
          "others"
        ];
        dependencies = [
          {
            name = "clap";
            packageId = "clap";
            usesDefaultFeatures = false;
          }
          {
            name = "lazy_static";
            packageId = "lazy_static";
          }
          {
            name = "structopt-derive";
            packageId = "structopt-derive";
          }
        ];
        features = {
          "color" = [ "clap/color" ];
          "debug" = [ "clap/debug" ];
          "default" = [ "clap/default" ];
          "doc" = [ "clap/doc" ];
          "lints" = [ "clap/lints" ];
          "no_cargo" = [ "clap/no_cargo" ];
          "paw" = [ "structopt-derive/paw" "paw_dep" ];
          "paw_dep" = [ "dep:paw_dep" ];
          "suggestions" = [ "clap/suggestions" ];
          "wrap_help" = [ "clap/wrap_help" ];
          "yaml" = [ "clap/yaml" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "structopt-derive" = rec {
        crateName = "structopt-derive";
        version = "0.4.18";
        edition = "2018";
        sha256 = "1q5gcigmvw0cinjxzpyrkflliq5r1ivljmrvfrl3phcwgwraxdfw";
        procMacro = true;
        libName = "structopt_derive";
        authors = [
          "Guillaume Pinot <texitoi@texitoi.eu>"
        ];
        dependencies = [
          {
            name = "heck";
            packageId = "heck";
          }
          {
            name = "proc-macro-error";
            packageId = "proc-macro-error";
          }
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn 1.0.109";
            features = [ "full" ];
          }
        ];
        features = {
        };
      };
      "syn 1.0.109" = rec {
        crateName = "syn";
        version = "1.0.109";
        edition = "2018";
        sha256 = "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
          }
          {
            name = "quote";
            packageId = "quote";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "unicode-ident";
            packageId = "unicode-ident";
          }
        ];
        features = {
          "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
          "printing" = [ "quote" ];
          "proc-macro" = [ "proc-macro2/proc-macro" "quote/proc-macro" ];
          "quote" = [ "dep:quote" ];
          "test" = [ "syn-test-suite/all-features" ];
        };
        resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "full" "parsing" "printing" "proc-macro" "quote" ];
      };
      "syn 2.0.68" = rec {
        crateName = "syn";
        version = "2.0.68";
        edition = "2021";
        sha256 = "1sf1y2hajhjav38ipg63c934xrgkz4v42fz24a0ckmmri06sf7wh";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
            usesDefaultFeatures = false;
          }
          {
            name = "quote";
            packageId = "quote";
            optional = true;
            usesDefaultFeatures = false;
          }
          {
            name = "unicode-ident";
            packageId = "unicode-ident";
          }
        ];
        features = {
          "default" = [ "derive" "parsing" "printing" "clone-impls" "proc-macro" ];
          "printing" = [ "dep:quote" ];
          "proc-macro" = [ "proc-macro2/proc-macro" "quote?/proc-macro" ];
          "test" = [ "syn-test-suite/all-features" ];
        };
        resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "parsing" "printing" "proc-macro" ];
      };
      "tempdir" = rec {
        crateName = "tempdir";
        version = "0.3.7";
        edition = "2015";
        sha256 = "1n5n86zxpgd85y0mswrp5cfdisizq2rv3la906g6ipyc03xvbwhm";
        authors = [
          "The Rust Project Developers"
        ];
        dependencies = [
          {
            name = "rand";
            packageId = "rand";
          }
          {
            name = "remove_dir_all";
            packageId = "remove_dir_all";
          }
        ];

      };
      "tera" = rec {
        crateName = "tera";
        version = "1.20.0";
        edition = "2018";
        sha256 = "1vnj9imw2h9szkd1izsrhwrc9jvazvdsp84x65wg2rg88ldqb7db";
        authors = [
          "Vincent Prouillet <hello@prouilletvincent.com>"
        ];
        dependencies = [
          {
            name = "globwalk";
            packageId = "globwalk";
          }
          {
            name = "lazy_static";
            packageId = "lazy_static";
          }
          {
            name = "pest";
            packageId = "pest";
          }
          {
            name = "pest_derive";
            packageId = "pest_derive";
          }
          {
            name = "regex";
            packageId = "regex";
          }
          {
            name = "serde";
            packageId = "serde";
          }
          {
            name = "serde_json";
            packageId = "serde_json";
          }
          {
            name = "unic-segment";
            packageId = "unic-segment";
          }
        ];
        features = {
          "builtins" = [ "urlencode" "slug" "humansize" "chrono" "chrono-tz" "rand" ];
          "chrono" = [ "dep:chrono" ];
          "chrono-tz" = [ "dep:chrono-tz" ];
          "date-locale" = [ "builtins" "chrono/unstable-locales" ];
          "default" = [ "builtins" ];
          "humansize" = [ "dep:humansize" ];
          "percent-encoding" = [ "dep:percent-encoding" ];
          "preserve_order" = [ "serde_json/preserve_order" ];
          "rand" = [ "dep:rand" ];
          "slug" = [ "dep:slug" ];
          "urlencode" = [ "percent-encoding" ];
        };
      };
      "textwrap" = rec {
        crateName = "textwrap";
        version = "0.11.0";
        edition = "2015";
        sha256 = "0q5hky03ik3y50s9sz25r438bc4nwhqc6dqwynv4wylc807n29nk";
        authors = [
          "Martin Geisler <martin@geisler.net>"
        ];
        dependencies = [
          {
            name = "unicode-width";
            packageId = "unicode-width";
          }
        ];
        features = {
          "hyphenation" = [ "dep:hyphenation" ];
          "term_size" = [ "dep:term_size" ];
        };
      };
      "thiserror" = rec {
        crateName = "thiserror";
        version = "1.0.61";
        edition = "2021";
        sha256 = "028prh962l16cmjivwb1g9xalbpqip0305zhq006mg74dc6whin5";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "thiserror-impl";
            packageId = "thiserror-impl";
          }
        ];

      };
      "thiserror-impl" = rec {
        crateName = "thiserror-impl";
        version = "1.0.61";
        edition = "2021";
        sha256 = "0cvm37hp0kbcyk1xac1z0chpbd9pbn2g456iyid6sah0a113ihs6";
        procMacro = true;
        libName = "thiserror_impl";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];
        dependencies = [
          {
            name = "proc-macro2";
            packageId = "proc-macro2";
          }
          {
            name = "quote";
            packageId = "quote";
          }
          {
            name = "syn";
            packageId = "syn 2.0.68";
          }
        ];

      };
      "tinyvec" = rec {
        crateName = "tinyvec";
        version = "1.6.1";
        edition = "2018";
        sha256 = "10idfhsvp7zhbr8pn37wfra2bn02vr5xg6mhdvrbxlp2zg31alf5";
        authors = [
          "Lokathor <zefria@gmail.com>"
        ];
        dependencies = [
          {
            name = "tinyvec_macros";
            packageId = "tinyvec_macros";
            optional = true;
          }
        ];
        features = {
          "alloc" = [ "tinyvec_macros" ];
          "arbitrary" = [ "dep:arbitrary" ];
          "real_blackbox" = [ "criterion/real_blackbox" ];
          "rustc_1_57" = [ "rustc_1_55" ];
          "serde" = [ "dep:serde" ];
          "std" = [ "alloc" ];
          "tinyvec_macros" = [ "dep:tinyvec_macros" ];
        };
        resolvedDefaultFeatures = [ "alloc" "default" "tinyvec_macros" ];
      };
      "tinyvec_macros" = rec {
        crateName = "tinyvec_macros";
        version = "0.1.1";
        edition = "2018";
        sha256 = "081gag86208sc3y6sdkshgw3vysm5d34p431dzw0bshz66ncng0z";
        authors = [
          "Soveu <marx.tomasz@gmail.com>"
        ];

      };
      "toml" = rec {
        crateName = "toml";
        version = "0.8.14";
        edition = "2021";
        sha256 = "0dgk8bacrza09npifba1xsx7wyjjvhz3igxpdnyjcbqxn8mfnjbg";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
          }
          {
            name = "serde_spanned";
            packageId = "serde_spanned";
            features = [ "serde" ];
          }
          {
            name = "toml_datetime";
            packageId = "toml_datetime";
            features = [ "serde" ];
          }
          {
            name = "toml_edit";
            packageId = "toml_edit";
            optional = true;
            usesDefaultFeatures = false;
            features = [ "serde" ];
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
        ];
        features = {
          "default" = [ "parse" "display" ];
          "display" = [ "dep:toml_edit" "toml_edit?/display" ];
          "indexmap" = [ "dep:indexmap" ];
          "parse" = [ "dep:toml_edit" "toml_edit?/parse" ];
          "preserve_order" = [ "indexmap" ];
        };
        resolvedDefaultFeatures = [ "default" "display" "parse" ];
      };
      "toml_datetime" = rec {
        crateName = "toml_datetime";
        version = "0.6.6";
        edition = "2021";
        sha256 = "1grcrr3gh7id3cy3j700kczwwfbn04p5ncrrj369prjaj9bgvbab";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
        ];
        dependencies = [
          {
            name = "serde";
            packageId = "serde";
            optional = true;
          }
        ];
        features = {
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "serde" ];
      };
      "toml_edit" = rec {
        crateName = "toml_edit";
        version = "0.22.14";
        edition = "2021";
        sha256 = "0f2fw0viqvisjhqwjavgypz5mgbldh53przrsjlrrggijyppl77j";
        authors = [
          "Andronik Ordian <write@reusable.software>"
          "Ed Page <eopage@gmail.com>"
        ];
        dependencies = [
          {
            name = "indexmap";
            packageId = "indexmap";
            features = [ "std" ];
          }
          {
            name = "serde";
            packageId = "serde";
            optional = true;
          }
          {
            name = "serde_spanned";
            packageId = "serde_spanned";
            optional = true;
            features = [ "serde" ];
          }
          {
            name = "toml_datetime";
            packageId = "toml_datetime";
          }
          {
            name = "winnow";
            packageId = "winnow";
            optional = true;
          }
        ];
        features = {
          "default" = [ "parse" "display" ];
          "parse" = [ "dep:winnow" ];
          "perf" = [ "dep:kstring" ];
          "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ];
        };
        resolvedDefaultFeatures = [ "display" "parse" "serde" ];
      };
      "typenum" = rec {
        crateName = "typenum";
        version = "1.17.0";
        edition = "2018";
        sha256 = "09dqxv69m9lj9zvv6xw5vxaqx15ps0vxyy5myg33i0kbqvq0pzs2";
        build = "build/main.rs";
        authors = [
          "Paho Lurie-Gregg <paho@paholg.com>"
          "Andre Bogus <bogusandre@gmail.com>"
        ];
        features = {
          "scale-info" = [ "dep:scale-info" ];
          "scale_info" = [ "scale-info/derive" ];
        };
      };
      "ucd-trie" = rec {
        crateName = "ucd-trie";
        version = "0.1.6";
        edition = "2021";
        sha256 = "1ff4yfksirqs37ybin9aw71aa5gva00hw7jdxbw8w668zy964r7d";
        libName = "ucd_trie";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "unic-char-property" = rec {
        crateName = "unic-char-property";
        version = "0.9.0";
        edition = "2018";
        sha256 = "08g21dn3wwix3ycfl0vrbahn0835nv2q3swm8wms0vwvgm07mid8";
        libName = "unic_char_property";
        authors = [
          "The UNIC Project Developers"
        ];
        dependencies = [
          {
            name = "unic-char-range";
            packageId = "unic-char-range";
          }
        ];

      };
      "unic-char-range" = rec {
        crateName = "unic-char-range";
        version = "0.9.0";
        edition = "2018";
        sha256 = "1g0z7iwvjhqspi6194zsff8vy6i3921hpqcrp3v1813hbwnh5603";
        libName = "unic_char_range";
        authors = [
          "The UNIC Project Developers"
        ];
        features = {
          "rayon" = [ "dep:rayon" ];
          "unstable" = [ "exact-size-is-empty" "fused" "trusted-len" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "unic-common" = rec {
        crateName = "unic-common";
        version = "0.9.0";
        edition = "2018";
        sha256 = "1g1mm954m0zr497dl4kx3vr09yaly290zs33bbl4wrbaba1gzmw0";
        libName = "unic_common";
        authors = [
          "The UNIC Project Developers"
        ];
        features = {
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "unic-segment" = rec {
        crateName = "unic-segment";
        version = "0.9.0";
        edition = "2018";
        sha256 = "08wgz2q6vrdvmbd23kf9pbg8cyzm5q8hq9spc4blzy2ppqk5vvg4";
        libName = "unic_segment";
        authors = [
          "The UNIC Project Developers"
        ];
        dependencies = [
          {
            name = "unic-ucd-segment";
            packageId = "unic-ucd-segment";
          }
        ];

      };
      "unic-ucd-segment" = rec {
        crateName = "unic-ucd-segment";
        version = "0.9.0";
        edition = "2018";
        sha256 = "0027lczcg0r401g6fnzm2bq9fxhgxvri1nlryhhv8192lqic2y90";
        libName = "unic_ucd_segment";
        authors = [
          "The UNIC Project Developers"
        ];
        dependencies = [
          {
            name = "unic-char-property";
            packageId = "unic-char-property";
          }
          {
            name = "unic-char-range";
            packageId = "unic-char-range";
          }
          {
            name = "unic-ucd-version";
            packageId = "unic-ucd-version";
          }
        ];

      };
      "unic-ucd-version" = rec {
        crateName = "unic-ucd-version";
        version = "0.9.0";
        edition = "2018";
        sha256 = "1i5hnzpfnxkp4ijfk8kvhpvj84bij575ybqx1b6hyigy6wi2zgcn";
        libName = "unic_ucd_version";
        authors = [
          "The UNIC Project Developers"
        ];
        dependencies = [
          {
            name = "unic-common";
            packageId = "unic-common";
          }
        ];

      };
      "unicode-bidi" = rec {
        crateName = "unicode-bidi";
        version = "0.3.15";
        edition = "2018";
        sha256 = "0xcdxm7h0ydyprwpcbh436rbs6s6lph7f3gr527lzgv6lw053y88";
        libName = "unicode_bidi";
        authors = [
          "The Servo Project Developers"
        ];
        features = {
          "default" = [ "std" "hardcoded-data" ];
          "flame" = [ "dep:flame" ];
          "flame_it" = [ "flame" "flamer" ];
          "flamer" = [ "dep:flamer" ];
          "serde" = [ "dep:serde" ];
          "with_serde" = [ "serde" ];
        };
        resolvedDefaultFeatures = [ "hardcoded-data" "std" ];
      };
      "unicode-ident" = rec {
        crateName = "unicode-ident";
        version = "1.0.12";
        edition = "2018";
        sha256 = "0jzf1znfpb2gx8nr8mvmyqs1crnv79l57nxnbiszc7xf7ynbjm1k";
        libName = "unicode_ident";
        authors = [
          "David Tolnay <dtolnay@gmail.com>"
        ];

      };
      "unicode-normalization" = rec {
        crateName = "unicode-normalization";
        version = "0.1.23";
        edition = "2018";
        sha256 = "1x81a50h2zxigj74b9bqjsirxxbyhmis54kg600xj213vf31cvd5";
        libName = "unicode_normalization";
        authors = [
          "kwantam <kwantam@gmail.com>"
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        dependencies = [
          {
            name = "tinyvec";
            packageId = "tinyvec";
            features = [ "alloc" ];
          }
        ];
        features = {
          "default" = [ "std" ];
        };
        resolvedDefaultFeatures = [ "std" ];
      };
      "unicode-segmentation" = rec {
        crateName = "unicode-segmentation";
        version = "1.11.0";
        edition = "2018";
        sha256 = "00kjpwp1g8fqm45drmwivlacn3y9jx73bvs09n6s3x73nqi7vj6l";
        libName = "unicode_segmentation";
        authors = [
          "kwantam <kwantam@gmail.com>"
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        features = {
        };
      };
      "unicode-width" = rec {
        crateName = "unicode-width";
        version = "0.1.13";
        edition = "2021";
        sha256 = "0p92vl8n7qc8mxz45xn6qbgi0259z96n32a158l6vj5bywwdadh3";
        libName = "unicode_width";
        authors = [
          "kwantam <kwantam@gmail.com>"
          "Manish Goregaokar <manishsmail@gmail.com>"
        ];
        features = {
          "compiler_builtins" = [ "dep:compiler_builtins" ];
          "core" = [ "dep:core" ];
          "rustc-dep-of-std" = [ "std" "core" "compiler_builtins" ];
          "std" = [ "dep:std" ];
        };
        resolvedDefaultFeatures = [ "default" ];
      };
      "url" = rec {
        crateName = "url";
        version = "2.5.2";
        edition = "2018";
        sha256 = "0v2dx50mx7xzl9454cl5qmpjnhkbahmn59gd3apyipbgyyylsy12";
        authors = [
          "The rust-url developers"
        ];
        dependencies = [
          {
            name = "form_urlencoded";
            packageId = "form_urlencoded";
          }
          {
            name = "idna";
            packageId = "idna";
          }
          {
            name = "percent-encoding";
            packageId = "percent-encoding";
          }
          {
            name = "serde";
            packageId = "serde";
            optional = true;
            features = [ "derive" ];
          }
        ];
        devDependencies = [
          {
            name = "serde";
            packageId = "serde";
            features = [ "derive" ];
          }
        ];
        features = {
          "serde" = [ "dep:serde" ];
        };
        resolvedDefaultFeatures = [ "default" "serde" ];
      };
      "vec_map" = rec {
        crateName = "vec_map";
        version = "0.8.2";
        edition = "2015";
        sha256 = "1481w9g1dw9rxp3l6snkdqihzyrd2f8vispzqmwjwsdyhw8xzggi";
        authors = [
          "Alex Crichton <alex@alexcrichton.com>"
          "Jorge Aparicio <japaricious@gmail.com>"
          "Alexis Beingessner <a.beingessner@gmail.com>"
          "Brian Anderson <>"
          "tbu- <>"
          "Manish Goregaokar <>"
          "Aaron Turon <aturon@mozilla.com>"
          "Adolfo Ochagavía <>"
          "Niko Matsakis <>"
          "Steven Fackler <>"
          "Chase Southwood <csouth3@illinois.edu>"
          "Eduard Burtescu <>"
          "Florian Wilkens <>"
          "Félix Raimundo <>"
          "Tibor Benke <>"
          "Markus Siemens <markus@m-siemens.de>"
          "Josh Branchaud <jbranchaud@gmail.com>"
          "Huon Wilson <dbau.pp@gmail.com>"
          "Corey Farwell <coref@rwell.org>"
          "Aaron Liblong <>"
          "Nick Cameron <nrc@ncameron.org>"
          "Patrick Walton <pcwalton@mimiga.net>"
          "Felix S Klock II <>"
          "Andrew Paseltiner <apaseltiner@gmail.com>"
          "Sean McArthur <sean.monstar@gmail.com>"
          "Vadim Petrochenkov <>"
        ];
        features = {
          "eders" = [ "serde" ];
          "serde" = [ "dep:serde" ];
        };
      };
      "version_check" = rec {
        crateName = "version_check";
        version = "0.9.4";
        edition = "2015";
        sha256 = "0gs8grwdlgh0xq660d7wr80x14vxbizmd8dbp29p2pdncx8lp1s9";
        authors = [
          "Sergio Benitez <sb@sergio.bz>"
        ];

      };
      "walkdir" = rec {
        crateName = "walkdir";
        version = "2.5.0";
        edition = "2018";
        sha256 = "0jsy7a710qv8gld5957ybrnc07gavppp963gs32xk4ag8130jy99";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "same-file";
            packageId = "same-file";
          }
          {
            name = "winapi-util";
            packageId = "winapi-util";
            target = { target, features }: (target."windows" or false);
          }
        ];

      };
      "winapi" = rec {
        crateName = "winapi";
        version = "0.3.9";
        edition = "2015";
        sha256 = "06gl025x418lchw1wxj64ycr7gha83m44cjr5sarhynd9xkrm0sw";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];
        dependencies = [
          {
            name = "winapi-i686-pc-windows-gnu";
            packageId = "winapi-i686-pc-windows-gnu";
            target = { target, features }: (target.name == "i686-pc-windows-gnu");
          }
          {
            name = "winapi-x86_64-pc-windows-gnu";
            packageId = "winapi-x86_64-pc-windows-gnu";
            target = { target, features }: (target.name == "x86_64-pc-windows-gnu");
          }
        ];
        features = {
          "debug" = [ "impl-debug" ];
        };
        resolvedDefaultFeatures = [ "consoleapi" "errhandlingapi" "fileapi" "handleapi" "minwinbase" "minwindef" "ntsecapi" "processenv" "profileapi" "std" "winbase" "winerror" "winnt" ];
      };
      "winapi-i686-pc-windows-gnu" = rec {
        crateName = "winapi-i686-pc-windows-gnu";
        version = "0.4.0";
        edition = "2015";
        sha256 = "1dmpa6mvcvzz16zg6d5vrfy4bxgg541wxrcip7cnshi06v38ffxc";
        libName = "winapi_i686_pc_windows_gnu";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];

      };
      "winapi-util" = rec {
        crateName = "winapi-util";
        version = "0.1.8";
        edition = "2021";
        sha256 = "0svcgddd2rw06mj4r76gj655qsa1ikgz3d3gzax96fz7w62c6k2d";
        libName = "winapi_util";
        authors = [
          "Andrew Gallant <jamslam@gmail.com>"
        ];
        dependencies = [
          {
            name = "windows-sys";
            packageId = "windows-sys";
            target = { target, features }: (target."windows" or false);
            features = [ "Win32_Foundation" "Win32_Storage_FileSystem" "Win32_System_Console" "Win32_System_SystemInformation" ];
          }
        ];

      };
      "winapi-x86_64-pc-windows-gnu" = rec {
        crateName = "winapi-x86_64-pc-windows-gnu";
        version = "0.4.0";
        edition = "2015";
        sha256 = "0gqq64czqb64kskjryj8isp62m2sgvx25yyj3kpc2myh85w24bki";
        libName = "winapi_x86_64_pc_windows_gnu";
        authors = [
          "Peter Atashian <retep998@gmail.com>"
        ];

      };
      "windows-sys" = rec {
        crateName = "windows-sys";
        version = "0.52.0";
        edition = "2021";
        sha256 = "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8";
        libName = "windows_sys";
        authors = [
          "Microsoft"
        ];
        dependencies = [
          {
            name = "windows-targets";
            packageId = "windows-targets";
          }
        ];
        features = {
          "Wdk_Foundation" = [ "Wdk" ];
          "Wdk_Graphics" = [ "Wdk" ];
          "Wdk_Graphics_Direct3D" = [ "Wdk_Graphics" ];
          "Wdk_Storage" = [ "Wdk" ];
          "Wdk_Storage_FileSystem" = [ "Wdk_Storage" ];
          "Wdk_Storage_FileSystem_Minifilters" = [ "Wdk_Storage_FileSystem" ];
          "Wdk_System" = [ "Wdk" ];
          "Wdk_System_IO" = [ "Wdk_System" ];
          "Wdk_System_OfflineRegistry" = [ "Wdk_System" ];
          "Wdk_System_Registry" = [ "Wdk_System" ];
          "Wdk_System_SystemInformation" = [ "Wdk_System" ];
          "Wdk_System_SystemServices" = [ "Wdk_System" ];
          "Wdk_System_Threading" = [ "Wdk_System" ];
          "Win32_Data" = [ "Win32" ];
          "Win32_Data_HtmlHelp" = [ "Win32_Data" ];
          "Win32_Data_RightsManagement" = [ "Win32_Data" ];
          "Win32_Devices" = [ "Win32" ];
          "Win32_Devices_AllJoyn" = [ "Win32_Devices" ];
          "Win32_Devices_BiometricFramework" = [ "Win32_Devices" ];
          "Win32_Devices_Bluetooth" = [ "Win32_Devices" ];
          "Win32_Devices_Communication" = [ "Win32_Devices" ];
          "Win32_Devices_DeviceAndDriverInstallation" = [ "Win32_Devices" ];
          "Win32_Devices_DeviceQuery" = [ "Win32_Devices" ];
          "Win32_Devices_Display" = [ "Win32_Devices" ];
          "Win32_Devices_Enumeration" = [ "Win32_Devices" ];
          "Win32_Devices_Enumeration_Pnp" = [ "Win32_Devices_Enumeration" ];
          "Win32_Devices_Fax" = [ "Win32_Devices" ];
          "Win32_Devices_HumanInterfaceDevice" = [ "Win32_Devices" ];
          "Win32_Devices_PortableDevices" = [ "Win32_Devices" ];
          "Win32_Devices_Properties" = [ "Win32_Devices" ];
          "Win32_Devices_Pwm" = [ "Win32_Devices" ];
          "Win32_Devices_Sensors" = [ "Win32_Devices" ];
          "Win32_Devices_SerialCommunication" = [ "Win32_Devices" ];
          "Win32_Devices_Tapi" = [ "Win32_Devices" ];
          "Win32_Devices_Usb" = [ "Win32_Devices" ];
          "Win32_Devices_WebServicesOnDevices" = [ "Win32_Devices" ];
          "Win32_Foundation" = [ "Win32" ];
          "Win32_Gaming" = [ "Win32" ];
          "Win32_Globalization" = [ "Win32" ];
          "Win32_Graphics" = [ "Win32" ];
          "Win32_Graphics_Dwm" = [ "Win32_Graphics" ];
          "Win32_Graphics_Gdi" = [ "Win32_Graphics" ];
          "Win32_Graphics_GdiPlus" = [ "Win32_Graphics" ];
          "Win32_Graphics_Hlsl" = [ "Win32_Graphics" ];
          "Win32_Graphics_OpenGL" = [ "Win32_Graphics" ];
          "Win32_Graphics_Printing" = [ "Win32_Graphics" ];
          "Win32_Graphics_Printing_PrintTicket" = [ "Win32_Graphics_Printing" ];
          "Win32_Management" = [ "Win32" ];
          "Win32_Management_MobileDeviceManagementRegistration" = [ "Win32_Management" ];
          "Win32_Media" = [ "Win32" ];
          "Win32_Media_Audio" = [ "Win32_Media" ];
          "Win32_Media_DxMediaObjects" = [ "Win32_Media" ];
          "Win32_Media_KernelStreaming" = [ "Win32_Media" ];
          "Win32_Media_Multimedia" = [ "Win32_Media" ];
          "Win32_Media_Streaming" = [ "Win32_Media" ];
          "Win32_Media_WindowsMediaFormat" = [ "Win32_Media" ];
          "Win32_NetworkManagement" = [ "Win32" ];
          "Win32_NetworkManagement_Dhcp" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Dns" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_InternetConnectionWizard" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_IpHelper" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Multicast" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Ndis" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetBios" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetManagement" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetShell" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_NetworkDiagnosticsFramework" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_P2P" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_QoS" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Rras" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_Snmp" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WNet" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WebDav" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WiFi" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsConnectionManager" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsFilteringPlatform" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsFirewall" = [ "Win32_NetworkManagement" ];
          "Win32_NetworkManagement_WindowsNetworkVirtualization" = [ "Win32_NetworkManagement" ];
          "Win32_Networking" = [ "Win32" ];
          "Win32_Networking_ActiveDirectory" = [ "Win32_Networking" ];
          "Win32_Networking_Clustering" = [ "Win32_Networking" ];
          "Win32_Networking_HttpServer" = [ "Win32_Networking" ];
          "Win32_Networking_Ldap" = [ "Win32_Networking" ];
          "Win32_Networking_WebSocket" = [ "Win32_Networking" ];
          "Win32_Networking_WinHttp" = [ "Win32_Networking" ];
          "Win32_Networking_WinInet" = [ "Win32_Networking" ];
          "Win32_Networking_WinSock" = [ "Win32_Networking" ];
          "Win32_Networking_WindowsWebServices" = [ "Win32_Networking" ];
          "Win32_Security" = [ "Win32" ];
          "Win32_Security_AppLocker" = [ "Win32_Security" ];
          "Win32_Security_Authentication" = [ "Win32_Security" ];
          "Win32_Security_Authentication_Identity" = [ "Win32_Security_Authentication" ];
          "Win32_Security_Authorization" = [ "Win32_Security" ];
          "Win32_Security_Credentials" = [ "Win32_Security" ];
          "Win32_Security_Cryptography" = [ "Win32_Security" ];
          "Win32_Security_Cryptography_Catalog" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_Certificates" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_Sip" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_Cryptography_UI" = [ "Win32_Security_Cryptography" ];
          "Win32_Security_DiagnosticDataQuery" = [ "Win32_Security" ];
          "Win32_Security_DirectoryServices" = [ "Win32_Security" ];
          "Win32_Security_EnterpriseData" = [ "Win32_Security" ];
          "Win32_Security_ExtensibleAuthenticationProtocol" = [ "Win32_Security" ];
          "Win32_Security_Isolation" = [ "Win32_Security" ];
          "Win32_Security_LicenseProtection" = [ "Win32_Security" ];
          "Win32_Security_NetworkAccessProtection" = [ "Win32_Security" ];
          "Win32_Security_WinTrust" = [ "Win32_Security" ];
          "Win32_Security_WinWlx" = [ "Win32_Security" ];
          "Win32_Storage" = [ "Win32" ];
          "Win32_Storage_Cabinets" = [ "Win32_Storage" ];
          "Win32_Storage_CloudFilters" = [ "Win32_Storage" ];
          "Win32_Storage_Compression" = [ "Win32_Storage" ];
          "Win32_Storage_DistributedFileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_FileHistory" = [ "Win32_Storage" ];
          "Win32_Storage_FileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_Imapi" = [ "Win32_Storage" ];
          "Win32_Storage_IndexServer" = [ "Win32_Storage" ];
          "Win32_Storage_InstallableFileSystems" = [ "Win32_Storage" ];
          "Win32_Storage_IscsiDisc" = [ "Win32_Storage" ];
          "Win32_Storage_Jet" = [ "Win32_Storage" ];
          "Win32_Storage_Nvme" = [ "Win32_Storage" ];
          "Win32_Storage_OfflineFiles" = [ "Win32_Storage" ];
          "Win32_Storage_OperationRecorder" = [ "Win32_Storage" ];
          "Win32_Storage_Packaging" = [ "Win32_Storage" ];
          "Win32_Storage_Packaging_Appx" = [ "Win32_Storage_Packaging" ];
          "Win32_Storage_ProjectedFileSystem" = [ "Win32_Storage" ];
          "Win32_Storage_StructuredStorage" = [ "Win32_Storage" ];
          "Win32_Storage_Vhd" = [ "Win32_Storage" ];
          "Win32_Storage_Xps" = [ "Win32_Storage" ];
          "Win32_System" = [ "Win32" ];
          "Win32_System_AddressBook" = [ "Win32_System" ];
          "Win32_System_Antimalware" = [ "Win32_System" ];
          "Win32_System_ApplicationInstallationAndServicing" = [ "Win32_System" ];
          "Win32_System_ApplicationVerifier" = [ "Win32_System" ];
          "Win32_System_ClrHosting" = [ "Win32_System" ];
          "Win32_System_Com" = [ "Win32_System" ];
          "Win32_System_Com_Marshal" = [ "Win32_System_Com" ];
          "Win32_System_Com_StructuredStorage" = [ "Win32_System_Com" ];
          "Win32_System_Com_Urlmon" = [ "Win32_System_Com" ];
          "Win32_System_ComponentServices" = [ "Win32_System" ];
          "Win32_System_Console" = [ "Win32_System" ];
          "Win32_System_CorrelationVector" = [ "Win32_System" ];
          "Win32_System_DataExchange" = [ "Win32_System" ];
          "Win32_System_DeploymentServices" = [ "Win32_System" ];
          "Win32_System_DeveloperLicensing" = [ "Win32_System" ];
          "Win32_System_Diagnostics" = [ "Win32_System" ];
          "Win32_System_Diagnostics_Ceip" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_Debug" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_Debug_Extensions" = [ "Win32_System_Diagnostics_Debug" ];
          "Win32_System_Diagnostics_Etw" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_ProcessSnapshotting" = [ "Win32_System_Diagnostics" ];
          "Win32_System_Diagnostics_ToolHelp" = [ "Win32_System_Diagnostics" ];
          "Win32_System_DistributedTransactionCoordinator" = [ "Win32_System" ];
          "Win32_System_Environment" = [ "Win32_System" ];
          "Win32_System_ErrorReporting" = [ "Win32_System" ];
          "Win32_System_EventCollector" = [ "Win32_System" ];
          "Win32_System_EventLog" = [ "Win32_System" ];
          "Win32_System_EventNotificationService" = [ "Win32_System" ];
          "Win32_System_GroupPolicy" = [ "Win32_System" ];
          "Win32_System_HostCompute" = [ "Win32_System" ];
          "Win32_System_HostComputeNetwork" = [ "Win32_System" ];
          "Win32_System_HostComputeSystem" = [ "Win32_System" ];
          "Win32_System_Hypervisor" = [ "Win32_System" ];
          "Win32_System_IO" = [ "Win32_System" ];
          "Win32_System_Iis" = [ "Win32_System" ];
          "Win32_System_Ioctl" = [ "Win32_System" ];
          "Win32_System_JobObjects" = [ "Win32_System" ];
          "Win32_System_Js" = [ "Win32_System" ];
          "Win32_System_Kernel" = [ "Win32_System" ];
          "Win32_System_LibraryLoader" = [ "Win32_System" ];
          "Win32_System_Mailslots
Download .txt
gitextract_j4pbtguo/

├── .envrc
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── bug_report.md
│   ├── dependabot.yml
│   └── workflows/
│       ├── static-docs.yml
│       ├── tests-nix-linux.yml
│       ├── tests-nix-macos.yml
│       └── update-flake-lock.yml
├── .gitignore
├── CHANGELOG.md
├── CLAUDE.md
├── CONTRIBUTING.md
├── LICENSE-APACHE
├── LICENSE-MIT
├── README.md
├── RELEASE.md
├── cargo.sh
├── crate2nix/
│   ├── Cargo.json
│   ├── Cargo.nix
│   ├── Cargo.toml
│   ├── crate-hashes.json
│   ├── default-json.nix
│   ├── default.nix
│   ├── deny.toml
│   ├── flake-module.nix
│   ├── mk-crate2nix.nix
│   ├── rustfmt.toml
│   ├── src/
│   │   ├── command.rs
│   │   ├── config.rs
│   │   ├── json_output.rs
│   │   ├── lib.rs
│   │   ├── lock.rs
│   │   ├── main.rs
│   │   ├── metadata.rs
│   │   ├── nix_build.rs
│   │   ├── prefetch.rs
│   │   ├── render.rs
│   │   ├── resolve.rs
│   │   ├── sources.rs
│   │   ├── test.rs
│   │   └── util.rs
│   ├── templates/
│   │   ├── Cargo-workspace.toml.tera
│   │   ├── Cargo.nix.tera
│   │   ├── crate2nix-sources.nix.tera
│   │   └── nix/
│   │       └── crate2nix/
│   │           ├── default.nix
│   │           └── tests/
│   │               ├── default.nix
│   │               ├── dependencyDerivations.nix
│   │               ├── dependencyFeatures.nix
│   │               ├── enableFeatures.nix
│   │               ├── expandFeatures.nix
│   │               ├── packageFeatures.nix
│   │               ├── run.nix
│   │               └── tests.nix
│   └── tests/
│       └── self_build_up_to_date.rs
├── crate2nix.sh
├── default.nix
├── docs/
│   ├── .gitignore
│   ├── .vscode/
│   │   ├── extensions.json
│   │   └── launch.json
│   ├── README.md
│   ├── astro.config.mjs
│   ├── flake-module.nix
│   ├── package.json
│   ├── src/
│   │   ├── content/
│   │   │   ├── config.ts
│   │   │   └── docs/
│   │   │       ├── 10_getting_started/
│   │   │       │   ├── 10_flake_template_new.md
│   │   │       │   ├── 20_installing_crate2nix.md
│   │   │       │   └── 30_running_crate2nix_without_install.md
│   │   │       ├── 20_generating/
│   │   │       │   ├── 10_generating.md
│   │   │       │   └── 20_auto_generating.mdx
│   │   │       ├── 30_building/
│   │   │       │   ├── 10_building_binaries.md
│   │   │       │   ├── 20_choosing_features.md
│   │   │       │   ├── 30_crateOverrides.md
│   │   │       │   └── 40_tests.md
│   │   │       ├── 35_toolchains/
│   │   │       │   ├── 10_custom_toolchains.md
│   │   │       │   └── 20_using_a_rust_overlay.md
│   │   │       ├── 40_external_sources/
│   │   │       │   ├── 10_building_fetched_sources.md
│   │   │       │   └── 20_generating_for_fetched_sources.md
│   │   │       ├── 50_contributing/
│   │   │       │   ├── 00_intro.md
│   │   │       │   ├── 05_code.md
│   │   │       │   ├── 10_docs.md
│   │   │       │   └── 90_release.md
│   │   │       ├── 70_design/
│   │   │       │   ├── 10_structure_and_phases.md
│   │   │       │   ├── 50_tools_nix.mdx
│   │   │       │   └── 90_inspiration.md
│   │   │       ├── 90_reference/
│   │   │       │   ├── 10_runtime_dependencies.md
│   │   │       │   ├── 20_known_restrictions.md
│   │   │       │   └── 90_CHANGELOG.md
│   │   │       └── index.mdx
│   │   └── env.d.ts
│   └── tsconfig.json
├── flake.nix
├── lib/
│   └── build-from-json.nix
├── nix/
│   ├── devshell/
│   │   └── flake-module.nix
│   ├── flakeInput.nix
│   ├── nix-test-runner/
│   │   ├── README.md
│   │   ├── default.nix
│   │   ├── package.nix
│   │   └── runTest.nix
│   ├── nixpkgs.nix
│   ├── perSystem-tools/
│   │   └── flake-module.nix
│   └── pre-commit/
│       └── flake-module.nix
├── nix-test.sh
├── nixpkgs-fmt.sh
├── out-of-tree-sources.md
├── regenerate_cargo_nix.sh
├── run_tests.sh
├── sample_projects/
│   ├── aliased-dependencies/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── hello/
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── src/
│   │       └── main.rs
│   ├── bin/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_required_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── bin/
│   │       │   └── bin_not_to_be_compiled.rs
│   │       └── main.rs
│   ├── bin_with_default_features/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── override-root-features.nix
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_dep_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_git_branch_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_git_submodule_dep/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── default-with-customBuildRustCrate.nix
│   │   ├── default-with-customBuildRustCrateForPkgs.nix
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_git_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_rerenamed_lib_dep/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── cdylib/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   └── test.nix
│   ├── cfg-test/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── snowflake.txt
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   ├── test.nix
│   │   └── tests/
│   │       └── echo_foo_test.rs
│   ├── codegen/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── conditional_features/
│   │   ├── Cargo.toml
│   │   ├── optional/
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── src/
│   │       └── main.rs
│   ├── cross_compile_build_dependencies/
│   │   ├── Cargo.toml
│   │   ├── alice/
│   │   │   ├── Cargo.toml
│   │   │   ├── bob/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       └── lib.rs
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── dependency_issue_65/
│   │   ├── Cargo.toml
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   ├── empty_cross/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   ├── default.nix
│   │   └── src/
│   │       └── lib.rs
│   ├── future_util_multi_version/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── futures_compat/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── integration_test/
│   │   ├── Cargo.json
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── main.rs
│   │   ├── test-json.nix
│   │   ├── test.nix
│   │   └── tests/
│   │       ├── hello
│   │       └── integration_test.rs
│   ├── lib/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib_and_bin/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       ├── lib.rs
│   │       └── main.rs
│   ├── multiple_bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── bin1.rs
│   │       ├── bin2.rs
│   │       └── main.rs
│   ├── nix_workspaces/
│   │   ├── .gitignore
│   │   ├── Cargo.toml
│   │   └── nix/
│   │       └── sources.nix
│   ├── numtest/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── numtest_new_cargo_lock/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── renamed_build_deps/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── main.rs
│   ├── renamed_dev_deps/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   ├── test.nix
│   │   └── tests.rs
│   ├── renaming/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── simple_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── sub_dir_crates/
│   │   ├── Cargo.nix
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   └── src/
│   │       └── main.rs
│   ├── test_flag_passing/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── lib.rs
│   │   │   └── main.rs
│   │   └── test.nix
│   ├── with_problematic_crates/
│   │   ├── Cargo.toml
│   │   ├── crate-hashes.json
│   │   ├── default.nix
│   │   └── src/
│   │       └── main.rs
│   └── workspace_with_nondefault_lib/
│       ├── Cargo.toml
│       └── crates/
│           ├── main/
│           │   ├── Cargo.toml
│           │   └── src/
│           │       └── main.rs
│           └── somelib/
│               ├── Cargo.toml
│               └── src/
│                   └── somelib.rs
├── sample_workspace/
│   ├── Cargo.toml
│   ├── bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_cond_lib_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_default_features/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── bin_with_lib_dep/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── crate-hashes.json
│   ├── lib/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── lib_and_bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── main.rs
│   └── with_tera/
│       ├── Cargo.toml
│       └── src/
│           └── main.rs
├── shell.nix
├── templates/
│   └── flake-binary/
│       ├── .envrc
│       ├── .gitignore
│       ├── Cargo.toml
│       ├── flake.nix
│       ├── nix/
│       │   ├── devshell/
│       │   │   └── flake-module.nix
│       │   └── rust-overlay/
│       │       └── flake-module.nix
│       ├── rust-toolchain.toml
│       └── src/
│           └── main.rs
├── tests.nix
└── tools.nix
Download .txt
SYMBOL INDEX (303 symbols across 71 files)

FILE: crate2nix/src/command.rs
  function run (line 16) | pub fn run(caption: &str, command: &mut std::process::Command) -> Result...
  function pass_through (line 62) | fn pass_through(mut read: impl Read + Send + 'static, sender: mpsc::Send...

FILE: crate2nix/src/config.rs
  type Config (line 39) | pub struct Config {
    method read_from_or_default (line 15) | pub fn read_from_or_default(path: &Path) -> Result<Config, Error> {
    method write_to (line 29) | pub fn write_to(&self, path: &Path) -> Result<(), Error> {
    method upsert_source (line 46) | pub fn upsert_source(
    method print_sources (line 58) | pub fn print_sources(&self) {
  type Source (line 87) | pub enum Source {
    method name (line 162) | pub fn name(&self) -> Option<&str> {
    method as_command (line 212) | pub fn as_command(&self, name: &str) -> String {
  type NixFile (line 132) | pub enum NixFile {
    method as_command (line 152) | pub fn as_command(&self) -> String {
  method fmt (line 142) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 186) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {

FILE: crate2nix/src/json_output.rs
  type ResolvedWorkspace (line 18) | pub struct ResolvedWorkspace {
  type ResolvedCrate (line 33) | pub struct ResolvedCrate {
  type DepInfo (line 88) | pub struct DepInfo {
  type SourceInfo (line 106) | pub enum SourceInfo {
  type BinTarget (line 125) | pub struct BinTarget {
  function normalize_name (line 133) | fn normalize_name(name: &str) -> String {
  function activated_optional_deps (line 146) | fn activated_optional_deps(
  function resolve_deps (line 208) | fn resolve_deps(deps: &[ResolvedDependency], activated: &HashSet<String>...
  function convert_source (line 233) | fn convert_source(source: &ResolvedSource, workspace_root: &str) -> Opti...
  function to_resolved_workspace (line 270) | pub fn to_resolved_workspace(build_info: &BuildInfo) -> ResolvedWorkspace {
  function dep_syntax_activates_optional_dep (line 384) | fn dep_syntax_activates_optional_dep() {
  function renamed_optional_dep_activated_by_effective_name (line 404) | fn renamed_optional_dep_activated_by_effective_name() {
  function only_referenced_rename_activated_among_same_package (line 426) | fn only_referenced_rename_activated_among_same_package() {
  function platform_deps_preserved_with_target_string (line 472) | fn platform_deps_preserved_with_target_string() {

FILE: crate2nix/src/lib.rs
  type BuildInfo (line 48) | pub struct BuildInfo {
    method for_config (line 69) | pub fn for_config(info: &GenerateInfo, config: &GenerateConfig) -> Res...
    method prune_unneeded_crates (line 100) | fn prune_unneeded_crates(&mut self) {
    method new (line 130) | fn new(
  function cargo_metadata (line 172) | fn cargo_metadata(config: &GenerateConfig, cargo_toml: &Path) -> Result<...
  function prefetch_and_fill_crates_sha256 (line 187) | fn prefetch_and_fill_crates_sha256(
  function prefetch_and_fill_registries (line 228) | fn prefetch_and_fill_registries(
  function extract_hashes_from_lockfile (line 238) | fn extract_hashes_from_lockfile(
  type GenerateInfo (line 294) | pub struct GenerateInfo {
  method default (line 302) | fn default() -> GenerateInfo {
  type GenerateConfig (line 312) | pub struct GenerateConfig {

FILE: crate2nix/src/lock.rs
  type EncodableResolve (line 90) | pub struct EncodableResolve {
    method load_lock_file (line 14) | pub fn load_lock_file(path: &Path) -> Result<EncodableResolve, Error> {
    method load_lock_string (line 20) | pub fn load_lock_string(path: &Path, config: &str) -> Result<Encodable...
    method get_hashes_by_package_id (line 30) | pub fn get_hashes_by_package_id(
  type EncodableDependency (line 98) | pub struct EncodableDependency {
  type EncodablePackageId (line 108) | pub struct EncodablePackageId {
    method fmt (line 115) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    method serialize (line 154) | fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
    method deserialize (line 163) | fn deserialize<D>(d: D) -> Result<EncodablePackageId, D::Error>
  type Err (line 128) | type Err = anyhow::Error;
  method from_str (line 130) | fn from_str(s: &str) -> Result<EncodablePackageId, Error> {

FILE: crate2nix/src/main.rs
  constant DEFAULT_OUTPUT (line 16) | const DEFAULT_OUTPUT: &str = "./Cargo.nix";
  constant DEFAULT_JSON_OUTPUT (line 17) | const DEFAULT_JSON_OUTPUT: &str = "./Cargo.json";
  type Opt (line 24) | pub enum Opt {
  type SourceCommands (line 175) | pub enum SourceCommands {
    method execute (line 204) | pub fn execute(self, crate2nix_json: &Path) -> Result<(), Error> {
  type SourceAddingCommands (line 246) | pub enum SourceAddingCommands {
    method execute (line 329) | pub fn execute(self, crate2nix_json: &Path) -> Result<(), Error> {
  function check_generated_json (line 377) | fn check_generated_json(path: impl AsRef<Path>) -> Result<(), Error> {
  function main (line 393) | fn main() -> anyhow::Result<()> {

FILE: crate2nix/src/metadata.rs
  type MergedMetadata (line 23) | pub struct MergedMetadata {
    method merge (line 33) | pub fn merge(metadatas: Vec<Metadata>) -> Result<MergedMetadata> {
  type IndexedMetadata (line 87) | pub struct IndexedMetadata {
    method new_from (line 98) | pub fn new_from(metadata: Metadata) -> Result<IndexedMetadata, Error> {
    method new_from_merged (line 103) | pub fn new_from_merged(
    method root_package (line 148) | pub fn root_package(&self) -> Option<&Package> {
  type PackageIdShortener (line 158) | pub struct PackageIdShortener {
    method new (line 173) | fn new<'a>(all_packages: impl Iterator<Item = &'a Package>) -> Package...
    method lengthen_ref (line 220) | pub fn lengthen_ref<'a>(&'a self, package_id: &'a PackageId) -> &'a Pa...
    method shorten_ref (line 224) | pub fn shorten_ref<'a>(&'a self, package_id: &'a PackageId) -> &'a Pac...
    method shorten (line 228) | pub fn shorten(&self, package_id: &PackageId) -> PackageId {
    method shorten_owned (line 235) | pub fn shorten_owned(&self, package_id: PackageId) -> PackageId {
    method shorten_in_package (line 242) | fn shorten_in_package(&self, package: &Package) -> Package {
    method shorten_in_node (line 248) | fn shorten_in_node(&self, node: &Node) -> Node {
    method shorten_in_node_dep (line 264) | fn shorten_in_node_dep(&self, nod_dep: &NodeDep) -> NodeDep {

FILE: crate2nix/src/nix_build.rs
  function nix_build (line 13) | pub fn nix_build(
  function dump_with_lines (line 52) | pub fn dump_with_lines(file_path: impl AsRef<Path>) -> Result<(), Error> {
  function run_cmd (line 65) | pub fn run_cmd(cmd_path: impl AsRef<Path>) -> Result<String, Error> {

FILE: crate2nix/src/prefetch.rs
  function parse_package_id_components (line 21) | fn parse_package_id_components(repr: &str) -> Option<(String, String)> {
  type HashSource (line 40) | enum HashSource {
  type HashWithSource (line 46) | struct HashWithSource {
  type SourcePrefetchBundle (line 53) | struct SourcePrefetchBundle<'a> {
  function prefetch (line 62) | pub fn prefetch(
  function prefetch_registries (line 209) | pub fn prefetch_registries(
  function get_command_output (line 266) | fn get_command_output(cmd: &str, args: &[&str]) -> Result<String, Error> {
  type PrefetchableSource (line 288) | pub trait PrefetchableSource: ToString {
    method needs_prefetch (line 291) | fn needs_prefetch(&self) -> bool;
    method prefetch (line 293) | fn prefetch(&self) -> Result<String, Error>;
    method needs_prefetch (line 308) | fn needs_prefetch(&self) -> bool {
    method prefetch (line 314) | fn prefetch(&self) -> Result<String, Error> {
    method needs_prefetch (line 322) | fn needs_prefetch(&self) -> bool {
    method prefetch (line 326) | fn prefetch(&self) -> Result<String, Error> {
    method needs_prefetch (line 337) | fn needs_prefetch(&self) -> bool {
    method prefetch (line 341) | fn prefetch(&self) -> Result<String, Error> {
    method needs_prefetch (line 349) | fn needs_prefetch(&self) -> bool {
    method prefetch (line 353) | fn prefetch(&self) -> Result<String, Error> {
  method inner_prefetchable (line 297) | fn inner_prefetchable(&self) -> Option<&dyn PrefetchableSource> {
  function old_format_crates_io (line 390) | fn old_format_crates_io() {
  function old_format_git (line 399) | fn old_format_git() {
  function new_format_with_name (line 408) | fn new_format_with_name() {
  function new_format_registry (line 417) | fn new_format_registry() {
  function new_format_without_name (line 426) | fn new_format_without_name() {
  function old_format_short_no_source (line 433) | fn old_format_short_no_source() {
  function single_token_returns_none (line 442) | fn single_token_returns_none() {
  function new_format_version_with_build_metadata (line 448) | fn new_format_version_with_build_metadata() {

FILE: crate2nix/src/render.rs
  constant CARGO_NIX (line 30) | pub const CARGO_NIX: Template<BuildInfo> = template!("Cargo.nix.tera");
  constant DEFAULT_NIX (line 33) | const DEFAULT_NIX: Template<()> = template!("nix/crate2nix/default.nix");
  constant SOURCES_NIX (line 36) | pub const SOURCES_NIX: Template<GenerateInfo> = template!("crate2nix-sou...
  type CargoTomlForWorkspace (line 43) | pub struct CargoTomlForWorkspace {
  type Template (line 55) | pub struct Template<C: Serialize + Debug> {
  function render (line 66) | pub fn render(&self, context: &C) -> Result<String, Error> {
  function write_to_file (line 85) | pub fn write_to_file(&self, path: impl AsRef<Path>, context: &C) -> Resu...
  function check_generated_by_crate2nix (line 98) | pub fn check_generated_by_crate2nix(path: impl AsRef<Path>) -> Result<()...
  type AbstractTemplate (line 117) | trait AbstractTemplate {
    method template (line 118) | fn template(&self) -> &'static str;
    method template_content (line 120) | fn template_content(&self) -> &'static str;
    method template (line 124) | fn template(&self) -> &'static str {
    method template_content (line 129) | fn template_content(&self) -> &'static str {
  constant TEMPLATES (line 134) | const TEMPLATES: &[&'static dyn AbstractTemplate] = &[&CARGO_NIX, &DEFAU...
  function create_tera (line 136) | fn create_tera() -> Tera {
  function cfg_to_nix_expr_filter (line 170) | fn cfg_to_nix_expr_filter(
  function cfg_to_nix_expr (line 199) | fn cfg_to_nix_expr(cfg: &CfgExpr) -> String {
  function test_render_cfg_to_nix_expr (line 261) | fn test_render_cfg_to_nix_expr() {
  function escape_nix_string (line 315) | pub fn escape_nix_string(raw_string: &str) -> String {

FILE: crate2nix/src/resolve.rs
  type CrateDerivation (line 30) | pub struct CrateDerivation {
    method resolve (line 59) | pub fn resolve(
  function minimal_resolve (line 197) | pub fn minimal_resolve() {
  function configured_source_is_used_instead_of_local_directory (line 242) | pub fn configured_source_is_used_instead_of_local_directory() {
  function double_crate_with_rename (line 298) | pub fn double_crate_with_rename() {
  type BuildTarget (line 336) | pub struct BuildTarget {
    method new (line 347) | pub fn new(target: &Target, package_path: impl AsRef<Path>) -> Result<...
  type ResolvedSource (line 362) | pub enum ResolvedSource {
    method from (line 371) | fn from(source: crate::config::Source) -> Self {
    method new (line 443) | pub fn new(
    method git_or_local_directory (line 480) | fn git_or_local_directory(
    method fallback_to_local_directory (line 522) | fn fallback_to_local_directory(
    method relative_directory (line 545) | fn relative_directory(
    method sha256 (line 590) | pub fn sha256(&self) -> Option<&String> {
    method with_sha256 (line 599) | pub fn with_sha256(&self, sha256: String) -> Self {
    method without_sha256 (line 617) | pub fn without_sha256(&self) -> Self {
  type CratesIoSource (line 407) | pub struct CratesIoSource {
    method url (line 649) | pub fn url(&self) -> String {
  type RegistrySource (line 414) | pub struct RegistrySource {
    method url (line 661) | pub fn url(&self) -> String {
  type GitSource (line 422) | pub struct GitSource {
  type LocalDirectorySource (line 430) | pub struct LocalDirectorySource {
  type NixSource (line 435) | pub struct NixSource {
  constant GIT_SOURCE_PREFIX (line 440) | const GIT_SOURCE_PREFIX: &str = "git+";
  method fmt (line 637) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 667) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 673) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 679) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 690) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  method fmt (line 696) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
  function normalize_package_name (line 706) | fn normalize_package_name(package_name: &str) -> String {
  type ResolvedDependencies (line 717) | struct ResolvedDependencies<'a> {
  function new (line 724) | fn new(
  function filtered_dependencies (line 758) | fn filtered_dependencies(
  function sources_match (line 849) | fn sources_match(
  function serialize_deserialize (line 883) | fn serialize_deserialize<I: Serialize, O>(input: &I) -> O
  function resolved_dependencies_new_with_double_crate (line 893) | pub fn resolved_dependencies_new_with_double_crate() {
  function resolved_dependencies_filtered_dependencies_with_double_crate (line 942) | pub fn resolved_dependencies_filtered_dependencies_with_double_crate() {
  type ResolvedDependency (line 978) | pub struct ResolvedDependency {

FILE: crate2nix/src/sources.rs
  function crates_io_source (line 18) | pub fn crates_io_source(name: String, version: Version) -> Result<config...
  function registry_source (line 37) | pub fn registry_source(
  function git_io_source (line 62) | pub fn git_io_source(url: Url, rev: String) -> Result<config::Source, Er...
  type FetchedSources (line 78) | pub struct FetchedSources<'a> {
  constant FETCHED_SOURCES (line 82) | const FETCHED_SOURCES: &str = "crate2nix-sources";
  function new (line 86) | pub fn new<P: Into<Cow<'a, Path>>>(path: P) -> FetchedSources<'a> {
  function project_dir (line 92) | fn project_dir(&self) -> PathBuf {
  function sources_nix (line 99) | fn sources_nix(&self) -> PathBuf {
  function regenerate_sources_nix (line 104) | pub fn regenerate_sources_nix(&self) -> Result<(), Error> {
  function fetch (line 131) | pub fn fetch(&self) -> Result<PathBuf, Error> {
  function get_cargo_tomls (line 148) | pub fn get_cargo_tomls(&self) -> Result<Vec<PathBuf>, Error> {
  function download_and_link_out_of_tree_sources (line 217) | fn download_and_link_out_of_tree_sources(

FILE: crate2nix/src/test.rs
  function generate_config (line 10) | pub fn generate_config() -> crate::GenerateConfig {
  type MetadataEnv (line 24) | pub struct MetadataEnv {
    method temp_dir (line 51) | pub fn temp_dir(&mut self) -> PathBuf {
    method mut_metadata (line 58) | fn mut_metadata(&mut self) -> &mut Metadata {
    method mut_resolve (line 62) | fn mut_resolve(&mut self) -> &mut Resolve {
    method add_package_and_node (line 66) | pub fn add_package_and_node<'a>(&'a mut self, name: &str) -> PackageAn...
    method metadata (line 81) | pub fn metadata(&self) -> Metadata {
    method indexed_metadata (line 85) | pub fn indexed_metadata(&self) -> crate::IndexedMetadata {
    method close (line 89) | pub fn close(&mut self) {
  method drop (line 31) | fn drop(&mut self) {
  method default (line 42) | fn default() -> Self {
  type PackageAndNode (line 97) | pub struct PackageAndNode<'a> {
  function make_root (line 104) | pub fn make_root(&mut self) -> &mut Self {
  function get_mut_package (line 114) | pub fn get_mut_package(&mut self) -> &mut Package {
  function get_package (line 117) | pub fn get_package(&self) -> &Package {
  function update_package (line 120) | pub fn update_package(&mut self, f: impl FnOnce(&mut Package)) -> &mut S...
  function get_mut_node (line 124) | pub fn get_mut_node(&mut self) -> &mut Node {
  function get_node (line 127) | pub fn get_node(&mut self) -> &Node {
  function update_node (line 130) | pub fn update_node(&mut self, f: impl FnOnce(&mut Node)) -> &mut Self {
  function version_and_package_id (line 134) | pub fn version_and_package_id(&mut self, version: &str) -> &mut Self {
  function add_dependency (line 140) | pub fn add_dependency<'b>(&'b mut self, name: &str) -> PackageAndNodeDep...
  type PackageAndNodeDep (line 173) | pub struct PackageAndNodeDep<'a> {
  function update_package_and_node (line 182) | pub fn update_package_and_node(&mut self, f: impl FnOnce(&mut PackageAnd...
  function get_package (line 186) | pub fn get_package(&self) -> &Package {
  function update_package (line 189) | pub fn update_package(&mut self, f: impl FnOnce(&mut Package)) -> &mut S...
  function update_node (line 193) | pub fn update_node(&mut self, f: impl FnOnce(&mut Node)) -> &mut Self {
  function get_mut_parent_package (line 197) | fn get_mut_parent_package(&mut self) -> &mut Package {
  function get_mut_package_dep (line 201) | pub fn get_mut_package_dep(&mut self) -> &mut Dependency {
  function update_package_dep (line 205) | pub fn update_package_dep(&mut self, f: impl FnOnce(&mut Dependency)) ->...
  function get_mut_parent_node (line 209) | fn get_mut_parent_node(&mut self) -> &mut Node {
  function get_mut_node_dep (line 213) | pub fn get_mut_node_dep(&mut self) -> &mut NodeDep {
  function update_node_dep (line 217) | pub fn update_node_dep(&mut self, f: impl FnOnce(&mut NodeDep)) -> &mut ...
  function version_and_package_id (line 221) | pub fn version_and_package_id(&mut self, version: &str) -> &mut Self {
  type TestPackage (line 241) | pub struct TestPackage {
    method close (line 247) | pub fn close(self) -> Result<(), std::io::Error> {
    type Target (line 253) | type Target = Package;
    method deref (line 255) | fn deref(&self) -> &Self::Target {
    method deref_mut (line 261) | fn deref_mut(&mut self) -> &mut Self::Target {
  function from_value_unwrap (line 266) | fn from_value_unwrap<T>(json: impl Fn() -> serde_json::Value) -> T
  function crates_io_package_id (line 291) | pub fn crates_io_package_id(name: &str, version: &str) -> PackageId {
  function package (line 302) | pub fn package(name: &str, version: &str) -> TestPackage {
  function bin_target (line 323) | pub fn bin_target(package: &TestPackage, file: &str) -> cargo_metadata::...
  function lib_target (line 341) | pub fn lib_target(package: &TestPackage, file: &str) -> cargo_metadata::...
  function bin_package (line 361) | pub fn bin_package(name: &str, version: &str) -> TestPackage {
  function lib_package (line 369) | pub fn lib_package(name: &str, version: &str) -> TestPackage {
  function dependency_from_package (line 375) | pub fn dependency_from_package(package: &Package) -> Dependency {
  function test_package (line 393) | pub fn test_package() {
  function node (line 397) | pub fn node(package_id: &str) -> Node {
  function node_dep (line 407) | pub fn node_dep(name: &str, package_id: &PackageId) -> NodeDep {
  function node_with_deps (line 421) | pub fn node_with_deps(package_id: &str, deps: Vec<NodeDep>) -> Node {
  function test_valid_node (line 429) | pub fn test_valid_node() {
  function empty_resolve (line 433) | pub fn empty_resolve() -> Resolve {
  function test_valid_empty_resolve (line 440) | pub fn test_valid_empty_resolve() {
  function empty_metadata (line 444) | pub fn empty_metadata() -> Metadata {
  function test_valid_empty_metadata (line 455) | pub fn test_valid_empty_metadata() {

FILE: crate2nix/src/util.rs
  function find_duplicates (line 13) | pub fn find_duplicates<'a, T: Ord>(source: impl Iterator<Item = &'a T>) ...

FILE: crate2nix/tests/self_build_up_to_date.rs
  function self_up_to_date (line 12) | fn self_up_to_date() {
  function pregenerated_up_to_date (line 60) | fn pregenerated_up_to_date() {
  function assert_up_to_date (line 77) | fn assert_up_to_date(project_dir: &Path) {
  type TestConfig (line 132) | struct TestConfig {
  function get_test_configs (line 138) | fn get_test_configs() -> Result<Vec<TestConfig>, Error> {

FILE: sample_projects/aliased-dependencies/hello/src/lib.rs
  function greet (line 1) | pub fn greet() -> String {

FILE: sample_projects/aliased-dependencies/src/main.rs
  function main (line 1) | pub fn main() {

FILE: sample_projects/bin/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_required_features/src/bin/bin_not_to_be_compiled.rs
  function main (line 1) | pub fn main() {

FILE: sample_projects/bin_required_features/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_with_default_features/src/main.rs
  function main (line 4) | fn main() {

FILE: sample_projects/bin_with_dep_features/src/main.rs
  function main (line 4) | fn main() {

FILE: sample_projects/bin_with_git_branch_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_with_git_submodule_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_with_lib_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_with_lib_git_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/bin_with_rerenamed_lib_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/cdylib/src/lib.rs
  function some_function (line 2) | pub extern "C" fn some_function() {

FILE: sample_projects/cfg-test/src/lib.rs
  function lib_test (line 4) | fn lib_test() {

FILE: sample_projects/cfg-test/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/cfg-test/tests/echo_foo_test.rs
  function echo_foo_test (line 2) | fn echo_foo_test() {
  function in_source_dir (line 7) | fn in_source_dir() {
  function exec_cowsay (line 13) | fn exec_cowsay() {

FILE: sample_projects/codegen/build.rs
  function main (line 9) | fn main() {

FILE: sample_projects/codegen/src/main.rs
  function main (line 5) | fn main() {

FILE: sample_projects/conditional_features/optional/src/lib.rs
  function maybe_foo (line 4) | pub fn maybe_foo() -> &'static str {

FILE: sample_projects/conditional_features/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/cross_compile_build_dependencies/src/main.rs
  function main (line 1) | fn main() {}

FILE: sample_projects/dependency_issue_65/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/empty_cross/build.rs
  function main (line 3) | fn main() {

FILE: sample_projects/future_util_multi_version/src/main.rs
  type StupidFuture01 (line 4) | struct StupidFuture01;
    type Item (line 7) | type Item = ();
    type Error (line 8) | type Error = String;
    method poll (line 10) | fn poll(&mut self) -> futures01::Poll<Self::Item, Self::Error> {
  type StupidFuture (line 15) | struct StupidFuture;
    type Output (line 18) | type Output = ();
    method poll (line 20) | fn poll(self: Pin<&mut Self>, _: &mut Context<'_>) -> Poll<Self::Outpu...
  function main (line 25) | fn main() {

FILE: sample_projects/futures_compat/src/main.rs
  constant CRATE_NAME (line 1) | const CRATE_NAME: &'static str = env!("CARGO_PKG_NAME");
  function main (line 3) | fn main() {

FILE: sample_projects/integration_test/src/main.rs
  function main (line 2) | fn main() {

FILE: sample_projects/integration_test/tests/integration_test.rs
  function read_source_file (line 4) | fn read_source_file() {
  function write_output_file (line 16) | fn write_output_file() {

FILE: sample_projects/lib/src/lib.rs
  function hello_world (line 1) | pub fn hello_world(name: &str) {

FILE: sample_projects/lib_and_bin/src/lib.rs
  function hello_world (line 1) | pub fn hello_world() {

FILE: sample_projects/lib_and_bin/src/main.rs
  function main (line 3) | fn main() {

FILE: sample_projects/multiple_bin/src/bin1.rs
  function main (line 1) | fn main() {

FILE: sample_projects/multiple_bin/src/bin2.rs
  function main (line 1) | fn main() {

FILE: sample_projects/multiple_bin/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/numtest/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/numtest_new_cargo_lock/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/renamed_build_deps/build.rs
  function main (line 3) | fn main() {}

FILE: sample_projects/renamed_build_deps/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/renamed_dev_deps/src/lib.rs
  function ran_a_test (line 9) | fn ran_a_test() {

FILE: sample_projects/renamed_dev_deps/tests.rs
  function ran_a_test (line 6) | fn ran_a_test() {

FILE: sample_projects/renaming/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/simple_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/sub_dir_crates/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/test_flag_passing/src/lib.rs
  function this_must_be_skipped (line 2) | fn this_must_be_skipped() {
  function this_must_run (line 7) | fn this_must_run() {

FILE: sample_projects/test_flag_passing/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/with_problematic_crates/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/workspace_with_nondefault_lib/crates/main/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_projects/workspace_with_nondefault_lib/crates/somelib/src/somelib.rs
  function get_info (line 1) | pub fn get_info() -> &'static str {

FILE: sample_workspace/bin/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_workspace/bin_with_cond_lib_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_workspace/bin_with_default_features/src/main.rs
  function main (line 4) | fn main() {

FILE: sample_workspace/bin_with_lib_dep/src/main.rs
  function main (line 1) | fn main() {

FILE: sample_workspace/lib/src/lib.rs
  function hello_world (line 1) | pub fn hello_world(name: &str) {

FILE: sample_workspace/lib_and_bin/src/lib.rs
  function hello_world (line 1) | pub fn hello_world() {

FILE: sample_workspace/lib_and_bin/src/main.rs
  function main (line 3) | fn main() {

FILE: sample_workspace/with_tera/src/main.rs
  function main (line 1) | fn main() {

FILE: templates/flake-binary/src/main.rs
  function main (line 3) | fn main() {
Condensed preview — 260 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (863K chars).
[
  {
    "path": ".envrc",
    "chars": 510,
    "preview": "#!/usr/bin/env bash\n# ^ make editor happy\n\n#\n# Use https://direnv.net/ to automatically load the dev shell.\n#\n\nif ! has "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1115,
    "preview": "---\nname: Bug Report\nabout: Report a bug with crate2nix\ntitle: ''\nlabels: bug\nassignees: ''\n---\n\n## Description\n\nA clear"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 387,
    "preview": "# Set update schedule for GitHub Actions\n\nversion: 2\nupdates:\n\n  - package-ecosystem: \"github-actions\"\n    directory: \"/"
  },
  {
    "path": ".github/workflows/static-docs.yml",
    "chars": 1514,
    "preview": "# Simple workflow for deploying static content to GitHub Pages\nname: Deploy static content to Pages\n\non:\n  # Runs on pus"
  },
  {
    "path": ".github/workflows/tests-nix-linux.yml",
    "chars": 706,
    "preview": "name: \"tests-nix-linux\"\non:\n  pull_request:\n  push:\njobs:\n  tests:\n    strategy:\n      matrix:\n        platform:\n       "
  },
  {
    "path": ".github/workflows/tests-nix-macos.yml",
    "chars": 660,
    "preview": "name: \"tests-nix-macos\"\non:\n  pull_request:\n  push:\njobs:\n  tests:\n    strategy:\n      matrix:\n        platform:\n       "
  },
  {
    "path": ".github/workflows/update-flake-lock.yml",
    "chars": 535,
    "preview": "name: update-flake-lock\non:\n  workflow_dispatch: # allows manual triggering\n  schedule:\n    - cron: '35 12 * * 3'\n\njobs:"
  },
  {
    "path": ".gitignore",
    "chars": 318,
    "preview": "target\n**/*.rs.bk\n.idea\n*.iml\n/result*\n/sample_projects/*/result\ncrate2nix/result*\n/*.json\n*.log\n*~\n\n# cachix tmp file\ns"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 100,
    "preview": "# CHANGELOG\n\nSee\n[CHANGELOG](https://nix-community.github.io/crate2nix/90_reference/90_changelog/).\n"
  },
  {
    "path": "CLAUDE.md",
    "chars": 4199,
    "preview": "# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working\nwith code in this repository.\n\n## "
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 105,
    "preview": "# Contributing\n\nSee\n[Contributing](https://nix-community.github.io/crate2nix/50_contributing/00_intro/).\n"
  },
  {
    "path": "LICENSE-APACHE",
    "chars": 10860,
    "preview": "                              Apache License\n                        Version 2.0, January 2004\n                     http"
  },
  {
    "path": "LICENSE-MIT",
    "chars": 1023,
    "preview": "Permission is hereby granted, free of charge, to any\nperson obtaining a copy of this software and associated\ndocumentati"
  },
  {
    "path": "README.md",
    "chars": 4877,
    "preview": "# crate2nix\n\n[![tests-nix-linux](https://github.com/nix-community/crate2nix/actions/workflows/tests-nix-linux.yml/badge."
  },
  {
    "path": "RELEASE.md",
    "chars": 601,
    "preview": "# Creating a release\n\nRelease checklist for crate2nix maintainers.\n\n- [ ] Update flake dependencies: `nix flake update`\n"
  },
  {
    "path": "cargo.sh",
    "chars": 375,
    "preview": "#!/usr/bin/env bash\n\n# Executes cargo from the pinned nixpkgs\n#\n# Example: ./cargo.sh test\n\nset -Eeuo pipefail\n\ntop=\"$(d"
  },
  {
    "path": "crate2nix/Cargo.json",
    "chars": 72120,
    "preview": "{\n  \"generator\": \"@generated by crate2nix\",\n  \"root\": \"crate2nix\",\n  \"workspaceMembers\": {\n    \"crate2nix\": \"crate2nix\"\n"
  },
  {
    "path": "crate2nix/Cargo.nix",
    "chars": 132449,
    "preview": "\n# This file was @generated by crate2nix 0.15.0 with the command:\n#   \"generate\" \"-n\" \"../nix/nixpkgs.nix\" \"-f\" \"./crate"
  },
  {
    "path": "crate2nix/Cargo.toml",
    "chars": 1034,
    "preview": "[package]\nname = \"crate2nix\"\nversion = \"0.15.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2021\"\nlicen"
  },
  {
    "path": "crate2nix/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "crate2nix/default-json.nix",
    "chars": 715,
    "preview": "# Build crate2nix from the pre-resolved JSON output, dogfooding the JSON path.\n{ pkgs ? (\n    import (builtins.fetchTree"
  },
  {
    "path": "crate2nix/default.nix",
    "chars": 1592,
    "preview": "# Provided by callPackage or also directly usable via nix-build with defaults.\n{ pkgs ? (\n    import (builtins.fetchTree"
  },
  {
    "path": "crate2nix/deny.toml",
    "chars": 8650,
    "preview": "# This template contains all of the possible sections and their default values\n\n# Note that all fields that take a lint "
  },
  {
    "path": "crate2nix/flake-module.nix",
    "chars": 1671,
    "preview": "{ self, inputs, lib, ... }: {\n  flake.overlays.default = final: prev: {\n    crate2nix = prev.callPackage ./default.nix {"
  },
  {
    "path": "crate2nix/mk-crate2nix.nix",
    "chars": 2033,
    "preview": "# Shared wrapper logic for the crate2nix binary.\n# Takes the raw rootCrate derivation and wraps it with PATH, completion"
  },
  {
    "path": "crate2nix/rustfmt.toml",
    "chars": 62,
    "preview": "edition = \"2018\"\nreorder_imports = true\n# merge_imports = true"
  },
  {
    "path": "crate2nix/src/command.rs",
    "chars": 2011,
    "preview": "//! Utilities for dealing with spawned commands.\n\nuse anyhow::{bail, format_err, Error};\nuse std::process::{Child, Stdio"
  },
  {
    "path": "crate2nix/src/config.rs",
    "chars": 7345,
    "preview": "//! Managing the `crate2nix.json` config.\n\nuse anyhow::{Context, Error};\nuse serde::{Deserialize, Serialize};\nuse std::{"
  },
  {
    "path": "crate2nix/src/json_output.rs",
    "chars": 18786,
    "preview": "//! Pre-resolved JSON output format.\n//!\n//! Converts BuildInfo to a flat JSON structure with dependencies already\n//! f"
  },
  {
    "path": "crate2nix/src/lib.rs",
    "chars": 11017,
    "preview": "//! # crate2nix\n//!\n//! Internal library for the crate2nix binary. This is not meant to be used separately, I just enjoy"
  },
  {
    "path": "crate2nix/src/lock.rs",
    "chars": 5150,
    "preview": "//! Code for extracting hashes and more from Cargo.lock\n\nuse anyhow::{format_err, Error};\nuse cargo_metadata::PackageId;"
  },
  {
    "path": "crate2nix/src/main.rs",
    "chars": 18503,
    "preview": "use std::path::{Path, PathBuf};\nuse structopt::clap::ArgGroup;\nuse structopt::StructOpt;\n\nuse anyhow::format_err;\nuse an"
  },
  {
    "path": "crate2nix/src/metadata.rs",
    "chars": 8811,
    "preview": "//! Indexing cargo metadata.\n\nuse std::collections::{BTreeMap, HashMap, HashSet};\n\nuse anyhow::format_err;\nuse anyhow::{"
  },
  {
    "path": "crate2nix/src/nix_build.rs",
    "chars": 2531,
    "preview": "//! Code for invoking `nix-build`.\n\nuse std::io::BufRead;\nuse std::io::Write;\nuse std::path::Path;\nuse std::process::Com"
  },
  {
    "path": "crate2nix/src/prefetch.rs",
    "chars": 15424,
    "preview": "//! Utilities for calling `nix-prefetch` on packages.\n\nuse std::io::Write;\nuse std::process::Command;\n\nuse crate::metada"
  },
  {
    "path": "crate2nix/src/render.rs",
    "chars": 10938,
    "preview": "//! \"Render\" files using tera templates.\n\nuse std::io::{BufRead, Write};\nuse std::path::Path;\nuse std::{fs::File, iter};"
  },
  {
    "path": "crate2nix/src/resolve.rs",
    "chars": 34320,
    "preview": "//! Resolve dependencies and other data for CrateDerivation.\n\nuse anyhow::format_err;\nuse anyhow::Error;\nuse cargo_metad"
  },
  {
    "path": "crate2nix/src/sources.rs",
    "chars": 7665,
    "preview": "//! Manage nix-generated Cargo workspaces.\n\nuse crate::{\n    config,\n    prefetch::PrefetchableSource,\n    resolve::{Cra"
  },
  {
    "path": "crate2nix/src/test.rs",
    "chars": 13057,
    "preview": "//! Constructor functions for test data.\n\n#![allow(missing_docs)]\n\nuse cargo_metadata::{Dependency, Metadata, Node, Node"
  },
  {
    "path": "crate2nix/src/util.rs",
    "chars": 704,
    "preview": "//! Homeless code. Usually abstract and algorithmic.\n\nuse std::collections::BTreeSet;\n\n/// Return all occurrences of eac"
  },
  {
    "path": "crate2nix/templates/Cargo-workspace.toml.tera",
    "chars": 436,
    "preview": "{# Argument: struct crate2nix::BuildInfo\n   Rendered via https://tera.netlify.com\n#}\n# This file was @generated by crate"
  },
  {
    "path": "crate2nix/templates/Cargo.nix.tera",
    "chars": 11611,
    "preview": "{# Argument: struct crate2nix::BuildInfo\n   Rendered via https://tera.netlify.com\n#}\n# This file was @generated by crate"
  },
  {
    "path": "crate2nix/templates/crate2nix-sources.nix.tera",
    "chars": 3882,
    "preview": "{# Argument: struct crate2nix::GenerateInfo\n   Rendered via https://tera.netlify.com\n-#}\n# Support functions to create a"
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/default.nix",
    "chars": 26181,
    "preview": "#\n# crate2nix/default.nix (excerpt start)\n#{#\n{ pkgs\n, fetchurl\n, lib\n, stdenv\n, buildRustCrate\n, buildRustCrateForPkgs "
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/default.nix",
    "chars": 92,
    "preview": "let\n  pkgs = import ../../../../../nix/nixpkgs.nix { };\nin\npkgs.callPackage ./tests.nix { }\n"
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/dependencyDerivations.nix",
    "chars": 1239,
    "preview": "{ lib, crate2nix, stdenv }:\nlet\n  fakeCrates = {\n    \"pkg_id1\" = \"pkg_id1\";\n    \"pkg_id2\" = \"pkg_id2\";\n    \"pkg_id3\" = \""
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/dependencyFeatures.nix",
    "chars": 2198,
    "preview": "{ lib, crate2nix }:\nlet\n  dependencies = [\n    {\n      name = \"tls\";\n      packageId = \"pkgid_tls\";\n    }\n    {\n      na"
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/enableFeatures.nix",
    "chars": 1567,
    "preview": "{ lib, crate2nix }:\nlet\n  exampleDependency = {\n    name = \"dep\";\n    packageId = \"pkgid_dep\";\n    optional = true;\n  };"
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/expandFeatures.nix",
    "chars": 870,
    "preview": "{ lib, crate2nix }:\nlet\n  featureMap = {\n    default = [ \"tls\" ];\n    resolvable = [ \"feature1\" \"tls/extra_feature\" ];\n "
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/packageFeatures.nix",
    "chars": 3334,
    "preview": "{ lib, crate2nix, stdenv }:\nlet\n  crateConfigs = {\n    \"pkg_root\" = {\n      crateName = \"id1\";\n      features = {\n      "
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/run.nix",
    "chars": 99,
    "preview": "{ pkgs\n, nixTestRunner\n,\n}:\nnixTestRunner.runTests {\n  tests = pkgs.callPackage ./tests.nix { };\n}\n"
  },
  {
    "path": "crate2nix/templates/nix/crate2nix/tests/tests.nix",
    "chars": 584,
    "preview": "{ pkgs\n, lib\n}:\nlet\n  crate2nix = pkgs.callPackage ../default.nix { };\n  testFiles = [\n    \"dependencyDerivations\"\n    \""
  },
  {
    "path": "crate2nix/tests/self_build_up_to_date.rs",
    "chars": 5512,
    "preview": "use anyhow::{bail, format_err, Error};\nuse colored_diff::PrettyDifference;\nuse crate2nix::{nix_build::dump_with_lines, r"
  },
  {
    "path": "crate2nix.sh",
    "chars": 192,
    "preview": "#!/usr/bin/env bash\n\n# Runs crate2nix as defined in this repo with pinned nixpkgs.\n#\n# Crate2nix is rebuilt if necessary"
  },
  {
    "path": "default.nix",
    "chars": 31,
    "preview": "import ./crate2nix/default.nix\n"
  },
  {
    "path": "docs/.gitignore",
    "chars": 243,
    "preview": "# build output\ndist/\n# generated types\n.astro/\n\n# dependencies\nnode_modules/\n\n# logs\nnpm-debug.log*\nyarn-debug.log*\nyarn"
  },
  {
    "path": "docs/.vscode/extensions.json",
    "chars": 87,
    "preview": "{\n  \"recommendations\": [\"astro-build.astro-vscode\"],\n  \"unwantedRecommendations\": []\n}\n"
  },
  {
    "path": "docs/.vscode/launch.json",
    "chars": 207,
    "preview": "{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"command\": \"./node_modules/.bin/astro dev\",\n      \"name\": \"Dev"
  },
  {
    "path": "docs/README.md",
    "chars": 312,
    "preview": "# Crate2nix documentation\n\nThis directory contains the `crate2nix` documentation which is\npublished at\n[https://nix-comm"
  },
  {
    "path": "docs/astro.config.mjs",
    "chars": 1270,
    "preview": "import { defineConfig } from 'astro/config';\nimport starlight from '@astrojs/starlight';\n\n// https://astro.build/config\n"
  },
  {
    "path": "docs/flake-module.nix",
    "chars": 2106,
    "preview": "{\n  perSystem = { config, self', inputs', pkgs, lib, system, ... }:\n    let nodejs = pkgs.nodejs_22; in {\n      devshell"
  },
  {
    "path": "docs/package.json",
    "chars": 450,
    "preview": "{\n  \"name\": \"docs\",\n  \"type\": \"module\",\n  \"version\": \"0.0.1\",\n  \"scripts\": {\n    \"dev\": \"astro dev\",\n    \"start\": \"astro"
  },
  {
    "path": "docs/src/content/config.ts",
    "chars": 267,
    "preview": "import { defineCollection } from 'astro:content';\nimport { docsSchema, i18nSchema } from '@astrojs/starlight/schema';\n\ne"
  },
  {
    "path": "docs/src/content/docs/10_getting_started/10_flake_template_new.md",
    "chars": 1401,
    "preview": "---\ntitle: Rust Project via Flake Template\ndescription: How to create a new rust project using crate2nix via flakes.\nsid"
  },
  {
    "path": "docs/src/content/docs/10_getting_started/20_installing_crate2nix.md",
    "chars": 908,
    "preview": "---\ntitle: Installing crate2nix\n---\n\nKnow what you are doing and want a stable version?\nJust use the version from [nixpk"
  },
  {
    "path": "docs/src/content/docs/10_getting_started/30_running_crate2nix_without_install.md",
    "chars": 614,
    "preview": "---\ntitle: Running crate2nix without installation\n---\n\nKnow what you are doing and want a stable version?\nJust use the v"
  },
  {
    "path": "docs/src/content/docs/20_generating/10_generating.md",
    "chars": 1630,
    "preview": "---\ntitle: Generate Cargo.nix manually\n---\n\n* ✅ Does not use [import from derivation](https://nixos.org/manual/nix/stabl"
  },
  {
    "path": "docs/src/content/docs/20_generating/20_auto_generating.mdx",
    "chars": 2750,
    "preview": "---\ntitle: Generating Cargo.nix via IFD\n---\nimport { LinkCard } from '@astrojs/starlight/components';\n\n* ✅ No need to in"
  },
  {
    "path": "docs/src/content/docs/30_building/10_building_binaries.md",
    "chars": 1458,
    "preview": "---\ntitle: Building binaries\n---\n\n## Single binary crates\n\nIf your `Cargo.nix` was generated for a single binary crate ("
  },
  {
    "path": "docs/src/content/docs/30_building/20_choosing_features.md",
    "chars": 1211,
    "preview": "---\ntitle: Choosing enabled features\n---\n\nThe enabled features for a crate now are resolved at build time! That means yo"
  },
  {
    "path": "docs/src/content/docs/30_building/30_crateOverrides.md",
    "chars": 1877,
    "preview": "---\ntitle: \"Using crate overrides\"\n---\n\nYou can patch the individual crate derivations with `crateOverrides`, for\nexampl"
  },
  {
    "path": "docs/src/content/docs/30_building/40_tests.md",
    "chars": 1661,
    "preview": "---\ntitle: Rust tests\nsidebar:\n  badge: { text: 'Experimental', variant: 'caution' }\n---\n\n:::tip[Not thaaat experimental"
  },
  {
    "path": "docs/src/content/docs/35_toolchains/10_custom_toolchains.md",
    "chars": 1302,
    "preview": "---\ntitle: Custom Toolchains\n---\n\nOne way to use a custom rust toolchain with `crate2nix` is to\nimport nixpkgs with an o"
  },
  {
    "path": "docs/src/content/docs/35_toolchains/20_using_a_rust_overlay.md",
    "chars": 1856,
    "preview": "---\ntitle: Using a Rust overlay\n---\n\nIt's possible to use a Rust overlay such as `rust-overlay` with `crate2nix`.\nThis c"
  },
  {
    "path": "docs/src/content/docs/40_external_sources/10_building_fetched_sources.md",
    "chars": 1711,
    "preview": "---\ntitle: Building fetched sources\n---\n\n* ✅ No need to install `crate2nix`.\n* ✅ Auto-generates nix from your `Cargo.loc"
  },
  {
    "path": "docs/src/content/docs/40_external_sources/20_generating_for_fetched_sources.md",
    "chars": 4651,
    "preview": "---\ntitle: Generating Cargo.nix for multiple fetched sources\nsidebar:\n  badge: { text: 'Experimental', variant: 'caution"
  },
  {
    "path": "docs/src/content/docs/50_contributing/00_intro.md",
    "chars": 964,
    "preview": "---\ntitle: Intro\ndescription: About contributing to crate2nix.\n---\n\nContributions in the form of documentation and bug f"
  },
  {
    "path": "docs/src/content/docs/50_contributing/05_code.md",
    "chars": 3711,
    "preview": "---\ntitle: Nix/Rust/Tera Code\ndescription: Some pointers for contributing code successfully.\n---\n\nRead [Project Overview"
  },
  {
    "path": "docs/src/content/docs/50_contributing/10_docs.md",
    "chars": 4395,
    "preview": "---\ntitle: Documentation\ndescription: How to contribute to the documentation.\n---\n\n* You learned something about `crate2"
  },
  {
    "path": "docs/src/content/docs/50_contributing/90_release.md",
    "chars": 198,
    "preview": "---\ntitle: Creating a release\n---\n\n:::tip[Target Audience]\nMaintainers of crate2nix\n\n:::\n\nSee [RELEASE.md](https://githu"
  },
  {
    "path": "docs/src/content/docs/70_design/10_structure_and_phases.md",
    "chars": 757,
    "preview": "---\ntitle: Project Overview & Terminology\n---\n\nIf you want to hack on this, it is useful to know that build file generat"
  },
  {
    "path": "docs/src/content/docs/70_design/50_tools_nix.mdx",
    "chars": 1115,
    "preview": "---\ntitle: tools.nix\n---\n\nimport { LinkCard } from '@astrojs/starlight/components';\n\nThe `tools.nix` file contain the ne"
  },
  {
    "path": "docs/src/content/docs/70_design/90_inspiration.md",
    "chars": 1418,
    "preview": "---\ntitle: Inspiration & History\ndescription: Where did crate2nix come from?\n---\n\n[carnix](https://nest.pijul.com/pmeuni"
  },
  {
    "path": "docs/src/content/docs/90_reference/10_runtime_dependencies.md",
    "chars": 392,
    "preview": "---\ntitle: Runtime Dependencies\n---\n\ncrate2nix uses `cargo metadata` at runtime when generating `Cargo.nix`.\n\nDepending "
  },
  {
    "path": "docs/src/content/docs/90_reference/20_known_restrictions.md",
    "chars": 2699,
    "preview": "---\ntitle: Known Restrictions\n---\n\n`crate2nix` makes heavy use of `buildRustCrate` in `nixpkgs`. So we potentially\ndepen"
  },
  {
    "path": "docs/src/content/docs/90_reference/90_CHANGELOG.md",
    "chars": 21973,
    "preview": "---\ntitle: CHANGELOG\ndescription: A list of all major changes per version.\n---\n\n## 0.15.0 (2026-01-28)\n\n### New features"
  },
  {
    "path": "docs/src/content/docs/index.mdx",
    "chars": 1895,
    "preview": "---\ntitle: Welcome to crate2nix\ndescription: What is crate2nix?\n---\n\nimport { Card, CardGrid } from '@astrojs/starlight/"
  },
  {
    "path": "docs/src/env.d.ts",
    "chars": 85,
    "preview": "/// <reference path=\"../.astro/types.d.ts\" />\n/// <reference types=\"astro/client\" />\n"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 41,
    "preview": "{\n  \"extends\": \"astro/tsconfigs/strict\"\n}"
  },
  {
    "path": "flake.nix",
    "chars": 2864,
    "preview": "{\n  description = ''\n    crate2nix generates [nix](https://nixos.org/nix/) build files for [rust](https://www.rust-lang."
  },
  {
    "path": "lib/build-from-json.nix",
    "chars": 10828,
    "preview": "# Build a Rust workspace from pre-resolved JSON (generated by crate2nix --format json).\n#\n# All dependency resolution, f"
  },
  {
    "path": "nix/devshell/flake-module.nix",
    "chars": 1284,
    "preview": "{ inputs\n, ...\n}: {\n  imports = [\n    inputs.devshell.flakeModule\n  ];\n  config.perSystem =\n    { config\n    , system\n  "
  },
  {
    "path": "nix/flakeInput.nix",
    "chars": 969,
    "preview": "# Get a locked flake input value that can be given to `builtins.fetchTree` or to\n# `builtins.getFlake`. For example,\n#\n#"
  },
  {
    "path": "nix/nix-test-runner/README.md",
    "chars": 234,
    "preview": "# nix-test-runner\n\nThis is a mostly-vendored version of the nix source from\n[NixTest](https://github.com/stoeffel/nix-te"
  },
  {
    "path": "nix/nix-test-runner/default.nix",
    "chars": 3650,
    "preview": "let\n  # Use last stable crate2nix release to build the test runner so that it\n  # works even if the current branch has b"
  },
  {
    "path": "nix/nix-test-runner/package.nix",
    "chars": 274,
    "preview": "let\n  flakeInput = import ../flakeInput.nix;\n  src = builtins.fetchTree (flakeInput \"nix-test-runner\");\nin\n{ pkgs\n, crat"
  },
  {
    "path": "nix/nix-test-runner/runTest.nix",
    "chars": 1186,
    "preview": "{ testFile ? null\n, tests ? import testFile\n, lib\n}:\nwith builtins;\nlet\n  testNames = map (t: { passedTest = t; }) (attr"
  },
  {
    "path": "nix/nixpkgs.nix",
    "chars": 98,
    "preview": "let\n  flakeInput = import ./flakeInput.nix;\nin\nimport (builtins.fetchTree (flakeInput \"nixpkgs\"))\n"
  },
  {
    "path": "nix/perSystem-tools/flake-module.nix",
    "chars": 2166,
    "preview": "{\n  # provider perSystem\n  transposition.tools = { };\n\n  perSystem = { config, pkgs, lib, ... }: {\n    options.tools = l"
  },
  {
    "path": "nix/pre-commit/flake-module.nix",
    "chars": 676,
    "preview": "{ self, inputs, ... }: {\n  imports = [\n    inputs.pre-commit-hooks.flakeModule\n  ];\n  config.perSystem =\n    { config\n  "
  },
  {
    "path": "nix-test.sh",
    "chars": 323,
    "preview": "#!/usr/bin/env bash\n\n# Executes the pinned nix-test-runner.\n#\n# Example: ./nix-test-runner.sh ./unit-tests.nix\n\nset -Eeu"
  },
  {
    "path": "nixpkgs-fmt.sh",
    "chars": 326,
    "preview": "#!/usr/bin/env bash\n\n# Executes nixpkgs-fmt from the pinned nixpkgs\n#\n# Example: ./nixpkgs-fmt.sh ./tests.nix\n\nset -Eeuo"
  },
  {
    "path": "out-of-tree-sources.md",
    "chars": 130,
    "preview": "# Out of tree sources\n\nSee [github page](https://nix-community.github.io/crate2nix/00_guides/71_generating_for_fetched_s"
  },
  {
    "path": "regenerate_cargo_nix.sh",
    "chars": 2146,
    "preview": "#!/usr/bin/env bash\n\nset -Eeuo pipefail\n\ntop=\"$(readlink -f \"$(dirname \"$0\")\")\"\n\nif [ -z \"${IN_CRATE2NIX_SHELL:-}\" ]; th"
  },
  {
    "path": "run_tests.sh",
    "chars": 3925,
    "preview": "#!/usr/bin/env bash\n#\n# Regenerates build files and runs tests on them.\n# Please use this to validate your pull requests"
  },
  {
    "path": "sample_projects/aliased-dependencies/Cargo.toml",
    "chars": 409,
    "preview": "[package]\nname = \"aliased-dependencies\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies]\nhello = { package = \"ludndev-"
  },
  {
    "path": "sample_projects/aliased-dependencies/crate-hashes.json",
    "chars": 314,
    "preview": "{\n  \"git+https://github.com/ludndev/rustlang-hello-world-lib.git?tag=v0.1.1#ludndev-hello-world@0.1.1\": \"0ayzrhha2kl636q"
  },
  {
    "path": "sample_projects/aliased-dependencies/hello/Cargo.toml",
    "chars": 74,
    "preview": "[package]\nname = \"ludndev-hello-world\"\nversion = \"0.0.1\"\nedition = \"2021\"\n"
  },
  {
    "path": "sample_projects/aliased-dependencies/hello/src/lib.rs",
    "chars": 53,
    "preview": "pub fn greet() -> String {\n    \"hello\".to_string()\n}\n"
  },
  {
    "path": "sample_projects/aliased-dependencies/src/main.rs",
    "chars": 140,
    "preview": "pub fn main() {\n    println!(\"{}\", hello::greet(\"\"));\n    println!(\"{}\", hello_v010::greet(\"\"));\n    println!(\"{}\", hell"
  },
  {
    "path": "sample_projects/bin/Cargo.toml",
    "chars": 265,
    "preview": "[package]\nname = \"hello_world_bin\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2018\"\n"
  },
  {
    "path": "sample_projects/bin/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/bin/src/main.rs",
    "chars": 45,
    "preview": "fn main() {\n    println!(\"Hello, world!\");\n}\n"
  },
  {
    "path": "sample_projects/bin_required_features/Cargo.toml",
    "chars": 378,
    "preview": "[package]\nname = \"bin_required_features\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n# See more keys and their definitions at ht"
  },
  {
    "path": "sample_projects/bin_required_features/src/bin/bin_not_to_be_compiled.rs",
    "chars": 132,
    "preview": "pub fn main() {\n    compile_error!(\"This binary shouldn’t be compiled, as it depend on \\\"afeature\\\", which souldn't be e"
  },
  {
    "path": "sample_projects/bin_required_features/src/main.rs",
    "chars": 79,
    "preview": "fn main() {\n    println!(\"Hello from bin_required_features default binary\");\n}\n"
  },
  {
    "path": "sample_projects/bin_with_default_features/Cargo.toml",
    "chars": 287,
    "preview": "[package]\nname = \"bin_with_default_features\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition"
  },
  {
    "path": "sample_projects/bin_with_default_features/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/bin_with_default_features/override-root-features.nix",
    "chars": 240,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }, generatedCargoNix }:\nlet\n  basePackage = pkgs.callPackage gener"
  },
  {
    "path": "sample_projects/bin_with_default_features/src/main.rs",
    "chars": 339,
    "preview": "#[cfg(feature = \"use_lib\")]\nuse renamed_hello_world_lib;\n\nfn main() {\n    #[cfg(feature = \"do_not_activate\")]\n    let st"
  },
  {
    "path": "sample_projects/bin_with_dep_features/Cargo.toml",
    "chars": 266,
    "preview": "[package]\nname = \"bin_with_dep_features\"\nversion = \"0.1.0\"\nauthors = [\"Faye Duxovni <duxovni@duxovni.org>\"]\nedition = \"2"
  },
  {
    "path": "sample_projects/bin_with_dep_features/src/main.rs",
    "chars": 171,
    "preview": "#[cfg(feature = \"use_lib\")]\nuse renamed_hello_world_lib;\n\nfn main() {\n    #[cfg(feature = \"use_lib\")]\n    renamed_hello_"
  },
  {
    "path": "sample_projects/bin_with_git_branch_dep/Cargo.toml",
    "chars": 225,
    "preview": "[package]\nname = \"bin_with_lib_git_dep\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2"
  },
  {
    "path": "sample_projects/bin_with_git_branch_dep/crate-hashes.json",
    "chars": 142,
    "preview": "{\n  \"git+https://github.com/kolloch/nix-base32?branch=branch-for-test#0.1.2-alpha.0\": \"011f945b48xkilkqbvbsxazspz5z23ka0"
  },
  {
    "path": "sample_projects/bin_with_git_branch_dep/src/main.rs",
    "chars": 114,
    "preview": "fn main() {\n    nix_base32::to_nix_base32(&[1,2,3]);\n    println!(\"Hello world from bin_with_git_branch_dep!\");\n}\n"
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/Cargo.nix",
    "chars": 80671,
    "preview": "\n# This file was @generated by crate2nix 0.15.0 with the command:\n#   \"generate\" \"-f\" \"sample_projects/bin_with_git_subm"
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/Cargo.toml",
    "chars": 231,
    "preview": "[package]\nname = \"bin_with_git_submodule_dep\"\nversion = \"0.1.0\"\nauthors = [\"Phillip Cloud <cloud@standard.ai>\"]\nedition "
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/crate-hashes.json",
    "chars": 265,
    "preview": "{\n  \"git+https://github.com/rust-rocksdb/rust-rocksdb#librocksdb-sys@0.15.0+8.9.1\": \"1rchvjrjamdaznx26gy4bmjj10rrf00mgc1"
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/default-with-customBuildRustCrate.nix",
    "chars": 633,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix\n}:\nlet\n  customBuildRustCrate "
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/default-with-customBuildRustCrateForPkgs.nix",
    "chars": 647,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix\n}:\nlet\n  customBuildRustCrateF"
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/default.nix",
    "chars": 522,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix\n}:\nlet\n  basePackage = pkgs.ca"
  },
  {
    "path": "sample_projects/bin_with_git_submodule_dep/src/main.rs",
    "chars": 72,
    "preview": "fn main() {\n    println!(\"Hello world from with_git_submodule_dep!\");\n}\n"
  },
  {
    "path": "sample_projects/bin_with_lib_dep/Cargo.toml",
    "chars": 327,
    "preview": "[package]\nname = \"hello_world_with_dep\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2"
  },
  {
    "path": "sample_projects/bin_with_lib_dep/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/bin_with_lib_dep/src/main.rs",
    "chars": 76,
    "preview": "fn main() {\n    renamed_hello_world_lib::hello_world(\"bin_with_lib_dep\");\n}\n"
  },
  {
    "path": "sample_projects/bin_with_lib_git_dep/Cargo.toml",
    "chars": 254,
    "preview": "[package]\nname = \"bin_with_lib_git_dep\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2"
  },
  {
    "path": "sample_projects/bin_with_lib_git_dep/crate-hashes.json",
    "chars": 164,
    "preview": "{\n  \"git+https://github.com/kolloch/nix-base32?rev=42f5544e51187f0c7535d453fcffb4b524c99eb2#0.1.2-alpha.0\": \"011f945b48x"
  },
  {
    "path": "sample_projects/bin_with_lib_git_dep/src/main.rs",
    "chars": 111,
    "preview": "fn main() {\n    nix_base32::to_nix_base32(&[1,2,3]);\n    println!(\"Hello world from bin_with_lib_git_dep!\");\n}\n"
  },
  {
    "path": "sample_projects/bin_with_rerenamed_lib_dep/Cargo.toml",
    "chars": 451,
    "preview": "[package]\nname = \"bin_with_rerenamed_lib_dep\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\neditio"
  },
  {
    "path": "sample_projects/bin_with_rerenamed_lib_dep/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/bin_with_rerenamed_lib_dep/src/main.rs",
    "chars": 87,
    "preview": "fn main() {\n    new_name_hello_world_lib::hello_world(\"bin_with_rerenamed_lib_dep\");\n}\n"
  },
  {
    "path": "sample_projects/cdylib/Cargo.toml",
    "chars": 259,
    "preview": "[package]\nname = \"cdylib\"\nversion = \"0.1.0\"\nauthors = [\"Andreas Rammhold <andreas@rammhold.de>\"]\nedition = \"2018\"\n\n[lib]"
  },
  {
    "path": "sample_projects/cdylib/src/lib.rs",
    "chars": 80,
    "preview": "#[no_mangle]\npub extern \"C\" fn some_function() {\n    println!(\"cdylib test\");\n}\n"
  },
  {
    "path": "sample_projects/cdylib/test.nix",
    "chars": 469,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }, generatedCargoNix }:\nlet\n  basePackage = pkgs.callPackage gener"
  },
  {
    "path": "sample_projects/cfg-test/.gitignore",
    "chars": 19,
    "preview": "/target\n**/*.rs.bk\n"
  },
  {
    "path": "sample_projects/cfg-test/Cargo.toml",
    "chars": 317,
    "preview": "[package]\nname = \"cfg-test\"\nversion = \"0.1.0\"\nauthors = [\"Andreas Rammhold <andreas@rammhold.de>\"]\nedition = \"2018\"\n\n# S"
  },
  {
    "path": "sample_projects/cfg-test/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/cfg-test/snowflake.txt",
    "chars": 4,
    "preview": "❄️ \n"
  },
  {
    "path": "sample_projects/cfg-test/src/lib.rs",
    "chars": 75,
    "preview": "\n#[cfg(test)]\n#[test]\nfn lib_test() {\n    println!(\"lib test executed\");\n}\n"
  },
  {
    "path": "sample_projects/cfg-test/src/main.rs",
    "chars": 48,
    "preview": "fn main() {\n    println!(\"Hello, cfg-test!\");\n}\n"
  },
  {
    "path": "sample_projects/cfg-test/test.nix",
    "chars": 264,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix { }\n}:\nlet\n  instantiatedBuild"
  },
  {
    "path": "sample_projects/cfg-test/tests/echo_foo_test.rs",
    "chars": 266,
    "preview": "#[test]\nfn echo_foo_test() {\n    println!(\"echo_foo_test\");\n}\n\n#[test]\nfn in_source_dir() {\n    let path = std::path::Pa"
  },
  {
    "path": "sample_projects/codegen/Cargo.nix",
    "chars": 43714,
    "preview": "\n# This file was @generated by crate2nix 0.15.0 with the command:\n#   \"generate\" \"-f\" \"sample_projects/codegen/Cargo.tom"
  },
  {
    "path": "sample_projects/codegen/Cargo.toml",
    "chars": 383,
    "preview": "[package]\nname = \"codegen\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2018\"\n\nbuild ="
  },
  {
    "path": "sample_projects/codegen/build.rs",
    "chars": 420,
    "preview": "// src/build.rs\nuse std::env;\nuse std::fs::File;\nuse std::io::Write;\nuse std::path::Path;\n\nuse dbus_codegen;\n\nfn main() "
  },
  {
    "path": "sample_projects/codegen/crate-hashes.json",
    "chars": 357,
    "preview": "{\n  \"git+https://github.com/diwic/dbus-rs.git#dbus-codegen@0.10.0\": \"0gvhz2knd1k799l7ssh4rdm5qw0vhazzr3bxpmlgq7fhy6hjazr"
  },
  {
    "path": "sample_projects/codegen/src/main.rs",
    "chars": 110,
    "preview": "// src/main.rs\n\ninclude!(concat!(env!(\"OUT_DIR\"), \"/hello.rs\"));\n\nfn main() {\n    println!(\"{}\", message());\n}"
  },
  {
    "path": "sample_projects/conditional_features/Cargo.toml",
    "chars": 233,
    "preview": "[package]\nname = \"conditional_features\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies.optional]\noptional = true\npath"
  },
  {
    "path": "sample_projects/conditional_features/optional/Cargo.toml",
    "chars": 101,
    "preview": "[package]\nname = \"optional\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[features]\nfoo = []\nallow-build = []\n"
  },
  {
    "path": "sample_projects/conditional_features/optional/src/lib.rs",
    "chars": 232,
    "preview": "#[cfg(not(feature = \"allow-build\"))]\ncompile_error!(\"allow-build feature is not enabled, refusing to build\");\n\npub fn ma"
  },
  {
    "path": "sample_projects/conditional_features/src/main.rs",
    "chars": 256,
    "preview": "fn main() {\n\t#[cfg(feature = \"hello\")]\n\tprintln!(\"Hello, {}!\", optional::maybe_foo());\n\n\t#[cfg(all(not(feature = \"hello\""
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/Cargo.toml",
    "chars": 132,
    "preview": "[package]\nname = \"cross_compile_build_dependencies\"\nversion = \"1.0.0\"\nedition = \"2021\"\n\n[build-dependencies]\nalice.path "
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/alice/Cargo.toml",
    "chars": 114,
    "preview": "[package]\nname = \"alice\"\nversion = \"1.0.0\"\nedition = \"2021\"\n\n[target.'cfg(unix)'.dependencies]\nbob.path = \"./bob\"\n"
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/alice/bob/Cargo.toml",
    "chars": 58,
    "preview": "[package]\nname = \"bob\"\nversion = \"1.0.0\"\nedition = \"2021\"\n"
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/alice/bob/src/lib.rs",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/alice/src/lib.rs",
    "chars": 26,
    "preview": "#[cfg(unix)]\npub use bob;\n"
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/default.nix",
    "chars": 166,
    "preview": "{ generatedCargoNix\n, pkgs ? import ../../nix/nixpkgs.nix { crossSystem.config = \"wasm32-unknown-none\"; }\n}:\n(pkgs.callP"
  },
  {
    "path": "sample_projects/cross_compile_build_dependencies/src/main.rs",
    "chars": 13,
    "preview": "fn main() {}\n"
  },
  {
    "path": "sample_projects/dependency_issue_65/Cargo.toml",
    "chars": 398,
    "preview": "[package]\nname = \"dependency_issue_65\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"20"
  },
  {
    "path": "sample_projects/dependency_issue_65/default.nix",
    "chars": 235,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix { }\n}:\nlet\n  cargo_nix = pkgs."
  },
  {
    "path": "sample_projects/dependency_issue_65/src/main.rs",
    "chars": 59,
    "preview": "fn main() {\n    println!(\"Hello, dependency_issue_65!\");\n}\n"
  },
  {
    "path": "sample_projects/empty_cross/Cargo.toml",
    "chars": 180,
    "preview": "[package]\nname = \"empty_cross\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n# See more keys and their definitions at https://doc."
  },
  {
    "path": "sample_projects/empty_cross/build.rs",
    "chars": 49,
    "preview": "#![cfg(not(target_os = \"none\"))]\n\nfn main() {\n\n}\n"
  },
  {
    "path": "sample_projects/empty_cross/default.nix",
    "chars": 1572,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix { }\n}:\n\nlet pkgs0 = pkgs; in\n\n"
  },
  {
    "path": "sample_projects/empty_cross/src/lib.rs",
    "chars": 312,
    "preview": "#![feature(no_core)]\n#![no_core]\n\n#![cfg_attr(not(target_os = \"none\"), feature(rustc_attrs))]\n\n#[cfg(not(target_os = \"no"
  },
  {
    "path": "sample_projects/future_util_multi_version/Cargo.toml",
    "chars": 375,
    "preview": "[package]\nname = \"future_util_multi_version\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition"
  },
  {
    "path": "sample_projects/future_util_multi_version/src/main.rs",
    "chars": 713,
    "preview": "use std::pin::Pin;\nuse std::task::{Context, Poll};\n\nstruct StupidFuture01;\n\nimpl futures01::Future for StupidFuture01 {\n"
  },
  {
    "path": "sample_projects/futures_compat/Cargo.toml",
    "chars": 362,
    "preview": "[package]\n# See bug https://github.com/kolloch/crate2nix/issues/56\nname = \"futures_compat\"\nversion = \"0.1.0\"\nauthors = ["
  },
  {
    "path": "sample_projects/futures_compat/src/main.rs",
    "chars": 112,
    "preview": "const CRATE_NAME: &'static str = env!(\"CARGO_PKG_NAME\");\n\nfn main() {\n    println!(\"Hello, {}!\", CRATE_NAME);\n}\n"
  },
  {
    "path": "sample_projects/integration_test/Cargo.json",
    "chars": 1047,
    "preview": "{\n  \"generator\": \"@generated by crate2nix\",\n  \"root\": \"integration_test\",\n  \"workspaceMembers\": {\n    \"integration_test\""
  },
  {
    "path": "sample_projects/integration_test/Cargo.toml",
    "chars": 171,
    "preview": "[package]\nname = \"integration_test\"\nversion = \"0.1.0\"\nauthors = [\"Symphorien Gibol <symphorien+git@xlumurb.eu>\"]\nedition"
  },
  {
    "path": "sample_projects/integration_test/src/main.rs",
    "chars": 336,
    "preview": "/// a lousy implementation of cat\nfn main() {\n    let args = std::env::args().collect::<Vec<_>>();\n    if args.len() != "
  },
  {
    "path": "sample_projects/integration_test/test-json.nix",
    "chars": 312,
    "preview": "# PR #453: test that JSON-mode buildTests wires dev-dependencies.\n{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; "
  },
  {
    "path": "sample_projects/integration_test/test.nix",
    "chars": 228,
    "preview": "{ pkgs ? import ../../nix/nixpkgs.nix { config = { }; }\n, generatedCargoNix ? ./Cargo.nix\n}:\nlet\n  instantiatedBuild = p"
  },
  {
    "path": "sample_projects/integration_test/tests/hello",
    "chars": 12,
    "preview": "hello world\n"
  },
  {
    "path": "sample_projects/integration_test/tests/integration_test.rs",
    "chars": 704,
    "preview": "use cli_test_dir::*;\n\n#[test]\nfn read_source_file() {\n    let testdir = TestDir::new(\"integration_test\", \"temp\");\n    le"
  },
  {
    "path": "sample_projects/lib/Cargo.toml",
    "chars": 207,
    "preview": "[package]\nname = \"hello_world_lib\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2018\"\n"
  },
  {
    "path": "sample_projects/lib/src/lib.rs",
    "chars": 69,
    "preview": "pub fn hello_world(name: &str) {\n    println!(\"Hello, {}!\", name);\n}\n"
  },
  {
    "path": "sample_projects/lib_and_bin/Cargo.toml",
    "chars": 144,
    "preview": "[package]\nname = \"hello_world_lib_and_bin\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition ="
  },
  {
    "path": "sample_projects/lib_and_bin/crate-hashes.json",
    "chars": 2,
    "preview": "{}"
  },
  {
    "path": "sample_projects/lib_and_bin/src/lib.rs",
    "chars": 62,
    "preview": "pub fn hello_world() {\n    println!(\"Hello, lib_and_bin!\");\n}\n"
  },
  {
    "path": "sample_projects/lib_and_bin/src/main.rs",
    "chars": 76,
    "preview": "use hello_world_lib_and_bin::hello_world;\n\nfn main() {\n    hello_world();\n}\n"
  },
  {
    "path": "sample_projects/multiple_bin/Cargo.toml",
    "chars": 226,
    "preview": "[package]\nname = \"multiple_bin\"\nversion = \"0.1.0\"\nauthors = [\"Kristoffer Søholm <k.soeholm@gmail.com>\"]\nedition = \"2018\""
  },
  {
    "path": "sample_projects/multiple_bin/src/bin1.rs",
    "chars": 55,
    "preview": "fn main() {\n    println!(\"Hello, world! from bin1\");\n}\n"
  },
  {
    "path": "sample_projects/multiple_bin/src/bin2.rs",
    "chars": 55,
    "preview": "fn main() {\n    println!(\"Hello, world! from bin2\");\n}\n"
  },
  {
    "path": "sample_projects/multiple_bin/src/main.rs",
    "chars": 45,
    "preview": "fn main() {\n    println!(\"Hello, world!\");\n}\n"
  },
  {
    "path": "sample_projects/nix_workspaces/.gitignore",
    "chars": 31,
    "preview": "workspace.nix\nworkspace_members"
  },
  {
    "path": "sample_projects/nix_workspaces/Cargo.toml",
    "chars": 261,
    "preview": "\n# This file was @generated by crate2nix 0.9.0-alpha.1 with the command:\n#   generate\n# See https://github.com/kolloch/c"
  },
  {
    "path": "sample_projects/nix_workspaces/nix/sources.nix",
    "chars": 4241,
    "preview": "# This file has been generated by Niv.\n\nlet\n\n  #\n  # The fetchers. fetch_<type> fetches specs of type <type>.\n  #\n\n  fet"
  },
  {
    "path": "sample_projects/numtest/Cargo.toml",
    "chars": 240,
    "preview": "[package]\nname = \"numtest\"\nversion = \"0.1.0\"\nauthors = [\"Peter Kolloch <info@eigenvalue.net>\"]\nedition = \"2018\"\n\n# See m"
  }
]

// ... and 60 more files (download for full content)

About this extraction

This page contains the full source code of the nix-community/crate2nix GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 260 files (778.9 KB), approximately 214.1k tokens, and a symbol index with 303 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!