Merge commit b8d24418ab into haskell-updates
This commit is contained in:
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a bug against the [`hello`](https://search.nixos.org/packages?channel=unstable&from=0&size=1&buckets=%7B%22package_attr_set%22%3A%5B%22No%20package%20set%22%5D%2C%22package_license_set%22%3A%5B%22GNU%20General%20Public%20License%20v3.0%20or%20later%22%5D%2C%22package_maintainers_set%22%3A%5B%5D%2C%22package_platforms%22%3A%5B%5D%7D&sort=relevance&type=packages&query=hello) package about it failing to launch on ARM Linux, your title would be as follows:
|
||||
> `hello: fails to launch on aarch64-linux`
|
||||
> ```
|
||||
> hello: fails to launch on aarch64-linux
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,8 +32,7 @@ body:
|
||||
description: |
|
||||
What version of Nixpkgs are you using?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
|
||||
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -100,7 +101,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a bug against the [`hello`](https://search.nixos.org/packages?channel=unstable&from=0&size=1&buckets=%7B%22package_attr_set%22%3A%5B%22No%20package%20set%22%5D%2C%22package_license_set%22%3A%5B%22GNU%20General%20Public%20License%20v3.0%20or%20later%22%5D%2C%22package_maintainers_set%22%3A%5B%5D%2C%22package_platforms%22%3A%5B%5D%7D&sort=relevance&type=packages&query=hello) package about it failing to launch on Apple Silicon, your title would be as follows:
|
||||
> `hello: fails to launch on aarch64-darwin`
|
||||
> ```
|
||||
> hello: fails to launch on aarch64-darwin
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,8 +32,7 @@ body:
|
||||
description: |
|
||||
What version of Nixpkgs are you using?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
|
||||
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -114,7 +115,7 @@ body:
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
|
||||
If this issue is related to the Darwin packaging architecture as a whole, or is related to the core Darwin frameworks, consider mentioning the `@NixOS/darwin-core` team.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a bug against the [`systemd-boot`](https://search.nixos.org/options?channel=unstable&show=boot.loader.systemd-boot.enable&from=0&size=1) module about it failing to install [`memtest86`](https://search.nixos.org/options?channel=unstable&show=boot.loader.systemd-boot.memtest86.enable&from=0&size=1), your title would be as follows:
|
||||
> `nixos/systemd-boot: fails to install memtest86`
|
||||
> ```
|
||||
> nixos/systemd-boot: fails to install memtest86
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,8 +32,7 @@ body:
|
||||
description: |
|
||||
What version of Nixpkgs are you using?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older version, please [update to the latest stable version](https://nixos.org/download) and check if the issue persists before continuing this bug report.
|
||||
If you are using an older version, please update to the latest stable version and check if the issue persists before continuing this bug report.
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -104,7 +105,7 @@ body:
|
||||
Please note that the maintainer attribute name does not always match the maintainer's GitHub username. If that occurs, try looking in [`maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix) for the maintainer attribute name, and checking if the maintainer has a listed GitHub username.
|
||||
|
||||
If in doubt, check `git blame` for whoever last touched the module, or check the associated package's maintainers. Please add the mentions above the `---` characters.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a build failure against the [`hello`](https://search.nixos.org/packages?channel=unstable&from=0&size=1&buckets=%7B%22package_attr_set%22%3A%5B%22No%20package%20set%22%5D%2C%22package_license_set%22%3A%5B%22GNU%20General%20Public%20License%20v3.0%20or%20later%22%5D%2C%22package_maintainers_set%22%3A%5B%5D%2C%22package_platforms%22%3A%5B%5D%7D&sort=relevance&type=packages&query=hello) package, your title would be as follows:
|
||||
> `Build failure: hello`
|
||||
> ```
|
||||
> Build failure: hello
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,9 +32,9 @@ body:
|
||||
description: |
|
||||
In what version of Nixpkgs did the build failure occur?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older version, please update to the latest stable version and check if the build failure persists before continuing this report.
|
||||
> If you are purposefully trying to build an ancient version of a package in an older Nixpkgs, please coordinate with the [NixOS Archivists](https://matrix.to/#/#archivists:nixos.org).
|
||||
If you are using an older version, please update to the latest stable version and check if the build failure persists before continuing this report.
|
||||
|
||||
If you are purposefully trying to build an ancient version of a package in an older Nixpkgs, please coordinate with the [NixOS Archivists](https://matrix.to/#/#archivists:nixos.org).
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -109,7 +111,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a request against the out of date `hello` package, where the current version in Nixpkgs is 1.0.0, but the latest version upstream is 1.0.1, your title would be as follows:
|
||||
> `Update Request: hello 1.0.0 → 1.0.1`
|
||||
> ```
|
||||
> Update Request: hello 1.0.0 → 1.0.1
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,9 +32,9 @@ body:
|
||||
description: |
|
||||
What version of Nixpkgs are you using?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older or stable version, please update to the latest **unstable** version and check if the package is still out of date.
|
||||
> If the package has been updated in unstable, but you believe the update should be backported to the stable release of Nixpkgs, please file the '**Request: backport to stable**' form instead.
|
||||
If you are using an older or stable version, please update to the latest **unstable** version and check if the package is still out of date.
|
||||
|
||||
If the package has been updated in unstable, but you believe the update should be backported to the stable release of Nixpkgs, please file the '**Request: backport to stable**' form instead.
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -84,7 +86,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a request against the missing `hello` module, your title would be as follows:
|
||||
> `Module Request: nixos/hello`
|
||||
> ```
|
||||
> Module Request: nixos/hello
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "dropdown"
|
||||
@@ -30,8 +32,7 @@ body:
|
||||
description: |
|
||||
What version of Nixpkgs are you using?
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you are using an older or stable version, please update to the latest **unstable** version and check if the module still does not exist before continuing this request.
|
||||
If you are using an older or stable version, please update to the latest **unstable** version and check if the module still does not exist before continuing this request.
|
||||
options:
|
||||
- "Please select a version."
|
||||
- "- Unstable (25.11)"
|
||||
@@ -60,7 +61,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,23 +9,27 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
> [!CAUTION]
|
||||
> **Before you begin:** Be advised that backports are subject to the [release suitability guidelines](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#changes-acceptable-for-releases).
|
||||
> Stable releases of Nixpkgs do not receive breaking changes, which include major package updates that have incompatible API changes and break backwards compatibility. In the [Semantic Versioning standard](https://semver.org/), this is the first version number. (1.X.X)
|
||||
>
|
||||
> Stable releases of Nixpkgs do not receive breaking changes, which include major package updates that have incompatible API changes and break backwards compatibility. In the [Semantic Versioning standard](https://semver.org/), this is the first version number (1.X.X).
|
||||
>
|
||||
> Generally, only minor package updates, such as security patches, bug fixes and feature additions (but not removals!) will be considered for backporting. Please read the rules above carefully before filing this backport request.
|
||||
|
||||
Welcome to Nixpkgs. Please replace the **`Backport to Stable: PACKAGENAME OLDVERSION → NEWVERSION`** template above with the correct package name (As seen in the [NixOS Package Search](https://search.nixos.org/packages)), the current version of the package in Nixpkgs Stable and the current version of the package in Nixpkgs Unstable.
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing a request against the out of date `hello` package, where the current version in Nixpkgs Unstable is 1.0.1, but the current version in Nixpkgs Stable is 1.0.0, your title would be as follows:
|
||||
> `Backport to Stable: hello 1.0.0 → 1.0.1`
|
||||
> ```
|
||||
> Backport to Stable: hello 1.0.0 → 1.0.1
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "input"
|
||||
@@ -62,7 +66,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,7 +20,9 @@ body:
|
||||
|
||||
> [!TIP]
|
||||
> For instance, if you were filing an issue against the [`hello`](https://search.nixos.org/packages?channel=unstable&from=0&size=1&buckets=%7B%22package_attr_set%22%3A%5B%22No%20package%20set%22%5D%2C%22package_license_set%22%3A%5B%22GNU%20General%20Public%20License%20v3.0%20or%20later%22%5D%2C%22package_maintainers_set%22%3A%5B%5D%2C%22package_platforms%22%3A%5B%5D%7D&sort=relevance&type=packages&query=hello) package about it not having any NixOS-specific documentation, your title would be as follows:
|
||||
> `Missing Documentation: hello`
|
||||
> ```
|
||||
> Missing Documentation: hello
|
||||
> ```
|
||||
|
||||
---
|
||||
- type: "textarea"
|
||||
@@ -46,7 +48,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -9,9 +9,9 @@ body:
|
||||
<p align="center">
|
||||
<a href="https://nixos.org">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/master/logo/nixos-white.png">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-homepage/main/public/logo/nixos-hires.png" width="400px" alt="NixOS logo">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg">
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos-white.svg">
|
||||
<img src="https://raw.githubusercontent.com/NixOS/nixos-artwork/refs/heads/master/logo/nixos.svg" width="400px" alt="NixOS logo">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
@@ -20,6 +20,7 @@ body:
|
||||
|
||||
> [!NOTE]
|
||||
> This form is for reporting unreproducible packages. For more information, see the [Reproducible Builds Status](https://reproducible.nixos.org/) page.
|
||||
>
|
||||
> To report a package that fails to build entirely, please use the "Build Failure" form instead.
|
||||
|
||||
---
|
||||
@@ -119,7 +120,7 @@ body:
|
||||
label: "Notify maintainers"
|
||||
description: |
|
||||
Please mention the people who are in the **Maintainers** list of the offending package. This is done by by searching for the package on the [NixOS Package Search](https://search.nixos.org/packages) and mentioning the people listed under **Maintainers** by prefixing their GitHub usernames with an '@' character. Please add the mentions above the `---` characters in the template below.
|
||||
value: |
|
||||
value: |2
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -30,7 +30,7 @@ For new packages please briefly describe the package or provide a link to its ho
|
||||
- [NixOS 25.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2511.section.md) (or backporting [24.11](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2411.section.md) and [25.05](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2505.section.md) NixOS Release notes)
|
||||
- [ ] (Module updates) Added a release notes entry if the change is significant
|
||||
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module
|
||||
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md).
|
||||
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md), [pkgs/README.md](https://github.com/NixOS/nixpkgs/blob/master/pkgs/README.md), [maintainers/README.md](https://github.com/NixOS/nixpkgs/blob/master/maintainers/README.md) and other contributing documentation in corresponding paths.
|
||||
|
||||
<!--
|
||||
To help with the large amounts of pull requests, we would appreciate your
|
||||
|
||||
@@ -3,9 +3,15 @@ name: Get merge commit
|
||||
description: 'Checks whether the Pull Request is mergeable and checks out the repo at up to two commits: The result of a temporary merge of the head branch into the target branch ("merged"), and the parent of that commit on the target branch ("target"). Handles push events and merge conflicts gracefully.'
|
||||
|
||||
inputs:
|
||||
mergedSha:
|
||||
description: "The merge commit SHA, previously collected."
|
||||
type: string
|
||||
merged-as-untrusted:
|
||||
description: "Whether to checkout the merge commit in the ./untrusted folder."
|
||||
type: boolean
|
||||
targetSha:
|
||||
description: "The target commit SHA, previously collected."
|
||||
type: string
|
||||
target-as-trusted:
|
||||
description: "Whether to checkout the target commit in the ./trusted folder."
|
||||
type: boolean
|
||||
@@ -22,6 +28,7 @@ runs:
|
||||
using: composite
|
||||
steps:
|
||||
- id: commits
|
||||
if: ${{ !inputs.mergedSha && !inputs.targetSha }}
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
script: |
|
||||
@@ -72,17 +79,17 @@ runs:
|
||||
}
|
||||
throw new Error("Not retrying anymore. It's likely that GitHub is having internal issues: check https://www.githubstatus.com.")
|
||||
|
||||
- if: inputs.merged-as-untrusted && (inputs.mergedSha || steps.commits.outputs.mergedSha)
|
||||
# Would be great to do the checkouts in git worktrees of the existing spare checkout instead,
|
||||
# but Nix is broken with them:
|
||||
# https://github.com/NixOS/nix/issues/6073
|
||||
- if: inputs.merged-as-untrusted && steps.commits.outputs.mergedSha
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
ref: ${{ steps.commits.outputs.mergedSha }}
|
||||
ref: ${{ inputs.mergedSha || steps.commits.outputs.mergedSha }}
|
||||
path: untrusted
|
||||
|
||||
- if: inputs.target-as-trusted && steps.commits.outputs.targetSha
|
||||
- if: inputs.target-as-trusted && (inputs.targetSha || steps.commits.outputs.targetSha)
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
ref: ${{ steps.commits.outputs.targetSha }}
|
||||
ref: ${{ inputs.targetSha || steps.commits.outputs.targetSha }}
|
||||
path: trusted
|
||||
|
||||
@@ -4,4 +4,4 @@ updates:
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
labels: [ ]
|
||||
labels: []
|
||||
|
||||
@@ -3,21 +3,21 @@
|
||||
|
||||
"4.workflow: package set update":
|
||||
- any:
|
||||
- head-branch:
|
||||
- '-updates$'
|
||||
- head-branch:
|
||||
- '-updates$'
|
||||
|
||||
"4.workflow: staging":
|
||||
- any:
|
||||
- head-branch:
|
||||
- '^staging-next$'
|
||||
- '^staging-next-'
|
||||
- head-branch:
|
||||
- '^staging-next$'
|
||||
- '^staging-next-'
|
||||
|
||||
"6.topic: haskell":
|
||||
- any:
|
||||
- head-branch:
|
||||
- '^haskell-updates$'
|
||||
- head-branch:
|
||||
- '^haskell-updates$'
|
||||
|
||||
"6.topic: python":
|
||||
- any:
|
||||
- head-branch:
|
||||
- '^python-updates$'
|
||||
- head-branch:
|
||||
- '^python-updates$'
|
||||
|
||||
+21
-21
@@ -5,35 +5,35 @@
|
||||
|
||||
"6.topic: policy discussion":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/**/*
|
||||
- CONTRIBUTING.md
|
||||
- pkgs/README.md
|
||||
- nixos/README.md
|
||||
- maintainers/README.md
|
||||
- lib/README.md
|
||||
- doc/README.md
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/**/*
|
||||
- CONTRIBUTING.md
|
||||
- pkgs/README.md
|
||||
- nixos/README.md
|
||||
- maintainers/README.md
|
||||
- lib/README.md
|
||||
- doc/README.md
|
||||
|
||||
"8.has: documentation":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/**/*
|
||||
- nixos/doc/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/**/*
|
||||
- nixos/doc/**/*
|
||||
|
||||
"backport release-24.11":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/workflows/*
|
||||
- ci/**/*.*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/workflows/*
|
||||
- ci/**/*.*
|
||||
|
||||
"backport release-25.05":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/workflows/*
|
||||
- ci/**/*.*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/workflows/*
|
||||
- ci/**/*.*
|
||||
|
||||
# keep-sorted end
|
||||
|
||||
+392
-392
@@ -5,599 +5,599 @@
|
||||
|
||||
"4.workflow: backport":
|
||||
- any:
|
||||
- base-branch:
|
||||
- '^release-'
|
||||
- '^staging-\d'
|
||||
- '^staging-next-\d'
|
||||
- base-branch:
|
||||
- '^release-'
|
||||
- '^staging-\d'
|
||||
- '^staging-next-\d'
|
||||
|
||||
# NOTE: bsd, darwin and cross-compilation labels are handled by ofborg
|
||||
"6.topic: agda":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/agda.section.md
|
||||
- nixos/tests/agda.nix
|
||||
- pkgs/build-support/agda/**/*
|
||||
- pkgs/development/libraries/agda/**/*
|
||||
- pkgs/top-level/agda-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/agda.section.md
|
||||
- nixos/tests/agda.nix
|
||||
- pkgs/build-support/agda/**/*
|
||||
- pkgs/development/libraries/agda/**/*
|
||||
- pkgs/top-level/agda-packages.nix
|
||||
|
||||
"6.topic: cinnamon":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/cinnamon.nix
|
||||
- nixos/tests/cinnamon.nix
|
||||
- nixos/tests/cinnamon-wayland.nix
|
||||
- pkgs/by-name/ci/cinnamon-*/**/*
|
||||
- pkgs/by-name/cj/cjs/**/*
|
||||
- pkgs/by-name/mu/muffin/**/*
|
||||
- pkgs/by-name/ne/nemo/**/*
|
||||
- pkgs/by-name/ne/nemo-*/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/cinnamon.nix
|
||||
- nixos/tests/cinnamon.nix
|
||||
- nixos/tests/cinnamon-wayland.nix
|
||||
- pkgs/by-name/ci/cinnamon-*/**/*
|
||||
- pkgs/by-name/cj/cjs/**/*
|
||||
- pkgs/by-name/mu/muffin/**/*
|
||||
- pkgs/by-name/ne/nemo/**/*
|
||||
- pkgs/by-name/ne/nemo-*/**/*
|
||||
|
||||
"6.topic: continuous integration":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/**/*
|
||||
- ci/**/*.*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- .github/**/*
|
||||
- ci/**/*.*
|
||||
|
||||
"6.topic: coq":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/science/logic/coq/**/*
|
||||
- pkgs/development/coq-modules/**/*
|
||||
- pkgs/top-level/coq-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/science/logic/coq/**/*
|
||||
- pkgs/development/coq-modules/**/*
|
||||
- pkgs/top-level/coq-packages.nix
|
||||
|
||||
"6.topic: COSMIC":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktop-managers/cosmic.nix
|
||||
- nixos/modules/services/display-managers/cosmic-greeter.nix
|
||||
- nixos/tests/cosmic.nix
|
||||
- pkgs/by-name/co/cosmic-*/**/*
|
||||
- pkgs/by-name/xd/xdg-desktop-portal-cosmic/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktop-managers/cosmic.nix
|
||||
- nixos/modules/services/display-managers/cosmic-greeter.nix
|
||||
- nixos/tests/cosmic.nix
|
||||
- pkgs/by-name/co/cosmic-*/**/*
|
||||
- pkgs/by-name/xd/xdg-desktop-portal-cosmic/*
|
||||
|
||||
"6.topic: crystal":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/crystal/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/crystal/**/*
|
||||
|
||||
"6.topic: cuda":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/cuda-modules/**/*
|
||||
- pkgs/top-level/cuda-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/cuda-modules/**/*
|
||||
- pkgs/top-level/cuda-packages.nix
|
||||
|
||||
"6.topic: deepin":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktops/deepin/**/*
|
||||
- pkgs/desktops/deepin/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktops/deepin/**/*
|
||||
- pkgs/desktops/deepin/**/*
|
||||
|
||||
"6.topic: docker tools":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/virtualization/docker/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/virtualization/docker/**/*
|
||||
|
||||
"6.topic: dotnet":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/dotnet.section.md
|
||||
- maintainers/scripts/update-dotnet-lockfiles.nix
|
||||
- pkgs/build-support/dotnet/**/*
|
||||
- pkgs/development/compilers/dotnet/**/*
|
||||
- pkgs/test/dotnet/**/*
|
||||
- pkgs/top-level/dotnet-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/dotnet.section.md
|
||||
- maintainers/scripts/update-dotnet-lockfiles.nix
|
||||
- pkgs/build-support/dotnet/**/*
|
||||
- pkgs/development/compilers/dotnet/**/*
|
||||
- pkgs/test/dotnet/**/*
|
||||
- pkgs/top-level/dotnet-packages.nix
|
||||
|
||||
"6.topic: emacs":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/editors/emacs.nix
|
||||
- nixos/modules/services/editors/emacs.xml
|
||||
- nixos/tests/emacs-daemon.nix
|
||||
- pkgs/applications/editors/emacs/build-support/**/*
|
||||
- pkgs/applications/editors/emacs/elisp-packages/**/*
|
||||
- pkgs/applications/editors/emacs/**/*
|
||||
- pkgs/top-level/emacs-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/editors/emacs.nix
|
||||
- nixos/modules/services/editors/emacs.xml
|
||||
- nixos/tests/emacs-daemon.nix
|
||||
- pkgs/applications/editors/emacs/build-support/**/*
|
||||
- pkgs/applications/editors/emacs/elisp-packages/**/*
|
||||
- pkgs/applications/editors/emacs/**/*
|
||||
- pkgs/top-level/emacs-packages.nix
|
||||
|
||||
"6.topic: Enlightenment DE":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/enlightenment.nix
|
||||
- pkgs/desktops/enlightenment/**/*
|
||||
- pkgs/development/python-modules/python-efl/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/enlightenment.nix
|
||||
- pkgs/desktops/enlightenment/**/*
|
||||
- pkgs/development/python-modules/python-efl/*
|
||||
|
||||
"6.topic: erlang":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/beam.section.md
|
||||
- pkgs/development/beam-modules/**/*
|
||||
- pkgs/development/interpreters/elixir/**/*
|
||||
- pkgs/development/interpreters/erlang/**/*
|
||||
- pkgs/development/tools/build-managers/rebar/**/*
|
||||
- pkgs/development/tools/build-managers/rebar3/**/*
|
||||
- pkgs/development/tools/erlang/**/*
|
||||
- pkgs/top-level/beam-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/beam.section.md
|
||||
- pkgs/development/beam-modules/**/*
|
||||
- pkgs/development/interpreters/elixir/**/*
|
||||
- pkgs/development/interpreters/erlang/**/*
|
||||
- pkgs/development/tools/build-managers/rebar/**/*
|
||||
- pkgs/development/tools/build-managers/rebar3/**/*
|
||||
- pkgs/development/tools/erlang/**/*
|
||||
- pkgs/top-level/beam-packages.nix
|
||||
|
||||
"6.topic: fetch":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/fetch*/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/fetch*/**/*
|
||||
|
||||
"6.topic: flakes":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- '**/flake.nix'
|
||||
- lib/systems/flake-systems.nix
|
||||
- nixos/modules/config/nix-flakes.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- '**/flake.nix'
|
||||
- lib/systems/flake-systems.nix
|
||||
- nixos/modules/config/nix-flakes.nix
|
||||
|
||||
"6.topic: flutter":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/flutter/*.nix
|
||||
- pkgs/development/compilers/flutter/**/*.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/flutter/*.nix
|
||||
- pkgs/development/compilers/flutter/**/*.nix
|
||||
|
||||
"6.topic: games":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/games/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/games/**/*
|
||||
|
||||
"6.topic: GNOME":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/gnome.section.md
|
||||
- nixos/modules/services/desktops/gnome/**/*
|
||||
- nixos/modules/services/desktop-managers/gnome.nix
|
||||
- nixos/tests/gnome-xorg.nix
|
||||
- nixos/tests/gnome.nix
|
||||
- pkgs/desktops/gnome/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/gnome.section.md
|
||||
- nixos/modules/services/desktops/gnome/**/*
|
||||
- nixos/modules/services/desktop-managers/gnome.nix
|
||||
- nixos/tests/gnome-xorg.nix
|
||||
- nixos/tests/gnome.nix
|
||||
- pkgs/desktops/gnome/**/*
|
||||
|
||||
"6.topic: golang":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/go.section.md
|
||||
- pkgs/build-support/go/**/*
|
||||
- pkgs/development/compilers/go/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/go.section.md
|
||||
- pkgs/build-support/go/**/*
|
||||
- pkgs/development/compilers/go/**/*
|
||||
|
||||
"6.topic: hardware":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/hardware/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/hardware/**/*
|
||||
|
||||
"6.topic: haskell":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/haskell.section.md
|
||||
- maintainers/scripts/haskell/**/*
|
||||
- pkgs/development/compilers/ghc/**/*
|
||||
- pkgs/development/haskell-modules/**/*
|
||||
- pkgs/development/tools/haskell/**/*
|
||||
- pkgs/test/haskell/**/*
|
||||
- pkgs/top-level/haskell-packages.nix
|
||||
- pkgs/top-level/release-haskell.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/haskell.section.md
|
||||
- maintainers/scripts/haskell/**/*
|
||||
- pkgs/development/compilers/ghc/**/*
|
||||
- pkgs/development/haskell-modules/**/*
|
||||
- pkgs/development/tools/haskell/**/*
|
||||
- pkgs/test/haskell/**/*
|
||||
- pkgs/top-level/haskell-packages.nix
|
||||
- pkgs/top-level/release-haskell.nix
|
||||
|
||||
"6.topic: java":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
# Distributions
|
||||
- pkgs/development/compilers/adoptopenjdk-icedtea-web/**/*
|
||||
- pkgs/development/compilers/corretto/**/*
|
||||
- pkgs/development/compilers/graalvm/**/*
|
||||
- pkgs/development/compilers/openjdk/**/*
|
||||
- pkgs/by-name/op/openjfx/**/*
|
||||
- pkgs/development/compilers/semeru-bin/**/*
|
||||
- pkgs/development/compilers/temurin-bin/**/*
|
||||
- pkgs/development/compilers/zulu/**/*
|
||||
# Documentation
|
||||
- doc/languages-frameworks/java.section.md
|
||||
# Gradle
|
||||
- doc/languages-frameworks/gradle.section.md
|
||||
- pkgs/development/tools/build-managers/gradle/**/*
|
||||
- pkgs/by-name/gr/gradle-completion/**/*
|
||||
# Maven
|
||||
- pkgs/by-name/ma/maven/**/*
|
||||
- doc/languages-frameworks/maven.section.md
|
||||
# Ant
|
||||
- pkgs/by-name/an/ant/**/*
|
||||
# javaPackages attrset
|
||||
- pkgs/development/java-modules/**/*
|
||||
- pkgs/top-level/java-packages.nix
|
||||
# Maintainer tooling
|
||||
- pkgs/by-name/ni/nixpkgs-openjdk-updater/**/*
|
||||
# Misc
|
||||
- nixos/modules/programs/java.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
# Distributions
|
||||
- pkgs/development/compilers/adoptopenjdk-icedtea-web/**/*
|
||||
- pkgs/development/compilers/corretto/**/*
|
||||
- pkgs/development/compilers/graalvm/**/*
|
||||
- pkgs/development/compilers/openjdk/**/*
|
||||
- pkgs/by-name/op/openjfx/**/*
|
||||
- pkgs/development/compilers/semeru-bin/**/*
|
||||
- pkgs/development/compilers/temurin-bin/**/*
|
||||
- pkgs/development/compilers/zulu/**/*
|
||||
# Documentation
|
||||
- doc/languages-frameworks/java.section.md
|
||||
# Gradle
|
||||
- doc/languages-frameworks/gradle.section.md
|
||||
- pkgs/development/tools/build-managers/gradle/**/*
|
||||
- pkgs/by-name/gr/gradle-completion/**/*
|
||||
# Maven
|
||||
- pkgs/by-name/ma/maven/**/*
|
||||
- doc/languages-frameworks/maven.section.md
|
||||
# Ant
|
||||
- pkgs/by-name/an/ant/**/*
|
||||
# javaPackages attrset
|
||||
- pkgs/development/java-modules/**/*
|
||||
- pkgs/top-level/java-packages.nix
|
||||
# Maintainer tooling
|
||||
- pkgs/by-name/ni/nixpkgs-openjdk-updater/**/*
|
||||
# Misc
|
||||
- nixos/modules/programs/java.nix
|
||||
|
||||
"6.topic: jitsi":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/networking/jitsi-videobridge.nix
|
||||
- nixos/modules/services/web-apps/jitsi-meet.nix
|
||||
- pkgs/servers/web-apps/jitsi-meet/**/*
|
||||
- pkgs/servers/jitsi-videobridge/**/*
|
||||
- pkgs/applications/networking/instant-messengers/jitsi/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/networking/jitsi-videobridge.nix
|
||||
- nixos/modules/services/web-apps/jitsi-meet.nix
|
||||
- pkgs/servers/web-apps/jitsi-meet/**/*
|
||||
- pkgs/servers/jitsi-videobridge/**/*
|
||||
- pkgs/applications/networking/instant-messengers/jitsi/**/*
|
||||
|
||||
"6.topic: julia":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/julia.section.md
|
||||
- pkgs/development/compilers/julia/**/*
|
||||
- pkgs/development/julia-modules/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/julia.section.md
|
||||
- pkgs/development/compilers/julia/**/*
|
||||
- pkgs/development/julia-modules/**/*
|
||||
|
||||
"6.topic: jupyter":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/python-modules/jupyter*/**/*
|
||||
- pkgs/development/python-modules/mkdocs-jupyter/*
|
||||
- nixos/modules/services/development/jupyter/**/*
|
||||
- pkgs/applications/editors/jupyter-kernels/**/*
|
||||
- pkgs/applications/editors/jupyter/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/python-modules/jupyter*/**/*
|
||||
- pkgs/development/python-modules/mkdocs-jupyter/*
|
||||
- nixos/modules/services/development/jupyter/**/*
|
||||
- pkgs/applications/editors/jupyter-kernels/**/*
|
||||
- pkgs/applications/editors/jupyter/**/*
|
||||
|
||||
"6.topic: k3s":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/cluster/k3s/**/*
|
||||
- nixos/tests/k3s/**/*
|
||||
- pkgs/applications/networking/cluster/k3s/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/cluster/k3s/**/*
|
||||
- nixos/tests/k3s/**/*
|
||||
- pkgs/applications/networking/cluster/k3s/**/*
|
||||
|
||||
"6.topic: kernel":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/kernel/**/*
|
||||
- pkgs/os-specific/linux/kernel/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/build-support/kernel/**/*
|
||||
- pkgs/os-specific/linux/kernel/**/*
|
||||
|
||||
"6.topic: lib":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- lib/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- lib/**
|
||||
|
||||
"6.topic: llvm/clang":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/llvm/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/llvm/**/*
|
||||
|
||||
"6.topic: lua":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/tools/misc/luarocks/*
|
||||
- pkgs/development/interpreters/lua-5/**/*
|
||||
- pkgs/development/interpreters/luajit/**/*
|
||||
- pkgs/development/lua-modules/**/*
|
||||
- pkgs/top-level/lua-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/tools/misc/luarocks/*
|
||||
- pkgs/development/interpreters/lua-5/**/*
|
||||
- pkgs/development/interpreters/luajit/**/*
|
||||
- pkgs/development/lua-modules/**/*
|
||||
- pkgs/top-level/lua-packages.nix
|
||||
|
||||
"6.topic: Lumina DE":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/lumina.nix
|
||||
- pkgs/desktops/lumina/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/lumina.nix
|
||||
- pkgs/desktops/lumina/**/*
|
||||
|
||||
"6.topic: LXQt":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/lxqt.nix
|
||||
- pkgs/desktops/lxqt/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/lxqt.nix
|
||||
- pkgs/desktops/lxqt/**/*
|
||||
|
||||
"6.topic: mate":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/mate.nix
|
||||
- nixos/tests/mate.nix
|
||||
- pkgs/desktops/mate/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/x11/desktop-managers/mate.nix
|
||||
- nixos/tests/mate.nix
|
||||
- pkgs/desktops/mate/**/*
|
||||
|
||||
"6.topic: module system":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- lib/modules.nix
|
||||
- lib/types.nix
|
||||
- lib/options.nix
|
||||
- lib/tests/modules.sh
|
||||
- lib/tests/modules/**
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- lib/modules.nix
|
||||
- lib/types.nix
|
||||
- lib/options.nix
|
||||
- lib/tests/modules.sh
|
||||
- lib/tests/modules/**
|
||||
|
||||
"6.topic: musl":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/linux/musl/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/linux/musl/**/*
|
||||
|
||||
"6.topic: nim":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/nim.section.md
|
||||
- pkgs/build-support/build-nim-package.nix
|
||||
- pkgs/build-support/build-nim-sbom.nix
|
||||
- pkgs/by-name/ni/nim*
|
||||
- pkgs/top-level/nim-overrides.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/nim.section.md
|
||||
- pkgs/build-support/build-nim-package.nix
|
||||
- pkgs/build-support/build-nim-sbom.nix
|
||||
- pkgs/by-name/ni/nim*
|
||||
- pkgs/top-level/nim-overrides.nix
|
||||
|
||||
"6.topic: nixos":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/**/*
|
||||
- pkgs/by-name/sw/switch-to-configuration-ng/**/*
|
||||
- pkgs/by-name/ni/nixos-rebuild-ng/**/*
|
||||
- pkgs/os-specific/linux/nixos-rebuild/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/**/*
|
||||
- pkgs/by-name/sw/switch-to-configuration-ng/**/*
|
||||
- pkgs/by-name/ni/nixos-rebuild-ng/**/*
|
||||
- pkgs/os-specific/linux/nixos-rebuild/**/*
|
||||
|
||||
"6.topic: nixos-container":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/virtualisation/nixos-containers.nix
|
||||
- pkgs/tools/virtualization/nixos-container/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/virtualisation/nixos-containers.nix
|
||||
- pkgs/tools/virtualization/nixos-container/**/*
|
||||
|
||||
"6.topic: nodejs":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/javascript.section.md
|
||||
- pkgs/build-support/node/**/*
|
||||
- pkgs/development/node-packages/**/*
|
||||
- pkgs/development/tools/yarn/*
|
||||
- pkgs/development/tools/yarn2nix-moretea/**/*
|
||||
- pkgs/development/tools/pnpm/**/*
|
||||
- pkgs/development/web/nodejs/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/javascript.section.md
|
||||
- pkgs/build-support/node/**/*
|
||||
- pkgs/development/node-packages/**/*
|
||||
- pkgs/development/tools/yarn/*
|
||||
- pkgs/development/tools/yarn2nix-moretea/**/*
|
||||
- pkgs/development/tools/pnpm/**/*
|
||||
- pkgs/development/web/nodejs/*
|
||||
|
||||
"6.topic: nvidia":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/hardware/video/nvidia.nix
|
||||
- nixos/modules/services/hardware/nvidia-container-toolkit/**/*
|
||||
- nixos/modules/services/hardware/nvidia-optimus.nix
|
||||
- pkgs/os-specific/linux/nvidia-x11/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/hardware/video/nvidia.nix
|
||||
- nixos/modules/services/hardware/nvidia-container-toolkit/**/*
|
||||
- nixos/modules/services/hardware/nvidia-optimus.nix
|
||||
- pkgs/os-specific/linux/nvidia-x11/**/*
|
||||
|
||||
"6.topic: ocaml":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/ocaml.section.md
|
||||
- pkgs/development/compilers/ocaml/**/*
|
||||
- pkgs/development/compilers/reason/**/*
|
||||
- pkgs/development/ocaml-modules/**/*
|
||||
- pkgs/development/tools/ocaml/**/*
|
||||
- pkgs/top-level/ocaml-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/ocaml.section.md
|
||||
- pkgs/development/compilers/ocaml/**/*
|
||||
- pkgs/development/compilers/reason/**/*
|
||||
- pkgs/development/ocaml-modules/**/*
|
||||
- pkgs/development/tools/ocaml/**/*
|
||||
- pkgs/top-level/ocaml-packages.nix
|
||||
|
||||
"6.topic: pantheon":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktops/pantheon/**/*
|
||||
- nixos/modules/services/x11/desktop-managers/pantheon.nix
|
||||
- nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix
|
||||
- nixos/tests/pantheon.nix
|
||||
- pkgs/desktops/pantheon/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/desktops/pantheon/**/*
|
||||
- nixos/modules/services/x11/desktop-managers/pantheon.nix
|
||||
- nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix
|
||||
- nixos/tests/pantheon.nix
|
||||
- pkgs/desktops/pantheon/**/*
|
||||
|
||||
"6.topic: php":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/php.section.md
|
||||
- nixos/tests/php/**/*
|
||||
- pkgs/build-support/php/**/*
|
||||
- pkgs/development/interpreters/php/**/*
|
||||
- pkgs/development/php-packages/**/*
|
||||
- pkgs/test/php/default.nix
|
||||
- pkgs/top-level/php-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/php.section.md
|
||||
- nixos/tests/php/**/*
|
||||
- pkgs/build-support/php/**/*
|
||||
- pkgs/development/interpreters/php/**/*
|
||||
- pkgs/development/php-packages/**/*
|
||||
- pkgs/test/php/default.nix
|
||||
- pkgs/top-level/php-packages.nix
|
||||
|
||||
"6.topic: printing":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/printing/cupsd.nix
|
||||
- pkgs/misc/cups/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/services/printing/cupsd.nix
|
||||
- pkgs/misc/cups/**/*
|
||||
|
||||
"6.topic: python":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/python.section.md
|
||||
- pkgs/development/interpreters/python/**/*
|
||||
- pkgs/development/python-modules/**/*
|
||||
- pkgs/top-level/python-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/python.section.md
|
||||
- pkgs/development/interpreters/python/**/*
|
||||
- pkgs/development/python-modules/**/*
|
||||
- pkgs/top-level/python-packages.nix
|
||||
|
||||
"6.topic: qt/kde":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/qt.section.md
|
||||
- nixos/modules/services/x11/desktop-managers/plasma5.nix
|
||||
- nixos/tests/plasma5.nix
|
||||
- pkgs/applications/kde/**/*
|
||||
- pkgs/desktops/plasma-5/**/*
|
||||
- pkgs/development/libraries/kde-frameworks/**/*
|
||||
- pkgs/development/libraries/qt-5/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/qt.section.md
|
||||
- nixos/modules/services/x11/desktop-managers/plasma5.nix
|
||||
- nixos/tests/plasma5.nix
|
||||
- pkgs/applications/kde/**/*
|
||||
- pkgs/desktops/plasma-5/**/*
|
||||
- pkgs/development/libraries/kde-frameworks/**/*
|
||||
- pkgs/development/libraries/qt-5/**/*
|
||||
|
||||
"6.topic: R":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/science/math/R/**/*
|
||||
- pkgs/development/r-modules/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/science/math/R/**/*
|
||||
- pkgs/development/r-modules/**/*
|
||||
|
||||
"6.topic: rocm":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/rocm-modules/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/rocm-modules/**/*
|
||||
|
||||
"6.topic: ruby":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/ruby.section.md
|
||||
- pkgs/development/interpreters/ruby/**/*
|
||||
- pkgs/development/ruby-modules/**/*
|
||||
- pkgs/top-level/ruby-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/ruby.section.md
|
||||
- pkgs/development/interpreters/ruby/**/*
|
||||
- pkgs/development/ruby-modules/**/*
|
||||
- pkgs/top-level/ruby-packages.nix
|
||||
|
||||
"6.topic: rust":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/rust.section.md
|
||||
- pkgs/build-support/rust/**/*
|
||||
- pkgs/development/compilers/rust/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/rust.section.md
|
||||
- pkgs/build-support/rust/**/*
|
||||
- pkgs/development/compilers/rust/**/*
|
||||
|
||||
"6.topic: stdenv":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/stdenv/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/stdenv/**/*
|
||||
|
||||
"6.topic: steam":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/games/steam/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/games/steam/**/*
|
||||
|
||||
"6.topic: systemd":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/linux/systemd/**/*
|
||||
- nixos/modules/system/boot/systemd*/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/linux/systemd/**/*
|
||||
- nixos/modules/system/boot/systemd*/**/*
|
||||
|
||||
"6.topic: tcl":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/tcl.section.md
|
||||
- pkgs/development/interpreters/tcl/*
|
||||
- pkgs/development/tcl-modules/**/*
|
||||
- pkgs/top-level/tcl-packages.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/tcl.section.md
|
||||
- pkgs/development/interpreters/tcl/*
|
||||
- pkgs/development/tcl-modules/**/*
|
||||
- pkgs/top-level/tcl-packages.nix
|
||||
|
||||
"6.topic: teams":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- maintainers/team-list.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- maintainers/team-list.nix
|
||||
|
||||
"6.topic: testing":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
# NOTE: Let's keep the scope limited to test frameworks that are
|
||||
# *developed in this repo*;
|
||||
# - not individual tests
|
||||
# - not packages for test frameworks
|
||||
- pkgs/build-support/testers/**
|
||||
- nixos/lib/testing/**
|
||||
- nixos/lib/test-driver/**
|
||||
- nixos/tests/nixos-test-driver/**
|
||||
- nixos/lib/testing-python.nix # legacy
|
||||
- nixos/tests/make-test-python.nix # legacy
|
||||
# lib/debug.nix has a test framework (runTests) but it's not the main focus
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
# NOTE: Let's keep the scope limited to test frameworks that are
|
||||
# *developed in this repo*;
|
||||
# - not individual tests
|
||||
# - not packages for test frameworks
|
||||
- pkgs/build-support/testers/**
|
||||
- nixos/lib/testing/**
|
||||
- nixos/lib/test-driver/**
|
||||
- nixos/tests/nixos-test-driver/**
|
||||
- nixos/lib/testing-python.nix # legacy
|
||||
- nixos/tests/make-test-python.nix # legacy
|
||||
# lib/debug.nix has a test framework (runTests) but it's not the main focus
|
||||
|
||||
"6.topic: TeX":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/texlive.section.md
|
||||
- pkgs/test/texlive/**
|
||||
- pkgs/tools/typesetting/tex/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/texlive.section.md
|
||||
- pkgs/test/texlive/**
|
||||
- pkgs/tools/typesetting/tex/**/*
|
||||
|
||||
"6.topic: updaters":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/common-updater/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/common-updater/**/*
|
||||
|
||||
"6.topic: vim":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/vim.section.md
|
||||
- pkgs/applications/editors/vim/**/*
|
||||
- pkgs/applications/editors/vim/plugins/**/*
|
||||
- nixos/modules/programs/neovim.nix
|
||||
- pkgs/applications/editors/neovim/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- doc/languages-frameworks/vim.section.md
|
||||
- pkgs/applications/editors/vim/**/*
|
||||
- pkgs/applications/editors/vim/plugins/**/*
|
||||
- nixos/modules/programs/neovim.nix
|
||||
- pkgs/applications/editors/neovim/**/*
|
||||
|
||||
"6.topic: vscode":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/editors/vscode/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/applications/editors/vscode/**/*
|
||||
|
||||
"6.topic: windows":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/windows/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/os-specific/windows/**/*
|
||||
|
||||
"6.topic: xen-project":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/virtualisation/xen*
|
||||
- pkgs/by-name/xe/xen/*
|
||||
- pkgs/by-name/qe/qemu_xen/*
|
||||
- pkgs/by-name/xe/xen-guest-agent/*
|
||||
- pkgs/by-name/xt/xtf/*
|
||||
- pkgs/build-support/xen/*
|
||||
- pkgs/development/ocaml-modules/xen*/*
|
||||
- pkgs/development/ocaml-modules/vchan/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/virtualisation/xen*
|
||||
- pkgs/by-name/xe/xen/*
|
||||
- pkgs/by-name/qe/qemu_xen/*
|
||||
- pkgs/by-name/xe/xen-guest-agent/*
|
||||
- pkgs/by-name/xt/xtf/*
|
||||
- pkgs/build-support/xen/*
|
||||
- pkgs/development/ocaml-modules/xen*/*
|
||||
- pkgs/development/ocaml-modules/vchan/*
|
||||
|
||||
"6.topic: xfce":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/doc/manual/configuration/xfce.xml
|
||||
- nixos/modules/services/x11/desktop-managers/xfce.nix
|
||||
- nixos/tests/xfce.nix
|
||||
- pkgs/desktops/xfce/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/doc/manual/configuration/xfce.xml
|
||||
- nixos/modules/services/x11/desktop-managers/xfce.nix
|
||||
- nixos/tests/xfce.nix
|
||||
- pkgs/desktops/xfce/**/*
|
||||
|
||||
"6.topic: zig":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/zig/**/*
|
||||
- doc/hooks/zig.section.md
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- pkgs/development/compilers/zig/**/*
|
||||
- doc/hooks/zig.section.md
|
||||
|
||||
"8.has: changelog":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/doc/manual/release-notes/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/doc/manual/release-notes/**/*
|
||||
|
||||
"8.has: maintainer-list (update)":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- maintainers/maintainer-list.nix
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- maintainers/maintainer-list.nix
|
||||
|
||||
"8.has: module (update)":
|
||||
- any:
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/**/*
|
||||
- changed-files:
|
||||
- any-glob-to-any-file:
|
||||
- nixos/modules/**/*
|
||||
|
||||
# keep-sorted end
|
||||
|
||||
@@ -18,3 +18,25 @@ Some architectural notes about key decisions and concepts in our workflows:
|
||||
- **head commit**: The HEAD commit in the pull request's branch. Same as `github.event.pull_request.head.sha`.
|
||||
- **merge commit**: The temporary "test merge commit" that GitHub Actions creates and updates for the pull request. Same as `refs/pull/${{ github.event.pull_request.number }}/merge`.
|
||||
- **target commit**: The base branch's parent of the "test merge commit" to compare against.
|
||||
|
||||
## Concurrency Groups
|
||||
|
||||
We use [GitHub's Concurrency Groups](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs) to cancel older jobs on pushes to Pull Requests.
|
||||
When two workflows are in the same group, a newer workflow cancels an older workflow.
|
||||
Thus, it is important how to construct the group keys:
|
||||
|
||||
- Because we want to run jobs for different events at same time, we add `github.event_name` to the key. This is the case for the `pull_request` which runs on changes to the workflow files to test the new files and the same workflow from the base branch run via `pull_request_event`.
|
||||
|
||||
- We don't want workflows of different Pull Requests to cancel each other, so we include `github.event.pull_request.number`. The [GitHub docs](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/control-the-concurrency-of-workflows-and-jobs#example-using-a-fallback-value) show using `github.head_ref` for this purpose, but this doesn't work well with forks: Different users could have the same head branch name in their forks and run CI for their PRs at the same time.
|
||||
|
||||
- Sometimes, there is no `pull_request.number`. To ensure non-PR runs are never cancelled, we add a fallback of `github.run_id`. This is a unique value for each workflow run.
|
||||
|
||||
- Of course, we run multiple workflows at the same time, so we add `github.workflow` to the key. Otherwise workflows would cancel each other.
|
||||
|
||||
- There is a special case for reusable workflows called via `workflow_call` - they will have `github.workflow` set to their parent workflow's name. Thus, they would cancel each other. That's why we additionally hardcode the name of the workflow as well.
|
||||
|
||||
This results in a key with the following semantics:
|
||||
|
||||
```
|
||||
<running-workflow>-<triggering-workflow>-<triggered-event>-<pull-request/fallback>
|
||||
```
|
||||
|
||||
@@ -9,11 +9,19 @@ on:
|
||||
pull_request_target:
|
||||
types: [closed, labeled]
|
||||
|
||||
concurrency:
|
||||
group: backport-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
backport:
|
||||
name: Backport Pull Request
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
name: Build
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
mergedSha:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
CACHIX_AUTH_TOKEN:
|
||||
required: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: ubuntu-24.04
|
||||
system: x86_64-linux
|
||||
builds: [shell, manual-nixos, lib-tests]
|
||||
- runner: ubuntu-24.04-arm
|
||||
system: aarch64-linux
|
||||
builds: [shell, manual-nixos, manual-nixpkgs, manual-nixpkgs-tests]
|
||||
- runner: macos-13
|
||||
system: x86_64-darwin
|
||||
builds: [shell]
|
||||
- runner: macos-14
|
||||
system: aarch64-darwin
|
||||
builds: [shell]
|
||||
name: ${{ matrix.system }}
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
mergedSha: ${{ inputs.mergedSha }}
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||
with:
|
||||
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
|
||||
name: nixpkgs-ci
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Build shell
|
||||
if: contains(matrix.builds, 'shell')
|
||||
run: nix-build untrusted/ci -A shell
|
||||
|
||||
- name: Build NixOS manual
|
||||
if: |
|
||||
contains(matrix.builds, 'manual-nixos') && !cancelled() &&
|
||||
(github.base_ref == 'master' || startsWith(github.base_ref, 'release-'))
|
||||
run: nix-build untrusted/ci -A manual-nixos --argstr system ${{ matrix.system }} --out-link nixos-manual
|
||||
|
||||
- name: Build Nixpkgs manual
|
||||
if: contains(matrix.builds, 'manual-nixpkgs') && !cancelled()
|
||||
run: nix-build untrusted/ci -A manual-nixpkgs -A manual-nixpkgs-tests
|
||||
|
||||
- name: Build Nixpkgs manual tests
|
||||
if: contains(matrix.builds, 'manual-nixpkgs-tests') && !cancelled()
|
||||
run: nix-build untrusted/ci -A manual-nixpkgs-tests
|
||||
|
||||
- name: Build lib tests
|
||||
if: contains(matrix.builds, 'lib-tests') && !cancelled()
|
||||
run: nix-build untrusted/ci -A lib-tests
|
||||
|
||||
- name: Upload NixOS manual
|
||||
if: |
|
||||
contains(matrix.builds, 'manual-nixos') && !cancelled() &&
|
||||
(github.base_ref == 'master' || startsWith(github.base_ref, 'release-'))
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: nixos-manual-${{ matrix.system }}
|
||||
path: nixos-manual
|
||||
if-no-files-found: error
|
||||
@@ -1,46 +0,0 @@
|
||||
name: Check that files are formatted
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/check-format.yml
|
||||
pull_request_target:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
nixos:
|
||||
name: fmt-check
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Check that files are formatted
|
||||
run: |
|
||||
# Note that it's fine to run this on untrusted code because:
|
||||
# - There's no secrets accessible here
|
||||
# - The build is sandboxed
|
||||
if ! nix-build untrusted/ci -A fmt.check; then
|
||||
echo "Some files are not properly formatted"
|
||||
echo "Please format them by going to the Nixpkgs root directory and running one of:"
|
||||
echo " nix-shell --run treefmt"
|
||||
echo " nix develop --command treefmt"
|
||||
echo " nix fmt"
|
||||
echo "Make sure your branch is up to date with master; rebase if not."
|
||||
echo "If you're having trouble, please ping @NixOS/nix-formatting"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,54 +0,0 @@
|
||||
name: "Check shell"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/check-shell.yml
|
||||
pull_request_target:
|
||||
paths:
|
||||
- 'shell.nix'
|
||||
- 'ci/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
shell-check:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: ubuntu-24.04
|
||||
system: x86_64-linux
|
||||
- runner: ubuntu-24.04-arm
|
||||
system: aarch64-linux
|
||||
- runner: macos-13
|
||||
system: x86_64-darwin
|
||||
- runner: macos-14
|
||||
system: aarch64-darwin
|
||||
|
||||
name: shell-check-${{ matrix.system }}
|
||||
runs-on: ${{ matrix.runner }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
|
||||
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||
with:
|
||||
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
|
||||
name: nixpkgs-ci
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Build shell
|
||||
run: nix-build untrusted/ci -A shell
|
||||
@@ -1,25 +1,38 @@
|
||||
name: "Check cherry-picks"
|
||||
name: Check
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/check-cherry-picks.yml
|
||||
pull_request_target:
|
||||
branches:
|
||||
- 'release-**'
|
||||
- 'staging-**'
|
||||
- '!staging-next'
|
||||
workflow_call:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
permissions: {}
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: cherry-pick-check
|
||||
no-channel-base:
|
||||
name: no channel base
|
||||
if: |
|
||||
startsWith(github.base_ref, 'nixos-') ||
|
||||
startsWith(github.base_ref, 'nixpkgs-')
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- run: |
|
||||
cat <<EOF
|
||||
The nixos-* and nixpkgs-* branches are pushed to by the channel
|
||||
release script and should not be merged into directly.
|
||||
|
||||
Please target the equivalent release-* branch or master instead.
|
||||
EOF
|
||||
exit 1
|
||||
|
||||
cherry-pick:
|
||||
if: |
|
||||
github.event_name == 'pull_request' ||
|
||||
startsWith(github.base_ref, 'release-') ||
|
||||
(startsWith(github.base_ref, 'staging-') && github.base_ref != 'staging-next')
|
||||
permissions:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
@@ -30,11 +30,15 @@ on:
|
||||
types: [opened, ready_for_review, synchronize, reopened]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
group: codeowners-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
env:
|
||||
OWNERS_FILE: ci/OWNERS
|
||||
# Don't do anything on draft PRs
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
name: Dismissed review
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows:
|
||||
- Review dismissed
|
||||
types: [completed]
|
||||
|
||||
concurrency:
|
||||
group: dismissed-review-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
# The `check-cherry-picks` workflow creates review comments which reviewers
|
||||
# are encouraged to manually dismiss if they're not relevant.
|
||||
# When a CI-generated review is dismissed, this job automatically minimizes
|
||||
# it, preventing it from cluttering the PR.
|
||||
minimize:
|
||||
name: Minimize as resolved
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
script: |
|
||||
// PRs from forks don't have any PRs associated by default.
|
||||
// Thus, we request the PR number with an API call *to* the fork's repo.
|
||||
// Multiple pull requests can be open from the same head commit, either via
|
||||
// different base branches or head branches.
|
||||
const { head_repository, head_sha, repository } = context.payload.workflow_run
|
||||
await Promise.all(
|
||||
(await github.paginate(github.rest.repos.listPullRequestsAssociatedWithCommit, {
|
||||
owner: head_repository.owner.login,
|
||||
repo: head_repository.name,
|
||||
commit_sha: head_sha
|
||||
}))
|
||||
.filter(pull_request => pull_request.base.repo.id == repository.id)
|
||||
.map(async (pull_request) =>
|
||||
Promise.all(
|
||||
(await github.paginate(github.rest.pulls.listReviews, {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
pull_number: pull_request.number
|
||||
})).filter(review =>
|
||||
review.user.login == 'github-actions[bot]' &&
|
||||
review.state == 'DISMISSED'
|
||||
).map(review => github.graphql(`
|
||||
mutation($node_id:ID!) {
|
||||
minimizeComment(input: {
|
||||
classifier: RESOLVED,
|
||||
subjectId: $node_id
|
||||
})
|
||||
{ clientMutationId }
|
||||
}`,
|
||||
{ node_id: review.node_id }
|
||||
))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -17,11 +17,15 @@ on:
|
||||
types: [edited]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
group: edited-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
base:
|
||||
name: Trigger jobs
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
name: Eval aliases
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/eval-aliases.yml
|
||||
pull_request_target:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
eval-aliases:
|
||||
name: Eval nixpkgs with aliases enabled
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Ensure flake outputs on all systems still evaluate
|
||||
run: nix flake check --all-systems --no-build ./untrusted
|
||||
|
||||
- name: Query nixpkgs with aliases enabled to check for basic syntax errors
|
||||
run: |
|
||||
time nix-env -I ./untrusted -f ./untrusted -qa '*' --option restrict-eval true --option allow-import-from-derivation false >/dev/null
|
||||
+57
-115
@@ -1,58 +1,34 @@
|
||||
name: Eval
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/eval.yml
|
||||
- .github/workflows/reviewers.yml # needs eval results from the same event type
|
||||
pull_request_target:
|
||||
push:
|
||||
# Keep this synced with ci/request-reviews/dev-branches.txt
|
||||
branches:
|
||||
- master
|
||||
- staging
|
||||
- release-*
|
||||
- staging-*
|
||||
- haskell-updates
|
||||
- python-updates
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
workflow_call:
|
||||
inputs:
|
||||
mergedSha:
|
||||
required: true
|
||||
type: string
|
||||
targetSha:
|
||||
type: string
|
||||
systems:
|
||||
required: true
|
||||
type: string
|
||||
secrets:
|
||||
OWNER_APP_PRIVATE_KEY:
|
||||
required: false
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
name: Prepare
|
||||
eval:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
outputs:
|
||||
mergedSha: ${{ steps.get-merge-commit.outputs.mergedSha }}
|
||||
targetSha: ${{ steps.get-merge-commit.outputs.targetSha }}
|
||||
systems: ${{ steps.systems.outputs.systems }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions
|
||||
ci/supportedSystems.json
|
||||
- name: Check if the PR can be merged and get the test merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
id: get-merge-commit
|
||||
|
||||
- name: Load supported systems
|
||||
id: systems
|
||||
run: |
|
||||
echo "systems=$(jq -c <ci/supportedSystems.json)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
outpaths:
|
||||
name: Outpaths
|
||||
runs-on: ubuntu-24.04-arm
|
||||
needs: [ prepare ]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
system: ${{ fromJSON(needs.prepare.outputs.systems) }}
|
||||
system: ${{ fromJSON(inputs.systems) }}
|
||||
name: ${{ matrix.system }}
|
||||
steps:
|
||||
- name: Enable swap
|
||||
run: |
|
||||
@@ -64,7 +40,7 @@ jobs:
|
||||
- name: Check out the PR at the test merge commit
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.mergedSha }}
|
||||
ref: ${{ inputs.mergedSha }}
|
||||
path: untrusted
|
||||
|
||||
- name: Install Nix
|
||||
@@ -89,12 +65,12 @@ jobs:
|
||||
path: merged/*
|
||||
|
||||
- name: Get target run id
|
||||
if: needs.prepare.outputs.targetSha
|
||||
if: inputs.targetSha
|
||||
id: targetRunId
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
env:
|
||||
MATRIX_SYSTEM: ${{ matrix.system }}
|
||||
TARGET_SHA: ${{ needs.prepare.outputs.targetSha }}
|
||||
TARGET_SHA: ${{ inputs.targetSha }}
|
||||
with:
|
||||
script: |
|
||||
const system = process.env.MATRIX_SYSTEM
|
||||
@@ -103,14 +79,13 @@ jobs:
|
||||
let run_id
|
||||
try {
|
||||
run_id = (await github.rest.actions.listWorkflowRuns({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
workflow_id: 'eval.yml',
|
||||
...context.repo,
|
||||
workflow_id: 'push.yml',
|
||||
event: 'push',
|
||||
head_sha: targetSha
|
||||
})).data.workflow_runs[0].id
|
||||
} catch {
|
||||
throw new Error(`Could not find an eval.yml workflow run for ${targetSha}.`)
|
||||
throw new Error(`Could not find a push.yml workflow run for ${targetSha}.`)
|
||||
}
|
||||
|
||||
core.setOutput('targetRunId', run_id)
|
||||
@@ -119,8 +94,7 @@ jobs:
|
||||
// Eval takes max 5-6 minutes, normally.
|
||||
for (let i = 0; i < 120; i++) {
|
||||
const result = await github.rest.actions.listWorkflowRunArtifacts({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
...context.repo,
|
||||
run_id,
|
||||
name: `merged-${system}`
|
||||
})
|
||||
@@ -157,13 +131,10 @@ jobs:
|
||||
path: diff/*
|
||||
|
||||
compare:
|
||||
name: Comparison
|
||||
runs-on: ubuntu-24.04-arm
|
||||
needs: [ prepare, outpaths ]
|
||||
if: needs.prepare.outputs.targetSha
|
||||
needs: [eval]
|
||||
if: inputs.targetSha
|
||||
permissions:
|
||||
issues: write # needed to create *new* labels
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
steps:
|
||||
- name: Download output paths and eval stats for all systems
|
||||
@@ -176,7 +147,7 @@ jobs:
|
||||
- name: Check out the PR at the target commit
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
ref: ${{ needs.prepare.outputs.targetSha }}
|
||||
ref: ${{ inputs.targetSha }}
|
||||
path: trusted
|
||||
|
||||
- name: Install Nix
|
||||
@@ -194,8 +165,8 @@ jobs:
|
||||
env:
|
||||
AUTHOR_ID: ${{ github.event.pull_request.user.id }}
|
||||
run: |
|
||||
git -C trusted fetch --depth 1 origin ${{ needs.prepare.outputs.mergedSha }}
|
||||
git -C trusted diff --name-only ${{ needs.prepare.outputs.mergedSha }} \
|
||||
git -C trusted fetch --depth 1 origin ${{ inputs.mergedSha }}
|
||||
git -C trusted diff --name-only ${{ inputs.mergedSha }} \
|
||||
| jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json
|
||||
|
||||
# Use the target branch to get accurate maintainer info
|
||||
@@ -213,46 +184,6 @@ jobs:
|
||||
name: comparison
|
||||
path: comparison/*
|
||||
|
||||
- name: Labelling pull request
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
with:
|
||||
script: |
|
||||
const { readFile } = require('node:fs/promises')
|
||||
|
||||
const pr = {
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number
|
||||
}
|
||||
|
||||
// Get all currently set labels that we manage
|
||||
const before =
|
||||
(await github.paginate(github.rest.issues.listLabelsOnIssue, pr))
|
||||
.map(({ name }) => name)
|
||||
.filter(name => name.startsWith('10.rebuild') || name == '11.by: package-maintainer')
|
||||
|
||||
// And the labels that should be there
|
||||
const after = JSON.parse(await readFile('comparison/changed-paths.json', 'utf-8')).labels
|
||||
|
||||
// Remove the ones not needed anymore
|
||||
await Promise.all(
|
||||
before.filter(name => !after.includes(name))
|
||||
.map(name => github.rest.issues.removeLabel({
|
||||
...pr,
|
||||
name
|
||||
}))
|
||||
)
|
||||
|
||||
// And add the ones that aren't set already
|
||||
const added = after.filter(name => !before.includes(name))
|
||||
if (added.length > 0) {
|
||||
await github.rest.issues.addLabels({
|
||||
...pr,
|
||||
labels: added
|
||||
})
|
||||
}
|
||||
|
||||
- name: Add eval summary to commit statuses
|
||||
if: ${{ github.event_name == 'pull_request_target' }}
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
@@ -276,23 +207,34 @@ jobs:
|
||||
`${serverUrl}/${repo.owner}/${repo.repo}/actions/runs/${runId}?pr=${payload.pull_request.number}`
|
||||
|
||||
await github.rest.repos.createCommitStatus({
|
||||
owner: repo.owner,
|
||||
repo: repo.repo,
|
||||
...repo,
|
||||
sha: payload.pull_request.head.sha,
|
||||
context: 'Eval / Summary',
|
||||
context: 'Eval Summary',
|
||||
state: 'success',
|
||||
description,
|
||||
target_url
|
||||
})
|
||||
|
||||
reviewers:
|
||||
name: Reviewers
|
||||
# No dependency on "compare", so that it can start at the same time.
|
||||
# We only wait for the "comparison" artifact to be available, which makes the start-to-finish time
|
||||
# for the eval workflow considerably faster.
|
||||
needs: [ prepare, outpaths ]
|
||||
if: needs.prepare.outputs.targetSha
|
||||
uses: ./.github/workflows/reviewers.yml
|
||||
secrets: inherit
|
||||
with:
|
||||
caller: ${{ github.workflow }}
|
||||
misc:
|
||||
if: ${{ github.event_name != 'push' }}
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- name: Install Nix
|
||||
uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Ensure flake outputs on all systems still evaluate
|
||||
run: nix flake check --all-systems --no-build ./untrusted
|
||||
|
||||
- name: Query nixpkgs with aliases enabled to check for basic syntax errors
|
||||
run: |
|
||||
time nix-env -I ./untrusted -f ./untrusted -qa '*' --option restrict-eval true --option allow-import-from-derivation false >/dev/null
|
||||
|
||||
+247
-14
@@ -3,61 +3,294 @@
|
||||
# access to the GitHub API. This means that it should not evaluate user input in
|
||||
# a way that allows code injection.
|
||||
|
||||
name: "Label PR"
|
||||
name: Labels
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
schedule:
|
||||
- cron: '07,17,27,37,47,57 * * * *'
|
||||
workflow_call:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
updatedWithin:
|
||||
description: 'Updated within [hours]'
|
||||
type: number
|
||||
required: false
|
||||
default: 0 # everything since last run
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
# This explicitly avoids using `run_id` for the concurrency key to make sure that only
|
||||
# *one* non-PR run can run at a time.
|
||||
group: labels-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number }}
|
||||
# PR- and manually-triggered runs will be cancelled, but scheduled runs will be queued.
|
||||
cancel-in-progress: ${{ github.event_name != 'schedule' }}
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write # needed to create *new* labels
|
||||
pull-requests: write
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
labels:
|
||||
name: label-pr
|
||||
update:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
if: "!contains(github.event.pull_request.title, '[skip treewide]')"
|
||||
if: github.event_name != 'schedule' || github.repository_owner == 'NixOS'
|
||||
steps:
|
||||
- name: Install dependencies
|
||||
run: npm install @actions/artifact bottleneck
|
||||
|
||||
- name: Log current API rate limits
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: gh api /rate_limit | jq
|
||||
|
||||
- name: Labels from API data and Eval results
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
env:
|
||||
UPDATED_WITHIN: ${{ inputs.updatedWithin }}
|
||||
with:
|
||||
script: |
|
||||
const Bottleneck = require('bottleneck')
|
||||
const path = require('node:path')
|
||||
const { DefaultArtifactClient } = require('@actions/artifact')
|
||||
const { readFile } = require('node:fs/promises')
|
||||
|
||||
const artifactClient = new DefaultArtifactClient()
|
||||
|
||||
const stats = {
|
||||
prs: 0,
|
||||
requests: 0,
|
||||
artifacts: 0
|
||||
}
|
||||
|
||||
// Rate-Limiting and Throttling, see for details:
|
||||
// https://github.com/octokit/octokit.js/issues/1069#throttling
|
||||
// https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api
|
||||
const allLimits = new Bottleneck({
|
||||
// Avoid concurrent requests
|
||||
maxConcurrent: 1,
|
||||
// Hourly limit is at 5000, but other jobs need some, too!
|
||||
// https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api
|
||||
reservoir: 1000,
|
||||
reservoirRefreshAmount: 1000,
|
||||
reservoirRefreshInterval: 60 * 60 * 1000
|
||||
})
|
||||
// Pause between mutative requests
|
||||
const writeLimits = new Bottleneck({ minTime: 1000 }).chain(allLimits)
|
||||
github.hook.wrap('request', async (request, options) => {
|
||||
stats.requests++
|
||||
if (['POST', 'PUT', 'PATCH', 'DELETE'].includes(options.method))
|
||||
return writeLimits.schedule(request.bind(null, options))
|
||||
else
|
||||
return allLimits.schedule(request.bind(null, options))
|
||||
})
|
||||
|
||||
if (process.env.UPDATED_WITHIN && !/^\d+$/.test(process.env.UPDATED_WITHIN))
|
||||
throw new Error('Please enter "updated within" as integer in hours.')
|
||||
|
||||
const cutoff = new Date(await (async () => {
|
||||
// Always run for Pull Request triggers, no cutoff since there will be a single
|
||||
// response only anyway. 0 is the Unix epoch, so always smaller.
|
||||
if (context.payload.pull_request?.number) return 0
|
||||
|
||||
// Manually triggered via UI when updatedWithin is set. Will fallthrough to the last
|
||||
// option if the updatedWithin parameter is set to 0, which is the default.
|
||||
const updatedWithin = Number.parseInt(process.env.UPDATED_WITHIN, 10)
|
||||
if (updatedWithin) return new Date().getTime() - updatedWithin * 60 * 60 * 1000
|
||||
|
||||
// Normally a scheduled run, but could be workflow_dispatch, see above. Go back as far
|
||||
// as the last successful run of this workflow to make sure we are not leaving anyone
|
||||
// behind on GHA failures.
|
||||
// Defaults to go back 1 hour on the first run.
|
||||
return (await github.rest.actions.listWorkflowRuns({
|
||||
...context.repo,
|
||||
workflow_id: 'labels.yml',
|
||||
event: 'schedule',
|
||||
status: 'success',
|
||||
exclude_pull_requests: true
|
||||
})).data.workflow_runs[0]?.created_at ?? new Date().getTime() - 1 * 60 * 60 * 1000
|
||||
})())
|
||||
core.info('cutoff timestamp: ' + cutoff.toISOString())
|
||||
|
||||
// To simplify this action's logic we fetch the pull_request data again below, even if
|
||||
// we are already in a pull_request event's context and would have the data readily
|
||||
// available. We do this by filtering the list of pull requests with head and base
|
||||
// branch - there can only be a single open Pull Request for any such combination.
|
||||
const prEventCondition = !context.payload.pull_request ? undefined : {
|
||||
// "label" is in the format of `user:branch` or `org:branch`
|
||||
head: context.payload.pull_request.head.label,
|
||||
base: context.payload.pull_request.base.ref
|
||||
}
|
||||
|
||||
const prs = await github.paginate(
|
||||
github.rest.pulls.list,
|
||||
{
|
||||
...context.repo,
|
||||
state: 'open',
|
||||
sort: 'updated',
|
||||
direction: 'desc',
|
||||
...prEventCondition
|
||||
},
|
||||
(response, done) => response.data.map(async (pull_request) => {
|
||||
try {
|
||||
const log = (k,v,skip) => {
|
||||
core.info(`PR #${pull_request.number} - ${k}: ${v}` + (skip ? ' (skipped)' : ''))
|
||||
return skip
|
||||
}
|
||||
|
||||
if (log('Last updated at', pull_request.updated_at, new Date(pull_request.updated_at) < cutoff))
|
||||
return done()
|
||||
stats.prs++
|
||||
log('URL', pull_request.html_url)
|
||||
|
||||
const run_id = (await github.rest.actions.listWorkflowRuns({
|
||||
...context.repo,
|
||||
workflow_id: 'pr.yml',
|
||||
event: 'pull_request_target',
|
||||
// For PR events, the workflow run is still in progress with this job itself.
|
||||
status: prEventCondition ? 'in_progress' : 'success',
|
||||
exclude_pull_requests: true,
|
||||
head_sha: pull_request.head.sha
|
||||
})).data.workflow_runs[0]?.id
|
||||
|
||||
// Newer PRs might not have run Eval to completion, yet. We can skip them, because this
|
||||
// job will be run as part of that Eval run anyway.
|
||||
if (log('Last eval run', run_id ?? '<pending>', !run_id))
|
||||
return;
|
||||
|
||||
const artifact = (await github.rest.actions.listWorkflowRunArtifacts({
|
||||
...context.repo,
|
||||
run_id,
|
||||
name: 'comparison'
|
||||
})).data.artifacts[0]
|
||||
|
||||
// Instead of checking the boolean artifact.expired, we will give us a minute to
|
||||
// actually download the artifact in the next step and avoid that race condition.
|
||||
// Older PRs, where the workflow run was already eval.yml, but the artifact was not
|
||||
// called "comparison", yet, will be skipped as well.
|
||||
const expired = new Date(artifact?.expires_at ?? 0) < new Date(new Date().getTime() + 60 * 1000)
|
||||
if (log('Artifact expires at', artifact?.expires_at ?? '<not found>', expired))
|
||||
return;
|
||||
stats.artifacts++
|
||||
|
||||
await artifactClient.downloadArtifact(artifact.id, {
|
||||
findBy: {
|
||||
repositoryName: context.repo.repo,
|
||||
repositoryOwner: context.repo.owner,
|
||||
token: core.getInput('github-token')
|
||||
},
|
||||
path: path.resolve(pull_request.number.toString()),
|
||||
expectedHash: artifact.digest
|
||||
})
|
||||
|
||||
// Get all currently set labels that we manage
|
||||
const before =
|
||||
pull_request.labels.map(({ name }) => name)
|
||||
.filter(name =>
|
||||
name.startsWith('10.rebuild') ||
|
||||
name == '11.by: package-maintainer' ||
|
||||
name.startsWith('12.approvals:') ||
|
||||
name == '12.approved-by: package-maintainer'
|
||||
)
|
||||
|
||||
const approvals = new Set(
|
||||
(await github.paginate(github.rest.pulls.listReviews, {
|
||||
...context.repo,
|
||||
pull_number: pull_request.number
|
||||
}))
|
||||
.filter(review => review.state == 'APPROVED')
|
||||
.map(review => review.user?.id)
|
||||
)
|
||||
|
||||
const maintainers = new Set(Object.keys(
|
||||
JSON.parse(await readFile(`${pull_request.number}/maintainers.json`, 'utf-8'))
|
||||
).map(m => Number.parseInt(m, 10)))
|
||||
|
||||
// And the labels that should be there
|
||||
const after = JSON.parse(await readFile(`${pull_request.number}/changed-paths.json`, 'utf-8')).labels
|
||||
if (approvals.size > 0) after.push(`12.approvals: ${approvals.size > 2 ? '3+' : approvals.size}`)
|
||||
if (Array.from(maintainers).some(m => approvals.has(m))) after.push('12.approved-by: package-maintainer')
|
||||
|
||||
if (context.eventName == 'pull_request') {
|
||||
core.info('Skipping labeling on a pull_request event (no privileges).')
|
||||
return
|
||||
}
|
||||
|
||||
// Remove the ones not needed anymore
|
||||
await Promise.all(
|
||||
before.filter(name => !after.includes(name))
|
||||
.map(name => github.rest.issues.removeLabel({
|
||||
...context.repo,
|
||||
issue_number: pull_request.number,
|
||||
name
|
||||
}))
|
||||
)
|
||||
|
||||
// And add the ones that aren't set already
|
||||
const added = after.filter(name => !before.includes(name))
|
||||
if (added.length > 0) {
|
||||
await github.rest.issues.addLabels({
|
||||
...context.repo,
|
||||
issue_number: pull_request.number,
|
||||
labels: added
|
||||
})
|
||||
}
|
||||
} catch (cause) {
|
||||
throw new Error(`Labeling PR #${pull_request.number} failed.`, { cause })
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
(await Promise.allSettled(prs.flat()))
|
||||
.filter(({ status }) => status == 'rejected')
|
||||
.map(({ reason }) => core.setFailed(`${reason.message}\n${reason.cause.stack}`))
|
||||
|
||||
core.notice(`Processed ${stats.prs} PRs, made ${stats.requests + stats.artifacts} API requests and downloaded ${stats.artifacts} artifacts.`)
|
||||
|
||||
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
|
||||
name: Labels from touched files
|
||||
if: |
|
||||
github.event.pull_request.head.repo.owner.login != 'NixOS' || !(
|
||||
github.event_name == 'pull_request_target' &&
|
||||
(github.event.pull_request.head.repo.owner.login != 'NixOS' || !(
|
||||
github.head_ref == 'haskell-updates' ||
|
||||
github.head_ref == 'python-updates' ||
|
||||
github.head_ref == 'staging-next' ||
|
||||
startsWith(github.head_ref, 'staging-next-')
|
||||
)
|
||||
))
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
configuration-path: .github/labeler.yml # default
|
||||
sync-labels: true
|
||||
|
||||
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
|
||||
name: Labels from touched files (no sync)
|
||||
if: |
|
||||
github.event.pull_request.head.repo.owner.login != 'NixOS' || !(
|
||||
github.event_name == 'pull_request_target' &&
|
||||
(github.event.pull_request.head.repo.owner.login != 'NixOS' || !(
|
||||
github.head_ref == 'haskell-updates' ||
|
||||
github.head_ref == 'python-updates' ||
|
||||
github.head_ref == 'staging-next' ||
|
||||
startsWith(github.head_ref, 'staging-next-')
|
||||
)
|
||||
))
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
configuration-path: .github/labeler-no-sync.yml
|
||||
sync-labels: false
|
||||
|
||||
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
|
||||
name: Labels from touched files (development branches)
|
||||
# Development branches like staging-next, haskell-updates and python-updates get special labels.
|
||||
# This is to avoid the mass of labels there, which is mostly useless - and really annoying for
|
||||
# the backport labels.
|
||||
if: |
|
||||
github.event.pull_request.head.repo.owner.login == 'NixOS' && (
|
||||
github.event_name == 'pull_request_target' &&
|
||||
(github.event.pull_request.head.repo.owner.login == 'NixOS' && (
|
||||
github.head_ref == 'haskell-updates' ||
|
||||
github.head_ref == 'python-updates' ||
|
||||
github.head_ref == 'staging-next' ||
|
||||
startsWith(github.head_ref, 'staging-next-')
|
||||
)
|
||||
))
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
configuration-path: .github/labeler-development-branches.yml
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
name: "Building Nixpkgs lib-tests"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/lib-tests.yml
|
||||
pull_request_target:
|
||||
paths:
|
||||
- 'lib/**'
|
||||
- 'maintainers/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
nixpkgs-lib-tests:
|
||||
name: nixpkgs-lib-tests
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||
with:
|
||||
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
|
||||
name: nixpkgs-ci
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Building Nixpkgs lib-tests
|
||||
run: |
|
||||
nix-build untrusted/ci -A lib-tests
|
||||
@@ -0,0 +1,105 @@
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
mergedSha:
|
||||
required: true
|
||||
type: string
|
||||
targetSha:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
treefmt:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
mergedSha: ${{ inputs.mergedSha }}
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Check that files are formatted
|
||||
run: |
|
||||
# Note that it's fine to run this on untrusted code because:
|
||||
# - There's no secrets accessible here
|
||||
# - The build is sandboxed
|
||||
if ! nix-build untrusted/ci -A fmt.check; then
|
||||
echo "Some files are not properly formatted"
|
||||
echo "Please format them by going to the Nixpkgs root directory and running one of:"
|
||||
echo " nix-shell --run treefmt"
|
||||
echo " nix develop --command treefmt"
|
||||
echo " nix fmt"
|
||||
echo "Make sure your branch is up to date with master; rebase if not."
|
||||
echo "If you're having trouble, please ping @NixOS/nix-formatting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
parse:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
mergedSha: ${{ inputs.mergedSha }}
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Parse all nix files
|
||||
run: |
|
||||
# Tests multiple versions at once, let's make sure all of them run, so keep-going.
|
||||
nix-build untrusted/ci -A parse --keep-going
|
||||
|
||||
nixpkgs-vet:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
# This should take 1 minute at most, but let's be generous. The default of 6 hours is definitely too long.
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout merged and target commits
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
mergedSha: ${{ inputs.mergedSha }}
|
||||
merged-as-untrusted: true
|
||||
targetSha: ${{ inputs.targetSha }}
|
||||
target-as-trusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- name: Running nixpkgs-vet
|
||||
env:
|
||||
# Force terminal colors to be enabled. The library that `nixpkgs-vet` uses respects https://bixense.com/clicolors/
|
||||
CLICOLOR_FORCE: 1
|
||||
run: |
|
||||
if nix-build untrusted/ci -A nixpkgs-vet --arg base "./trusted" --arg head "./untrusted"; then
|
||||
exit 0
|
||||
else
|
||||
exitCode=$?
|
||||
echo "To run locally: ./ci/nixpkgs-vet.sh $GITHUB_BASE_REF https://github.com/$GITHUB_REPOSITORY.git"
|
||||
echo "If you're having trouble, ping @NixOS/nixpkgs-vet"
|
||||
exit "$exitCode"
|
||||
fi
|
||||
@@ -1,67 +0,0 @@
|
||||
name: "Build NixOS manual v2"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/manual-nixos-v2.yml
|
||||
pull_request_target:
|
||||
branches:
|
||||
- master
|
||||
- release-*
|
||||
paths:
|
||||
- "nixos/**"
|
||||
# Also build when the nixpkgs doc changed, since we take things like
|
||||
# the release notes and some css and js files from there.
|
||||
# See nixos/doc/manual/default.nix
|
||||
- "doc/**"
|
||||
# Build when something in lib changes
|
||||
# Since the lib functions are used to 'massage' the options before producing the manual
|
||||
- "lib/**"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
nixos:
|
||||
name: nixos-manual-build
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- runner: ubuntu-24.04
|
||||
system: x86_64-linux
|
||||
- runner: ubuntu-24.04-arm
|
||||
system: aarch64-linux
|
||||
runs-on: ${{ matrix.runner }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||
with:
|
||||
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
|
||||
name: nixpkgs-ci
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
|
||||
- name: Build NixOS manual
|
||||
id: build-manual
|
||||
run: nix-build untrusted/ci -A manual-nixos --argstr system ${{ matrix.system }}
|
||||
|
||||
- name: Upload NixOS manual
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
with:
|
||||
name: nixos-manual-${{ matrix.system }}
|
||||
path: result/
|
||||
if-no-files-found: error
|
||||
@@ -1,43 +0,0 @@
|
||||
name: "Build Nixpkgs manual v2"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/manual-nixpkgs-v2.yml
|
||||
pull_request_target:
|
||||
paths:
|
||||
- 'doc/**'
|
||||
- 'lib/**'
|
||||
- 'pkgs/by-name/ni/nixdoc/**'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
nixpkgs:
|
||||
name: nixpkgs-manual-build
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
|
||||
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
|
||||
with:
|
||||
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
|
||||
name: nixpkgs-ci
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
|
||||
- name: Building Nixpkgs manual
|
||||
run: nix-build untrusted/ci -A manual-nixpkgs -A manual-nixpkgs-tests
|
||||
@@ -1,37 +0,0 @@
|
||||
name: "Check whether nix files are parseable v2"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/nix-parse-v2.yml
|
||||
pull_request_target:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
name: nix-files-parseable-check
|
||||
runs-on: ubuntu-24.04-arm
|
||||
if: "!contains(github.event.pull_request.title, '[skip treewide]')"
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout the merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
with:
|
||||
extra_nix_config: sandbox = true
|
||||
nix_path: nixpkgs=channel:nixpkgs-unstable
|
||||
|
||||
- name: Parse all nix files
|
||||
run: |
|
||||
# Tests multiple versions at once, let's make sure all of them run, so keep-going.
|
||||
nix-build untrusted/ci -A parse --keep-going
|
||||
@@ -1,53 +0,0 @@
|
||||
# `nixpkgs-vet` is a tool to vet Nixpkgs: its architecture, package structure, and more.
|
||||
# Among other checks, it makes sure that `pkgs/by-name` (see `../../pkgs/by-name/README.md`) follows the validity rules outlined in [RFC 140](https://github.com/NixOS/rfcs/pull/140).
|
||||
# When you make changes to this workflow, please also update `ci/nixpkgs-vet.sh` to reflect the impact of your work to the CI.
|
||||
# See https://github.com/NixOS/nixpkgs-vet for details on the tool and its checks.
|
||||
|
||||
name: Vet nixpkgs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/nixpkgs-vet.yml
|
||||
pull_request_target:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
# We don't use a concurrency group here, because the action is triggered quite often (due to the PR edit trigger), and contributors would get notified on any canceled run.
|
||||
# There is a feature request for suppressing notifications on concurrency-canceled runs: https://github.com/orgs/community/discussions/13015
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: nixpkgs-vet
|
||||
runs-on: ubuntu-24.04-arm
|
||||
# This should take 1 minute at most, but let's be generous. The default of 6 hours is definitely too long.
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: .github/actions
|
||||
- name: Check if the PR can be merged and checkout merged and target commits
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
with:
|
||||
merged-as-untrusted: true
|
||||
target-as-trusted: true
|
||||
|
||||
- uses: cachix/install-nix-action@17fe5fb4a23ad6cbbe47d6b3f359611ad276644c # v31
|
||||
|
||||
- name: Running nixpkgs-vet
|
||||
env:
|
||||
# Force terminal colors to be enabled. The library that `nixpkgs-vet` uses respects https://bixense.com/clicolors/
|
||||
CLICOLOR_FORCE: 1
|
||||
run: |
|
||||
if nix-build untrusted/ci -A nixpkgs-vet --arg base "./trusted" --arg head "./untrusted"; then
|
||||
exit 0
|
||||
else
|
||||
exitCode=$?
|
||||
echo "To run locally: ./ci/nixpkgs-vet.sh $GITHUB_BASE_REF https://github.com/$GITHUB_REPOSITORY.git"
|
||||
echo "If you're having trouble, ping @NixOS/nixpkgs-vet"
|
||||
exit "$exitCode"
|
||||
fi
|
||||
@@ -1,26 +0,0 @@
|
||||
name: "No channel PR"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/no-channel.yml
|
||||
pull_request_target:
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
fail:
|
||||
if: |
|
||||
startsWith(github.event.pull_request.base.ref, 'nixos-') ||
|
||||
startsWith(github.event.pull_request.base.ref, 'nixpkgs-')
|
||||
name: "This PR is targeting a channel branch"
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- run: |
|
||||
cat <<EOF
|
||||
The nixos-* and nixpkgs-* branches are pushed to by the channel
|
||||
release script and should not be merged into directly.
|
||||
|
||||
Please target the equivalent release-* branch or master instead.
|
||||
EOF
|
||||
exit 1
|
||||
@@ -11,11 +11,15 @@ on:
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 24 hours
|
||||
- cron: '0 0 * * *'
|
||||
- cron: '0 0 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
periodic-merge:
|
||||
if: github.repository_owner == 'NixOS'
|
||||
|
||||
@@ -11,11 +11,15 @@ on:
|
||||
schedule:
|
||||
# * is a special character in YAML so you have to quote this string
|
||||
# Merge every 6 hours
|
||||
- cron: '0 */6 * * *'
|
||||
- cron: '0 */6 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
periodic-merge:
|
||||
if: github.repository_owner == 'NixOS'
|
||||
|
||||
@@ -12,6 +12,10 @@ on:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
name: PR
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/build.yml
|
||||
- .github/workflows/check.yml
|
||||
- .github/workflows/eval.yml
|
||||
- .github/workflows/lint.yml
|
||||
- .github/workflows/pr.yml
|
||||
- .github/workflows/reviewers.yml # needs eval results from the same event type
|
||||
pull_request_target:
|
||||
|
||||
concurrency:
|
||||
group: pr-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
outputs:
|
||||
mergedSha: ${{ steps.get-merge-commit.outputs.mergedSha }}
|
||||
targetSha: ${{ steps.get-merge-commit.outputs.targetSha }}
|
||||
systems: ${{ steps.systems.outputs.systems }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github/actions
|
||||
ci/supportedSystems.json
|
||||
- name: Check if the PR can be merged and get the test merge commit
|
||||
uses: ./.github/actions/get-merge-commit
|
||||
id: get-merge-commit
|
||||
|
||||
- name: Load supported systems
|
||||
id: systems
|
||||
run: |
|
||||
echo "systems=$(jq -c <ci/supportedSystems.json)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
check:
|
||||
name: Check
|
||||
uses: ./.github/workflows/check.yml
|
||||
permissions:
|
||||
# cherry-picks
|
||||
pull-requests: write
|
||||
|
||||
lint:
|
||||
name: Lint
|
||||
needs: [prepare]
|
||||
uses: ./.github/workflows/lint.yml
|
||||
with:
|
||||
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
|
||||
targetSha: ${{ needs.prepare.outputs.targetSha }}
|
||||
|
||||
eval:
|
||||
name: Eval
|
||||
needs: [prepare]
|
||||
uses: ./.github/workflows/eval.yml
|
||||
permissions:
|
||||
# compare
|
||||
statuses: write
|
||||
secrets:
|
||||
OWNER_APP_PRIVATE_KEY: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
|
||||
with:
|
||||
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
|
||||
targetSha: ${{ needs.prepare.outputs.targetSha }}
|
||||
systems: ${{ needs.prepare.outputs.systems }}
|
||||
|
||||
labels:
|
||||
name: Labels
|
||||
needs: [eval]
|
||||
uses: ./.github/workflows/labels.yml
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
reviewers:
|
||||
name: Reviewers
|
||||
needs: [prepare, eval]
|
||||
if: needs.prepare.outputs.targetSha
|
||||
uses: ./.github/workflows/reviewers.yml
|
||||
secrets:
|
||||
OWNER_APP_PRIVATE_KEY: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
|
||||
|
||||
build:
|
||||
name: Build
|
||||
needs: [prepare]
|
||||
uses: ./.github/workflows/build.yml
|
||||
secrets:
|
||||
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}
|
||||
with:
|
||||
mergedSha: ${{ needs.prepare.outputs.mergedSha }}
|
||||
|
||||
# This job's only purpose is to serve as a target for the "Required Status Checks" branch ruleset.
|
||||
# It "needs" all the jobs that should block merging a PR.
|
||||
# If they pass, it is skipped — which counts as "success" for purposes of the branch ruleset.
|
||||
# However, if any of them fail, this job will also fail — thus blocking the branch ruleset.
|
||||
no-pr-failures:
|
||||
# Modify this list to add or remove jobs from required status checks.
|
||||
needs:
|
||||
- check
|
||||
- lint
|
||||
- eval
|
||||
- build
|
||||
# WARNING:
|
||||
# Do NOT change the name of this job, otherwise the rule will not catch it anymore.
|
||||
# This would prevent all PRs from merging.
|
||||
name: no PR failures
|
||||
if: ${{ failure() }}
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- run: exit 1
|
||||
@@ -0,0 +1,48 @@
|
||||
name: Push
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/push.yml
|
||||
# eval is tested via pr.yml
|
||||
push:
|
||||
# Keep this synced with ci/request-reviews/dev-branches.txt
|
||||
branches:
|
||||
- master
|
||||
- staging
|
||||
- release-*
|
||||
- staging-*
|
||||
- haskell-updates
|
||||
- python-updates
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
prepare:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
outputs:
|
||||
systems: ${{ steps.systems.outputs.systems }}
|
||||
steps:
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
sparse-checkout: |
|
||||
ci/supportedSystems.json
|
||||
|
||||
- name: Load supported systems
|
||||
id: systems
|
||||
run: |
|
||||
echo "systems=$(jq -c <ci/supportedSystems.json)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
eval:
|
||||
name: Eval
|
||||
needs: [prepare]
|
||||
uses: ./.github/workflows/eval.yml
|
||||
# Those are not actually used on push, but will throw an error if not set.
|
||||
permissions:
|
||||
# compare
|
||||
issues: write
|
||||
pull-requests: write
|
||||
statuses: write
|
||||
with:
|
||||
mergedSha: ${{ github.sha }}
|
||||
systems: ${{ needs.prepare.outputs.systems }}
|
||||
@@ -0,0 +1,17 @@
|
||||
name: Review dismissed
|
||||
|
||||
on:
|
||||
pull_request_review:
|
||||
types: [dismissed]
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
trigger:
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- run: echo This is a no-op only used as a trigger for workflow_run.
|
||||
@@ -10,21 +10,22 @@ on:
|
||||
pull_request_target:
|
||||
types: [ready_for_review]
|
||||
workflow_call:
|
||||
inputs:
|
||||
caller:
|
||||
description: Name of the calling workflow.
|
||||
secrets:
|
||||
OWNER_APP_PRIVATE_KEY:
|
||||
required: true
|
||||
type: string
|
||||
|
||||
concurrency:
|
||||
group: ${{ inputs.caller }}-${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.run_id }}
|
||||
group: reviewers-${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: {}
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
request:
|
||||
name: Request
|
||||
runs-on: ubuntu-24.04-arm
|
||||
steps:
|
||||
- name: Check out the PR at the base commit
|
||||
@@ -58,16 +59,19 @@ jobs:
|
||||
# In the more special case, when a PR is undrafted an eval run will have started already.
|
||||
- name: Wait for comparison to be done
|
||||
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
||||
id: eval
|
||||
with:
|
||||
script: |
|
||||
const run_id = (await github.rest.actions.listWorkflowRuns({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
workflow_id: 'eval.yml',
|
||||
workflow_id: 'pr.yml',
|
||||
event: context.eventName,
|
||||
head_sha: context.payload.pull_request.head.sha
|
||||
})).data.workflow_runs[0].id
|
||||
|
||||
core.setOutput('run-id', run_id)
|
||||
|
||||
// Waiting 120 * 5 sec = 10 min. max.
|
||||
// The extreme case is an Eval run that just started when the PR is undrafted.
|
||||
// Eval takes max 5-6 minutes, normally.
|
||||
@@ -86,6 +90,8 @@ jobs:
|
||||
- name: Download the comparison results
|
||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||
with:
|
||||
run-id: ${{ steps.eval.outputs.run-id }}
|
||||
github-token: ${{ github.token }}
|
||||
pattern: comparison
|
||||
path: comparison
|
||||
merge-multiple: true
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
|
||||
# CI
|
||||
/.github/*_TEMPLATE* @SigmaSquadron
|
||||
/.github/actions @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron
|
||||
/.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron
|
||||
/ci @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther @philiptaron
|
||||
/.github/actions @NixOS/nixpkgs-ci
|
||||
/.github/workflows @NixOS/nixpkgs-ci
|
||||
/ci @NixOS/nixpkgs-ci
|
||||
/ci/OWNERS @infinisil @philiptaron
|
||||
|
||||
# Development support
|
||||
@@ -26,13 +26,19 @@
|
||||
|
||||
# Libraries
|
||||
/lib @infinisil @hsjobeki
|
||||
/lib/systems @alyssais @ericson2314 @NixOS/stdenv
|
||||
/lib/generators.nix @infinisil @hsjobeki @Profpatsch
|
||||
/lib/cli.nix @infinisil @hsjobeki @Profpatsch
|
||||
/lib/debug.nix @infinisil @hsjobeki @Profpatsch
|
||||
/lib/asserts.nix @infinisil @hsjobeki @Profpatsch
|
||||
/lib/path/* @infinisil @hsjobeki
|
||||
/lib/fileset @infinisil @hsjobeki
|
||||
## Standard environment–related libraries
|
||||
/lib/customisation.nix @alyssais @NixOS/stdenv
|
||||
/lib/derivations.nix @alyssais @NixOS/stdenv
|
||||
/lib/fetchers.nix @alyssais @NixOS/stdenv
|
||||
/lib/meta.nix @alyssais @NixOS/stdenv
|
||||
/lib/source-types.nix @alyssais @NixOS/stdenv
|
||||
/lib/systems @alyssais @NixOS/stdenv
|
||||
## Libraries / Module system
|
||||
/lib/modules.nix @infinisil @roberth @hsjobeki
|
||||
/lib/types.nix @infinisil @roberth @hsjobeki
|
||||
@@ -56,6 +62,7 @@
|
||||
/pkgs/build-support/cc-wrapper @Ericson2314
|
||||
/pkgs/build-support/bintools-wrapper @Ericson2314
|
||||
/pkgs/build-support/setup-hooks @Ericson2314
|
||||
/pkgs/build-support/setup-hooks/arrayUtilities @ConnorBaker
|
||||
/pkgs/build-support/setup-hooks/auto-patchelf.sh @layus
|
||||
/pkgs/by-name/au/auto-patchelf @layus
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ while read -r new_commit_sha ; do
|
||||
# consider this too unlikely to happen, to deal with explicitly.
|
||||
max_length=10000
|
||||
if [ "${#diff}" -gt $max_length ]; then
|
||||
printf -v diff "%s\n\n[...truncated...]" "$(echo "$diff" | head -c $max_length | head -n-1)"
|
||||
printf -v diff "%s\n>\n> [...truncated...]" "$(echo "$diff" | head -c $max_length | head -n-1)"
|
||||
fi
|
||||
echo "$diff" >> $markdown_file
|
||||
echo '> ```' >> $markdown_file
|
||||
|
||||
+22
-1
@@ -52,6 +52,21 @@ let
|
||||
# See https://github.com/NixOS/nixfmt
|
||||
programs.nixfmt.enable = true;
|
||||
|
||||
programs.yamlfmt = {
|
||||
enable = true;
|
||||
settings.formatter = {
|
||||
retain_line_breaks = true;
|
||||
};
|
||||
};
|
||||
settings.formatter.yamlfmt.excludes = [
|
||||
# Breaks helm templating
|
||||
"nixos/tests/k3s/k3s-test-chart/templates/*"
|
||||
# Aligns comments with whitespace
|
||||
"pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml"
|
||||
# TODO: Fix formatting for auto-generated file
|
||||
"pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml"
|
||||
];
|
||||
|
||||
settings.formatter.editorconfig-checker = {
|
||||
command = "${pkgs.lib.getExe pkgs.editorconfig-checker}";
|
||||
options = [ "-disable-indent-size" ];
|
||||
@@ -76,7 +91,13 @@ in
|
||||
inherit pkgs fmt;
|
||||
requestReviews = pkgs.callPackage ./request-reviews { };
|
||||
codeownersValidator = pkgs.callPackage ./codeowners-validator { };
|
||||
eval = pkgs.callPackage ./eval { };
|
||||
|
||||
# FIXME(lf-): it might be useful to test other Nix implementations
|
||||
# (nixVersions.stable and Lix) here somehow at some point to ensure we don't
|
||||
# have eval divergence.
|
||||
eval = pkgs.callPackage ./eval {
|
||||
nix = pkgs.nixVersions.latest;
|
||||
};
|
||||
|
||||
# CI jobs
|
||||
lib-tests = import ../lib/tests/release.nix { inherit pkgs; };
|
||||
|
||||
+11
-5
@@ -1,15 +1,23 @@
|
||||
# Evaluates all the accessible paths in nixpkgs.
|
||||
# *This only builds on Linux* since it requires the Linux sandbox isolation to
|
||||
# be able to write in various places while evaluating inside the sandbox.
|
||||
#
|
||||
# This file is used by nixpkgs CI (see .github/workflows/eval.yml) as well as
|
||||
# being used directly as an entry point in Lix's CI (in `flake.nix` in the Lix
|
||||
# repo).
|
||||
#
|
||||
# If you know you are doing a breaking API change, please ping the nixpkgs CI
|
||||
# maintainers and the Lix maintainers (`nix eval -f . lib.teams.lix`).
|
||||
{
|
||||
callPackage,
|
||||
lib,
|
||||
runCommand,
|
||||
writeShellScript,
|
||||
writeText,
|
||||
symlinkJoin,
|
||||
time,
|
||||
procps,
|
||||
nixVersions,
|
||||
nix,
|
||||
jq,
|
||||
python3,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -31,8 +39,6 @@ let
|
||||
);
|
||||
};
|
||||
|
||||
nix = nixVersions.latest;
|
||||
|
||||
supportedSystems = builtins.fromJSON (builtins.readFile ../supportedSystems.json);
|
||||
|
||||
attrpathsSuperset =
|
||||
|
||||
@@ -29,5 +29,25 @@ runCommand "nixpkgs-vet"
|
||||
|
||||
nixpkgs-vet --base ${filtered base} ${filtered head}
|
||||
|
||||
# TODO: Upstream into nixpkgs-vet, see:
|
||||
# https://github.com/NixOS/nixpkgs-vet/issues/164
|
||||
badFiles=$(find ${filtered head}/pkgs -type f -name '*.nix' -print | xargs grep -l '^[^#]*<nixpkgs/' || true)
|
||||
if [[ -n $badFiles ]]; then
|
||||
echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
|
||||
echo "The offending files:"
|
||||
echo "$badFiles"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# TODO: Upstream into nixpkgs-vet, see:
|
||||
# https://github.com/NixOS/nixpkgs-vet/issues/166
|
||||
conflictingPaths=$(find ${filtered head} | awk '{ print $1 " " tolower($1) }' | sort -k2 | uniq -D -f 1 | cut -d ' ' -f 1)
|
||||
if [[ -n $conflictingPaths ]]; then
|
||||
echo "Files in nixpkgs must not vary only by case."
|
||||
echo "The offending paths:"
|
||||
echo "$conflictingPaths"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch $out
|
||||
''
|
||||
|
||||
+1
-1
@@ -63,4 +63,4 @@ git -C "$tmp/merged" merge -q --no-edit "$baseSha"
|
||||
trace -e "\e[34m$(git -C "$tmp/merged" rev-parse HEAD)\e[0m"
|
||||
|
||||
trace "Running nixpkgs-vet.."
|
||||
nix-build ci -A nixpkgs-vet --argstr base "$tmp/base" --argstr head "$tmp/merged"
|
||||
nix-build ci -A nixpkgs-vet --arg base "$tmp/base" --arg head "$tmp/merged"
|
||||
|
||||
+6
-6
@@ -9,9 +9,9 @@
|
||||
},
|
||||
"branch": "nixpkgs-unstable",
|
||||
"submodules": false,
|
||||
"revision": "8ca7ec685bbee55d6dcb326abe23945c0806c39e",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/8ca7ec685bbee55d6dcb326abe23945c0806c39e.tar.gz",
|
||||
"hash": "1hkxm871m66mjsc4acdki32qqnpgk3n6vi3zrzns2bwlwp6ivcjx"
|
||||
"revision": "6afe187897bef7933475e6af374c893f4c84a293",
|
||||
"url": "https://github.com/NixOS/nixpkgs/archive/6afe187897bef7933475e6af374c893f4c84a293.tar.gz",
|
||||
"hash": "1x3yas2aingswrw7hpn43d9anlb08bpyk42dqg6v8f3p3yk83p1b"
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"type": "Git",
|
||||
@@ -22,9 +22,9 @@
|
||||
},
|
||||
"branch": "main",
|
||||
"submodules": false,
|
||||
"revision": "1f3f7b784643d488ba4bf315638b2b0a4c5fb007",
|
||||
"url": "https://github.com/numtide/treefmt-nix/archive/1f3f7b784643d488ba4bf315638b2b0a4c5fb007.tar.gz",
|
||||
"hash": "13qisjalw9qvd6lkd9g8225r46j5wdjrp3zw6jrs81q2vxwdz37m"
|
||||
"revision": "a05be418a1af1198ca0f63facb13c985db4cb3c5",
|
||||
"url": "https://github.com/numtide/treefmt-nix/archive/a05be418a1af1198ca0f63facb13c985db4cb3c5.tar.gz",
|
||||
"hash": "1yadm9disc59an4a6c1zidq82530rd7i7idzzsirv6dlwirbqk3q"
|
||||
}
|
||||
},
|
||||
"version": 5
|
||||
|
||||
+1
-5
@@ -56,11 +56,7 @@ Make sure that your local files aren't added to Git history by adding the follow
|
||||
|
||||
#### `devmode`
|
||||
|
||||
The shell in the manual source directory makes available a command, `devmode`.
|
||||
It is a daemon, that:
|
||||
1. watches the manual's source for changes and when they occur — rebuilds
|
||||
2. HTTP serves the manual, injecting a script that triggers reload on changes
|
||||
3. opens the manual in the default browser
|
||||
Use [`devmode`](../pkgs/by-name/de/devmode/README.md) for a live preview when editing the manual.
|
||||
|
||||
### Testing redirects
|
||||
|
||||
|
||||
@@ -57,10 +57,8 @@ stdenvNoCC.mkDerivation (
|
||||
substituteInPlace ./languages-frameworks/python.section.md \
|
||||
--subst-var-by python-interpreter-table "$(<"${pythonInterpreterTable}")"
|
||||
|
||||
cat \
|
||||
./functions/library.md.in \
|
||||
${lib-docs}/index.md \
|
||||
> ./functions/library.md
|
||||
cat ./functions/library.md.in ${lib-docs}/index.md > ./functions/library.md
|
||||
|
||||
substitute ./manual.md.in ./manual.md \
|
||||
--replace-fail '@MANUAL_VERSION@' '${lib.version}'
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ zsh).
|
||||
}
|
||||
```
|
||||
|
||||
The path may also be a fifo or named fd (such as produced by `<(cmd)`), in which
|
||||
The path may also be the result of process substitution (e.g. `<(cmd)`), in which
|
||||
case the shell and name must be provided (see below).
|
||||
|
||||
If the destination shell completion file is not actually present or consists of
|
||||
@@ -100,7 +100,7 @@ failure. To prevent this, guard the completion generation commands.
|
||||
{
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||
# using named fd
|
||||
# using process substitution
|
||||
installShellCompletion --cmd foobar \
|
||||
--bash <($out/bin/foobar --bash-completion) \
|
||||
--fish <($out/bin/foobar --fish-completion) \
|
||||
|
||||
@@ -33,6 +33,7 @@ The variables that this phase control are:
|
||||
- `dontVersionCheck`: Disable adding this hook to the [`preInstallCheckHooks`](#ssec-installCheck-phase). Useful if you do want to load the bash functions of the hook, but run them differently.
|
||||
- `versionCheckProgram`: The full path to the program that should print the `${version}` string. Defaults roughly to `${placeholder "out"}/bin/${pname}`. Using `$out` in the value of this variable won't work, as environment variables from this variable are not expanded by the hook. Hence using `placeholder` is unavoidable.
|
||||
- `versionCheckProgramArg`: The argument that needs to be passed to `versionCheckProgram`. If undefined the hook tries first `--help` and then `--version`. Examples: `version`, `-V`, `-v`.
|
||||
- `versionCheckKeepEnvironment`: A list of environment variables to keep and pass to the command. Only those variables should be added to this list that are actually required for the version command to work. If it is not feasible to explicitly list all these environment variables you can set this parameter to the special value `"*"` to disable the `--ignore-environment` flag and thus keep all environment variables.
|
||||
- `preVersionCheck`: A hook to run before the check is done.
|
||||
- `postVersionCheck`: A hook to run after the check is done.
|
||||
|
||||
|
||||
@@ -115,8 +115,8 @@ All new projects should use the CUDA redistributables available in [`cudaPackage
|
||||
|
||||
### Updating supported compilers and GPUs {#updating-supported-compilers-and-gpus}
|
||||
|
||||
1. Update `nvccCompatibilities` in `pkgs/development/cuda-modules/_cuda/data/nvcc.nix` to include the newest release of NVCC, as well as any newly supported host compilers.
|
||||
2. Update `cudaCapabilityToInfo` in `pkgs/development/cuda-modules/_cuda/data/cuda.nix` to include any new GPUs supported by the new release of CUDA.
|
||||
1. Update `nvccCompatibilities` in `pkgs/development/cuda-modules/_cuda/db/bootstrap/nvcc.nix` to include the newest release of NVCC, as well as any newly supported host compilers.
|
||||
2. Update `cudaCapabilityToInfo` in `pkgs/development/cuda-modules/_cuda/db/bootstrap/cuda.nix` to include any new GPUs supported by the new release of CUDA.
|
||||
|
||||
### Updating the CUDA Toolkit runfile installer {#updating-the-cuda-toolkit}
|
||||
|
||||
|
||||
@@ -136,7 +136,6 @@ buildPythonPackage rec {
|
||||
homepage = "https://github.com/pytest-dev/pytest";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [
|
||||
domenkozar
|
||||
lovek323
|
||||
madjar
|
||||
lsix
|
||||
@@ -2180,7 +2179,8 @@ The following rules are desired to be respected:
|
||||
* Make sure the tests are enabled using for example [`pytestCheckHook`](#using-pytestcheckhook) and, in the case of
|
||||
libraries, are passing for all interpreters. If certain tests fail they can be
|
||||
disabled individually. Try to avoid disabling the tests altogether. In any
|
||||
case, when you disable tests, leave a comment explaining why.
|
||||
case, when you disable tests, leave a comment explaining not only _what_ the failure
|
||||
is but _why_ the test failure can be ignored for safe distribution with nixpkgs.
|
||||
* `pythonImportsCheck` is set. This is still a good smoke test even if `pytestCheckHook` is set.
|
||||
* `meta.platforms` takes the default value in many cases.
|
||||
It does not need to be set explicitly unless the package requires a specific platform.
|
||||
|
||||
@@ -115,3 +115,46 @@ A nominal type marker, always `"configuration"`.
|
||||
#### `class` {#module-system-lib-evalModules-return-value-_configurationClass}
|
||||
|
||||
The [`class` argument](#module-system-lib-evalModules-param-class).
|
||||
|
||||
## Module arguments {#module-system-module-arguments}
|
||||
|
||||
Module arguments are the attribute values passed to modules when they are evaluated.
|
||||
|
||||
They originate from these sources:
|
||||
1. Built-in arguments
|
||||
- `lib`,
|
||||
- `config`,
|
||||
- `options`,
|
||||
- `_class`,
|
||||
- `_prefix`,
|
||||
2. Attributes from the [`specialArgs`] argument passed to [`evalModules`] or `submoduleWith`. These are application-specific.
|
||||
3. Attributes from the `_module.args` option value. These are application-specific and can be provided by any module.
|
||||
|
||||
The prior two categories are available while evaluating the `imports`, whereas
|
||||
the last category is only available after the `imports` have been resolved.
|
||||
|
||||
[`lib`]{#module-system-module-argument-lib} [🔗](#module-system-module-argument-lib)
|
||||
: A reference to the Nixpkgs library.
|
||||
|
||||
[`config`]{#module-system-module-argument-config} [🔗](#module-system-module-argument-config)
|
||||
: All option values.
|
||||
Unlike the `evalModules` [`config` return attribute](#module-system-lib-evalModules-return-value-config), this includes `_module`.
|
||||
|
||||
[`options`]{#module-system-module-argument-options} [🔗](#module-system-module-argument-options)
|
||||
: All evaluated option declarations.
|
||||
|
||||
[`_class`]{#module-system-module-argument-_class} [🔗](#module-system-module-argument-_class)
|
||||
: The [expected class](#module-system-lib-evalModules-param-class) of the loaded modules.
|
||||
|
||||
[`_prefix`]{#module-system-module-argument-_prefix} [🔗](#module-system-module-argument-_prefix)
|
||||
: The location under which the module is evaluated.
|
||||
This is used to improve error reporting and to find the implicit `name` module argument in submodules.
|
||||
It is exposed as a module argument due to how the module system is implemented, which cannot be avoided without breaking compatibility.
|
||||
|
||||
It is a good practice not to rely on `_prefix`. A module should not make assumptions about its location in the configuration tree.
|
||||
For example, the root of a NixOS configuration may have a non-empty prefix, for example when it is a specialisation, or when it is part of a larger, multi-host configuration such as a [NixOS test](https://nixos.org/manual/nixos/unstable/#sec-nixos-tests).
|
||||
Instead of depending on `_prefix` use explicit options, whose default definitions can be provided by the module that imports them.
|
||||
|
||||
<!-- markdown link aliases -->
|
||||
[`evalModules`]: #module-system-lib-evalModules
|
||||
[`specialArgs`]: #module-system-lib-evalModules-param-specialArgs
|
||||
|
||||
@@ -4515,5 +4515,23 @@
|
||||
],
|
||||
"sec-interop.cylonedx-fod": [
|
||||
"index.html#sec-interop.cylonedx-fod"
|
||||
],
|
||||
"module-system-module-argument-_prefix": [
|
||||
"index.html#module-system-module-argument-_prefix"
|
||||
],
|
||||
"module-system-module-argument-lib": [
|
||||
"index.html#module-system-module-argument-lib"
|
||||
],
|
||||
"module-system-module-argument-config": [
|
||||
"index.html#module-system-module-argument-config"
|
||||
],
|
||||
"module-system-module-arguments": [
|
||||
"index.html#module-system-module-arguments"
|
||||
],
|
||||
"module-system-module-argument-_class": [
|
||||
"index.html#module-system-module-argument-_class"
|
||||
],
|
||||
"module-system-module-argument-options": [
|
||||
"index.html#module-system-module-argument-options"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -17,14 +17,23 @@
|
||||
|
||||
- `base16-builder` node package has been removed due to lack of upstream maintenance.
|
||||
- `gentium` package now provides `Gentium-*.ttf` files, and not `GentiumPlus-*.ttf` files like before. The font identifiers `Gentium Plus*` are available in the `gentium-plus` package, and if you want to use the more recently updated package `gentium` [by sil](https://software.sil.org/gentium/), you should update your configuration files to use the `Gentium` font identifier.
|
||||
- `space-orbit` package has been removed due to lack of upstream maintenance. Debian upstream stopped tracking it in 2011.
|
||||
- `command-not-found` package is now disabled by default; it works only for nix-channels based systems, and requires setup for it to work.
|
||||
|
||||
- `gnome-keyring` no longer ships with an SSH agent anymore because it has been deprecated upstream. You should use `gcr_4` instead, which provides the same features. More information on why this was done can be found on [the relevant GCR upstream PR](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67).
|
||||
|
||||
- `lima` package now only includes the guest agent for the host's architecture by default. If your guest VM's architecture differs from your Lima host's, you'll need to enable the `lima-additional-guestagents` package by setting `withAdditionalGuestAgents = true` when overriding lima with this input.
|
||||
|
||||
## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Added `rewriteURL` attribute to the nixpkgs `config`, to allow for rewriting the URLs downloaded by `fetchurl`.
|
||||
|
||||
- New hardening flags, `strictflexarrays1` and `strictflexarrays3` were made available, corresponding to the gcc/clang options `-fstrict-flex-arrays=1` and `-fstrict-flex-arrays=3` respectively.
|
||||
|
||||
- Added `rewriteURL` attribute to the nixpkgs `config`, to allow for rewriting the URLs downloaded by `fetchurl`.
|
||||
- `gramps` has been updated to 6.0.0
|
||||
Upstream recommends [backing up your Family Trees](https://gramps-project.org/wiki/index.php/Gramps_6.0_Wiki_Manual_-_Manage_Family_Trees#Backing_up_a_Family_Tree) before upgrading.
|
||||
|
||||
## Nixpkgs Library {#sec-nixpkgs-release-25.11-lib}
|
||||
|
||||
|
||||
@@ -433,6 +433,8 @@ let
|
||||
pathHasContext
|
||||
canCleanSource
|
||||
pathIsGitRepo
|
||||
revOrTag
|
||||
repoRevToName
|
||||
;
|
||||
inherit (self.modules)
|
||||
evalModules
|
||||
|
||||
+4
-2
@@ -216,8 +216,9 @@ in
|
||||
/**
|
||||
Wrap a derivation such that instantiating it produces a warning.
|
||||
|
||||
All attributes apart from `meta`, `name`, and `type` (which are used by
|
||||
`nix search`) will be wrapped in `lib.warn`.
|
||||
All attributes will be wrapped with `lib.warn` except from `.meta`, `.name`,
|
||||
and `.type` which are used by `nix search`, and `.outputName` which avoids
|
||||
double warnings with `nix-instantiate` and `nix-build`.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -246,6 +247,7 @@ in
|
||||
"meta"
|
||||
"name"
|
||||
"type"
|
||||
"outputName"
|
||||
];
|
||||
in
|
||||
drv // mapAttrs (_: lib.warn msg) drvToWrap;
|
||||
|
||||
@@ -702,6 +702,18 @@ lib.mapAttrs mkLicense (
|
||||
fullName = "Historic Permission Notice and Disclaimer";
|
||||
};
|
||||
|
||||
hpndDifferentDisclaimer = {
|
||||
fullName = "HPND with different disclaimer";
|
||||
url = "https://gitlab.freedesktop.org/xorg/proto/xorgproto/-/blob/1914233e662d23ffb3812b80fadd0bbd064ad91c/COPYING-x11proto#L69-88";
|
||||
# TODO: if the license gets accepted to spdx then
|
||||
# add spdxId
|
||||
# else
|
||||
# remove license
|
||||
# && replace reference with whatever this license is supposed to be then
|
||||
# https://tools.spdx.org/app/license_requests/456
|
||||
# https://github.com/spdx/license-list-xml/issues/2753
|
||||
};
|
||||
|
||||
hpndSellVariant = {
|
||||
fullName = "Historical Permission Notice and Disclaimer - sell variant";
|
||||
spdxId = "HPND-sell-variant";
|
||||
|
||||
+10
-3
@@ -258,6 +258,7 @@ let
|
||||
specialArgs
|
||||
;
|
||||
_class = class;
|
||||
_prefix = prefix;
|
||||
}
|
||||
// specialArgs
|
||||
);
|
||||
@@ -388,6 +389,7 @@ let
|
||||
value = m;
|
||||
_type = m._type;
|
||||
expectedClass = class;
|
||||
prefix = args._prefix;
|
||||
}
|
||||
)
|
||||
else if isList m then
|
||||
@@ -1976,6 +1978,10 @@ let
|
||||
file != null && file != unknownModule
|
||||
) ", while trying to load a module into ${toString file}";
|
||||
|
||||
into_prefix_maybe =
|
||||
prefix:
|
||||
optionalString (prefix != [ ]) ", while trying to load a module into ${code (showOption prefix)}";
|
||||
|
||||
/**
|
||||
Format text with one line break between each list item.
|
||||
*/
|
||||
@@ -2023,12 +2029,13 @@ let
|
||||
value,
|
||||
_type,
|
||||
expectedClass ? null,
|
||||
prefix,
|
||||
}:
|
||||
paragraphs (
|
||||
[
|
||||
''
|
||||
Expected a module, but found a value of type ${warn (escapeNixString _type)}${into_fallback_file_maybe fallbackFile}.
|
||||
A module is typically loaded by adding it the ${code "imports = [ ... ];"} attribute of an existing module, or in the ${code "modules = [ ... ];"} argument of various functions.
|
||||
Expected a module, but found a value of type ${warn (escapeNixString _type)}${into_fallback_file_maybe fallbackFile}${into_prefix_maybe prefix}.
|
||||
A module is typically loaded by adding it to the ${code "imports = [ ... ];"} attribute of an existing module, or in the ${code "modules = [ ... ];"} argument of various functions.
|
||||
Please make sure that each of the list items is a module, and not a different kind of value.
|
||||
''
|
||||
]
|
||||
@@ -2057,7 +2064,7 @@ let
|
||||
'')
|
||||
]
|
||||
++ optionalMatch {
|
||||
# We'll no more than 5 custom suggestions here.
|
||||
# We'll add no more than 5 custom suggestions here.
|
||||
# Please switch to `.modules.${class}` in your Module System application.
|
||||
"nixos" = trim ''
|
||||
or
|
||||
|
||||
+2
-2
@@ -170,8 +170,8 @@ rec {
|
||||
|
||||
config.foo.enable = true;
|
||||
}
|
||||
]:
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
eval.config
|
||||
=> { foo.enable = true; }
|
||||
|
||||
+101
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
# Tested in lib/tests/sources.sh
|
||||
let
|
||||
inherit (builtins)
|
||||
inherit (lib.strings)
|
||||
match
|
||||
split
|
||||
storeDir
|
||||
@@ -403,6 +403,101 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
# urlToName : (URL | Path | String) -> String
|
||||
#
|
||||
# Transform a URL (or path, or string) into a clean package name.
|
||||
urlToName =
|
||||
url:
|
||||
let
|
||||
inherit (lib.strings) stringLength;
|
||||
base = baseNameOf (lib.removeSuffix "/" (lib.last (lib.splitString ":" (toString url))));
|
||||
# chop away one git or archive-related extension
|
||||
removeExt =
|
||||
name:
|
||||
let
|
||||
matchExt = match "(.*)\\.(git|tar|zip|gz|tgz|bz|tbz|bz2|tbz2|lzma|txz|xz|zstd)$" name;
|
||||
in
|
||||
if matchExt != null then lib.head matchExt else name;
|
||||
# apply function f to string x while the result shrinks
|
||||
shrink =
|
||||
f: x:
|
||||
let
|
||||
v = f x;
|
||||
in
|
||||
if stringLength v < stringLength x then shrink f v else x;
|
||||
in
|
||||
shrink removeExt base;
|
||||
|
||||
# shortRev : (String | Integer) -> String
|
||||
#
|
||||
# Given a package revision (like "refs/tags/v12.0"), produce a short revision ("12.0").
|
||||
shortRev =
|
||||
rev:
|
||||
let
|
||||
baseRev = baseNameOf (toString rev);
|
||||
matchHash = match "[a-f0-9]+" baseRev;
|
||||
matchVer = match "([A-Za-z]+[-_. ]?)*(v)?([0-9.]+.*)" baseRev;
|
||||
in
|
||||
if matchHash != null then
|
||||
builtins.substring 0 7 baseRev
|
||||
else if matchVer != null then
|
||||
lib.last matchVer
|
||||
else
|
||||
baseRev;
|
||||
|
||||
# revOrTag : String -> String -> String
|
||||
#
|
||||
# Turn git `rev` and `tag` pair into a revision usable in `repoRevToName*`.
|
||||
revOrTag =
|
||||
rev: tag:
|
||||
if tag != null then
|
||||
tag
|
||||
else if rev != null then
|
||||
rev
|
||||
else
|
||||
"HEAD";
|
||||
|
||||
# repoRevToNameFull : (URL | Path | String) -> (String | Integer | null) -> (String | null) -> String
|
||||
#
|
||||
# See `repoRevToName` below.
|
||||
repoRevToNameFull =
|
||||
repo_: rev_: suffix_:
|
||||
let
|
||||
repo = urlToName repo_;
|
||||
rev = if rev_ != null then "-${shortRev rev_}" else "";
|
||||
suffix = if suffix_ != null then "-${suffix_}" else "";
|
||||
in
|
||||
"${repo}${rev}${suffix}-source";
|
||||
|
||||
# repoRevToName : String -> (URL | Path | String) -> (String | Integer | null) -> String -> String
|
||||
#
|
||||
# Produce derivation.name attribute for a given repository URL/path/name and (optionally) its revision/version tag.
|
||||
#
|
||||
# This is used by fetch(zip|git|FromGitHub|hg|svn|etc) to generate discoverable
|
||||
# /nix/store paths.
|
||||
#
|
||||
# This uses a different implementation depending on the `pretty` argument:
|
||||
# "source" -> name everything as "source"
|
||||
# "versioned" -> name everything as "${repo}-${rev}-source"
|
||||
# "full" -> name everything as "${repo}-${rev}-${fetcher}-source"
|
||||
repoRevToName =
|
||||
kind:
|
||||
# match on `kind` first to minimize the thunk
|
||||
if kind == "source" then
|
||||
(
|
||||
repo: rev: suffix:
|
||||
"source"
|
||||
)
|
||||
else if kind == "versioned" then
|
||||
(
|
||||
repo: rev: suffix:
|
||||
repoRevToNameFull repo rev null
|
||||
)
|
||||
else if kind == "full" then
|
||||
repoRevToNameFull
|
||||
else
|
||||
throw "repoRevToName: invalid kind";
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
@@ -431,6 +526,11 @@ in
|
||||
pathHasContext
|
||||
canCleanSource
|
||||
|
||||
urlToName
|
||||
shortRev
|
||||
revOrTag
|
||||
repoRevToName
|
||||
|
||||
sourceByRegex
|
||||
sourceFilesBySuffices
|
||||
|
||||
|
||||
@@ -364,6 +364,9 @@ checkConfigOutput '^"submodule"$' options.submodule.type.description ./declare-s
|
||||
## Paths should be allowed as values and work as expected
|
||||
checkConfigOutput '^true$' config.submodule.enable ./declare-submoduleWith-path.nix
|
||||
|
||||
## _prefix module argument is available at import time and contains the prefix
|
||||
checkConfigOutput '^true$' config.foo.ok ./prefix-module-argument.nix
|
||||
|
||||
## deferredModule
|
||||
# default module is merged into nodes.foo
|
||||
checkConfigOutput '"beta"' config.nodes.foo.settingsDict.c ./deferred-module.nix
|
||||
@@ -615,6 +618,7 @@ checkConfigError 'Expected a module, but found a value of type .*"flake".*, whil
|
||||
checkConfigOutput '^true$' config.enable ./declare-enable.nix ./define-enable-with-top-level-mkIf.nix
|
||||
checkConfigError 'Expected a module, but found a value of type .*"configuration".*, while trying to load a module into .*/import-configuration.nix.' config ./import-configuration.nix
|
||||
checkConfigError 'please only import the modules that make up the configuration' config ./import-configuration.nix
|
||||
checkConfigError 'Expected a module, but found a value of type "configuration", while trying to load a module into .*/import-error-submodule.nix, while trying to load a module into .*foo.*\.' config.foo ./import-error-submodule.nix
|
||||
|
||||
# doRename works when `warnings` does not exist.
|
||||
checkConfigOutput '^1234$' config.c.d.e ./doRename-basic.nix
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
myconf = lib.evalModules { modules = [ { } ]; };
|
||||
in
|
||||
{
|
||||
options.foo = lib.mkOption {
|
||||
type = lib.types.submodule { };
|
||||
default = { };
|
||||
};
|
||||
config.foo =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
# error, like `import-configuration.nix`, but in a submodule this time
|
||||
myconf
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
options.foo = lib.mkOption {
|
||||
type = lib.types.submodule { };
|
||||
default = { };
|
||||
};
|
||||
|
||||
config = {
|
||||
foo =
|
||||
{ _prefix, ... }:
|
||||
assert _prefix == [ "foo" ];
|
||||
{
|
||||
options.ok = lib.mkOption { };
|
||||
config.ok = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -3,9 +3,10 @@
|
||||
|
||||
IMPORTANT:
|
||||
This is used by the github.com/NixOS/nix CI.
|
||||
This is used by Lix's CI (see flake.nix in the Lix repo).
|
||||
|
||||
Try not to change the interface of this file, or if you need to, ping the
|
||||
Nix maintainers for help. Thank you!
|
||||
Nix AND Lix maintainers (`nix eval -f . lib.teams.lix`) for help. Thank you!
|
||||
*/
|
||||
{
|
||||
pkgs,
|
||||
|
||||
+284
-22
@@ -1070,6 +1070,11 @@
|
||||
}
|
||||
];
|
||||
};
|
||||
aldenparker = {
|
||||
github = "aldenparker";
|
||||
githubId = 32986873;
|
||||
name = "Alden Parker";
|
||||
};
|
||||
aldoborrero = {
|
||||
email = "aldoborrero+nixos@pm.me";
|
||||
github = "aldoborrero";
|
||||
@@ -1643,6 +1648,12 @@
|
||||
github = "angaz";
|
||||
githubId = 10219618;
|
||||
};
|
||||
angelodlfrtr = {
|
||||
name = "Angelo Delefortrie";
|
||||
email = "angelo.delefortrie@gmail.com";
|
||||
github = "angelodlfrtr";
|
||||
githubId = 5405598;
|
||||
};
|
||||
angristan = {
|
||||
email = "angristan@pm.me";
|
||||
github = "angristan";
|
||||
@@ -2227,6 +2238,12 @@
|
||||
githubId = 104313094;
|
||||
name = "Andrey Shaat";
|
||||
};
|
||||
ashish0kumar = {
|
||||
email = "ashishkumar901336@gmail.com";
|
||||
github = "ashish0kumar";
|
||||
githubId = 143941235;
|
||||
name = "Ashish Kumar";
|
||||
};
|
||||
ashley = {
|
||||
email = "ashley@kira64.xyz";
|
||||
github = "kira64xyz";
|
||||
@@ -2776,6 +2793,13 @@
|
||||
githubId = 68944906;
|
||||
name = "Nikita";
|
||||
};
|
||||
bandithedoge = {
|
||||
email = "bandithedoge@protonmail.com";
|
||||
matrix = "@bandithedoge:matrix.org";
|
||||
github = "bandithedoge";
|
||||
githubId = 26331682;
|
||||
name = "Mikołaj Lercher";
|
||||
};
|
||||
bandresen = {
|
||||
email = "bandresen@gmail.com";
|
||||
github = "bennyandresen";
|
||||
@@ -3383,6 +3407,12 @@
|
||||
github = "blenderfreaky";
|
||||
githubId = 14351657;
|
||||
};
|
||||
blghnks = {
|
||||
email = "bilgehankuch@gmail.com";
|
||||
name = "Bilgehan Kuş";
|
||||
github = "blghnks";
|
||||
githubId = 175811412;
|
||||
};
|
||||
blinry = {
|
||||
name = "blinry";
|
||||
email = "mail@blinry.org";
|
||||
@@ -3414,12 +3444,6 @@
|
||||
githubId = 75451918;
|
||||
name = "Charlie Root";
|
||||
};
|
||||
bluescreen303 = {
|
||||
email = "mathijs@bluescreen303.nl";
|
||||
github = "bluescreen303";
|
||||
githubId = 16330;
|
||||
name = "Mathijs Kwik";
|
||||
};
|
||||
blusk = {
|
||||
email = "bluskript@gmail.com";
|
||||
github = "bluskript";
|
||||
@@ -3718,6 +3742,13 @@
|
||||
githubId = 92804487;
|
||||
keys = [ { fingerprint = "58A2 81E6 2FBD 6E4E 664C B603 7B4D 2A02 BB0E C28C"; } ];
|
||||
};
|
||||
bricklou = {
|
||||
name = "Bricklou";
|
||||
email = "louis13.bailleau@gmail.com";
|
||||
github = "bricklou";
|
||||
githubId = 15181236;
|
||||
keys = [ { fingerprint = "AE1E 3B80 7727 C974 B972 AB3C C324 01C3 BF52 1179"; } ];
|
||||
};
|
||||
britter = {
|
||||
name = "Benedikt Ritter";
|
||||
email = "beneritter@gmail.com";
|
||||
@@ -3807,6 +3838,12 @@
|
||||
githubId = 2379774;
|
||||
name = "Sean Buckley";
|
||||
};
|
||||
bugarela = {
|
||||
email = "gabrielamoreira05@gmail.com";
|
||||
github = "bugarela";
|
||||
githubId = 18356186;
|
||||
name = "Gabriela Moreira";
|
||||
};
|
||||
bugworm = {
|
||||
email = "bugworm@zoho.com";
|
||||
github = "bugworm";
|
||||
@@ -3904,15 +3941,14 @@
|
||||
github = "c4f3z1n";
|
||||
githubId = 22820003;
|
||||
};
|
||||
c4thebomb = {
|
||||
c4patino = {
|
||||
name = "Ceferino Patino";
|
||||
email = "c4patino@gmail.com";
|
||||
github = "c4thebomb";
|
||||
github = "c4patino";
|
||||
githubId = 79673111;
|
||||
keys = [
|
||||
{
|
||||
fingerprint = "EA60 D516 A926 7532 369D 3E67 E161 DF22 9EC1 280E";
|
||||
}
|
||||
{ fingerprint = "EA60 D516 A926 7532 369D 3E67 E161 DF22 9EC1 280E"; }
|
||||
{ fingerprint = "D088 A5AF C45B 78D1 CD4F 457C 6957 B3B6 46F2 BB4E"; }
|
||||
];
|
||||
};
|
||||
caarlos0 = {
|
||||
@@ -5342,6 +5378,11 @@
|
||||
githubId = 16950437;
|
||||
name = "cwyc";
|
||||
};
|
||||
cybardev = {
|
||||
name = "Sheikh";
|
||||
github = "cybardev";
|
||||
githubId = 50134239;
|
||||
};
|
||||
cybershadow = {
|
||||
name = "Vladimir Panteleev";
|
||||
email = "nixpkgs@cy.md";
|
||||
@@ -6681,6 +6722,7 @@
|
||||
drakon64 = {
|
||||
name = "Adam Chance";
|
||||
email = "nixpkgs@drakon.cloud";
|
||||
github = "drakon64";
|
||||
githubId = 6444703;
|
||||
};
|
||||
dramaturg = {
|
||||
@@ -6758,6 +6800,13 @@
|
||||
githubId = 11205987;
|
||||
name = "Daniel Salazar";
|
||||
};
|
||||
dsalwasser = {
|
||||
name = "Daniel Salwasser";
|
||||
email = "daniel.salwasser@outlook.com";
|
||||
github = "dsalwasser";
|
||||
githubId = 148379503;
|
||||
keys = [ { fingerprint = "DBA9 AE6B 84A9 C08E C4AD 1E46 6CD2 0B2D 0655 BDF6"; } ];
|
||||
};
|
||||
dschrempf = {
|
||||
name = "Dominik Schrempf";
|
||||
email = "dominik.schrempf@gmail.com";
|
||||
@@ -6913,6 +6962,12 @@
|
||||
githubId = 277927;
|
||||
name = "Dylan Taylor";
|
||||
};
|
||||
dynamicgoose = {
|
||||
email = "gezaahs@gmail.com";
|
||||
github = "dynamicgoose";
|
||||
githubId = 75172915;
|
||||
name = "Géza Ahsendorf";
|
||||
};
|
||||
dysinger = {
|
||||
email = "tim@dysinger.net";
|
||||
github = "dysinger";
|
||||
@@ -7609,6 +7664,12 @@
|
||||
github = "ErinvanderVeen";
|
||||
githubId = 10973664;
|
||||
};
|
||||
ern775 = {
|
||||
email = "eren.demir2479090@gmail.com";
|
||||
github = "ern775";
|
||||
githubId = 188162351;
|
||||
name = "Eren Demir";
|
||||
};
|
||||
erooke = {
|
||||
email = "ethan@roo.ke";
|
||||
name = "Ethan Rooke";
|
||||
@@ -7993,12 +8054,6 @@
|
||||
githubId = 8073;
|
||||
name = "Francois-Rene Rideau";
|
||||
};
|
||||
farlion = {
|
||||
email = "florian.peter@gmx.at";
|
||||
github = "workflow";
|
||||
githubId = 1276854;
|
||||
name = "Florian Peter";
|
||||
};
|
||||
farnoy = {
|
||||
email = "jakub@okonski.org";
|
||||
github = "farnoy";
|
||||
@@ -9878,6 +9933,12 @@
|
||||
githubId = 155722885;
|
||||
name = "Joachim Ernst";
|
||||
};
|
||||
hemera = {
|
||||
email = "neikos@neikos.email";
|
||||
github = "TheNeikos";
|
||||
githubId = 1631166;
|
||||
name = "Marcel Müller";
|
||||
};
|
||||
henkery = {
|
||||
email = "jim@reupload.nl";
|
||||
github = "henkery";
|
||||
@@ -10146,6 +10207,14 @@
|
||||
githubId = 1064477;
|
||||
name = "Hannes Hornwall";
|
||||
};
|
||||
hougo = {
|
||||
name = "Hugo Renard";
|
||||
email = "hugo.renard@proton.me";
|
||||
matrix = "@hougo:liiib.re";
|
||||
github = "hrenard";
|
||||
githubId = 7594435;
|
||||
keys = [ { fingerprint = "3AE9 67F9 2C9F 55E9 03C8 283F 3A28 5FD4 7020 9C59"; } ];
|
||||
};
|
||||
hoverbear = {
|
||||
email = "operator+nix@hoverbear.org";
|
||||
matrix = "@hoverbear:matrix.org";
|
||||
@@ -10835,6 +10904,12 @@
|
||||
githubId = 13622947;
|
||||
keys = [ { fingerprint = "1412 816B A9FA F62F D051 1975 D3E1 B013 B463 1293"; } ];
|
||||
};
|
||||
isotoxal = {
|
||||
name = "Abhinav Kuruvila Joseph";
|
||||
email = "abhinavkuruvila@proton.me";
|
||||
github = "IsotoxalDev";
|
||||
githubId = 62714538;
|
||||
};
|
||||
istoph = {
|
||||
email = "chr@istoph.de";
|
||||
name = "Christoph Hüffelmann";
|
||||
@@ -11085,6 +11160,12 @@
|
||||
githubId = 7558482;
|
||||
name = "Jack Gerrits";
|
||||
};
|
||||
jackr = {
|
||||
name = "Jack Rosenberg";
|
||||
email = "nixos@jackr.eu";
|
||||
github = "jackrosenberg";
|
||||
githubId = 56937175;
|
||||
};
|
||||
jacobkoziej = {
|
||||
name = "Jacob Koziej";
|
||||
email = "jacobkoziej@gmail.com";
|
||||
@@ -11578,6 +11659,13 @@
|
||||
githubId = 110620;
|
||||
name = "Jevin Maltais";
|
||||
};
|
||||
jezcope = {
|
||||
email = "j.cope@erambler.co.uk";
|
||||
github = "jezcope";
|
||||
githubId = 457628;
|
||||
name = "Jez Cope";
|
||||
keys = [ { fingerprint = "D9DA 3E47 E8BD 377D A317 B3D0 9E42 CE07 1C45 59D1"; } ];
|
||||
};
|
||||
jfchevrette = {
|
||||
email = "jfchevrette@gmail.com";
|
||||
github = "jfchevrette";
|
||||
@@ -12253,6 +12341,11 @@
|
||||
github = "joshniemela";
|
||||
githubId = 88747315;
|
||||
};
|
||||
joshprk = {
|
||||
name = "Joshua Park";
|
||||
github = "joshprk";
|
||||
githubId = 123624726;
|
||||
};
|
||||
joshuafern = {
|
||||
name = "Joshua Fern";
|
||||
email = "joshuafern@protonmail.com";
|
||||
@@ -12495,6 +12588,12 @@
|
||||
githubId = 62934740;
|
||||
keys = [ { fingerprint = "E9C6 44C7 F6AA A865 4CB9 2723 22C8 B0CE B9AC 4AFF"; } ];
|
||||
};
|
||||
juliabru = {
|
||||
name = "Julia Brunenberg";
|
||||
email = "julia@jjim.de";
|
||||
github = "juliadin";
|
||||
githubId = 7837969;
|
||||
};
|
||||
JulianFP = {
|
||||
name = "Julian Partanen";
|
||||
github = "JulianFP";
|
||||
@@ -12543,6 +12642,13 @@
|
||||
githubId = 39434424;
|
||||
name = "Felix Springer";
|
||||
};
|
||||
junestepp = {
|
||||
email = "git@junestepp.me";
|
||||
github = "junestepp";
|
||||
githubId = 26205306;
|
||||
name = "June Stepp";
|
||||
keys = [ { fingerprint = "2561 0243 2233 CFE6 E13E 3C33 348C 6EB3 39AE C582"; } ];
|
||||
};
|
||||
junjihashimoto = {
|
||||
email = "junji.hashimoto@gmail.com";
|
||||
github = "junjihashimoto";
|
||||
@@ -12926,6 +13032,13 @@
|
||||
githubId = 8211181;
|
||||
name = "Kevin Kandlbinder";
|
||||
};
|
||||
keyruu = {
|
||||
name = "Lucas";
|
||||
email = "me@keyruu.de";
|
||||
matrix = "@keyruu:matrix.org";
|
||||
github = "Keyruu";
|
||||
githubId = 53177682;
|
||||
};
|
||||
keysmashes = {
|
||||
email = "x-89cjg9@keysmash.solutions";
|
||||
github = "keysmashes";
|
||||
@@ -13934,6 +14047,12 @@
|
||||
githubId = 567634;
|
||||
name = "Daniel Kuehn";
|
||||
};
|
||||
leleuvilela = {
|
||||
email = "viniciusvilela19@gmail.com";
|
||||
github = "leleuvilela";
|
||||
githubId = 19839085;
|
||||
name = "Vinicius Vilela";
|
||||
};
|
||||
lelgenio = {
|
||||
email = "lelgenio@lelgenio.com";
|
||||
github = "lelgenio";
|
||||
@@ -14209,6 +14328,12 @@
|
||||
githubId = 75130626;
|
||||
keys = [ { fingerprint = "80EE AAD8 43F9 3097 24B5 3D7E 27E9 7B91 E63A 7FF8"; } ];
|
||||
};
|
||||
link00000000 = {
|
||||
email = "crandall.logan@gmail.com";
|
||||
github = "link00000000";
|
||||
githubId = 9771505;
|
||||
name = "Logan Crandall";
|
||||
};
|
||||
link2xt = {
|
||||
email = "link2xt@testrun.org";
|
||||
githubId = 18373967;
|
||||
@@ -14357,6 +14482,12 @@
|
||||
name = "legendofmiracles";
|
||||
keys = [ { fingerprint = "CC50 F82C 985D 2679 0703 AF15 19B0 82B3 DEFE 5451"; } ];
|
||||
};
|
||||
lonerOrz = {
|
||||
email = "2788892716@qq.com";
|
||||
name = "lonerOrz";
|
||||
github = "lonerOrz";
|
||||
githubId = 68736947;
|
||||
};
|
||||
longer = {
|
||||
email = "michal@mieszczak.com.pl";
|
||||
name = "Michał Mieszczak";
|
||||
@@ -14937,6 +15068,13 @@
|
||||
name = "Mæve";
|
||||
keys = [ { fingerprint = "96C9 D086 CC9D 7BD7 EF24 80E2 9168 796A 1CC3 AEA2"; } ];
|
||||
};
|
||||
maeve-oake = {
|
||||
email = "maeve@oa.ke";
|
||||
matrix = "@maeve:oa.ke";
|
||||
github = "maeve-oake";
|
||||
githubId = 38541651;
|
||||
name = "maeve";
|
||||
};
|
||||
mafo = {
|
||||
email = "Marc.Fontaine@gmx.de";
|
||||
github = "MarcFontaine";
|
||||
@@ -15442,6 +15580,11 @@
|
||||
githubId = 952712;
|
||||
name = "Matt Christ";
|
||||
};
|
||||
matteobongio = {
|
||||
github = "matteobongio";
|
||||
githubId = 155063357;
|
||||
name = "Matteo Bongiovanni";
|
||||
};
|
||||
matteopacini = {
|
||||
email = "m@matteopacini.me";
|
||||
github = "matteo-pacini";
|
||||
@@ -15795,6 +15938,12 @@
|
||||
githubId = 1377571;
|
||||
name = "Matthew S. Daiter";
|
||||
};
|
||||
mdaniels5757 = {
|
||||
email = "nix@mdaniels.me";
|
||||
github = "mdaniels5757";
|
||||
githubId = 8762511;
|
||||
name = "Michael Daniels";
|
||||
};
|
||||
mdarocha = {
|
||||
email = "marek@mdarocha.pl";
|
||||
github = "mdarocha";
|
||||
@@ -16168,11 +16317,11 @@
|
||||
name = "midchildan";
|
||||
keys = [ { fingerprint = "FEF0 AE2D 5449 3482 5F06 40AA 186A 1EDA C5C6 3F83"; } ];
|
||||
};
|
||||
midirhee12 = {
|
||||
email = "midirhee@proton.me";
|
||||
github = "midirhee12";
|
||||
midischwarz12 = {
|
||||
email = "midischwarz@proton.me";
|
||||
github = "midischwarz12";
|
||||
githubId = 38054771;
|
||||
name = "midirhee12";
|
||||
name = "midischwarz12";
|
||||
};
|
||||
mig4ng = {
|
||||
email = "mig4ng@gmail.com";
|
||||
@@ -17094,6 +17243,13 @@
|
||||
githubId = 110892040;
|
||||
name = "Mykyta Polchanov";
|
||||
};
|
||||
myzel394 = {
|
||||
email = "github.7a2op@simplelogin.co";
|
||||
github = "Myzel394";
|
||||
githubId = 50424412;
|
||||
matrix = "@myzel394:matrix.org";
|
||||
name = "Myzel394";
|
||||
};
|
||||
mzabani = {
|
||||
email = "mzabani@gmail.com";
|
||||
github = "mzabani";
|
||||
@@ -17231,6 +17387,12 @@
|
||||
githubId = 144328493;
|
||||
keys = [ { fingerprint = "D89F 440C 6CD7 4753 090F EC7A 4682 C5CB 4D9D EA3C"; } ];
|
||||
};
|
||||
naora = {
|
||||
name = "Joris Gundermann";
|
||||
email = "jorisgundermann@gmail.com";
|
||||
github = "Naora";
|
||||
githubId = 2221163;
|
||||
};
|
||||
naphta = {
|
||||
github = "naphta";
|
||||
githubId = 6709831;
|
||||
@@ -18485,6 +18647,11 @@
|
||||
githubId = 4728903;
|
||||
name = "Owen Lynch";
|
||||
};
|
||||
omarjatoi = {
|
||||
github = "omarjatoi";
|
||||
githubId = 9091609;
|
||||
name = "Omar Jatoi";
|
||||
};
|
||||
omasanori = {
|
||||
github = "omasanori";
|
||||
githubId = 167209;
|
||||
@@ -19315,6 +19482,12 @@
|
||||
githubId = 28323;
|
||||
name = "Peter Simons";
|
||||
};
|
||||
petingoso = {
|
||||
email = "petingavasco@protonmail.com";
|
||||
github = "Petingoso";
|
||||
githubId = 92183955;
|
||||
name = "Vasco Petinga";
|
||||
};
|
||||
petrkozorezov = {
|
||||
email = "petr.kozorezov@gmail.com";
|
||||
github = "petrkozorezov";
|
||||
@@ -19946,6 +20119,12 @@
|
||||
githubId = 24578572;
|
||||
name = "Blake North";
|
||||
};
|
||||
powwu = {
|
||||
name = "powwu";
|
||||
email = "hello@powwu.sh";
|
||||
github = "powwu";
|
||||
githubId = 20643401;
|
||||
};
|
||||
poz = {
|
||||
name = "Jacek Poziemski";
|
||||
email = "poz@poz.pet";
|
||||
@@ -20459,6 +20638,11 @@
|
||||
githubId = 39039420;
|
||||
name = "Quinn Dougherty";
|
||||
};
|
||||
QuiNzX = {
|
||||
name = "QuiNz-";
|
||||
github = "QuiNzX";
|
||||
githubId = 76129478;
|
||||
};
|
||||
quodlibetor = {
|
||||
email = "quodlibetor@gmail.com";
|
||||
github = "quodlibetor";
|
||||
@@ -20498,6 +20682,12 @@
|
||||
matrix = "@qyriad:katesiria.org";
|
||||
name = "Qyriad";
|
||||
};
|
||||
r-aizawa = {
|
||||
github = "Xantibody";
|
||||
githubId = 109563705;
|
||||
name = "Ryu Aizawa";
|
||||
email = "zeku.bushinryu38@gmail.com";
|
||||
};
|
||||
r-burns = {
|
||||
email = "rtburns@protonmail.com";
|
||||
github = "r-burns";
|
||||
@@ -22344,6 +22534,12 @@
|
||||
github = "sdaqo";
|
||||
githubId = 63876564;
|
||||
};
|
||||
sdedovic = {
|
||||
name = "Stevan Dedovic";
|
||||
email = "stevan@dedovic.com";
|
||||
github = "sdedovic";
|
||||
githubId = 599915;
|
||||
};
|
||||
sdht0 = {
|
||||
email = "nixpkgs@sdht.in";
|
||||
github = "sdht0";
|
||||
@@ -23029,6 +23225,7 @@
|
||||
name = "Zhifan";
|
||||
email = "nonno.felice69uwu@gmail.com";
|
||||
matrix = "@c3n21:matrix.org";
|
||||
github = "c3n21";
|
||||
githubId = 37077738;
|
||||
};
|
||||
sinjin2300 = {
|
||||
@@ -23623,6 +23820,12 @@
|
||||
github = "braaandon";
|
||||
githubId = 86573128;
|
||||
};
|
||||
stackptr = {
|
||||
name = "Corey Johns";
|
||||
email = "corey@zx.dev";
|
||||
github = "stackptr";
|
||||
githubId = 4542907;
|
||||
};
|
||||
stackshadow = {
|
||||
email = "stackshadow@evilbrain.de";
|
||||
github = "stackshadow";
|
||||
@@ -23642,6 +23845,12 @@
|
||||
githubId = 6362238;
|
||||
name = "Christoph Honal";
|
||||
};
|
||||
starius = {
|
||||
email = "bnagaev@gmail.com";
|
||||
github = "starius";
|
||||
githubId = 920155;
|
||||
name = "Boris Nagaev";
|
||||
};
|
||||
starkca90 = {
|
||||
email = "starkca90@gmail.com";
|
||||
github = "starkca90";
|
||||
@@ -24748,6 +24957,12 @@
|
||||
githubId = 71843723;
|
||||
keys = [ { fingerprint = "EEFB CC3A C529 CFD1 943D A75C BDD5 7BE9 9D55 5965"; } ];
|
||||
};
|
||||
theonlymrcat = {
|
||||
name = "Max Guppy";
|
||||
email = "theonly@mrcat.au";
|
||||
github = "TheOnlyMrCat";
|
||||
githubId = 23222857;
|
||||
};
|
||||
theoparis = {
|
||||
email = "theo@tinted.dev";
|
||||
github = "theoparis";
|
||||
@@ -25366,6 +25581,17 @@
|
||||
github = "tpwrules";
|
||||
githubId = 208010;
|
||||
};
|
||||
transcaffeine = {
|
||||
name = "transcaffeine";
|
||||
email = "transcaffeine@finally.coffee";
|
||||
github = "transcaffeine";
|
||||
githubId = 139544537;
|
||||
keys = [
|
||||
{
|
||||
fingerprint = "5E0A 9CB3 9806 57CB 9AB9 4AE6 790E AEC8 F99A B41F";
|
||||
}
|
||||
];
|
||||
};
|
||||
traverseda = {
|
||||
email = "traverse.da@gmail.com";
|
||||
github = "traverseda";
|
||||
@@ -25572,6 +25798,12 @@
|
||||
name = "Denny Schäfer";
|
||||
keys = [ { fingerprint = "C752 0E49 4D92 1740 D263 C467 B057 455D 1E56 7270"; } ];
|
||||
};
|
||||
tuxy = {
|
||||
email = "lastpass7565@gmail.com";
|
||||
github = "tuxy";
|
||||
githubId = 57819359;
|
||||
name = "Binh Nguyen";
|
||||
};
|
||||
tv = {
|
||||
email = "tv@krebsco.de";
|
||||
github = "4z3";
|
||||
@@ -26219,10 +26451,11 @@
|
||||
name = "Danny Wilson";
|
||||
};
|
||||
vizid = {
|
||||
email = "vizid1337@gmail.com";
|
||||
email = "mail@vizqq.cc";
|
||||
github = "ViZiD";
|
||||
githubId = 7444430;
|
||||
name = "Radik Islamov";
|
||||
keys = [ { fingerprint = "5779 01B8 C620 E064 4212 C6FC F396 46E8 0C71 08E7"; } ];
|
||||
};
|
||||
vji = {
|
||||
email = "mail@viktor.im";
|
||||
@@ -26833,6 +27066,13 @@
|
||||
githubId = 1595132;
|
||||
name = "Kranium Gikos Mendoza";
|
||||
};
|
||||
workflow = {
|
||||
email = "4farlion@gmail.com";
|
||||
github = "workflow";
|
||||
githubId = 1276854;
|
||||
name = "Florian Peter";
|
||||
keys = [ { fingerprint = "C349 3C74 E232 A1EE E005 1678 2457 5DB9 3F6C EC16"; } ];
|
||||
};
|
||||
worldofpeace = {
|
||||
email = "worldofpeace@protonmail.ch";
|
||||
github = "worldofpeace";
|
||||
@@ -26911,6 +27151,13 @@
|
||||
githubId = 13378502;
|
||||
name = "Wulfsta";
|
||||
};
|
||||
wulpine = {
|
||||
name = "Wulpey";
|
||||
email = "wulpine@proton.me";
|
||||
matrix = "@wulpine:matrix.org";
|
||||
github = "wulpine";
|
||||
githubId = 59339992;
|
||||
};
|
||||
wunderbrick = {
|
||||
name = "Andrew Phipps";
|
||||
email = "lambdafuzz@tutanota.com";
|
||||
@@ -27377,6 +27624,15 @@
|
||||
githubId = 40352765;
|
||||
name = "Yoctocell";
|
||||
};
|
||||
yogansh = {
|
||||
email = "yogansh@yogansh.tech";
|
||||
github = "YoganshSharma";
|
||||
githubId = 38936915;
|
||||
name = "Yogansh Sharma";
|
||||
keys = [
|
||||
{ fingerprint = "D2A8 A906 ACA7 B6D6 575E 9A2F 3A49 5054 6EA6 9E5C"; }
|
||||
];
|
||||
};
|
||||
yomaq = {
|
||||
name = "yomaq";
|
||||
github = "yomaq";
|
||||
@@ -27759,6 +28015,12 @@
|
||||
{ fingerprint = "E22F 760E E074 E57A 21CB 1733 8DD2 9BB5 2C25 EA09"; }
|
||||
];
|
||||
};
|
||||
Zirconium419122 = {
|
||||
name = "Rasmus Liaskar";
|
||||
github = "Zirconium419122";
|
||||
email = "rasmus@liaskar.net";
|
||||
githubId = 152716976;
|
||||
};
|
||||
zlepper = {
|
||||
name = "Rasmus Hansen";
|
||||
github = "zlepper";
|
||||
|
||||
@@ -22,7 +22,7 @@ robustly than text search through `maintainer-list.nix`.
|
||||
❯ ./get-maintainer.sh nicoo
|
||||
{
|
||||
"email": "nicoo@debian.org",
|
||||
"github": "nbraud",
|
||||
"github": "nicoonoclaste",
|
||||
"githubId": 1155801,
|
||||
"keys": [
|
||||
{
|
||||
|
||||
@@ -62,6 +62,9 @@ OK_MISSING_BY_PACKAGE = {
|
||||
"krfb": {
|
||||
"Qt6XkbCommonSupport", # not real
|
||||
},
|
||||
"ksystemstats": {
|
||||
"Libcap", # used to call setcap at build time and nothing else
|
||||
},
|
||||
"kuserfeedback": {
|
||||
"Qt6Svg", # all used for backend console stuff we don't ship
|
||||
"QmlLint",
|
||||
@@ -75,6 +78,9 @@ OK_MISSING_BY_PACKAGE = {
|
||||
"display-info", # newer versions identify as libdisplay-info
|
||||
"Libcap", # used to call setcap at build time and nothing else
|
||||
},
|
||||
"kwin-x11": {
|
||||
"Libcap", # used to call setcap at build time and nothing else
|
||||
},
|
||||
"libksysguard": {
|
||||
"Libcap", # used to call setcap at build time and nothing else
|
||||
},
|
||||
@@ -84,6 +90,12 @@ OK_MISSING_BY_PACKAGE = {
|
||||
},
|
||||
"plasma-desktop": {
|
||||
"scim", # upstream is dead, not packaged in Nixpkgs
|
||||
"KAccounts6", # dead upstream
|
||||
"AccountsQt6", # dead upstream
|
||||
"signon-oauth2plugin", # dead upstream
|
||||
},
|
||||
"plasma-dialer": {
|
||||
"KTactileFeedback", # dead?
|
||||
},
|
||||
"poppler-qt6": {
|
||||
"gobject-introspection-1.0", # we don't actually want to build the GTK variant
|
||||
|
||||
@@ -186,6 +186,19 @@ with lib.maintainers;
|
||||
shortName = "Categorization";
|
||||
};
|
||||
|
||||
ci = {
|
||||
members = [
|
||||
MattSturgeon
|
||||
mic92
|
||||
philiptaron
|
||||
wolfgangwalther
|
||||
zowoq
|
||||
];
|
||||
githubTeams = [ "nixpkgs-ci" ];
|
||||
scope = "Maintain Nixpkgs' in-tree Continuous Integration, including GitHub Actions.";
|
||||
shortName = "CI";
|
||||
};
|
||||
|
||||
cinnamon = {
|
||||
members = [
|
||||
bobby285271
|
||||
@@ -915,12 +928,21 @@ with lib.maintainers;
|
||||
eljamm
|
||||
ethancedwards8
|
||||
fricklerhandwerk
|
||||
OPNA2608
|
||||
prince213
|
||||
wegank
|
||||
];
|
||||
scope = "Maintain NGI-supported software.";
|
||||
shortName = "NGI";
|
||||
};
|
||||
|
||||
nixos-rebuild = {
|
||||
members = [ thiagokokada ];
|
||||
scope = "Maintain nixos-rebuild(-ng).";
|
||||
shortName = "nixos-rebuild";
|
||||
enableFeatureFreezePing = true;
|
||||
};
|
||||
|
||||
node = {
|
||||
members = [ winter ];
|
||||
scope = "Maintain Node.js runtimes and build tooling.";
|
||||
|
||||
@@ -37,7 +37,9 @@ Make sure that your local files aren't added to Git history by adding the follow
|
||||
/**/.direnv
|
||||
```
|
||||
|
||||
You might want to also use [`devmode`](https://github.com/NixOS/nixpkgs/blob/master/doc/README.md#devmode) while editing the manual.
|
||||
### `devmode` {#sec-contributing-devmode}
|
||||
|
||||
Use [`devmode`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/de/devmode/README.md) for a live preview when editing the manual.
|
||||
|
||||
## Testing redirects {#sec-contributing-redirects}
|
||||
|
||||
|
||||
@@ -50,6 +50,15 @@
|
||||
"module-services-crab-hole-upstream-options": [
|
||||
"index.html#module-services-crab-hole-upstream-options"
|
||||
],
|
||||
"module-services-firefox-syncserver-clients": [
|
||||
"index.html#module-services-firefox-syncserver-clients"
|
||||
],
|
||||
"module-services-firefox-syncserver-clients-android": [
|
||||
"index.html#module-services-firefox-syncserver-clients-android"
|
||||
],
|
||||
"module-services-firefox-syncserver-clients-desktop": [
|
||||
"index.html#module-services-firefox-syncserver-clients-desktop"
|
||||
],
|
||||
"module-services-opencloud": [
|
||||
"index.html#module-services-opencloud"
|
||||
],
|
||||
@@ -86,6 +95,9 @@
|
||||
"sec-contributing-development-env": [
|
||||
"index.html#sec-contributing-development-env"
|
||||
],
|
||||
"sec-contributing-devmode": [
|
||||
"index.html#sec-contributing-devmode"
|
||||
],
|
||||
"sec-mattermost": [
|
||||
"index.html#sec-mattermost"
|
||||
],
|
||||
@@ -542,6 +554,18 @@
|
||||
"module-services-youtrack-upgrade-2022_3-2023_1": [
|
||||
"index.html#module-services-youtrack-upgrade-2022_3-2023_1"
|
||||
],
|
||||
"module-services-szurubooru": [
|
||||
"index.html#module-services-szurubooru"
|
||||
],
|
||||
"module-services-szurubooru-basic-usage": [
|
||||
"index.html#module-services-szurubooru-basic-usage"
|
||||
],
|
||||
"module-services-szurubooru-reverse-proxy-configuration": [
|
||||
"index.html#module-services-szurubooru-reverse-proxy-configuration"
|
||||
],
|
||||
"module-services-szurubooru-extra-config": [
|
||||
"index.html#module-services-szurubooru-extra-config"
|
||||
],
|
||||
"module-services-suwayomi-server": [
|
||||
"index.html#module-services-suwayomi-server"
|
||||
],
|
||||
|
||||
@@ -105,7 +105,7 @@ In addition to numerous new and updated packages, this release has the following
|
||||
|
||||
- [ivpn](https://www.ivpn.net/), a secure, private VPN with fast WireGuard connections. Available as [services.ivpn](#opt-services.ivpn.enable).
|
||||
|
||||
- [vmalert](https://victoriametrics.com/), an alerting engine for VictoriaMetrics. Available as [services.vmalert](#opt-services.vmalert.enable).
|
||||
- [vmalert](https://victoriametrics.com/), an alerting engine for VictoriaMetrics. Available as [services.vmalert.instances](#opt-services.vmalert.instances._name_.enable).
|
||||
|
||||
- [jellyseerr](https://github.com/Fallenbagel/jellyseerr), a web-based requests manager for Jellyfin, forked from Overseerr. Available as [services.jellyseerr](#opt-services.jellyseerr.enable).
|
||||
|
||||
|
||||
@@ -4,8 +4,12 @@
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- `nixos-rebuild-ng`, a full rewrite of `nixos-rebuild` in Python, is enabled by default from this release. You can disable it by setting [](#opt-system.rebuild.enableNg) to `false` in your configuration if you need, but please report any issues. It is expected that the next major version of NixOS (26.05) will remove the {option}`system.rebuild.enableNg` option.
|
||||
|
||||
- Secure boot support can now be enabled for the Limine bootloader through {option}`boot.loader.limine.secureBoot.enable`. Bootloader install script signs the bootloader, then kernels are hashed during system rebuild and written to a config. This allows Limine to boot only the kernels installed through NixOS system.
|
||||
|
||||
- The default PostgreSQL version for new NixOS installations (i.e. with `system.stateVersion >= 25.11`) is v17.
|
||||
|
||||
## New Modules {#sec-release-25.11-new-modules}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -15,15 +19,29 @@
|
||||
|
||||
- [Pi-hole](https://pi-hole.net/), a DNS sinkhole for advertisements based on Dnsmasq. Available as [services.pihole-ftl](#opt-services.pihole-ftl.enable), and [services.pihole-web](#opt-services.pihole-web.enable) for the web GUI and API.
|
||||
|
||||
- [Fediwall](https://fediwall.social), a web application for live displaying toots from mastodon, inspired by mastowall. Available as [services.fediwall](#opt-services.fediwall.enable).
|
||||
|
||||
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
|
||||
|
||||
- Options under [networking.getaddrinfo](#opt-networking.getaddrinfo.enable) are now allowed to declaratively configure address selection and sorting behavior of `getaddrinfo` in dual-stack networks.
|
||||
|
||||
- [LACT](https://github.com/ilya-zlobintsev/LACT), a GPU monitoring and configuration tool, can now be enabled through [services.lact.enable](#opt-services.lact.enable).
|
||||
Note that for LACT to work properly on AMD GPU systems, you need to enable [hardware.amdgpu.overdrive.enable](#opt-hardware.amdgpu.overdrive.enable).
|
||||
|
||||
- [tlsrpt-reporter], an application suite to generate and deliver TLSRPT reports. Available as [services.tlsrpt](#opt-services.tlsrpt.enable).
|
||||
|
||||
- [Broadcast Box](https://github.com/Glimesh/broadcast-box), a WebRTC broadcast server. Available as [services.broadcast-box](options.html#opt-services.broadcast-box.enable).
|
||||
|
||||
- Docker now defaults to 28.x, because version 27.x stopped receiving security updates and bug fixes after [May 2, 2025](https://github.com/moby/moby/pull/49910).
|
||||
|
||||
- [Draupnir](https://github.com/the-draupnir-project/draupnir), a Matrix moderation bot. Available as [services.draupnir](#opt-services.draupnir.enable).
|
||||
|
||||
- [postfix-tlspol](https://github.com/Zuplu/postfix-tlspol), MTA-STS and DANE resolver and TLS policy server for Postfix. Available as [services.postfix-tlspol](#opt-services.postfix-tlspol.enable).
|
||||
|
||||
- [Szurubooru](https://github.com/rr-/szurubooru), an image board engine inspired by services such as Danbooru, dedicated for small and medium communities. Available as [services.szurubooru](#opt-services.szurubooru.enable).
|
||||
|
||||
- [nix-store-veritysetup](https://github.com/nikstur/nix-store-veritysetup-generator), a systemd generator to unlock the Nix Store as a dm-verity protected block device. Available as [boot.initrd.nix-store-veritysetup](options.html#opt-boot.initrd.nix-store-veritysetup.enable).
|
||||
|
||||
- [SuiteNumérique Docs](https://github.com/suitenumerique/docs), a collaborative note taking, wiki and documentation web platform and alternative to Notion or Outline. Available as [services.lasuite-docs](#opt-services.lasuite-docs.enable).
|
||||
|
||||
[dwl](https://codeberg.org/dwl/dwl), a compact, hackable compositor for Wayland based on wlroots. Available as [programs.dwl](#opt-programs.dwl.enable).
|
||||
@@ -32,12 +50,34 @@
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- The Perl implementation of the `switch-to-configuration` program is removed. All switchable systems now use the Rust rewrite. Any prior usage of `system.switch.enableNg` must now be removed. If you have any outstanding issues with the new implementation, please open an issue on GitHub.
|
||||
|
||||
- The `services.polipo` module has been removed as `polipo` is unmaintained and archived upstream.
|
||||
|
||||
- The Pocket ID module ([`services.pocket-id`][#opt-services.pocket-id.enable]) and package (`pocket-id`) has been updated to 1.0.0. Some environment variables have been changed or removed, see the [migration guide](https://pocket-id.org/docs/setup/migrate-to-v1/).
|
||||
|
||||
- The `yeahwm` package and `services.xserver.windowManager.yeahwm` module were removed due to the package being broken and unmaintained upstream.
|
||||
|
||||
- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
|
||||
|
||||
- `services.dwm-status.extraConfig` was replaced by [RFC0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)-compliant [](#opt-services.dwm-status.settings), which is used to generate the config file. `services.dwm-status.order` is now moved to [](#opt-services.dwm-status.settings.order), as it's a part of the config file.
|
||||
|
||||
- `gitversion` was updated to 6.3.0, which includes a number of breaking changes, old configurations may need updating or they will cause the tool to fail to run.
|
||||
See the [6.0.0 release notes for GitVersion](https://github.com/GitTools/GitVersion/releases/tag/6.0.0) for details on the breaking changes, [the documentation on the configuration format](https://gitversion.net/docs/reference/configuration) for the new configuration specification, and [the documentation on version variables](https://gitversion.net/docs/reference/variables) for what is now supported.
|
||||
|
||||
- `renovate` was updated to v40. See the [upstream release notes](https://github.com/renovatebot/renovate/releases/tag/40.0.0) for breaking changes.
|
||||
|
||||
- The `boot.readOnlyNixStore` has been removed. Control over bind mount options on `/nix/store` is now offered by the `boot.nixStoreMountOpts` option.
|
||||
|
||||
- The Postfix module has been updated and likely requires configuration changes:
|
||||
- The `services.postfix.sslCert` and `sslKey` options were removed and you now need to configure
|
||||
- [services.postfix.config.smtpd_tls_chain_files](#opt-services.postfix.config.smtpd_tls_chain_files) for server certificates,
|
||||
- [services.postfix.config.smtp_tls_chain_files](#opt-services.postfix.config) for client certificates.
|
||||
|
||||
- `vmalert` now supports multiple instances with the option `services.vmalert.instances."".enable`
|
||||
|
||||
- The `wstunnel` module was converted to RFC42-style settings, you will need to update your NixOS config if you make use of this module.
|
||||
|
||||
## Other Notable Changes {#sec-release-25.11-notable-changes}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -48,3 +88,5 @@
|
||||
|
||||
- `amdgpu` kernel driver overdrive mode can now be enabled by setting [hardware.amdgpu.overdrive.enable](#opt-hardware.amdgpu.overdrive.enable) and customized through [hardware.amdgpu.overdrive.ppfeaturemask](#opt-hardware.amdgpu.overdrive.ppfeaturemask).
|
||||
This allows for fine-grained control over the GPU's performance and maybe required by overclocking softwares like Corectrl and Lact. These new options replace old options such as {option}`programs.corectrl.gpuOverclock.enable` and {option}`programs.tuxclocker.enableAMD`.
|
||||
|
||||
- [](#opt-services.gnome.gnome-keyring.enable) does not ship with an SSH agent anymore, as this is now handled by the `gcr_4` package instead of `gnome-keyring`. A new module has been added to support this, under [](#opt-services.gnome.gcr-ssh-agent.enable) (its default value has been set to [](#opt-services.gnome.gnome-keyring.enable) to ensure a smooth transition). See the [relevant upstream PR](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67) for more details.
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.networking.getaddrinfo;
|
||||
|
||||
formatTableEntries =
|
||||
tableName: table:
|
||||
if table == null then
|
||||
[ ]
|
||||
else
|
||||
lib.mapAttrsToList (cidr: val: "${tableName} ${cidr} ${toString val}") table;
|
||||
|
||||
gaiConfText = lib.concatStringsSep "\n" (
|
||||
[
|
||||
"# Generated by NixOS module networking.getaddrinfo"
|
||||
"# Do not edit manually!"
|
||||
"reload ${if cfg.reload then "yes" else "no"}"
|
||||
]
|
||||
++ formatTableEntries "label" cfg.label
|
||||
++ formatTableEntries "precedence" cfg.precedence
|
||||
++ formatTableEntries "scopev4" cfg.scopev4
|
||||
);
|
||||
in
|
||||
{
|
||||
options.networking.getaddrinfo = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = pkgs.stdenv.hostPlatform.libc == "glibc";
|
||||
defaultText = lib.literalExpression ''
|
||||
pkgs.stdenv.hostPlatform.libc == "glibc"
|
||||
'';
|
||||
description = ''
|
||||
Enables custom address sorting configuration for {manpage}`getaddrinfo(3)` according to RFC 3484.
|
||||
|
||||
This option generates a {file}`/etc/gai.conf` file to override the default address sorting tables,
|
||||
as described in {manpage}`gai.conf(5)`.
|
||||
|
||||
This setting is only applicable when using the GNU C Library (glibc).
|
||||
It has no effect with other libc implementations.
|
||||
'';
|
||||
};
|
||||
|
||||
reload = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Determines whether a process should detect changes to the configuration file since it was last read.
|
||||
|
||||
If enabled, the file is re-read automatically. This may cause issues in multithreaded applications
|
||||
and is generally discouraged.
|
||||
'';
|
||||
};
|
||||
|
||||
label = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
|
||||
default = null;
|
||||
description = ''
|
||||
Adds entries to the label table, as described in section 2.1 of RFC 3484.
|
||||
|
||||
If any label entries are provided, the glibc’s default label table is ignored.
|
||||
'';
|
||||
example = {
|
||||
"::/0" = 1;
|
||||
"2002::/16" = 2;
|
||||
"::/96" = 3;
|
||||
"::ffff:0:0/96" = 4;
|
||||
"fec0::/10" = 5;
|
||||
"fc00::/7" = 6;
|
||||
"2001:0::/32" = 7;
|
||||
};
|
||||
};
|
||||
|
||||
precedence = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
|
||||
default = null;
|
||||
description = ''
|
||||
Similar to {option}`networking.getaddrinfo.label`, but this option
|
||||
defines entries for the precedence table instead.
|
||||
|
||||
See sections 2.1 and 10.3 of RFC 3484 for details.
|
||||
|
||||
Providing any value will disable the glibc's default precedence table.
|
||||
'';
|
||||
example = {
|
||||
"::1/128" = 50;
|
||||
"::/0" = 40;
|
||||
"2002::/16" = 30;
|
||||
"::/96" = 20;
|
||||
"::ffff:0:0/96" = 10;
|
||||
};
|
||||
};
|
||||
|
||||
scopev4 = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.attrsOf lib.types.int);
|
||||
default = null;
|
||||
description = ''
|
||||
Adds custom rules to the IPv4 scope table.
|
||||
|
||||
By default, the scope IDs described in section 3.2 of RFC 6724 are used.
|
||||
|
||||
Modifying these values is rarely necessary.
|
||||
'';
|
||||
example = {
|
||||
"::ffff:169.254.0.0/112" = 2;
|
||||
"::ffff:127.0.0.0/104" = 2;
|
||||
"::ffff:0.0.0.0/96" = 14;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.etc."gai.conf".text = gaiConfText;
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ moraxyc ];
|
||||
}
|
||||
@@ -204,11 +204,22 @@ in
|
||||
|
||||
prime.offload.enableOffloadCmd = lib.mkEnableOption ''
|
||||
adding a `nvidia-offload` convenience script to {option}`environment.systemPackages`
|
||||
for offloading programs to an nvidia device. To work, should have also enabled
|
||||
for offloading programs to an nvidia device. To work, you must also enable
|
||||
{option}`hardware.nvidia.prime.offload.enable` or {option}`hardware.nvidia.prime.reverseSync.enable`.
|
||||
|
||||
Example usage `nvidia-offload sauerbraten_client`
|
||||
Example usage: `nvidia-offload sauerbraten_client`
|
||||
|
||||
This script can be renamed with {option}`hardware.nvidia.prime.offload.enableOffloadCmd`.
|
||||
'';
|
||||
prime.offload.offloadCmdMainProgram = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
Specifies the CLI name of the {option}`hardware.nvidia.prime.offload.enableOffloadCmd`
|
||||
convenience script for offloading programs to an nvidia device.
|
||||
'';
|
||||
default = "nvidia-offload";
|
||||
example = "prime-run";
|
||||
};
|
||||
|
||||
prime.reverseSync.enable = lib.mkEnableOption ''
|
||||
NVIDIA Optimus support using the NVIDIA proprietary driver via reverse
|
||||
@@ -558,7 +569,7 @@ in
|
||||
lib.optional cfg.nvidiaSettings nvidia_x11.settings
|
||||
++ lib.optional cfg.nvidiaPersistenced nvidia_x11.persistenced
|
||||
++ lib.optional offloadCfg.enableOffloadCmd (
|
||||
pkgs.writeShellScriptBin "nvidia-offload" ''
|
||||
pkgs.writeShellScriptBin cfg.prime.offload.offloadCmdMainProgram ''
|
||||
export __NV_PRIME_RENDER_OFFLOAD=1
|
||||
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
|
||||
@@ -24,6 +24,16 @@
|
||||
pkgs.maliit-keyboard
|
||||
];
|
||||
|
||||
environment.plasma6.excludePackages = [
|
||||
# Optional wallpapers that add 126 MiB to the graphical installer
|
||||
# closure. They will still need to be downloaded when installing a
|
||||
# Plasma system, though.
|
||||
pkgs.kdePackages.plasma-workspace-wallpapers
|
||||
];
|
||||
|
||||
# Avoid bundling an entire MariaDB installation on the ISO.
|
||||
programs.kde-pim.enable = false;
|
||||
|
||||
system.activationScripts.installerDesktop =
|
||||
let
|
||||
|
||||
|
||||
@@ -280,6 +280,7 @@ in
|
||||
};
|
||||
|
||||
options.system.rebuild.enableNg = lib.mkEnableOption "" // {
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to use ‘nixos-rebuild-ng’ in place of ‘nixos-rebuild’, the
|
||||
Python-based re-implementation of the original in Bash.
|
||||
@@ -330,6 +331,12 @@ in
|
||||
config = {
|
||||
documentation.man.man-db.skipPackages = [ nixos-version ];
|
||||
|
||||
warnings = lib.optional (!config.system.disableInstallerTools && !config.system.rebuild.enableNg) ''
|
||||
The Bash implementation of nixos-rebuild will be deprecated and removed in the 26.05 release of NixOS.
|
||||
Please migrate to the newer implementation by removing 'system.rebuild.enableNg = false' from your configuration.
|
||||
If you are unable to migrate due to any issues with the new implementation, please create an issue and tag the maintainers of 'nixos-rebuild-ng'.
|
||||
'';
|
||||
|
||||
# These may be used in auxiliary scripts (ie not part of toplevel), so they are defined unconditionally.
|
||||
system.build = {
|
||||
inherit nixos-generate-config nixos-install;
|
||||
|
||||
@@ -6,11 +6,17 @@
|
||||
# https://github.com/NixOS/rfcs/blob/master/rfcs/0052-dynamic-ids.md
|
||||
#
|
||||
# Use of static ids is deprecated within NixOS. Dynamic allocation is
|
||||
# required, barring special circumstacnes. Please check if the service
|
||||
# required, barring special circumstances. Please check if the service
|
||||
# is applicable for systemd's DynamicUser option and does not need a
|
||||
# uid/gid allocation at all. Systemd can also change ownership of
|
||||
# service directories using the RuntimeDirectory/StateDirectory
|
||||
# options.
|
||||
# uid/gid allocation at all. If DynamicUser is problematic consider
|
||||
# making a `isSystemUser=true` user with the uid and gid unset and let
|
||||
# NixOS pick dynamic persistent ids on activation. These IDs are persisted
|
||||
# locally on the host in the event that the user is removed and added back.
|
||||
# Systemd will also change ownership of service directories using the
|
||||
# RuntimeDirectory/StateDirectory options just in case a change happens.
|
||||
# It's only for special circumstances like for example the ids being hardcoded
|
||||
# in the application or the ids having to be consistent across multiple hosts
|
||||
# that configuring static ids in this file makes sense.
|
||||
|
||||
{ lib, ... }:
|
||||
|
||||
|
||||
@@ -69,10 +69,19 @@ in
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
environment.etc."man_db.conf".text =
|
||||
let
|
||||
# We unfortunately can’t use the customized `cfg.package` when
|
||||
# cross‐compiling. Instead we detect that situation and work
|
||||
# around it by using the vanilla one, like the OpenSSH module.
|
||||
buildPackage =
|
||||
if pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform then
|
||||
cfg.package
|
||||
else
|
||||
pkgs.buildPackages.man-db;
|
||||
|
||||
manualCache =
|
||||
pkgs.runCommand "man-cache"
|
||||
{
|
||||
nativeBuildInputs = [ cfg.package ];
|
||||
nativeBuildInputs = [ buildPackage ];
|
||||
}
|
||||
''
|
||||
echo "MANDB_MAP ${cfg.manualPages}/share/man $out" > man.conf
|
||||
|
||||
@@ -63,7 +63,7 @@ in
|
||||
# find mistaken definitions
|
||||
builtins.seq cfg.config builtins.seq cfg.overlays builtins.seq cfg.hostPlatform builtins.seq
|
||||
cfg.buildPlatform
|
||||
cfg.pkgs;
|
||||
cfg.pkgs.__splicedPackages;
|
||||
nixpkgs.config = cfg.pkgs.config;
|
||||
nixpkgs.overlays = cfg.pkgs.overlays;
|
||||
nixpkgs.hostPlatform = cfg.pkgs.stdenv.hostPlatform;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
./config/fonts/fontdir.nix
|
||||
./config/fonts/ghostscript.nix
|
||||
./config/fonts/packages.nix
|
||||
./config/getaddrinfo.nix
|
||||
./config/gtk/gtk-icon-cache.nix
|
||||
./config/i18n.nix
|
||||
./config/iproute2.nix
|
||||
@@ -354,7 +355,6 @@
|
||||
./programs/xonsh.nix
|
||||
./programs/xss-lock.nix
|
||||
./programs/xwayland.nix
|
||||
./programs/yabar.nix
|
||||
./programs/yazi.nix
|
||||
./programs/ydotool.nix
|
||||
./programs/yubikey-touch-detector.nix
|
||||
@@ -548,6 +548,7 @@
|
||||
./services/desktops/geoclue2.nix
|
||||
./services/desktops/gnome/at-spi2-core.nix
|
||||
./services/desktops/gnome/evolution-data-server.nix
|
||||
./services/desktops/gnome/gcr-ssh-agent.nix
|
||||
./services/desktops/gnome/glib-networking.nix
|
||||
./services/desktops/gnome/gnome-browser-connector.nix
|
||||
./services/desktops/gnome/gnome-initial-setup.nix
|
||||
@@ -738,6 +739,7 @@
|
||||
./services/mail/opendkim.nix
|
||||
./services/mail/opensmtpd.nix
|
||||
./services/mail/pfix-srsd.nix
|
||||
./services/mail/postfix-tlspol.nix
|
||||
./services/mail/postfix.nix
|
||||
./services/mail/postfixadmin.nix
|
||||
./services/mail/postgrey.nix
|
||||
@@ -752,6 +754,7 @@
|
||||
./services/mail/spamassassin.nix
|
||||
./services/mail/stalwart-mail.nix
|
||||
./services/mail/sympa.nix
|
||||
./services/mail/tlsrpt.nix
|
||||
./services/mail/zeyple.nix
|
||||
./services/matrix/appservice-discord.nix
|
||||
./services/matrix/appservice-irc.nix
|
||||
@@ -909,7 +912,6 @@
|
||||
./services/misc/servarr/whisparr.nix
|
||||
./services/misc/serviio.nix
|
||||
./services/misc/sickbeard.nix
|
||||
./services/misc/siproxd.nix
|
||||
./services/misc/snapper.nix
|
||||
./services/misc/soft-serve.nix
|
||||
./services/misc/sourcehut
|
||||
@@ -1542,6 +1544,7 @@
|
||||
./services/web-apps/eintopf.nix
|
||||
./services/web-apps/engelsystem.nix
|
||||
./services/web-apps/ethercalc.nix
|
||||
./services/web-apps/fediwall.nix
|
||||
./services/web-apps/fider.nix
|
||||
./services/web-apps/filebrowser.nix
|
||||
./services/web-apps/filesender.nix
|
||||
@@ -1662,6 +1665,7 @@
|
||||
./services/web-apps/stirling-pdf.nix
|
||||
./services/web-apps/strfry.nix
|
||||
./services/web-apps/suwayomi-server.nix
|
||||
./services/web-apps/szurubooru.nix
|
||||
./services/web-apps/trilium.nix
|
||||
./services/web-apps/tt-rss.nix
|
||||
./services/web-apps/vikunja.nix
|
||||
@@ -1784,6 +1788,7 @@
|
||||
./system/boot/luksroot.nix
|
||||
./system/boot/modprobe.nix
|
||||
./system/boot/networkd.nix
|
||||
./system/boot/nix-store-veritysetup.nix
|
||||
./system/boot/plymouth.nix
|
||||
./system/boot/resolved.nix
|
||||
./system/boot/shutdown.nix
|
||||
|
||||
@@ -27,6 +27,7 @@ in
|
||||
# The lessopen package pulls in Perl.
|
||||
less.lessopen = mkDefault null;
|
||||
command-not-found.enable = mkDefault false;
|
||||
fish.generateCompletions = mkDefault false;
|
||||
};
|
||||
|
||||
# This pulls in nixos-containers which depends on Perl.
|
||||
|
||||
@@ -33,10 +33,16 @@ in
|
||||
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether interactive shells should show which Nix package (if
|
||||
any) provides a missing command.
|
||||
|
||||
Requires nix-channels to be set and downloaded (sudo nix-channels --update.)
|
||||
|
||||
See also nix-index and nix-index-database as an alternative for flakes-based systems.
|
||||
|
||||
Additionally, having the env var NIX_AUTO_RUN set will automatically run the matching package, and with NIX_AUTO_RUN_INTERACTIVE it will confirm the package before running.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -54,47 +60,24 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.bash.interactiveShellInit = ''
|
||||
# This function is called whenever a command is not found.
|
||||
command_not_found_handle() {
|
||||
local p='${commandNotFound}/bin/command-not-found'
|
||||
if [ -x "$p" ] && [ -f '${cfg.dbPath}' ]; then
|
||||
# Run the helper program.
|
||||
"$p" "$@"
|
||||
# Retry the command if we just installed it.
|
||||
if [ $? = 126 ]; then
|
||||
"$@"
|
||||
else
|
||||
return 127
|
||||
fi
|
||||
else
|
||||
echo "$1: command not found" >&2
|
||||
return 127
|
||||
fi
|
||||
'${commandNotFound}/bin/command-not-found' "$@"
|
||||
}
|
||||
'';
|
||||
|
||||
programs.zsh.interactiveShellInit = ''
|
||||
# This function is called whenever a command is not found.
|
||||
command_not_found_handler() {
|
||||
local p='${commandNotFound}/bin/command-not-found'
|
||||
if [ -x "$p" ] && [ -f '${cfg.dbPath}' ]; then
|
||||
# Run the helper program.
|
||||
"$p" "$@"
|
||||
|
||||
# Retry the command if we just installed it.
|
||||
if [ $? = 126 ]; then
|
||||
"$@"
|
||||
else
|
||||
return 127
|
||||
fi
|
||||
else
|
||||
# Indicate than there was an error so ZSH falls back to its default handler
|
||||
echo "$1: command not found" >&2
|
||||
return 127
|
||||
fi
|
||||
'${commandNotFound}/bin/command-not-found' "$@"
|
||||
}
|
||||
'';
|
||||
|
||||
# NOTE: Fish by itself checks for nixos command-not-found, let's instead makes it explicit.
|
||||
programs.fish.interactiveShellInit = ''
|
||||
function fish_command_not_found
|
||||
"${commandNotFound}/bin/command-not-found" $argv
|
||||
end
|
||||
'';
|
||||
|
||||
environment.systemPackages = [ commandNotFound ];
|
||||
};
|
||||
|
||||
|
||||
@@ -10,6 +10,24 @@ my $program = $ARGV[0];
|
||||
|
||||
my $dbPath = "@dbPath@";
|
||||
|
||||
if (! -e $dbPath) {
|
||||
print STDERR "$program: command not found\n";
|
||||
print STDERR "\n";
|
||||
print STDERR "command-not-found: Missing package database\n";
|
||||
print STDERR "command-not-found is a tool for searching for missing packages.\n";
|
||||
print STDERR "No database was found, this likely means the database hasn't been generated yet.\n";
|
||||
print STDERR "This tool requires nix-channels to generate the database for the `nixos` channel.\n";
|
||||
print STDERR "\n";
|
||||
print STDERR "If you are using nix-channels you can run:\n";
|
||||
print STDERR " sudo nix-channels --update\n";
|
||||
print STDERR "\n";
|
||||
print STDERR "If you are using flakes, see nix-index and nix-index-database.\n";
|
||||
print STDERR "\n";
|
||||
print STDERR "If you would like to disable this message you can set:\n";
|
||||
print STDERR " programs.command-not-found.enable = false;\n";
|
||||
exit 127;
|
||||
}
|
||||
|
||||
my $dbh = DBI->connect("dbi:SQLite:dbname=$dbPath", "", "")
|
||||
or die "cannot open database `$dbPath'";
|
||||
$dbh->{RaiseError} = 0;
|
||||
|
||||
@@ -74,9 +74,7 @@ in
|
||||
defaultText = lib.literalExpression "pkgs.firefox";
|
||||
relatedPackages = [
|
||||
"firefox"
|
||||
"firefox-beta-bin"
|
||||
"firefox-bin"
|
||||
"firefox-devedition-bin"
|
||||
"firefox-esr"
|
||||
];
|
||||
};
|
||||
|
||||
@@ -72,6 +72,11 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
generateCompletions = lib.mkEnableOption "generating completion files from man pages" // {
|
||||
default = true;
|
||||
example = false;
|
||||
};
|
||||
|
||||
vendor.config.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
@@ -247,7 +252,7 @@ in
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
(lib.mkIf cfg.generateCompletions {
|
||||
etc."fish/generated_completions".source =
|
||||
let
|
||||
patchedGenerator = pkgs.stdenv.mkDerivation {
|
||||
@@ -297,7 +302,7 @@ in
|
||||
ignoreCollisions = true;
|
||||
paths = builtins.map generateCompletions config.environment.systemPackages;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
# include programs that bring their own completions
|
||||
{
|
||||
@@ -318,20 +323,23 @@ in
|
||||
}
|
||||
];
|
||||
|
||||
programs.fish.interactiveShellInit = ''
|
||||
# add completions generated by NixOS to $fish_complete_path
|
||||
begin
|
||||
# joins with null byte to accommodate all characters in paths, then respectively gets all paths before (exclusive) / after (inclusive) the first one including "generated_completions",
|
||||
# splits by null byte, and then removes all empty lines produced by using 'string'
|
||||
set -l prev (string join0 $fish_complete_path | string match --regex "^.*?(?=\x00[^\x00]*generated_completions.*)" | string split0 | string match -er ".")
|
||||
set -l post (string join0 $fish_complete_path | string match --regex "[^\x00]*generated_completions.*" | string split0 | string match -er ".")
|
||||
set fish_complete_path $prev "/etc/fish/generated_completions" $post
|
||||
end
|
||||
# prevent fish from generating completions on first run
|
||||
if not test -d $__fish_user_data_dir/generated_completions
|
||||
${pkgs.coreutils}/bin/mkdir $__fish_user_data_dir/generated_completions
|
||||
end
|
||||
'';
|
||||
programs.fish.interactiveShellInit =
|
||||
lib.optionalString cfg.generateCompletions ''
|
||||
# add completions generated by NixOS to $fish_complete_path
|
||||
begin
|
||||
# joins with null byte to accommodate all characters in paths, then respectively gets all paths before (exclusive) / after (inclusive) the first one including "generated_completions",
|
||||
# splits by null byte, and then removes all empty lines produced by using 'string'
|
||||
set -l prev (string join0 $fish_complete_path | string match --regex "^.*?(?=\x00[^\x00]*generated_completions.*)" | string split0 | string match -er ".")
|
||||
set -l post (string join0 $fish_complete_path | string match --regex "[^\x00]*generated_completions.*" | string split0 | string match -er ".")
|
||||
set fish_complete_path $prev "/etc/fish/generated_completions" $post
|
||||
end
|
||||
''
|
||||
+ ''
|
||||
# prevent fish from generating completions on first run
|
||||
if not test -d $__fish_user_data_dir/generated_completions
|
||||
${pkgs.coreutils}/bin/mkdir $__fish_user_data_dir/generated_completions
|
||||
end
|
||||
'';
|
||||
|
||||
};
|
||||
meta.maintainers = with lib.maintainers; [ sigmasquadron ];
|
||||
|
||||
@@ -44,7 +44,7 @@ let
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${getExe cfg.package} $out/bin/${cfg.package.meta.mainProgram} \
|
||||
${optionalString (cfg.aiIntegration == false) "--set _PR_AI_DISABLE true"}
|
||||
${optionalString (cfg.aiIntegration == false) "--set _PR_AI_DISABLE true"} \
|
||||
${optionalString (cfg.aiIntegration != false) ''
|
||||
--set _PR_AI_URL ${cfg.aiIntegration.url} \
|
||||
--set _PR_AI_MODEL ${cfg.aiIntegration.model} \
|
||||
|
||||
@@ -1,187 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.yabar;
|
||||
|
||||
mapExtra =
|
||||
v:
|
||||
lib.concatStringsSep "\n" (
|
||||
lib.mapAttrsToList (
|
||||
key: val:
|
||||
"${key} = ${if (builtins.isString val) then "\"${val}\"" else "${builtins.toString val}"};"
|
||||
) v
|
||||
);
|
||||
|
||||
listKeys = r: builtins.concatStringsSep "," (builtins.map (n: "\"${n}\"") (builtins.attrNames r));
|
||||
|
||||
configFile =
|
||||
let
|
||||
bars = lib.mapAttrsToList (name: cfg: ''
|
||||
${name}: {
|
||||
font: "${cfg.font}";
|
||||
position: "${cfg.position}";
|
||||
|
||||
${mapExtra cfg.extra}
|
||||
|
||||
block-list: [${listKeys cfg.indicators}]
|
||||
|
||||
${builtins.concatStringsSep "\n" (
|
||||
lib.mapAttrsToList (name: cfg: ''
|
||||
${name}: {
|
||||
exec: "${cfg.exec}";
|
||||
align: "${cfg.align}";
|
||||
${mapExtra cfg.extra}
|
||||
};
|
||||
'') cfg.indicators
|
||||
)}
|
||||
};
|
||||
'') cfg.bars;
|
||||
in
|
||||
pkgs.writeText "yabar.conf" ''
|
||||
bar-list = [${listKeys cfg.bars}];
|
||||
${builtins.concatStringsSep "\n" bars}
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.programs.yabar = {
|
||||
enable = lib.mkEnableOption "yabar, a status bar for X window managers";
|
||||
|
||||
package = lib.mkOption {
|
||||
default = pkgs.yabar-unstable;
|
||||
defaultText = lib.literalExpression "pkgs.yabar-unstable";
|
||||
example = lib.literalExpression "pkgs.yabar";
|
||||
type = lib.types.package;
|
||||
|
||||
# `yabar-stable` segfaults under certain conditions.
|
||||
# remember to update yabar.passthru.tests if nixos switches back to it!
|
||||
apply =
|
||||
x:
|
||||
if x == pkgs.yabar-unstable then
|
||||
x
|
||||
else
|
||||
lib.flip lib.warn x ''
|
||||
It's not recommended to use `yabar' with `programs.yabar', the (old) stable release
|
||||
tends to segfault under certain circumstances:
|
||||
|
||||
* https://github.com/geommer/yabar/issues/86
|
||||
* https://github.com/geommer/yabar/issues/68
|
||||
* https://github.com/geommer/yabar/issues/143
|
||||
|
||||
Most of them don't occur on master anymore, until a new release is published, it's recommended
|
||||
to use `yabar-unstable'.
|
||||
'';
|
||||
|
||||
description = ''
|
||||
The package which contains the `yabar` binary.
|
||||
|
||||
Nixpkgs offers both a stable (`yabar`) and unstable (`yabar-unstable`) version of Yabar.
|
||||
'';
|
||||
};
|
||||
|
||||
bars = lib.mkOption {
|
||||
default = { };
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
font = lib.mkOption {
|
||||
default = "sans bold 9";
|
||||
example = "Droid Sans, FontAwesome Bold 9";
|
||||
type = lib.types.str;
|
||||
|
||||
description = ''
|
||||
The font that will be used to draw the status bar.
|
||||
'';
|
||||
};
|
||||
|
||||
position = lib.mkOption {
|
||||
default = "top";
|
||||
example = "bottom";
|
||||
type = lib.types.enum [
|
||||
"top"
|
||||
"bottom"
|
||||
];
|
||||
|
||||
description = ''
|
||||
The position where the bar will be rendered.
|
||||
'';
|
||||
};
|
||||
|
||||
extra = lib.mkOption {
|
||||
default = { };
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
|
||||
description = ''
|
||||
An attribute set which contains further attributes of a bar.
|
||||
'';
|
||||
};
|
||||
|
||||
indicators = lib.mkOption {
|
||||
default = { };
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule {
|
||||
options.exec = lib.mkOption {
|
||||
example = "YABAR_DATE";
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The type of the indicator to be executed.
|
||||
'';
|
||||
};
|
||||
|
||||
options.align = lib.mkOption {
|
||||
default = "left";
|
||||
example = "right";
|
||||
type = lib.types.enum [
|
||||
"left"
|
||||
"center"
|
||||
"right"
|
||||
];
|
||||
|
||||
description = ''
|
||||
Whether to align the indicator at the left or right of the bar.
|
||||
'';
|
||||
};
|
||||
|
||||
options.extra = lib.mkOption {
|
||||
default = { };
|
||||
type = lib.types.attrsOf (lib.types.either lib.types.str lib.types.int);
|
||||
|
||||
description = ''
|
||||
An attribute set which contains further attributes of a indicator.
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
description = ''
|
||||
Indicators that should be rendered by yabar.
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
description = ''
|
||||
List of bars that should be rendered by yabar.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.user.services.yabar = {
|
||||
description = "yabar service";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
|
||||
script = ''
|
||||
${cfg.package}/bin/yabar -c ${configFile}
|
||||
'';
|
||||
|
||||
serviceConfig.Restart = "always";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -75,6 +75,9 @@ in
|
||||
"way-cooler is abandoned by its author: "
|
||||
+ "https://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html"
|
||||
))
|
||||
(mkRemovedOptionModule [ "programs" "yabar" ]
|
||||
"programs.yabar has been removed from NixOS. This is because the yabar repository has been archived upstream."
|
||||
)
|
||||
(mkRemovedOptionModule [ "security" "hideProcessInformation" ] ''
|
||||
The hidepid module was removed, since the underlying machinery
|
||||
is broken when using cgroups-v2.
|
||||
@@ -223,6 +226,11 @@ in
|
||||
"services"
|
||||
"shout"
|
||||
] "shout was removed because it was deprecated upstream in favor of thelounge.")
|
||||
(mkRemovedOptionModule [ "services" "siproxd" ] ''
|
||||
The siproxd package and the corresponding module have been removed due to
|
||||
the service being unmaintained. `services.asterisk.*` or `services.freeswitch.*`
|
||||
could be used instead.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "ssmtp" ] ''
|
||||
The ssmtp package and the corresponding module have been removed due to
|
||||
the program being unmaintained. The options `programs.msmtp.*` can be
|
||||
|
||||
@@ -175,6 +175,21 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion =
|
||||
!(
|
||||
cfg.enable
|
||||
&& config.services.postgresql.enable
|
||||
&& cfg.postgresqlDataDir == config.services.postgresql.dataDir
|
||||
);
|
||||
message = ''
|
||||
Both services.patroni and services.postgresql are enabled and
|
||||
services.patroni.postgresqlDataDir == services.postgresql.dataDir
|
||||
Disable one or the other, or configure them to use different directories.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
services.patroni.settings = {
|
||||
scope = cfg.scope;
|
||||
|
||||
@@ -199,7 +199,7 @@ in
|
||||
postStart = ''
|
||||
if test -e "${cfg.dbpath}/.first_startup"; then
|
||||
${lib.optionalString (cfg.initialScript != null) ''
|
||||
initialRootPassword=$(<${cfg.initialRootPasswordFile})
|
||||
${lib.optionalString (cfg.enableAuth) "initialRootPassword=$(<${cfg.initialRootPasswordFile})"}
|
||||
${mongoshExe} ${lib.optionalString (cfg.enableAuth) "-u root -p $initialRootPassword"} admin "${cfg.initialScript}"
|
||||
''}
|
||||
rm -f "${cfg.dbpath}/.first_startup"
|
||||
|
||||
@@ -21,7 +21,10 @@ To enable PostgreSQL, add the following to your {file}`configuration.nix`:
|
||||
services.postgresql.package = pkgs.postgresql_15;
|
||||
}
|
||||
```
|
||||
Note that you are required to specify the desired version of PostgreSQL (e.g. `pkgs.postgresql_15`). Since upgrading your PostgreSQL version requires a database dump and reload (see below), NixOS cannot provide a default value for [](#opt-services.postgresql.package) such as the most recent release of PostgreSQL.
|
||||
|
||||
The default PostgreSQL version is approximately the latest major version available on the NixOS release matching your [`system.stateVersion`](#opt-system.stateVersion).
|
||||
This is because PostgreSQL upgrades require a manual migration process (see below).
|
||||
Hence, upgrades must happen by setting [`services.postgresql.package`](#opt-services.postgresql.package) explicitly.
|
||||
|
||||
<!--
|
||||
After running {command}`nixos-rebuild`, you can verify
|
||||
|
||||
@@ -120,8 +120,24 @@ in
|
||||
|
||||
enableJIT = mkEnableOption "JIT support";
|
||||
|
||||
package = mkPackageOption pkgs "postgresql" {
|
||||
example = "postgresql_15";
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
example = literalExpression "pkgs.postgresql_15";
|
||||
defaultText = literalExpression ''
|
||||
if versionAtLeast config.system.stateVersion "25.11" then
|
||||
pkgs.postgresql_17
|
||||
else if versionAtLeast config.system.stateVersion "24.11" then
|
||||
pkgs.postgresql_16
|
||||
else if versionAtLeast config.system.stateVersion "23.11" then
|
||||
pkgs.postgresql_15
|
||||
else if versionAtLeast config.system.stateVersion "22.05" then
|
||||
pkgs.postgresql_14
|
||||
else
|
||||
pkgs.postgresql_13
|
||||
'';
|
||||
description = ''
|
||||
The package being used by postgresql.
|
||||
'';
|
||||
};
|
||||
|
||||
finalPackage = mkOption {
|
||||
@@ -656,7 +672,10 @@ in
|
||||
See also https://endoflife.date/postgresql
|
||||
'';
|
||||
base =
|
||||
if versionAtLeast config.system.stateVersion "24.11" then
|
||||
# XXX Don't forget to keep `defaultText` of `services.postgresql.package` up to date!
|
||||
if versionAtLeast config.system.stateVersion "25.11" then
|
||||
pkgs.postgresql_17
|
||||
else if versionAtLeast config.system.stateVersion "24.11" then
|
||||
pkgs.postgresql_16
|
||||
else if versionAtLeast config.system.stateVersion "23.11" then
|
||||
pkgs.postgresql_15
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
let
|
||||
cfg = config.services.desktopManager.cosmic;
|
||||
notExcluded = pkg: utils.disablePackageByName pkg config.environment.cosmic.excludePackages;
|
||||
excludedCorePkgs = lib.lists.intersectLists corePkgs config.environment.cosmic.excludePackages;
|
||||
# **ONLY ADD PACKAGES WITHOUT WHICH COSMIC CRASHES, NOTHING ELSE**
|
||||
corePkgs =
|
||||
@@ -140,13 +141,21 @@ in
|
||||
security.rtkit.enable = true;
|
||||
services.accounts-daemon.enable = true;
|
||||
services.displayManager.sessionPackages = [ pkgs.cosmic-session ];
|
||||
services.geoclue2.enable = true;
|
||||
services.geoclue2.enableDemoAgent = false;
|
||||
services.libinput.enable = true;
|
||||
services.upower.enable = true;
|
||||
# Required for screen locker
|
||||
security.pam.services.cosmic-greeter = { };
|
||||
|
||||
# geoclue2 stuff
|
||||
services.geoclue2.enable = true;
|
||||
# We _do_ use the demo agent in the `cosmic-settings-daemon` package,
|
||||
# but this option also creates a systemd service that conflicts with the
|
||||
# `cosmic-settings-daemon` package's geoclue2 agent. Therefore, disable it.
|
||||
services.geoclue2.enableDemoAgent = false;
|
||||
# As mentioned above, we do use the demo agent. And it needs to be
|
||||
# whitelisted, otherwise it doesn't run.
|
||||
services.geoclue2.whitelistedAgents = [ "geoclue-demo-agent" ]; # whitelist our own geoclue2 agent o
|
||||
|
||||
# Good to have defaults
|
||||
hardware.bluetooth.enable = lib.mkDefault true;
|
||||
networking.networkmanager.enable = lib.mkDefault true;
|
||||
@@ -154,6 +163,7 @@ in
|
||||
services.avahi.enable = lib.mkDefault true;
|
||||
services.gnome.gnome-keyring.enable = lib.mkDefault true;
|
||||
services.gvfs.enable = lib.mkDefault true;
|
||||
services.orca.enable = lib.mkDefault (notExcluded pkgs.orca);
|
||||
services.power-profiles-daemon.enable = lib.mkDefault (
|
||||
!config.hardware.system76.power-daemon.enable
|
||||
);
|
||||
|
||||
@@ -327,6 +327,7 @@ in
|
||||
services.gnome.at-spi2-core.enable = true;
|
||||
services.gnome.evolution-data-server.enable = true;
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
services.gnome.gcr-ssh-agent.enable = mkDefault true;
|
||||
services.gnome.gnome-online-accounts.enable = mkDefault true;
|
||||
services.gnome.localsearch.enable = mkDefault true;
|
||||
services.gnome.tinysparql.enable = mkDefault true;
|
||||
|
||||
@@ -62,9 +62,11 @@ in
|
||||
packages = (
|
||||
with pkgs;
|
||||
[
|
||||
ayatana-indicator-datetime # Clock
|
||||
ayatana-indicator-session # Controls for shutting down etc
|
||||
]
|
||||
++ (with lomiri; [
|
||||
lomiri-indicator-datetime # Clock
|
||||
])
|
||||
);
|
||||
};
|
||||
})
|
||||
|
||||
@@ -136,7 +136,6 @@ in
|
||||
breeze-icons
|
||||
breeze-gtk
|
||||
ocean-sound-theme
|
||||
plasma-workspace-wallpapers
|
||||
pkgs.hicolor-icon-theme # fallback icons
|
||||
qqc2-breeze-style
|
||||
qqc2-desktop-style
|
||||
@@ -156,8 +155,11 @@ in
|
||||
];
|
||||
optionalPackages =
|
||||
[
|
||||
aurorae
|
||||
plasma-browser-integration
|
||||
plasma-workspace-wallpapers
|
||||
konsole
|
||||
kwin-x11
|
||||
(lib.getBin qttools) # Expose qdbus in PATH
|
||||
ark
|
||||
elisa
|
||||
@@ -339,8 +341,35 @@ in
|
||||
capabilities = "cap_sys_nice+ep";
|
||||
source = "${lib.getBin pkgs.kdePackages.kwin}/bin/kwin_wayland";
|
||||
};
|
||||
|
||||
ksystemstats_intel_helper = {
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_perfmon+ep";
|
||||
source = "${pkgs.kdePackages.ksystemstats}/libexec/ksystemstats_intel_helper";
|
||||
};
|
||||
|
||||
ksgrd_network_helper = {
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_net_raw+ep";
|
||||
source = "${pkgs.kdePackages.libksysguard}/libexec/ksysguard/ksgrd_network_helper";
|
||||
};
|
||||
};
|
||||
|
||||
# Upstream recommends allowing set-timezone and set-ntp so that the KCM and
|
||||
# the automatic timezone logic work without user interruption.
|
||||
# However, on NixOS NTP cannot be overwritten via dbus, and timezone
|
||||
# can only be set if `time.timeZone` is set to `null`. So, we only allow
|
||||
# set-timezone, and we only allow it when the timezone can actually be set.
|
||||
security.polkit.extraConfig = lib.mkIf (config.time.timeZone != null) ''
|
||||
polkit.addRule(function(action, subject) {
|
||||
if (action.id == "org.freedesktop.timedate1.set-timezone" && subject.active) {
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
'';
|
||||
|
||||
programs.dconf.enable = true;
|
||||
|
||||
programs.firefox.nativeMessagingHosts.packages = [ kdePackages.plasma-browser-integration ];
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
let
|
||||
cfg = config.services.geoclue2;
|
||||
|
||||
defaultWhitelist = [
|
||||
"gnome-shell"
|
||||
"io.elementary.desktop.agent-geoclue2"
|
||||
];
|
||||
|
||||
appConfigModule = lib.types.submodule (
|
||||
{ name, ... }:
|
||||
{
|
||||
@@ -85,6 +80,16 @@ in
|
||||
that provides location information for accessing.
|
||||
'';
|
||||
};
|
||||
whitelistedAgents = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [
|
||||
"gnome-shell"
|
||||
"io.elementary.desktop.agent-geoclue2"
|
||||
];
|
||||
description = ''
|
||||
Desktop IDs (without the .desktop extension) of whitelisted agents.
|
||||
'';
|
||||
};
|
||||
|
||||
enableDemoAgent = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
@@ -321,7 +326,10 @@ in
|
||||
{
|
||||
agent = {
|
||||
whitelist = lib.concatStringsSep ";" (
|
||||
lib.optional cfg.enableDemoAgent "geoclue-demo-agent" ++ defaultWhitelist
|
||||
lib.lists.unique (
|
||||
cfg.whitelistedAgents
|
||||
++ lib.optionals config.services.geoclue2.enableDemoAgent [ "geoclue-demo-agent" ]
|
||||
)
|
||||
);
|
||||
};
|
||||
network-nmea = {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user