···1# Nixpkgs Maintainers
23-The *Nixpkgs maintainers* are people who have assigned themselves to
4-maintain specific individual packages. We encourage people who care
5-about a package to assign themselves as a maintainer. When a pull
6-request is made against a package, OfBorg will notify the appropriate
7-maintainer(s).
0000000000000000000000000000000000000000000000000000089## Reviewing contributions
10
···1# Nixpkgs Maintainers
23+Unlike other packaging ecosystems, the maintainer doesn't have exclusive
4+control over the packages and modules they maintain. This more fluid approach
5+is one reason why we scale to so many packages.
6+7+## Definition and role of the maintainer
8+9+The main responsibility of a maintainer is to keep the packages they maintain
10+in a functioning state, and keep up with updates. In order to do that, they
11+are empowered to make decisions over the packages they maintain.
12+13+That being said, the maintainer is not alone proposing changes to the
14+packages. Anybody (both bots and humans) can send PRs to bump or tweak the
15+package.
16+17+We also allow other non-maintainer committers to merge changes to the package,
18+provided enough time and priority has been given to the maintainer.
19+20+For most packages, we expect committers to wait at least a week before merging
21+changes not endorsed by a package maintainer (which may be themselves). This should leave enough time
22+for the maintainers to provide feedback.
23+24+For critical packages, this convention needs to be negotiated with the
25+maintainer. A critical package is one that causes mass-rebuild, or where an
26+author is listed in the [`CODEOWNERS`](../.github/CODEOWNERS) file.
27+28+In case of critical security updates, the [security team](https://nixos.org/community/teams/security) might override these
29+heuristics in order to get the fixes in as fast as possible.
30+31+In case of conflict, the maintainer takes priority and is allowed to revert
32+the changes. This can happen for example if the maintainer was on holiday.
33+34+### How to become a maintainer
35+36+We encourage people who care about a package to assign themselves as a
37+maintainer. Commit access to the Nixpkgs repository is not required for that.
38+39+In order to do so, add yourself to the
40+[`maintainer-list.nix`](./maintainer-list.nix), and then to the desired
41+package's `meta.maintainers` list, and send a PR with the changes.
42+43+### How to lose maintainer status
44+45+Maintainers who have become inactive on a given package can be removed. This
46+helps us keep an accurate view of the state of maintenance in Nixpkgs.
47+48+The inactivity measure is currently not strictly enforced. We would typically
49+look at it if we notice that the author hasn't reacted to package-related
50+notifications for more than 3 months.
51+52+Removing the maintainer happens by making a PR on the package, adding that
53+person as a reviewer, and then waiting a week for a reaction.
54+55+The maintainer is welcome to come back at any time.
56+57+### Tools for maintainers
58+59+When a pull request is made against a package, OfBorg will notify the
60+appropriate maintainer(s).
6162## Reviewing contributions
63
+2
nixos/doc/manual/release-notes/rl-2311.section.md
···221222- `services.prometheus.exporters` has a new [exporter](https://github.com/hipages/php-fpm_exporter) to monitor PHP-FPM processes, see [#240394](https://github.com/NixOS/nixpkgs/pull/240394) for more details.
22300224- `programs.gnupg.agent.pinentryFlavor` is now set in `/etc/gnupg/gpg-agent.conf`, and will no longer take precedence over a `pinentry-program` set in `~/.gnupg/gpg-agent.conf`.
225226- `services.influxdb2` now supports doing an automatic initial setup and provisioning of users, organizations, buckets and authentication tokens, see [#249502](https://github.com/NixOS/nixpkgs/pull/249502) for more details.
···221222- `services.prometheus.exporters` has a new [exporter](https://github.com/hipages/php-fpm_exporter) to monitor PHP-FPM processes, see [#240394](https://github.com/NixOS/nixpkgs/pull/240394) for more details.
223224+- `services.github-runner` / `services.github-runners.<name>` gained the option `nodeRuntimes`. The option defaults to `[ "node20" ]`, i.e., the service supports Node.js 20 GitHub Actions only. The list of Node.js versions accepted by `nodeRuntimes` tracks the versions the upstream GitHub Actions runner supports. See [#249103](https://github.com/NixOS/nixpkgs/pull/249103) for details.
225+226- `programs.gnupg.agent.pinentryFlavor` is now set in `/etc/gnupg/gpg-agent.conf`, and will no longer take precedence over a `pinentry-program` set in `~/.gnupg/gpg-agent.conf`.
227228- `services.influxdb2` now supports doing an automatic initial setup and provisioning of users, organizations, buckets and authentication tokens, see [#249502](https://github.com/NixOS/nixpkgs/pull/249502) for more details.
···2223let
24 workDir = if cfg.workDir == null then runtimeDir else cfg.workDir;
025in
26{
27 description = "GitHub Actions runner";
···4748 serviceConfig = mkMerge [
49 {
50- ExecStart = "${cfg.package}/bin/Runner.Listener run --startuptype service";
5152 # Does the following, sequentially:
53 # - If the module configuration or the token has changed, purge the state directory,
···149 else
150 args+=(--token "$token")
151 fi
152- ${cfg.package}/bin/Runner.Listener configure "''${args[@]}"
153 # Move the automatically created _diag dir to the logs dir
154 mkdir -p "$STATE_DIRECTORY/_diag"
155 cp -r "$STATE_DIRECTORY/_diag/." "$LOGS_DIRECTORY/"
···2223let
24 workDir = if cfg.workDir == null then runtimeDir else cfg.workDir;
25+ package = cfg.package.override { inherit (cfg) nodeRuntimes; };
26in
27{
28 description = "GitHub Actions runner";
···4849 serviceConfig = mkMerge [
50 {
51+ ExecStart = "${package}/bin/Runner.Listener run --startuptype service";
5253 # Does the following, sequentially:
54 # - If the module configuration or the token has changed, purge the state directory,
···150 else
151 args+=(--token "$token")
152 fi
153+ ${package}/bin/Runner.Listener configure "''${args[@]}"
154 # Move the automatically created _diag dir to the logs dir
155 mkdir -p "$STATE_DIRECTORY/_diag"
156 cp -r "$STATE_DIRECTORY/_diag/." "$LOGS_DIRECTORY/"
···19651966 ant-dracula-theme = throw "ant-dracula-theme is now dracula-theme, and theme name is Dracula instead of Ant-Dracula";
1967 dina-font-pcf = dina-font; # Added 2020-02-09
1968- dnscrypt-proxy = throw "dnscrypt-proxy has been removed. Please use dnscrypt-proxy2"; # Added 2020-02-02
1969 gcc-snapshot = throw "gcc-snapshot: Marked as broken for >2 years, additionally this 'snapshot' pointed to a fairly old one from gcc7";
1970 gnatsd = nats-server; # Added 2019-10-28
1971
···19651966 ant-dracula-theme = throw "ant-dracula-theme is now dracula-theme, and theme name is Dracula instead of Ant-Dracula";
1967 dina-font-pcf = dina-font; # Added 2020-02-09
1968+ dnscrypt-proxy2 = dnscrypt-proxy; # Added 2023-02-02
1969 gcc-snapshot = throw "gcc-snapshot: Marked as broken for >2 years, additionally this 'snapshot' pointed to a fairly old one from gcc7";
1970 gnatsd = nats-server; # Added 2019-10-28
1971