Home Explore Blog Models CI



nixpkgs

maintainers/scripts/README.md
4ef95fc6dd9cdc0713065b2f77721d3f006cc3931a0cced700000003000009c4
# Maintainer scripts

This folder contains various executable scripts for nixpkgs maintainers, and supporting data or nixlang files as needed.
These scripts generally aren't a stable interface and may changed or be removed.

What follows is a (very incomplete) overview of available scripts.

## Metadata

### `get-maintainer.sh`

`get-maintainer.sh [selector] value` returns a JSON object describing a given nixpkgs maintainer, equivalent to `lib.maintainers.${x} // { handle = x; }`.

This allows looking up a maintainer's attrset (including GitHub and Matrix handles, email address etc.) based on any of their handles, more correctly and
robustly than text search through `maintainer-list.nix`.

```
❯ ./get-maintainer.sh nicoo
{
  "email": "nicoo@debian.org",
  "github": "nicoonoclaste",
  "githubId": 1155801,
  "keys": [
    {
      "fingerprint": "E44E 9EA5 4B8E 256A FB73 49D3 EC9D 3708 72BC 7A8C"
    }
  ],
  "name": "nicoo",
  "handle": "nicoo"
}

❯ ./get-maintainer.sh name 'Silvan Mosberger'
{
  "email": "contact@infinisil.com",
  "github": "infinisil",
  "githubId": 20525370,
  "keys": [
    {
      "fingerprint": "6C2B 55D4 4E04 8266 6B7D  DA1A 422E 9EDA E015 7170"
    }
  ],
  "matrix": "@infinisil:matrix.org",
  "name": "Silvan Mosberger",
  "handle": "infinisil"
}
```

The maintainer is designated by a `selector` which must be one of:
- `handle` (default): the maintainer's attribute name in `lib.maintainers`;
- `email`, `name`, `github`, `githubId`, `matrix`, `name`:
  attributes of the maintainer's object, matched exactly; see [`maintainer-list.nix`] for the fields' definition.


### `get-maintainer-pings-between.sh`

Gets which maintainers would be pinged between two Nixpkgs revisions.
Outputs a JSON object on stdout mapping GitHub usernames to the attributes that they would be getting pinged for.

Example:

```sh
maintainers/scripts/get-maintainer-pings-between.sh HEAD^ HEAD
```

## Conventions

### `sha-to-sri.py`

`sha-to-sri.py path ...` (atomically) rewrites hash attributes (named `hash` or `sha(1|256|512)`) into the SRI format: `hash = "{hash name}-{base64 encoded value}"`.

`path` must point to either a nix file, or a directory which will be automatically traversed.

`sha-to-sri.py` automatically skips files whose first non-empty line contains `generated by` or `do not edit`.
Moreover, when walking a directory tree, the script will skip files whose name is `yarn.nix` or contains `generated`.

Chunks
f644a2bc (1st chunk of `maintainers/scripts/README.md`)
Title: Nixpkgs Maintainer Scripts Overview
Summary
This document describes a set of executable scripts located in the `maintainers/scripts` folder, designed for nixpkgs maintainers. These scripts are not a stable interface and may change. Key scripts include `get-maintainer.sh`, which returns a JSON object with a maintainer's details (email, GitHub, etc.) based on various selectors like handle or name; `get-maintainer-pings-between.sh`, which identifies maintainers to be pinged between two Nixpkgs revisions; and `sha-to-sri.py`, which converts traditional hash attributes (e.g., `sha256`) in Nix files to the Subresource Integrity (SRI) format, automatically skipping generated files or specific file names like `yarn.nix`.