• TypeScript 65.2%
  • CSS 30.4%
  • JavaScript 2.3%
  • Nix 1.5%
  • HTML 0.6%
Find a file
dependabot[bot] 5707c5863d
build(deps): bump actions/setup-node from 6 to 6.3.0
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v6...v6.3.0)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 16:18:40 +00:00
.github build(deps): bump actions/setup-node from 6 to 6.3.0 2026-04-23 16:18:40 +00:00
docs docs: improve 'usage instructions' for the web component 2026-04-16 09:40:28 +03:00
nix meta: auto-update dependencies 2026-04-16 06:49:00 +00:00
packages packages/core: revise readme; elaborate on supported Nix impls 2026-04-16 09:40:27 +03:00
.envrc nix: initial tooling 2026-01-22 23:01:41 +03:00
.gitignore chore: update ignore filters for new layout 2026-04-09 08:32:12 +03:00
.prettierignore chore: update ignore filters for new layout 2026-04-09 08:32:12 +03:00
.prettierrc initial commit 2026-01-22 23:01:36 +03:00
eslint.config.mjs meta: detect react version and fine-grain files for eslint 2026-04-14 11:00:14 +03:00
flake.lock nix: bump nixpkgs 2026-04-09 08:26:31 +03:00
flake.nix nix: initial tooling 2026-01-22 23:01:41 +03:00
LICENSE meta: release under MPL v2.0 2026-01-22 23:01:37 +03:00
package.json build: bump all pnpm dependencies 2026-04-09 08:30:44 +03:00
pnpm-lock.yaml packages: move sharing logic from web to core; reuse in web 2026-04-16 09:40:26 +03:00
pnpm-workspace.yaml treewide: adapt for monorepo layout; initial TUI work 2026-04-09 08:28:48 +03:00
shell.nix nix: initial tooling 2026-01-22 23:01:41 +03:00

nix-evaluator-stats

Lints & Formatting License

Demo

nix-evaluator-stats, or "ns", is a pretty visualiser for the Nix evaluator stats export from NIX_SHOW_STATS and NIX_COUNT_CALLS invocations. It takes the resulting JSON data from your Nix invocation with the relevant variables, and provides a pretty dashboard-like visual with the ability to compare your "snapshots" of benchmarks. Besides looking nice, it is helpful in collecting statistics about your Nix commands and tracking performance regressions in subsequent exports with the comparison feature with snapshot of your analyses.

Usage

NS is primarily a web application for pretty visuals, with a terminal client (both a CLI and a TUI) planned for rendering statistics or sharing your analyses with others.

Web

You can find the site here.

Usage instructions are provided in the initial page. Simply navigate to the site and provide the JSON export (or a file) to render the statistics. The number of rendered fields might differ based on your Nix version or implementation (Lix, Snix, etc.) The classic usage looks like this:

# Invoke a Nix command with NIX_SHOW_STATS=1
$ NIX_SHOW_STATS=1 nix eval nixpkgs#hello -- --option eval-cache false # disable eval-cache for accuracy

# Or write to a file directly
$ NIX_SHOW_STATS_PATH=stats.json nix eval nixpkgs#hello -- --option eval-cache false
  1. Create the JSON export
  2. Copy it if printed to stdout
  3. Paste or upload it in the input field that appears the first time you visit the site

Once you hit "Load", the JSON will be parsed and you'll be looking at a dash board of your export. By using the snapshot feature, i.e., saving a particular analysis you may compare two named analyses at a time.

Snapshots

Snapshots are a new feature that lets you save an analysis in your browser storage with a name to be used later on in the comparison view. At least two named analyses (i.e., snapshots) are required for an analysis.

You can save can analysis as a snapshot from the save button on the bottom right. Alternatively, you can visit the "compare" page and paste your JSON directly.

Hacking

This project is built with various web technologies. Namely we use Vite, Typescript-React (.tsx) and SolidJS for most of our user interfaces.

The recommended approach for resolving dependencies is using Nix; a Nix shell is provided, and dependencies can be fetched with pnpm while inside the dev shell.

# Run the live server
$ pnpm run dev

# Build a static site
$ pnpm run build

If submitting pull requests, please ensure that format (pnpm run fmt) and lint (pnpm run lint) tasks are ran beforehand. The automated CI will tell you whether your code matches the requirements, but it's a good rule of thumb to do this before submitting your PR.

License

This project is made available under Mozilla Public License (MPL) version 2.0. See LICENSE for more details on the exact conditions. An online copy is provided here.