nixpkgs/maintainers/scripts
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00
..
bootstrap-files
check-maintainer-usernames maintainers/scripts: add check-maintainer-usernames 2024-12-06 14:18:06 +01:00
convert-to-import-cargo-lock treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
doc
haskell treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
kde
pluginupdate-py
__init__.py
all-tarballs.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
build.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
check-by-name.sh
check-cherry-picks.sh
check-hydra-by-maintainer.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
check-maintainer-github-handles.sh
check-maintainers-sorted.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
convert-to-import-cargo-lock.sh
copy-tarballs.pl
db-to-md.sh
debian-patches.sh
dep-licenses.sh
eval-release.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
eval-release.sh
feature-freeze-teams.pl
fetch-kde-qt.sh
find-tarballs.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
fix-maintainers.pl
get-maintainer.sh
hydra_eval_check
hydra-eval-failures.py
luarocks-config.lua
luarocks-packages.csv
nix-call-package
nix-diff.sh
nix-generate-from-cpan.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
nix-generate-from-cpan.pl
nixpkgs-lint.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
nixpkgs-lint.pl
patchelf-hints.sh
README.md
rebuild-amount.sh
remove-old-aliases.py
sha-to-sri.py
update-channel-branches.sh
update-dotnet-lockfiles.nix
update-octave-packages
update-octave-shell.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
update-python-libraries
update-redirected-urls.sh
update-ruby-packages
update.nix treewide: format all inactive Nix files 2024-12-10 20:26:33 +01:00
update.py
vanity-manual-equalities.txt
vanity.sh

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 maintainers-list.nix.

 ./get-maintainer.sh nicoo
{
  "email": "nicoo@debian.org",
  "github": "nbraud",
  "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.

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.