@@ -55,11 +55,6 @@ trim_trailing_whitespace = unset
56indent_size = unset
56indent_size = unset
58−# trailing whitespace is an actual syntax element of classic Markdown/
59−# CommonMark to enforce a line break
61−trim_trailing_whitespace = unset
64trim_trailing_whitespace = unset
59trim_trailing_whitespace = unset
@@ -41,8 +41,7 @@
41/pkgs/build-support/cc-wrapper @Ericson2314
41/pkgs/build-support/cc-wrapper @Ericson2314
42/pkgs/build-support/bintools-wrapper @Ericson2314
42/pkgs/build-support/bintools-wrapper @Ericson2314
43/pkgs/build-support/setup-hooks @Ericson2314
43/pkgs/build-support/setup-hooks @Ericson2314
44−/pkgs/build-support/setup-hooks/auto-patchelf.sh @layus
44+/pkgs/build-support/setup-hooks/auto-patchelf.sh @aszlig
45−/pkgs/build-support/setup-hooks/auto-patchelf.py @layus
47# Nixpkgs build-support
46# Nixpkgs build-support
48/pkgs/build-support/writers @lassulus @Profpatsch
47/pkgs/build-support/writers @lassulus @Profpatsch
@@ -243,8 +242,9 @@
244# Docker tools
243# Docker tools
245/pkgs/build-support/docker @roberth
244/pkgs/build-support/docker @roberth
246−/nixos/tests/docker-tools* @roberth
245+/nixos/tests/docker-tools-overlay.nix @roberth
246+/nixos/tests/docker-tools.nix @roberth
247−/doc/builders/images/dockertools.section.md @roberth
247+/doc/builders/images/dockertools.xml @roberth
249# Blockchains
249# Blockchains
250/pkgs/applications/blockchains @mmahut @RaghavSood
250/pkgs/applications/blockchains @mmahut @RaghavSood
@@ -285,7 +285,3 @@
285/nixos/modules/services/misc/matrix-conduit.nix @piegamesde
285/nixos/modules/services/misc/matrix-conduit.nix @piegamesde
286/nixos/tests/matrix-appservice-irc.nix @piegamesde
286/nixos/tests/matrix-appservice-irc.nix @piegamesde
287/nixos/tests/matrix-conduit.nix @piegamesde
287/nixos/tests/matrix-conduit.nix @piegamesde
290−/pkgs/build-support/dotnet @IvarWithoutBones
291−/pkgs/development/compilers/dotnet @IvarWithoutBones
.github/workflows/basic-eval.yml+1−1
@@ -16,7 +16,7 @@ jobs:
16 # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
16 # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
18 - uses: actions/checkout@v3
18 - uses: actions/checkout@v3
19− - uses: cachix/install-nix-action@v17
19+ - uses: cachix/install-nix-action@v16
20 - uses: cachix/cachix-action@v10
20 - uses: cachix/cachix-action@v10
22 # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
22 # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
.github/workflows/editorconfig.yml+1−1
@@ -28,7 +28,7 @@ jobs:
29 # pull_request_target checks out the base branch by default
29 # pull_request_target checks out the base branch by default
30 ref: refs/pull/${{ github.event.pull_request.number }}/merge
30 ref: refs/pull/${{ github.event.pull_request.number }}/merge
31− - uses: cachix/install-nix-action@v17
31+ - uses: cachix/install-nix-action@v16
33 # nixpkgs commit is pinned so that it doesn't break
33 # nixpkgs commit is pinned so that it doesn't break
34 # editorconfig-checker 2.4.0
34 # editorconfig-checker 2.4.0
.github/workflows/manual-nixos.yml+1−1
@@ -18,7 +18,7 @@ jobs:
19 # pull_request_target checks out the base branch by default
19 # pull_request_target checks out the base branch by default
20 ref: refs/pull/${{ github.event.pull_request.number }}/merge
20 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v16
23 # explicitly enable sandbox
23 # explicitly enable sandbox
24 extra_nix_config: sandbox = true
24 extra_nix_config: sandbox = true
.github/workflows/manual-nixpkgs.yml+1−1
@@ -18,7 +18,7 @@ jobs:
19 # pull_request_target checks out the base branch by default
19 # pull_request_target checks out the base branch by default
20 ref: refs/pull/${{ github.event.pull_request.number }}/merge
20 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v16
23 # explicitly enable sandbox
23 # explicitly enable sandbox
24 extra_nix_config: sandbox = true
24 extra_nix_config: sandbox = true
.github/workflows/nixos-manual.yml+1−1
@@ -19,7 +19,7 @@ jobs:
20 # pull_request_target checks out the base branch by default
20 # pull_request_target checks out the base branch by default
21 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21 ref: refs/pull/${{ github.event.pull_request.number }}/merge
22− - uses: cachix/install-nix-action@v17
22+ - uses: cachix/install-nix-action@v16
23 - name: Check DocBook files generated from Markdown are consistent
23 - name: Check DocBook files generated from Markdown are consistent
25 nixos/doc/manual/md-to-db.sh
25 nixos/doc/manual/md-to-db.sh
.github/workflows/update-terraform-providers.yml+6−7
@@ -11,7 +11,7 @@ jobs:
11 runs-on: ubuntu-latest
11 runs-on: ubuntu-latest
13 - uses: actions/checkout@v3
13 - uses: actions/checkout@v3
14− - uses: cachix/install-nix-action@v17
14+ - uses: cachix/install-nix-action@v16
15 - name: setup
15 - name: setup
@@ -25,15 +25,14 @@ jobs:
25 git commit -m "${{ steps.setup.outputs.title }}" providers.json
25 git commit -m "${{ steps.setup.outputs.title }}" providers.json
27 - name: create PR
27 - name: create PR
28− uses: peter-evans/create-pull-request@v4
28+ uses: peter-evans/create-pull-request@v3
31− Automatic update by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
31+ Automatic update of terraform providers.
33+ Created by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
33− Check that all providers build with:
35+ Check that all providers build with `@ofborg build terraform-full`
35− @ofborg build terraform-full
37 branch: terraform-providers-update
36 branch: terraform-providers-update
38 delete-branch: false
37 delete-branch: false
39 labels: "2.status: work-in-progress"
38 labels: "2.status: work-in-progress"
@@ -20,7 +20,7 @@ Below is a short excerpt of some points in there:
21 (pkg-name | nixos/<module>): (from -> to | init at version | refactor | etc)
21 (pkg-name | nixos/<module>): (from -> to | init at version | refactor | etc)
23− (Motivation for change. Link to release notes. Additional information.)
23+ (Motivation for change. Additional information.)
26 For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
26 For consistency, there should not be a period at the end of the commit message's summary line (the first line of the commit message).
@@ -29,7 +29,6 @@ Below is a short excerpt of some points in there:
30 * nginx: init at 2.0.1
30 * nginx: init at 2.0.1
31 * firefox: 54.0.1 -> 55.0
31 * firefox: 54.0.1 -> 55.0
32− https://www.mozilla.org/en-US/firefox/55.0/releasenotes/
33 * nixos/hydra: add bazBaz option
32 * nixos/hydra: add bazBaz option
35 Dual baz behavior is needed to do foo.
34 Dual baz behavior is needed to do foo.
@@ -53,46 +52,6 @@ In addition to writing properly formatted commit messages, it's important to inc
54For package version upgrades and such a one-line commit message is usually sufficient.
53For package version upgrades and such a one-line commit message is usually sufficient.
56−## Rebasing between branches (i.e. from master to staging)
58−From time to time, changes between branches must be rebased, for example, if the
59−number of new rebuilds they would cause is too large for the target branch. When
60−rebasing, care must be taken to include only the intended changes, otherwise
61−many CODEOWNERS will be inadvertently requested for review. To achieve this,
62−rebasing should not be performed directly on the target branch, but on the merge
63−base between the current and target branch.
65−In the following example, we see a rebase from `master` onto the merge base
66−between `master` and `staging`, so that a change can eventually be retargeted to
67−`staging`. The example uses `upstream` as the remote for `NixOS/nixpkgs.git`
68−while the `origin` remote is used for the remote you are pushing to.
72−# Find the common base between two branches
73−common=$(git merge-base upstream/master upstream/staging)
74−# Find the common base between your feature branch and master
75−commits=$(git merge-base $(git branch --show-current) upstream/master)
76−# Rebase all commits onto the common base
77−git rebase --onto=$common $commits
78−# Force push your changes
79−git push origin $(git branch --show-current) --force-with-lease
82−Then change the base branch in the GitHub PR using the *Edit* button in the upper
83−right corner, and switch from `master` to `staging`. After the PR has been
84−retargeted it might be necessary to do a final rebase onto the target branch, to
85−resolve any outstanding merge conflicts.
88−# Rebase onto target branch
89−git rebase upstream/staging
90−# Review and fixup possible conflicts
92−# Force push your changes
93−git push origin $(git branch --show-current) --force-with-lease
96## Backporting changes
55## Backporting changes
98Follow these steps to backport a change into a release branch in compliance with the [commit policy](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches).
57Follow these steps to backport a change into a release branch in compliance with the [commit policy](https://nixos.org/nixpkgs/manual/#submitting-changes-stable-release-branches).
doc/builders/fetchers.chapter.md+12−12
@@ -6,11 +6,11 @@ When using Nix, you will frequently need to download source code and other files
7Because fixed output derivations are _identified_ by their hash, a common mistake is to update a fetcher's URL or a version parameter, without updating the hash. **This will cause the old contents to be used.** So remember to always invalidate the hash argument.
7Because fixed output derivations are _identified_ by their hash, a common mistake is to update a fetcher's URL or a version parameter, without updating the hash. **This will cause the old contents to be used.** So remember to always invalidate the hash argument.
9−For those who develop and maintain fetchers, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#tester-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
9+For those who develop and maintain fetchers, a similar problem arises with changes to the implementation of a fetcher. These may cause a fixed output derivation to fail, but won't normally be caught by tests because the supposed output is already in the store or cache. For the purpose of testing, you can use a trick that is embodied by the [`invalidateFetcherByDrvHash`](#sec-pkgs-invalidateFetcherByDrvHash) function. It uses the derivation `name` to create a unique output path per fetcher implementation, defeating the caching precisely where it would be harmful.
11## `fetchurl` and `fetchzip` {#fetchurl}
11## `fetchurl` and `fetchzip` {#fetchurl}
13−Two basic fetchers are `fetchurl` and `fetchzip`. Both of these have two required arguments, a URL and a hash. The hash is typically `sha256`, although many more hash algorithms are supported. Nixpkgs contributors are currently recommended to use `sha256`. This hash will be used by Nix to identify your source. A typical usage of `fetchurl` is provided below.
13+Two basic fetchers are `fetchurl` and `fetchzip`. Both of these have two required arguments, a URL and a hash. The hash is typically `sha256`, although many more hash algorithms are supported. Nixpkgs contributors are currently recommended to use `sha256`. This hash will be used by Nix to identify your source. A typical usage of fetchurl is provided below.
16{ stdenv, fetchurl }:
16{ stdenv, fetchurl }:
@@ -24,9 +24,9 @@ stdenv.mkDerivation {
27−The main difference between `fetchurl` and `fetchzip` is in how they store the contents. `fetchurl` will store the unaltered contents of the URL within the Nix store. `fetchzip` on the other hand, will decompress the archive for you, making files and directories directly accessible in the future. `fetchzip` can only be used with archives. Despite the name, `fetchzip` is not limited to .zip files and can also be used with any tarball.
27+The main difference between `fetchurl` and `fetchzip` is in how they store the contents. `fetchurl` will store the unaltered contents of the URL within the Nix store. `fetchzip` on the other hand will decompress the archive for you, making files and directories directly accessible in the future. `fetchzip` can only be used with archives. Despite the name, `fetchzip` is not limited to .zip files and can also be used with any tarball.
29−`fetchpatch` works very similarly to `fetchurl` with the same arguments expected. It expects patch files as a source and performs normalization on them before computing the checksum. For example, it will remove comments or other unstable parts that are sometimes added by version control systems and can change over time.
29+`fetchpatch` works very similarly to `fetchurl` with the same arguments expected. It expects patch files as a source and performs normalization on them before computing the checksum. For example it will remove comments or other unstable parts that are sometimes added by version control systems and can change over time.
31Most other fetchers return a directory rather than a single file.
31Most other fetchers return a directory rather than a single file.
@@ -38,9 +38,9 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `sha25
39Used with Git. Expects `url` to a Git repo, `rev`, and `sha256`. `rev` in this case can be full the git commit id (SHA1 hash) or a tag name like `refs/tags/v1.0`.
39Used with Git. Expects `url` to a Git repo, `rev`, and `sha256`. `rev` in this case can be full the git commit id (SHA1 hash) or a tag name like `refs/tags/v1.0`.
41−Additionally, the following optional arguments can be given: `fetchSubmodules = true` makes `fetchgit` also fetch the submodules of a repository. If `deepClone` is set to true, the entire repository is cloned as opposing to just creating a shallow clone. `deepClone = true` also implies `leaveDotGit = true` which means that the `.git` directory of the clone won't be removed after checkout.
41+Additionally the following optional arguments can be given: `fetchSubmodules = true` makes `fetchgit` also fetch the submodules of a repository. If `deepClone` is set to true, the entire repository is cloned as opposing to just creating a shallow clone. `deepClone = true` also implies `leaveDotGit = true` which means that the `.git` directory of the clone won't be removed after checkout.
43−If only parts of the repository are needed, `sparseCheckout` can be used. This will prevent git from fetching unnecessary blobs from server, see [git sparse-checkout](https://git-scm.com/docs/git-sparse-checkout) and [git clone --filter](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---filterltfilter-specgt) for more information:
43+If only parts of the repository are needed, `sparseCheckout` can be used. This will prevent git from fetching unnecessary blobs from server, see [git sparse-checkout](https://git-scm.com/docs/git-sparse-checkout) and [git clone --filter](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---filterltfilter-specgt) for more infomation:
46{ stdenv, fetchgit }:
46{ stdenv, fetchgit }:
@@ -78,17 +78,17 @@ A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are m
79## `fetchFromGitHub` {#fetchfromgithub}
79## `fetchFromGitHub` {#fetchfromgithub}
81−`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available, but `sha256` is currently preferred.
81+`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
83`fetchFromGitHub` uses `fetchzip` to download the source archive generated by GitHub for the specified revision. If `leaveDotGit`, `deepClone` or `fetchSubmodules` are set to `true`, `fetchFromGitHub` will use `fetchgit` instead. Refer to its section for documentation of these options.
83`fetchFromGitHub` uses `fetchzip` to download the source archive generated by GitHub for the specified revision. If `leaveDotGit`, `deepClone` or `fetchSubmodules` are set to `true`, `fetchFromGitHub` will use `fetchgit` instead. Refer to its section for documentation of these options.
85## `fetchFromGitLab` {#fetchfromgitlab}
85## `fetchFromGitLab` {#fetchfromgitlab}
87−This is used with GitLab repositories. The arguments expected are very similar to `fetchFromGitHub` above.
87+This is used with GitLab repositories. The arguments expected are very similar to fetchFromGitHub above.
89## `fetchFromGitiles` {#fetchfromgitiles}
89## `fetchFromGitiles` {#fetchfromgitiles}
91−This is used with Gitiles repositories. The arguments expected are similar to `fetchgit`.
91+This is used with Gitiles repositories. The arguments expected are similar to fetchgit.
93## `fetchFromBitbucket` {#fetchfrombitbucket}
93## `fetchFromBitbucket` {#fetchfrombitbucket}
@@ -96,11 +96,11 @@ This is used with BitBucket repositories. The arguments expected are very simila
97## `fetchFromSavannah` {#fetchfromsavannah}
97## `fetchFromSavannah` {#fetchfromsavannah}
99−This is used with Savannah repositories. The arguments expected are very similar to `fetchFromGitHub` above.
99+This is used with Savannah repositories. The arguments expected are very similar to fetchFromGitHub above.
101## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
101## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
103−This is used with repo.or.cz repositories. The arguments expected are very similar to `fetchFromGitHub` above.
103+This is used with repo.or.cz repositories. The arguments expected are very similar to fetchFromGitHub above.
105## `fetchFromSourcehut` {#fetchfromsourcehut}
105## `fetchFromSourcehut` {#fetchfromsourcehut}
@@ -111,4 +111,4 @@ or "hg"), `domain` and `fetchSubmodules`.
112If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
112If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
113or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
113or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
114−respectively. Otherwise, the fetcher uses `fetchzip`.
114+respectively. Otherwise the fetcher uses `fetchzip`.
doc/builders/images/dockertools.section.md+8−8
@@ -58,7 +58,7 @@ After the new layer has been created, its closure (to which `contents`, `config`
59At the end of the process, only one new single layer will be produced and added to the resulting image.
59At the end of the process, only one new single layer will be produced and added to the resulting image.
61−The resulting repository will only list the single image `image/tag`. In the case of [the `buildImage` example](#ex-dockerTools-buildImage), it would be `redis/latest`.
61+The resulting repository will only list the single image `image/tag`. In the case of [the `buildImage` example](#ex-dockerTools-buildImage) it would be `redis/latest`.
63It is possible to inspect the arguments with which an image was built using its `buildArgs` attribute.
63It is possible to inspect the arguments with which an image was built using its `buildArgs` attribute.
@@ -87,7 +87,7 @@ pkgs.dockerTools.buildImage {
90−Now the Docker CLI will display a reasonable date and sort the images as expected:
90+and now the Docker CLI will display a reasonable date and sort the images as expected:
92```ShellSession
92```ShellSession
93$ docker images
93$ docker images
@@ -95,7 +95,7 @@ REPOSITORY TAG IMAGE ID CREATED SIZE
95hello latest de2bf4786de6 About a minute ago 25.2MB
95hello latest de2bf4786de6 About a minute ago 25.2MB
98−However, the produced images will not be binary reproducible.
98+however, the produced images will not be binary reproducible.
100## buildLayeredImage {#ssec-pkgs-dockerTools-buildLayeredImage}
100## buildLayeredImage {#ssec-pkgs-dockerTools-buildLayeredImage}
@@ -119,13 +119,13 @@ Create a Docker image with many of the store paths being on their own layer to i
120`contents` _optional_
120`contents` _optional_
122−: Top-level paths in the container. Either a single derivation, or a list of derivations.
122+: Top level paths in the container. Either a single derivation, or a list of derivations.
124 *Default:* `[]`
124 *Default:* `[]`
126`config` _optional_
126`config` _optional_
128−: Run-time configuration of the container. A full list of the options are available at in the [Docker Image Specification v1.2.0](https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions).
128+: Run-time configuration of the container. A full list of the options are available at in the [ Docker Image Specification v1.2.0 ](https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions).
130 *Default:* `{}`
130 *Default:* `{}`
@@ -195,9 +195,9 @@ pkgs.dockerTools.buildLayeredImage {
196Increasing the `maxLayers` increases the number of layers which have a chance to be shared between different images.
196Increasing the `maxLayers` increases the number of layers which have a chance to be shared between different images.
198−Modern Docker installations support up to 128 layers, but older versions support as few as 42.
198+Modern Docker installations support up to 128 layers, however older versions support as few as 42.
200−If the produced image will not be extended by other Docker builds, it is safe to set `maxLayers` to `128`. However, it will be impossible to extend the image further.
200+If the produced image will not be extended by other Docker builds, it is safe to set `maxLayers` to `128`. However it will be impossible to extend the image further.
202The first (`maxLayers-2`) most "popular" paths will have their own individual layers, then layer \#`maxLayers-1` will contain all the remaining "unpopular" paths, and finally layer \#`maxLayers` will contain the Image configuration.
202The first (`maxLayers-2`) most "popular" paths will have their own individual layers, then layer \#`maxLayers-1` will contain all the remaining "unpopular" paths, and finally layer \#`maxLayers` will contain the Image configuration.
@@ -213,7 +213,7 @@ The image produced by running the output script can be piped directly into `dock
213$(nix-build) | docker load
213$(nix-build) | docker load
216−Alternatively, the image be piped via `gzip` into `skopeo`, e.g., to copy it into a registry:
216+Alternatively, the image be piped via `gzip` into `skopeo`, e.g. to copy it into a registry:
218```ShellSession
218```ShellSession
219$(nix-build) | gzip --fast | skopeo copy docker-archive:/dev/stdin docker://some_docker_registry/myimage:tag
219$(nix-build) | gzip --fast | skopeo copy docker-archive:/dev/stdin docker://some_docker_registry/myimage:tag
doc/builders/images/ocitools.section.md+3−3
@@ -1,10 +1,10 @@
1# pkgs.ociTools {#sec-pkgs-ociTools}
1# pkgs.ociTools {#sec-pkgs-ociTools}
3−`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that, it makes no assumptions about the container runner you choose to use to run the created container.
3+`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that it makes no assumptions about the container runner you choose to use to run the created container.
5## buildContainer {#ssec-pkgs-ociTools-buildContainer}
5## buildContainer {#ssec-pkgs-ociTools-buildContainer}
7−This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory. The nix store of the container will contain all referenced dependencies of the given command.
7+This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory.The nix store of the container will contain all referenced dependencies of the given command.
9The parameters of `buildContainer` with an example value are described below:
9The parameters of `buildContainer` with an example value are described below:
@@ -30,7 +30,7 @@ buildContainer {
33−- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container.
33+- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container
35- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs)
35- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs)
doc/builders/images/snaptools.section.md+1−1
@@ -33,7 +33,7 @@ in snapTools.makeSnap {
34## Build a Graphical Snap {#ssec-pkgs-snapTools-build-a-snap-firefox}
34## Build a Graphical Snap {#ssec-pkgs-snapTools-build-a-snap-firefox}
36−Graphical programs require many more integrations with the host. This example uses Firefox as an example because it is one of the most complicated programs we could package.
36+Graphical programs require many more integrations with the host. This example uses Firefox as an example, because it is one of the most complicated programs we could package.
38``` {#ex-snapTools-buildSnap-firefox .nix}
38``` {#ex-snapTools-buildSnap-firefox .nix}
doc/builders/packages/citrix.section.md+5−5
@@ -4,13 +4,13 @@ The [Citrix Workspace App](https://www.citrix.com/products/workspace-app/) is a
5## Basic usage {#sec-citrix-base}
5## Basic usage {#sec-citrix-base}
7−The tarball archive needs to be downloaded manually, as the license agreements of the vendor for [Citrix Workspace](https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html) needs to be accepted first. Then run `nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz`. With the archive available in the store, the package can be built and installed with Nix.
7+The tarball archive needs to be downloaded manually as the license agreements of the vendor for [Citrix Workspace](https://www.citrix.de/downloads/workspace-app/linux/workspace-app-for-linux-latest.html) needs to be accepted first. Then run `nix-prefetch-url file://$PWD/linuxx64-$version.tar.gz`. With the archive available in the store the package can be built and installed with Nix.
9−## Citrix Self-service {#sec-citrix-selfservice}
9+## Citrix Selfservice {#sec-citrix-selfservice}
11−The [self-service](https://support.citrix.com/article/CTX200337) is an application managing Citrix desktops and applications. Please note that this feature only works with at least citrix_workspace_20_06_0 and later versions.
11+The [selfservice](https://support.citrix.com/article/CTX200337) is an application managing Citrix desktops and applications. Please note that this feature only works with at least citrix_workspace_20_06_0 and later versions.
13−In order to set this up, you first have to [download the `.cr` file from the Netscaler Gateway](https://its.uiowa.edu/support/article/102186). After that, you can configure the `selfservice` like this:
13+In order to set this up, you first have to [download the `.cr` file from the Netscaler Gateway](https://its.uiowa.edu/support/article/102186). After that you can configure the `selfservice` like this:
15```ShellSession
15```ShellSession
16$ storebrowse -C ~/Downloads/receiverconfig.cr
16$ storebrowse -C ~/Downloads/receiverconfig.cr
@@ -19,7 +19,7 @@ $ selfservice
20## Custom certificates {#sec-citrix-custom-certs}
20## Custom certificates {#sec-citrix-custom-certs}
22−The `Citrix Workspace App` in `nixpkgs` trusts several certificates [from the Mozilla database](https://curl.haxx.se/docs/caextract.html) by default. However, several companies using Citrix might require their own corporate certificate. On distros with imperative packaging, these certs can be stored easily in [`$ICAROOT`](https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/), however this directory is a store path in `nixpkgs`. In order to work around this issue, the package provides a simple mechanism to add custom certificates without rebuilding the entire package using `symlinkJoin`:
22+The `Citrix Workspace App` in `nixpkgs` trusts several certificates [from the Mozilla database](https://curl.haxx.se/docs/caextract.html) by default. However several companies using Citrix might require their own corporate certificate. On distros with imperative packaging these certs can be stored easily in [`$ICAROOT`](https://developer-docs.citrix.com/projects/receiver-for-linux-command-reference/en/13.7/), however this directory is a store path in `nixpkgs`. In order to work around this issue the package provides a simple mechanism to add custom certificates without rebuilding the entire package using `symlinkJoin`:
25with import <nixpkgs> { config.allowUnfree = true; };
25with import <nixpkgs> { config.allowUnfree = true; };
doc/builders/packages/eclipse.section.md+5−5
@@ -8,9 +8,9 @@ Nixpkgs provides a number of packages that will install Eclipse in its various f
8$ nix-env -f '<nixpkgs>' -qaP -A eclipses --description
8$ nix-env -f '<nixpkgs>' -qaP -A eclipses --description
11−Once an Eclipse variant is installed, it can be run using the `eclipse` command, as expected. From within Eclipse, it is then possible to install plugins in the usual manner by either manually specifying an Eclipse update site or by installing the Marketplace Client plugin and using it to discover and install other plugins. This installation method provides an Eclipse installation that closely resemble a manually installed Eclipse.
11+Once an Eclipse variant is installed it can be run using the `eclipse` command, as expected. From within Eclipse it is then possible to install plugins in the usual manner by either manually specifying an Eclipse update site or by installing the Marketplace Client plugin and using it to discover and install other plugins. This installation method provides an Eclipse installation that closely resemble a manually installed Eclipse.
13−If you prefer to install plugins in a more declarative manner, then Nixpkgs also offer a number of Eclipse plugins that can be installed in an _Eclipse environment_. This type of environment is created using the function `eclipseWithPlugins` found inside the `nixpkgs.eclipses` attribute set. This function takes as argument `{ eclipse, plugins ? [], jvmArgs ? [] }` where `eclipse` is a one of the Eclipse packages described above, `plugins` is a list of plugin derivations, and `jvmArgs` is a list of arguments given to the JVM running the Eclipse. For example, say you wish to install the latest Eclipse Platform with the popular Eclipse Color Theme plugin and also allow Eclipse to use more RAM. You could then add:
13+If you prefer to install plugins in a more declarative manner then Nixpkgs also offer a number of Eclipse plugins that can be installed in an _Eclipse environment_. This type of environment is created using the function `eclipseWithPlugins` found inside the `nixpkgs.eclipses` attribute set. This function takes as argument `{ eclipse, plugins ? [], jvmArgs ? [] }` where `eclipse` is a one of the Eclipse packages described above, `plugins` is a list of plugin derivations, and `jvmArgs` is a list of arguments given to the JVM running the Eclipse. For example, say you wish to install the latest Eclipse Platform with the popular Eclipse Color Theme plugin and also allow Eclipse to use more RAM. You could then add
16packageOverrides = pkgs: {
16packageOverrides = pkgs: {
@@ -22,15 +22,15 @@ packageOverrides = pkgs: {
25−to your Nixpkgs configuration (`~/.config/nixpkgs/config.nix`) and install it by running `nix-env -f '<nixpkgs>' -iA myEclipse` and afterward run Eclipse as usual. It is possible to find out which plugins are available for installation using `eclipseWithPlugins` by running:
25+to your Nixpkgs configuration (`~/.config/nixpkgs/config.nix`) and install it by running `nix-env -f '<nixpkgs>' -iA myEclipse` and afterward run Eclipse as usual. It is possible to find out which plugins are available for installation using `eclipseWithPlugins` by running
27```ShellSession
27```ShellSession
28$ nix-env -f '<nixpkgs>' -qaP -A eclipses.plugins --description
28$ nix-env -f '<nixpkgs>' -qaP -A eclipses.plugins --description
31−If there is a need to install plugins that are not available in Nixpkgs then it may be possible to define these plugins outside Nixpkgs using the `buildEclipseUpdateSite` and `buildEclipsePlugin` functions found in the `nixpkgs.eclipses.plugins` attribute set. Use the `buildEclipseUpdateSite` function to install a plugin distributed as an Eclipse update site. This function takes `{ name, src }` as argument, where `src` indicates the Eclipse update site archive. All Eclipse features and plugins within the downloaded update site will be installed. When an update site archive is not available, then the `buildEclipsePlugin` function can be used to install a plugin that consists of a pair of feature and plugin JARs. This function takes an argument `{ name, srcFeature, srcPlugin }` where `srcFeature` and `srcPlugin` are the feature and plugin JARs, respectively.
31+If there is a need to install plugins that are not available in Nixpkgs then it may be possible to define these plugins outside Nixpkgs using the `buildEclipseUpdateSite` and `buildEclipsePlugin` functions found in the `nixpkgs.eclipses.plugins` attribute set. Use the `buildEclipseUpdateSite` function to install a plugin distributed as an Eclipse update site. This function takes `{ name, src }` as argument where `src` indicates the Eclipse update site archive. All Eclipse features and plugins within the downloaded update site will be installed. When an update site archive is not available then the `buildEclipsePlugin` function can be used to install a plugin that consists of a pair of feature and plugin JARs. This function takes an argument `{ name, srcFeature, srcPlugin }` where `srcFeature` and `srcPlugin` are the feature and plugin JARs, respectively.
33−Expanding the previous example with two plugins using the above functions, we have:
33+Expanding the previous example with two plugins using the above functions we have
36packageOverrides = pkgs: {
36packageOverrides = pkgs: {
doc/builders/packages/elm.section.md+1−1
@@ -1,6 +1,6 @@
1# Elm {#sec-elm}
1# Elm {#sec-elm}
3−To start a development environment, run:
3+To start a development environment do
5```ShellSession
5```ShellSession
6nix-shell -p elmPackages.elm elmPackages.elm-format
6nix-shell -p elmPackages.elm elmPackages.elm-format
doc/builders/packages/emacs.section.md+3−3
@@ -20,7 +20,7 @@ The Emacs package comes with some extra helpers to make it easier to configure.
23−You can install it like any other packages via `nix-env -iA myEmacs`. However, this will only install those packages. It will not `configure` them for us. To do this, we need to provide a configuration file. Luckily, it is possible to do this from within Nix! By modifying the above example, we can make Emacs load a custom config file. The key is to create a package that provides a `default.el` file in `/share/emacs/site-start/`. Emacs knows to load this file automatically when it starts.
23+You can install it like any other packages via `nix-env -iA myEmacs`. However, this will only install those packages. It will not `configure` them for us. To do this, we need to provide a configuration file. Luckily, it is possible to do this from within Nix! By modifying the above example, we can make Emacs load a custom config file. The key is to create a package that provide a `default.el` file in `/share/emacs/site-start/`. Emacs knows to load this file automatically when it starts.
@@ -101,9 +101,9 @@ You can install it like any other packages via `nix-env -iA myEmacs`. However, t
104−This provides a fairly full Emacs start file. It will load in addition to the user's personal config. You can always disable it by passing `-q` to the Emacs command.
104+This provides a fairly full Emacs start file. It will load in addition to the user's presonal config. You can always disable it by passing `-q` to the Emacs command.
106−Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control these priorities when some package is installed as a dependency. You can override it on a per-package-basis, providing all the required dependencies manually, but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package, you can use `overrideScope'`.
106+Sometimes `emacs.pkgs.withPackages` is not enough, as this package set has some priorities imposed on packages (with the lowest priority assigned to Melpa Unstable, and the highest for packages manually defined in `pkgs/top-level/emacs-packages.nix`). But you can't control this priorities when some package is installed as a dependency. You can override it on per-package-basis, providing all the required dependencies manually - but it's tedious and there is always a possibility that an unwanted dependency will sneak in through some other package. To completely override such a package you can use `overrideScope'`.
109overrides = self: super: rec {
109overrides = self: super: rec {
doc/builders/packages/etc-files.section.md+4−4
@@ -1,10 +1,10 @@
1# /etc files {#etc}
1# /etc files {#etc}
3−Certain calls in glibc require access to runtime files found in `/etc` such as `/etc/protocols` or `/etc/services` -- [getprotobyname](https://linux.die.net/man/3/getprotobyname) is one such function.
3+Certain calls in glibc require access to runtime files found in /etc such as `/etc/protocols` or `/etc/services` -- [getprotobyname](https://linux.die.net/man/3/getprotobyname) is one such function.
5−On non-NixOS distributions these files are typically provided by packages (i.e., [netbase](https://packages.debian.org/sid/netbase)) if not already pre-installed in your distribution. This can cause non-reproducibility for code if they rely on these files being present.
5+On non-NixOS distributions these files are typically provided by packages (i.e. [netbase](https://packages.debian.org/sid/netbase)) if not already pre-installed in your distribution. This can cause non-reproducibility for code if they rely on these files being present.
7−If [iana-etc](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.iana-etc.x86_64-linux) is part of your `buildInputs`, then it will set the environment variables `NIX_ETC_PROTOCOLS` and `NIX_ETC_SERVICES` to the corresponding files in the package through a setup hook.
7+If [iana-etc](https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.iana-etc.x86_64-linux) is part of your _buildInputs_ then it will set the environment varaibles `NIX_ETC_PROTOCOLS` and `NIX_ETC_SERVICES` to the corresponding files in the package through a _setup-hook_.
@@ -15,4 +15,4 @@ NIX_ETC_SERVICES=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/e
15NIX_ETC_PROTOCOLS=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/protocols
15NIX_ETC_PROTOCOLS=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/protocols
18−Nixpkg's version of [glibc](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/glibc/default.nix) has been patched to check for the existence of these environment variables. If the environment variables are *not* set, then it will attempt to find the files at the default location within `/etc`.
18+Nixpkg's version of [glibc](https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/glibc/default.nix) has been patched to check for the existence of these environment variables. If the environment variable are *not set*, then it will attempt to find the files at the default location within _/etc_.
doc/builders/packages/firefox.section.md+8−7
@@ -2,7 +2,7 @@
3## Build wrapped Firefox with extensions and policies {#build-wrapped-firefox-with-extensions-and-policies}
3## Build wrapped Firefox with extensions and policies {#build-wrapped-firefox-with-extensions-and-policies}
5−The `wrapFirefox` function allows to pass policies, preferences and extensions that are available to Firefox. With the help of `fetchFirefoxAddon` this allows to build a Firefox version that already comes with add-ons pre-installed:
5+The `wrapFirefox` function allows to pass policies, preferences and extension that are available to Firefox. With the help of `fetchFirefoxAddon` this allows build a Firefox version that already comes with addons pre-installed:
@@ -40,12 +40,13 @@ The `wrapFirefox` function allows to pass policies, preferences and extensions t
43−If `nixExtensions != null`, then all manually installed add-ons will be uninstalled from your browser profile.
43+If `nixExtensions != null` then all manually installed addons will be uninstalled from your browser profile.
44−To view available enterprise policies, visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
44+To view available enterprise policies visit [enterprise policies](https://github.com/mozilla/policy-templates#enterprisepoliciesenabled)
45−or type into the Firefox URL bar: `about:policies#documentation`.
45+or type into the Firefox url bar: `about:policies#documentation`.
46−Nix installed add-ons do not have a valid signature, which is why signature verification is disabled. This does not compromise security because downloaded add-ons are checksummed and manual add-ons can't be installed. Also, make sure that the `name` field of `fetchFirefoxAddon` is unique. If you remove an add-on from the `nixExtensions` array, rebuild and start Firefox: the removed add-on will be completely removed with all of its settings.
46+Nix installed addons do not have a valid signature, which is why signature verification is disabled. This does not compromise security because downloaded addons are checksumed and manual addons can't be installed. Also make sure that the `name` field of fetchFirefoxAddon is unique. If you remove an addon from the nixExtensions array, rebuild and start Firefox the removed addon will be completly removed with all of its settings.
48## Troubleshooting {#sec-firefox-troubleshooting}
48## Troubleshooting {#sec-firefox-troubleshooting}
49−If add-ons are marked as broken or the signature is invalid, make sure you have Firefox ESR installed. Normal Firefox does not provide the ability anymore to disable signature verification for add-ons thus nix add-ons get disabled by the normal Firefox binary.
49+If addons are marked as broken or the signature is invalid, make sure you have Firefox ESR installed. Normal Firefox does not provide the ability anymore to disable signature verification for addons thus nix addons get disabled by the normal Firefox binary.
51+If addons do not appear installed although they have been defined in your nix configuration file reset the local addon state of your Firefox profile by clicking `help -> restart with addons disabled -> restart -> refresh firefox`. This can happen if you switch from manual addon mode to nix addon mode and then back to manual mode and then again to nix addon mode.
51−If add-ons do not appear installed despite being defined in your nix configuration file, reset the local add-on state of your Firefox profile by clicking `Help -> More Troubleshooting Information -> Refresh Firefox`. This can happen if you switch from manual add-on mode to nix add-on mode and then back to manual mode and then again to nix add-on mode.
doc/builders/packages/fish.section.md+1−1
@@ -36,7 +36,7 @@ using `buildFishPlugin` and running unit tests with the `fishtape` test runner.
36## Fish wrapper {#sec-fish-wrapper}
36## Fish wrapper {#sec-fish-wrapper}
38The `wrapFish` package is a wrapper around Fish which can be used to create
38The `wrapFish` package is a wrapper around Fish which can be used to create
39−Fish shells initialized with some plugins as well as completions, configuration
39+Fish shells initialised with some plugins as well as completions, configuration
40snippets and functions sourced from the given paths. This provides a convenient
40snippets and functions sourced from the given paths. This provides a convenient
41way to test Fish plugins and scripts without having to alter the environment.
41way to test Fish plugins and scripts without having to alter the environment.
doc/builders/packages/fuse.section.md+2−2
@@ -24,10 +24,10 @@ packages on macOS:
24 checking for fuse.h... no
24 checking for fuse.h... no
25 configure: error: No fuse.h found.
25 configure: error: No fuse.h found.
27−This happens on autoconf based projects that use `AC_CHECK_HEADERS` or
27+This happens on autoconf based projects that uses `AC_CHECK_HEADERS` or
28`AC_CHECK_LIBS` to detect libfuse, and will occur even when the `fuse` package
28`AC_CHECK_LIBS` to detect libfuse, and will occur even when the `fuse` package
29is included in `buildInputs`. It happens because libfuse headers throw an error
29is included in `buildInputs`. It happens because libfuse headers throw an error
30−on macOS if the `FUSE_USE_VERSION` macro is undefined. Many projects do define
30+on macOS if the `FUSE_USE_VERSION` macro is undefined. Many proejcts do define
31`FUSE_USE_VERSION`, but only inside C source files. This results in the above
31`FUSE_USE_VERSION`, but only inside C source files. This results in the above
32error at configure time because the configure script would attempt to compile
32error at configure time because the configure script would attempt to compile
33sample FUSE programs without defining `FUSE_USE_VERSION`.
33sample FUSE programs without defining `FUSE_USE_VERSION`.
doc/builders/packages/ibus.section.md+3−3
@@ -6,7 +6,7 @@ This package is an ibus-based completion method to speed up typing.
7IBus needs to be configured accordingly to activate `typing-booster`. The configuration depends on the desktop manager in use. For detailed instructions, please refer to the [upstream docs](https://mike-fabian.github.io/ibus-typing-booster/documentation.html).
7IBus needs to be configured accordingly to activate `typing-booster`. The configuration depends on the desktop manager in use. For detailed instructions, please refer to the [upstream docs](https://mike-fabian.github.io/ibus-typing-booster/documentation.html).
9−On NixOS, you need to explicitly enable `ibus` with given engines before customizing your desktop to use `typing-booster`. This can be achieved using the `ibus` module:
9+On NixOS you need to explicitly enable `ibus` with given engines before customizing your desktop to use `typing-booster`. This can be achieved using the `ibus` module:
12{ pkgs, ... }: {
12{ pkgs, ... }: {
@@ -19,7 +19,7 @@ On NixOS, you need to explicitly enable `ibus` with given engines before customi
20## Using custom hunspell dictionaries {#sec-ibus-typing-booster-customize-hunspell}
20## Using custom hunspell dictionaries {#sec-ibus-typing-booster-customize-hunspell}
22−The IBus engine is based on `hunspell` to support completion in many languages. By default, the dictionaries `de-de`, `en-us`, `fr-moderne` `es-es`, `it-it`, `sv-se` and `sv-fi` are in use. To add another dictionary, the package can be overridden like this:
22+The IBus engine is based on `hunspell` to support completion in many languages. By default the dictionaries `de-de`, `en-us`, `fr-moderne` `es-es`, `it-it`, `sv-se` and `sv-fi` are in use. To add another dictionary, the package can be overridden like this:
25ibus-engines.typing-booster.override { langs = [ "de-at" "en-gb" ]; }
25ibus-engines.typing-booster.override { langs = [ "de-at" "en-gb" ]; }
@@ -31,7 +31,7 @@ _Note: each language passed to `langs` must be an attribute name in `pkgs.hunspe
32The `ibus-engines.typing-booster` package contains a program named `emoji-picker`. To display all emojis correctly, a special font such as `noto-fonts-emoji` is needed:
32The `ibus-engines.typing-booster` package contains a program named `emoji-picker`. To display all emojis correctly, a special font such as `noto-fonts-emoji` is needed:
34−On NixOS, it can be installed using the following expression:
34+On NixOS it can be installed using the following expression:
37{ pkgs, ... }: { fonts.fonts = with pkgs; [ noto-fonts-emoji ]; }
37{ pkgs, ... }: { fonts.fonts = with pkgs; [ noto-fonts-emoji ]; }
doc/builders/packages/linux.section.md+7−7
@@ -4,7 +4,7 @@ The Nix expressions to build the Linux kernel are in [`pkgs/os-specific/linux/ke
5The function that builds the kernel has an argument `kernelPatches` which should be a list of `{name, patch, extraConfig}` attribute sets, where `name` is the name of the patch (which is included in the kernel’s `meta.description` attribute), `patch` is the patch itself (possibly compressed), and `extraConfig` (optional) is a string specifying extra options to be concatenated to the kernel configuration file (`.config`).
5The function that builds the kernel has an argument `kernelPatches` which should be a list of `{name, patch, extraConfig}` attribute sets, where `name` is the name of the patch (which is included in the kernel’s `meta.description` attribute), `patch` is the patch itself (possibly compressed), and `extraConfig` (optional) is a string specifying extra options to be concatenated to the kernel configuration file (`.config`).
7−The kernel derivation exports an attribute `features` specifying whether optional functionality is or isn’t enabled. This is used in NixOS to implement kernel-specific behaviour. For instance, if the kernel has the `iwlwifi` feature (i.e., has built-in support for Intel wireless chipsets), then NixOS doesn’t have to build the external `iwlwifi` package:
7+The kernel derivation exports an attribute `features` specifying whether optional functionality is or isn’t enabled. This is used in NixOS to implement kernel-specific behaviour. For instance, if the kernel has the `iwlwifi` feature (i.e. has built-in support for Intel wireless chipsets), then NixOS doesn’t have to build the external `iwlwifi` package:
10modulesTree = [kernel]
10modulesTree = [kernel]
@@ -14,19 +14,19 @@ modulesTree = [kernel]
15How to add a new (major) version of the Linux kernel to Nixpkgs:
15How to add a new (major) version of the Linux kernel to Nixpkgs:
17−1. Copy the old Nix expression (e.g., `linux-2.6.21.nix`) to the new one (e.g., `linux-2.6.22.nix`) and update it.
17+1. Copy the old Nix expression (e.g. `linux-2.6.21.nix`) to the new one (e.g. `linux-2.6.22.nix`) and update it.
192. Add the new kernel to the `kernels` attribute set in `linux-kernels.nix` (e.g., create an attribute `kernel_2_6_22`).
192. Add the new kernel to the `kernels` attribute set in `linux-kernels.nix` (e.g., create an attribute `kernel_2_6_22`).
213. Now we’re going to update the kernel configuration. First unpack the kernel. Then for each supported platform (`i686`, `x86_64`, `uml`) do the following:
213. Now we’re going to update the kernel configuration. First unpack the kernel. Then for each supported platform (`i686`, `x86_64`, `uml`) do the following:
23− 1. Make a copy from the old config (e.g., `config-2.6.21-i686-smp`) to the new one (e.g., `config-2.6.22-i686-smp`).
23+ 1. Make an copy from the old config (e.g. `config-2.6.21-i686-smp`) to the new one (e.g. `config-2.6.22-i686-smp`).
25− 2. Copy the config file for this platform (e.g., `config-2.6.22-i686-smp`) to `.config` in the kernel source tree.
25+ 2. Copy the config file for this platform (e.g. `config-2.6.22-i686-smp`) to `.config` in the kernel source tree.
27− 3. Run `make oldconfig ARCH={i386,x86_64,um}` and answer all questions. (For the uml configuration, also add `SHELL=bash`.) Make sure to keep the configuration consistent between platforms (i.e., don’t enable some feature on `i686` and disable it on `x86_64`).
27+ 3. Run `make oldconfig ARCH={i386,x86_64,um}` and answer all questions. (For the uml configuration, also add `SHELL=bash`.) Make sure to keep the configuration consistent between platforms (i.e. don’t enable some feature on `i686` and disable it on `x86_64`).
29− 4. If needed, you can also run `make menuconfig`:
29+ 4. If needed you can also run `make menuconfig`:
31 ```ShellSession
31 ```ShellSession
32 $ nix-env -f "<nixpkgs>" -iA ncurses
32 $ nix-env -f "<nixpkgs>" -iA ncurses
@@ -34,7 +34,7 @@ How to add a new (major) version of the Linux kernel to Nixpkgs:
34 $ make menuconfig ARCH=arch
34 $ make menuconfig ARCH=arch
37− 5. Copy `.config` over the new config file (e.g., `config-2.6.22-i686-smp`).
37+ 5. Copy `.config` over the new config file (e.g. `config-2.6.22-i686-smp`).
394. Test building the kernel: `nix-build -A linuxKernel.kernels.kernel_2_6_22`. If it compiles, ship it! For extra credit, try booting NixOS with it.
394. Test building the kernel: `nix-build -A linuxKernel.kernels.kernel_2_6_22`. If it compiles, ship it! For extra credit, try booting NixOS with it.
doc/builders/packages/locales.section.md+2−2
@@ -1,5 +1,5 @@
1# Locales {#locales}
1# Locales {#locales}
3−To allow simultaneous use of packages linked against different versions of `glibc` with different locale archive formats, Nixpkgs patches `glibc` to rely on `LOCALE_ARCHIVE` environment variable.
3+To allow simultaneous use of packages linked against different versions of `glibc` with different locale archive formats Nixpkgs patches `glibc` to rely on `LOCALE_ARCHIVE` environment variable.
5−On non-NixOS distributions, this variable is obviously not set. This can cause regressions in language support or even crashes in some Nixpkgs-provided programs. The simplest way to mitigate this problem is exporting the `LOCALE_ARCHIVE` variable pointing to `${glibcLocales}/lib/locale/locale-archive`. The drawback (and the reason this is not the default) is the relatively large (a hundred MiB) size of the full set of locales. It is possible to build a custom set of locales by overriding parameters `allLocales` and `locales` of the package.
5+On non-NixOS distributions this variable is obviously not set. This can cause regressions in language support or even crashes in some Nixpkgs-provided programs. The simplest way to mitigate this problem is exporting the `LOCALE_ARCHIVE` variable pointing to `${glibcLocales}/lib/locale/locale-archive`. The drawback (and the reason this is not the default) is the relatively large (a hundred MiB) size of the full set of locales. It is possible to build a custom set of locales by overriding parameters `allLocales` and `locales` of the package.
doc/builders/packages/nginx.section.md+2−2
@@ -4,8 +4,8 @@
5## ETags on static files served from the Nix store {#sec-nginx-etag}
5## ETags on static files served from the Nix store {#sec-nginx-etag}
7−HTTP has a couple of different mechanisms for caching to prevent clients from having to download the same content repeatedly if a resource has not changed since the last time it was requested. When nginx is used as a server for static files, it implements the caching mechanism based on the [`Last-Modified`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified) response header automatically; unfortunately, it works by using filesystem timestamps to determine the value of the `Last-Modified` header. This doesn't give the desired behavior when the file is in the Nix store because all file timestamps are set to 0 (for reasons related to build reproducibility).
7+HTTP has a couple different mechanisms for caching to prevent clients from having to download the same content repeatedly if a resource has not changed since the last time it was requested. When nginx is used as a server for static files, it implements the caching mechanism based on the [`Last-Modified`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified) response header automatically; unfortunately, it works by using filesystem timestamps to determine the value of the `Last-Modified` header. This doesn't give the desired behavior when the file is in the Nix store, because all file timestamps are set to 0 (for reasons related to build reproducibility).
9−Fortunately, HTTP supports an alternative (and more effective) caching mechanism: the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header. The value of the `ETag` header specifies some identifier for the particular content that the server is sending (e.g., a hash). When a client makes a second request for the same resource, it sends that value back in an `If-None-Match` header. If the ETag value is unchanged, then the server does not need to resend the content.
9+Fortunately, HTTP supports an alternative (and more effective) caching mechanism: the [`ETag`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag) response header. The value of the `ETag` header specifies some identifier for the particular content that the server is sending (e.g. a hash). When a client makes a second request for the same resource, it sends that value back in an `If-None-Match` header. If the ETag value is unchanged, then the server does not need to resend the content.
11As of NixOS 19.09, the nginx package in Nixpkgs is patched such that when nginx serves a file out of `/nix/store`, the hash in the store path is used as the `ETag` header in the HTTP response, thus providing proper caching functionality. This happens automatically; you do not need to do modify any configuration to get this behavior.
11As of NixOS 19.09, the nginx package in Nixpkgs is patched such that when nginx serves a file out of `/nix/store`, the hash in the store path is used as the `ETag` header in the HTTP response, thus providing proper caching functionality. This happens automatically; you do not need to do modify any configuration to get this behavior.
doc/builders/packages/opengl.section.md+1−1
@@ -12,4 +12,4 @@ The NixOS desktop or other non-headless configurations are the primary target fo
13If you are using a non-NixOS GNU/Linux/X11 desktop with free software video drivers, consider launching OpenGL-dependent programs from Nixpkgs with Nixpkgs versions of `libglvnd` and `mesa.drivers` in `LD_LIBRARY_PATH`. For Mesa drivers, the Linux kernel version doesn't have to match nixpkgs.
13If you are using a non-NixOS GNU/Linux/X11 desktop with free software video drivers, consider launching OpenGL-dependent programs from Nixpkgs with Nixpkgs versions of `libglvnd` and `mesa.drivers` in `LD_LIBRARY_PATH`. For Mesa drivers, the Linux kernel version doesn't have to match nixpkgs.
15−For proprietary video drivers, you might have luck with also adding the corresponding video driver package.
15+For proprietary video drivers you might have luck with also adding the corresponding video driver package.
doc/builders/packages/shell-helpers.section.md+1−1
@@ -4,7 +4,7 @@ Some packages provide the shell integration to be more useful. But unlike other
5- `fzf` : `fzf-share`
5- `fzf` : `fzf-share`
7−E.g. `fzf` can then be used in the `.bashrc` like this:
7+E.g. `fzf` can then used in the `.bashrc` like this:
10source "$(fzf-share)/completion.bash"
10source "$(fzf-share)/completion.bash"
doc/builders/packages/steam.section.md+8−8
@@ -2,20 +2,20 @@
3## Steam in Nix {#sec-steam-nix}
3## Steam in Nix {#sec-steam-nix}
5−Steam is distributed as a `.deb` file, for now only as an i686 package (the amd64 package only has documentation). When unpacked, it has a script called `steam` that in Ubuntu (their target distro) would go to `/usr/bin`. When run for the first time, this script copies some files to the user's home, which include another script that is the ultimate responsible for launching the steam binary, which is also in `$HOME`.
5+Steam is distributed as a `.deb` file, for now only as an i686 package (the amd64 package only has documentation). When unpacked, it has a script called `steam` that in Ubuntu (their target distro) would go to `/usr/bin`. When run for the first time, this script copies some files to the user's home, which include another script that is the ultimate responsible for launching the steam binary, which is also in \$HOME.
7Nix problems and constraints:
7Nix problems and constraints:
9−- We don't have `/bin/bash` and many scripts point there. Same thing for `/usr/bin/python`.
9+- We don't have `/bin/bash` and many scripts point there. Similarly for `/usr/bin/python`.
10- We don't have the dynamic loader in `/lib`.
10- We don't have the dynamic loader in `/lib`.
11−- The `steam.sh` script in `$HOME` cannot be patched, as it is checked and rewritten by steam.
11+- The `steam.sh` script in \$HOME can not be patched, as it is checked and rewritten by steam.
12- The steam binary cannot be patched, it's also checked.
12- The steam binary cannot be patched, it's also checked.
14The current approach to deploy Steam in NixOS is composing a FHS-compatible chroot environment, as documented [here](http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html). This allows us to have binaries in the expected paths without disrupting the system, and to avoid patching them to work in a non FHS environment.
14The current approach to deploy Steam in NixOS is composing a FHS-compatible chroot environment, as documented [here](http://sandervanderburg.blogspot.nl/2013/09/composing-fhs-compatible-chroot.html). This allows us to have binaries in the expected paths without disrupting the system, and to avoid patching them to work in a non FHS environment.
16## How to play {#sec-steam-play}
16## How to play {#sec-steam-play}
18−Use `programs.steam.enable = true;` if you want to add steam to `systemPackages` and also enable a few workarounds as well as Steam controller support or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pro Controller.
18+Use `programs.steam.enable = true;` if you want to add steam to systemPackages and also enable a few workarrounds aswell as Steam controller support or other Steam supported controllers such as the DualShock 4 or Nintendo Switch Pr.
20## Troubleshooting {#sec-steam-troub}
20## Troubleshooting {#sec-steam-troub}
@@ -32,7 +32,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
32- **Using the FOSS Radeon or nouveau (nvidia) drivers**
32- **Using the FOSS Radeon or nouveau (nvidia) drivers**
34 - The `newStdcpp` parameter was removed since NixOS 17.09 and should not be needed anymore.
34 - The `newStdcpp` parameter was removed since NixOS 17.09 and should not be needed anymore.
35− - Steam ships statically linked with a version of `libcrypto` that conflicts with the one dynamically loaded by radeonsi_dri.so. If you get the error:
35+ - Steam ships statically linked with a version of libcrypto that conflics with the one dynamically loaded by radeonsi_dri.so. If you get the error
38 steam.sh: line 713: 7842 Segmentation fault (core dumped)
38 steam.sh: line 713: 7842 Segmentation fault (core dumped)
@@ -42,13 +42,13 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
45− 1. There is no java in steam chrootenv by default. If you get a message like:
45+ 1. There is no java in steam chrootenv by default. If you get a message like
48 /home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found
48 /home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found
51− you need to add:
51+ you need to add
54 steam.override { withJava = true; };
54 steam.override { withJava = true; };
@@ -56,7 +56,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
57## steam-run {#sec-steam-run}
57## steam-run {#sec-steam-run}
59−The FHS-compatible chroot used for Steam can also be used to run other Linux games that expect a FHS environment. To use it, install the `steam-run` package and run the game with:
59+The FHS-compatible chroot used for Steam can also be used to run other Linux games that expect a FHS environment. To use it, install the `steam-run` package and run the game with
62steam-run ./foo
62steam-run ./foo
doc/builders/packages/urxvt.section.md+4−4
@@ -4,7 +4,7 @@ Urxvt, also known as rxvt-unicode, is a highly customizable terminal emulator.
5## Configuring urxvt {#sec-urxvt-conf}
5## Configuring urxvt {#sec-urxvt-conf}
7−In `nixpkgs`, urxvt is provided by the package `rxvt-unicode`. It can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, use an overlay or directly install an expression that overrides its configuration, such as:
7+In `nixpkgs`, urxvt is provided by the package `rxvt-unicode`. It can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, use an overlay or directly install an expression that overrides its configuration, such as
10rxvt-unicode.override {
10rxvt-unicode.override {
@@ -58,14 +58,14 @@ rxvt-unicode.override {
59## Packaging urxvt plugins {#sec-urxvt-pkg}
59## Packaging urxvt plugins {#sec-urxvt-pkg}
61−Urxvt plugins resides in `pkgs/applications/misc/rxvt-unicode-plugins`. To add a new plugin, create an expression in a subdirectory and add the package to the set in `pkgs/applications/misc/rxvt-unicode-plugins/default.nix`.
61+Urxvt plugins resides in `pkgs/applications/misc/rxvt-unicode-plugins`. To add a new plugin create an expression in a subdirectory and add the package to the set in `pkgs/applications/misc/rxvt-unicode-plugins/default.nix`.
63A plugin can be any kind of derivation, the only requirement is that it should always install perl scripts in `$out/lib/urxvt/perl`. Look for existing plugins for examples.
63A plugin can be any kind of derivation, the only requirement is that it should always install perl scripts in `$out/lib/urxvt/perl`. Look for existing plugins for examples.
65−If the plugin is itself a Perl package that needs to be imported from other plugins or scripts, add the following passthrough:
65+If the plugin is itself a perl package that needs to be imported from other plugins or scripts, add the following passthrough:
68passthru.perlPackages = [ "self" ];
68passthru.perlPackages = [ "self" ];
71−This will make the urxvt wrapper pick up the dependency and set up the Perl path accordingly.
71+This will make the urxvt wrapper pick up the dependency and set up the perl path accordingly.
doc/builders/packages/weechat.section.md+5−5
@@ -1,6 +1,6 @@
1−# WeeChat {#sec-weechat}
1+# Weechat {#sec-weechat}
3−WeeChat can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, install an expression that overrides its configuration, such as:
3+Weechat can be configured to include your choice of plugins, reducing its closure size from the default configuration which includes all available plugins. To make use of this functionality, install an expression that overrides its configuration such as
6weechat.override {configure = {availablePlugins, ...}: {
6weechat.override {configure = {availablePlugins, ...}: {
@@ -13,7 +13,7 @@ If the `configure` function returns an attrset without the `plugins` attribute,
14The plugins currently available are `python`, `perl`, `ruby`, `guile`, `tcl` and `lua`.
14The plugins currently available are `python`, `perl`, `ruby`, `guile`, `tcl` and `lua`.
16−The Python and Perl plugins allows the addition of extra libraries. For instance, the `inotify.py` script in `weechat-scripts` requires D-Bus or libnotify, and the `fish.py` script requires `pycrypto`. To use these scripts, use the plugin's `withPackages` attribute:
16+The python and perl plugins allows the addition of extra libraries. For instance, the `inotify.py` script in `weechat-scripts` requires D-Bus or libnotify, and the `fish.py` script requires `pycrypto`. To use these scripts, use the plugin's `withPackages` attribute:
19weechat.override { configure = {availablePlugins, ...}: {
19weechat.override { configure = {availablePlugins, ...}: {
@@ -49,7 +49,7 @@ weechat.override {
50Further values can be added to the list of commands when running `weechat --run-command "your-commands"`.
50Further values can be added to the list of commands when running `weechat --run-command "your-commands"`.
52−Additionally, it's possible to specify scripts to be loaded when starting `weechat`. These will be loaded before the commands from `init`:
52+Additionally it's possible to specify scripts to be loaded when starting `weechat`. These will be loaded before the commands from `init`:
55weechat.override {
55weechat.override {
@@ -64,7 +64,7 @@ weechat.override {
67−In `nixpkgs` there's a subpackage which contains derivations for WeeChat scripts. Such derivations expect a `passthru.scripts` attribute, which contains a list of all scripts inside the store path. Furthermore, all scripts have to live in `$out/share`. An exemplary derivation looks like this:
67+In `nixpkgs` there's a subpackage which contains derivations for WeeChat scripts. Such derivations expect a `passthru.scripts` attribute which contains a list of all scripts inside the store path. Furthermore all scripts have to live in `$out/share`. An exemplary derivation looks like this:
70{ stdenv, fetchurl }:
70{ stdenv, fetchurl }:
doc/builders/special.xml+1
@@ -7,4 +7,5 @@
8 <xi:include href="special/fhs-environments.section.xml" />
8 <xi:include href="special/fhs-environments.section.xml" />
9 <xi:include href="special/mkshell.section.xml" />
9 <xi:include href="special/mkshell.section.xml" />
10+ <xi:include href="special/invalidateFetcherByDrvHash.section.xml" />
doc/builders/special/invalidateFetcherByDrvHash.section.mdnew file+31
@@ -0,0 +1,31 @@
2+## `invalidateFetcherByDrvHash` {#sec-pkgs-invalidateFetcherByDrvHash}
4+Use the derivation hash to invalidate the output via name, for testing.
6+Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
8+Normally, fixed output derivations can and should be cached by their output
9+hash only, but for testing we want to re-fetch everytime the fetcher changes.
11+Changes to the fetcher become apparent in the drvPath, which is a hash of
12+how to fetch, rather than a fixed store path.
13+By inserting this hash into the name, we can make sure to re-run the fetcher
14+every time the fetcher changes.
16+This relies on the assumption that Nix isn't clever enough to reuse its
17+database of local store contents to optimize fetching.
19+You might notice that the "salted" name derives from the normal invocation,
20+not the final derivation. `invalidateFetcherByDrvHash` has to invoke the fetcher
21+function twice: once to get a derivation hash, and again to produce the final
22+fixed output derivation.
26+ tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
28+ url = "https://github.com/NixOS/nix";
29+ rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
30+ sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
doc/builders/testers.chapter.mddeleted−82
@@ -1,82 +0,0 @@
1−# Testers {#chap-testers}
2−This chapter describes several testing builders which are available in the <literal>testers</literal> namespace.
4−## `testVersion` {#tester-testVersion}
6−Checks the command output contains the specified version
8−Although simplistic, this test assures that the main program
9−can run. While there's no substitute for a real test case,
10−it does catch dynamic linking errors and such. It also provides
11−some protection against accidentally building the wrong version,
12−for example when using an 'old' hash in a fixed-output derivation.
17−passthru.tests.version = testVersion { package = hello; };
19−passthru.tests.version = testVersion {
21− command = "weed version";
24−passthru.tests.version = testVersion {
26− command = "KeY --help";
27− # Wrong '2.5' version in the code. Drop on next version.
32−## `testEqualDerivation` {#tester-testEqualDerivation}
34−Checks that two packages produce the exact same build instructions.
36−This can be used to make sure that a certain difference of configuration,
37−such as the presence of an overlay does not cause a cache miss.
39−When the derivations are equal, the return value is an empty file.
40−Otherwise, the build log explains the difference via `nix-diff`.
46− "The hello package must stay the same when enabling checks."
48− (hello.overrideAttrs(o: { doCheck = true; }))
51−## `invalidateFetcherByDrvHash` {#tester-invalidateFetcherByDrvHash}
53−Use the derivation hash to invalidate the output via name, for testing.
55−Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
57−Normally, fixed output derivations can and should be cached by their output
58−hash only, but for testing we want to re-fetch everytime the fetcher changes.
60−Changes to the fetcher become apparent in the drvPath, which is a hash of
61−how to fetch, rather than a fixed store path.
62−By inserting this hash into the name, we can make sure to re-run the fetcher
63−every time the fetcher changes.
65−This relies on the assumption that Nix isn't clever enough to reuse its
66−database of local store contents to optimize fetching.
68−You might notice that the "salted" name derives from the normal invocation,
69−not the final derivation. `invalidateFetcherByDrvHash` has to invoke the fetcher
70−function twice: once to get a derivation hash, and again to produce the final
71−fixed output derivation.
76−tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
78− url = "https://github.com/NixOS/nix";
79− rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
80− sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
doc/builders/trivial-builders.chapter.md+3−3
@@ -35,10 +35,10 @@ This works just like `runCommand`. The only difference is that it also provides
36## `runCommandLocal` {#trivial-builder-runCommandLocal}
36## `runCommandLocal` {#trivial-builder-runCommandLocal}
38−Variant of `runCommand` that forces the derivation to be built locally, it is not substituted. This is intended for very cheap commands (<1s execution time). It saves on the network round-trip and can speed up a build.
38+Variant of `runCommand` that forces the derivation to be built locally, it is not substituted. This is intended for very cheap commands (<1s execution time). It saves on the network roundrip and can speed up a build.
40::: {.note}
40::: {.note}
41−This sets [`allowSubstitutes` to `false`](https://nixos.org/nix/manual/#adv-attr-allowSubstitutes), so only use `runCommandLocal` if you are certain the user will always have a builder for the `system` of the derivation. This should be true for most trivial use cases (e.g., just copying some files to a different location or adding symlinks) because there the `system` is usually the same as `builtins.currentSystem`.
41+This sets [`allowSubstitutes` to `false`](https://nixos.org/nix/manual/#adv-attr-allowSubstitutes), so only use `runCommandLocal` if you are certain the user will always have a builder for the `system` of the derivation. This should be true for most trivial use cases (e.g. just copying some files to a different location or adding symlinks), because there the `system` is usually the same as `builtins.currentSystem`.
44## `writeTextFile`, `writeText`, `writeTextDir`, `writeScript`, `writeScriptBin` {#trivial-builder-writeText}
44## `writeTextFile`, `writeText`, `writeTextDir`, `writeScript`, `writeScriptBin` {#trivial-builder-writeText}
@@ -219,5 +219,5 @@ produces an output path `/nix/store/<hash>-runtime-references` containing
219/nix/store/<hash>-hello-2.10
219/nix/store/<hash>-hello-2.10
222−but none of `hello`'s dependencies because those are not referenced directly
222+but none of `hello`'s dependencies, because those are not referenced directly
223by `hi`'s output.
223by `hi`'s output.
doc/contributing/coding-conventions.chapter.md+5−5
@@ -214,15 +214,15 @@ Most of the time, these are the same. For instance, the package `e2fsprogs` has
215There are a few naming guidelines:
215There are a few naming guidelines:
217−- The `pname` attribute _should_ be identical to the upstream package name.
217+- The `name` attribute _should_ be identical to the upstream package name.
219−- The `pname` and the `version` attribute _must not_ contain uppercase letters — e.g., `"mplayer" instead of `"MPlayer"`.
219+- The `name` attribute _must not_ contain uppercase letters — e.g., `"mplayer-1.0rc2"` instead of `"MPlayer-1.0rc2"`.
221−- The `version` attribute _must_ start with a digit e.g`"0.3.1rc2".
221+- The version part of the `name` attribute _must_ start with a digit (following a dash) — e.g., `"hello-0.3.1rc2"`.
223−- If a package is not a release but a commit from a repository, then the `version` attribute _must_ be the date of that (fetched) commit. The date _must_ be in `"unstable-YYYY-MM-DD"` format.
223+- If a package is not a release but a commit from a repository, then the version part of the name _must_ be the date of that (fetched) commit. The date _must_ be in `"YYYY-MM-DD"` format. Also append `"unstable"` to the name - e.g., `"pkgname-unstable-2014-09-23"`.
225−- Dashes in the package `pname` _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
225+- Dashes in the package name _should_ be preserved in new variable names, rather than converted to underscores or camel cased — e.g., `http-parser` instead of `http_parser` or `httpParser`. The hyphenated style is preferred in all three package names.
227- If there are multiple versions of a package, this _should_ be reflected in the variable names in `all-packages.nix`, e.g. `json-c_0_9` and `json-c_0_11`. If there is an obvious “default” version, make an attribute like `json-c = json-c_0_9;`. See also [](#sec-versioning)
227- If there are multiple versions of a package, this _should_ be reflected in the variable names in `all-packages.nix`, e.g. `json-c_0_9` and `json-c_0_11`. If there is an obvious “default” version, make an attribute like `json-c = json-c_0_9;`. See also [](#sec-versioning)
doc/contributing/submitting-changes.chapter.md+1−1
@@ -96,7 +96,7 @@ We use jbidwatcher as an example for a discontinued project here.
971. Have Nixpkgs checked out locally and up to date.
971. Have Nixpkgs checked out locally and up to date.
981. Create a new branch for your change, e.g. `git checkout -b jbidwatcher`
981. Create a new branch for your change, e.g. `git checkout -b jbidwatcher`
99−1. Remove the actual package including its directory, e.g. `git rm -rf pkgs/applications/misc/jbidwatcher`
99+1. Remove the actual package including its directory, e.g. `rm -rf pkgs/applications/misc/jbidwatcher`
1001. Remove the package from the list of all packages (`pkgs/top-level/all-packages.nix`).
1001. Remove the package from the list of all packages (`pkgs/top-level/all-packages.nix`).
1011. Add an alias for the package name in `pkgs/top-level/aliases.nix` (There is also `pkgs/applications/editors/vim/plugins/aliases.nix`. Package sets typically do not have aliases, so we can't add them there.)
1011. Add an alias for the package name in `pkgs/top-level/aliases.nix` (There is also `pkgs/applications/editors/vim/plugins/aliases.nix`. Package sets typically do not have aliases, so we can't add them there.)
doc/hooks/index.xmldeleted−10
@@ -1,10 +0,0 @@
1−<chapter xmlns="http://docbook.org/ns/docbook"
2− xmlns:xlink="http://www.w3.org/1999/xlink"
3− xmlns:xi="http://www.w3.org/2001/XInclude"
5− <title>Hooks reference</title>
7− Nixpkgs has several hook packages that augment the stdenv phases.
9− <xi:include href="./postgresql-test-hook.section.xml" />
doc/hooks/postgresql-test-hook.section.mddeleted−59
@@ -1,59 +0,0 @@
2−# `postgresqlTestHook` {#sec-postgresqlTestHook}
4−This hook starts a PostgreSQL server during the `checkPhase`. Example:
7−{ stdenv, postgresql, postgresqlTestHook }:
19−If you use a custom `checkPhase`, remember to add the `runHook` calls:
30−## Variables {#sec-postgresqlTestHook-variables}
32−The hook logic will read a number of variables and set them to a default value if unset or empty.
36− - `PGDATA`: location of server files.
37− - `PGHOST`: location of UNIX domain socket directory; the default `host` in a connection string.
38− - `PGUSER`: user to create / log in with, default: `test_user`.
39− - `PGDATABASE`: database name, default: `test_db`.
43− - `postgresqlTestUserOptions`: SQL options to use when creating the `$PGUSER` role, default: `LOGIN`.
44− - `postgresqlTestSetupSQL`: SQL commands to run as database administrator after startup, default: statements that create `$PGUSER` and `$PGDATABASE`.
45− - `postgresqlTestSetupCommands`: bash commands to run after database start, defaults to running `$postgresqlTestSetupSQL` as database administrator.
46− - `postgresqlEnableTCP`: set to `1` to enable TCP listening. Flaky; not recommended.
47− - `postgresqlStartCommands`: defaults to `pg_ctl start`.
49−## TCP and the Nix sandbox {#sec-postgresqlTestHook-tcp}
51−`postgresqlEnableTCP` relies on network sandboxing, which is not available on macOS and some custom Nix installations, resulting in flaky tests.
52−For this reason, it is disabled by default.
54−The preferred solution is to make the test suite use a UNIX domain socket connection. This is the default behavior when no `host` connection parameter is provided.
55−Some test suites hardcode a value for `host` though, so a patch may be required. If you can upstream the patch, you can make `host` default to the `PGHOST` environment variable when set. Otherwise, you can patch it locally to omit the `host` connection string parameter altogether.
58−The error `libpq: failed (could not receive data from server: Connection refused` is generally an indication that the test suite is trying to connect through TCP.
doc/languages-frameworks/chicken.section.mddeleted−49
@@ -1,49 +0,0 @@
1−# CHICKEN {#sec-chicken}
3−[CHICKEN](https://call-cc.org/) is a
4−[R⁵RS](https://schemers.org/Documents/Standards/R5RS/HTML/)-compliant Scheme
5−compiler. It includes an interactive mode and a custom package format, "eggs".
9−Eggs described in nixpkgs are available inside the
10−`chickenPackages.chickenEggs` attrset. Including an egg as a build input is
11−done in the typical Nix fashion. For example, to include support for [SRFI
12−189](https://srfi.schemers.org/srfi-189/srfi-189.html) in a derivation, one
18− chickenPackages.chickenEggs.srfi-189
22−Both `chicken` and its eggs have a setup hook which configures the environment
23−variables `CHICKEN_INCLUDE_PATH` and `CHICKEN_REPOSITORY_PATH`.
27−nixpkgs only knows about a subset of all published eggs. It uses
28−[egg2nix](https://github.com/the-kenny/egg2nix) to generate a
29−package set from a list of eggs to include.
31−The package set is regenerated by running the following shell commands:
34−$ nix-shell -p chickenPackages.egg2nix
35−$ cd pkgs/development/compilers/chicken/5/
36−$ egg2nix eggs.scm > eggs.nix
41−When we run `egg2nix`, we obtain one collection of eggs with
42−mutually-compatible versions. This means that when we add new eggs, we may
43−need to update existing eggs. To keep those separate, follow the procedure for
44−updating eggs before including more eggs.
46−To include more eggs, edit `pkgs/development/compilers/chicken/5/eggs.scm`.
47−The first section of this file lists eggs which are required by `egg2nix`
48−itself; all other eggs go into the second section. After editing, follow the
49−procedure for updating eggs.
doc/languages-frameworks/cuda.section.mddeleted−34
@@ -1,34 +0,0 @@
3−CUDA-only packages are stored in the `cudaPackages` packages set. This set
4−includes the `cudatoolkit`, portions of the toolkit in separate derivations,
5−`cudnn`, `cutensor` and `nccl`.
7−A package set is available for each CUDA version, so for example
8−`cudaPackages_11_6`. Within each set is a matching version of the above listed
9−packages. Additionally, other versions of the packages that are packaged and
10−compatible are available as well. For example, there can be a
11−`cudaPackages.cudnn_8_3_2` package.
13−To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
19−When using `callPackage`, you can choose to pass in a different variant, e.g.
20−when a different version of the toolkit suffices
22−mypkg = callPackage { cudaPackages = cudaPackages_11_5; }
25−If another version of say `cudnn` or `cutensor` is needed, you can override the
26−package set to make it the default. This guarantees you get a consistent package
30− cudaPackages = cudaPackages_11_5.overrideScope' (final: prev {
31− cudnn = prev.cudnn_8_3_2;
33−in callPackage { inherit cudaPackages; };
doc/languages-frameworks/gnome.section.md+2−16
@@ -42,21 +42,7 @@ Unlike other libraries mentioned in this section, GdkPixbuf only supports a sing
43### Icons {#ssec-gnome-icons}
43### Icons {#ssec-gnome-icons}
45−When an application uses icons, an icon theme should be available in `XDG_DATA_DIRS` during runtime. The package for the default, icon-less [hicolor-icon-theme](https://www.freedesktop.org/wiki/Software/icon-theme/) (should be propagated by every icon theme) contains [a setup hook](#ssec-gnome-hooks-hicolor-icon-theme) that will pick up icon themes from `buildInputs` and add their datadirs to `XDG_ICON_DIRS` environment variable (this is Nixpkgs specific, not actually a XDG standard variable). Unfortunately, relying on that would mean every user has to download the theme included in the package expression no matter their preference. For that reason, we leave the installation of icon theme on the user. If you use one of the desktop environments, you probably already have an icon theme installed.
45+When an application uses icons, an icon theme should be available in `XDG_DATA_DIRS` during runtime. The package for the default, icon-less [hicolor-icon-theme](https://www.freedesktop.org/wiki/Software/icon-theme/) (should be propagated by every icon theme) contains [a setup hook](#ssec-gnome-hooks-hicolor-icon-theme) that will pick up icon themes from `buildInputs` and pass it to our wrapper. Unfortunately, relying on that would mean every user has to download the theme included in the package expression no matter their preference. For that reason, we leave the installation of icon theme on the user. If you use one of the desktop environments, you probably already have an icon theme installed.
47−In the rare case you need to use icons from dependencies (e.g. when an app forces an icon theme), you can use the following to pick them up:
51− pantheon.elementary-icon-theme
55− # The icon theme is hardcoded.
56− --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
61To avoid costly file system access when locating icons, GTK, [as well as Qt](https://woboq.com/blog/qicon-reads-gtk-icon-cache-in-qt57.html), can rely on `icon-theme.cache` files from the themes' top-level directories. These files are generated using `gtk-update-icon-cache`, which is expected to be run whenever an icon is added or removed to an icon theme (typically an application icon into `hicolor` theme) and some programs do indeed run this after icon installation. However, since packages are installed into their own prefix by Nix, this would lead to conflicts. For that reason, `gtk3` provides a [setup hook](#ssec-gnome-hooks-gtk-drop-icon-theme-cache) that will clean the file from installation. Since most applications only ship their own icon that will be loaded on start-up, it should not affect them too much. On the other hand, icon themes are much larger and more widely used so we need to cache them. Because we recommend installing icon themes globally, we will generate the cache files from all packages in a profile using a NixOS module. You can enable the cache generation using `gtk.iconCache.enable` option if your desktop environment does not already do that.
47To avoid costly file system access when locating icons, GTK, [as well as Qt](https://woboq.com/blog/qicon-reads-gtk-icon-cache-in-qt57.html), can rely on `icon-theme.cache` files from the themes' top-level directories. These files are generated using `gtk-update-icon-cache`, which is expected to be run whenever an icon is added or removed to an icon theme (typically an application icon into `hicolor` theme) and some programs do indeed run this after icon installation. However, since packages are installed into their own prefix by Nix, this would lead to conflicts. For that reason, `gtk3` provides a [setup hook](#ssec-gnome-hooks-gtk-drop-icon-theme-cache) that will clean the file from installation. Since most applications only ship their own icon that will be loaded on start-up, it should not affect them too much. On the other hand, icon themes are much larger and more widely used so we need to cache them. Because we recommend installing icon themes globally, we will generate the cache files from all packages in a profile using a NixOS module. You can enable the cache generation using `gtk.iconCache.enable` option if your desktop environment does not already do that.
@@ -112,7 +98,7 @@ For convenience, it also adds `dconf.lib` for a GIO module implementing a GSetti
113- []{#ssec-gnome-hooks-dconf} `dconf.lib` is a dependency of `wrapGAppsHook`, which then also adds it to the `GIO_EXTRA_MODULES` variable.
99- []{#ssec-gnome-hooks-dconf} `dconf.lib` is a dependency of `wrapGAppsHook`, which then also adds it to the `GIO_EXTRA_MODULES` variable.
115−- []{#ssec-gnome-hooks-hicolor-icon-theme} `hicolor-icon-theme`’s setup hook will add icon themes to `XDG_ICON_DIRS`.
101+- []{#ssec-gnome-hooks-hicolor-icon-theme} `hicolor-icon-theme`’s setup hook will add icon themes to `XDG_ICON_DIRS` which is prepended to `XDG_DATA_DIRS` by `wrapGAppsHook`.
117- []{#ssec-gnome-hooks-gobject-introspection} `gobject-introspection` setup hook populates `GI_TYPELIB_PATH` variable with `lib/girepository-1.0` directories of dependencies, which is then added to wrapper by `wrapGAppsHook`. It also adds `share` directories of dependencies to `XDG_DATA_DIRS`, which is intended to promote GIR files but it also [pollutes the closures](https://github.com/NixOS/nixpkgs/issues/32790) of packages using `wrapGAppsHook`.
103- []{#ssec-gnome-hooks-gobject-introspection} `gobject-introspection` setup hook populates `GI_TYPELIB_PATH` variable with `lib/girepository-1.0` directories of dependencies, which is then added to wrapper by `wrapGAppsHook`. It also adds `share` directories of dependencies to `XDG_DATA_DIRS`, which is intended to promote GIR files but it also [pollutes the closures](https://github.com/NixOS/nixpkgs/issues/32790) of packages using `wrapGAppsHook`.
doc/languages-frameworks/go.section.md+1−5
@@ -142,8 +142,4 @@ Removes the pre-existing vendor directory. This should only be used if the depen
143### `subPackages` {#var-go-subPackages}
143### `subPackages` {#var-go-subPackages}
145−Specified as a string or list of strings. Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
145+Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
147−### `excludedPackages` {#var-go-excludedPackages}
149−Specified as a string or list of strings. Causes the builder to skip building child packages that match any of the provided values. If `excludedPackages` is not specified, all child packages will be built.
doc/languages-frameworks/index.xml−2
@@ -9,10 +9,8 @@
9 <xi:include href="android.section.xml" />
9 <xi:include href="android.section.xml" />
10 <xi:include href="beam.section.xml" />
10 <xi:include href="beam.section.xml" />
11 <xi:include href="bower.section.xml" />
11 <xi:include href="bower.section.xml" />
12− <xi:include href="chicken.section.xml" />
13 <xi:include href="coq.section.xml" />
12 <xi:include href="coq.section.xml" />
14 <xi:include href="crystal.section.xml" />
13 <xi:include href="crystal.section.xml" />
15− <xi:include href="cuda.section.xml" />
16 <xi:include href="dhall.section.xml" />
14 <xi:include href="dhall.section.xml" />
17 <xi:include href="dotnet.section.xml" />
15 <xi:include href="dotnet.section.xml" />
18 <xi:include href="emscripten.section.xml" />
16 <xi:include href="emscripten.section.xml" />
@@ -25,10 +25,8 @@
25 <title>Builders</title>
25 <title>Builders</title>
26 <xi:include href="builders/fetchers.chapter.xml" />
26 <xi:include href="builders/fetchers.chapter.xml" />
27 <xi:include href="builders/trivial-builders.chapter.xml" />
27 <xi:include href="builders/trivial-builders.chapter.xml" />
28− <xi:include href="builders/testers.chapter.xml" />
29 <xi:include href="builders/special.xml" />
28 <xi:include href="builders/special.xml" />
30 <xi:include href="builders/images.xml" />
29 <xi:include href="builders/images.xml" />
31− <xi:include href="hooks/index.xml" />
32 <xi:include href="languages-frameworks/index.xml" />
30 <xi:include href="languages-frameworks/index.xml" />
33 <xi:include href="builders/packages/index.xml" />
31 <xi:include href="builders/packages/index.xml" />
doc/stdenv/cross-compilation.chapter.md+10−35
@@ -78,46 +78,21 @@ If both the dependency and depending packages aren't compilers or other machine-
79Finally, if the depending package is a compiler or other machine-code-producing tool, it might need dependencies that run at "emit time". This is for compilers that (regrettably) insist on being built together with their source languages' standard libraries. Assuming build != host != target, a run-time dependency of the standard library cannot be run at the compiler's build time or run time, but only at the run time of code emitted by the compiler.
79Finally, if the depending package is a compiler or other machine-code-producing tool, it might need dependencies that run at "emit time". This is for compilers that (regrettably) insist on being built together with their source languages' standard libraries. Assuming build != host != target, a run-time dependency of the standard library cannot be run at the compiler's build time or run time, but only at the run time of code emitted by the compiler.
81−Putting this all together, that means that we have dependency types of the form "X→ E", which means that the dependency executes on X and emits code for E; each of X and E can be `build`, `host`, or `target`, and E can be `*` to indicate that the dependency is not a compiler-like package.
81+Putting this all together, that means we have dependencies in the form "host → target", in at most the following six combinations:
83−Dependency types describe the relationships that a package has with each of its transitive dependencies. You could think of attaching one or more dependency types to each of the formal parameters at the top of a package's `.nix` file, as well as to all of *their* formal parameters, and so on. Triples like `(foo, bar, baz)`, on the other hand, are a property of an instantiated derivation -- you could would attach a triple `(mips-linux, mips-linux, sparc-solaris)` to a `.drv` file in `/nix/store`.
85−Only nine dependency types matter in practice:
87#### Possible dependency types {#possible-dependency-types}
83#### Possible dependency types {#possible-dependency-types}
89−| Dependency type | Dependency’s host platform | Dependency’s target platform |
85+| Dependency’s host platform | Dependency’s target platform |
90−|-----------------|----------------------------|------------------------------|
86+|----------------------------|------------------------------|
91−| build → * | build | (none) |
92−| build → build | build | build |
87+| build | build |
93−| build → host | build | host |
88+| build | host |
94−| build → target | build | target |
89+| build | target |
95−| host → * | host | (none) |
90+| host | host |
96−| host → host | host | host |
97−| host → target | host | target |
91+| host | target |
98−| target → * | target | (none) |
92+| target | target |
99−| target → target | target | target |
101−Let's use `g++` as an example to make this table clearer. `g++` is a C++ compiler written in C. Suppose we are building `g++` with a `(build, host, target)` platform triple of `(foo, bar, baz)`. This means we are using a `foo`-machine to build a copy of `g++` which will run on a `bar`-machine and emit binaries for the `baz`-machine.
103−* `g++` links against the host platform's `glibc` C library, which is a "host→ *" dependency with a triple of `(bar, bar, *)`. Since it is a library, not a compiler, it has no "target".
105−* Since `g++` is written in C, the `gcc` compiler used to compile it is a "build→ host" dependency of `g++` with a triple of `(foo, foo, bar)`. This compiler runs on the build platform and emits code for the host platform.
107−* `gcc` links against the build platform's `glibc` C library, which is a "build→ *" dependency with a triple of `(foo, foo, *)`. Since it is a library, not a compiler, it has no "target".
109−* This `gcc` is itself compiled by an *earlier* copy of `gcc`. This earlier copy of `gcc` is a "build→ build" dependency of `g++` with a triple of `(foo, foo, foo)`. This "early `gcc`" runs on the build platform and emits code for the build platform.
111−* `g++` is bundled with `libgcc`, which includes a collection of target-machine routines for exception handling and
112−software floating point emulation. `libgcc` would be a "target→ *" dependency with triple `(foo, baz, *)`, because it consists of machine code which gets linked against the output of the compiler that we are building. It is a library, not a compiler, so it has no target of its own.
114−* `libgcc` is written in C and compiled with `gcc`. The `gcc` that compiles it will be a "build→ target" dependency with triple `(foo, foo, baz)`. It gets compiled *and run* at `g++`-build-time (on platform `foo`), but must emit code for the `baz`-platform.
116−* `g++` allows inline assembler code, so it depends on access to a copy of the `gas` assembler. This would be a "host→ target" dependency with triple `(foo, bar, baz)`.
118−* `g++` (and `gcc`) include a library `libgccjit.so`, which wrap the compiler in a library to create a just-in-time compiler. In nixpkgs, this library is in the `libgccjit` package; if C++ required that programs have access to a JIT, `g++` would need to add a "target→ target" dependency for `libgccjit` with triple `(foo, baz, baz)`. This would ensure that the compiler ships with a copy of `libgccjit` which both executes on and generates code for the `baz`-platform.
120−* If `g++` itself linked against `libgccjit.so` (for example, to allow compile-time-evaluated C++ expressions), then the `libgccjit` package used to provide this functionality would be a "host→ host" dependency of `g++`: it is code which runs on the `host` and emits code for execution on the `host`.
95+Some examples will make this table clearer. Suppose there's some package that is being built with a `(build, host, target)` platform triple of `(foo, bar, baz)`. If it has a build-time library dependency, that would be a "host → build" dependency with a triple of `(foo, foo, *)` (the target platform is irrelevant). If it needs a compiler to be built, that would be a "build → host" dependency with a triple of `(foo, foo, *)` (the target platform is irrelevant). That compiler, would be built with another compiler, also "build → host" dependency, with a triple of `(foo, foo, foo)`.
122### Cross packaging cookbook {#ssec-cross-cookbook}
97### Cross packaging cookbook {#ssec-cross-cookbook}
doc/stdenv/meta.chapter.md−34
@@ -175,40 +175,6 @@ The NixOS tests are available as `nixosTests` in parameters of derivations. For
176NixOS tests run in a VM, so they are slower than regular package tests. For more information see [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests).
176NixOS tests run in a VM, so they are slower than regular package tests. For more information see [NixOS module tests](https://nixos.org/manual/nixos/stable/#sec-nixos-tests).
178−Alternatively, you can specify other derivations as tests. You can make use of
179−the optional parameter to inject the correct package without
180−relying on non-local definitions, even in the presence of `overrideAttrs`.
181−Here that's `finalAttrs.finalPackage`, but you could choose a different name if
182−`finalAttrs` already exists in your scope.
184−`(mypkg.overrideAttrs f).passthru.tests` will be as expected, as long as the
185−definition of `tests` does not rely on the original `mypkg` or overrides it in
189−# my-package/default.nix
190−{ stdenv, callPackage }:
191−stdenv.mkDerivation (finalAttrs: {
193− passthru.tests.example = callPackage ./example.nix { my-package = finalAttrs.finalPackage; };
198−# my-package/example.nix
199−{ runCommand, lib, my-package, ... }:
200−runCommand "my-package-test" {
201− nativeBuildInputs = [ my-package ];
202− src = lib.sources.sourcesByRegex ./. [ ".*.in" ".*.expected" ];
205− my-package <example.in >example.actual
206− diff -U3 --color=auto example.expected example.actual
212### `timeout` {#var-meta-timeout}
178### `timeout` {#var-meta-timeout}
214A timeout (in seconds) for building the derivation. If the derivation takes longer than this time to build, it can fail due to breaking the timeout. However, all computers do not have the same computing power, hence some builders may decide to apply a multiplicative factor to this value. When filling this value in, try to keep it approximately consistent with other values already present in `nixpkgs`.
180A timeout (in seconds) for building the derivation. If the derivation takes longer than this time to build, it can fail due to breaking the timeout. However, all computers do not have the same computing power, hence some builders may decide to apply a multiplicative factor to this value. When filling this value in, try to keep it approximately consistent with other values already present in `nixpkgs`.
doc/stdenv/stdenv.chapter.md+2−56
@@ -125,7 +125,7 @@ The extension of `PATH` with dependencies, alluded to above, proceeds according
125A dependency is said to be **propagated** when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency.
125A dependency is said to be **propagated** when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency.
126[^footnote-stdenv-propagated-dependencies]
126[^footnote-stdenv-propagated-dependencies]
128−It is important to note that dependencies are not necessarily propagated as the same sort of dependency that they were before, but rather as the corresponding sort so that the platform rules still line up. To determine the exact rules for dependency propagation, we start by assigning to each dependency a couple of ternary numbers (`-1` for `build`, `0` for `host`, and `1` for `target`) representing its [dependency type](#possible-dependency-types), which captures how its host and target platforms are each "offset" from the depending derivation’s host and target platforms. The following table summarize the different combinations that can be obtained:
128+It is important to note that dependencies are not necessarily propagated as the same sort of dependency that they were before, but rather as the corresponding sort so that the platform rules still line up. To determine the exact rules for dependency propagation, we start by assigning to each dependency a couple of ternary numbers (`-1` for `build`, `0` for `host`, and `1` for `target`), representing how respectively its host and target platforms are "offset" from the depending derivation’s platforms. The following table summarize the different combinations that can be obtained:
130| `host → target` | attribute name | offset |
130| `host → target` | attribute name | offset |
131| ------------------- | ------------------- | -------- |
131| ------------------- | ------------------- | -------- |
@@ -317,60 +317,6 @@ The script will be usually run from the root of the Nixpkgs repository but you s
318For information about how to run the updates, execute `nix-shell maintainers/scripts/update.nix`.
318For information about how to run the updates, execute `nix-shell maintainers/scripts/update.nix`.
320−### Recursive attributes in `mkDerivation`
322−If you pass a function to `mkDerivation`, it will receive as its argument the final arguments, including the overrides when reinvoked via `overrideAttrs`. For example:
325−mkDerivation (finalAttrs: {
329− lib.optionals finalAttrs.withFeature ["--with-feature"];
333−Note that this does not use the `rec` keyword to reuse `withFeature` in `configureFlags`.
334−The `rec` keyword works at the syntax level and is unaware of overriding.
336−Instead, the definition references `finalAttrs`, allowing users to change `withFeature`
337−consistently with `overrideAttrs`.
339−`finalAttrs` also contains the attribute `finalPackage`, which includes the output paths, etc.
341−Let's look at a more elaborate example to understand the differences between
345−# `pkg` is the _original_ definition (for illustration purposes)
347− mkDerivation (finalAttrs: {
350− # An example attribute
353− # `passthru.tests` is a commonly defined attribute.
354− passthru.tests.simple = f finalAttrs.finalPackage;
356− # An example of an attribute containing a function
357− passthru.appendPackages = packages':
358− finalAttrs.finalPackage.overrideAttrs (newSelf: super: {
359− packages = super.packages ++ packages';
362− # For illustration purposes; referenced as
363− # `(pkg.overrideAttrs(x)).finalAttrs` etc in the text below.
364− passthru.finalAttrs = finalAttrs;
365− passthru.original = pkg;
370−Unlike the `pkg` binding in the above example, the `finalAttrs` parameter always references the final attributes. For instance `(pkg.overrideAttrs(x)).finalAttrs.finalPackage` is identical to `pkg.overrideAttrs(x)`, whereas `(pkg.overrideAttrs(x)).original` is the same as the original `pkg`.
372−See also the section about [`passthru.tests`](#var-meta-tests).
374## Phases {#sec-stdenv-phases}
320## Phases {#sec-stdenv-phases}
376`stdenv.mkDerivation` sets the Nix [derivation](https://nixos.org/manual/nix/stable/expressions/derivations.html#derivations)'s builder to a script that loads the stdenv `setup.sh` bash library and calls `genericBuild`. Most packaging functions rely on this default builder.
322`stdenv.mkDerivation` sets the Nix [derivation](https://nixos.org/manual/nix/stable/expressions/derivations.html#derivations)'s builder to a script that loads the stdenv `setup.sh` bash library and calls `genericBuild`. Most packaging functions rely on this default builder.
@@ -1097,7 +1043,7 @@ You can also specify a `runtimeDependencies` variable which lists dependencies t
1098In certain situations you may want to run the main command (`autoPatchelf`) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the `dontAutoPatchelf` environment variable to a non-empty value.
1044In certain situations you may want to run the main command (`autoPatchelf`) of the setup hook on a file or a set of directories instead of unconditionally patching all outputs. This can be done by setting the `dontAutoPatchelf` environment variable to a non-empty value.
1100−By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value. `autoPatchelfIgnoreMissingDeps` can be set to a list like `autoPatchelfIgnoreMissingDeps = [ "libcuda.so.1" "libcudart.so.1" ];` or to simply `[ "*" ]` to ignore all missing dependencies.
1046+By default `autoPatchelf` will fail as soon as any ELF file requires a dependency which cannot be resolved via the given build inputs. In some situations you might prefer to just leave missing dependencies unpatched and continue to patch the rest. This can be achieved by setting the `autoPatchelfIgnoreMissingDeps` environment variable to a non-empty value.
1102The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
1048The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
doc/using/overrides.chapter.md+2−6
@@ -39,18 +39,14 @@ The function `overrideAttrs` allows overriding the attribute set passed to a `st
39Example usage:
39Example usage:
42−helloWithDebug = pkgs.hello.overrideAttrs (finalAttrs: previousAttrs: {
42+helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
43 separateDebugInfo = true;
43 separateDebugInfo = true;
47In the above example, the `separateDebugInfo` attribute is overridden to be true, thus building debug info for `helloWithDebug`, while all other attributes will be retained from the original `hello` package.
47In the above example, the `separateDebugInfo` attribute is overridden to be true, thus building debug info for `helloWithDebug`, while all other attributes will be retained from the original `hello` package.
49−The argument `previousAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
49+The argument `oldAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
51−The argument `finalAttrs` refers to the final attributes passed to `mkDerivation`, plus the `finalPackage` attribute which is equal to the result of `mkDerivation` or subsequent `overrideAttrs` calls.
53−If only a one-argument function is written, the argument has the meaning of `previousAttrs`.
55::: {.note}
51::: {.note}
56Note that `separateDebugInfo` is processed only by the `stdenv.mkDerivation` function, not the generated, raw Nix derivation. Thus, using `overrideDerivation` will not work in this case, as it overrides only the attributes of the final derivation. It is for this reason that `overrideAttrs` should be preferred in (almost) all cases to `overrideDerivation`, i.e. to allow using `stdenv.mkDerivation` to process input arguments, as well as the fact that it is easier to use (you can use the same attribute names you see in your Nix code, instead of the ones generated (e.g. `buildInputs` vs `nativeBuildInputs`), and it involves less typing).
52Note that `separateDebugInfo` is processed only by the `stdenv.mkDerivation` function, not the generated, raw Nix derivation. Thus, using `overrideDerivation` will not work in this case, as it overrides only the attributes of the final derivation. It is for this reason that `overrideAttrs` should be preferred in (almost) all cases to `overrideDerivation`, i.e. to allow using `stdenv.mkDerivation` to process input arguments, as well as the fact that it is easier to use (you can use the same attribute names you see in your Nix code, instead of the ones generated (e.g. `buildInputs` vs `nativeBuildInputs`), and it involves less typing).
@@ -11,9 +11,6 @@ let
11 callLibs = file: import file { lib = self; };
11 callLibs = file: import file { lib = self; };
14− # interacting with flakes
15− flakes = callLibs ./flakes.nix;
17 # often used, or depending on very little
14 # often used, or depending on very little
18 trivial = callLibs ./trivial.nix;
15 trivial = callLibs ./trivial.nix;
19 fixedPoints = callLibs ./fixed-points.nix;
16 fixedPoints = callLibs ./fixed-points.nix;
@@ -62,7 +59,6 @@ let
62 # linux kernel configuration
59 # linux kernel configuration
63 kernel = callLibs ./kernel.nix;
60 kernel = callLibs ./kernel.nix;
65− inherit (self.flakes) callLocklessFlake;
66 inherit (builtins) add addErrorContext attrNames concatLists
62 inherit (builtins) add addErrorContext attrNames concatLists
67 deepSeq elem elemAt filter genericClosure genList getAttr
63 deepSeq elem elemAt filter genericClosure genList getAttr
68 hasAttr head isAttrs isBool isInt isList isString length
64 hasAttr head isAttrs isBool isInt isList isString length
@@ -98,8 +94,7 @@ let
98 concatImapStringsSep makeSearchPath makeSearchPathOutput
94 concatImapStringsSep makeSearchPath makeSearchPathOutput
99 makeLibraryPath makeBinPath optionalString
95 makeLibraryPath makeBinPath optionalString
100 hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
96 hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
101− escapeShellArg escapeShellArgs isValidPosixName toShellVar toShellVars
102− escapeRegex escapeXML replaceChars lowerChars
97+ escapeShellArg escapeShellArgs escapeRegex escapeXML replaceChars lowerChars
103 upperChars toLower toUpper addContextFrom splitString
98 upperChars toLower toUpper addContextFrom splitString
104 removePrefix removeSuffix versionOlder versionAtLeast
99 removePrefix removeSuffix versionOlder versionAtLeast
105 getName getVersion
100 getName getVersion
@@ -113,7 +108,7 @@ let
113 makeScope makeScopeWithSplicing;
108 makeScope makeScopeWithSplicing;
114 inherit (self.meta) addMetaAttrs dontDistribute setName updateName
109 inherit (self.meta) addMetaAttrs dontDistribute setName updateName
115 appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
110 appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
116− hiPrioSet getLicenseFromSpdxId getExe;
111+ hiPrioSet getLicenseFromSpdxId;
117 inherit (self.sources) pathType pathIsDirectory cleanSourceFilter
112 inherit (self.sources) pathType pathIsDirectory cleanSourceFilter
118 cleanSource sourceByRegex sourceFilesBySuffices
113 cleanSource sourceByRegex sourceFilesBySuffices
119 commitIdFromGitRepo cleanSourceWith pathHasContext
114 commitIdFromGitRepo cleanSourceWith pathHasContext
@@ -1,22 +0,0 @@
5− /* imports a flake.nix without acknowledging its lock file, useful for
6− referencing subflakes from a parent flake. The second argument allows
7− specifying the inputs of this flake.
11− path = ./directoryContainingFlake;
12− inputs = { inherit nixpkgs; };
15− callLocklessFlake = { path, inputs ? { } }:
17− self = { outPath = path; } //
18− ((import (path + "/flake.nix")).outputs (inputs // { self = self; }));
@@ -10,7 +10,7 @@
10 * are mostly generators themselves, called with
10 * are mostly generators themselves, called with
11 * their respective default values; they can be reused.
11 * their respective default values; they can be reused.
13− * Tests can be found in ./tests/misc.nix
13+ * Tests can be found in ./tests.nix
14 * Documentation in the manual, #sec-generators
14 * Documentation in the manual, #sec-generators
@@ -108,7 +108,7 @@ rec {
108 * The mk* configuration attributes can generically change
108 * The mk* configuration attributes can generically change
109 * the way sections and key-value strings are generated.
109 * the way sections and key-value strings are generated.
111− * For more examples see the test cases in ./tests/misc.nix.
111+ * For more examples see the test cases in ./tests.nix.
113 toINI = {
113 toINI = {
114 # apply transformations (e.g. escapes) to section names
114 # apply transformations (e.g. escapes) to section names
@@ -130,51 +130,6 @@ rec {
130 # map input to ini sections
130 # map input to ini sections
131 mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
131 mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
133− /* Generate an INI-style config file from an attrset
134− * specifying the global section (no header), and an
135− * attrset of sections to an attrset of key-value pairs.
137− * generators.toINIWithGlobalSection {} {
139− * someGlobalKey = "hi";
142− * foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
143− * baz = { "also, integers" = 42; };
149− *> also, integers=42
153− *> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
155− * The mk* configuration attributes can generically change
156− * the way sections and key-value strings are generated.
158− * For more examples see the test cases in ./tests/misc.nix.
160− * If you don’t need a global section, you can also use
161− * `generators.toINI` directly, which only takes
162− * the part in `sections`.
164− toINIWithGlobalSection = {
165− # apply transformations (e.g. escapes) to section names
166− mkSectionName ? (name: libStr.escape [ "[" "]" ] name),
167− # format a setting line from key and value
168− mkKeyValue ? mkKeyValueDefault {} "=",
169− # allow lists as values for duplicate keys
170− listsAsDuplicateKeys ? false
171− }: { globalSection, sections }:
172− ( if globalSection == {}
174− else (toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } globalSection)
176− + (toINI { inherit mkSectionName mkKeyValue listsAsDuplicateKeys; } sections);
178 /* Generate a git-config file from an attrset.
133 /* Generate a git-config file from an attrset.
180 * It has two major differences from the regular INI format:
135 * It has two major differences from the regular INI format:
@@ -126,18 +126,4 @@ rec {
126 lib.warn "getLicenseFromSpdxId: No license matches the given SPDX ID: ${licstr}"
126 lib.warn "getLicenseFromSpdxId: No license matches the given SPDX ID: ${licstr}"
127 { shortName = licstr; }
127 { shortName = licstr; }
130− /* Get the path to the main program of a derivation with either
131− meta.mainProgram or pname or name
133− Type: getExe :: derivation -> string
137− => "/nix/store/g124820p9hlv4lj8qplzxw1c44dxaw1k-hello-2.12/bin/hello"
138− getExe pkgs.mustache-go
139− => "/nix/store/am9ml4f4ywvivxnkiaqwr0hyxka1xjsf-mustache-go-1.3.0/bin/mustache"
142− "${lib.getBin x}/bin/${x.meta.mainProgram or (lib.getName x)}";
@@ -46,7 +46,6 @@ let
47 showOption
47 showOption
48 unknownModule
48 unknownModule
52 showDeclPrefix = loc: decl: prefix:
51 showDeclPrefix = loc: decl: prefix:
@@ -113,10 +112,6 @@ rec {
113 args ? {}
112 args ? {}
114 , # This would be remove in the future, Prefer _module.check option instead.
113 , # This would be remove in the future, Prefer _module.check option instead.
115 check ? true
114 check ? true
116− # Internal variable to avoid `_key` collisions regardless
117− # of `extendModules`. Used in `submoduleWith`.
118− # Test case: lib/tests/modules, "168767"
119− , extensionOffset ? 0
122 withWarnings = x:
117 withWarnings = x:
@@ -145,7 +140,7 @@ rec {
145 # this module is used, to avoid conflicts and allow chaining of
140 # this module is used, to avoid conflicts and allow chaining of
146 # extendModules.
141 # extendModules.
147 internalModule = rec {
142 internalModule = rec {
148− _file = "lib/modules.nix";
143+ _file = ./modules.nix;
150 key = _file;
145 key = _file;
@@ -158,94 +153,8 @@ rec {
158 # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
153 # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
159 # start a download when `pkgs` wasn't evaluated.
154 # start a download when `pkgs` wasn't evaluated.
160 type = types.lazyAttrsOf types.raw;
155 type = types.lazyAttrsOf types.raw;
161− # Only render documentation once at the root of the option tree,
162− # not for all individual submodules.
163− # Allow merging option decls to make this internal regardless.
165− then null # unset => visible
166− else "internal"} = true;
156+ internal = true;
167− # TODO: Change the type of this option to a submodule with a
168− # freeformType, so that individual arguments can be documented
170− description = ''
157+ description = "Arguments passed to each module.";
171− Additional arguments passed to each module in addition to ones
172− like <literal>lib</literal>, <literal>config</literal>,
173− and <literal>pkgs</literal>, <literal>modulesPath</literal>.
176− This option is also available to all submodules. Submodules do not
177− inherit args from their parent module, nor do they provide args to
178− their parent module or sibling submodules. The sole exception to
179− this is the argument <literal>name</literal> which is provided by
180− parent modules to a submodule and contains the attribute name
181− the submodule is bound to, or a unique generated name if it is
182− not bound to an attribute.
185− Some arguments are already passed by default, of which the
186− following <emphasis>cannot</emphasis> be changed with this option:
190− <varname>lib</varname>: The nixpkgs library.
195− <varname>config</varname>: The results of all options after merging the values from all modules together.
200− <varname>options</varname>: The options declared in all modules.
205− <varname>specialArgs</varname>: The <literal>specialArgs</literal> argument passed to <literal>evalModules</literal>.
210− All attributes of <varname>specialArgs</varname>
213− Whereas option values can generally depend on other option values
214− thanks to laziness, this does not apply to <literal>imports</literal>, which
215− must be computed statically before anything else.
218− For this reason, callers of the module system can provide <literal>specialArgs</literal>
219− which are available during import resolution.
222− For NixOS, <literal>specialArgs</literal> includes
223− <varname>modulesPath</varname>, which allows you to import
224− extra modules from the nixpkgs package tree without having to
225− somehow make the module aware of the location of the
226− <literal>nixpkgs</literal> or NixOS directories.
228− { modulesPath, ... }: {
230− (modulesPath + "/profiles/minimal.nix")
239− For NixOS, the default value for this option includes at least this argument:
243− <varname>pkgs</varname>: The nixpkgs package set according to
244− the <option>nixpkgs.pkgs</option> option.
251 _module.check = mkOption {
160 _module.check = mkOption {
@@ -345,17 +254,15 @@ rec {
345 modules ? [],
254 modules ? [],
346 specialArgs ? {},
255 specialArgs ? {},
347 prefix ? [],
256 prefix ? [],
348− extensionOffset ? length modules,
350 evalModules (evalModulesArgs // {
258 evalModules (evalModulesArgs // {
351 modules = regularModules ++ modules;
259 modules = regularModules ++ modules;
352 specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
260 specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
353 prefix = extendArgs.prefix or evalModulesArgs.prefix;
261 prefix = extendArgs.prefix or evalModulesArgs.prefix;
354− inherit extensionOffset;
357 type = lib.types.submoduleWith {
264 type = lib.types.submoduleWith {
358− inherit modules specialArgs extensionOffset;
265+ inherit modules specialArgs;
361 result = withWarnings {
268 result = withWarnings {
@@ -17,7 +17,6 @@ rec {
23 parseDrvName
22 parseDrvName
@@ -254,7 +253,10 @@ rec {
256 hasInfix = infix: content:
255 hasInfix = infix: content:
257− builtins.match ".*${escapeRegex infix}.*" "${content}" != null;
256+ let
257+ drop = x: substring 1 (stringLength x) x;
258+ in hasPrefix infix content
259+ || content != "" && hasInfix infix (drop content);
259 /* Convert a string to a list of characters (i.e. singleton strings).
261 /* Convert a string to a list of characters (i.e. singleton strings).
260 This allows you to, e.g., map a function over each character. However,
262 This allows you to, e.g., map a function over each character. However,
@@ -325,65 +327,6 @@ rec {
326 escapeShellArgs = concatMapStringsSep " " escapeShellArg;
328 escapeShellArgs = concatMapStringsSep " " escapeShellArg;
328− /* Test whether the given name is a valid POSIX shell variable name.
330− Type: string -> bool
333− isValidPosixName "foo_bar000"
335− isValidPosixName "0-bad.jpg"
338− isValidPosixName = name: match "[a-zA-Z_][a-zA-Z0-9_]*" name != null;
340− /* Translate a Nix value into a shell variable declaration, with proper escaping.
342− Supported value types are strings (mapped to regular variables), lists of strings
343− (mapped to Bash-style arrays) and attribute sets of strings (mapped to Bash-style
344− associative arrays). Note that "strings" include string-coercible values like paths.
346− Strings are translated into POSIX sh-compatible code; lists and attribute sets
347− assume a shell that understands Bash syntax (e.g. Bash or ZSH).
349− Type: string -> (string | listOf string | attrsOf string) -> string
353− ${toShellVar "foo" "some string"}
354− [[ "$foo" == "some string" ]]
357− toShellVar = name: value:
358− lib.throwIfNot (isValidPosixName name) "toShellVar: ${name} is not a valid shell variable name" (
359− if isAttrs value then
360− "declare -A ${name}=(${
361− concatStringsSep " " (lib.mapAttrsToList (n: v:
362− "[${escapeShellArg n}]=${escapeShellArg v}"
365− else if isList value then
366− "declare -a ${name}=(${escapeShellArgs value})"
368− "${name}=${escapeShellArg value}"
371− /* Translate an attribute set into corresponding shell variable declarations
374− Type: attrsOf (string | listOf string | attrsOf string) -> string
381− ${toShellVars { inherit foo bar; }}
382− [[ "$foo" == "$bar" ]]
385− toShellVars = vars: concatStringsSep "\n" (lib.mapAttrsToList toShellVar vars);
387 /* Turn a string into a Nix expression representing that string
330 /* Turn a string into a Nix expression representing that string
389 Type: string -> string
332 Type: string -> string
@@ -813,14 +756,7 @@ rec {
813 sanitizeDerivationName pkgs.hello
756 sanitizeDerivationName pkgs.hello
814 => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10"
757 => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10"
816− sanitizeDerivationName =
759+ sanitizeDerivationName = string: lib.pipe string [
817− let okRegex = match "[[:alnum:]+_?=-][[:alnum:]+._?=-]*";
820− # First detect the common case of already valid strings, to speed those up
821− if stringLength string <= 207 && okRegex string != null
822− then unsafeDiscardStringContext string
823− else lib.pipe string [
824 # Get rid of string context. This is safe under the assumption that the
760 # Get rid of string context. This is safe under the assumption that the
825 # resulting string is only used as a derivation name
761 # resulting string is only used as a derivation name
826 unsafeDiscardStringContext
762 unsafeDiscardStringContext
lib/systems/doubles.nix−2
@@ -74,8 +74,6 @@ in {
74 mips = filterDoubles predicates.isMips;
74 mips = filterDoubles predicates.isMips;
75 mmix = filterDoubles predicates.isMmix;
75 mmix = filterDoubles predicates.isMmix;
76 riscv = filterDoubles predicates.isRiscV;
76 riscv = filterDoubles predicates.isRiscV;
77− riscv32 = filterDoubles predicates.isRiscV32;
78− riscv64 = filterDoubles predicates.isRiscV64;
79 vc4 = filterDoubles predicates.isVc4;
77 vc4 = filterDoubles predicates.isVc4;
80 or1k = filterDoubles predicates.isOr1k;
78 or1k = filterDoubles predicates.isOr1k;
81 m68k = filterDoubles predicates.isM68k;
79 m68k = filterDoubles predicates.isM68k;
lib/systems/inspect.nix−3
@@ -13,7 +13,6 @@ rec {
13 isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
13 isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
14 isPowerPC = { cpu = cpuTypes.powerpc; };
14 isPowerPC = { cpu = cpuTypes.powerpc; };
15 isPower = { cpu = { family = "power"; }; };
15 isPower = { cpu = { family = "power"; }; };
16− isPower64 = { cpu = { family = "power"; bits = 64; }; };
17 isx86 = { cpu = { family = "x86"; }; };
16 isx86 = { cpu = { family = "x86"; }; };
18 isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
17 isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
19 isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
18 isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
@@ -24,8 +23,6 @@ rec {
24 isMips64n64 = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "64"; }; };
23 isMips64n64 = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "64"; }; };
25 isMmix = { cpu = { family = "mmix"; }; };
24 isMmix = { cpu = { family = "mmix"; }; };
26 isRiscV = { cpu = { family = "riscv"; }; };
25 isRiscV = { cpu = { family = "riscv"; }; };
27− isRiscV32 = { cpu = { family = "riscv"; bits = 32; }; };
28− isRiscV64 = { cpu = { family = "riscv"; bits = 64; }; };
29 isSparc = { cpu = { family = "sparc"; }; };
26 isSparc = { cpu = { family = "sparc"; }; };
30 isWasm = { cpu = { family = "wasm"; }; };
27 isWasm = { cpu = { family = "wasm"; }; };
31 isMsp430 = { cpu = { family = "msp430"; }; };
28 isMsp430 = { cpu = { family = "msp430"; }; };
lib/systems/platforms.nix+3−3
@@ -3,7 +3,7 @@
3# targetPlatform, etc) containing at least the minimal set of attrs
3# targetPlatform, etc) containing at least the minimal set of attrs
4# required (see types.parsedPlatform in lib/systems/parse.nix). This
4# required (see types.parsedPlatform in lib/systems/parse.nix). This
5# file takes an already-valid platform and further elaborates it with
5# file takes an already-valid platform and further elaborates it with
6−# optional fields; currently these are: linux-kernel, gcc, and rustc.
6+# optional fields such as linux-kernel, gcc, etc.
@@ -500,7 +500,7 @@ rec {
500 # based on:
500 # based on:
501 # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html
501 # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html
502 # https://gmplib.org/~tege/qemu.html#mips64-debian
502 # https://gmplib.org/~tege/qemu.html#mips64-debian
503− mips64el-qemu-linux-gnuabi64 = {
503+ mips64el-qemu-linux-gnuabi64 = (import ./examples).mips64el-linux-gnuabi64 // {
504 linux-kernel = {
504 linux-kernel = {
505 name = "mips64el";
505 name = "mips64el";
506 baseConfig = "64r2el_defconfig";
506 baseConfig = "64r2el_defconfig";
@@ -568,5 +568,5 @@ rec {
569 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
569 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
571− else { };
571+ else pc;
lib/tests/flakes/subflakeTest/flake.nixdeleted−8
@@ -1,8 +0,0 @@
2− outputs = { self, subflake, callLocklessFlake }: rec {
3− x = (callLocklessFlake {
lib/tests/flakes/subflakeTest/subflake/flake.nixdeleted−5
@@ -22,15 +22,6 @@ in
27− testCallLocklessFlake = {
28− expr = callLocklessFlake {
29− path = ./flakes/subflakeTest;
30− inputs = { subflake = ./flakes/subflakeTest/subflake; inherit callLocklessFlake; };
32− expected = { x = 1; outPath = ./flakes/subflakeTest; };
@@ -260,56 +251,6 @@ runTests {
260 expected = ""test" 'test' < & >";
251 expected = ""test" 'test' < & >";
266− STRing01 = "just a 'string'";
267− _array_ = [ "with" "more strings" ];
268− assoc."with some" = ''
275− STRing01='just a '\'''string'\''''
276− declare -a _array_=('with' 'more strings')
277− declare -A assoc=(['with some']='strings
283− testHasInfixFalse = {
284− expr = hasInfix "c" "abde";
288− testHasInfixTrue = {
289− expr = hasInfix "c" "abcde";
293− testHasInfixDerivation = {
294− expr = hasInfix "hello" (import ../.. { system = "x86_64-linux"; }).hello;
298− testHasInfixPath = {
299− expr = hasInfix "tests" ./.;
303− testHasInfixPathStoreDir = {
304− expr = hasInfix builtins.storeDir ./.;
308− testHasInfixToString = {
309− expr = hasInfix "a" { __toString = _: "a"; };
315 testFilter = {
256 testFilter = {
@@ -530,66 +471,6 @@ runTests {
533− testToINIWithGlobalSectionEmpty = {
534− expr = generators.toINIWithGlobalSection {} {
544− testToINIWithGlobalSectionGlobalEmptyIsTheSameAsToINI =
549− x = "Me-se JarJar Binx";
552− "he\\h=he" = "this is okay";
557− generators.toINIWithGlobalSection {} {
559− sections = sections;
561− expected = generators.toINI {} sections;
564− testToINIWithGlobalSectionFull = {
565− expr = generators.toINIWithGlobalSection {} {
573− x = "Me-se JarJar Binx";
576− "he\\h=he" = "this is okay";
585− he\h\=he=this is okay
593 /* right now only invocation check */
474 /* right now only invocation check */
594 testToJSONSimple =
475 testToJSONSimple =
595 let val = {
476 let val = {
@@ -768,11 +649,6 @@ runTests {
768 expected = "foo";
649 expected = "foo";
771− testSanitizeDerivationNameUnicode = testSanitizeDerivationName {
776 testSanitizeDerivationNameAscii = testSanitizeDerivationName {
652 testSanitizeDerivationNameAscii = testSanitizeDerivationName {
777 name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
653 name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
778 expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-";
654 expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-";
@@ -815,7 +691,7 @@ runTests {
816 locs = filter (o: ! o.internal) (optionAttrSetToDocList options);
692 locs = filter (o: ! o.internal) (optionAttrSetToDocList options);
817 in map (o: o.loc) locs;
693 in map (o: o.loc) locs;
818− expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
694+ expected = [ [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
821 testCartesianProductOfEmptySet = {
697 testCartesianProductOfEmptySet = {
@@ -293,7 +293,7 @@ checkConfigOutput '^"a c"$' config.result ./functionTo/merging-attrs.nix
294# moduleType
294# moduleType
295checkConfigOutput '^"a b"$' config.resultFoo ./declare-variants.nix ./define-variant.nix
295checkConfigOutput '^"a b"$' config.resultFoo ./declare-variants.nix ./define-variant.nix
296−checkConfigOutput '^"a b y z"$' config.resultFooBar ./declare-variants.nix ./define-variant.nix
296+checkConfigOutput '^"a y z"$' config.resultFooBar ./declare-variants.nix ./define-variant.nix
297checkConfigOutput '^"a b c"$' config.resultFooFoo ./declare-variants.nix ./define-variant.nix
297checkConfigOutput '^"a b c"$' config.resultFooFoo ./declare-variants.nix ./define-variant.nix
299## emptyValue's
299## emptyValue's
@@ -327,10 +327,6 @@ checkConfigError 'The option .theOption.nested. in .other.nix. is already declar
327# Test that types.optionType leaves types untouched as long as they don't need to be merged
327# Test that types.optionType leaves types untouched as long as they don't need to be merged
328checkConfigOutput 'ok' config.freeformItems.foo.bar ./adhoc-freeformType-survives-type-merge.nix
328checkConfigOutput 'ok' config.freeformItems.foo.bar ./adhoc-freeformType-survives-type-merge.nix
330−# Anonymous submodules don't get nixed by import resolution/deduplication
331−# because of an `extendModules` bug, issue 168767.
332−checkConfigOutput '^1$' config.sub.specialisation.value ./extendModules-168767-imports.nix
335====== module tests ======
331====== module tests ======
336$pass Pass
332$pass Pass
lib/tests/modules/extendModules-168767-imports.nixdeleted−41
@@ -1,41 +0,0 @@
10− options.sub = mkOption {
12− type = types.submodule (
18− options.value = mkOption {
22− options.specialisation = mkOption {
27− specialisation = mkOverride 0 { };
37− { config.sub.value = 1; }
@@ -19,9 +19,6 @@ with lib.systems.doubles; lib.runTests {
19 testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ];
19 testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ];
20 testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ];
20 testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ];
21 testmmix = mseteq mmix [ "mmix-mmixware" ];
21 testmmix = mseteq mmix [ "mmix-mmixware" ];
22− testriscv = mseteq riscv [ "riscv32-linux" "riscv64-linux" "riscv32-netbsd" "riscv64-netbsd" "riscv32-none" "riscv64-none" ];
23− testriscv32 = mseteq riscv32 [ "riscv32-linux" "riscv32-netbsd" "riscv32-none" ];
24− testriscv64 = mseteq riscv64 [ "riscv64-linux" "riscv64-netbsd" "riscv64-none" ];
25 testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-genode" "x86_64-redox" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ];
22 testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-genode" "x86_64-redox" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ];
27 testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
24 testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
@@ -568,11 +568,6 @@ rec {
568 { modules
568 { modules
569 , specialArgs ? {}
569 , specialArgs ? {}
570 , shorthandOnlyDefinesConfig ? false
570 , shorthandOnlyDefinesConfig ? false
572− # Internal variable to avoid `_key` collisions regardless
573− # of `extendModules`. Wired through by `evalModules`.
574− # Test case: lib/tests/modules, "168767"
575− , extensionOffset ? 0
578 inherit (lib.modules) evalModules;
573 inherit (lib.modules) evalModules;
@@ -584,11 +579,11 @@ rec {
584 allModules = defs: imap1 (n: { value, file }:
579 allModules = defs: imap1 (n: { value, file }:
585 if isFunction value
580 if isFunction value
586 then setFunctionArgs
581 then setFunctionArgs
587− (args: lib.modules.unifyModuleSyntax file "${toString file}-${toString (n + extensionOffset)}" (value args))
582+ (args: lib.modules.unifyModuleSyntax file "${toString file}-${toString n}" (value args))
588 (functionArgs value)
583 (functionArgs value)
589 else if isAttrs value
584 else if isAttrs value
591− lib.modules.unifyModuleSyntax file "${toString file}-${toString (n + extensionOffset)}" (shorthandToModule value)
586+ lib.modules.unifyModuleSyntax file "${toString file}-${toString n}" (shorthandToModule value)
592 else value
587 else value
@@ -625,7 +620,6 @@ rec {
625 (base.extendModules {
620 (base.extendModules {
626 modules = [ { _module.args.name = last loc; } ] ++ allModules defs;
621 modules = [ { _module.args.name = last loc; } ] ++ allModules defs;
627 prefix = loc;
622 prefix = loc;
628− extensionOffset = extensionOffset + length defs;
629 }).config;
623 }).config;
630 emptyValue = { value = {}; };
624 emptyValue = { value = {}; };
631 getSubOptions = prefix: (base.extendModules
625 getSubOptions = prefix: (base.extendModules
maintainers/maintainer-list.nix+37−252
@@ -380,12 +380,6 @@
380 githubId = 209175;
380 githubId = 209175;
381 name = "Alesya Huzik";
381 name = "Alesya Huzik";
384− email = "aidalgol+nixpkgs@fastmail.net";
385− github = "aidalgol";
387− name = "Aidan Gauland";
390 email = "aij+git@mrph.org";
384 email = "aij+git@mrph.org";
391 github = "aij";
385 github = "aij";
@@ -525,12 +519,6 @@
525 githubId = 38869148;
519 githubId = 38869148;
526 name = "Alex Eyre";
520 name = "Alex Eyre";
529− email = "aliasgram@gmail.com";
532− name = "Alias Gram";
534 alibabzo = {
522 alibabzo = {
535 email = "alistair.bill@gmail.com";
523 email = "alistair.bill@gmail.com";
536 github = "alibabzo";
524 github = "alibabzo";
@@ -681,18 +669,6 @@
681 githubId = 858965;
669 githubId = 858965;
682 name = "Andrew Morsillo";
670 name = "Andrew Morsillo";
685− name = "Tris Emmy Wilson";
686− email = "tris@tris.fyi";
687− github = "an-empty-string";
691− email = "aipopov@live.ru";
692− github = "AnatolyPopov";
694− name = "Anatolii Popov";
696 andehen = {
672 andehen = {
697 email = "git@andehen.net";
673 email = "git@andehen.net";
698 github = "andehen";
674 github = "andehen";
@@ -841,13 +817,6 @@
841 githubId = 5327697;
817 githubId = 5327697;
842 name = "Anatolii Prylutskyi";
818 name = "Anatolii Prylutskyi";
845− email = "mail@anselmschueler.com";
846− github = "schuelermine";
847− githubId = 48802534;
848− name = "Anselm Schüler";
849− matrix = "@schuelermine:matrix.org";
851 antoinerg = {
820 antoinerg = {
852 email = "roygobeil.antoine@gmail.com";
821 email = "roygobeil.antoine@gmail.com";
853 github = "antoinerg";
822 github = "antoinerg";
@@ -1068,8 +1037,8 @@
1068 name = "Kirill Boltaev";
1037 name = "Kirill Boltaev";
1070 ashley = {
1039 ashley = {
1071− email = "ashley@kira64.xyz";
1040+ email = "personavinny@protonmail.com";
1072− github = "kira64xyz";
1041+ github = "paranoidcat";
1073 githubId = 84152630;
1042 githubId = 84152630;
1074 name = "Ashley Chiara";
1043 name = "Ashley Chiara";
@@ -1409,12 +1378,6 @@
1409 githubId = 164148;
1378 githubId = 164148;
1410 name = "Ben Darwin";
1379 name = "Ben Darwin";
1413− email = "bdd@mindcast.org";
1416− name = "Berk D. Demir";
1418 bdesham = {
1381 bdesham = {
1419 email = "benjamin@esham.io";
1382 email = "benjamin@esham.io";
1420 github = "bdesham";
1383 github = "bdesham";
@@ -1831,12 +1794,6 @@
1831 githubId = 7214361;
1794 githubId = 7214361;
1832 name = "Roman Gerasimenko";
1795 name = "Roman Gerasimenko";
1835− email = "builditluc@icloud.com";
1836− github = "builditluc";
1837− githubId = 37375448;
1840 bburdette = {
1797 bburdette = {
1841 email = "bburdette@protonmail.com";
1798 email = "bburdette@protonmail.com";
1842 github = "bburdette";
1799 github = "bburdette";
@@ -2086,12 +2043,6 @@
2086 githubId = 8228888;
2043 githubId = 8228888;
2087 name = "Charlie Hanley";
2044 name = "Charlie Hanley";
2090− email = "charlesbaynham@gmail.com";
2091− github = "charlesbaynham";
2092− githubId = 4397637;
2093− name = "Charles Baynham";
2095 CharlesHD = {
2046 CharlesHD = {
2096 email = "charleshdespointes@gmail.com";
2047 email = "charleshdespointes@gmail.com";
2097 github = "CharlesHD";
2048 github = "CharlesHD";
@@ -2132,6 +2083,12 @@
2132 githubId = 18648043;
2083 githubId = 18648043;
2133 name = "Daniel Cartwright";
2084 name = "Daniel Cartwright";
2087+ email = "okinan@protonmail.com";
2088+ github = "chiiruno";
2089+ githubId = 30435868;
2090+ name = "Okina Matara";
2135 Chili-Man = {
2092 Chili-Man = {
2136 email = "dr.elhombrechile@gmail.com";
2093 email = "dr.elhombrechile@gmail.com";
2137 name = "Diego Rodriguez";
2094 name = "Diego Rodriguez";
@@ -2303,7 +2260,6 @@
2303 fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
2260 fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
2305 name = "ckie";
2262 name = "ckie";
2306− matrix = "@ckie:ckie.dev";
2308 clkamp = {
2264 clkamp = {
2309 email = "c@lkamp.de";
2265 email = "c@lkamp.de";
@@ -3881,13 +3837,6 @@
3881 githubId = 222467;
3837 githubId = 222467;
3882 name = "Dmitry Ivanov";
3838 name = "Dmitry Ivanov";
3885− name = "Ethin Probst";
3886− email = "harlydavidsen@gmail.com";
3887− matrix = "@ethindp:the-gdn.net";
3888− github = "ethindp";
3889− githubId = 8030501;
3891 Etjean = {
3840 Etjean = {
3892 email = "et.jean@outlook.fr";
3841 email = "et.jean@outlook.fr";
3893 github = "Etjean";
3842 github = "Etjean";
@@ -4124,18 +4073,11 @@
4124 matrix = "@felschr:matrix.org";
4073 matrix = "@felschr:matrix.org";
4125 github = "felschr";
4074 github = "felschr";
4126 githubId = 3314323;
4075 githubId = 3314323;
4127− name = "Felix Schröter";
4076+ name = "Felix Tenley";
4128− keys = [
4077+ keys = [{
4131− longkeyid = "ed25519/0x910ACB9F6BD26F58";
4078+ longkeyid = "ed25519/0x910ACB9F6BD26F58";
4132− fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
4079+ fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
4135− longkeyid = "ed25519/0x671E39E6744C807D";
4136− fingerprint = "7E08 6842 0934 AA1D 6821 1F2A 671E 39E6 744C 807D";
4140 ffinkdevs = {
4082 ffinkdevs = {
4141 email = "fink@h0st.space";
4083 email = "fink@h0st.space";
@@ -4560,12 +4502,6 @@
4560 githubId = 3217744;
4502 githubId = 3217744;
4561 name = "Peter Ferenczy";
4503 name = "Peter Ferenczy";
4564− name = "Kasper Kondzielski";
4565− email = "kghost0@gmail.com";
4566− github = "ghostbuster91";
4567− githubId = 5662622;
4569 ghuntley = {
4505 ghuntley = {
4570 email = "ghuntley@ghuntley.com";
4506 email = "ghuntley@ghuntley.com";
4571 github = "ghuntley";
4507 github = "ghuntley";
@@ -4720,12 +4656,6 @@
4720 githubId = 4656860;
4656 githubId = 4656860;
4721 name = "Gaute Ravndal";
4657 name = "Gaute Ravndal";
4724− email = "grayson@graysonhead.net";
4725− github = "graysonhead";
4726− githubId = 6179496;
4727− name = "Grayson Head";
4729 grburst = {
4659 grburst = {
4730 email = "GRBurst@protonmail.com";
4660 email = "GRBurst@protonmail.com";
4731 github = "GRBurst";
4661 github = "GRBurst";
@@ -4754,12 +4684,6 @@
4754 githubId = 201997;
4684 githubId = 201997;
4755 name = "Eric Seidel";
4685 name = "Eric Seidel";
4758− name = "grindhold";
4759− email = "grindhold+nix@skarphed.org";
4760− github = "grindhold";
4761− githubId = 2592640;
4763 gspia = {
4687 gspia = {
4764 email = "iahogsp@gmail.com";
4688 email = "iahogsp@gmail.com";
4765 github = "gspia";
4689 github = "gspia";
@@ -4778,12 +4702,6 @@
4778 githubId = 343415;
4702 githubId = 343415;
4779 name = "Greg Roodt";
4703 name = "Greg Roodt";
4782− email = "grnnja@gmail.com";
4784− githubId = 31556469;
4785− name = "Prem Netsuwan";
4787 gruve-p = {
4705 gruve-p = {
4788 email = "groestlcoin@gmail.com";
4706 email = "groestlcoin@gmail.com";
4789 github = "gruve-p";
4707 github = "gruve-p";
@@ -5499,12 +5417,6 @@
5499 githubId = 41924494;
5417 githubId = 41924494;
5500 name = "Ivar";
5418 name = "Ivar";
5503− email = "tracnar@gmail.com";
5505− githubId = 4035835;
5508 ixmatus = {
5420 ixmatus = {
5509 email = "parnell@digitalmentat.com";
5421 email = "parnell@digitalmentat.com";
5510 github = "ixmatus";
5422 github = "ixmatus";
@@ -5649,12 +5561,6 @@
5649 githubId = 488556;
5561 githubId = 488556;
5650 name = "Javier Aguirre";
5562 name = "Javier Aguirre";
5653− name = "Jayesh Bhoot";
5654− email = "jayesh@bhoot.sh";
5655− github = "jayesh-bhoot";
5656− githubId = 1915507;
5658 jb55 = {
5564 jb55 = {
5659 email = "jb55@jb55.com";
5565 email = "jb55@jb55.com";
5660 github = "jb55";
5566 github = "jb55";
@@ -6885,6 +6791,12 @@
6885 githubId = 99639;
6791 githubId = 99639;
6886 name = "Pawel Kruszewski";
6792 name = "Pawel Kruszewski";
6795+ email = "tomasz.kontusz@gmail.com";
6796+ github = "ktosiek";
6798+ name = "Tomasz Kontusz";
6888 kubukoz = {
6800 kubukoz = {
6889 email = "kubukoz@gmail.com";
6801 email = "kubukoz@gmail.com";
6890 github = "kubukoz";
6802 github = "kubukoz";
@@ -7218,13 +7130,6 @@
7218 githubId = 1769386;
7130 githubId = 1769386;
7219 name = "Liam Diprose";
7131 name = "Liam Diprose";
7222− email = "jared@perrycode.com";
7223− github = "libjared";
7224− githubId = 3746656;
7225− matrix = "@libjared:matrix.org";
7226− name = "Jared Perry";
7228 liff = {
7133 liff = {
7229 email = "liff@iki.fi";
7134 email = "liff@iki.fi";
7230 github = "liff";
7135 github = "liff";
@@ -7255,13 +7160,6 @@
7255 githubId = 714;
7160 githubId = 714;
7256 name = "Lily Ballard";
7161 name = "Lily Ballard";
7258− lilyinstarlight = {
7259− email = "lily@lily.flowers";
7260− matrix = "@lily:lily.flowers";
7261− github = "lilyinstarlight";
7263− name = "Lily Foster";
7265 limeytexan = {
7163 limeytexan = {
7266 email = "limeytexan@gmail.com";
7164 email = "limeytexan@gmail.com";
7267 github = "limeytexan";
7165 github = "limeytexan";
@@ -7390,7 +7288,7 @@
7390 name = "Anthony Lodi";
7288 name = "Anthony Lodi";
7392 loicreynier = {
7290 loicreynier = {
7393− email = "loic@loicreynier.fr";
7291+ email = "loic@loireynier.fr";
7394 github = "loicreynier";
7292 github = "loicreynier";
7395 githubId = 88983487;
7293 githubId = 88983487;
7396 name = "Loïc Reynier";
7294 name = "Loïc Reynier";
@@ -8181,12 +8079,6 @@
8181 githubId = 20536514;
8079 githubId = 20536514;
8182 name = "Magdalena Haselsteiner";
8080 name = "Magdalena Haselsteiner";
8185− email = "mh182@chello.at";
8187− githubId = 9980864;
8188− name = "Max Hofer";
8190 mic92 = {
8082 mic92 = {
8191 email = "joerg@thalheim.io";
8083 email = "joerg@thalheim.io";
8192 matrix = "@mic92:nixos.dev";
8084 matrix = "@mic92:nixos.dev";
@@ -8360,17 +8252,6 @@
8360 githubId = 1776903;
8252 githubId = 1776903;
8361 name = "Andrew Abbott";
8253 name = "Andrew Abbott";
8364− email = "eu@misterio.me";
8365− github = "misterio77";
8366− githubId = 5727578;
8367− matrix = "@misterio:matrix.org";
8368− name = "Gabriel Fontes";
8370− longkeyid = "rsa3072/0x245CAB70B4C225E9";
8371− fingerprint = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
8374 mitchmindtree = {
8255 mitchmindtree = {
8375 email = "mail@mitchellnordine.com";
8256 email = "mail@mitchellnordine.com";
8376 github = "mitchmindtree";
8257 github = "mitchmindtree";
@@ -8922,12 +8803,6 @@
8922 githubId = 3747396;
8803 githubId = 3747396;
8923 name = "Nathan Isom";
8804 name = "Nathan Isom";
8926− email = "nix@neil.mayhew.name";
8927− github = "neilmayhew";
8929− name = "Neil Mayhew";
8931 nelsonjeppesen = {
8806 nelsonjeppesen = {
8932 email = "nix@jeppesen.io";
8807 email = "nix@jeppesen.io";
8933 github = "NelsonJeppesen";
8808 github = "NelsonJeppesen";
@@ -10035,12 +9910,6 @@
10035 fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
9910 fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
10039− email = "xdjiaxd@gmail.com";
10040− github = "podocarp";
10041− githubId = 10473184;
10042− name = "Jia Xiaodong";
10044 polendri = {
9913 polendri = {
10045 email = "paul@ijj.li";
9914 email = "paul@ijj.li";
10046 github = "polendri";
9915 github = "polendri";
@@ -10300,12 +10169,6 @@
10300 githubId = 115877;
10169 githubId = 115877;
10301 name = "Kenny Shen";
10170 name = "Kenny Shen";
10304− email = "quaggy@gmail.com";
10307− name = "Jonathan Wright";
10309 queezle = {
10172 queezle = {
10310 email = "git@queezle.net";
10173 email = "git@queezle.net";
10311 github = "qzle";
10174 github = "qzle";
@@ -11126,22 +10989,28 @@
11126 githubId = 132835;
10989 githubId = 132835;
11127 name = "Samuel Dionne-Riel";
10990 name = "Samuel Dionne-Riel";
10993+ email = "s@muel.gr";
10994+ github = "samuelgrf";
10995+ githubId = 67663538;
10996+ name = "Samuel Gräfenstein";
10999+ longkeyid = "rsa4096/0xDE75F92E318123F0";
11000+ fingerprint = "6F2E 2A90 423C 8111 BFF2 895E DE75 F92E 3181 23F0";
11003+ longkeyid = "rsa4096/0xEF76A063F15C63C8";
11004+ fingerprint = "FF24 5832 8FAF 4660 18C6 186E EF76 A063 F15C 63C8";
11129 samuelrivas = {
11008 samuelrivas = {
11130 email = "samuelrivas@gmail.com";
11009 email = "samuelrivas@gmail.com";
11131 github = "samuelrivas";
11010 github = "samuelrivas";
11132 githubId = 107703;
11011 githubId = 107703;
11133 name = "Samuel Rivas";
11012 name = "Samuel Rivas";
11136− name = "Samyak Sarnayak";
11137− email = "samyak201@gmail.com";
11138− github = "Samyak2";
11139− githubId = 34161949;
11141− longkeyid = "rsa4096/0x365873F2F0C6153B";
11142− fingerprint = "155C F413 0129 C058 9A5F 5524 3658 73F2 F0C6 153B";
11145 sander = {
11014 sander = {
11146 email = "s.vanderburg@tudelft.nl";
11015 email = "s.vanderburg@tudelft.nl";
11147 github = "svanderburg";
11016 github = "svanderburg";
@@ -11248,16 +11117,6 @@
11248 email = "schristopher@konputa.com";
11117 email = "schristopher@konputa.com";
11249 name = "Scott Christopher";
11118 name = "Scott Christopher";
11251− sciencentistguy = {
11252− email = "jamie@quigley.xyz";
11253− name = "Jamie Quigley";
11254− github = "Sciencentistguy";
11255− githubId = 4983935;
11257− longkeyid = "rsa2048/0x8E8FF66E2AE8D970";
11258− fingerprint = "30BB FF3F AB0B BB3E 0435 F83C 8E8F F66E 2AE8 D970";
11261 scode = {
11120 scode = {
11262 email = "peter.schuller@infidyne.com";
11121 email = "peter.schuller@infidyne.com";
11263 github = "scode";
11122 github = "scode";
@@ -11368,12 +11227,6 @@
11368 githubId = 307899;
11227 githubId = 307899;
11369 name = "Gurkan Gur";
11228 name = "Gurkan Gur";
11372− email = "sb@canva.com";
11373− github = "serge-belov";
11374− githubId = 38824235;
11375− name = "Serge Belov";
11377 sersorrel = {
11230 sersorrel = {
11378 email = "ash@sorrel.sh";
11231 email = "ash@sorrel.sh";
11379 github = "sersorrel";
11232 github = "sersorrel";
@@ -11418,12 +11271,6 @@
11418 githubId = 1151264;
11271 githubId = 1151264;
11419 name = "Sebastian Graf";
11272 name = "Sebastian Graf";
11422− email = "shadaj@users.noreply.github.com";
11423− github = "shadaj";
11424− githubId = 543055;
11425− name = "Shadaj Laddad";
11427 shahrukh330 = {
11274 shahrukh330 = {
11428 email = "shahrukh330@gmail.com";
11275 email = "shahrukh330@gmail.com";
11429 github = "shahrukh330";
11276 github = "shahrukh330";
@@ -11620,12 +11467,6 @@
11620 githubId = 2770647;
11467 githubId = 2770647;
11621 name = "Simon Vandel Sillesen";
11468 name = "Simon Vandel Sillesen";
11624− email = "sir4ur0n@users.noreply.github.com";
11625− github = "sir4ur0n";
11626− githubId = 1204125;
11627− name = "sir4ur0n";
11629 siraben = {
11470 siraben = {
11630 email = "bensiraphob@gmail.com";
11471 email = "bensiraphob@gmail.com";
11631 matrix = "@siraben:matrix.org";
11472 matrix = "@siraben:matrix.org";
@@ -12063,12 +11904,6 @@
12063 githubId = 1694705;
11904 githubId = 1694705;
12064 name = "Sam Stites";
11905 name = "Sam Stites";
12067− email = "strager.nds@gmail.com";
12068− github = "strager";
12070− name = "Matthew \"strager\" Glazar";
12072 stumoss = {
11907 stumoss = {
12073 email = "samoss@gmail.com";
11908 email = "samoss@gmail.com";
12074 github = "stumoss";
11909 github = "stumoss";
@@ -12561,12 +12396,6 @@
12561 githubId = 844343;
12396 githubId = 844343;
12562 name = "Thiago K. Okada";
12397 name = "Thiago K. Okada";
12564− thibaultlemaire = {
12565− email = "thibault.lemaire@protonmail.com";
12566− github = "ThibaultLemaire";
12567− githubId = 21345269;
12568− name = "Thibault Lemaire";
12570 thibautmarty = {
12399 thibautmarty = {
12571 email = "github@thibautmarty.fr";
12400 email = "github@thibautmarty.fr";
12572 matrix = "@thibaut:thibautmarty.fr";
12401 matrix = "@thibaut:thibautmarty.fr";
@@ -12813,13 +12642,6 @@
12813 githubId = 90456;
12642 githubId = 90456;
12814 name = "Rebecca (Bex) Kelly";
12643 name = "Rebecca (Bex) Kelly";
12817− name = "Thomas Watson";
12818− email = "twatson52@icloud.com";
12819− matrix = "@tpw_rules:matrix.org";
12820− github = "tpwrules";
12821− githubId = 208010;
12823 travisbhartwell = {
12645 travisbhartwell = {
12824 email = "nafai@travishartwell.net";
12646 email = "nafai@travishartwell.net";
12825 github = "travisbhartwell";
12647 github = "travisbhartwell";
@@ -13294,12 +13116,6 @@
13294 githubId = 1771332;
13116 githubId = 1771332;
13295 name = "László Vaskó";
13117 name = "László Vaskó";
13298− email = "vmfuentes64@gmail.com";
13299− github = "vlinkz";
13300− githubId = 20145996;
13301− name = "Victor Fuentes";
13303 vlstill = {
13119 vlstill = {
13304 email = "xstill@fi.muni.cz";
13120 email = "xstill@fi.muni.cz";
13305 github = "vlstill";
13121 github = "vlstill";
@@ -13592,7 +13408,7 @@
13592 name = "Andrei Pampu";
13408 name = "Andrei Pampu";
13594 wolfangaukang = {
13410 wolfangaukang = {
13595− email = "clone.gleeful135+nixpkgs@anonaddy.me";
13411+ email = "liquid.query960@4wrd.cc";
13596 github = "wolfangaukang";
13412 github = "wolfangaukang";
13597 githubId = 8378365;
13413 githubId = 8378365;
13598 name = "P. R. d. O.";
13414 name = "P. R. d. O.";
@@ -13645,13 +13461,6 @@
13645 github = "wunderbrick";
13461 github = "wunderbrick";
13646 githubId = 52174714;
13462 githubId = 52174714;
13649− email = "72203260+wyndon@users.noreply.github.com";
13650− matrix = "@wyndon:envs.net";
13651− github = "wyndon";
13652− githubId = 72203260;
13655 wyvie = {
13464 wyvie = {
13656 email = "elijahrum@gmail.com";
13465 email = "elijahrum@gmail.com";
13657 github = "wyvie";
13466 github = "wyvie";
@@ -14211,12 +14020,6 @@
14211 github = "deifactor";
14020 github = "deifactor";
14212 githubId = 30192992;
14021 githubId = 30192992;
14215− name = "deinferno";
14216− email = "14363193+deinferno@users.noreply.github.com";
14217− github = "deinferno";
14218− githubId = 14363193;
14220 fzakaria = {
14023 fzakaria = {
14221 name = "Farid Zakaria";
14024 name = "Farid Zakaria";
14222 email = "farid.m.zakaria@gmail.com";
14025 email = "farid.m.zakaria@gmail.com";
@@ -14340,12 +14143,6 @@
14340 github = "zbioe";
14143 github = "zbioe";
14341 githubId = 7332055;
14144 githubId = 7332055;
14345− email = "linzway@qq.com";
14347− githubId = 348013;
14349 zenithal = {
14146 zenithal = {
14350 name = "zenithal";
14147 name = "zenithal";
14351 email = "i@zenithal.me";
14148 email = "i@zenithal.me";
@@ -14466,16 +14263,4 @@
14466 github = "kuwii";
14263 github = "kuwii";
14467 githubId = 10705175;
14264 githubId = 10705175;
14470− name = "Martin Elias";
14471− email = "martin+nixpkgs@elias.sx";
14472− github = "melias122";
14473− githubId = 1027766;
14476− name = "Bryan Honof";
14477− email = "bryanhonof@gmail.com";
14478− github = "bryanhonof";
14479− githubId = 5932804;
maintainers/scripts/dep-licenses.sh+1−1
@@ -9,7 +9,7 @@ tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
9exitHandler() {
9exitHandler() {
10 exitCode=$?
10 exitCode=$?
11 rm -rf "$tmp"
11 rm -rf "$tmp"
12− return $exitCode
12+ exit $exitCode
15trap "exitHandler" EXIT
15trap "exitHandler" EXIT
maintainers/scripts/haskell/merge-and-open-pr.sh+1−1
@@ -99,7 +99,7 @@ This PR is the regular merge of the \`haskell-updates\` branch into \`master\`.
100This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at [cdepillabout/nix-haskell-updates-status](https://github.com/cdepillabout/nix-haskell-updates-status).
100This branch is being continually built and tested by hydra at https://hydra.nixos.org/jobset/nixpkgs/haskell-updates. You may be able to find an up-to-date Hydra build report at [cdepillabout/nix-haskell-updates-status](https://github.com/cdepillabout/nix-haskell-updates-status).
102−We roughly aim to merge these \`haskell-updates\` PRs at least once every two weeks. See the @NixOS/haskell [team calendar](https://cloud.maralorn.de/apps/calendar/p/H6migHmKX7xHoTFa) for who is currently in charge of this branch.
102+We roughly aim to merge these \`haskell-updates\` PRs at least once every two weeks. See the @NixOS/haskell [team calendar](https://cloud.maralorn.de/apps/calendar/p/Mw5WLnzsP7fC4Zky) for who is currently in charge of this branch.
104### haskellPackages Workflow Summary
104### haskellPackages Workflow Summary
maintainers/scripts/luarocks-packages.csv+1−2
@@ -52,7 +52,7 @@ luadbi-postgresql,,,,,,
52luadbi-sqlite3,,,,,,
52luadbi-sqlite3,,,,,,
53luaepnf,,,,,,
53luaepnf,,,,,,
54luaevent,,,,,,
54luaevent,,,,,,
55−luaexpat,,,,1.4.1-1,,arobyn flosse
55+luaexpat,,,,1.3.0-1,,arobyn flosse
56luaffi,,,http://luarocks.org/dev,,,
56luaffi,,,http://luarocks.org/dev,,,
57luafilesystem,,,,1.7.0-2,,flosse
57luafilesystem,,,,1.7.0-2,,flosse
58lualogging,,,,,,
58lualogging,,,,,,
@@ -64,7 +64,6 @@ luasocket,,,,,,
64luasql-sqlite3,,,,,,vyp
64luasql-sqlite3,,,,,,vyp
65luassert,,,,,,
65luassert,,,,,,
66luasystem,,,,,,
66luasystem,,,,,,
68luautf8,,,,,,pstn
67luautf8,,,,,,pstn
69luazip,,,,,,
68luazip,,,,,,
70lua-yajl,,,,,,pstn
69lua-yajl,,,,,,pstn
maintainers/scripts/pluginupdate.py+108−135
@@ -8,7 +8,6 @@
8# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
8# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
10import argparse
10import argparse
12import functools
11import functools
13import http
12import http
14import json
13import json
@@ -29,7 +28,7 @@ from pathlib import Path
29from typing import Dict, List, Optional, Tuple, Union, Any, Callable
28from typing import Dict, List, Optional, Tuple, Union, Any, Callable
30from urllib.parse import urljoin, urlparse
29from urllib.parse import urljoin, urlparse
31from tempfile import NamedTemporaryFile
30from tempfile import NamedTemporaryFile
32−from dataclasses import dataclass, asdict
31+from dataclasses import dataclass
@@ -86,31 +85,21 @@ def make_request(url: str, token=None) -> urllib.request.Request:
86 headers["Authorization"] = f"token {token}"
85 headers["Authorization"] = f"token {token}"
87 return urllib.request.Request(url, headers=headers)
86 return urllib.request.Request(url, headers=headers)
90−# a dictionary of plugins and their new repositories
91−Redirects = Dict['PluginDesc', 'Repo']
93class Repo:
88class Repo:
94 def __init__(
89 def __init__(
95− self, uri: str, branch: str
90+ self, uri: str, branch: str, alias: Optional[str]
96 ) -> None:
91 ) -> None:
97 self.uri = uri
92 self.uri = uri
98 '''Url to the repo'''
93 '''Url to the repo'''
99− self._branch = branch
94+ self.branch = branch
100− # Redirect is the new Repo to use
95+ self.alias = alias
101− self.redirect: Optional['Repo'] = None
96+ self.redirect: Dict[str, str] = {}
102 self.token = "dummy_token"
97 self.token = "dummy_token"
104 @property
99 @property
105 def name(self):
100 def name(self):
106 return self.uri.split('/')[-1]
101 return self.uri.split('/')[-1]
110− return self._branch or "HEAD"
112− def __str__(self) -> str:
113− return f"{self.uri}"
114 def __repr__(self) -> str:
103 def __repr__(self) -> str:
115 return f"Repo({self.name}, {self.uri})"
104 return f"Repo({self.name}, {self.uri})"
@@ -120,7 +109,6 @@ class Repo:
121 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
110 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
122 def latest_commit(self) -> Tuple[str, datetime]:
111 def latest_commit(self) -> Tuple[str, datetime]:
123− log.debug("Latest commit")
124 loaded = self._prefetch(None)
112 loaded = self._prefetch(None)
125 updated = datetime.strptime(loaded['date'], "%Y-%m-%dT%H:%M:%S%z")
113 updated = datetime.strptime(loaded['date'], "%Y-%m-%dT%H:%M:%S%z")
@@ -136,7 +124,6 @@ class Repo:
136 return loaded
124 return loaded
138 def prefetch(self, ref: Optional[str]) -> str:
126 def prefetch(self, ref: Optional[str]) -> str:
139− print("Prefetching")
140 loaded = self._prefetch(ref)
127 loaded = self._prefetch(ref)
141 return loaded["sha256"]
128 return loaded["sha256"]
@@ -150,22 +137,21 @@ class Repo:
151class RepoGitHub(Repo):
138class RepoGitHub(Repo):
152 def __init__(
139 def __init__(
153− self, owner: str, repo: str, branch: str
140+ self, owner: str, repo: str, branch: str, alias: Optional[str]
154 ) -> None:
141 ) -> None:
155 self.owner = owner
142 self.owner = owner
156 self.repo = repo
143 self.repo = repo
157 self.token = None
144 self.token = None
158 '''Url to the repo'''
145 '''Url to the repo'''
159− super().__init__(self.url(""), branch)
146+ super().__init__(self.url(""), branch, alias)
160− log.debug("Instantiating github repo owner=%s and repo=%s", self.owner, self.repo)
147+ log.debug("Instantiating github repo %s/%s", self.owner, self.repo)
162 @property
149 @property
163 def name(self):
150 def name(self):
164 return self.repo
151 return self.repo
166 def url(self, path: str) -> str:
153 def url(self, path: str) -> str:
167− res = urljoin(f"https://github.com/{self.owner}/{self.repo}/", path)
154+ return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
170 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
156 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
171 def has_submodules(self) -> bool:
157 def has_submodules(self) -> bool:
@@ -182,7 +168,6 @@ class RepoGitHub(Repo):
182 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
168 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
183 def latest_commit(self) -> Tuple[str, datetime]:
169 def latest_commit(self) -> Tuple[str, datetime]:
184 commit_url = self.url(f"commits/{self.branch}.atom")
170 commit_url = self.url(f"commits/{self.branch}.atom")
185− log.debug("Sending request to %s", commit_url)
186 commit_req = make_request(commit_url, self.token)
171 commit_req = make_request(commit_url, self.token)
187 with urllib.request.urlopen(commit_req, timeout=10) as req:
172 with urllib.request.urlopen(commit_req, timeout=10) as req:
188 self._check_for_redirect(commit_url, req)
173 self._check_for_redirect(commit_url, req)
@@ -206,9 +191,12 @@ class RepoGitHub(Repo):
206 new_owner, new_name = (
191 new_owner, new_name = (
207 urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
192 urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
194+ end_line = "\n" if self.alias is None else f" as {self.alias}\n"
195+ plugin_line = "{owner}/{name}" + end_line
210− new_repo = RepoGitHub(owner=new_owner, repo=new_name, branch=self.branch)
197+ old_plugin = plugin_line.format(owner=self.owner, name=self.name)
198+ new_plugin = plugin_line.format(owner=new_owner, name=new_name)
211− self.redirect = new_repo
199+ self.redirect[old_plugin] = new_plugin
214 def prefetch(self, commit: str) -> str:
202 def prefetch(self, commit: str) -> str:
@@ -219,9 +207,9 @@ class RepoGitHub(Repo):
219 return sha256
207 return sha256
221 def prefetch_github(self, ref: str) -> str:
209 def prefetch_github(self, ref: str) -> str:
210+ data = subprocess.check_output(
222− cmd = ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
211+ ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
223− log.debug("Running %s", cmd)
212+ )
224− data = subprocess.check_output(cmd)
225 return data.strip().decode("utf-8")
213 return data.strip().decode("utf-8")
227 def as_nix(self, plugin: "Plugin") -> str:
215 def as_nix(self, plugin: "Plugin") -> str:
@@ -238,7 +226,7 @@ class RepoGitHub(Repo):
241−@dataclass(frozen=True)
229+@dataclass
242class PluginDesc:
230class PluginDesc:
243 repo: Repo
231 repo: Repo
244 branch: str
232 branch: str
@@ -251,38 +239,21 @@ class PluginDesc:
252 return self.alias
240 return self.alias
254− def __lt__(self, other):
255− return self.repo.name < other.repo.name
258− def load_from_csv(config: FetchConfig, row: Dict[str, str]) -> 'PluginDesc':
259− branch = row["branch"]
260− repo = make_repo(row['repo'], branch.strip())
261− repo.token = config.github_token
262− return PluginDesc(repo, branch.strip(), row["alias"])
266− def load_from_string(config: FetchConfig, line: str) -> 'PluginDesc':
271− uri, alias = uri.split(" as ")
272− alias = alias.strip()
274− uri, branch = uri.split("@")
275− repo = make_repo(uri.strip(), branch.strip())
276− repo.token = config.github_token
277− return PluginDesc(repo, branch.strip(), alias)
280class Plugin:
243class Plugin:
281− name: str
246+ name: str,
282− commit: str
247+ commit: str,
283− has_submodules: bool
248+ has_submodules: bool,
284− sha256: str
249+ sha256: str,
285− date: Optional[datetime] = None
250+ date: Optional[datetime] = None,
253+ self.commit = commit
254+ self.has_submodules = has_submodules
255+ self.sha256 = sha256
287 @property
258 @property
288 def normalized_name(self) -> str:
259 def normalized_name(self) -> str:
@@ -299,27 +270,6 @@ class Plugin:
299 return copy
270 return copy
302−def load_plugins_from_csv(config: FetchConfig, input_file: Path,) -> List[PluginDesc]:
303− log.debug("Load plugins from csv %s", input_file)
305− with open(input_file, newline='') as csvfile:
306− log.debug("Writing into %s", input_file)
307− reader = csv.DictReader(csvfile,)
309− plugin = PluginDesc.load_from_csv(config, line)
310− plugins.append(plugin)
314−def run_nix_expr(expr):
315− with CleanEnvironment():
316− cmd = ["nix", "eval", "--extra-experimental-features",
317− "nix-command", "--impure", "--json", "--expr", expr]
318− log.debug("Running command %s", cmd)
319− out = subprocess.check_output(cmd)
320− data = json.loads(out)
324class Editor:
274class Editor:
325 """The configuration of the update script."""
275 """The configuration of the update script."""
@@ -343,19 +293,19 @@ class Editor:
343 self.deprecated = deprecated or root.joinpath("deprecated.json")
293 self.deprecated = deprecated or root.joinpath("deprecated.json")
344 self.cache_file = cache_file or f"{name}-plugin-cache.json"
294 self.cache_file = cache_file or f"{name}-plugin-cache.json"
346− def get_current_plugins(self) -> List[Plugin]:
296+ def get_current_plugins(self):
347 """To fill the cache"""
297 """To fill the cache"""
348− data = run_nix_expr(self.get_plugins)
298+ return get_current_plugins(self)
350− for name, attr in data.items():
351− print("get_current_plugins: name %s" % name)
352− p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
356 def load_plugin_spec(self, config: FetchConfig, plugin_file) -> List[PluginDesc]:
300 def load_plugin_spec(self, config: FetchConfig, plugin_file) -> List[PluginDesc]:
357− '''CSV spec'''
301+ plugins = []
358− return load_plugins_from_csv(config, plugin_file)
302+ with open(plugin_file) as f:
304+ if line.startswith("#"):
306+ plugin = parse_plugin_line(config, line)
307+ plugins.append(plugin)
360 def generate_nix(self, plugins, outfile: str):
310 def generate_nix(self, plugins, outfile: str):
361 '''Returns nothing for now, writes directly to outfile'''
311 '''Returns nothing for now, writes directly to outfile'''
@@ -366,11 +316,11 @@ class Editor:
366 _prefetch = functools.partial(prefetch, cache=cache)
316 _prefetch = functools.partial(prefetch, cache=cache)
368 def update() -> dict:
318 def update() -> dict:
369− plugins = self.load_plugin_spec(config, input_file)
319+ plugin_names = self.load_plugin_spec(config, input_file)
372 pool = Pool(processes=config.proc)
322 pool = Pool(processes=config.proc)
373− results = pool.map(_prefetch, plugins)
323+ results = pool.map(_prefetch, plugin_names)
375 cache.store()
325 cache.store()
@@ -465,10 +415,23 @@ class CleanEnvironment(object):
465 self.empty_config.close()
415 self.empty_config.close()
418+def get_current_plugins(editor: Editor) -> List[Plugin]:
419+ with CleanEnvironment():
420+ cmd = ["nix", "eval", "--extra-experimental-features", "nix-command", "--impure", "--json", "--expr", editor.get_plugins]
421+ log.debug("Running command %s", cmd)
422+ out = subprocess.check_output(cmd)
423+ data = json.loads(out)
425+ for name, attr in data.items():
426+ p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
468def prefetch_plugin(
431def prefetch_plugin(
469 p: PluginDesc,
432 p: PluginDesc,
470 cache: "Optional[Cache]" = None,
433 cache: "Optional[Cache]" = None,
471−) -> Tuple[Plugin, Optional[Repo]]:
434+) -> Tuple[Plugin, Dict[str, str]]:
472 repo, branch, alias = p.repo, p.branch, p.alias
435 repo, branch, alias = p.repo, p.branch, p.alias
473 name = alias or p.repo.name
436 name = alias or p.repo.name
474 commit = None
437 commit = None
@@ -482,7 +445,7 @@ def prefetch_plugin(
482 return cached_plugin, repo.redirect
445 return cached_plugin, repo.redirect
484 has_submodules = repo.has_submodules()
447 has_submodules = repo.has_submodules()
485− log.debug(f"prefetch {name}")
448+ print(f"prefetch {name}")
486 sha256 = repo.prefetch(commit)
449 sha256 = repo.prefetch(commit)
@@ -491,7 +454,12 @@ def prefetch_plugin(
457+def fetch_plugin_from_pluginline(config: FetchConfig, plugin_line: str) -> Plugin:
458+ plugin, _ = prefetch_plugin(parse_plugin_line(config, plugin_line))
494−def print_download_error(plugin: PluginDesc, ex: Exception):
462+def print_download_error(plugin: str, ex: Exception):
495 print(f"{plugin}: {ex}", file=sys.stderr)
463 print(f"{plugin}: {ex}", file=sys.stderr)
496 ex_traceback = ex.__traceback__
464 ex_traceback = ex.__traceback__
497 tb_lines = [
465 tb_lines = [
@@ -500,22 +468,20 @@ def print_download_error(plugin: PluginDesc, ex: Exception):
501 print("\n".join(tb_lines))
469 print("\n".join(tb_lines))
503def check_results(
472def check_results(
504− results: List[Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]]
473+ results: List[Tuple[PluginDesc, Union[Exception, Plugin], Dict[str, str]]]
505−) -> Tuple[List[Tuple[PluginDesc, Plugin]], Redirects]:
474+) -> Tuple[List[Tuple[PluginDesc, Plugin]], Dict[str, str]]:
507− failures: List[Tuple[PluginDesc, Exception]] = []
476+ failures: List[Tuple[str, Exception]] = []
508 plugins = []
477 plugins = []
509− redirects: Redirects = {}
478+ redirects: Dict[str, str] = {}
510 for (pdesc, result, redirect) in results:
479 for (pdesc, result, redirect) in results:
511 if isinstance(result, Exception):
480 if isinstance(result, Exception):
512− failures.append((pdesc, result))
481+ failures.append((pdesc.name, result))
515− if redirect is not None:
516− redirects.update({pdesc: redirect})
517− new_pdesc = PluginDesc(redirect, pdesc.branch, pdesc.alias)
518− plugins.append((new_pdesc, result))
483+ plugins.append((pdesc, result))
484+ redirects.update(redirect)
520 print(f"{len(results) - len(failures)} plugins were checked", end="")
486 print(f"{len(results) - len(failures)} plugins were checked", end="")
521 if len(failures) == 0:
487 if len(failures) == 0:
@@ -529,17 +495,31 @@ def check_results(
530 sys.exit(1)
496 sys.exit(1)
532−def make_repo(uri: str, branch) -> Repo:
498+def make_repo(uri, branch, alias) -> Repo:
533 '''Instantiate a Repo with the correct specialization depending on server (gitub spec)'''
499 '''Instantiate a Repo with the correct specialization depending on server (gitub spec)'''
534 # dumb check to see if it's of the form owner/repo (=> github) or https://...
500 # dumb check to see if it's of the form owner/repo (=> github) or https://...
535− res = urlparse(uri)
501+ res = uri.split('/')
536− if res.netloc in [ "github.com", ""]:
502+ if len(res) <= 2:
537− res = res.path.strip('/').split('/')
538− repo = RepoGitHub(res[0], res[1], branch)
503+ repo = RepoGitHub(res[0], res[1], branch, alias)
540− repo = Repo(uri.strip(), branch)
505+ repo = Repo(uri.strip(), branch, alias)
541 return repo
506 return repo
508+def parse_plugin_line(config: FetchConfig, line: str) -> PluginDesc:
513+ uri, alias = uri.split(" as ")
514+ alias = alias.strip()
516+ uri, branch = uri.split("@")
518+ repo = make_repo(uri.strip(), branch.strip(), alias)
519+ repo.token = config.github_token
521+ return PluginDesc(repo, branch.strip(), alias)
544def get_cache_path(cache_file_name: str) -> Optional[Path]:
524def get_cache_path(cache_file_name: str) -> Optional[Path]:
545 xdg_cache = os.environ.get("XDG_CACHE_HOME", None)
525 xdg_cache = os.environ.get("XDG_CACHE_HOME", None)
@@ -596,37 +576,36 @@ class Cache:
597def prefetch(
577def prefetch(
598 pluginDesc: PluginDesc, cache: Cache
578 pluginDesc: PluginDesc, cache: Cache
599−) -> Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]:
579+) -> Tuple[PluginDesc, Union[Exception, Plugin], dict]:
601 plugin, redirect = prefetch_plugin(pluginDesc, cache)
581 plugin, redirect = prefetch_plugin(pluginDesc, cache)
602 cache[plugin.commit] = plugin
582 cache[plugin.commit] = plugin
603 return (pluginDesc, plugin, redirect)
583 return (pluginDesc, plugin, redirect)
604 except Exception as e:
584 except Exception as e:
605− return (pluginDesc, e, None)
585+ return (pluginDesc, e, {})
609def rewrite_input(
588def rewrite_input(
610 config: FetchConfig,
589 config: FetchConfig,
611 input_file: Path,
590 input_file: Path,
612 deprecated: Path,
591 deprecated: Path,
613− # old pluginDesc and the new
614− redirects: Redirects = {},
592+ redirects: Dict[str, str] = None,
615− append: List[PluginDesc] = [],
593+ append: Tuple = (),
617− plugins = load_plugins_from_csv(config, input_file,)
595+ with open(input_file, "r") as f:
596+ lines = f.readlines()
619− plugins.extend(append)
598+ lines.extend(append)
621 if redirects:
600 if redirects:
601+ lines = [redirects.get(line, line) for line in lines]
623 cur_date_iso = datetime.now().strftime("%Y-%m-%d")
603 cur_date_iso = datetime.now().strftime("%Y-%m-%d")
624 with open(deprecated, "r") as f:
604 with open(deprecated, "r") as f:
625 deprecations = json.load(f)
605 deprecations = json.load(f)
626− for pdesc, new_repo in redirects.items():
606+ for old, new in redirects.items():
627− new_pdesc = PluginDesc(new_repo, pdesc.branch, pdesc.alias)
607+ old_plugin = fetch_plugin_from_pluginline(config, old)
628− old_plugin, _ = prefetch_plugin(pdesc)
608+ new_plugin = fetch_plugin_from_pluginline(config, new)
629− new_plugin, _ = prefetch_plugin(new_pdesc)
630 if old_plugin.normalized_name != new_plugin.normalized_name:
609 if old_plugin.normalized_name != new_plugin.normalized_name:
631 deprecations[old_plugin.normalized_name] = {
610 deprecations[old_plugin.normalized_name] = {
632 "new": new_plugin.normalized_name,
611 "new": new_plugin.normalized_name,
@@ -636,14 +615,10 @@ def rewrite_input(
636 json.dump(deprecations, f, indent=4, sort_keys=True)
615 json.dump(deprecations, f, indent=4, sort_keys=True)
637 f.write("\n")
616 f.write("\n")
618+ lines = sorted(lines, key=str.casefold)
639 with open(input_file, "w") as f:
620 with open(input_file, "w") as f:
640− log.debug("Writing into %s", input_file)
621+ f.writelines(lines)
641− # fields = dataclasses.fields(PluginDesc)
642− fieldnames = ['repo', 'branch', 'alias']
643− writer = csv.DictWriter(f, fieldnames, dialect='unix', quoting=csv.QUOTE_NONE)
644− writer.writeheader()
645− for plugin in sorted(plugins):
646− writer.writerow(asdict(plugin))
649def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
624def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
@@ -685,11 +660,9 @@ def update_plugins(editor: Editor, args):
687 for plugin_line in args.add_plugins:
662 for plugin_line in args.add_plugins:
688− pdesc = PluginDesc.load_from_string(fetch_config, plugin_line)
690− editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, append=append)
663+ editor.rewrite_input(fetch_config, args.input_file, editor.deprecated, append=(plugin_line + "\n",))
692− plugin, _ = prefetch_plugin(pdesc, )
665+ plugin = fetch_plugin_from_pluginline(fetch_config, plugin_line)
693 if autocommit:
666 if autocommit:
695 nixpkgs_repo,
668 nixpkgs_repo,
maintainers/team-list.nix−36
@@ -198,18 +198,6 @@ with lib.maintainers; {
198 enableFeatureFreezePing = true;
198 enableFeatureFreezePing = true;
208− scope = "Maintain Enlightenment desktop environment and related packages.";
209− shortName = "Enlightenment";
210− enableFeatureFreezePing = true;
213 # Dummy group for the "everyone else" section
201 # Dummy group for the "everyone else" section
214 feature-freeze-everyone-else = {
202 feature-freeze-everyone-else = {
215 members = [ ];
203 members = [ ];
@@ -355,30 +343,6 @@ with lib.maintainers; {
355 shortName = "Linux Kernel";
343 shortName = "Linux Kernel";
365− scope = "Maintain lumina desktop environment and related packages.";
366− shortName = "Lumina";
367− enableFeatureFreezePing = true;
377− scope = "Maintain LXQt desktop environment and related packages.";
379− enableFeatureFreezePing = true;
382 marketing = {
346 marketing = {
383 members = [
347 members = [
nixos/doc/manual/administration/declarative-containers.section.md+1−1
@@ -40,7 +40,7 @@ section for details on container networking.)
40To disable the container, just remove it from `configuration.nix` and
40To disable the container, just remove it from `configuration.nix` and
41run `nixos-rebuild
41run `nixos-rebuild
42 switch`. Note that this will not delete the root directory of the
42 switch`. Note that this will not delete the root directory of the
43−container in `/var/lib/nixos-containers`. Containers can be destroyed using
43+container in `/var/lib/containers`. Containers can be destroyed using
44the imperative method: `nixos-container destroy foo`.
44the imperative method: `nixos-container destroy foo`.
46Declarative containers can be started and stopped using the
46Declarative containers can be started and stopped using the
nixos/doc/manual/administration/imperative-containers.section.md+2−2
@@ -10,8 +10,8 @@ You create a container with identifier `foo` as follows:
10# nixos-container create foo
10# nixos-container create foo
13−This creates the container's root directory in `/var/lib/nixos-containers/foo`
13+This creates the container's root directory in `/var/lib/containers/foo`
14−and a small configuration file in `/etc/nixos-containers/foo.conf`. It also
14+and a small configuration file in `/etc/containers/foo.conf`. It also
15builds the container's initial system configuration and stores it in
15builds the container's initial system configuration and stores it in
16`/nix/var/nix/profiles/per-container/foo/system`. You can modify the
16`/nix/var/nix/profiles/per-container/foo/system`. You can modify the
17initial configuration of the container on the command line. For
17initial configuration of the container on the command line. For
nixos/doc/manual/default.nix−4
@@ -14,10 +14,6 @@ with pkgs;
15 lib = pkgs.lib;
15 lib = pkgs.lib;
17− docbook_xsl_ns = pkgs.docbook-xsl-ns.override {
18− withManOptDedupPatch = true;
21 # We need to strip references to /nix/store/* from options,
17 # We need to strip references to /nix/store/* from options,
22 # including any `extraSources` if some modules came from elsewhere,
18 # including any `extraSources` if some modules came from elsewhere,
23 # or else the build will fail.
19 # or else the build will fail.
nixos/doc/manual/installation/building-nixos.chapter.md → nixos/doc/manual/development/building-nixos.chapter.mdrenamed−31
@@ -30,37 +30,6 @@ To check the content of an ISO image, mount it like so:
30# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
30# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
33−## Additional drivers or firmware {#sec-building-image-drivers}
35−If you need additional (non-distributable) drivers or firmware in the
36−installer, you might want to extend these configurations.
38−For example, to build the GNOME graphical installer ISO, but with support for
39−certain WiFi adapters present in some MacBooks, you can create the following
40−file at `modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix`:
46− imports = [ ./installation-cd-graphical-gnome.nix ];
48− boot.initrd.kernelModules = [ "wl" ];
50− boot.kernelModules = [ "kvm-intel" "wl" ];
51− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
55−Then build it like in the example above:
58−$ git clone https://github.com/NixOS/nixpkgs.git
60−$ export NIXPKGS_ALLOW_UNFREE=1
61−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix default.nix
64## Technical Notes {#sec-building-image-tech-notes}
33## Technical Notes {#sec-building-image-tech-notes}
66The config value enforcement is implemented via `mkImageMediaOverride = mkOverride 60;`
35The config value enforcement is implemented via `mkImageMediaOverride = mkOverride 60;`
nixos/doc/manual/development/development.xml+1
@@ -14,6 +14,7 @@
14 <xi:include href="../from_md/development/building-parts.chapter.xml" />
14 <xi:include href="../from_md/development/building-parts.chapter.xml" />
15 <xi:include href="../from_md/development/what-happens-during-a-system-switch.chapter.xml" />
15 <xi:include href="../from_md/development/what-happens-during-a-system-switch.chapter.xml" />
16 <xi:include href="../from_md/development/writing-documentation.chapter.xml" />
16 <xi:include href="../from_md/development/writing-documentation.chapter.xml" />
17+ <xi:include href="../from_md/development/building-nixos.chapter.xml" />
17 <xi:include href="../from_md/development/nixos-tests.chapter.xml" />
18 <xi:include href="../from_md/development/nixos-tests.chapter.xml" />
18 <xi:include href="../from_md/development/testing-installer.chapter.xml" />
19 <xi:include href="../from_md/development/testing-installer.chapter.xml" />
nixos/doc/manual/development/writing-nixos-tests.section.md+14−25
@@ -159,42 +159,34 @@ The following methods are available on machine objects:
161: Execute a shell command, returning a list `(status, stdout)`.
161: Execute a shell command, returning a list `(status, stdout)`.
163− Commands are run with `set -euo pipefail` set:
165− - If several commands are separated by `;` and one fails, the
166− command as a whole will fail.
168− - For pipelines, the last non-zero exit status will be returned
169− (if there is one; otherwise zero will be returned).
171− - Dereferencing unset variables fails the command.
173− - It will wait for stdout to be closed.
175 If the command detaches, it must close stdout, as `execute` will wait
162 If the command detaches, it must close stdout, as `execute` will wait
176 for this to consume all output reliably. This can be achieved by
163 for this to consume all output reliably. This can be achieved by
177 redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or
164 redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or
178 a file. Examples of detaching commands are `sleep 365d &`, where the
165 a file. Examples of detaching commands are `sleep 365d &`, where the
179 shell forks a new process that can write to stdout and `xclip -i`, where
166 shell forks a new process that can write to stdout and `xclip -i`, where
180 the `xclip` command itself forks without closing stdout.
167 the `xclip` command itself forks without closing stdout.
182 Takes an optional parameter `check_return` that defaults to `True`.
168 Takes an optional parameter `check_return` that defaults to `True`.
183 Setting this parameter to `False` will not check for the return code
169 Setting this parameter to `False` will not check for the return code
184 and return -1 instead. This can be used for commands that shut down
170 and return -1 instead. This can be used for commands that shut down
185 the VM and would therefore break the pipe that would be used for
171 the VM and would therefore break the pipe that would be used for
186 retrieving the return code.
172 retrieving the return code.
188− A timeout for the command can be specified (in seconds) using the optional
189− `timeout` parameter, e.g., `execute(cmd, timeout=10)` or
190− `execute(cmd, timeout=None)`. The default is 900 seconds.
194: Execute a shell command, raising an exception if the exit status is
176: Execute a shell command, raising an exception if the exit status is
195− not zero, otherwise returning the standard output. Similar to `execute`,
177+ not zero, otherwise returning the standard output. Commands are run
196− except that the timeout is `None` by default. See `execute` for details on
178+ with `set -euo pipefail` set:
197− command execution.
179+
180+ - If several commands are separated by `;` and one fails, the
181+ command as a whole will fail.
183+ - For pipelines, the last non-zero exit status will be returned
184+ (if there is one, zero will be returned otherwise).
186+ - Dereferencing unset variables fail the command.
188+ - It will wait for stdout to be closed. See `execute` for the
@@ -204,13 +196,10 @@ The following methods are available on machine objects:
204`wait_until_succeeds`
196`wait_until_succeeds`
206: Repeat a shell command with 1-second intervals until it succeeds.
198: Repeat a shell command with 1-second intervals until it succeeds.
207− Has a default timeout of 900 seconds which can be modified, e.g.
208− `wait_until_succeeds(cmd, timeout=10)`. See `execute` for details on
211`wait_until_fails`
200`wait_until_fails`
213−: Like `wait_until_succeeds`, but repeating the command until it fails.
202+: Repeat a shell command with 1-second intervals until it fails.
215`wait_for_unit`
204`wait_for_unit`
nixos/doc/manual/from_md/administration/declarative-containers.section.xml+2−2
@@ -48,8 +48,8 @@ containers.database = {
48 <literal>configuration.nix</literal> and run
48 <literal>configuration.nix</literal> and run
49 <literal>nixos-rebuild switch</literal>. Note that this will not
49 <literal>nixos-rebuild switch</literal>. Note that this will not
50 delete the root directory of the container in
50 delete the root directory of the container in
51− <literal>/var/lib/nixos-containers</literal>. Containers can be
51+ <literal>/var/lib/containers</literal>. Containers can be destroyed
52− destroyed using the imperative method:
52+ using the imperative method:
53 <literal>nixos-container destroy foo</literal>.
53 <literal>nixos-container destroy foo</literal>.
nixos/doc/manual/from_md/administration/imperative-containers.section.xml+2−3
@@ -14,9 +14,8 @@
14</programlisting>
14</programlisting>
16 This creates the container’s root directory in
16 This creates the container’s root directory in
17− <literal>/var/lib/nixos-containers/foo</literal> and a small
17+ <literal>/var/lib/containers/foo</literal> and a small configuration
18− configuration file in
19− <literal>/etc/nixos-containers/foo.conf</literal>. It also builds
18+ file in <literal>/etc/containers/foo.conf</literal>. It also builds
20 the container’s initial system configuration and stores it in
19 the container’s initial system configuration and stores it in
21 <literal>/nix/var/nix/profiles/per-container/foo/system</literal>.
20 <literal>/nix/var/nix/profiles/per-container/foo/system</literal>.
22 You can modify the initial configuration of the container on the
21 You can modify the initial configuration of the container on the
nixos/doc/manual/from_md/installation/building-nixos.chapter.xml → nixos/doc/manual/from_md/development/building-nixos.chapter.xmlrenamed−34
@@ -43,40 +43,6 @@ $ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd
44 <programlisting>
44 <programlisting>
45# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
45# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
48− <section xml:id="sec-building-image-drivers">
49− <title>Additional drivers or firmware</title>
51− If you need additional (non-distributable) drivers or firmware in
52− the installer, you might want to extend these configurations.
55− For example, to build the GNOME graphical installer ISO, but with
56− support for certain WiFi adapters present in some MacBooks, you
57− can create the following file at
58− <literal>modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix</literal>:
60− <programlisting language="bash">
64− imports = [ ./installation-cd-graphical-gnome.nix ];
66− boot.initrd.kernelModules = [ "wl" ];
68− boot.kernelModules = [ "kvm-intel" "wl" ];
69− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
73− Then build it like in the example above:
76−$ git clone https://github.com/NixOS/nixpkgs.git
78−$ export NIXPKGS_ALLOW_UNFREE=1
79−$ nix-build -A config.system.build.isoImage -I nixos-config=modules/installer/cd-dvd/installation-cd-graphical-gnome-macbook.nix default.nix
80</programlisting>
46</programlisting>
81 </section>
47 </section>
82 <section xml:id="sec-building-image-tech-notes">
48 <section xml:id="sec-building-image-tech-notes">
nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+35−53
@@ -274,9 +274,35 @@ start_all()
274 <listitem>
274 <listitem>
276 Execute a shell command, returning a list
276 Execute a shell command, returning a list
277− <literal>(status, stdout)</literal>.
277+ <literal>(status, stdout)</literal>. If the command
278+ detaches, it must close stdout, as
279+ <literal>execute</literal> will wait for this to consume all
280+ output reliably. This can be achieved by redirecting stdout
281+ to stderr <literal>>&2</literal>, to
282+ <literal>/dev/console</literal>,
283+ <literal>/dev/null</literal> or a file. Examples of
284+ detaching commands are <literal>sleep 365d &</literal>,
285+ where the shell forks a new process that can write to stdout
286+ and <literal>xclip -i</literal>, where the
287+ <literal>xclip</literal> command itself forks without
288+ closing stdout. Takes an optional parameter
289+ <literal>check_return</literal> that defaults to
290+ <literal>True</literal>. Setting this parameter to
291+ <literal>False</literal> will not check for the return code
292+ and return -1 instead. This can be used for commands that
293+ shut down the VM and would therefore break the pipe that
294+ would be used for retrieving the return code.
300+ <literal>succeed</literal>
304+ Execute a shell command, raising an exception if the exit
305+ status is not zero, otherwise returning the standard output.
280 Commands are run with <literal>set -euo pipefail</literal>
306 Commands are run with <literal>set -euo pipefail</literal>
@@ -291,63 +317,22 @@ start_all()
291 <listitem>
317 <listitem>
293 For pipelines, the last non-zero exit status will be
319 For pipelines, the last non-zero exit status will be
294− returned (if there is one; otherwise zero will be
320+ returned (if there is one, zero will be returned
295− returned).
321+ otherwise).
297 </listitem>
323 </listitem>
298 <listitem>
324 <listitem>
300− Dereferencing unset variables fails the command.
326+ Dereferencing unset variables fail the command.
302 </listitem>
328 </listitem>
303 <listitem>
329 <listitem>
305− It will wait for stdout to be closed.
331+ It will wait for stdout to be closed. See
332+ <literal>execute</literal> for the implications.
307 </listitem>
334 </listitem>
308 </itemizedlist>
335 </itemizedlist>
310− If the command detaches, it must close stdout, as
311− <literal>execute</literal> will wait for this to consume all
312− output reliably. This can be achieved by redirecting stdout
313− to stderr <literal>>&2</literal>, to
314− <literal>/dev/console</literal>,
315− <literal>/dev/null</literal> or a file. Examples of
316− detaching commands are <literal>sleep 365d &</literal>,
317− where the shell forks a new process that can write to stdout
318− and <literal>xclip -i</literal>, where the
319− <literal>xclip</literal> command itself forks without
323− Takes an optional parameter <literal>check_return</literal>
324− that defaults to <literal>True</literal>. Setting this
325− parameter to <literal>False</literal> will not check for the
326− return code and return -1 instead. This can be used for
327− commands that shut down the VM and would therefore break the
328− pipe that would be used for retrieving the return code.
331− A timeout for the command can be specified (in seconds)
332− using the optional <literal>timeout</literal> parameter,
333− e.g., <literal>execute(cmd, timeout=10)</literal> or
334− <literal>execute(cmd, timeout=None)</literal>. The default
341− <literal>succeed</literal>
345− Execute a shell command, raising an exception if the exit
346− status is not zero, otherwise returning the standard output.
347− Similar to <literal>execute</literal>, except that the
348− timeout is <literal>None</literal> by default. See
349− <literal>execute</literal> for details on command execution.
351 </listitem>
336 </listitem>
352 </varlistentry>
337 </varlistentry>
353 <varlistentry>
338 <varlistentry>
@@ -368,10 +353,7 @@ start_all()
368 <listitem>
353 <listitem>
370 Repeat a shell command with 1-second intervals until it
355 Repeat a shell command with 1-second intervals until it
371− succeeds. Has a default timeout of 900 seconds which can be
356+ succeeds.
373− <literal>wait_until_succeeds(cmd, timeout=10)</literal>. See
374− <literal>execute</literal> for details on command execution.
376 </listitem>
358 </listitem>
377 </varlistentry>
359 </varlistentry>
@@ -381,8 +363,8 @@ start_all()
382 <listitem>
364 <listitem>
384− Like <literal>wait_until_succeeds</literal>, but repeating
385− the command until it fails.
366+ Repeat a shell command with 1-second intervals until it
387 </listitem>
369 </listitem>
388 </varlistentry>
370 </varlistentry>
nixos/doc/manual/from_md/installation/installing.chapter.xml+7−7
@@ -411,13 +411,6 @@ OK
411 specify on which disk the GRUB boot loader is to be
411 specify on which disk the GRUB boot loader is to be
412 installed. Without it, NixOS cannot boot.
412 installed. Without it, NixOS cannot boot.
415− If there are other operating systems running on the
416− machine before installing NixOS, the
417− <xref linkend="opt-boot.loader.grub.useOSProber" />
418− option can be set to <literal>true</literal> to
419− automatically add them to the grub menu.
421 </listitem>
414 </listitem>
422 </varlistentry>
415 </varlistentry>
423 <varlistentry>
416 <varlistentry>
@@ -443,6 +436,13 @@ OK
443 </listitem>
436 </listitem>
444 </varlistentry>
437 </varlistentry>
445 </variablelist>
438 </variablelist>
440+ If there are other operating systems running on the machine
441+ before installing NixOS, the
442+ <xref linkend="opt-boot.loader.grub.useOSProber" /> option can
443+ be set to <literal>true</literal> to automatically add them to
447 If you need to configure networking for your machine the
447 If you need to configure networking for your machine the
448 configuration options are described in
448 configuration options are described in
nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8
@@ -866,14 +866,6 @@
868 </listitem>
868 </listitem>
871− The vim/kakoune plugin updater now reads from a CSV file:
873− <literal>pkgs/applications/editors/vim/plugins/vim-plugin-names</literal>
874− out to see the new format
877 </itemizedlist>
869 </itemizedlist>
878 </section>
870 </section>
879</section>
871</section>
nixos/doc/manual/from_md/release-notes/rl-2205.section.xml+4−643
@@ -43,33 +43,6 @@
45 </listitem>
45 </listitem>
48− <literal>stdenv.mkDerivation</literal> now supports a
49− self-referencing <literal>finalAttrs:</literal> parameter
50− containing the final <literal>mkDerivation</literal> arguments
51− including overrides. <literal>drv.overrideAttrs</literal> now
52− supports two parameters
53− <literal>finalAttrs: previousAttrs:</literal>. This allows
54− packaging configuration to be overridden in a consistent
55− manner by providing an alternative to
56− <literal>rec {}</literal> syntax.
59− Additionally, <literal>passthru</literal> can now reference
60− <literal>finalAttrs.finalPackage</literal> containing the
61− final package, including attributes such as the output paths
62− and <literal>overrideAttrs</literal>.
65− New language integrations can be simplified by overriding a
66− <quote>prototype</quote> package containing the
67− language-specific logic. This removes the need for a extra
68− layer of overriding for the <quote>generic builder</quote>
69− arguments, thus removing a usability problem and source of
73 <listitem>
46 <listitem>
75 PHP 8.1 is now available
48 PHP 8.1 is now available
@@ -95,34 +68,6 @@
95 granular distinction between reloads and restarts.
68 granular distinction between reloads and restarts.
97 </listitem>
70 </listitem>
100− Systemd has been upgraded to the version 250.
105− Pulseaudio has been upgraded to version 15.0 and now
107− <link xlink:href="https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/#supportforldacandaptxbluetoothcodecsplussbcxqsbcwithhigher-qualityparameters">supports
108− additional Bluetooth audio codecs</link> like aptX or LDAC,
109− with codec switching support being available in
110− <literal>pavucontrol</literal>. This feature is disabled by
111− default but can be enabled by using
112− <literal>hardware.pulseaudio.package = pkgs.pulseaudioFull;</literal>.
113− Existing 3rd party modules that provided similar
114− functionality, like <literal>pulseaudio-modules-bt</literal>
115− or <literal>pulseaudio-hsphfpd</literal> are deprecated and
122− <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#sec-postgresqlTestHook"><literal>postgresqlTestHook</literal></link>
123− runs a PostgreSQL server for the duration of package checks.
126 <listitem>
71 <listitem>
128 <link xlink:href="https://kops.sigs.k8s.io"><literal>kops</literal></link>
73 <link xlink:href="https://kops.sigs.k8s.io"><literal>kops</literal></link>
@@ -151,14 +96,6 @@
153 </listitem>
98 </listitem>
156− The GNOME and Plasma installation CDs now use
157− <literal>pkgs.calamares</literal> and
158− <literal>pkgs.calamares-nixos-extensions</literal> to allow
159− users to easily install and set up NixOS with a GUI.
162 </itemizedlist>
99 </itemizedlist>
163 </section>
100 </section>
164 <section xml:id="sec-release-22.05-new-services">
101 <section xml:id="sec-release-22.05-new-services">
@@ -188,13 +125,6 @@
188 <link xlink:href="option.html#opt-services.matrix-conduit.enable">services.matrix-conduit</link>.
125 <link xlink:href="option.html#opt-services.matrix-conduit.enable">services.matrix-conduit</link>.
190 </listitem>
127 </listitem>
193− <link xlink:href="https://github.com/vvilhonen/nethoscope">nethoscope</link>,
194− listen to your network traffic. Available as
195− <link linkend="opt-programs.nethoscope.enable">programs.nethoscope</link>.
198 <listitem>
128 <listitem>
200 <link xlink:href="https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html">filebeat</link>,
130 <link xlink:href="https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html">filebeat</link>,
@@ -284,15 +214,6 @@
284 to be able to access the device.
214 to be able to access the device.
286 </listitem>
216 </listitem>
289− <link xlink:href="https://github.com/mozilla-mobile/mozilla-vpn-client">mozillavpn</link>,
291− <link xlink:href="https://vpn.mozilla.org/">Mozilla VPN</link>
292− service. Available as
293− <link xlink:href="options.html#opt-services.mozillavpn">services.mozillavpn</link>.
296 <listitem>
217 <listitem>
298 <link xlink:href="https://github.com/mgumz/mtr-exporter">mtr-exporter</link>,
219 <link xlink:href="https://github.com/mgumz/mtr-exporter">mtr-exporter</link>,
@@ -426,14 +347,6 @@
426 <link xlink:href="options.html#opt-services.headscale.enable">services.headscale</link>
347 <link xlink:href="options.html#opt-services.headscale.enable">services.headscale</link>
428 </listitem>
349 </listitem>
431− <link xlink:href="https://github.com/lakinduakash/linux-wifi-hotspot">create_ap</link>,
432− a module for creating wifi hotspots using the program
433− linux-wifi-hotspot. Available as
434− <link xlink:href="options.html#opt-services.create_ap.enable">services.create_ap</link>.
437 <listitem>
350 <listitem>
439 <link xlink:href="https://0xerr0r.github.io/blocky/">blocky</link>,
352 <link xlink:href="https://0xerr0r.github.io/blocky/">blocky</link>,
@@ -447,14 +360,6 @@
447 cluster resource manager
360 cluster resource manager
449 </listitem>
362 </listitem>
452− <link xlink:href="https://nifi.apache.org">nifi</link>, an
453− easy to use, powerful, and reliable system to process and
454− distribute data. Available as
455− <link xlink:href="options.html#opt-services.nifi.enable">services.nifi</link>.
458 </itemizedlist>
363 </itemizedlist>
459 </section>
364 </section>
460 <section xml:id="sec-release-22.05-incompatibilities">
365 <section xml:id="sec-release-22.05-incompatibilities">
@@ -522,85 +427,6 @@
522 new versions will release.
427 new versions will release.
524 </listitem>
429 </listitem>
527− The configuration and state directories used by
528− <literal>nixos-containers</literal> have been moved from
529− <literal>/etc/containers</literal> and
530− <literal>/var/lib/containers</literal> to
531− <literal>/etc/nixos-containers</literal> and
532− <literal>/var/lib/nixos-containers</literal>.
535− If you are changing <literal>system.stateVersion</literal> to
536− <literal>"22.05"</literal> manually on an existing
537− system you are responsible for migrating these directories
541− This is to improve compatibility with
542− <literal>libcontainer</literal> based software such as Podman
543− and Skopeo which assumes they have ownership over
544− <literal>/etc/containers</literal>.
549− For new installations
550− <literal>virtualisation.oci-containers.backend</literal> is
551− now set to <literal>podman</literal> by default. If you still
552− want to use Docker on systems where
553− <literal>system.stateVersion</literal> is set to to
554− <literal>"22.05"</literal> set
555− <literal>virtualisation.oci-containers.backend = "docker";</literal>.Old
556− systems with older <literal>stateVersion</literal>s stay with
557− <quote>docker</quote>.
562− <literal>security.klogd</literal> was removed. Logging of
563− kernel messages is handled by systemd since Linux 3.5.
568− <literal>pkgs.ssmtp</literal> has been dropped due to the
569− program being unmaintained. <literal>pkgs.msmtp</literal> can
570− be used instead as a substitute <literal>sendmail</literal>
571− implementation. The corresponding options
572− <literal>services.ssmtp.*</literal> have been removed as well.
573− <literal>programs.msmtp.*</literal> can be used instead for an
574− equivalent setup. For example:
576− <programlisting language="bash">
578− # Original ssmtp configuration:
583− hostName = "smtp.example:587";
584− authUser = "someone";
585− authPassFile = "/secrets/password.txt";
588− # Equivalent msmtp configuration:
591− accounts.default = {
593− tls_starttls = true;
595− host = "smtp.example";
597− user = "someone";
598− passwordeval = "cat /secrets/password.txt";
604 <listitem>
430 <listitem>
606 <literal>services.kubernetes.addons.dashboard</literal> was
432 <literal>services.kubernetes.addons.dashboard</literal> was
@@ -618,53 +444,6 @@
618 relying on the insecure behaviour before upgrading.
444 relying on the insecure behaviour before upgrading.
620 </listitem>
446 </listitem>
623− In the PowerDNS Recursor module
624− (<literal>services.pdns-recursor</literal>), default values of
625− several IP address-related NixOS options have been updated to
626− match the default upstream behavior. In particular, Recursor
629− <itemizedlist spacing="compact">
632− listen on (and allows connections from) both IPv4 and IPv6
634− (<literal>services.pdns-recursor.dns.address</literal>,
635− <literal>services.pdns-recursor.dns.allowFrom</literal>);
640− allow only local connections to the REST API server
641− (<literal>services.pdns-recursor.api.allowFrom</literal>).
648− In the ncdns module, the default value of
649− <literal>services.ncdns.address</literal> has been changed to
650− the IPv6 loopback address (<literal>::1</literal>).
655− <literal>openssh</literal> has been update to 8.9p1, changing
656− the FIDO security key middleware interface.
661− <literal>git</literal> no longer hardcodes the path to
662− openssh’ ssh binary to reduce the amount of rebuilds. If you
663− are using git with ssh remotes and do not have a ssh binary in
664− your enviroment consider adding <literal>openssh</literal> to
665− it or switching to <literal>gitFull</literal>.
668 <listitem>
447 <listitem>
670 <literal>services.k3s.enable</literal> no longer implies
449 <literal>services.k3s.enable</literal> no longer implies
@@ -697,13 +476,6 @@
698</programlisting>
477</programlisting>
699 </listitem>
478 </listitem>
702− <literal>services.prometheus.alertManagerTimeout</literal> has
703− been removed as it has been deprecated upstream and has no
707 <listitem>
479 <listitem>
709 The DHCP server (<literal>services.dhcpd4</literal>,
481 The DHCP server (<literal>services.dhcpd4</literal>,
@@ -737,24 +509,6 @@
739 </listitem>
511 </listitem>
742− <literal>hbase</literal> version 0.98.24 has been removed. The
743− package now defaults to version 2.4.11. Versions 1.7.1 and
744− 3.0.0-alpha-2 are also available.
749− <literal>services.paperless-ng</literal> was renamed to
750− <literal>services.paperless</literal>. Accordingly, the
751− <literal>paperless-ng-manage</literal> script (located in
752− <literal>dataDir</literal>) was renamed to
753− <literal>paperless-manage</literal>.
754− <literal>services.paperless</literal> now uses
755− <literal>paperless-ngx</literal>.
758 <listitem>
512 <listitem>
760 The <literal>matrix-synapse</literal> service
514 The <literal>matrix-synapse</literal> service
@@ -877,136 +631,6 @@
877 to the new location if the <literal>stateVersion</literal> is
631 to the new location if the <literal>stateVersion</literal> is
881− As of Synapse 1.58.0, the old groups/communities feature has
882− been disabled by default. It will be completely removed with
888− The Keycloak package (<literal>pkgs.keycloak</literal>) has
889− been switched from the Wildfly version, which will soon be
890− deprecated, to the Quarkus based version. The Keycloak service
891− (<literal>services.keycloak</literal>) has been updated to
892− accommodate the change and now differs from the previous
893− version in a few ways:
898− <literal>services.keycloak.extraConfig</literal> has been
899− removed in favor of the new
900− <link xlink:href="https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md">settings-style</link>
901− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>
902− option. The available options correspond directly to
903− parameters in <literal>conf/keycloak.conf</literal>. Some
904− of the most important parameters are documented as
905− suboptions, the rest can be found in the
906− <link xlink:href="https://www.keycloak.org/server/all-config">All
907− configuration section of the Keycloak Server Installation
908− and Configuration Guide</link>. While the new
909− configuration is much simpler and cleaner than the old
910− JBoss CLI one, this unfortunately mean that there’s no
911− straightforward way to convert an old configuration to the
912− new format and some settings may not even be available
918− <literal>services.keycloak.frontendUrl</literal> was
919− removed and the frontend URL is now configured through the
920− <literal>hostname</literal> family of settings in
921− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>
923− <link xlink:href="https://www.keycloak.org/server/hostname">Hostname
924− section of the Keycloak Server Installation and
925− Configuration Guide</link> for more details. Additionally,
926− <literal>/auth</literal> was removed from the default
927− context path and needs to be added back in
928− <link linkend="opt-services.keycloak.settings.http-relative-path"><literal>services.keycloak.settings.http-relative-path</literal></link>
929− if you want to keep compatibility with your current
935− <literal>services.keycloak.bindAddress</literal>,
936− <literal>services.keycloak.forceBackendUrlToFrontendUrl</literal>,
937− <literal>services.keycloak.httpPort</literal> and
938− <literal>services.keycloak.httpsPort</literal> have been
939− removed in favor of their equivalent options in
940− <link linkend="opt-services.keycloak.settings"><literal>services.keycloak.settings</literal></link>.
941− <literal>httpPort</literal> and
942− <literal>httpsPort</literal> have additionally had their
943− types changed from <literal>str</literal> to
944− <literal>port</literal>.
947− The new names are as follows:
949− <itemizedlist spacing="compact">
952− <literal>bindAddress</literal>:
953− <link linkend="opt-services.keycloak.settings.http-host"><literal>services.keycloak.settings.http-host</literal></link>
958− <literal>forceBackendUrlToFrontendUrl</literal>:
959− <link linkend="opt-services.keycloak.settings.hostname-strict-backchannel"><literal>services.keycloak.settings.hostname-strict-backchannel</literal></link>
964− <literal>httpPort</literal>:
965− <link linkend="opt-services.keycloak.settings.http-port"><literal>services.keycloak.settings.http-port</literal></link>
970− <literal>httpsPort</literal>:
971− <link linkend="opt-services.keycloak.settings.https-port"><literal>services.keycloak.settings.https-port</literal></link>
978− For example, when using a reverse proxy the migration could
984− <programlisting language="bash">
985− services.keycloak = {
987− httpPort = "8080";
988− frontendUrl = "https://keycloak.example.com/auth";
989− database.passwordFile = "/run/keys/db_password";
991− "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true;
998− <programlisting language="bash">
999− services.keycloak = {
1003− hostname = "keycloak.example.com";
1004− http-relative-path = "/auth";
1005− proxy = "edge";
1007− database.passwordFile = "/run/keys/db_password";
1010 </listitem>
634 </listitem>
1011 <listitem>
635 <listitem>
@@ -1142,14 +766,6 @@
1142 <literal>admin</literal> and <literal>password</literal>.
766 <literal>admin</literal> and <literal>password</literal>.
1144 </listitem>
768 </listitem>
1147− The <literal>taskserver</literal> module no longer implicitly
1148− opens ports in the firewall configuration. This is now
1149− controlled through the option
1150− <literal>services.taskserver.openFirewall</literal>.
1153 <listitem>
769 <listitem>
1155 The <literal>autorestic</literal> package has been upgraded
771 The <literal>autorestic</literal> package has been upgraded
@@ -1352,14 +968,6 @@
1352 <literal>systemd.nspawn.<name>.execConfig.PrivateUsers = false</literal>
968 <literal>systemd.nspawn.<name>.execConfig.PrivateUsers = false</literal>
1354 </listitem>
970 </listitem>
1357− <literal>systemd-shutdown</literal> is now properly linked on
1358− shutdown to unmount all filesystems and device mapper devices
1359− cleanly. This can be disabled using
1360− <literal>systemd.shutdownRamfs.enable</literal>.
1363 <listitem>
971 <listitem>
1365 The Tor SOCKS proxy is now actually disabled if
973 The Tor SOCKS proxy is now actually disabled if
@@ -1370,15 +978,6 @@
1370 <literal>true</literal>.
978 <literal>true</literal>.
1372 </listitem>
980 </listitem>
1375− <literal>services.github-runner</literal> has been hardened.
1376− Notably address families and system calls have been
1377− restricted, which may adversely affect some kinds of testing,
1378− e.g. using <literal>AF_BLUETOOTH</literal> to test bluetooth
1382 <listitem>
981 <listitem>
1384 The terraform 0.12 compatibility has been removed and the
983 The terraform 0.12 compatibility has been removed and the
@@ -1423,16 +1022,6 @@
1423 <literal>otelcorecol</literal> and enjoy a 7x smaller binary.
1022 <literal>otelcorecol</literal> and enjoy a 7x smaller binary.
1425 </listitem>
1024 </listitem>
1428− <literal>services.zookeeper</literal> has a new option
1429− <literal>jre</literal> for specifying the JRE to start
1430− zookeeper with. It defaults to the JRE that
1431− <literal>pkgs.zookeeper</literal> was wrapped with, instead of
1432− <literal>pkgs.jre</literal>. This changes the JRE to
1433− <literal>pkgs.jdk11_headless</literal> by default.
1436 <listitem>
1025 <listitem>
1438 <literal>pkgs.pgadmin</literal> now refers to
1027 <literal>pkgs.pgadmin</literal> now refers to
@@ -1679,33 +1268,6 @@
1679 example.
1268 example.
1681 </listitem>
1270 </listitem>
1684− Existing <literal>resholve*</literal> functions have been
1685− renamed and nested under <literal>pkgs.resholve</literal>.
1688− <itemizedlist spacing="compact">
1691− <literal>resholvePackage</literal> ->
1692− <literal>resholve.mkDerivation</literal>
1697− <literal>resholveScript</literal> ->
1698− <literal>resholve.writeScript</literal>
1703− <literal>resholveScriptBin</literal> ->
1704− <literal>resholve.writeScriptBin</literal>
1709 <listitem>
1271 <listitem>
1711 <literal>pkgs.cosmopolitan</literal> no longer provides the
1273 <literal>pkgs.cosmopolitan</literal> no longer provides the
@@ -1713,17 +1275,6 @@
1713 <literal>pkgs.cosmoc</literal>.
1275 <literal>pkgs.cosmoc</literal>.
1715 </listitem>
1277 </listitem>
1718− <literal>pkgs.graalvmXX-ce</literal> packages no longer
1719− provide support for Python/Ruby/WASM, instead focusing only in
1720− Java and Native Image Support. If you need to add support
1721− back, please see the
1722− <literal>pkgs.graalvmCEPackages.mkGraal</literal> function to
1723− create your own customized version of GraalVM with support for
1727 </itemizedlist>
1278 </itemizedlist>
1728 </section>
1279 </section>
1729 <section xml:id="sec-release-22.05-notable-changes">
1280 <section xml:id="sec-release-22.05-notable-changes">
@@ -1837,14 +1388,6 @@
1837 </listitem>
1388 </listitem>
1838 </itemizedlist>
1389 </itemizedlist>
1839 </listitem>
1390 </listitem>
1842− The auto-upgrade service now accepts persistent (default:
1843− true) parameter. By default auto-upgrade will now run
1844− immediately if it would have been triggered at least once
1845− during the time when the timer was inactive.
1848 <listitem>
1391 <listitem>
1850 If you are using Wayland you can choose to use the Ozone
1393 If you are using Wayland you can choose to use the Ozone
@@ -1911,15 +1454,6 @@
1911 takes a list of strings instead of a string.
1454 takes a list of strings instead of a string.
1913 </listitem>
1456 </listitem>
1916− The <literal>asterisk</literal> and
1917− <literal>asterisk-stable</literal> packages were switched from
1918− <literal>asterisk_18</literal> to the newly-packaged
1919− <literal>asterisk_19</literal>. Asterisk 13 and 17 have been
1920− removed as they have reached their end of life.
1923 <listitem>
1457 <listitem>
1925 The <literal>services.unifi.openPorts</literal> option default
1459 The <literal>services.unifi.openPorts</literal> option default
@@ -1978,11 +1512,9 @@
1979 <link linkend="opt-programs.ssh.knownHosts">programs.ssh.knownHosts</link>
1513 <link linkend="opt-programs.ssh.knownHosts">programs.ssh.knownHosts</link>
1980 has gained an <literal>extraHostNames</literal> option to
1514 has gained an <literal>extraHostNames</literal> option to
1981− augment <literal>hostNames</literal>. It is now possible to
1515+ replace <literal>hostNames</literal>.
1982− use the attribute name of a <literal>knownHosts</literal>
1516+ <literal>hostNames</literal> is deprecated, but still
1983− entry as the primary host name and specify secondary host
1517+ available for now.
1984− names using <literal>extraHostNames</literal> without having
1985− to duplicate the primary host name.
1987 </listitem>
1519 </listitem>
1988 <listitem>
1520 <listitem>
@@ -1993,36 +1525,6 @@
1993 configuration.
1525 configuration.
1995 </listitem>
1527 </listitem>
1999− <link linkend="opt-services.xserver.desktopManager.runXdgAutostartIfNone">services.xserver.desktopManager.runXdgAutostartIfNone</link>
2000− was added in order to automatically run XDG autostart files
2001− for sessions without a desktop manager. This replaces helpers
2002− like the <literal>dex</literal> package.
2008− <link linkend="opt-i18n.inputMethod.enabled">i18n.inputMethod.enabled</link>
2009− to <literal>fcitx5</literal>, it no longer creates
2010− corresponding systemd user services. It now relies on XDG
2011− autostart files to start and work properly in your desktop
2012− sessions. If you are using only a window manager without a
2013− desktop manager, you need to enable
2014− <literal>services.xserver.desktopManager.runXdgAutostartIfNone</literal>
2015− or using the <literal>dex</literal> package to make
2016− <literal>fcitx5</literal> work.
2021− A new module was added for the Envoy reverse proxy, providing
2022− the options <literal>services.envoy.enable</literal> and
2023− <literal>services.envoy.settings</literal>.
2026 <listitem>
1528 <listitem>
2028 The option <literal>services.duplicati.dataDir</literal> has
1530 The option <literal>services.duplicati.dataDir</literal> has
@@ -2047,51 +1549,10 @@
2047 </listitem>
1549 </listitem>
2048 <listitem>
1550 <listitem>
2050− ORY Kratos was updated to version 0.9.0-alpha.3, which
1552+ ORY Kratos was updated to version 0.8.3-alpha.1.pre.0, which
2051 introduces some breaking changes:
1553 introduces some breaking changes:
2053 <itemizedlist spacing="compact">
1555 <itemizedlist spacing="compact">
2056− All endpoints at the Admin API are now exposed at
2057− <literal>/admin/</literal>. For example, endpoint
2058− <literal>https://kratos:4434/identities</literal> is now
2060− <literal>https://kratos:4434/admin/identities</literal>
2066− <literal>selfservice.whitelisted_return_urls</literal> has
2067− been renamed to <literal>allowed_return_urls</literal>
2072− The <literal>password_identifier</literal> form field of
2073− the password login strategy has been renamed to
2074− <literal>identifier</literal> to make compatibility with
2075− passwordless flows possible.
2080− Instead of having a global
2081− <literal>default_schema_url</literal> which developers
2082− used to update their schema, you now need to define the
2083− <literal>default_schema_id</literal> which must reference
2084− schema ID in your config.
2089− Calling <literal>/self-service/recovery</literal> without
2090− flow ID or with an invalid flow ID while authenticated
2091− will now respond with an error instead of redirecting to
2095 <listitem>
1556 <listitem>
2097 If you are relying on the SQLite images, update your
1558 If you are relying on the SQLite images, update your
@@ -2128,18 +1589,6 @@
2128 Notes for v0.8.2-alpha-1</link>
1589 Notes for v0.8.2-alpha-1</link>
2130 </listitem>
1591 </listitem>
2133− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.1">Release
2134− Notes for v0.9.0-alpha-1</link>
2139− <link xlink:href="https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.3">Release
2140− Notes for v0.9.0-alpha-3</link>
2143 </itemizedlist>
1592 </itemizedlist>
2144 </listitem>
1593 </listitem>
2145 </itemizedlist>
1594 </itemizedlist>
@@ -2153,13 +1602,6 @@
2153 <literal>true</literal>.
1602 <literal>true</literal>.
2155 </listitem>
1604 </listitem>
2158− A module for declarative configuration of openconnect VPN
2159− profiles was added under
2160− <literal>networking.openconnect</literal>.
2163 <listitem>
1605 <listitem>
2165 The <literal>element-desktop</literal> package now has an
1607 The <literal>element-desktop</literal> package now has an
@@ -2258,21 +1700,6 @@
2258 should now be used instead.
1700 should now be used instead.
2260 </listitem>
1702 </listitem>
2263− <literal>security.pam.ussh</literal> has been added, which
2264− allows authorizing PAM sessions based on SSH
2265− <emphasis>certificates</emphasis> held within an SSH agent,
2267− <link xlink:href="https://github.com/uber/pam-ussh">pam-ussh</link>.
2272− The <literal>vscode-extensions.ionide.ionide-fsharp</literal>
2273− package has been updated to 6.0.0 and now requires .NET 6.0.
2276 <listitem>
1703 <listitem>
2278 The <literal>zrepl</literal> package has been updated from
1705 The <literal>zrepl</literal> package has been updated from
@@ -2298,24 +1725,6 @@
2298 </listitem>
1725 </listitem>
2299 </itemizedlist>
1726 </itemizedlist>
2300 </listitem>
1727 </listitem>
2303− The <literal>polybar</literal> package has been updated from
2304− 3.5.7 to 3.6.2. See
2305− <link xlink:href="https://github.com/polybar/polybar/releases/tag/3.6.0">the
2306− changelog</link> for more details.
2308− <itemizedlist spacing="compact">
2311− Breaking changes include changes to escaping rules in
2312− configuration values, changes in behavior when
2313− encountering invalid tag names, and changes to
2314− inter-process-messaging (IPC).
2319 <listitem>
1728 <listitem>
2321 Renamed option
1730 Renamed option
@@ -2371,27 +1780,6 @@
2371 desktop environments as needed.
1780 desktop environments as needed.
2373 </listitem>
1782 </listitem>
2376− xfsprogs was update to version 5.15, which enables inobtcount
2377− and bigtime by default on filesystem creation. Support for
2378− these features was added in kernel 5.10 and deemed stable in
2379− kernel 5.15. If you want to be able to mount XFS filesystems
2380− created with this release of xfsprogs on kernel releases older
2381− than 5.10, you need to format them with
2382− <literal>mkfs.xfs -m bigtime=0 -m inobtcount=0</literal>.
2387− <literal>services.xserver.desktopManager.xfce</literal> now
2388− includes Xfce’s screen locker,
2389− <literal>xfce4-screensaver</literal> that is enabled by
2390− default. You can disable it by setting
2391− <literal>false</literal> to
2392− <link linkend="opt-services.xserver.desktopManager.xfce.enableScreensaver">services.xserver.desktopManager.xfce.enableScreensaver</link>.
2395 <listitem>
1783 <listitem>
2397 The <literal>hadoop</literal> package has added support for
1785 The <literal>hadoop</literal> package has added support for
@@ -2407,24 +1795,6 @@
2407 (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/158992">#158992</link>).
1795 (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/158992">#158992</link>).
2409 </listitem>
1797 </listitem>
2412− The <literal>nss</literal> package was split into
2413− <literal>nss_esr</literal> and <literal>nss_latest</literal>,
2414− with <literal>nss</literal> being an alias for
2415− <literal>nss_esr</literal>. This was done to ease maintenance
2416− of <literal>nss</literal> and dependent high-profile packages
2417− like <literal>firefox</literal>.
2422− The Nextcloud module now supports to create a Mysql database
2424− <literal>services.nextcloud.database.createLocally</literal>
2428 <listitem>
1798 <listitem>
2430 The <literal>spark3</literal> package has been updated from
1800 The <literal>spark3</literal> package has been updated from
@@ -2456,15 +1826,6 @@
2456 generating host-global NNCP configuration.
1826 generating host-global NNCP configuration.
2458 </listitem>
1828 </listitem>
2461− The option <literal>services.snapserver.openFirewall</literal>
2462− will no longer default to <literal>true</literal> starting
2463− with NixOS 22.11. Enable it explicitly if you need to control
2464− Snapserver remotely or connect streamig clients from other
2468 </itemizedlist>
1829 </itemizedlist>
2469 </section>
1830 </section>
2470</section>
1831</section>
nixos/doc/manual/installation/installation.xml−1
@@ -14,5 +14,4 @@
14 <xi:include href="../from_md/installation/installing.chapter.xml" />
14 <xi:include href="../from_md/installation/installing.chapter.xml" />
15 <xi:include href="../from_md/installation/changing-config.chapter.xml" />
15 <xi:include href="../from_md/installation/changing-config.chapter.xml" />
16 <xi:include href="../from_md/installation/upgrading.chapter.xml" />
16 <xi:include href="../from_md/installation/upgrading.chapter.xml" />
17− <xi:include href="../from_md/installation/building-nixos.chapter.xml" />
nixos/doc/manual/installation/installing.chapter.md+5−5
@@ -296,11 +296,6 @@ Use the following commands:
296 specify on which disk the GRUB boot loader is to be installed.
296 specify on which disk the GRUB boot loader is to be installed.
297 Without it, NixOS cannot boot.
297 Without it, NixOS cannot boot.
299− : If there are other operating systems running on the machine before
300− installing NixOS, the [](#opt-boot.loader.grub.useOSProber)
301− option can be set to `true` to automatically add them to the grub
304 UEFI systems
299 UEFI systems
306 : You *must* set the option [](#opt-boot.loader.systemd-boot.enable)
301 : You *must* set the option [](#opt-boot.loader.systemd-boot.enable)
@@ -312,6 +307,11 @@ Use the following commands:
312 [`boot.loader.systemd-boot`](#opt-boot.loader.systemd-boot.enable)
307 [`boot.loader.systemd-boot`](#opt-boot.loader.systemd-boot.enable)
310+ If there are other operating systems running on the machine before
311+ installing NixOS, the [](#opt-boot.loader.grub.useOSProber)
312+ option can be set to `true` to automatically add them to the grub
315 If you need to configure networking for your machine the
315 If you need to configure networking for your machine the
316 configuration options are described in [](#sec-networking). In
316 configuration options are described in [](#sec-networking). In
317 particular, while wifi is supported on the installation image, it is
317 particular, while wifi is supported on the installation image, it is
nixos/doc/manual/man-nixos-rebuild.xml−8
@@ -548,14 +548,6 @@
548 (<replaceable>user@host</replaceable>). You can also set ssh options by
548 (<replaceable>user@host</replaceable>). You can also set ssh options by
549 defining the <envar>NIX_SSHOPTS</envar> environment variable.
549 defining the <envar>NIX_SSHOPTS</envar> environment variable.
553− Note that <command>nixos-rebuild</command> honors the
554− <literal>nixpkgs.crossSystem</literal> setting of the given configuration
555− but disregards the true architecture of the target host. Hence the
556− <literal>nixpkgs.crossSystem</literal> setting has to match the target
557− platform or else activation will fail.
559 </listitem>
551 </listitem>
560 </varlistentry>
552 </varlistentry>
nixos/doc/manual/md-to-db.sh+1−1
@@ -1,5 +1,5 @@
1#! /usr/bin/env nix-shell
1#! /usr/bin/env nix-shell
2−#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/tarball/21.11 -i bash -p pandoc
2+#! nix-shell -I nixpkgs=channel:nixpkgs-unstable -i bash -p pandoc
4# This script is temporarily needed while we transition the manual to
4# This script is temporarily needed while we transition the manual to
5# CommonMark. It converts the .md files in the regular manual folder
5# CommonMark. It converts the .md files in the regular manual folder
nixos/doc/manual/release-notes/rl-1803.section.md−2
@@ -282,5 +282,3 @@ When upgrading from a previous release, please be aware of the following incompa
282- The NixOS test driver supports user services declared by `systemd.user.services`. The methods `waitForUnit`, `getUnitInfo`, `startJob` and `stopJob` provide an optional `$user` argument for that purpose.
282- The NixOS test driver supports user services declared by `systemd.user.services`. The methods `waitForUnit`, `getUnitInfo`, `startJob` and `stopJob` provide an optional `$user` argument for that purpose.
284- Enabling bash completion on NixOS, `programs.bash.enableCompletion`, will now also enable completion for the Nix command line tools by installing the [nix-bash-completions](https://github.com/hedning/nix-bash-completions) package.
284- Enabling bash completion on NixOS, `programs.bash.enableCompletion`, will now also enable completion for the Nix command line tools by installing the [nix-bash-completions](https://github.com/hedning/nix-bash-completions) package.
286−- The vim/kakoune plugin updater now reads from a CSV file: check `pkgs/applications/editors/vim/plugins/vim-plugin-names` out to see the new format
nixos/doc/manual/release-notes/rl-2205.section.md+2−251
@@ -17,21 +17,6 @@ In addition to numerous new and upgraded packages, this release has the followin
18- GNOME has been upgraded to 42. Please take a look at their [Release Notes](https://release.gnome.org/42/) for details. Notably, it replaces gedit with GNOME Text Editor, GNOME Terminal with GNOME Console (formerly King’s Cross), and GNOME Screenshot with a tool built into the Shell.
18- GNOME has been upgraded to 42. Please take a look at their [Release Notes](https://release.gnome.org/42/) for details. Notably, it replaces gedit with GNOME Text Editor, GNOME Terminal with GNOME Console (formerly King’s Cross), and GNOME Screenshot with a tool built into the Shell.
20−- `stdenv.mkDerivation` now supports a self-referencing `finalAttrs:` parameter
21− containing the final `mkDerivation` arguments including overrides.
22− `drv.overrideAttrs` now supports two parameters `finalAttrs: previousAttrs:`.
23− This allows packaging configuration to be overridden in a consistent manner by
24− providing an alternative to `rec {}` syntax.
26− Additionally, `passthru` can now reference `finalAttrs.finalPackage` containing
27− the final package, including attributes such as the output paths and
30− New language integrations can be simplified by overriding a "prototype"
31− package containing the language-specific logic. This removes the need for a
32− extra layer of overriding for the "generic builder" arguments, thus removing a
33− usability problem and source of error.
35- PHP 8.1 is now available
20- PHP 8.1 is now available
37- Mattermost has been updated to extended support release 6.3, as the previously packaged extended support release 5.37 is [reaching its end of life](https://docs.mattermost.com/upgrade/extended-support-release.html).
22- Mattermost has been updated to extended support release 6.3, as the previously packaged extended support release 5.37 is [reaching its end of life](https://docs.mattermost.com/upgrade/extended-support-release.html).
@@ -40,21 +25,12 @@ In addition to numerous new and upgraded packages, this release has the followin
41- systemd services can now set [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services) instead of `reloadIfChanged` for a more granular distinction between reloads and restarts.
26- systemd services can now set [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services) instead of `reloadIfChanged` for a more granular distinction between reloads and restarts.
43−- Systemd has been upgraded to the version 250.
45−- Pulseaudio has been upgraded to version 15.0 and now optionally [supports additional Bluetooth audio codecs](https://www.freedesktop.org/wiki/Software/PulseAudio/Notes/15.0/#supportforldacandaptxbluetoothcodecsplussbcxqsbcwithhigher-qualityparameters) like aptX or LDAC, with codec switching support being available in `pavucontrol`. This feature is disabled by default but can be enabled by using `hardware.pulseaudio.package = pkgs.pulseaudioFull;`.
46− Existing 3rd party modules that provided similar functionality, like `pulseaudio-modules-bt` or `pulseaudio-hsphfpd` are deprecated and have been removed.
48−- The new [`postgresqlTestHook`](https://nixos.org/manual/nixpkgs/stable/#sec-postgresqlTestHook) runs a PostgreSQL server for the duration of package checks.
50- [`kops`](https://kops.sigs.k8s.io) defaults to 1.22.4, which will enable [Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) and require tokens on new clusters with Kubernetes 1.22. This will increase security by default, but may break some types of workloads. See the [release notes](https://kops.sigs.k8s.io/releases/1.22-notes/) for details.
28- [`kops`](https://kops.sigs.k8s.io) defaults to 1.22.4, which will enable [Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) and require tokens on new clusters with Kubernetes 1.22. This will increase security by default, but may break some types of workloads. See the [release notes](https://kops.sigs.k8s.io/releases/1.22-notes/) for details.
52- Module authors can use `mkRenamedOptionModuleWith` to automate the deprecation cycle without annoying out-of-tree module authors and their users.
30- Module authors can use `mkRenamedOptionModuleWith` to automate the deprecation cycle without annoying out-of-tree module authors and their users.
54- The default GHC version has been updated from 8.10.7 to 9.0.2. `pkgs.haskellPackages` and `pkgs.ghc` will now use this version by default.
32- The default GHC version has been updated from 8.10.7 to 9.0.2. `pkgs.haskellPackages` and `pkgs.ghc` will now use this version by default.
56−- The GNOME and Plasma installation CDs now use `pkgs.calamares` and `pkgs.calamares-nixos-extensions` to allow users to easily install and set up NixOS with a GUI.
58## New Services {#sec-release-22.05-new-services}
34## New Services {#sec-release-22.05-new-services}
60- [aesmd](https://github.com/intel/linux-sgx#install-the-intelr-sgx-psw), the Intel SGX Architectural Enclave Service Manager. Available as [services.aesmd](#opt-services.aesmd.enable).
36- [aesmd](https://github.com/intel/linux-sgx#install-the-intelr-sgx-psw), the Intel SGX Architectural Enclave Service Manager. Available as [services.aesmd](#opt-services.aesmd.enable).
@@ -63,8 +39,6 @@ In addition to numerous new and upgraded packages, this release has the followin
64- [matrix-conduit](https://conduit.rs/), a simple, fast and reliable chat server powered by matrix. Available as [services.matrix-conduit](option.html#opt-services.matrix-conduit.enable).
40- [matrix-conduit](https://conduit.rs/), a simple, fast and reliable chat server powered by matrix. Available as [services.matrix-conduit](option.html#opt-services.matrix-conduit.enable).
66−- [nethoscope](https://github.com/vvilhonen/nethoscope), listen to your network traffic. Available as [programs.nethoscope](#opt-programs.nethoscope.enable).
68- [filebeat](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html), a lightweight shipper for forwarding and centralizing log data. Available as [services.filebeat](#opt-services.filebeat.enable).
42- [filebeat](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html), a lightweight shipper for forwarding and centralizing log data. Available as [services.filebeat](#opt-services.filebeat.enable).
70- [apfs](https://github.com/linux-apfs/linux-apfs-rw), a kernel module for mounting the Apple File System (APFS).
44- [apfs](https://github.com/linux-apfs/linux-apfs-rw), a kernel module for mounting the Apple File System (APFS).
@@ -89,8 +63,6 @@ In addition to numerous new and upgraded packages, this release has the followin
90- [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](options.html#opt-programs.k4-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device.
64- [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](options.html#opt-programs.k4-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device.
92−- [mozillavpn](https://github.com/mozilla-mobile/mozilla-vpn-client), the client for the [Mozilla VPN](https://vpn.mozilla.org/) service. Available as [services.mozillavpn](options.html#opt-services.mozillavpn).
94- [mtr-exporter](https://github.com/mgumz/mtr-exporter), a Prometheus exporter for mtr metrics. Available as [services.mtr-exporter](options.html#opt-services.mtr-exporter.enable).
66- [mtr-exporter](https://github.com/mgumz/mtr-exporter), a Prometheus exporter for mtr metrics. Available as [services.mtr-exporter](options.html#opt-services.mtr-exporter.enable).
96- [prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter), a tool that exposes information from the Proxmox VE API for use by Prometheus. Available as [services.prometheus.exporters.pve](options.html#opt-services.prometheus.exporters.pve).
68- [prometheus-pve-exporter](https://github.com/prometheus-pve/prometheus-pve-exporter), a tool that exposes information from the Proxmox VE API for use by Prometheus. Available as [services.prometheus.exporters.pve](options.html#opt-services.prometheus.exporters.pve).
@@ -127,14 +99,10 @@ In addition to numerous new and upgraded packages, this release has the followin
128- [headscale](https://github.com/juanfont/headscale), an Open Source implementation of the [Tailscale](https://tailscale.io) Control Server. Available as [services.headscale](options.html#opt-services.headscale.enable)
100- [headscale](https://github.com/juanfont/headscale), an Open Source implementation of the [Tailscale](https://tailscale.io) Control Server. Available as [services.headscale](options.html#opt-services.headscale.enable)
130−- [create_ap](https://github.com/lakinduakash/linux-wifi-hotspot), a module for creating wifi hotspots using the program linux-wifi-hotspot. Available as [services.create_ap](options.html#opt-services.create_ap.enable).
132- [blocky](https://0xerr0r.github.io/blocky/), fast and lightweight DNS proxy as ad-blocker for local network with many features.
102- [blocky](https://0xerr0r.github.io/blocky/), fast and lightweight DNS proxy as ad-blocker for local network with many features.
134- [pacemaker](https://clusterlabs.org/pacemaker/) cluster resource manager
104- [pacemaker](https://clusterlabs.org/pacemaker/) cluster resource manager
136−- [nifi](https://nifi.apache.org), an easy to use, powerful, and reliable system to process and distribute data. Available as [services.nifi](options.html#opt-services.nifi.enable).
138<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
106<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
140## Backward Incompatibilities {#sec-release-22.05-incompatibilities}
108## Backward Incompatibilities {#sec-release-22.05-incompatibilities}
@@ -171,71 +139,10 @@ In addition to numerous new and upgraded packages, this release has the followin
171 org-contrib, refer to the ones in `pkgs.emacsPackages.elpaPackages` and
139 org-contrib, refer to the ones in `pkgs.emacsPackages.elpaPackages` and
172 `pkgs.emacsPackages.nongnuPackages` where the new versions will release.
140 `pkgs.emacsPackages.nongnuPackages` where the new versions will release.
174−- The configuration and state directories used by `nixos-containers` have been
175− moved from `/etc/containers` and `/var/lib/containers` to
176− `/etc/nixos-containers` and `/var/lib/nixos-containers`.
178− If you are changing `system.stateVersion` to `"22.05"` manually on an existing
179− system you are responsible for migrating these directories yourself.
181− This is to improve compatibility with `libcontainer` based software such as Podman and Skopeo
182− which assumes they have ownership over `/etc/containers`.
184−- For new installations `virtualisation.oci-containers.backend` is now set to `podman` by default.
185− If you still want to use Docker on systems where `system.stateVersion` is set to to `"22.05"` set `virtualisation.oci-containers.backend = "docker";`.Old systems with older `stateVersion`s stay with "docker".
187−- `security.klogd` was removed. Logging of kernel messages is handled
188− by systemd since Linux 3.5.
190−- `pkgs.ssmtp` has been dropped due to the program being unmaintained.
191− `pkgs.msmtp` can be used instead as a substitute `sendmail` implementation.
192− The corresponding options `services.ssmtp.*` have been removed as well.
193− `programs.msmtp.*` can be used instead for an equivalent setup. For example:
197− # Original ssmtp configuration:
202− hostName = "smtp.example:587";
203− authUser = "someone";
204− authPassFile = "/secrets/password.txt";
207− # Equivalent msmtp configuration:
210− accounts.default = {
212− tls_starttls = true;
214− host = "smtp.example";
217− passwordeval = "cat /secrets/password.txt";
223- `services.kubernetes.addons.dashboard` was removed due to it being an outdated version.
142- `services.kubernetes.addons.dashboard` was removed due to it being an outdated version.
225- `services.kubernetes.scheduler.{port,address}` now set `--secure-port` and `--bind-address` instead of `--port` and `--address`, since the former have been deprecated and are no longer functional in kubernetes>=1.23. Ensure that you are not relying on the insecure behaviour before upgrading.
144- `services.kubernetes.scheduler.{port,address}` now set `--secure-port` and `--bind-address` instead of `--port` and `--address`, since the former have been deprecated and are no longer functional in kubernetes>=1.23. Ensure that you are not relying on the insecure behaviour before upgrading.
227−- In the PowerDNS Recursor module (`services.pdns-recursor`), default values of several IP address-related NixOS options have been updated to match the default upstream behavior.
228− In particular, Recursor by default will:
229− - listen on (and allows connections from) both IPv4 and IPv6 addresses
230− (`services.pdns-recursor.dns.address`, `services.pdns-recursor.dns.allowFrom`);
231− - allow only local connections to the REST API server (`services.pdns-recursor.api.allowFrom`).
233−- In the ncdns module, the default value of `services.ncdns.address` has been changed to the IPv6 loopback address (`::1`).
235−- `openssh` has been update to 8.9p1, changing the FIDO security key middleware interface.
237−- `git` no longer hardcodes the path to openssh' ssh binary to reduce the amount of rebuilds. If you are using git with ssh remotes and do not have a ssh binary in your enviroment consider adding `openssh` to it or switching to `gitFull`.
239- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
146- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
240 This change may require a reboot to take effect, and k3s may not be able to run if the boot cgroup hierarchy does not match its configuration.
147 This change may require a reboot to take effect, and k3s may not be able to run if the boot cgroup hierarchy does not match its configuration.
241 The previous behavior may be retained by explicitly setting `systemd.enableUnifiedCgroupHierarchy = false` in your configuration.
148 The previous behavior may be retained by explicitly setting `systemd.enableUnifiedCgroupHierarchy = false` in your configuration.
@@ -253,8 +160,6 @@ In addition to numerous new and upgraded packages, this release has the followin
256−- `services.prometheus.alertManagerTimeout` has been removed as it has been deprecated upstream and has no effect.
258- The DHCP server (`services.dhcpd4`, `services.dhcpd6`) has been hardened.
163- The DHCP server (`services.dhcpd4`, `services.dhcpd6`) has been hardened.
259 The service is now using the systemd's `DynamicUser` mechanism to run as an unprivileged dynamically-allocated user with limited capabilities.
164 The service is now using the systemd's `DynamicUser` mechanism to run as an unprivileged dynamically-allocated user with limited capabilities.
260 The dhcpd state files are now always stored in `/var/lib/dhcpd{4,6}` and the `services.dhcpd4.stateDir` and `service.dhcpd6.stateDir` options have been removed.
165 The dhcpd state files are now always stored in `/var/lib/dhcpd{4,6}` and the `services.dhcpd4.stateDir` and `service.dhcpd6.stateDir` options have been removed.
@@ -264,10 +169,6 @@ In addition to numerous new and upgraded packages, this release has the followin
265- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
170- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
267−- `hbase` version 0.98.24 has been removed. The package now defaults to version 2.4.11. Versions 1.7.1 and 3.0.0-alpha-2 are also available.
269−- `services.paperless-ng` was renamed to `services.paperless`. Accordingly, the `paperless-ng-manage` script (located in `dataDir`) was renamed to `paperless-manage`. `services.paperless` now uses `paperless-ngx`.
271- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
172- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
272 This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
173 This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
273 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
174 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
@@ -362,83 +263,6 @@ In addition to numerous new and upgraded packages, this release has the followin
362 `media_store_path` was changed from `${dataDir}/media` to `${dataDir}/media_store` if `system.stateVersion` is at least `22.05`. Files will need to be manually moved to the new
263 `media_store_path` was changed from `${dataDir}/media` to `${dataDir}/media_store` if `system.stateVersion` is at least `22.05`. Files will need to be manually moved to the new
363 location if the `stateVersion` is updated.
264 location if the `stateVersion` is updated.
365− As of Synapse 1.58.0, the old groups/communities feature has been disabled by default. It will be completely removed with Synapse 1.61.0.
367−- The Keycloak package (`pkgs.keycloak`) has been switched from the
368− Wildfly version, which will soon be deprecated, to the Quarkus based
369− version. The Keycloak service (`services.keycloak`) has been updated
370− to accommodate the change and now differs from the previous version
373− - `services.keycloak.extraConfig` has been removed in favor of the
374− new [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)
375− [`services.keycloak.settings`](#opt-services.keycloak.settings)
376− option. The available options correspond directly to parameters in
377− `conf/keycloak.conf`. Some of the most important parameters are
378− documented as suboptions, the rest can be found in the [All
379− configuration section of the Keycloak Server Installation and
381− Guide](https://www.keycloak.org/server/all-config). While the new
382− configuration is much simpler and cleaner than the old JBoss CLI
383− one, this unfortunately mean that there's no straightforward way
384− to convert an old configuration to the new format and some
385− settings may not even be available anymore.
387− - `services.keycloak.frontendUrl` was removed and the frontend URL
388− is now configured through the `hostname` family of settings in
389− [`services.keycloak.settings`](#opt-services.keycloak.settings)
390− instead. See the [Hostname section of the Keycloak Server
391− Installation and Configuration
392− Guide](https://www.keycloak.org/server/hostname) for more
393− details. Additionally, `/auth` was removed from the default
394− context path and needs to be added back in
395− [`services.keycloak.settings.http-relative-path`](#opt-services.keycloak.settings.http-relative-path)
396− if you want to keep compatibility with your current clients.
398− - `services.keycloak.bindAddress`,
399− `services.keycloak.forceBackendUrlToFrontendUrl`,
400− `services.keycloak.httpPort` and `services.keycloak.httpsPort`
401− have been removed in favor of their equivalent options in
402− [`services.keycloak.settings`](#opt-services.keycloak.settings). `httpPort`
403− and `httpsPort` have additionally had their types changed from
406− The new names are as follows:
407− - `bindAddress`: [`services.keycloak.settings.http-host`](#opt-services.keycloak.settings.http-host)
408− - `forceBackendUrlToFrontendUrl`: [`services.keycloak.settings.hostname-strict-backchannel`](#opt-services.keycloak.settings.hostname-strict-backchannel)
409− - `httpPort`: [`services.keycloak.settings.http-port`](#opt-services.keycloak.settings.http-port)
410− - `httpsPort`: [`services.keycloak.settings.https-port`](#opt-services.keycloak.settings.https-port)
412− For example, when using a reverse proxy the migration could look
417− services.keycloak = {
420− frontendUrl = "https://keycloak.example.com/auth";
421− database.passwordFile = "/run/keys/db_password";
423− "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true;
430− services.keycloak = {
434− hostname = "keycloak.example.com";
435− http-relative-path = "/auth";
438− database.passwordFile = "/run/keys/db_password";
442- The MoinMoin wiki engine (`services.moinmoin`) has been removed, because Python 2 is being retired from nixpkgs.
266- The MoinMoin wiki engine (`services.moinmoin`) has been removed, because Python 2 is being retired from nixpkgs.
444- Services in the `hadoop` module previously set `openFirewall` to true by default.
268- Services in the `hadoop` module previously set `openFirewall` to true by default.
@@ -480,10 +304,6 @@ In addition to numerous new and upgraded packages, this release has the followin
481- `services.miniflux.adminCredentialFiles` is now required, instead of defaulting to `admin` and `password`.
305- `services.miniflux.adminCredentialFiles` is now required, instead of defaulting to `admin` and `password`.
483−- The `taskserver` module no longer implicitly opens ports in the firewall
484− configuration. This is now controlled through the option
485− `services.taskserver.openFirewall`.
487- The `autorestic` package has been upgraded from 1.3.0 to 1.5.0 which introduces breaking changes in config file, check [their migration guide](https://autorestic.vercel.app/migration/1.4_1.5) for more details.
307- The `autorestic` package has been upgraded from 1.3.0 to 1.5.0 which introduces breaking changes in config file, check [their migration guide](https://autorestic.vercel.app/migration/1.4_1.5) for more details.
489- For `pkgs.python3.pkgs.ipython`, its direct dependency `pkgs.python3.pkgs.matplotlib-inline`
309- For `pkgs.python3.pkgs.ipython`, its direct dependency `pkgs.python3.pkgs.matplotlib-inline`
@@ -535,14 +355,8 @@ In addition to numerous new and upgraded packages, this release has the followin
536- `systemd-nspawn@.service` settings have been reverted to the default systemd behaviour. User namespaces are now activated by default. If you want to keep running nspawn containers without user namespaces you need to set `systemd.nspawn.<name>.execConfig.PrivateUsers = false`
356- `systemd-nspawn@.service` settings have been reverted to the default systemd behaviour. User namespaces are now activated by default. If you want to keep running nspawn containers without user namespaces you need to set `systemd.nspawn.<name>.execConfig.PrivateUsers = false`
538−- `systemd-shutdown` is now properly linked on shutdown to unmount all filesystems and device mapper devices cleanly. This can be disabled using `systemd.shutdownRamfs.enable`.
540- The Tor SOCKS proxy is now actually disabled if `services.tor.client.enable` is set to `false` (the default). If you are using this functionality but didn't change the setting or set it to `false`, you now need to set it to `true`.
358- The Tor SOCKS proxy is now actually disabled if `services.tor.client.enable` is set to `false` (the default). If you are using this functionality but didn't change the setting or set it to `false`, you now need to set it to `true`.
542−- `services.github-runner` has been hardened. Notably address families and
543− system calls have been restricted, which may adversely affect some kinds of
544− testing, e.g. using `AF_BLUETOOTH` to test bluetooth devices.
546- The terraform 0.12 compatibility has been removed and the `terraform.withPlugins` and `terraform-providers.mkProvider` implementations simplified. Providers now need to be stored under
360- The terraform 0.12 compatibility has been removed and the `terraform.withPlugins` and `terraform-providers.mkProvider` implementations simplified. Providers now need to be stored under
547`$out/libexec/terraform-providers/<registry>/<owner>/<name>/<version>/<os>_<arch>/terraform-provider-<name>_v<version>` (which mkProvider does).
361`$out/libexec/terraform-providers/<registry>/<owner>/<name>/<version>/<os>_<arch>/terraform-provider-<name>_v<version>` (which mkProvider does).
@@ -563,10 +377,6 @@ In addition to numerous new and upgraded packages, this release has the followin
563 you should change the package you refer to. If you don't need them update your
377 you should change the package you refer to. If you don't need them update your
564 commands from `otelcontribcol` to `otelcorecol` and enjoy a 7x smaller binary.
378 commands from `otelcontribcol` to `otelcorecol` and enjoy a 7x smaller binary.
566−- `services.zookeeper` has a new option `jre` for specifying the JRE to start
567− zookeeper with. It defaults to the JRE that `pkgs.zookeeper` was wrapped with,
568− instead of `pkgs.jre`. This changes the JRE to `pkgs.jdk11_headless` by default.
570- `pkgs.pgadmin` now refers to `pkgs.pgadmin4`. `pgadmin3` has been removed.
380- `pkgs.pgadmin` now refers to `pkgs.pgadmin4`. `pgadmin3` has been removed.
572- `pkgs.noto-fonts-cjk` is now deprecated in favor of `pkgs.noto-fonts-cjk-sans`
382- `pkgs.noto-fonts-cjk` is now deprecated in favor of `pkgs.noto-fonts-cjk-sans`
@@ -637,15 +447,8 @@ In addition to numerous new and upgraded packages, this release has the followin
638 See the `vscode` package for a more detailed example.
448 See the `vscode` package for a more detailed example.
640−- Existing `resholve*` functions have been renamed and nested under `pkgs.resholve`. Update uses to:
641− - `resholvePackage` -> `resholve.mkDerivation`
642− - `resholveScript` -> `resholve.writeScript`
643− - `resholveScriptBin` -> `resholve.writeScriptBin`
645- `pkgs.cosmopolitan` no longer provides the `cosmoc` command. It has been moved to `pkgs.cosmoc`.
450- `pkgs.cosmopolitan` no longer provides the `cosmoc` command. It has been moved to `pkgs.cosmoc`.
647−- `pkgs.graalvmXX-ce` packages no longer provide support for Python/Ruby/WASM, instead focusing only in Java and Native Image Support. If you need to add support back, please see the `pkgs.graalvmCEPackages.mkGraal` function to create your own customized version of GraalVM with support for what you need.
649<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
452<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
651## Other Notable Changes {#sec-release-22.05-notable-changes}
454## Other Notable Changes {#sec-release-22.05-notable-changes}
@@ -687,10 +490,6 @@ In addition to numerous new and upgraded packages, this release has the followin
687 - Support for older versions of hadoop have been added to the module
490 - Support for older versions of hadoop have been added to the module
688 - Overriding and extending site XML files has been made easier
491 - Overriding and extending site XML files has been made easier
690−- The auto-upgrade service now accepts persistent (default: true) parameter.
691− By default auto-upgrade will now run immediately if it would have been triggered at least
692− once during the time when the timer was inactive.
694- If you are using Wayland you can choose to use the Ozone Wayland support
493- If you are using Wayland you can choose to use the Ozone Wayland support
695 in Chrome and several Electron apps by setting the environment variable
494 in Chrome and several Electron apps by setting the environment variable
696 `NIXOS_OZONE_WL=1` (for example via
495 `NIXOS_OZONE_WL=1` (for example via
@@ -714,8 +513,6 @@ In addition to numerous new and upgraded packages, this release has the followin
715- `programs.zsh.autosuggestions.strategy` now takes a list of strings instead of a string.
514- `programs.zsh.autosuggestions.strategy` now takes a list of strings instead of a string.
717−- The `asterisk` and `asterisk-stable` packages were switched from `asterisk_18` to the newly-packaged `asterisk_19`. Asterisk 13 and 17 have been removed as they have reached their end of life.
719- The `services.unifi.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
516- The `services.unifi.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
720 Configurations using this default will print a warning when rebuilt.
517 Configurations using this default will print a warning when rebuilt.
@@ -740,53 +537,28 @@ In addition to numerous new and upgraded packages, this release has the followin
740 e.g. Wayland.
537 e.g. Wayland.
742- [programs.ssh.knownHosts](#opt-programs.ssh.knownHosts) has gained an `extraHostNames`
539- [programs.ssh.knownHosts](#opt-programs.ssh.knownHosts) has gained an `extraHostNames`
743− option to augment `hostNames`. It is now possible to use the attribute name of a `knownHosts`
540+ option to replace `hostNames`. `hostNames` is deprecated, but still available for now.
744− entry as the primary host name and specify secondary host names using `extraHostNames` without
745− having to duplicate the primary host name.
747- The `services.stubby` module was converted to a [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
542- The `services.stubby` module was converted to a [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
750− [services.xserver.desktopManager.runXdgAutostartIfNone](#opt-services.xserver.desktopManager.runXdgAutostartIfNone)
751− was added in order to automatically run XDG autostart files for sessions without a desktop manager.
752− This replaces helpers like the `dex` package.
754−- When setting [i18n.inputMethod.enabled](#opt-i18n.inputMethod.enabled) to `fcitx5`,
755− it no longer creates corresponding systemd user services.
756− It now relies on XDG autostart files to start and work properly in your desktop sessions.
757− If you are using only a window manager without a desktop manager, you need to enable
758− `services.xserver.desktopManager.runXdgAutostartIfNone` or using the `dex` package to make `fcitx5` work.
760−- A new module was added for the Envoy reverse proxy, providing the options `services.envoy.enable` and `services.envoy.settings`.
762- The option `services.duplicati.dataDir` has been added to allow changing the location of duplicati's files.
544- The option `services.duplicati.dataDir` has been added to allow changing the location of duplicati's files.
764- The options `boot.extraModprobeConfig` and `boot.blacklistedKernelModules` now also take effect in the initrd by copying the file `/etc/modprobe.d/nixos.conf` into the initrd.
546- The options `boot.extraModprobeConfig` and `boot.blacklistedKernelModules` now also take effect in the initrd by copying the file `/etc/modprobe.d/nixos.conf` into the initrd.
766- `nixos-generate-config` now puts the dhcp configuration in `hardware-configuration.nix` instead of `configuration.nix`.
548- `nixos-generate-config` now puts the dhcp configuration in `hardware-configuration.nix` instead of `configuration.nix`.
768−- ORY Kratos was updated to version 0.9.0-alpha.3, which introduces some breaking changes:
550+- ORY Kratos was updated to version 0.8.3-alpha.1.pre.0, which introduces some breaking changes:
769− - All endpoints at the Admin API are now exposed at `/admin/`. For example, endpoint `https://kratos:4434/identities` is now exposed at `https://kratos:4434/admin/identities`
770− - Configuration key `selfservice.whitelisted_return_urls` has been renamed to `allowed_return_urls`
771− - The `password_identifier` form field of the password login strategy has been renamed to `identifier` to make compatibility with passwordless flows possible.
772− - Instead of having a global `default_schema_url` which developers used to update their schema, you now need to define the `default_schema_id` which must reference schema ID in your config.
773− - Calling `/self-service/recovery` without flow ID or with an invalid flow ID while authenticated will now respond with an error instead of redirecting to the default page.
774 - If you are relying on the SQLite images, update your Docker Pull commands as follows:
551 - If you are relying on the SQLite images, update your Docker Pull commands as follows:
775 - `docker pull oryd/kratos:{version}`
552 - `docker pull oryd/kratos:{version}`
776 - Additionally, all passwords now have to be at least 8 characters long.
553 - Additionally, all passwords now have to be at least 8 characters long.
777 - For more details, see:
554 - For more details, see:
778 - [Release Notes for v0.8.1-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.1-alpha.1)
555 - [Release Notes for v0.8.1-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.1-alpha.1)
779 - [Release Notes for v0.8.2-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.2-alpha.1)
556 - [Release Notes for v0.8.2-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.2-alpha.1)
780− - [Release Notes for v0.9.0-alpha-1](https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.1)
781− - [Release Notes for v0.9.0-alpha-3](https://github.com/ory/kratos/releases/tag/v0.9.0-alpha.3)
784- `fetchFromSourcehut` now allows fetching repositories recursively
558- `fetchFromSourcehut` now allows fetching repositories recursively
785 using `fetchgit` or `fetchhg` if the argument `fetchSubmodules`
559 using `fetchgit` or `fetchhg` if the argument `fetchSubmodules`
786 is set to `true`.
560 is set to `true`.
788−- A module for declarative configuration of openconnect VPN profiles was added under `networking.openconnect`.
790- The `element-desktop` package now has an `useKeytar` option (defaults to `true`),
562- The `element-desktop` package now has an `useKeytar` option (defaults to `true`),
791 which allows disabling `keytar` and in turn `libsecret` usage
563 which allows disabling `keytar` and in turn `libsecret` usage
792 (which binds to native credential managers / keychain libraries).
564 (which binds to native credential managers / keychain libraries).
@@ -817,18 +589,11 @@ In addition to numerous new and upgraded packages, this release has the followin
817 and [services.logrotate.extraConfig](#opt-services.logrotate.extraConfig) will work, but issue deprecation
589 and [services.logrotate.extraConfig](#opt-services.logrotate.extraConfig) will work, but issue deprecation
818 warnings and [services.logrotate.settings](#opt-services.logrotate.settings) should now be used instead.
590 warnings and [services.logrotate.settings](#opt-services.logrotate.settings) should now be used instead.
820−- `security.pam.ussh` has been added, which allows authorizing PAM sessions based on SSH _certificates_ held within an SSH agent, using [pam-ussh](https://github.com/uber/pam-ussh).
822−- The `vscode-extensions.ionide.ionide-fsharp` package has been updated to 6.0.0 and now requires .NET 6.0.
824- The `zrepl` package has been updated from 0.4.0 to 0.5:
592- The `zrepl` package has been updated from 0.4.0 to 0.5:
826 - The RPC protocol version was bumped; all zrepl daemons in a setup must be updated and restarted before replication can resume.
594 - The RPC protocol version was bumped; all zrepl daemons in a setup must be updated and restarted before replication can resume.
827 - A bug involving encrypt-on-receive has been fixed. Read the [zrepl documentation](https://zrepl.github.io/configuration/sendrecvoptions.html#job-recv-options-placeholder) and check the output of `zfs get -r encryption,zrepl:placeholder PATH_TO_ROOTFS` on the receiver.
595 - A bug involving encrypt-on-receive has been fixed. Read the [zrepl documentation](https://zrepl.github.io/configuration/sendrecvoptions.html#job-recv-options-placeholder) and check the output of `zfs get -r encryption,zrepl:placeholder PATH_TO_ROOTFS` on the receiver.
829−- The `polybar` package has been updated from 3.5.7 to 3.6.2. See [the changelog](https://github.com/polybar/polybar/releases/tag/3.6.0) for more details.
830− - Breaking changes include changes to escaping rules in configuration values, changes in behavior when encountering invalid tag names, and changes to inter-process-messaging (IPC).
832- Renamed option `services.openssh.challengeResponseAuthentication` to `services.openssh.kbdInteractiveAuthentication`.
597- Renamed option `services.openssh.challengeResponseAuthentication` to `services.openssh.kbdInteractiveAuthentication`.
833 Reason is that the old name has been deprecated upstream.
598 Reason is that the old name has been deprecated upstream.
834 Using the old option name will still work, but produce a warning.
599 Using the old option name will still work, but produce a warning.
@@ -850,20 +615,10 @@ In addition to numerous new and upgraded packages, this release has the followin
851- The polkit service, available at `security.polkit.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
616- The polkit service, available at `security.polkit.enable`, is now disabled by default. It will automatically be enabled through services and desktop environments as needed.
853−- xfsprogs was update to version 5.15, which enables inobtcount and bigtime by default on filesystem creation. Support for these features was added in kernel 5.10 and deemed stable in kernel 5.15.
854− If you want to be able to mount XFS filesystems created with this release of xfsprogs on kernel releases older than 5.10, you need to format them with `mkfs.xfs -m bigtime=0 -m inobtcount=0`.
856−- `services.xserver.desktopManager.xfce` now includes Xfce's screen locker, `xfce4-screensaver` that is enabled by default. You can disable it by setting `false` to [services.xserver.desktopManager.xfce.enableScreensaver](#opt-services.xserver.desktopManager.xfce.enableScreensaver).
858- The `hadoop` package has added support for `aarch64-linux` and `aarch64-darwin` as of 3.3.1 ([#158613](https://github.com/NixOS/nixpkgs/pull/158613)).
618- The `hadoop` package has added support for `aarch64-linux` and `aarch64-darwin` as of 3.3.1 ([#158613](https://github.com/NixOS/nixpkgs/pull/158613)).
860- The `R` package now builds again on `aarch64-darwin` ([#158992](https://github.com/NixOS/nixpkgs/pull/158992)).
620- The `R` package now builds again on `aarch64-darwin` ([#158992](https://github.com/NixOS/nixpkgs/pull/158992)).
862−- The `nss` package was split into `nss_esr` and `nss_latest`, with `nss` being an alias for `nss_esr`. This was done to ease maintenance of `nss` and dependent high-profile packages like `firefox`.
864−- The Nextcloud module now supports to create a Mysql database automatically
865− with `services.nextcloud.database.createLocally` enabled.
867- The `spark3` package has been updated from 3.1.2 to 3.2.1 ([#160075](https://github.com/NixOS/nixpkgs/pull/160075)):
622- The `spark3` package has been updated from 3.1.2 to 3.2.1 ([#160075](https://github.com/NixOS/nixpkgs/pull/160075)):
869 - Testing has been enabled for `aarch64-linux` in addition to `x86_64-linux`.
624 - Testing has been enabled for `aarch64-linux` in addition to `x86_64-linux`.
@@ -871,8 +626,4 @@ In addition to numerous new and upgraded packages, this release has the followin
872- The `programs.nncp` options were added for generating host-global NNCP configuration.
627- The `programs.nncp` options were added for generating host-global NNCP configuration.
874−- The option `services.snapserver.openFirewall` will no longer default to
875− `true` starting with NixOS 22.11. Enable it explicitly if you need to control
876− Snapserver remotely or connect streamig clients from other hosts.
878<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
629<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
nixos/lib/make-disk-image.nix−1
@@ -170,7 +170,6 @@ let format' = format; in let
170 config.system.build.nixos-install
170 config.system.build.nixos-install
171 config.system.build.nixos-enter
171 config.system.build.nixos-enter
174 ] ++ stdenv.initialPath);
173 ] ++ stdenv.initialPath);
176 # I'm preserving the line below because I'm going to search for it across nixpkgs to consolidate
175 # I'm preserving the line below because I'm going to search for it across nixpkgs to consolidate
nixos/lib/make-options-doc/mergeJSON.py+1−3
@@ -48,9 +48,7 @@ overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
49# fix up declaration paths in lazy options, since we don't eval them from a full nixpkgs dir
49# fix up declaration paths in lazy options, since we don't eval them from a full nixpkgs dir
50for (k, v) in options.items():
50for (k, v) in options.items():
51− # The _module options are not declared in nixos/modules
52− if v.value['loc'][0] != "_module":
53− v.value['declarations'] = list(map(lambda s: f'nixos/modules/{s}', v.value['declarations']))
51+ v.value['declarations'] = list(map(lambda s: f'nixos/modules/{s}', v.value['declarations']))
55# merge both descriptions
53# merge both descriptions
56for (k, v) in overrides.items():
54for (k, v) in overrides.items():
nixos/lib/make-single-disk-zfs-image.nixdeleted−322
@@ -1,322 +0,0 @@
1−# Note: This is a private API, internal to NixOS. Its interface is subject
2−# to change without notice.
4−# The result of this builder is a single disk image, partitioned like this:
6−# * partition #1: a very small, 1MiB partition to leave room for Grub.
8−# * partition #2: boot, a partition formatted with FAT to be used for /boot.
9−# FAT is chosen to support EFI.
11−# * partition #3: nixos, a partition dedicated to a zpool.
13−# This single-disk approach does not satisfy ZFS's requirements for autoexpand,
14−# however automation can expand it anyway. For example, with
15−# `services.zfs.expandOnBoot`.
18−, # The NixOS configuration to be installed onto the disk image.
21−, # size of the FAT partition, in megabytes.
24−, # The size of the root partition, in megabytes.
27−, # The name of the ZFS pool
28− rootPoolName ? "tank"
31− rootPoolProperties ? {
34−, # pool-wide filesystem properties
35− rootPoolFilesystemProperties ? {
36− acltype = "posixacl";
39− mountpoint = "legacy";
43−, # datasets, with per-attribute options:
44− # mount: (optional) mount point in the VM
45− # properties: (optional) ZFS properties on the dataset, like filesystemProperties
47− # 1. datasets will be created from shorter to longer names as a simple topo-sort
48− # 2. you should define a root's dataset's mount for `/`
51−, # The files and directories to be placed in the target file system.
52− # This is a list of attribute sets {source, target} where `source'
53− # is the file system object (regular file or directory) to be
54− # grafted in the file system at path `target'.
57−, # The initial NixOS configuration file to be copied to
58− # /etc/nixos/configuration.nix. This configuration will be embedded
59− # inside a configuration which includes the described ZFS fileSystems.
62−, # Shell code executed after the VM has finished.
65−, name ? "nixos-disk-image"
67−, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
70−, # Include a copy of Nixpkgs in the disk image
71− includeChannel ? true
74− formatOpt = if format == "qcow2-compressed" then "qcow2" else format;
76− compress = lib.optionalString (format == "qcow2-compressed") "-c";
78− filenameSuffix = "." + {
83− }.${formatOpt} or formatOpt;
84− rootFilename = "nixos.root${filenameSuffix}";
86− # FIXME: merge with channel.nix / make-channel.nix.
89− nixpkgs = lib.cleanSource pkgs.path;
91− pkgs.runCommand "nixos-${config.system.nixos.version}" { } ''
93− cp -prd ${nixpkgs.outPath} $out/nixos
94− chmod -R u+w $out/nixos
95− if [ ! -e $out/nixos/nixpkgs ]; then
96− ln -s . $out/nixos/nixpkgs
98− rm -rf $out/nixos/.git
99− echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
102− closureInfo = pkgs.closureInfo {
103− rootPaths = [ config.system.build.toplevel ]
104− ++ (lib.optional includeChannel channelSources);
107− modulesTree = pkgs.aggregateModules
108− (with config.boot.kernelPackages; [ kernel zfs ]);
110− tools = lib.makeBinPath (
112− config.system.build.nixos-enter
113− config.system.build.nixos-install
124− hasDefinedMount = disk: ((disk.mount or null) != null);
126− stringifyProperties = prefix: properties: lib.concatStringsSep " \\\n" (
129− property: value: "${prefix} ${lib.escapeShellArg property}=${lib.escapeShellArg value}"
134− featuresToProperties = features:
138− name = "feature@${feature}";
145− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
146− sorted = lib.sort (left: right: (lib.stringLength left.name) < (lib.stringLength right.name)) datasetlist;
147− cmd = { name, value }:
149− properties = stringifyProperties "-o" (value.properties or { });
151− "zfs create -p ${properties} ${name}";
153− lib.concatMapStringsSep "\n" cmd sorted;
157− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
158− mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
159− sorted = lib.sort (left: right: (lib.stringLength left.value.mount) < (lib.stringLength right.value.mount)) mounts;
160− cmd = { name, value }:
162− mkdir -p /mnt${lib.escapeShellArg value.mount}
163− mount -t zfs ${name} /mnt${lib.escapeShellArg value.mount}
166− lib.concatMapStringsSep "\n" cmd sorted;
170− datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
171− mounts = lib.filter ({ value, ... }: hasDefinedMount value) datasetlist;
172− sorted = lib.sort (left: right: (lib.stringLength left.value.mount) > (lib.stringLength right.value.mount)) mounts;
173− cmd = { name, value }:
175− umount /mnt${lib.escapeShellArg value.mount}
178− lib.concatMapStringsSep "\n" cmd sorted;
181− fileSystemsCfgFile =
183− mountable = lib.filterAttrs (_: value: hasDefinedMount value) datasets;
185− pkgs.runCommand "filesystem-config.nix"
187− buildInputs = with pkgs; [ jq nixpkgs-fmt ];
188− filesystems = builtins.toJSON {
189− fileSystems = lib.mapAttrs'
196− device = "${dataset}";
202− passAsFile = [ "filesystems" ];
205− echo "builtins.fromJSON '''"
206− jq . < "$filesystemsPath"
214− if configFile == null
215− then fileSystemsCfgFile
217− pkgs.runCommand "configuration.nix"
219− buildInputs = with pkgs; [ nixpkgs-fmt ];
223− echo '{ imports = ['
224− printf "(%s)\n" "$(cat ${fileSystemsCfgFile})";
225− printf "(%s)\n" "$(cat ${configFile})";
233− pkgs.vmTools.override {
235− [ "zfs" "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++
236− (pkgs.lib.optional pkgs.stdenv.hostPlatform.isx86 "rtc_cmos");
237− kernel = modulesTree;
240− pkgs.runCommand name
243− QEMU_OPTS = "-drive file=$rootDiskImage,if=virtio,cache=unsafe,werror=report";
245− PATH=$PATH:${pkgs.qemu_kvm}/bin
248− rootDiskImage=root.raw
249− qemu-img create -f raw $rootDiskImage ${toString (bootSize + rootSize)}M
253− ${if formatOpt == "raw" then ''
254− mv $rootDiskImage $out/${rootFilename}
256− ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $rootDiskImage $out/${rootFilename}
258− rootDiskImage=$out/${rootFilename}
263− export PATH=${tools}:$PATH
266− cp -sv /dev/vda /dev/sda
267− cp -sv /dev/vda /dev/xvda
269− parted --script /dev/vda -- \
271− mkpart no-fs 1MiB 2MiB \
272− set 1 bios_grub on \
273− align-check optimal 1 \
274− mkpart primary fat32 2MiB ${toString bootSize}MiB \
275− align-check optimal 2 \
276− mkpart primary fat32 ${toString bootSize}MiB -1MiB \
277− align-check optimal 3 \
280− sfdisk --dump /dev/vda
284− ${stringifyProperties " -o" rootPoolProperties} \
285− ${stringifyProperties " -O" rootPoolFilesystemProperties} \
286− ${rootPoolName} /dev/vda3
287− parted --script /dev/vda -- print
293− mkfs.vfat -n ESP /dev/vda2
294− mount /dev/vda2 /mnt/boot
298− # Install a configuration.nix
299− mkdir -p /mnt/etc/nixos
300− # `cat` so it is mutable on the fs
301− cat ${mergedConfig} > /mnt/etc/nixos/configuration.nix
303− export NIX_STATE_DIR=$TMPDIR/state
304− nix-store --load-db < ${closureInfo}/registration
309− --system ${config.system.build.toplevel} \
311− ${lib.optionalString includeChannel ''--channel ${channelSources}''}
318− zpool export ${rootPoolName}
nixos/lib/make-multi-disk-zfs-image.nix → nixos/lib/make-zfs-image.nixrenamed
The content is the same.
nixos/lib/qemu-common.nix+2−2
@@ -23,8 +23,8 @@ rec {
24 qemuBinary = qemuPkg: {
24 qemuBinary = qemuPkg: {
25 x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
25 x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
26− armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -machine virt,accel=kvm:tcg -cpu max";
26+ armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -enable-kvm -machine virt -cpu host";
27− aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=max,accel=kvm:tcg -cpu max";
27+ aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -enable-kvm -machine virt,gic-version=host -cpu host";
28 powerpc64le-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
28 powerpc64le-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
29 powerpc64-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
29 powerpc64-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
30 x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
30 x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
nixos/lib/systemd-lib.nix+50−34
@@ -122,15 +122,10 @@ in rec {
122 (if isList value then value else [value]))
122 (if isList value then value else [value]))
125+ generateUnits = generateUnits' true;
125− generateUnits = { allowCollisions ? true, type, units, upstreamUnits, upstreamWants, packages ? cfg.packages, package ? cfg.package }:
127+ generateUnits' = allowCollisions: type: units: upstreamUnits: upstreamWants:
133− in pkgs.runCommand "${type}-units"
128+ pkgs.runCommand "${type}-units"
134 { preferLocalBuild = true;
129 { preferLocalBuild = true;
135 allowSubstitutes = false;
130 allowSubstitutes = false;
@@ -138,7 +133,7 @@ in rec {
139 # Copy the upstream systemd units we're interested in.
134 # Copy the upstream systemd units we're interested in.
140 for i in ${toString upstreamUnits}; do
135 for i in ${toString upstreamUnits}; do
141− fn=${package}/example/systemd/${typeDir}/$i
136+ fn=${cfg.package}/example/systemd/${type}/$i
142 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
137 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
143 if [ -L $fn ]; then
138 if [ -L $fn ]; then
144 target="$(readlink "$fn")"
139 target="$(readlink "$fn")"
@@ -155,7 +150,7 @@ in rec {
155 # Copy .wants links, but only those that point to units that
150 # Copy .wants links, but only those that point to units that
156 # we're interested in.
151 # we're interested in.
157 for i in ${toString upstreamWants}; do
152 for i in ${toString upstreamWants}; do
158− fn=${package}/example/systemd/${typeDir}/$i
153+ fn=${cfg.package}/example/systemd/${type}/$i
159 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
154 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
160 x=$out/$(basename $fn)
155 x=$out/$(basename $fn)
@@ -167,14 +162,14 @@ in rec {
169 # Symlink all units provided listed in systemd.packages.
164 # Symlink all units provided listed in systemd.packages.
170− packages="${toString packages}"
165+ packages="${toString cfg.packages}"
172 # Filter duplicate directories
167 # Filter duplicate directories
173 declare -A unique_packages
168 declare -A unique_packages
174 for k in $packages ; do unique_packages[$k]=1 ; done
169 for k in $packages ; do unique_packages[$k]=1 ; done
176 for i in ''${!unique_packages[@]}; do
171 for i in ''${!unique_packages[@]}; do
177− for fn in $i/etc/systemd/${typeDir}/* $i/lib/systemd/${typeDir}/*; do
172+ for fn in $i/etc/systemd/${type}/* $i/lib/systemd/${type}/*; do
178 if ! [[ "$fn" =~ .wants$ ]]; then
173 if ! [[ "$fn" =~ .wants$ ]]; then
179 if [[ -d "$fn" ]]; then
174 if [[ -d "$fn" ]]; then
180 targetDir="$out/$(basename "$fn")"
175 targetDir="$out/$(basename "$fn")"
@@ -275,9 +270,9 @@ in rec {
275 { Conflicts = toString config.conflicts; }
270 { Conflicts = toString config.conflicts; }
276 // optionalAttrs (config.requisite != [])
271 // optionalAttrs (config.requisite != [])
277 { Requisite = toString config.requisite; }
272 { Requisite = toString config.requisite; }
278− // optionalAttrs (config ? restartTriggers && config.restartTriggers != [])
273+ // optionalAttrs (config.restartTriggers != [])
279 { X-Restart-Triggers = toString config.restartTriggers; }
274 { X-Restart-Triggers = toString config.restartTriggers; }
280− // optionalAttrs (config ? reloadTriggers && config.reloadTriggers != [])
275+ // optionalAttrs (config.reloadTriggers != [])
281 { X-Reload-Triggers = toString config.reloadTriggers; }
276 { X-Reload-Triggers = toString config.reloadTriggers; }
282 // optionalAttrs (config.description != "") {
277 // optionalAttrs (config.description != "") {
283 Description = config.description; }
278 Description = config.description; }
@@ -293,24 +288,45 @@ in rec {
296− serviceConfig = { config, ... }: {
291+ serviceConfig = { name, config, ... }: {
297− config.environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
292+ config = mkMerge
300− stage2ServiceConfig = {
301− imports = [ serviceConfig ];
302− # Default path for systemd services. Should be quite minimal.
293+ [ { # Default path for systemd services. Should be quite minimal.
303− config.path = mkAfter [
294+ path = mkAfter
304− pkgs.coreutils
295+ [ pkgs.coreutils
305− pkgs.findutils
296+ pkgs.findutils
306− pkgs.gnugrep
297+ pkgs.gnugrep
307− pkgs.gnused
298+ pkgs.gnused
301+ environment.PATH = "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
303+ (mkIf (config.preStart != "")
304+ { serviceConfig.ExecStartPre =
305+ [ (makeJobScript "${name}-pre-start" config.preStart) ];
307+ (mkIf (config.script != "")
308+ { serviceConfig.ExecStart =
309+ makeJobScript "${name}-start" config.script + " " + config.scriptArgs;
311+ (mkIf (config.postStart != "")
312+ { serviceConfig.ExecStartPost =
313+ [ (makeJobScript "${name}-post-start" config.postStart) ];
315+ (mkIf (config.reload != "")
316+ { serviceConfig.ExecReload =
317+ makeJobScript "${name}-reload" config.reload;
319+ (mkIf (config.preStop != "")
320+ { serviceConfig.ExecStop =
321+ makeJobScript "${name}-pre-stop" config.preStop;
323+ (mkIf (config.postStop != "")
324+ { serviceConfig.ExecStopPost =
325+ makeJobScript "${name}-post-stop" config.postStop;
312− stage1ServiceConfig = serviceConfig;
314 mountConfig = { config, ... }: {
330 mountConfig = { config, ... }: {
315 config = {
331 config = {
316 mountConfig =
332 mountConfig =
@@ -358,12 +374,12 @@ in rec {
358 # systemd max line length is now 1MiB
374 # systemd max line length is now 1MiB
359 # https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
375 # https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
360 in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${name}.service’ is too long." else s) (attrNames env)}
376 in if stringLength s >= 1048576 then throw "The value of the environment variable ‘${n}’ in systemd service ‘${name}.service’ is too long." else s) (attrNames env)}
361− ${if def ? reloadIfChanged && def.reloadIfChanged then ''
377+ ${if def.reloadIfChanged then ''
362 X-ReloadIfChanged=true
378 X-ReloadIfChanged=true
363− '' else if (def ? restartIfChanged && !def.restartIfChanged) then ''
379+ '' else if !def.restartIfChanged then ''
364 X-RestartIfChanged=false
380 X-RestartIfChanged=false
365 '' else ""}
381 '' else ""}
366− ${optionalString (def ? stopIfChanged && !def.stopIfChanged) "X-StopIfChanged=false"}
382+ ${optionalString (!def.stopIfChanged) "X-StopIfChanged=false"}
367 ${attrsToSection def.serviceConfig}
383 ${attrsToSection def.serviceConfig}
nixos/lib/systemd-types.nixdeleted−69
@@ -1,69 +0,0 @@
1−{ lib, systemdUtils, pkgs }:
4−with systemdUtils.unitOptions;
9− attrsOf (submodule ({ name, config, ... }: {
10− options = concreteUnitOptions;
11− config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
14− services = with types; attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
15− initrdServices = with types; attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
17− targets = with types; attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
18− initrdTargets = with types; attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
20− sockets = with types; attrsOf (submodule [ stage2SocketOptions unitConfig ]);
21− initrdSockets = with types; attrsOf (submodule [ stage1SocketOptions unitConfig ]);
23− timers = with types; attrsOf (submodule [ stage2TimerOptions unitConfig ]);
24− initrdTimers = with types; attrsOf (submodule [ stage1TimerOptions unitConfig ]);
26− paths = with types; attrsOf (submodule [ stage2PathOptions unitConfig ]);
27− initrdPaths = with types; attrsOf (submodule [ stage1PathOptions unitConfig ]);
29− slices = with types; attrsOf (submodule [ stage2SliceOptions unitConfig ]);
30− initrdSlices = with types; attrsOf (submodule [ stage1SliceOptions unitConfig ]);
32− mounts = with types; listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
33− initrdMounts = with types; listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
35− automounts = with types; listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
36− initrdAutomounts = with types; attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
38− initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
40− enable = mkEnableOption "copying of this file and symlinking it" // { default = true; };
52− type = types.nullOr types.lines;
53− description = "Text of the file.";
58− description = "Path of the source file.";
63− source = mkIf (config.text != null) (
64− let name' = "initrd-" + baseNameOf name;
65− in mkDerivedConfig options.text (pkgs.writeText name')
nixos/lib/systemd-unit-options.nix+401−560
@@ -94,618 +94,459 @@ in rec {
97− commonUnitOptions = {
97+ commonUnitOptions = sharedOptions // {
98− options = sharedOptions // {
100− description = mkOption {
102− type = types.singleLineStr;
103− description = "Description of this unit used in systemd messages and progress indicators.";
106− documentation = mkOption {
108− type = types.listOf types.str;
109− description = "A list of URIs referencing documentation for this unit or its configuration.";
112− requires = mkOption {
114− type = types.listOf unitNameType;
116− Start the specified units when this unit is started, and stop
117− this unit when the specified units are stopped or fail.
123− type = types.listOf unitNameType;
125− Start the specified units when this unit is started.
131− type = types.listOf unitNameType;
133− If the specified units are started at the same time as
134− this unit, delay this unit until they have started.
140− type = types.listOf unitNameType;
142− If the specified units are started at the same time as
143− this unit, delay them until this unit has started.
147− bindsTo = mkOption {
149− type = types.listOf unitNameType;
151− Like ‘requires’, but in addition, if the specified units
152− unexpectedly disappear, this unit will be stopped as well.
158− type = types.listOf unitNameType;
160− If the specified units are stopped or restarted, then this
161− unit is stopped or restarted as well.
165− conflicts = mkOption {
167− type = types.listOf unitNameType;
169− If the specified units are started, then this unit is stopped
174− requisite = mkOption {
176− type = types.listOf unitNameType;
178− Similar to requires. However if the units listed are not started,
179− they will not be started and the transaction will fail.
183− unitConfig = mkOption {
185− example = { RequiresMountsFor = "/data"; };
186− type = types.attrsOf unitOption;
188− Each attribute in this set specifies an option in the
189− <literal>[Unit]</literal> section of the unit. See
190− <citerefentry><refentrytitle>systemd.unit</refentrytitle>
191− <manvolnum>5</manvolnum></citerefentry> for details.
195− onFailure = mkOption {
197− type = types.listOf unitNameType;
199− A list of one or more units that are activated when
200− this unit enters the "failed" state.
204− startLimitBurst = mkOption {
207− Configure unit start rate limiting. Units which are started
208− more than startLimitBurst times within an interval time
209− interval are not permitted to start any more.
213− startLimitIntervalSec = mkOption {
216− Configure unit start rate limiting. Units which are started
217− more than startLimitBurst times within an interval time
218− interval are not permitted to start any more.
99+ description = mkOption {
101+ type = types.singleLineStr;
102+ description = "Description of this unit used in systemd messages and progress indicators.";
225− stage2CommonUnitOptions = {
105+ documentation = mkOption {
231− restartTriggers = mkOption {
232− default = [];
106+ default = [];
233− type = types.listOf types.unspecified;
107+ type = types.listOf types.str;
234− description = ''
108+ description = "A list of URIs referencing documentation for this unit or its configuration.";
235− An arbitrary list of items such as derivations. If any item
236− in the list changes between reconfigurations, the service will
241− reloadTriggers = mkOption {
243− type = types.listOf unitOption;
245− An arbitrary list of items such as derivations. If any item
246− in the list changes between reconfigurations, the service will
247− be reloaded. If anything but a reload trigger changes in the
248− unit file, the unit will be restarted instead.
253− stage1CommonUnitOptions = commonUnitOptions;
255− serviceOptions = { name, config, ... }: {
258− environment = mkOption {
260− type = with types; attrsOf (nullOr (oneOf [ str path package ]));
261− example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
262− description = "Environment variables passed to the service's processes.";
267− type = with types; listOf (oneOf [ package str ]);
269− Packages added to the service's <envar>PATH</envar>
270− environment variable. Both the <filename>bin</filename>
271− and <filename>sbin</filename> subdirectories of each
276− serviceConfig = mkOption {
281− type = types.addCheck (types.attrsOf unitOption) checkService;
283− Each attribute in this set specifies an option in the
284− <literal>[Service]</literal> section of the unit. See
285− <citerefentry><refentrytitle>systemd.service</refentrytitle>
286− <manvolnum>5</manvolnum></citerefentry> for details.
293− description = "Shell commands executed as the service's main process.";
296− scriptArgs = mkOption {
299− description = "Arguments passed to the main process script.";
302− preStart = mkOption {
306− Shell commands executed before the service's main process
311− postStart = mkOption {
315− Shell commands executed after the service's main process
324− Shell commands executed when the service's main process
329− preStop = mkOption {
333− Shell commands executed to stop the service.
337− postStop = mkOption {
341− Shell commands executed after the service's main process
346− jobScripts = mkOption {
347− type = with types; coercedTo path singleton (listOf path);
349− description = "A list of all job script derivations of this unit.";
356− (mkIf (config.preStart != "") rec {
357− jobScripts = makeJobScript "${name}-pre-start" config.preStart;
358− serviceConfig.ExecStartPre = [ jobScripts ];
360− (mkIf (config.script != "") rec {
361− jobScripts = makeJobScript "${name}-start" config.script;
362− serviceConfig.ExecStart = jobScripts + " " + config.scriptArgs;
364− (mkIf (config.postStart != "") rec {
365− jobScripts = (makeJobScript "${name}-post-start" config.postStart);
366− serviceConfig.ExecStartPost = [ jobScripts ];
368− (mkIf (config.reload != "") rec {
369− jobScripts = makeJobScript "${name}-reload" config.reload;
370− serviceConfig.ExecReload = jobScripts;
372− (mkIf (config.preStop != "") rec {
373− jobScripts = makeJobScript "${name}-pre-stop" config.preStop;
374− serviceConfig.ExecStop = jobScripts;
376− (mkIf (config.postStop != "") rec {
377− jobScripts = makeJobScript "${name}-post-stop" config.postStop;
378− serviceConfig.ExecStopPost = jobScripts;
111+ requires = mkOption {
113+ type = types.listOf unitNameType;
115+ Start the specified units when this unit is started, and stop
116+ this unit when the specified units are stopped or fail.
384− stage2ServiceOptions = {
386− stage2CommonUnitOptions
391− restartIfChanged = mkOption {
120+ wants = mkOption {
395− Whether the service should be restarted during a NixOS
396− configuration switch if its definition has changed.
400− reloadIfChanged = mkOption {
402− default = false;
121+ default = [];
404− Whether the service should be reloaded during a NixOS
405− configuration switch if its definition has changed. If
406− enabled, the value of <option>restartIfChanged</option> is
409− This option should not be used anymore in favor of
410− <option>reloadTriggers</option> which allows more granular
411− control of when a service is reloaded and when a service
416− stopIfChanged = mkOption {
417− type = types.bool;
122+ type = types.listOf unitNameType;
418− default = true;
123+ description = ''
419− description = ''
124+ Start the specified units when this unit is started.
420− If set, a changed unit is restarted by calling
421− <command>systemctl stop</command> in the old configuration,
422− then <command>systemctl start</command> in the new one.
423− Otherwise, it is restarted in a single step using
424− <command>systemctl restart</command> in the new configuration.
425− The latter is less correct because it runs the
426− <literal>ExecStop</literal> commands from the new
431− startAt = mkOption {
432− type = with types; either str (listOf str);
434− example = "Sun 14:00:00";
436− Automatically start this unit at the given date/time, which
437− must be in the format described in
438− <citerefentry><refentrytitle>systemd.time</refentrytitle>
439− <manvolnum>7</manvolnum></citerefentry>. This is equivalent
440− to adding a corresponding timer unit with
441− <option>OnCalendar</option> set to the value given here.
443− apply = v: if isList v then v else [ v ];
448− stage1ServiceOptions = {
128+ after = mkOption {
449− imports = [
129+ default = [];
450− stage1CommonUnitOptions
130+ type = types.listOf unitNameType;
451− serviceOptions
131+ description = ''
452− ];
132+ If the specified units are started at the same time as
133+ this unit, delay this unit until they have started.
139+ type = types.listOf unitNameType;
141+ If the specified units are started at the same time as
142+ this unit, delay them until this unit has started.
459− listenStreams = mkOption {
146+ bindsTo = mkOption {
461− type = types.listOf types.str;
462− example = [ "0.0.0.0:993" "/run/my-socket" ];
464− For each item in this list, a <literal>ListenStream</literal>
465− option in the <literal>[Socket]</literal> section will be created.
469− listenDatagrams = mkOption {
470− default = [];
147+ default = [];
471− type = types.listOf types.str;
148+ type = types.listOf unitNameType;
472− example = [ "0.0.0.0:993" "/run/my-socket" ];
473− description = ''
149+ description = ''
474− For each item in this list, a <literal>ListenDatagram</literal>
150+ Like ‘requires’, but in addition, if the specified units
475− option in the <literal>[Socket]</literal> section will be created.
151+ unexpectedly disappear, this unit will be stopped as well.
479− socketConfig = mkOption {
481− example = { ListenStream = "/run/my-socket"; };
482− type = types.attrsOf unitOption;
484− Each attribute in this set specifies an option in the
485− <literal>[Socket]</literal> section of the unit. See
486− <citerefentry><refentrytitle>systemd.socket</refentrytitle>
487− <manvolnum>5</manvolnum></citerefentry> for details.
157+ type = types.listOf unitNameType;
159+ If the specified units are stopped or restarted, then this
160+ unit is stopped or restarted as well.
494− stage2SocketOptions = {
164+ conflicts = mkOption {
495− imports = [
165+ default = [];
496− stage2CommonUnitOptions
166+ type = types.listOf unitNameType;
497− socketOptions
167+ description = ''
498− ];
168+ If the specified units are started, then this unit is stopped
501− stage1SocketOptions = {
173+ requisite = mkOption {
502− imports = [
174+ default = [];
503− stage1CommonUnitOptions
175+ type = types.listOf unitNameType;
504− socketOptions
176+ description = ''
505− ];
177+ Similar to requires. However if the units listed are not started,
178+ they will not be started and the transaction will fail.
182+ unitConfig = mkOption {
184+ example = { RequiresMountsFor = "/data"; };
185+ type = types.attrsOf unitOption;
187+ Each attribute in this set specifies an option in the
188+ <literal>[Unit]</literal> section of the unit. See
189+ <citerefentry><refentrytitle>systemd.unit</refentrytitle>
190+ <manvolnum>5</manvolnum></citerefentry> for details.
509− timerOptions = {
194+ restartTriggers = mkOption {
510− options = {
195+ default = [];
196+ type = types.listOf types.unspecified;
198+ An arbitrary list of items such as derivations. If any item
199+ in the list changes between reconfigurations, the service will
512− timerConfig = mkOption {
204+ reloadTriggers = mkOption {
513− default = {};
205+ default = [];
514− example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
515− type = types.attrsOf unitOption;
206+ type = types.listOf unitOption;
516− description = ''
207+ description = ''
517− Each attribute in this set specifies an option in the
208+ An arbitrary list of items such as derivations. If any item
518− <literal>[Timer]</literal> section of the unit. See
209+ in the list changes between reconfigurations, the service will
519− <citerefentry><refentrytitle>systemd.timer</refentrytitle>
210+ be reloaded. If anything but a reload trigger changes in the
520− <manvolnum>5</manvolnum></citerefentry> and
211+ unit file, the unit will be restarted instead.
521− <citerefentry><refentrytitle>systemd.time</refentrytitle>
522− <manvolnum>7</manvolnum></citerefentry> for details.
215+ onFailure = mkOption {
217+ type = types.listOf unitNameType;
219+ A list of one or more units that are activated when
220+ this unit enters the "failed" state.
529− stage2TimerOptions = {
224+ startLimitBurst = mkOption {
530− imports = [
225+ type = types.int;
531− stage2CommonUnitOptions
226+ description = ''
532− timerOptions
227+ Configure unit start rate limiting. Units which are started
228+ more than startLimitBurst times within an interval time
229+ interval are not permitted to start any more.
233+ startLimitIntervalSec = mkOption {
236+ Configure unit start rate limiting. Units which are started
237+ more than startLimitBurst times within an interval time
238+ interval are not permitted to start any more.
536− stage1TimerOptions = {
538− stage1CommonUnitOptions
544− pathOptions = {
245+ serviceOptions = commonUnitOptions // {
547− pathConfig = mkOption {
247+ environment = mkOption {
548− default = {};
248+ default = {};
549− example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
550− type = types.attrsOf unitOption;
249+ type = with types; attrsOf (nullOr (oneOf [ str path package ]));
551− description = ''
250+ example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
552− Each attribute in this set specifies an option in the
251+ description = "Environment variables passed to the service's processes.";
553− <literal>[Path]</literal> section of the unit. See
554− <citerefentry><refentrytitle>systemd.path</refentrytitle>
555− <manvolnum>5</manvolnum></citerefentry> for details.
256+ type = with types; listOf (oneOf [ package str ]);
258+ Packages added to the service's <envar>PATH</envar>
259+ environment variable. Both the <filename>bin</filename>
260+ and <filename>sbin</filename> subdirectories of each
562− stage2PathOptions = {
265+ serviceConfig = mkOption {
563− imports = [
266+ default = {};
564− stage2CommonUnitOptions
267+ example =
565− pathOptions
268+ { RestartSec = 5;
270+ type = types.addCheck (types.attrsOf unitOption) checkService;
272+ Each attribute in this set specifies an option in the
273+ <literal>[Service]</literal> section of the unit. See
274+ <citerefentry><refentrytitle>systemd.service</refentrytitle>
275+ <manvolnum>5</manvolnum></citerefentry> for details.
569− stage1PathOptions = {
279+ script = mkOption {
570− imports = [
280+ type = types.lines;
571− stage1CommonUnitOptions
281+ default = "";
572− pathOptions
282+ description = "Shell commands executed as the service's main process.";
285+ scriptArgs = mkOption {
288+ description = "Arguments passed to the main process script.";
580− what = mkOption {
291+ preStart = mkOption {
581− example = "/dev/sda1";
582− type = types.str;
292+ type = types.lines;
583− description = "Absolute path of device node, file or other resource. (Mandatory)";
293+ default = "";
589− description = ''
294+ description = ''
590− Absolute path of a directory of the mount point.
295+ Shell commands executed before the service's main process
591− Will be created if it doesn't exist. (Mandatory)
296+ is started.
599− description = "File system type.";
602− options = mkOption {
604− example = "noatime";
605− type = types.commas;
606− description = "Options used to mount the file system.";
609− mountConfig = mkOption {
611− example = { DirectoryMode = "0775"; };
612− type = types.attrsOf unitOption;
614− Each attribute in this set specifies an option in the
615− <literal>[Mount]</literal> section of the unit. See
616− <citerefentry><refentrytitle>systemd.mount</refentrytitle>
617− <manvolnum>5</manvolnum></citerefentry> for details.
300+ postStart = mkOption {
304+ Shell commands executed after the service's main process
624− stage2MountOptions = {
309+ reload = mkOption {
625− imports = [
310+ type = types.lines;
626− stage2CommonUnitOptions
311+ default = "";
627− mountOptions
312+ description = ''
628− ];
313+ Shell commands executed when the service's main process
318+ preStop = mkOption {
322+ Shell commands executed to stop the service.
326+ postStop = mkOption {
330+ Shell commands executed after the service's main process
335+ restartIfChanged = mkOption {
339+ Whether the service should be restarted during a NixOS
340+ configuration switch if its definition has changed.
344+ reloadIfChanged = mkOption {
348+ Whether the service should be reloaded during a NixOS
349+ configuration switch if its definition has changed. If
350+ enabled, the value of <option>restartIfChanged</option> is
353+ This option should not be used anymore in favor of
354+ <option>reloadTriggers</option> which allows more granular
355+ control of when a service is reloaded and when a service
360+ stopIfChanged = mkOption {
364+ If set, a changed unit is restarted by calling
365+ <command>systemctl stop</command> in the old configuration,
366+ then <command>systemctl start</command> in the new one.
367+ Otherwise, it is restarted in a single step using
368+ <command>systemctl restart</command> in the new configuration.
369+ The latter is less correct because it runs the
370+ <literal>ExecStop</literal> commands from the new
375+ startAt = mkOption {
376+ type = with types; either str (listOf str);
378+ example = "Sun 14:00:00";
380+ Automatically start this unit at the given date/time, which
381+ must be in the format described in
382+ <citerefentry><refentrytitle>systemd.time</refentrytitle>
383+ <manvolnum>7</manvolnum></citerefentry>. This is equivalent
384+ to adding a corresponding timer unit with
385+ <option>OnCalendar</option> set to the value given here.
387+ apply = v: if isList v then v else [ v ];
631− stage1MountOptions = {
633− stage1CommonUnitOptions
638− automountOptions = {
645− Absolute path of a directory of the mount point.
646− Will be created if it doesn't exist. (Mandatory)
650− automountConfig = mkOption {
652− example = { DirectoryMode = "0775"; };
653− type = types.attrsOf unitOption;
655− Each attribute in this set specifies an option in the
656− <literal>[Automount]</literal> section of the unit. See
657− <citerefentry><refentrytitle>systemd.automount</refentrytitle>
658− <manvolnum>5</manvolnum></citerefentry> for details.
393+ socketOptions = commonUnitOptions // {
395+ listenStreams = mkOption {
397+ type = types.listOf types.str;
398+ example = [ "0.0.0.0:993" "/run/my-socket" ];
400+ For each item in this list, a <literal>ListenStream</literal>
401+ option in the <literal>[Socket]</literal> section will be created.
405+ listenDatagrams = mkOption {
407+ type = types.listOf types.str;
408+ example = [ "0.0.0.0:993" "/run/my-socket" ];
410+ For each item in this list, a <literal>ListenDatagram</literal>
411+ option in the <literal>[Socket]</literal> section will be created.
415+ socketConfig = mkOption {
417+ example = { ListenStream = "/run/my-socket"; };
418+ type = types.attrsOf unitOption;
420+ Each attribute in this set specifies an option in the
421+ <literal>[Socket]</literal> section of the unit. See
422+ <citerefentry><refentrytitle>systemd.socket</refentrytitle>
423+ <manvolnum>5</manvolnum></citerefentry> for details.
665− stage2AutomountOptions = {
429+
666− imports = [
430+ timerOptions = commonUnitOptions // {
667− stage2CommonUnitOptions
431+
668− automountOptions
432+ timerConfig = mkOption {
434+ example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
435+ type = types.attrsOf unitOption;
437+ Each attribute in this set specifies an option in the
438+ <literal>[Timer]</literal> section of the unit. See
439+ <citerefentry><refentrytitle>systemd.timer</refentrytitle>
440+ <manvolnum>5</manvolnum></citerefentry> and
441+ <citerefentry><refentrytitle>systemd.time</refentrytitle>
442+ <manvolnum>7</manvolnum></citerefentry> for details.
672− stage1AutomountOptions = {
448+
673− imports = [
449+ pathOptions = commonUnitOptions // {
674− stage1CommonUnitOptions
450+
675− automountOptions
451+ pathConfig = mkOption {
453+ example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
454+ type = types.attrsOf unitOption;
456+ Each attribute in this set specifies an option in the
457+ <literal>[Path]</literal> section of the unit. See
458+ <citerefentry><refentrytitle>systemd.path</refentrytitle>
459+ <manvolnum>5</manvolnum></citerefentry> for details.
682− sliceConfig = mkOption {
466+ mountOptions = commonUnitOptions // {
684− example = { MemoryMax = "2G"; };
468+ what = mkOption {
685− type = types.attrsOf unitOption;
469+ example = "/dev/sda1";
686− description = ''
470+ type = types.str;
687− Each attribute in this set specifies an option in the
471+ description = "Absolute path of device node, file or other resource. (Mandatory)";
688− <literal>[Slice]</literal> section of the unit. See
472+ };
689− <citerefentry><refentrytitle>systemd.slice</refentrytitle>
473+
690− <manvolnum>5</manvolnum></citerefentry> for details.
474+ where = mkOption {
478+ Absolute path of a directory of the mount point.
479+ Will be created if it doesn't exist. (Mandatory)
487+ description = "File system type.";
490+ options = mkOption {
492+ example = "noatime";
493+ type = types.commas;
494+ description = "Options used to mount the file system.";
497+ mountConfig = mkOption {
499+ example = { DirectoryMode = "0775"; };
500+ type = types.attrsOf unitOption;
502+ Each attribute in this set specifies an option in the
503+ <literal>[Mount]</literal> section of the unit. See
504+ <citerefentry><refentrytitle>systemd.mount</refentrytitle>
505+ <manvolnum>5</manvolnum></citerefentry> for details.
697− stage2SliceOptions = {
510+ automountOptions = commonUnitOptions // {
699− stage2CommonUnitOptions
512+ where = mkOption {
700− sliceOptions
513+ example = "/mnt";
516+ Absolute path of a directory of the mount point.
517+ Will be created if it doesn't exist. (Mandatory)
521+ automountConfig = mkOption {
523+ example = { DirectoryMode = "0775"; };
524+ type = types.attrsOf unitOption;
526+ Each attribute in this set specifies an option in the
527+ <literal>[Automount]</literal> section of the unit. See
528+ <citerefentry><refentrytitle>systemd.automount</refentrytitle>
529+ <manvolnum>5</manvolnum></citerefentry> for details.
704− stage1SliceOptions = {
534+ targetOptions = commonUnitOptions;
706− stage1CommonUnitOptions
536+ sliceOptions = commonUnitOptions // {
538+ sliceConfig = mkOption {
540+ example = { MemoryMax = "2G"; };
541+ type = types.attrsOf unitOption;
543+ Each attribute in this set specifies an option in the
544+ <literal>[Slice]</literal> section of the unit. See
545+ <citerefentry><refentrytitle>systemd.slice</refentrytitle>
546+ <manvolnum>5</manvolnum></citerefentry> for details.
nixos/lib/test-driver/test_driver/driver.py+1−1
@@ -86,7 +86,7 @@ class Driver:
87 def subtest(self, name: str) -> Iterator[None]:
87 def subtest(self, name: str) -> Iterator[None]:
88 """Group logs under a given test name"""
88 """Group logs under a given test name"""
89− with rootlog.nested("subtest: " + name):
89+ with rootlog.nested(name):
92 return True
92 return True
nixos/lib/test-driver/test_driver/logger.py+2−6
@@ -1,4 +1,4 @@
1−from colorama import Style, Fore
1+from colorama import Style
2from contextlib import contextmanager
2from contextlib import contextmanager
3from typing import Any, Dict, Iterator
3from typing import Any, Dict, Iterator
4from queue import Queue, Empty
4from queue import Queue, Empty
@@ -81,11 +81,7 @@ class Logger:
82 @contextmanager
82 @contextmanager
83 def nested(self, message: str, attributes: Dict[str, str] = {}) -> Iterator[None]:
83 def nested(self, message: str, attributes: Dict[str, str] = {}) -> Iterator[None]:
85− self.maybe_prefix(
84+ self._eprint(self.maybe_prefix(message, attributes))
86− Style.BRIGHT + Fore.GREEN + message + Style.RESET_ALL, attributes
90 self.xml.startElement("nest", attrs={})
86 self.xml.startElement("nest", attrs={})
91 self.xml.startElement("head", attributes)
87 self.xml.startElement("head", attributes)
nixos/lib/test-driver/test_driver/machine.py+2−9
@@ -526,17 +526,10 @@ class Machine:
526 self.run_callbacks()
526 self.run_callbacks()
527 self.connect()
527 self.connect()
529− # Always run command with shell opts
530− command = f"set -euo pipefail; {command}"
533 if timeout is not None:
529 if timeout is not None:
534− timeout_str = f"timeout {timeout}"
537− f"{timeout_str} sh -c {shlex.quote(command)} | (base64 --wrap 0; echo)\n"
530+ command = "timeout {} sh -c {}".format(timeout, shlex.quote(command))
532+ out_command = f"( set -euo pipefail; {command} ) | (base64 --wrap 0; echo)\n"
540 assert self.shell
533 assert self.shell
541 self.shell.send(out_command.encode())
534 self.shell.send(out_command.encode())
@@ -194,25 +194,8 @@ rec {
194 (( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit
194 (( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit
197− /* Remove packages of packagesToRemove from packages, based on their names.
198− Relies on package names and has quadratic complexity so use with caution!
201− removePackagesByName :: [package] -> [package] -> [package]
204− removePackagesByName [ nautilus file-roller ] [ file-roller totem ]
207− removePackagesByName = packages: packagesToRemove:
209− namesToRemove = map lib.getName packagesToRemove;
211− lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages;
213 systemdUtils = {
197 systemdUtils = {
214 lib = import ./systemd-lib.nix { inherit lib config pkgs; };
198 lib = import ./systemd-lib.nix { inherit lib config pkgs; };
215 unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; };
199 unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; };
216− types = import ./systemd-types.nix { inherit lib systemdUtils pkgs; };
nixos/maintainers/scripts/ec2/amazon-image.nix+1−1
@@ -73,7 +73,7 @@ in {
76− zfsBuilder = import ../../../lib/make-multi-disk-zfs-image.nix {
76+ zfsBuilder = import ../../../lib/make-zfs-image.nix {
77 inherit lib config configFile;
77 inherit lib config configFile;
78 inherit (cfg) contents format name;
78 inherit (cfg) contents format name;
79 pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
79 pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
nixos/maintainers/scripts/lxd/lxd-image.nix+1−1
@@ -27,7 +27,7 @@ with lib;
27 networking.useDHCP = false;
27 networking.useDHCP = false;
28 networking.interfaces.eth0.useDHCP = true;
28 networking.interfaces.eth0.useDHCP = true;
30− # As this is intended as a standalone image, undo some of the minimal profile stuff
30+ # As this is intended as a stadalone image, undo some of the minimal profile stuff
31 documentation.enable = true;
31 documentation.enable = true;
32 documentation.nixos.enable = true;
32 documentation.nixos.enable = true;
33 environment.noXlibs = false;
33 environment.noXlibs = false;
nixos/maintainers/scripts/openstack/openstack-image-zfs.nixdeleted−101
@@ -1,101 +0,0 @@
1−# nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }"
3−{ config, lib, pkgs, ... }:
5− inherit (lib) mkOption types;
7− cfg = config.openstackImage;
8− imageBootMode = if config.openstack.efi then "uefi" else "legacy-bios";
12− ../../../modules/virtualisation/openstack-config.nix
13− ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix);
16− options.openstackImage = {
19− description = "The name of the generated derivation";
20− default = "nixos-openstack-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
26− description = "The size in MB of the image";
30− type = types.enum [ "raw" "qcow2" ];
32− description = "The image format to output";
37− documentation.enable = copyChannel;
43− "tank/system/root".mount = "/";
44− "tank/system/var".mount = "/var";
45− "tank/local/nix".mount = "/nix";
46− "tank/user/home".mount = "/home";
51− system.build.openstackImage = import ../../../lib/make-single-disk-zfs-image.nix {
53− inherit (cfg) contents format name;
54− pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
56− configFile = pkgs.writeText "configuration.nix"
58− { modulesPath, ... }: {
59− imports = [ "''${modulesPath}/virtualisation/openstack-config.nix" ];
60− openstack.zfs.enable = true;
64− includeChannel = copyChannel;
68− rootSize = cfg.sizeMB;
69− rootPoolProperties = {
74− datasets = config.openstack.zfs.datasets;
77− extension=''${rootDiskImage##*.}
78− friendlyName=$out/${cfg.name}
79− rootDisk="$friendlyName.root.$extension"
80− mv "$rootDiskImage" "$rootDisk"
82− mkdir -p $out/nix-support
83− echo "file ${cfg.format} $rootDisk" >> $out/nix-support/hydra-build-products
85− ${pkgs.jq}/bin/jq -n \
86− --arg system_label ${lib.escapeShellArg config.system.nixos.label} \
87− --arg system ${lib.escapeShellArg pkgs.stdenv.hostPlatform.system} \
88− --arg root_logical_bytes "$(${pkgs.qemu}/bin/qemu-img info --output json "$rootDisk" | ${pkgs.jq}/bin/jq '."virtual-size"')" \
89− --arg boot_mode "${imageBootMode}" \
90− --arg root "$rootDisk" \
92− | .label = $system_label
93− | .boot_mode = $boot_mode
95− | .disks.root.logical_bytes = $root_logical_bytes
96− | .disks.root.file = $root
97− ' > $out/nix-support/image-info.json
nixos/maintainers/scripts/openstack/openstack-image.nix+8−9
@@ -1,18 +1,17 @@
1# nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }"
1# nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }"
3{ config, lib, pkgs, ... }:
3{ config, lib, pkgs, ... }:
9− ../../../modules/virtualisation/openstack-config.nix
10− ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix);
12− documentation.enable = copyChannel;
5+with lib;
9+ [ ../../../modules/installer/cd-dvd/channel.nix
10+ ../../../modules/virtualisation/openstack-config.nix
14 system.build.openstackImage = import ../../../lib/make-disk-image.nix {
13 system.build.openstackImage = import ../../../lib/make-disk-image.nix {
15− inherit lib config copyChannel;
14+ inherit lib config;
16 additionalSpace = "1024M";
15 additionalSpace = "1024M";
17 pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
16 pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
18 format = "qcow2";
17 format = "qcow2";
nixos/modules/config/console.nix+9−23
@@ -12,7 +12,7 @@ let
13 optimizedKeymap = pkgs.runCommand "keymap" {
13 optimizedKeymap = pkgs.runCommand "keymap" {
14 nativeBuildInputs = [ pkgs.buildPackages.kbd ];
14 nativeBuildInputs = [ pkgs.buildPackages.kbd ];
15− LOADKEYS_KEYMAP_PATH = "${consoleEnv pkgs.kbd}/share/keymaps/**";
15+ LOADKEYS_KEYMAP_PATH = "${consoleEnv}/share/keymaps/**";
16 preferLocalBuild = true;
16 preferLocalBuild = true;
18 loadkeys -b ${optionalString isUnicode "-u"} "${cfg.keyMap}" > $out
18 loadkeys -b ${optionalString isUnicode "-u"} "${cfg.keyMap}" > $out
@@ -24,9 +24,9 @@ let
24 FONT=${cfg.font}
24 FONT=${cfg.font}
27− consoleEnv = kbd: pkgs.buildEnv {
27+ consoleEnv = pkgs.buildEnv {
28 name = "console-env";
28 name = "console-env";
29− paths = [ kbd ] ++ cfg.packages;
29+ paths = [ pkgs.kbd ] ++ cfg.packages;
30 pathsToLink = [
30 pathsToLink = [
31 "/share/consolefonts"
31 "/share/consolefonts"
32 "/share/consoletrans"
32 "/share/consoletrans"
@@ -136,9 +136,9 @@ in
136 # virtual consoles.
136 # virtual consoles.
137 environment.etc."vconsole.conf".source = vconsoleConf;
137 environment.etc."vconsole.conf".source = vconsoleConf;
138 # Provide kbd with additional packages.
138 # Provide kbd with additional packages.
139− environment.etc.kbd.source = "${consoleEnv pkgs.kbd}/share";
139+ environment.etc.kbd.source = "${consoleEnv}/share";
141− boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) (mkBefore ''
141+ boot.initrd.preLVMCommands = mkBefore ''
142 kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
142 kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
143 printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
143 printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
144 loadkmap < ${optimizedKeymap}
144 loadkmap < ${optimizedKeymap}
@@ -146,26 +146,12 @@ in
146 ${optionalString cfg.earlySetup ''
146 ${optionalString cfg.earlySetup ''
147 setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
147 setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
151− boot.initrd.systemd.contents = {
152− "/etc/vconsole.conf".source = vconsoleConf;
153− # Add everything if we want full console setup...
154− "/etc/kbd" = lib.mkIf cfg.earlySetup { source = "${consoleEnv config.boot.initrd.systemd.package.kbd}/share"; };
155− # ...but only the keymaps if we don't
156− "/etc/kbd/keymaps" = lib.mkIf (!cfg.earlySetup) { source = "${consoleEnv config.boot.initrd.systemd.package.kbd}/share/keymaps"; };
158− boot.initrd.systemd.storePaths = [
159− "${config.boot.initrd.systemd.package}/lib/systemd/systemd-vconsole-setup"
160− "${config.boot.initrd.systemd.package.kbd}/bin/setfont"
161− "${config.boot.initrd.systemd.package.kbd}/bin/loadkeys"
162− "${config.boot.initrd.systemd.package.kbd.gzip}/bin/gzip" # keyboard layouts are compressed
165 systemd.services.reload-systemd-vconsole-setup =
151 systemd.services.reload-systemd-vconsole-setup =
166 { description = "Reset console on configuration changes";
152 { description = "Reset console on configuration changes";
167 wantedBy = [ "multi-user.target" ];
153 wantedBy = [ "multi-user.target" ];
168− restartTriggers = [ vconsoleConf (consoleEnv pkgs.kbd) ];
154+ restartTriggers = [ vconsoleConf consoleEnv ];
169 reloadIfChanged = true;
155 reloadIfChanged = true;
170 serviceConfig =
156 serviceConfig =
171 { RemainAfterExit = true;
157 { RemainAfterExit = true;
@@ -183,13 +169,13 @@ in
186− (mkIf (cfg.earlySetup && !config.boot.initrd.systemd.enable) {
172+ (mkIf cfg.earlySetup {
187 boot.initrd.extraUtilsCommands = ''
173 boot.initrd.extraUtilsCommands = ''
188 mkdir -p $out/share/consolefonts
174 mkdir -p $out/share/consolefonts
189 ${if substring 0 1 cfg.font == "/" then ''
175 ${if substring 0 1 cfg.font == "/" then ''
190 font="${cfg.font}"
176 font="${cfg.font}"
191 '' else ''
177 '' else ''
192− font="$(echo ${consoleEnv pkgs.kbd}/share/consolefonts/${cfg.font}.*)"
178+ font="$(echo ${consoleEnv}/share/consolefonts/${cfg.font}.*)"
194 if [[ $font == *.gz ]]; then
180 if [[ $font == *.gz ]]; then
195 gzip -cd $font > $out/share/consolefonts/font.psf
181 gzip -cd $font > $out/share/consolefonts/font.psf
nixos/modules/config/nsswitch.nix+4−7
@@ -95,14 +95,11 @@ with lib;
95 config = {
95 config = {
96 assertions = [
96 assertions = [
98+ # Prevent users from disabling nscd, with nssModules being set.
99+ # If disabling nscd is really necessary, it's still possible to opt out
100+ # by forcing config.system.nssModules to [].
98 assertion = config.system.nssModules.path != "" -> config.services.nscd.enable;
101 assertion = config.system.nssModules.path != "" -> config.services.nscd.enable;
100− Loading NSS modules from system.nssModules (${config.system.nssModules.path}),
102+ message = "Loading NSS modules from system.nssModules (${config.system.nssModules.path}), requires services.nscd.enable being set to true.";
101− requires services.nscd.enable being set to true.
103− If disabling nscd is really necessary, it is possible to disable loading NSS modules
104− by setting `system.nssModules = lib.mkForce [];` in your configuration.nix.
nixos/modules/config/terminfo.nix+1−25
@@ -1,33 +1,9 @@
1# This module manages the terminfo database
1# This module manages the terminfo database
2# and its integration in the system.
2# and its integration in the system.
3−{ config, lib, pkgs, ... }:
3+{ config, ... }:
9− options.environment.enableAllTerminfo = with lib; mkOption {
13− Whether to install all terminfo outputs
17 config = {
5 config = {
19− # can be generated with: filter (drv: (builtins.tryEval (drv ? terminfo)).value) (attrValues pkgs)
20− environment.systemPackages = mkIf config.environment.enableAllTerminfo (map (x: x.terminfo) (with pkgs; [
25− rxvt-unicode-unwrapped
26− rxvt-unicode-unwrapped-emoji
31 environment.pathsToLink = [
7 environment.pathsToLink = [
32 "/share/terminfo"
8 "/share/terminfo"
nixos/modules/hardware/all-firmware.nix+3−7
@@ -27,8 +27,7 @@ in {
29 hardware.enableRedistributableFirmware = mkOption {
29 hardware.enableRedistributableFirmware = mkOption {
30− default = config.hardware.enableAllFirmware;
30+ default = false;
31− defaultText = lib.literalExpression "config.hardware.enableAllFirmware";
32 type = types.bool;
31 type = types.bool;
33 description = ''
32 description = ''
34 Turn on this option if you want to enable all the firmware with a license allowing redistribution.
33 Turn on this option if you want to enable all the firmware with a license allowing redistribution.
@@ -72,7 +71,7 @@ in {
73 (mkIf cfg.enableAllFirmware {
72 (mkIf cfg.enableAllFirmware {
74 assertions = [{
73 assertions = [{
75− assertion = !cfg.enableAllFirmware || config.nixpkgs.config.allowUnfree;
74+ assertion = !cfg.enableAllFirmware || (config.nixpkgs.config.allowUnfree or false);
76 message = ''
75 message = ''
77 the list of hardware.enableAllFirmware contains non-redistributable licensed firmware files.
76 the list of hardware.enableAllFirmware contains non-redistributable licensed firmware files.
78 This requires nixpkgs.config.allowUnfree to be true.
77 This requires nixpkgs.config.allowUnfree to be true.
@@ -85,10 +84,7 @@ in {
85 b43Firmware_6_30_163_46
84 b43Firmware_6_30_163_46
86 b43FirmwareCutter
85 b43FirmwareCutter
87 xow_dongle-firmware
86 xow_dongle-firmware
88− ] ++ optionals pkgs.stdenv.hostPlatform.isx86 [
87+ ] ++ optional pkgs.stdenv.hostPlatform.isx86 facetimehd-firmware;
89− facetimehd-calibration
93 (mkIf cfg.wirelessRegulatoryDatabase {
89 (mkIf cfg.wirelessRegulatoryDatabase {
94 hardware.firmware = [ pkgs.wireless-regdb ];
90 hardware.firmware = [ pkgs.wireless-regdb ];
nixos/modules/hardware/raid/hpsa.nix+1−4
@@ -8,10 +8,7 @@ let
8 version = "2.40-13.0";
8 version = "2.40-13.0";
10 src = pkgs.fetchurl {
10 src = pkgs.fetchurl {
12− "https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${pname}-${version}_amd64.deb"
11+ url = "https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${pname}-${version}_amd64.deb";
13− "http://apt.netangels.net/pool/main/h/hpssacli/${pname}-${version}_amd64.deb"
15 sha256 = "11w7fwk93lmfw0yya4jpjwdmgjimqxx6412sqa166g1pz4jil4sw";
12 sha256 = "11w7fwk93lmfw0yya4jpjwdmgjimqxx6412sqa166g1pz4jil4sw";
nixos/modules/hardware/video/amdgpu-pro.nix+1−2
@@ -51,10 +51,9 @@ in
51 (isYes "KALLSYMS_ALL")
51 (isYes "KALLSYMS_ALL")
54− boot.initrd.extraUdevRulesCommands = mkIf (!config.boot.initrd.systemd.enable) ''
54+ boot.initrd.extraUdevRulesCommands = ''
55 cp -v ${package}/etc/udev/rules.d/*.rules $out/
55 cp -v ${package}/etc/udev/rules.d/*.rules $out/
57− boot.initrd.services.udev.packages = [ package ];
59 environment.systemPackages =
58 environment.systemPackages =
60 [ package.vulkan ] ++
59 [ package.vulkan ] ++
nixos/modules/hardware/video/nvidia.nix+7−9
@@ -24,7 +24,6 @@ let
24 primeEnabled = syncCfg.enable || offloadCfg.enable;
24 primeEnabled = syncCfg.enable || offloadCfg.enable;
25 nvidiaPersistencedEnabled = cfg.nvidiaPersistenced;
25 nvidiaPersistencedEnabled = cfg.nvidiaPersistenced;
26 nvidiaSettings = cfg.nvidiaSettings;
26 nvidiaSettings = cfg.nvidiaSettings;
27− busIDType = types.strMatching "([[:print:]]+\:[0-9]{1,3}\:[0-9]{1,2}\:[0-9])?";
@@ -69,7 +68,7 @@ in
71 hardware.nvidia.prime.nvidiaBusId = mkOption {
70 hardware.nvidia.prime.nvidiaBusId = mkOption {
72− type = busIDType;
71+ type = types.str;
73 default = "";
72 default = "";
74 example = "PCI:1:0:0";
73 example = "PCI:1:0:0";
75 description = ''
74 description = ''
@@ -79,7 +78,7 @@ in
81 hardware.nvidia.prime.intelBusId = mkOption {
80 hardware.nvidia.prime.intelBusId = mkOption {
82− type = busIDType;
81+ type = types.str;
83 default = "";
82 default = "";
84 example = "PCI:0:2:0";
83 example = "PCI:0:2:0";
85 description = ''
84 description = ''
@@ -89,7 +88,7 @@ in
91 hardware.nvidia.prime.amdgpuBusId = mkOption {
90 hardware.nvidia.prime.amdgpuBusId = mkOption {
92− type = busIDType;
91+ type = types.str;
93 default = "";
92 default = "";
94 example = "PCI:4:0:0";
93 example = "PCI:4:0:0";
95 description = ''
94 description = ''
@@ -361,12 +360,11 @@ in
361 services.udev.extraRules =
360 services.udev.extraRules =
363 # Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
362 # Create /dev/nvidia-uvm when the nvidia-uvm module is loaded.
364− KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c 195 255'"
363+ KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'"
365− KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c 195 254'"
364+ KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 254'"
366− KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", PROGRAM="${pkgs.gnugrep}/bin/grep 'Device Minor:' /proc/driver/nvidia/gpus/%b/information", \
367− RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia%c{3} c 195 %c{3}"
365+ KERNEL=="card*", SUBSYSTEM=="drm", DRIVERS=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia%n c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) %n'"
368 KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
366 KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
369− KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 1'"
367+ KERNEL=="nvidia_uvm", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-uvm-tools c $$(grep nvidia-uvm /proc/devices | cut -d \ -f 1) 0'"
370 '' + optionalString cfg.powerManagement.finegrained ''
368 '' + optionalString cfg.powerManagement.finegrained ''
371 # Remove NVIDIA USB xHCI Host Controller devices, if present
369 # Remove NVIDIA USB xHCI Host Controller devices, if present
372 ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
370 ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{remove}="1"
nixos/modules/hardware/video/webcam/facetimehd.nix+6−14
@@ -14,28 +14,20 @@ in
15 options.hardware.facetimehd.enable = mkEnableOption "facetimehd kernel module";
15 options.hardware.facetimehd.enable = mkEnableOption "facetimehd kernel module";
17− options.hardware.facetimehd.withCalibration = mkOption {
22− Whether to include sensor calibration files for facetimehd.
23− This makes colors look much better but is experimental, see
24− <link xlink:href="https://github.com/patjak/facetimehd/wiki/Extracting-the-sensor-calibration-files"/>
29 config = mkIf cfg.enable {
17 config = mkIf cfg.enable {
19+ assertions = singleton {
20+ assertion = versionAtLeast kernelPackages.kernel.version "3.19";
21+ message = "facetimehd is not supported for kernels older than 3.19";
31 boot.kernelModules = [ "facetimehd" ];
24 boot.kernelModules = [ "facetimehd" ];
33 boot.blacklistedKernelModules = [ "bdc_pci" ];
26 boot.blacklistedKernelModules = [ "bdc_pci" ];
35 boot.extraModulePackages = [ kernelPackages.facetimehd ];
28 boot.extraModulePackages = [ kernelPackages.facetimehd ];
37− hardware.firmware = [ pkgs.facetimehd-firmware ]
30+ hardware.firmware = [ pkgs.facetimehd-firmware ];
38− ++ optional cfg.withCalibration pkgs.facetimehd-calibration;
40 # unload module during suspend/hibernate as it crashes the whole system
32 # unload module during suspend/hibernate as it crashes the whole system
41 powerManagement.powerDownCommands = ''
33 powerManagement.powerDownCommands = ''
nixos/modules/i18n/input-method/fcitx5.nix+11−20
@@ -5,9 +5,7 @@ with lib;
6 im = config.i18n.inputMethod;
6 im = config.i18n.inputMethod;
7 cfg = im.fcitx5;
7 cfg = im.fcitx5;
8− addons = cfg.addons ++ optional cfg.enableRimeData pkgs.rime-data;
9− fcitx5Package = pkgs.fcitx5-with-addons.override { inherit addons; };
8+ fcitx5Package = pkgs.fcitx5-with-addons.override { inherit (cfg) addons; };
10− whetherRimeDataDir = any (p: p.pname == "fcitx5-rime") cfg.addons;
12 options = {
10 options = {
13 i18n.inputMethod.fcitx5 = {
11 i18n.inputMethod.fcitx5 = {
@@ -19,29 +17,22 @@ in {
19 Enabled Fcitx5 addons.
17 Enabled Fcitx5 addons.
23− enableRimeData = mkEnableOption "default rime-data with fcitx5-rime";
27 config = mkIf (im.enabled == "fcitx5") {
23 config = mkIf (im.enabled == "fcitx5") {
28 i18n.inputMethod.package = fcitx5Package;
24 i18n.inputMethod.package = fcitx5Package;
30− environment = mkMerge [{
31− variables = {
26+ environment.variables = {
32− GTK_IM_MODULE = "fcitx";
27+ GTK_IM_MODULE = "fcitx";
33− QT_IM_MODULE = "fcitx";
28+ QT_IM_MODULE = "fcitx";
34− XMODIFIERS = "@im=fcitx";
29+ XMODIFIERS = "@im=fcitx";
37− (mkIf whetherRimeDataDir {
42− variables = {
32+ systemd.user.services.fcitx5-daemon = {
43− NIX_RIME_DATA_DIR = "/run/current-system/sw/share/rime-data";
33+ enable = true;
44− };
34+ script = "${fcitx5Package}/bin/fcitx5";
45− })];
35+ wantedBy = [ "graphical-session.target" ];
nixos/modules/installer/cd-dvd/channel.nix+1−2
@@ -39,8 +39,7 @@ in
39 echo "unpacking the NixOS/Nixpkgs sources..."
39 echo "unpacking the NixOS/Nixpkgs sources..."
40 mkdir -p /nix/var/nix/profiles/per-user/root
40 mkdir -p /nix/var/nix/profiles/per-user/root
41 ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
41 ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
42− -i ${channelSources} --quiet --option build-use-substitutes false \
42+ -i ${channelSources} --quiet --option build-use-substitutes false
43− ${optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root
44 mkdir -m 0700 -p /root/.nix-defexpr
43 mkdir -m 0700 -p /root/.nix-defexpr
45 ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
44 ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
46 mkdir -m 0755 -p /var/lib/nixos
45 mkdir -m 0755 -p /var/lib/nixos
nixos/modules/installer/cd-dvd/installation-cd-graphical-base.nix+8−14
@@ -35,28 +35,22 @@ with lib;
35 # Enable sound in graphical iso's.
35 # Enable sound in graphical iso's.
36 hardware.pulseaudio.enable = true;
36 hardware.pulseaudio.enable = true;
38− # Spice guest additions
38+ environment.systemPackages = [
39− services.spice-vdagentd.enable = true;
42− boot.plymouth.enable = true;
44− environment.defaultPackages = with pkgs; [
45 # Include gparted for partitioning disks.
39 # Include gparted for partitioning disks.
46− gparted
40+ pkgs.gparted
48 # Include some editors.
42 # Include some editors.
50− nano
44+ pkgs.bvi # binary editor
52 # Include some version control tools.
47 # Include some version control tools.
56 # Firefox for reading the manual.
50 # Firefox for reading the manual.
57− firefox
51+ pkgs.firefox
59− glxinfo
53+ pkgs.glxinfo
nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nixdeleted−59
@@ -1,59 +0,0 @@
1−# This module defines a NixOS installation CD that contains GNOME.
6− imports = [ ./installation-cd-graphical-calamares.nix ];
8− isoImage.edition = "gnome";
10− services.xserver.desktopManager.gnome = {
11− # Add Firefox and other tools useful for installation to the launcher
12− favoriteAppsOverride = ''
14− favorite-apps=[ 'firefox.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop', 'io.calamares.calamares.desktop' ]
17− # Override GNOME defaults to disable GNOME tour and disable suspend
18− extraGSettingsOverrides = ''
20− welcome-dialog-last-shown-version='9999999999'
22− [org.gnome.settings-daemon.plugins.power]
23− sleep-inactive-ac-type='nothing'
24− sleep-inactive-battery-type='nothing'
27− extraGSettingsOverridePackages = [ pkgs.gnome.gnome-settings-daemon ];
32− # Theme calamares with GNOME theme
35− platformTheme = "gnome";
38− # Fix scaling for calamares on wayland
39− environment.variables = {
40− QT_QPA_PLATFORM = "$([[ $XDG_SESSION_TYPE = \"wayland\" ]] && echo \"wayland\")";
43− services.xserver.displayManager = {
46− # autoSuspend makes the machine automatically suspend after inactivity.
47− # It's possible someone could/try to ssh'd into the machine and obviously
48− # have issues because it's inactive.
50− # * https://github.com/NixOS/nixpkgs/pull/63790
51− # * https://gitlab.gnome.org/GNOME/gnome-control-center/issues/22
nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nixdeleted−49
@@ -1,49 +0,0 @@
1−# This module defines a NixOS installation CD that contains X11 and
7− imports = [ ./installation-cd-graphical-calamares.nix ];
9− isoImage.edition = "plasma5";
12− desktopManager.plasma5 = {
16− # Automatically login as nixos.
26− environment.systemPackages = with pkgs; [
27− # Graphical text editor
31− system.activationScripts.installerDesktop = let
33− # Comes from documentation.nix when xserver and nixos.enable are true.
34− manualDesktopFile = "/run/current-system/sw/share/applications/nixos-manual.desktop";
36− homeDir = "/home/nixos/";
37− desktopDir = homeDir + "Desktop/";
40− mkdir -p ${desktopDir}
41− chown nixos ${homeDir} ${desktopDir}
43− ln -sfT ${manualDesktopFile} ${desktopDir + "nixos-manual.desktop"}
44− ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop ${desktopDir + "gparted.desktop"}
45− ln -sfT ${pkgs.konsole}/share/applications/org.kde.konsole.desktop ${desktopDir + "org.kde.konsole.desktop"}
46− ln -sfT ${pkgs.calamares-nixos}/share/applications/io.calamares.calamares.desktop ${desktopDir + "io.calamares.calamares.desktop"}
nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares.nixdeleted−20
@@ -1,20 +0,0 @@
1−# This module adds the calamares installer to the basic graphical NixOS
6− calamares-nixos-autostart = pkgs.makeAutostartItem { name = "io.calamares.calamares"; package = pkgs.calamares-nixos; };
9− imports = [ ./installation-cd-graphical-base.nix ];
11− environment.systemPackages = with pkgs; [
12− # Calamares for graphical installation
15− calamares-nixos-autostart
16− calamares-nixos-extensions
17− # Needed for calamares QML module packagechooserq
nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix+3−1
@@ -1,6 +1,8 @@
1# This module defines a NixOS installation CD that contains GNOME.
1# This module defines a NixOS installation CD that contains GNOME.
3−{ ... }:
3+{ lib, ... }:
6 imports = [ ./installation-cd-graphical-base.nix ];
8 imports = [ ./installation-cd-graphical-base.nix ];
nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix+3−1
@@ -1,7 +1,9 @@
1# This module defines a NixOS installation CD that contains X11 and
1# This module defines a NixOS installation CD that contains X11 and
4−{ pkgs, ... }:
4+{ config, lib, pkgs, ... }:
7 imports = [ ./installation-cd-graphical-base.nix ];
9 imports = [ ./installation-cd-graphical-base.nix ];
nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix+3−3
@@ -87,19 +87,19 @@ in
87 boot.initrd.availableKernelModules =
87 boot.initrd.availableKernelModules =
88 [ "mvsdio" "reiserfs" "ext3" "ums-cypress" "rtc_mv" "ext4" ];
88 [ "mvsdio" "reiserfs" "ext3" "ums-cypress" "rtc_mv" "ext4" ];
90− boot.postBootCommands = lib.mkIf (!boot.initrd.systemd.enable)
90+ boot.postBootCommands =
92 mkdir -p /mnt
92 mkdir -p /mnt
94 cp ${dummyConfiguration} /etc/nixos/configuration.nix
94 cp ${dummyConfiguration} /etc/nixos/configuration.nix
97− boot.initrd.extraUtilsCommands = lib.mkIf (!boot.initrd.systemd.enable)
97+ boot.initrd.extraUtilsCommands =
99 copy_bin_and_libs ${pkgs.util-linux}/sbin/hwclock
99 copy_bin_and_libs ${pkgs.util-linux}/sbin/hwclock
102− boot.initrd.postDeviceCommands = lib.mkIf (!boot.initrd.systemd.enable)
102+ boot.initrd.postDeviceCommands =
104 hwclock -s
104 hwclock -s
nixos/modules/installer/kexec/kexec-boot.nixdeleted−51
@@ -1,51 +0,0 @@
1−# This module exposes a config.system.build.kexecBoot attribute,
2−# which returns a directory with kernel, initrd and a shell script
3−# running the necessary kexec commands.
5−# It's meant to be scp'ed to a machine with working ssh and kexec binary
8−# This is useful for (cloud) providers where you can't boot a custom image, but
9−# get some Debian or Ubuntu installation.
18− (modulesPath + "/installer/netboot/netboot-minimal.nix")
22− system.build.kexecBoot =
24− kexecScript = pkgs.writeScript "kexec-boot" ''
26− if ! kexec -v >/dev/null 2>&1; then
27− echo "kexec not found: please install kexec-tools" 2>&1
30− SCRIPT_DIR=$( cd -- "$( dirname -- "''${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
31− kexec --load ''${SCRIPT_DIR}/bzImage \
32− --initrd=''${SCRIPT_DIR}/initrd.gz \
33− --command-line "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}"
36− pkgs.linkFarm "kexec-tree" [
39− path = "${config.system.build.netbootRamdisk}/initrd";
43− path = "${config.system.build.kernel}/${config.system.boot.loader.kernelFile}";
nixos/modules/installer/sd-card/sd-image-aarch64.nix−9
@@ -39,12 +39,6 @@
39 # Supported in newer board revisions
39 # Supported in newer board revisions
40 arm_boost=1
40 arm_boost=1
43− # Enable host mode on the 2711 built-in XHCI USB controller.
44− # This line should be removed if the legacy DWC2 controller is required
45− # (e.g. for USB device mode) or if USB support is not required.
49 # Boot in 64-bit mode.
43 # Boot in 64-bit mode.
50 arm_64bit=1
44 arm_64bit=1
@@ -71,9 +65,6 @@
71 cp ${pkgs.ubootRaspberryPi4_64bit}/u-boot.bin firmware/u-boot-rpi4.bin
65 cp ${pkgs.ubootRaspberryPi4_64bit}/u-boot.bin firmware/u-boot-rpi4.bin
72 cp ${pkgs.raspberrypi-armstubs}/armstub8-gic.bin firmware/armstub8-gic.bin
66 cp ${pkgs.raspberrypi-armstubs}/armstub8-gic.bin firmware/armstub8-gic.bin
73 cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-4-b.dtb firmware/
67 cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-4-b.dtb firmware/
74− cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-400.dtb firmware/
75− cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-cm4.dtb firmware/
76− cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/bcm2711-rpi-cm4s.dtb firmware/
78 populateRootCommands = ''
69 populateRootCommands = ''
79 mkdir -p ./files/boot
70 mkdir -p ./files/boot
nixos/modules/installer/tools/nix-fallback-paths.nix+5−5
@@ -1,7 +1,7 @@
2− x86_64-linux = "/nix/store/yx36yzxpw1hn4fz8iyf1rfyd56jg3yf4-nix-2.8.0";
2+ x86_64-linux = "/nix/store/0n2wfvi1i3fg97cjc54wslvk0804y0sn-nix-2.7.0";
3− i686-linux = "/nix/store/c0hg806zvwg800qbszzj8ff4a224kjgf-nix-2.8.0";
3+ i686-linux = "/nix/store/4p27c1k9z99pli6x8cxfph20yfyzn9nh-nix-2.7.0";
4− aarch64-linux = "/nix/store/wic2832ll53q392r2wks4xr2nrk7p8p5-nix-2.8.0";
4+ aarch64-linux = "/nix/store/r9yr8ijsb0gi9r7y92y3yzyld59yp0kj-nix-2.7.0";
5− x86_64-darwin = "/nix/store/5yqdvnkmkrhl36xh0qy31pymdphjimdd-nix-2.8.0";
5+ x86_64-darwin = "/nix/store/hyfj5imsd0c4amlcjpf8l6w4q2draaj3-nix-2.7.0";
6− aarch64-darwin = "/nix/store/izc9592szrnpv8n86hr88bhpyc9g6b4s-nix-2.8.0";
6+ aarch64-darwin = "/nix/store/9l96qllhbb6xrsjaai76dn74ap7rq92n-nix-2.7.0";
nixos/modules/installer/tools/tools.nix−5
@@ -206,11 +206,6 @@ in
206 # Or disable the firewall altogether.
206 # Or disable the firewall altogether.
207 # networking.firewall.enable = false;
207 # networking.firewall.enable = false;
209− # Copy the NixOS configuration file and link it from the resulting system
210− # (/run/current-system/configuration.nix). This is useful in case you
211− # accidentally delete configuration.nix.
212− # system.copySystemConfiguration = true;
214 # This value determines the NixOS release from which the default
209 # This value determines the NixOS release from which the default
215 # settings for stateful data, like file locations and database versions
210 # settings for stateful data, like file locations and database versions
216 # on your system were taken. It‘s perfectly fine and recommended to leave
211 # on your system were taken. It‘s perfectly fine and recommended to leave
nixos/modules/misc/documentation.nix+1−2
@@ -64,8 +64,7 @@ let
65 builtins.filterSource
65 builtins.filterSource
67− cleanSourceFilter n t
68− && (t == "directory" -> baseNameOf n != "tests")
67+ (t == "directory" -> baseNameOf n != "tests")
69 && (t == "file" -> hasSuffix ".nix" n)
68 && (t == "file" -> hasSuffix ".nix" n)
nixos/modules/misc/locate.nix+1−1
@@ -27,7 +27,7 @@ in
28 locate = mkOption {
28 locate = mkOption {
29 type = package;
29 type = package;
30− default = pkgs.findutils.locate;
30+ default = pkgs.findutils;
31 defaultText = literalExpression "pkgs.findutils";
31 defaultText = literalExpression "pkgs.findutils";
32 example = literalExpression "pkgs.mlocate";
32 example = literalExpression "pkgs.mlocate";
33 description = ''
33 description = ''
nixos/modules/misc/version.nix+14−26
@@ -15,26 +15,6 @@ let
15 mapAttrsToList (n: v: ''${n}=${escapeIfNeccessary (toString v)}'') attrs
15 mapAttrsToList (n: v: ''${n}=${escapeIfNeccessary (toString v)}'') attrs
18− osReleaseContents = {
21− VERSION = "${cfg.release} (${cfg.codeName})";
22− VERSION_CODENAME = toLower cfg.codeName;
23− VERSION_ID = cfg.release;
24− BUILD_ID = cfg.version;
25− PRETTY_NAME = "NixOS ${cfg.release} (${cfg.codeName})";
26− LOGO = "nix-snowflake";
27− HOME_URL = "https://nixos.org/";
28− DOCUMENTATION_URL = "https://nixos.org/learn.html";
29− SUPPORT_URL = "https://nixos.org/community.html";
30− BUG_REPORT_URL = "https://github.com/NixOS/nixpkgs/issues";
33− initrdReleaseContents = osReleaseContents // {
34− PRETTY_NAME = "${osReleaseContents.PRETTY_NAME} (Initrd)";
36− initrdRelease = pkgs.writeText "initrd-release" (attrsToText initrdReleaseContents);
40 imports = [
20 imports = [
@@ -139,12 +119,20 @@ in
139 DISTRIB_DESCRIPTION = "NixOS ${cfg.release} (${cfg.codeName})";
119 DISTRIB_DESCRIPTION = "NixOS ${cfg.release} (${cfg.codeName})";
142− "os-release".text = attrsToText osReleaseContents;
122+ "os-release".text = attrsToText {
143− };
123+ NAME = "NixOS";
145− boot.initrd.systemd.contents = {
125+ VERSION = "${cfg.release} (${cfg.codeName})";
146− "/etc/os-release".source = initrdRelease;
126+ VERSION_CODENAME = toLower cfg.codeName;
147− "/etc/initrd-release".source = initrdRelease;
127+ VERSION_ID = cfg.release;
128+ BUILD_ID = cfg.version;
129+ PRETTY_NAME = "NixOS ${cfg.release} (${cfg.codeName})";
130+ LOGO = "nix-snowflake";
131+ HOME_URL = "https://nixos.org/";
132+ DOCUMENTATION_URL = "https://nixos.org/learn.html";
133+ SUPPORT_URL = "https://nixos.org/community.html";
134+ BUG_REPORT_URL = "https://github.com/NixOS/nixpkgs/issues";
nixos/modules/module-list.nix+3−17
@@ -172,7 +172,6 @@
172 ./programs/java.nix
172 ./programs/java.nix
173 ./programs/k40-whisperer.nix
173 ./programs/k40-whisperer.nix
174 ./programs/kclock.nix
174 ./programs/kclock.nix
176 ./programs/kdeconnect.nix
175 ./programs/kdeconnect.nix
177 ./programs/kbdlight.nix
176 ./programs/kbdlight.nix
178 ./programs/less.nix
177 ./programs/less.nix
@@ -186,7 +185,6 @@
186 ./programs/nbd.nix
185 ./programs/nbd.nix
187 ./programs/nix-ld.nix
186 ./programs/nix-ld.nix
188 ./programs/neovim.nix
187 ./programs/neovim.nix
189− ./programs/nethoscope.nix
190 ./programs/nm-applet.nix
188 ./programs/nm-applet.nix
191 ./programs/nncp.nix
189 ./programs/nncp.nix
192 ./programs/npm.nix
190 ./programs/npm.nix
@@ -206,6 +204,7 @@
206 ./programs/spacefm.nix
204 ./programs/spacefm.nix
207 ./programs/singularity.nix
205 ./programs/singularity.nix
208 ./programs/ssh.nix
206 ./programs/ssh.nix
207+ ./programs/ssmtp.nix
209 ./programs/sysdig.nix
208 ./programs/sysdig.nix
210 ./programs/systemtap.nix
209 ./programs/systemtap.nix
211 ./programs/starship.nix
210 ./programs/starship.nix
@@ -410,7 +409,6 @@
410 ./services/display-managers/greetd.nix
409 ./services/display-managers/greetd.nix
411 ./services/editors/emacs.nix
410 ./services/editors/emacs.nix
412 ./services/editors/infinoted.nix
411 ./services/editors/infinoted.nix
413− ./services/editors/haste.nix
414 ./services/finance/odoo.nix
412 ./services/finance/odoo.nix
415 ./services/games/asf.nix
413 ./services/games/asf.nix
416 ./services/games/crossfire-server.nix
414 ./services/games/crossfire-server.nix
@@ -460,7 +458,6 @@
460 ./services/hardware/udisks2.nix
458 ./services/hardware/udisks2.nix
461 ./services/hardware/upower.nix
459 ./services/hardware/upower.nix
462 ./services/hardware/usbmuxd.nix
460 ./services/hardware/usbmuxd.nix
463− ./services/hardware/usbrelayd.nix
464 ./services/hardware/thermald.nix
461 ./services/hardware/thermald.nix
465 ./services/hardware/undervolt.nix
462 ./services/hardware/undervolt.nix
466 ./services/hardware/vdr.nix
463 ./services/hardware/vdr.nix
@@ -599,7 +596,7 @@
599 ./services/misc/osrm.nix
596 ./services/misc/osrm.nix
600 ./services/misc/owncast.nix
597 ./services/misc/owncast.nix
601 ./services/misc/packagekit.nix
598 ./services/misc/packagekit.nix
602− ./services/misc/paperless.nix
599+ ./services/misc/paperless-ng.nix
603 ./services/misc/parsoid.nix
600 ./services/misc/parsoid.nix
604 ./services/misc/plex.nix
601 ./services/misc/plex.nix
605 ./services/misc/plikd.nix
602 ./services/misc/plikd.nix
@@ -663,7 +660,6 @@
663 ./services/monitoring/longview.nix
660 ./services/monitoring/longview.nix
664 ./services/monitoring/mackerel-agent.nix
661 ./services/monitoring/mackerel-agent.nix
665 ./services/monitoring/metricbeat.nix
662 ./services/monitoring/metricbeat.nix
666− ./services/monitoring/mimir.nix
667 ./services/monitoring/monit.nix
663 ./services/monitoring/monit.nix
668 ./services/monitoring/munin.nix
664 ./services/monitoring/munin.nix
669 ./services/monitoring/nagios.nix
665 ./services/monitoring/nagios.nix
@@ -737,14 +733,12 @@
737 ./services/networking/blocky.nix
733 ./services/networking/blocky.nix
738 ./services/networking/charybdis.nix
734 ./services/networking/charybdis.nix
739 ./services/networking/cjdns.nix
735 ./services/networking/cjdns.nix
740− ./services/networking/cloudflare-dyndns.nix
741 ./services/networking/cntlm.nix
736 ./services/networking/cntlm.nix
742 ./services/networking/connman.nix
737 ./services/networking/connman.nix
743 ./services/networking/consul.nix
738 ./services/networking/consul.nix
744 ./services/networking/coredns.nix
739 ./services/networking/coredns.nix
745 ./services/networking/corerad.nix
740 ./services/networking/corerad.nix
746 ./services/networking/coturn.nix
741 ./services/networking/coturn.nix
747− ./services/networking/create_ap.nix
748 ./services/networking/croc.nix
742 ./services/networking/croc.nix
749 ./services/networking/dante.nix
743 ./services/networking/dante.nix
750 ./services/networking/ddclient.nix
744 ./services/networking/ddclient.nix
@@ -759,7 +753,6 @@
759 ./services/networking/ncdns.nix
753 ./services/networking/ncdns.nix
760 ./services/networking/nomad.nix
754 ./services/networking/nomad.nix
761 ./services/networking/ejabberd.nix
755 ./services/networking/ejabberd.nix
762− ./services/networking/envoy.nix
763 ./services/networking/epmd.nix
756 ./services/networking/epmd.nix
764 ./services/networking/ergo.nix
757 ./services/networking/ergo.nix
765 ./services/networking/ergochat.nix
758 ./services/networking/ergochat.nix
@@ -822,7 +815,6 @@
822 ./services/networking/mosquitto.nix
815 ./services/networking/mosquitto.nix
823 ./services/networking/monero.nix
816 ./services/networking/monero.nix
824 ./services/networking/morty.nix
817 ./services/networking/morty.nix
825− ./services/networking/mozillavpn.nix
826 ./services/networking/miredo.nix
818 ./services/networking/miredo.nix
827 ./services/networking/mstpd.nix
819 ./services/networking/mstpd.nix
828 ./services/networking/mtprotoproxy.nix
820 ./services/networking/mtprotoproxy.nix
@@ -858,7 +850,7 @@
858 ./services/networking/ofono.nix
850 ./services/networking/ofono.nix
859 ./services/networking/oidentd.nix
851 ./services/networking/oidentd.nix
860 ./services/networking/onedrive.nix
852 ./services/networking/onedrive.nix
861− ./services/networking/openconnect.nix
853+ ./services/networking/openfire.nix
862 ./services/networking/openvpn.nix
854 ./services/networking/openvpn.nix
863 ./services/networking/ostinato.nix
855 ./services/networking/ostinato.nix
864 ./services/networking/owamp.nix
856 ./services/networking/owamp.nix
@@ -1060,7 +1052,6 @@
1060 ./services/web-apps/netbox.nix
1052 ./services/web-apps/netbox.nix
1061 ./services/web-apps/nextcloud.nix
1053 ./services/web-apps/nextcloud.nix
1062 ./services/web-apps/nexus.nix
1054 ./services/web-apps/nexus.nix
1063− ./services/web-apps/nifi.nix
1064 ./services/web-apps/node-red.nix
1055 ./services/web-apps/node-red.nix
1065 ./services/web-apps/pict-rs.nix
1056 ./services/web-apps/pict-rs.nix
1066 ./services/web-apps/peertube.nix
1057 ./services/web-apps/peertube.nix
@@ -1185,12 +1176,9 @@
1185 ./system/boot/stage-2.nix
1176 ./system/boot/stage-2.nix
1186 ./system/boot/systemd.nix
1177 ./system/boot/systemd.nix
1187 ./system/boot/systemd/coredump.nix
1178 ./system/boot/systemd/coredump.nix
1188− ./system/boot/systemd/initrd-secrets.nix
1189− ./system/boot/systemd/initrd.nix
1190 ./system/boot/systemd/journald.nix
1179 ./system/boot/systemd/journald.nix
1191 ./system/boot/systemd/logind.nix
1180 ./system/boot/systemd/logind.nix
1192 ./system/boot/systemd/nspawn.nix
1181 ./system/boot/systemd/nspawn.nix
1193− ./system/boot/systemd/shutdown.nix
1194 ./system/boot/systemd/tmpfiles.nix
1182 ./system/boot/systemd/tmpfiles.nix
1195 ./system/boot/systemd/user.nix
1183 ./system/boot/systemd/user.nix
1196 ./system/boot/timesyncd.nix
1184 ./system/boot/timesyncd.nix
@@ -1246,7 +1234,6 @@
1246 ./virtualisation/amazon-options.nix
1234 ./virtualisation/amazon-options.nix
1247 ./virtualisation/hyperv-guest.nix
1235 ./virtualisation/hyperv-guest.nix
1248 ./virtualisation/kvmgt.nix
1236 ./virtualisation/kvmgt.nix
1249− ./virtualisation/openstack-options.nix
1250 ./virtualisation/openvswitch.nix
1237 ./virtualisation/openvswitch.nix
1251 ./virtualisation/parallels-guest.nix
1238 ./virtualisation/parallels-guest.nix
1252 ./virtualisation/podman/default.nix
1239 ./virtualisation/podman/default.nix
@@ -1256,7 +1243,6 @@
1256 ./virtualisation/virtualbox-guest.nix
1243 ./virtualisation/virtualbox-guest.nix
1257 ./virtualisation/virtualbox-host.nix
1244 ./virtualisation/virtualbox-host.nix
1258 ./virtualisation/vmware-guest.nix
1245 ./virtualisation/vmware-guest.nix
1259− ./virtualisation/vmware-host.nix
1260 ./virtualisation/waydroid.nix
1246 ./virtualisation/waydroid.nix
1261 ./virtualisation/xen-dom0.nix
1247 ./virtualisation/xen-dom0.nix
1262 ./virtualisation/xe-guest-utilities.nix
1248 ./virtualisation/xe-guest-utilities.nix
nixos/modules/profiles/all-hardware.nix−3
@@ -40,9 +40,6 @@ in
40 # SD cards.
40 # SD cards.
41 "sdhci_pci"
41 "sdhci_pci"
46 # Firewire support. Not tested.
43 # Firewire support. Not tested.
47 "ohci1394" "sbp2"
44 "ohci1394" "sbp2"
nixos/modules/profiles/installation-device.nix−4
@@ -99,10 +99,6 @@ with lib;
99 stdenvNoCC # for runCommand
99 stdenvNoCC # for runCommand
101 jq # for closureInfo
101 jq # for closureInfo
102− # For boot.initrd.systemd
105− systemdStage1Network
108 # Show all debug messages from the kernel but don't log refused packets
104 # Show all debug messages from the kernel but don't log refused packets
nixos/modules/profiles/qemu-guest.nix+2−2
@@ -1,13 +1,13 @@
1# Common configuration for virtual machines running under QEMU (using
1# Common configuration for virtual machines running under QEMU (using
4−{ config, lib, ... }:
4+{ ... }:
7 boot.initrd.availableKernelModules = [ "virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "9p" "9pnet_virtio" ];
7 boot.initrd.availableKernelModules = [ "virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "9p" "9pnet_virtio" ];
8 boot.initrd.kernelModules = [ "virtio_balloon" "virtio_console" "virtio_rng" ];
8 boot.initrd.kernelModules = [ "virtio_balloon" "virtio_console" "virtio_rng" ];
10− boot.initrd.postDeviceCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
10+ boot.initrd.postDeviceCommands =
12 # Set the system time from the hardware clock to work around a
12 # Set the system time from the hardware clock to work around a
13 # bug in qemu-kvm > 1.5.2 (where the VM clock is initialised
13 # bug in qemu-kvm > 1.5.2 (where the VM clock is initialised
nixos/modules/programs/adb.nix+2−1
@@ -23,7 +23,8 @@ with lib;
23 ###### implementation
23 ###### implementation
24 config = mkIf config.programs.adb.enable {
24 config = mkIf config.programs.adb.enable {
25 services.udev.packages = [ pkgs.android-udev-rules ];
25 services.udev.packages = [ pkgs.android-udev-rules ];
26+ # Give platform-tools lower priority so mke2fs+friends are taken from other packages first
26− environment.systemPackages = [ pkgs.android-tools ];
27+ environment.systemPackages = [ (lowPrio pkgs.androidenv.androidPkgs_9_0.platform-tools) ];
27 users.groups.adbusers = {};
28 users.groups.adbusers = {};
nixos/modules/programs/chromium.nix−3
@@ -108,8 +108,5 @@ in
108 # for google-chrome https://www.chromium.org/administrators/linux-quick-start
108 # for google-chrome https://www.chromium.org/administrators/linux-quick-start
109 environment.etc."opt/chrome/policies/managed/default.json".text = builtins.toJSON defaultProfile;
109 environment.etc."opt/chrome/policies/managed/default.json".text = builtins.toJSON defaultProfile;
110 environment.etc."opt/chrome/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts;
110 environment.etc."opt/chrome/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts;
112− environment.etc."brave/policies/managed/default.json".text = builtins.toJSON defaultProfile;
113− environment.etc."brave/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts;
nixos/modules/programs/k3b.nixdeleted−52
@@ -1,52 +0,0 @@
1−{ config, pkgs, lib, ... }:
7− options.programs.k3b = {
12− Whether to enable k3b, the KDE disk burning application.
14− Additionally to installing <package>k3b</package> enabling this will
15− add <literal>setuid</literal> wrappers in <literal>/run/wrappers/bin</literal>
16− for both <package>cdrdao</package> and <package>cdrecord</package>. On first
17− run you must manually configure the path of <package>cdrdae</package> and
18− <package>cdrecord</package> to correspond to the appropriate paths under
19− <literal>/run/wrappers/bin</literal> in the "Setup External Programs" menu.
25− config = mkIf config.programs.k3b.enable {
27− environment.systemPackages = with pkgs; [
34− security.wrappers = {
39− permissions = "u+wrx,g+x";
40− source = "${pkgs.cdrdao}/bin/cdrdao";
46− permissions = "u+wrx,g+x";
47− source = "${pkgs.cdrkit}/bin/cdrecord";
nixos/modules/programs/mininet.nix+2−2
@@ -23,8 +23,8 @@ let
23 ln -s ${pyEnv}/bin/mn $out/bin/mn
23 ln -s ${pyEnv}/bin/mn $out/bin/mn
25 # mn errors out without a telnet binary
25 # mn errors out without a telnet binary
26− # pkgs.inetutils brings an undesired ifconfig into PATH see #43105
26+ # pkgs.telnet brings an undesired ifconfig into PATH see #43105
27− ln -s ${pkgs.inetutils}/bin/telnet $out/bin/telnet
27+ ln -s ${pkgs.telnet}/bin/telnet $out/bin/telnet
nixos/modules/programs/nethoscope.nixdeleted−30
@@ -1,30 +0,0 @@
1−{ config, lib, pkgs, ... }:
5−let cfg = config.programs.nethoscope;
8− meta.maintainers = with maintainers; [ _0x4A6F ];
11− programs.nethoscope = {
16− Whether to add nethoscope to the global environment and configure a
17− setcap wrapper for it.
23− config = mkIf cfg.enable {
24− environment.systemPackages = with pkgs; [ nethoscope ];
25− security.wrappers.nethoscope = {
26− source = "${pkgs.nethoscope}/bin/nethoscope";
27− capabilities = "cap_net_raw,cap_net_admin=eip";
nixos/modules/programs/ssh.nix+7−18
@@ -157,13 +157,9 @@ in
157 default = [ name ] ++ config.extraHostNames;
157 default = [ name ] ++ config.extraHostNames;
158 defaultText = literalExpression "[ ${name} ] ++ config.${options.extraHostNames}";
158 defaultText = literalExpression "[ ${name} ] ++ config.${options.extraHostNames}";
159 description = ''
159 description = ''
160+ DEPRECATED, please use <literal>extraHostNames</literal>.
160 A list of host names and/or IP numbers used for accessing
161 A list of host names and/or IP numbers used for accessing
161− the host's ssh service. This list includes the name of the
162+ the host's ssh service.
162− containing <literal>knownHosts</literal> attribute by default
163− for convenience. If you wish to configure multiple host keys
164− for the same host use multiple <literal>knownHosts</literal>
165− entries with different attribute names and the same
166− <literal>hostNames</literal> list.
169 extraHostNames = mkOption {
165 extraHostNames = mkOption {
@@ -171,8 +167,7 @@ in
171 default = [];
167 default = [];
172 description = ''
168 description = ''
173 A list of additional host names and/or IP numbers used for
169 A list of additional host names and/or IP numbers used for
174− accessing the host's ssh service. This list is ignored if
170+ accessing the host's ssh service.
175− <literal>hostNames</literal> is set explicitly.
178 publicKey = mkOption {
173 publicKey = mkOption {
@@ -203,12 +198,7 @@ in
205 description = ''
200 description = ''
206− The set of system-wide known SSH hosts. To make simple setups more
201+ The set of system-wide known SSH hosts.
207− convenient the name of an attribute in this set is used as a host name
208− for the entry. This behaviour can be disabled by setting
209− <literal>hostNames</literal> explicitly. You can use
210− <literal>extraHostNames</literal> to add additional host names without
211− disabling this default.
213 example = literalExpression ''
203 example = literalExpression ''
@@ -217,10 +207,6 @@ in
217 publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
207 publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
219 "myhost2.net".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILIRuJ8p1Fi+m6WkHV0KWnRfpM1WxoW8XAS+XvsSKsTK";
209 "myhost2.net".publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILIRuJ8p1Fi+m6WkHV0KWnRfpM1WxoW8XAS+XvsSKsTK";
220− "myhost2.net/dsa" = {
221− hostNames = [ "myhost2.net" ];
222− publicKeyFile = ./pubkeys/myhost2_ssh_host_dsa_key.pub;
@@ -293,6 +279,9 @@ in
293 message = "knownHost ${name} must contain either a publicKey or publicKeyFile";
279 message = "knownHost ${name} must contain either a publicKey or publicKeyFile";
282+ warnings = mapAttrsToList (name: _: ''programs.ssh.knownHosts.${name}.hostNames is deprecated, use programs.ssh.knownHosts.${name}.extraHostNames'')
283+ (filterAttrs (name: {hostNames, extraHostNames, ...}: hostNames != [ name ] ++ extraHostNames) cfg.knownHosts);
296 # SSH configuration. Slight duplication of the sshd_config
285 # SSH configuration. Slight duplication of the sshd_config
297 # generation in the sshd service.
286 # generation in the sshd service.
298 environment.etc."ssh/ssh_config".text =
287 environment.etc."ssh/ssh_config".text =
nixos/modules/programs/ssmtp.nixnew file+190
@@ -0,0 +1,190 @@
1+# Configuration for `ssmtp', a trivial mail transfer agent that can
2+# replace sendmail/postfix on simple systems. It delivers email
3+# directly to an SMTP server defined in its configuration file, without
4+# queueing mail locally.
6+{ config, lib, pkgs, ... }:
11+ cfg = config.services.ssmtp;
17+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "directDelivery" ] [ "services" "ssmtp" "enable" ])
18+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "hostName" ] [ "services" "ssmtp" "hostName" ])
19+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "domain" ] [ "services" "ssmtp" "domain" ])
20+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "root" ] [ "services" "ssmtp" "root" ])
21+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "useTLS" ] [ "services" "ssmtp" "useTLS" ])
22+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "useSTARTTLS" ] [ "services" "ssmtp" "useSTARTTLS" ])
23+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "authUser" ] [ "services" "ssmtp" "authUser" ])
24+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "authPassFile" ] [ "services" "ssmtp" "authPassFile" ])
25+ (mkRenamedOptionModule [ "networking" "defaultMailServer" "setSendmail" ] [ "services" "ssmtp" "setSendmail" ])
27+ (mkRemovedOptionModule [ "networking" "defaultMailServer" "authPass" ] "authPass has been removed since it leaks the clear-text password into the world-readable store. Use authPassFile instead and make sure it's not a store path")
28+ (mkRemovedOptionModule [ "services" "ssmtp" "authPass" ] "authPass has been removed since it leaks the clear-text password into the world-readable store. Use authPassFile instead and make sure it's not a store path")
39+ Use the trivial Mail Transfer Agent (MTA)
40+ <command>ssmtp</command> package to allow programs to send
41+ e-mail. If you don't want to run a “real” MTA like
42+ <command>sendmail</command> or <command>postfix</command> on
43+ your machine, set this option to <literal>true</literal>, and
45+ <option>services.ssmtp.hostName</option> to the
46+ host name of your preferred mail server.
50+ settings = mkOption {
51+ type = with types; attrsOf (oneOf [ bool str ]);
54+ <citerefentry><refentrytitle>ssmtp</refentrytitle><manvolnum>5</manvolnum></citerefentry> configuration. Refer
55+ to <link xlink:href="https://linux.die.net/man/5/ssmtp.conf"/> for details on supported values.
57+ example = literalExpression ''
60+ FromLineOverride = false;
65+ hostName = mkOption {
67+ example = "mail.example.org";
69+ The host name of the default mail server to use to deliver
70+ e-mail. Can also contain a port number (ex: mail.example.org:587),
71+ defaults to port 25 if no port is given.
78+ example = "root@example.org";
80+ The e-mail to which mail for users with UID < 1000 is forwarded.
87+ example = "example.org";
89+ The domain from which mail will appear to be sent.
97+ Whether TLS should be used to connect to the default mail
102+ useSTARTTLS = mkOption {
106+ Whether the STARTTLS should be used to connect to the default
107+ mail server. (This is needed for TLS-capable mail servers
108+ running on the default SMTP port 25.)
112+ authUser = mkOption {
115+ example = "foo@example.org";
117+ Username used for SMTP auth. Leave blank to disable.
121+ authPassFile = mkOption {
122+ type = types.nullOr types.str;
124+ example = "/run/keys/ssmtp-authpass";
126+ Path to a file that contains the password used for SMTP auth. The file
127+ should not contain a trailing newline, if the password does not contain one
128+ (e.g. use <command>echo -n "password" > file</command>).
129+ This file should be readable by the users that need to execute ssmtp.
133+ setSendmail = mkOption {
136+ description = "Whether to set the system sendmail to ssmtp's.";
144+ config = mkIf cfg.enable {
148+ assertion = cfg.useSTARTTLS -> cfg.useTLS;
149+ message = "services.ssmtp.useSTARTTLS has no effect without services.ssmtp.useTLS";
153+ services.ssmtp.settings = mkMerge [
155+ MailHub = cfg.hostName;
156+ FromLineOverride = mkDefault true;
157+ UseTLS = cfg.useTLS;
158+ UseSTARTTLS = cfg.useSTARTTLS;
160+ (mkIf (cfg.root != "") { root = cfg.root; })
161+ (mkIf (cfg.domain != "") { rewriteDomain = cfg.domain; })
162+ (mkIf (cfg.authUser != "") { AuthUser = cfg.authUser; })
163+ (mkIf (cfg.authPassFile != null) { AuthPassFile = cfg.authPassFile; })
166+ # careful here: ssmtp REQUIRES all config lines to end with a newline char!
167+ environment.etc."ssmtp/ssmtp.conf".text = with generators; toKeyValue {
168+ mkKeyValue = mkKeyValueDefault {
169+ mkValueString = value:
170+ if value == true then "YES"
171+ else if value == false then "NO"
172+ else mkValueStringDefault {} value
177+ environment.systemPackages = [pkgs.ssmtp];
179+ services.mail.sendmailSetuidWrapper = mkIf cfg.setSendmail {
180+ program = "sendmail";
181+ source = "${pkgs.ssmtp}/bin/sendmail";
nixos/modules/programs/thefuck.nix+6−7
@@ -6,12 +6,9 @@ let
6 prg = config.programs;
6 prg = config.programs;
7 cfg = prg.thefuck;
7 cfg = prg.thefuck;
9− bashAndZshInitScript = ''
9+ initScript = ''
10 eval $(${pkgs.thefuck}/bin/thefuck --alias ${cfg.alias})
10 eval $(${pkgs.thefuck}/bin/thefuck --alias ${cfg.alias})
13− ${pkgs.thefuck}/bin/thefuck --alias ${cfg.alias} | source
17 options = {
14 options = {
@@ -33,8 +30,10 @@ in
33 config = mkIf cfg.enable {
30 config = mkIf cfg.enable {
34 environment.systemPackages = with pkgs; [ thefuck ];
31 environment.systemPackages = with pkgs; [ thefuck ];
36− programs.bash.interactiveShellInit = bashAndZshInitScript;
33+ programs.bash.interactiveShellInit = initScript;
37− programs.zsh.interactiveShellInit = mkIf prg.zsh.enable bashAndZshInitScript;
34+ programs.zsh.interactiveShellInit = mkIf prg.zsh.enable initScript;
38− programs.fish.interactiveShellInit = mkIf prg.fish.enable fishInitScript;
35+ programs.fish.interactiveShellInit = mkIf prg.fish.enable ''
36+ ${pkgs.thefuck}/bin/thefuck --alias | source
nixos/modules/rename.nix−6
@@ -69,11 +69,6 @@ with lib;
70 (mkRemovedOptionModule [ "services" "quagga" ] "the corresponding package has been removed from nixpkgs")
70 (mkRemovedOptionModule [ "services" "quagga" ] "the corresponding package has been removed from nixpkgs")
71 (mkRemovedOptionModule [ "services" "seeks" ] "")
71 (mkRemovedOptionModule [ "services" "seeks" ] "")
72− (mkRemovedOptionModule [ "services" "ssmtp" ] ''
73− The ssmtp package and the corresponding module have been removed due to
74− the program being unmaintained. The options `programs.msmtp.*` can be
77 (mkRemovedOptionModule [ "services" "venus" ] "The corresponding package was removed from nixpkgs.")
72 (mkRemovedOptionModule [ "services" "venus" ] "The corresponding package was removed from nixpkgs.")
78 (mkRemovedOptionModule [ "services" "wakeonlan"] "This module was removed in favor of enabling it with networking.interfaces.<name>.wakeOnLan")
73 (mkRemovedOptionModule [ "services" "wakeonlan"] "This module was removed in favor of enabling it with networking.interfaces.<name>.wakeOnLan")
79 (mkRemovedOptionModule [ "services" "winstone" ] "The corresponding package was removed from nixpkgs.")
74 (mkRemovedOptionModule [ "services" "winstone" ] "The corresponding package was removed from nixpkgs.")
@@ -96,7 +91,6 @@ with lib;
96 (mkRemovedOptionModule [ "services" "shellinabox" ] "The corresponding package was removed from nixpkgs.")
91 (mkRemovedOptionModule [ "services" "shellinabox" ] "The corresponding package was removed from nixpkgs.")
97 (mkRemovedOptionModule [ "services" "gogoclient" ] "The corresponding package was removed from nixpkgs.")
92 (mkRemovedOptionModule [ "services" "gogoclient" ] "The corresponding package was removed from nixpkgs.")
98 (mkRemovedOptionModule [ "services" "virtuoso" ] "The corresponding package was removed from nixpkgs.")
93 (mkRemovedOptionModule [ "services" "virtuoso" ] "The corresponding package was removed from nixpkgs.")
99− (mkRemovedOptionModule [ "services" "openfire" ] "The corresponding package was removed from nixpkgs.")
101 # Do NOT add any option renames here, see top of the file
95 # Do NOT add any option renames here, see top of the file
nixos/modules/security/pam.nix+3−113
@@ -61,19 +61,6 @@ let
64− usshAuth = mkOption {
68− If set, users with an SSH certificate containing an authorized principal
69− in their SSH agent are able to log in. Specific options are controlled
70− using the <option>security.pam.ussh</option> options.
72− Note that the <option>security.pam.ussh.enable</option> must also be
73− set for this option to take effect.
77 yubicoAuth = mkOption {
64 yubicoAuth = mkOption {
78 default = config.security.pam.yubico.enable;
65 default = config.security.pam.yubico.enable;
79 defaultText = literalExpression "config.security.pam.yubico.enable";
66 defaultText = literalExpression "config.security.pam.yubico.enable";
@@ -488,11 +475,8 @@ let
488 optionalString cfg.usbAuth ''
475 optionalString cfg.usbAuth ''
489 auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so
476 auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so
491− (let ussh = config.security.pam.ussh; in optionalString (config.security.pam.ussh.enable && cfg.usshAuth) ''
492− auth ${ussh.control} ${pkgs.pam_ussh}/lib/security/pam_ussh.so ${optionalString (ussh.caFile != null) "ca_file=${ussh.caFile}"} ${optionalString (ussh.authorizedPrincipals != null) "authorized_principals=${ussh.authorizedPrincipals}"} ${optionalString (ussh.authorizedPrincipalsFile != null) "authorized_principals_file=${ussh.authorizedPrincipalsFile}"} ${optionalString (ussh.group != null) "group=${ussh.group}"}
494 (let oath = config.security.pam.oath; in optionalString cfg.oathAuth ''
478 (let oath = config.security.pam.oath; in optionalString cfg.oathAuth ''
495− auth requisite ${pkgs.oath-toolkit}/lib/security/pam_oath.so window=${toString oath.window} usersfile=${toString oath.usersFile} digits=${toString oath.digits}
479+ auth requisite ${pkgs.oathToolkit}/lib/security/pam_oath.so window=${toString oath.window} usersfile=${toString oath.usersFile} digits=${toString oath.digits}
497 (let yubi = config.security.pam.yubico; in optionalString cfg.yubicoAuth ''
481 (let yubi = config.security.pam.yubico; in optionalString cfg.yubicoAuth ''
498 auth ${yubi.control} ${pkgs.yubico-pam}/lib/security/pam_yubico.so mode=${toString yubi.mode} ${optionalString (yubi.challengeResponsePath != null) "chalresp_path=${yubi.challengeResponsePath}"} ${optionalString (yubi.mode == "client") "id=${toString yubi.id}"} ${optionalString yubi.debug "debug"}
482 auth ${yubi.control} ${pkgs.yubico-pam}/lib/security/pam_yubico.so mode=${toString yubi.mode} ${optionalString (yubi.challengeResponsePath != null) "chalresp_path=${yubi.challengeResponsePath}"} ${optionalString (yubi.mode == "client") "id=${toString yubi.id}"} ${optionalString yubi.debug "debug"}
@@ -610,7 +594,6 @@ let
610 session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so
594 session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so
612 optionalString cfg.pamMount ''
596 optionalString cfg.pamMount ''
613− session [success=1 default=ignore] ${pkgs.pam}/lib/security/pam_succeed_if.so service = systemd-user quiet
614 session optional ${pkgs.pam_mount}/lib/security/pam_mount.so disable_interactive
597 session optional ${pkgs.pam_mount}/lib/security/pam_mount.so disable_interactive
616 optionalString use_ldap ''
599 optionalString use_ldap ''
@@ -943,96 +926,6 @@ in
946− security.pam.ussh = {
951− Enables Uber's USSH PAM (<literal>pam-ussh</literal>) module.
953− This is similar to <literal>pam-ssh-agent</literal>, except that
954− the presence of a CA-signed SSH key with a valid principal is checked
957− Note that this module must both be enabled using this option and on a
958− per-PAM-service level as well (using <literal>usshAuth</literal>).
960− More information can be found <link
961− xlink:href="https://github.com/uber/pam-ussh">here</link>.
967− type = with types; nullOr path;
969− By default <literal>pam-ussh</literal> reads the trusted user CA keys
970− from <filename>/etc/ssh/trusted_user_ca</filename>.
972− This should be set the same as your <literal>TrustedUserCAKeys</literal>
977− authorizedPrincipals = mkOption {
979− type = with types; nullOr commas;
981− Comma-separated list of authorized principals to permit; if the user
982− presents a certificate with one of these principals, then they will be
985− Note that <literal>pam-ussh</literal> also requires that the certificate
986− contain a principal matching the user's username. The principals from
987− this list are in addition to those principals.
989− Mutually exclusive with <literal>authorizedPrincipalsFile</literal>.
993− authorizedPrincipalsFile = mkOption {
995− type = with types; nullOr path;
997− Path to a list of principals; if the user presents a certificate with
998− one of these principals, then they will be authorized.
1000− Note that <literal>pam-ussh</literal> also requires that the certificate
1001− contain a principal matching the user's username. The principals from
1002− this file are in addition to those principals.
1004− Mutually exclusive with <literal>authorizedPrincipals</literal>.
1010− type = with types; nullOr str;
1012− If set, then the authenticating user must be a member of this group
1013− to use this module.
1017− control = mkOption {
1018− default = "sufficient";
1019− type = types.enum [ "required" "requisite" "sufficient" "optional" ];
1021− This option sets pam "control".
1022− If you want to have multi factor authentication, use "required".
1023− If you want to use the SSH certificate instead of the regular password,
1028− <refentrytitle>pam.conf</refentrytitle>
1029− <manvolnum>5</manvolnum>
1031− for better understanding of this option.
1036 security.pam.yubico = {
929 security.pam.yubico = {
1037 enable = mkOption {
930 enable = mkOption {
1038 default = false;
931 default = false;
@@ -1131,7 +1024,7 @@ in
1131 ++ optional config.services.sssd.enable pkgs.sssd
1024 ++ optional config.services.sssd.enable pkgs.sssd
1132 ++ optionals config.krb5.enable [pam_krb5 pam_ccreds]
1025 ++ optionals config.krb5.enable [pam_krb5 pam_ccreds]
1133 ++ optionals config.security.pam.enableOTPW [ pkgs.otpw ]
1026 ++ optionals config.security.pam.enableOTPW [ pkgs.otpw ]
1134− ++ optionals config.security.pam.oath.enable [ pkgs.oath-toolkit ]
1027+ ++ optionals config.security.pam.oath.enable [ pkgs.oathToolkit ]
1135 ++ optionals config.security.pam.p11.enable [ pkgs.pam_p11 ]
1028 ++ optionals config.security.pam.p11.enable [ pkgs.pam_p11 ]
1136 ++ optionals config.security.pam.u2f.enable [ pkgs.pam_u2f ];
1029 ++ optionals config.security.pam.u2f.enable [ pkgs.pam_u2f ];
@@ -1217,11 +1110,8 @@ in
1217 optionalString (isEnabled (cfg: cfg.usbAuth)) ''
1110 optionalString (isEnabled (cfg: cfg.usbAuth)) ''
1218 mr ${pkgs.pam_usb}/lib/security/pam_usb.so,
1111 mr ${pkgs.pam_usb}/lib/security/pam_usb.so,
1220− optionalString (isEnabled (cfg: cfg.usshAuth)) ''
1221− mr ${pkgs.pam_ussh}/lib/security/pam_ussh.so,
1223 optionalString (isEnabled (cfg: cfg.oathAuth)) ''
1113 optionalString (isEnabled (cfg: cfg.oathAuth)) ''
1224− "mr ${pkgs.oath-toolkit}/lib/security/pam_oath.so,
1114+ "mr ${pkgs.oathToolkit}/lib/security/pam_oath.so,
1226 optionalString (isEnabled (cfg: cfg.yubicoAuth)) ''
1116 optionalString (isEnabled (cfg: cfg.yubicoAuth)) ''
1227 mr ${pkgs.yubico-pam}/lib/security/pam_yubico.so,
1117 mr ${pkgs.yubico-pam}/lib/security/pam_yubico.so,
nixos/modules/security/pam_mount.nix+6−78
@@ -5,14 +5,6 @@ with lib;
6 cfg = config.security.pam.mount;
6 cfg = config.security.pam.mount;
8− oflRequired = cfg.logoutHup || cfg.logoutTerm || cfg.logoutKill;
10− fake_ofl = pkgs.writeShellScriptBin "fake_ofl" ''
13− ${pkgs.lsof}/bin/lsof | ${pkgs.gnugrep}/bin/grep $MNTPT | ${pkgs.gawk}/bin/awk '{print $2}' | ${pkgs.findutils}/bin/xargs ${pkgs.util-linux}/bin/kill -$SIGNAL
16 anyPamMount = any (attrByPath ["pamMount"] false) (attrValues config.security.pam.services);
8 anyPamMount = any (attrByPath ["pamMount"] false) (attrValues config.security.pam.services);
@@ -59,71 +51,6 @@ in
59 You can define volume-specific options in the volume definitions.
51 You can define volume-specific options in the volume definitions.
63− debugLevel = mkOption {
68− Sets the Debug-Level. 0 disables debugging, 1 enables pam_mount tracing,
69− and 2 additionally enables tracing in mount.crypt. The default is 0.
70− For more information, visit <link
71− xlink:href="http://pam-mount.sourceforge.net/pam_mount.conf.5.html" />.
75− logoutWait = mkOption {
79− Amount of microseconds to wait until killing remaining processes after
81− For more information, visit <link
82− xlink:href="http://pam-mount.sourceforge.net/pam_mount.conf.5.html" />.
86− logoutHup = mkOption {
90− Kill remaining processes after logout by sending a SIGHUP.
94− logoutTerm = mkOption {
98− Kill remaining processes after logout by sending a SIGTERM.
102− logoutKill = mkOption {
106− Kill remaining processes after logout by sending a SIGKILL.
110− createMountPoints = mkOption {
114− Create mountpoints for volumes if they do not exist.
118− removeCreatedMountPoints = mkOption {
122− Remove mountpoints created by pam_mount after logout. This
123− only affects mountpoints that have been created by pam_mount
124− in the same session.
@@ -150,20 +77,21 @@ in
150 <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
77 <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
151 <!-- auto generated from Nixos: modules/config/users-groups.nix -->
78 <!-- auto generated from Nixos: modules/config/users-groups.nix -->
152 <pam_mount>
79 <pam_mount>
153− <debug enable="${toString cfg.debugLevel}" />
80+ <debug enable="0" />
154 <!-- if activated, requires ofl from hxtools to be present -->
82 <!-- if activated, requires ofl from hxtools to be present -->
155− <logout wait="${toString cfg.logoutWait}" hup="${if cfg.logoutHup then "yes" else "no"}" term="${if cfg.logoutTerm then "yes" else "no"}" kill="${if cfg.logoutKill then "yes" else "no"}" />
83+ <logout wait="0" hup="no" term="no" kill="no" />
156 <!-- set PATH variable for pam_mount module -->
84 <!-- set PATH variable for pam_mount module -->
157 <path>${makeBinPath ([ pkgs.util-linux ] ++ cfg.additionalSearchPaths)}</path>
85 <path>${makeBinPath ([ pkgs.util-linux ] ++ cfg.additionalSearchPaths)}</path>
158 <!-- create mount point if not present -->
86 <!-- create mount point if not present -->
159− <mkmountpoint enable="${if cfg.createMountPoints then "1" else "0"}" remove="${if cfg.removeCreatedMountPoints then "true" else "false"}" />
87+ <mkmountpoint enable="1" remove="true" />
160 <!-- specify the binaries to be called -->
89 <!-- specify the binaries to be called -->
161 <fusemount>${pkgs.fuse}/bin/mount.fuse %(VOLUME) %(MNTPT) -o ${concatStringsSep "," (cfg.fuseMountOptions ++ [ "%(OPTIONS)" ])}</fusemount>
90 <fusemount>${pkgs.fuse}/bin/mount.fuse %(VOLUME) %(MNTPT) -o ${concatStringsSep "," (cfg.fuseMountOptions ++ [ "%(OPTIONS)" ])}</fusemount>
162− <fuseumount>${pkgs.fuse}/bin/fusermount -u %(MNTPT)</fuseumount>
163 <cryptmount>${pkgs.pam_mount}/bin/mount.crypt %(VOLUME) %(MNTPT)</cryptmount>
91 <cryptmount>${pkgs.pam_mount}/bin/mount.crypt %(VOLUME) %(MNTPT)</cryptmount>
164 <cryptumount>${pkgs.pam_mount}/bin/umount.crypt %(MNTPT)</cryptumount>
92 <cryptumount>${pkgs.pam_mount}/bin/umount.crypt %(MNTPT)</cryptumount>
165 <pmvarrun>${pkgs.pam_mount}/bin/pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
93 <pmvarrun>${pkgs.pam_mount}/bin/pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
166− ${optionalString oflRequired "<ofl>${fake_ofl}/bin/fake_ofl %(SIGNAL) %(MNTPT)</ofl>"}
94+
167 ${concatStrings (map userVolumeEntry (attrValues extraUserVolumes))}
95 ${concatStrings (map userVolumeEntry (attrValues extraUserVolumes))}
168 ${concatStringsSep "\n" cfg.extraVolumes}
96 ${concatStringsSep "\n" cfg.extraVolumes}
169 </pam_mount>
97 </pam_mount>
nixos/modules/security/sudo.nix+1−1
@@ -245,7 +245,7 @@ in
246 environment.systemPackages = [ sudo ];
246 environment.systemPackages = [ sudo ];
248− security.pam.services.sudo = { sshAgentAuth = true; usshAuth = true; };
248+ security.pam.services.sudo = { sshAgentAuth = true; };
250 environment.etc.sudoers =
250 environment.etc.sudoers =
251 { source =
251 { source =
nixos/modules/services/audio/snapserver.nix+7−15
@@ -1,4 +1,4 @@
1−{ config, options, lib, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
@@ -101,8 +101,6 @@ in {
102 openFirewall = mkOption {
102 openFirewall = mkOption {
103 type = types.bool;
103 type = types.bool;
104− # Make the behavior consistent with other services. Set the default to
105− # false and remove the accompanying warning after NixOS 22.05 is released.
106 default = true;
104 default = true;
107 description = ''
105 description = ''
108 Whether to automatically open the specified ports in the firewall.
106 Whether to automatically open the specified ports in the firewall.
@@ -275,16 +273,10 @@ in {
276 config = mkIf cfg.enable {
274 config = mkIf cfg.enable {
279− # https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85
276+ # https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85
280− filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then ''
277+ warnings = filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then ''
281− services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
278+ services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
282− '' else "") cfg.streams)
279+ '' else "") cfg.streams);
283− # Remove this warning after NixOS 22.05 is released.
284− ++ optional (options.services.snapserver.openFirewall.highestPrio >= (mkOptionDefault null).priority) ''
285− services.snapserver.openFirewall will no longer default to true starting with NixOS 22.11.
286− Enable it explicitly if you need to control Snapserver remotely.
289 systemd.services.snapserver = {
281 systemd.services.snapserver = {
290 after = [ "network.target" ];
282 after = [ "network.target" ];
@@ -312,8 +304,8 @@ in {
313 networking.firewall.allowedTCPPorts =
305 networking.firewall.allowedTCPPorts =
314 optionals cfg.openFirewall [ cfg.port ]
306 optionals cfg.openFirewall [ cfg.port ]
315− ++ optional (cfg.openFirewall && cfg.tcp.enable) cfg.tcp.port
307+ ++ optional cfg.tcp.enable cfg.tcp.port
316− ++ optional (cfg.openFirewall && cfg.http.enable) cfg.http.port;
308+ ++ optional cfg.http.enable cfg.http.port;
nixos/modules/services/continuous-integration/github-runner.nix−10
@@ -299,16 +299,6 @@ in
299 RestrictRealtime = true;
299 RestrictRealtime = true;
300 RestrictSUIDSGID = true;
300 RestrictSUIDSGID = true;
301 UMask = "0066";
301 UMask = "0066";
302− ProtectProc = "invisible";
304− SystemCallFilter = [
311− RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" "AF_NETLINK" ];
313 # Needs network access
303 # Needs network access
314 PrivateNetwork = false;
304 PrivateNetwork = false;
nixos/modules/services/continuous-integration/gitlab-runner.nix+2−9
@@ -36,12 +36,12 @@ let
37 # register new services
37 # register new services
38 ${concatStringsSep "\n" (mapAttrsToList (name: service: ''
38 ${concatStringsSep "\n" (mapAttrsToList (name: service: ''
39− if echo "$NEW_SERVICES" | grep -xq "${name}"; then
39+ if echo "$NEW_SERVICES" | grep -xq ${name}; then
40 bash -c ${escapeShellArg (concatStringsSep " \\\n " ([
40 bash -c ${escapeShellArg (concatStringsSep " \\\n " ([
41 "set -a && source ${service.registrationConfigFile} &&"
41 "set -a && source ${service.registrationConfigFile} &&"
42 "gitlab-runner register"
42 "gitlab-runner register"
43 "--non-interactive"
43 "--non-interactive"
44− (if service.description != null then "--description \"${service.description}\"" else "--name '${name}'")
44+ "--name ${name}"
45 "--executor ${service.executor}"
45 "--executor ${service.executor}"
46 "--limit ${toString service.limit}"
46 "--limit ${toString service.limit}"
47 "--request-concurrency ${toString service.requestConcurrency}"
47 "--request-concurrency ${toString service.requestConcurrency}"
@@ -365,13 +365,6 @@ in
365 with <literal>RUNNER_ENV</literal> variable set.
365 with <literal>RUNNER_ENV</literal> variable set.
368− description = mkOption {
369− type = types.nullOr types.str;
372− Name/description of the runner.
375 executor = mkOption {
368 executor = mkOption {
376 type = types.str;
369 type = types.str;
377 default = "docker";
370 default = "docker";
nixos/modules/services/databases/cockroachdb.nix+29−37
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
@@ -6,44 +6,46 @@ let
6 cfg = config.services.cockroachdb;
6 cfg = config.services.cockroachdb;
7 crdb = cfg.package;
7 crdb = cfg.package;
9− startupCommand = utils.escapeSystemdExecArgs
9+ escape = builtins.replaceStrings ["%"] ["%%"];
10− ([
10+ ifNotNull = v: s: optionalString (v != null) s;
12+ startupCommand = lib.concatStringsSep " "
11− # Basic startup
13+ [ # Basic startup
12− "${crdb}/bin/cockroach"
14+ "${crdb}/bin/cockroach start"
14 "--logtostderr"
15 "--logtostderr"
15 "--store=/var/lib/cockroachdb"
16 "--store=/var/lib/cockroachdb"
17+ (ifNotNull cfg.locality "--locality='${cfg.locality}'")
17 # WebUI settings
19 # WebUI settings
18− "--http-addr=${cfg.http.address}:${toString cfg.http.port}"
20+ "--http-addr='${cfg.http.address}:${toString cfg.http.port}'"
20 # Cluster listen address
22 # Cluster listen address
21− "--listen-addr=${cfg.listen.address}:${toString cfg.listen.port}"
23+ "--listen-addr='${cfg.listen.address}:${toString cfg.listen.port}'"
25+ # Cluster configuration
26+ (ifNotNull cfg.join "--join=${cfg.join}")
23− # Cache and memory settings.
28+ # Cache and memory settings. Must be escaped.
24− "--cache=${cfg.cache}"
29+ "--cache='${escape cfg.cache}'"
25− "--max-sql-memory=${cfg.maxSqlMemory}"
30+ "--max-sql-memory='${escape cfg.maxSqlMemory}'"
27 # Certificate/security settings.
32 # Certificate/security settings.
28 (if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
33 (if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
30− ++ lib.optional (cfg.join != null) "--join=${cfg.join}"
35+
31− ++ lib.optional (cfg.locality != null) "--locality=${cfg.locality}"
34− addressOption = descr: defaultPort: {
36+ addressOption = descr: defaultPort: {
35− address = mkOption {
37+ address = mkOption {
36− type = types.str;
38+ type = types.str;
37− default = "localhost";
39+ default = "localhost";
38− description = "Address to bind to for ${descr}";
40+ description = "Address to bind to for ${descr}";
41− port = mkOption {
43+ port = mkOption {
42− type = types.port;
44+ type = types.port;
43− default = defaultPort;
45+ default = defaultPort;
44− description = "Port to bind to for ${descr}";
46+ description = "Port to bind to for ${descr}";
@@ -157,16 +159,6 @@ in
157 only contain open source features and open source code).
159 only contain open source features and open source code).
161− extraArgs = mkOption {
162− type = types.listOf types.str;
164− example = [ "--advertise-addr" "[fe80::f6f2:::]" ];
166− Extra CLI arguments passed to <command>cockroach start</command>.
167− For the full list of supported argumemnts, check <link xlink:href="https://www.cockroachlabs.com/docs/stable/cockroach-start.html#flags"/>
nixos/modules/services/databases/couchdb.nix−6
@@ -193,11 +193,6 @@ in {
194 preStart = ''
194 preStart = ''
195 touch ${cfg.configFile}
195 touch ${cfg.configFile}
196− if ! test -e ${cfg.databaseDir}/.erlang.cookie; then
197− touch ${cfg.databaseDir}/.erlang.cookie
198− chmod 600 ${cfg.databaseDir}/.erlang.cookie
199− dd if=/dev/random bs=16 count=1 | base64 > ${cfg.databaseDir}/.erlang.cookie
203 environment = {
198 environment = {
@@ -209,7 +204,6 @@ in {
209 ERL_FLAGS= ''-couch_ini ${cfg.package}/etc/default.ini ${configFile} ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} ${cfg.configFile}'';
204 ERL_FLAGS= ''-couch_ini ${cfg.package}/etc/default.ini ${configFile} ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} ${cfg.configFile}'';
210 # 5. the vm.args file
205 # 5. the vm.args file
211 COUCHDB_ARGS_FILE=''${cfg.argsFile}'';
206 COUCHDB_ARGS_FILE=''${cfg.argsFile}'';
212− HOME =''${cfg.databaseDir}'';
215 serviceConfig = {
209 serviceConfig = {
nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+4−4
@@ -58,7 +58,7 @@ in {
58 Configuration for the media session core. For details see
58 Configuration for the media session core. For details see
59 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/media-session.conf
59 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/media-session.conf
61− default = defaults.media-session;
61+ default = {};
64 alsa-monitor = mkOption {
64 alsa-monitor = mkOption {
@@ -67,7 +67,7 @@ in {
67 Configuration for the alsa monitor. For details see
67 Configuration for the alsa monitor. For details see
68 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/alsa-monitor.conf
68 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/alsa-monitor.conf
70− default = defaults.alsa-monitor;
70+ default = {};
73 bluez-monitor = mkOption {
73 bluez-monitor = mkOption {
@@ -76,7 +76,7 @@ in {
76 Configuration for the bluez5 monitor. For details see
76 Configuration for the bluez5 monitor. For details see
77 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/bluez-monitor.conf
77 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/bluez-monitor.conf
79− default = defaults.bluez-monitor;
79+ default = {};
82 v4l2-monitor = mkOption {
82 v4l2-monitor = mkOption {
@@ -85,7 +85,7 @@ in {
85 Configuration for the V4L2 monitor. For details see
85 Configuration for the V4L2 monitor. For details see
86 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/v4l2-monitor.conf
86 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/v4l2-monitor.conf
88− default = defaults.v4l2-monitor;
88+ default = {};
nixos/modules/services/development/jupyter/default.nix−1
@@ -194,7 +194,6 @@ in {
194 extraGroups = [ cfg.group ];
194 extraGroups = [ cfg.group ];
195 home = "/var/lib/jupyter";
195 home = "/var/lib/jupyter";
196 createHome = true;
196 createHome = true;
197− isSystemUser = true;
198 useDefaultShell = true; # needed so that the user can start a terminal.
197 useDefaultShell = true; # needed so that the user can start a terminal.
nixos/modules/services/editors/haste.nixdeleted−86
@@ -1,86 +0,0 @@
1−{ config, lib, pkgs, ... }:
6− pkg = pkgs.haste-server;
7− cfg = config.services.haste-server;
9− format = pkgs.formats.json {};
12− options.services.haste-server = {
13− enable = mkEnableOption "haste-server";
14− openFirewall = mkEnableOption "firewall passthrough for haste-server";
16− settings = mkOption {
18− Configuration for haste-server.
19− For documentation see <link xlink:href="https://github.com/toptal/haste-server#settings">project readme</link>
25− config = mkIf (cfg.enable) {
26− networking.firewall.allowedTCPPorts = mkIf (cfg.openFirewall) [ cfg.settings.port ];
28− services.haste-server = {
30− host = mkDefault "::";
31− port = mkDefault 7777;
33− keyLength = mkDefault 10;
34− maxLength = mkDefault 400000;
36− staticMaxAge = mkDefault 86400;
37− recompressStaticAssets = mkDefault false;
39− logging = mkDefault [
47− keyGenerator = mkDefault {
54− totalRequests = mkDefault 500;
55− every = mkDefault 60000;
60− storage = mkDefault {
65− about = mkDefault "${pkg}/share/haste-server/about.md";
70− systemd.services.haste-server = {
71− wantedBy = [ "multi-user.target" ];
72− requires = [ "network.target" ];
73− after = [ "network.target" ];
76− User = "haste-server";
78− StateDirectory = "haste-server";
79− WorkingDirectory = "/var/lib/haste-server";
80− ExecStart = "${pkg}/bin/haste-server ${format.generate "config.json" cfg.settings}";
83− path = with pkgs; [ pkg coreutils ];
nixos/modules/services/hardware/udev.nix+23−125
@@ -8,24 +8,6 @@ let
9 cfg = config.services.udev;
9 cfg = config.services.udev;
11− initrdUdevRules = pkgs.runCommand "initrd-udev-rules" {} ''
12− mkdir -p $out/etc/udev/rules.d
13− for f in 60-cdrom_id 60-persistent-storage 75-net-description 80-drivers 80-net-setup-link; do
14− ln -s ${config.boot.initrd.systemd.package}/lib/udev/rules.d/$f.rules $out/etc/udev/rules.d
19− # networkd link files are used early by udev to set up interfaces early.
20− # This must be done in stage 1 to avoid race conditions between udev and
22− # TODO move this into the initrd-network module when it exists
23− initrdLinkUnits = pkgs.runCommand "initrd-link-units" {} ''
25− ln -s ${udev}/lib/systemd/network/*.link $out/
26− ${lib.concatMapStringsSep "\n" (file: "ln -s ${file} $out/") (lib.mapAttrsToList (n: v: "${v.unit}/${n}") (lib.filterAttrs (n: _: hasSuffix ".link" n) config.systemd.network.units))}
29 extraUdevRules = pkgs.writeTextFile {
11 extraUdevRules = pkgs.writeTextFile {
30 name = "extra-udev-rules";
12 name = "extra-udev-rules";
31 text = cfg.extraRules;
13 text = cfg.extraRules;
@@ -41,16 +23,17 @@ let
41 nixosRules = ''
23 nixosRules = ''
42 # Miscellaneous devices.
24 # Miscellaneous devices.
43 KERNEL=="kvm", MODE="0666"
25 KERNEL=="kvm", MODE="0666"
26+ KERNEL=="kqemu", MODE="0666"
45 # Needed for gpm.
28 # Needed for gpm.
46 SUBSYSTEM=="input", KERNEL=="mice", TAG+="systemd"
29 SUBSYSTEM=="input", KERNEL=="mice", TAG+="systemd"
49 # Perform substitutions in all udev rules files.
32 # Perform substitutions in all udev rules files.
50− udevRulesFor = { name, udevPackages, udevPath, udev, systemd, binPackages, initrdBin ? null }: pkgs.runCommand name
33+ udevRules = pkgs.runCommand "udev-rules"
51 { preferLocalBuild = true;
34 { preferLocalBuild = true;
52 allowSubstitutes = false;
35 allowSubstitutes = false;
53− packages = unique (map toString udevPackages);
36+ packages = unique (map toString cfg.packages);
56 mkdir -p $out
39 mkdir -p $out
@@ -78,9 +61,6 @@ let
78 --replace \"/bin/mount \"${pkgs.util-linux}/bin/mount \
61 --replace \"/bin/mount \"${pkgs.util-linux}/bin/mount \
79 --replace /usr/bin/readlink ${pkgs.coreutils}/bin/readlink \
62 --replace /usr/bin/readlink ${pkgs.coreutils}/bin/readlink \
80 --replace /usr/bin/basename ${pkgs.coreutils}/bin/basename
63 --replace /usr/bin/basename ${pkgs.coreutils}/bin/basename
81− ${optionalString (initrdBin != null) ''
82− substituteInPlace $i --replace '/run/current-system/systemd' "${removeSuffix "/bin" initrdBin}"
86 echo -n "Checking that all programs called by relative paths in udev rules exist in ${udev}/lib/udev... "
66 echo -n "Checking that all programs called by relative paths in udev rules exist in ${udev}/lib/udev... "
@@ -105,9 +85,8 @@ let
105 for i in $import_progs $run_progs; do
85 for i in $import_progs $run_progs; do
106 # if the path refers to /run/current-system/systemd, replace with config.systemd.package
86 # if the path refers to /run/current-system/systemd, replace with config.systemd.package
107 if [[ $i == /run/current-system/systemd* ]]; then
87 if [[ $i == /run/current-system/systemd* ]]; then
108− i="${systemd}/''${i#/run/current-system/systemd/}"
88+ i="${config.systemd.package}/''${i#/run/current-system/systemd/}"
111 if [[ ! -x $i ]]; then
90 if [[ ! -x $i ]]; then
112 echo "FAIL"
91 echo "FAIL"
113 echo "$i is called in udev rules but is not executable or does not exist"
92 echo "$i is called in udev rules but is not executable or does not exist"
@@ -124,7 +103,7 @@ let
124 echo "Consider fixing the following udev rules:"
103 echo "Consider fixing the following udev rules:"
125 echo "$filesToFixup" | while read localFile; do
104 echo "$filesToFixup" | while read localFile; do
126 remoteFile="origin unknown"
105 remoteFile="origin unknown"
127− for i in ${toString binPackages}; do
106+ for i in ${toString cfg.packages}; do
128 for j in "$i"/*/udev/rules.d/*; do
107 for j in "$i"/*/udev/rules.d/*; do
129 [ -e "$out/$(basename "$j")" ] || continue
108 [ -e "$out/$(basename "$j")" ] || continue
130 [ "$(basename "$j")" = "$(basename "$localFile")" ] || continue
109 [ "$(basename "$j")" = "$(basename "$localFile")" ] || continue
@@ -147,7 +126,7 @@ let
147 ${optionalString (!config.boot.hardwareScan) ''
126 ${optionalString (!config.boot.hardwareScan) ''
148 ln -s /dev/null $out/80-drivers.rules
127 ln -s /dev/null $out/80-drivers.rules
152 hwdbBin = pkgs.runCommand "hwdb.bin"
131 hwdbBin = pkgs.runCommand "hwdb.bin"
153 { preferLocalBuild = true;
132 { preferLocalBuild = true;
@@ -223,6 +202,20 @@ in
205+ initrdRules = mkOption {
208+ SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1D:60:B9:6D:4F", KERNEL=="eth*", NAME="my_fast_network_card"
212+ <command>udev</command> rules to include in the initrd
213+ <emphasis>only</emphasis>. They'll be written into file
214+ <filename>99-local.rules</filename>. Thus they are read and applied
215+ after the essential initrd rules.
226 extraRules = mkOption {
219 extraRules = mkOption {
227 default = "";
220 default = "";
228 example = ''
221 example = ''
@@ -290,52 +283,6 @@ in
293− boot.initrd.services.udev = {
295− packages = mkOption {
296− type = types.listOf types.path;
300− <emphasis>This will only be used when systemd is used in stage 1.</emphasis>
302− List of packages containing <command>udev</command> rules that will be copied to stage 1.
304− <filename><replaceable>pkg</replaceable>/etc/udev/rules.d</filename> and
305− <filename><replaceable>pkg</replaceable>/lib/udev/rules.d</filename>
310− binPackages = mkOption {
311− type = types.listOf types.path;
315− <emphasis>This will only be used when systemd is used in stage 1.</emphasis>
317− Packages to search for binaries that are referenced by the udev rules in stage 1.
318− This list always contains /bin of the initrd.
326− SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1D:60:B9:6D:4F", KERNEL=="eth*", NAME="my_fast_network_card"
330− <command>udev</command> rules to include in the initrd
331− <emphasis>only</emphasis>. They'll be written into file
332− <filename>99-local.rules</filename>. Thus they are read and applied
333− after the essential initrd rules.
@@ -351,61 +298,16 @@ in
352 boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ];
299 boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ];
354− boot.initrd.extraUdevRulesCommands = optionalString (!config.boot.initrd.systemd.enable && config.boot.initrd.services.udev.rules != "")
301+ boot.initrd.extraUdevRulesCommands = optionalString (cfg.initrdRules != "")
356 cat <<'EOF' > $out/99-local.rules
303 cat <<'EOF' > $out/99-local.rules
357− ${config.boot.initrd.services.udev.rules}
304+ ${cfg.initrdRules}
361− boot.initrd.systemd.additionalUpstreamUnits = [
362− # TODO: "initrd-udevadm-cleanup-db.service" is commented out because of https://github.com/systemd/systemd/issues/12953
363− "systemd-udevd-control.socket"
364− "systemd-udevd-kernel.socket"
365− "systemd-udevd.service"
366− "systemd-udev-settle.service"
367− "systemd-udev-trigger.service"
369− boot.initrd.systemd.storePaths = [
370− "${config.boot.initrd.systemd.package}/lib/systemd/systemd-udevd"
371− "${config.boot.initrd.systemd.package}/lib/udev/ata_id"
372− "${config.boot.initrd.systemd.package}/lib/udev/cdrom_id"
373− "${config.boot.initrd.systemd.package}/lib/udev/scsi_id"
374− "${config.boot.initrd.systemd.package}/lib/udev/rules.d"
375− ] ++ map (x: "${x}/bin") config.boot.initrd.services.udev.binPackages;
377− # Generate the udev rules for the initrd
378− boot.initrd.systemd.contents = {
379− "/etc/udev/rules.d".source = udevRulesFor {
380− name = "initrd-udev-rules";
381− initrdBin = config.boot.initrd.systemd.contents."/bin".source;
382− udevPackages = config.boot.initrd.services.udev.packages;
383− udevPath = config.boot.initrd.systemd.contents."/bin".source;
384− udev = config.boot.initrd.systemd.package;
385− systemd = config.boot.initrd.systemd.package;
386− binPackages = config.boot.initrd.services.udev.binPackages ++ [ config.boot.initrd.systemd.contents."/bin".source ];
388− "/etc/systemd/network".source = initrdLinkUnits;
390− # Insert initrd rules
391− boot.initrd.services.udev.packages = [
393− (mkIf (config.boot.initrd.services.udev.rules != "") (pkgs.writeTextFile {
394− name = "initrd-udev-rules";
395− destination = "/etc/udev/rules.d/99-local.rules";
396− text = config.boot.initrd.services.udev.rules;
400 environment.etc =
308 environment.etc =
402− "udev/rules.d".source = udevRulesFor {
310+ "udev/rules.d".source = udevRules;
403− name = "udev-rules";
404− udevPackages = cfg.packages;
405− systemd = config.systemd.package;
406− binPackages = cfg.packages;
407− inherit udevPath udev;
409 "udev/hwdb.bin".source = hwdbBin;
311 "udev/hwdb.bin".source = hwdbBin;
@@ -436,8 +338,4 @@ in
441− (mkRenamedOptionModule [ "services" "udev" "initrdRules" ] [ "boot" "initrd" "services" "udev" "rules" ])
nixos/modules/services/hardware/udisks2.nix−39
@@ -4,13 +4,6 @@
8− settingsFormat = pkgs.formats.ini {
9− listToValue = concatMapStringsSep "," (generators.mkValueStringDefault {});
11− configFiles = mapAttrs (name: value: (settingsFormat.generate name value)) (mapAttrs' (name: value: nameValuePair name value ) config.services.udisks2.settings);
16 ###### interface
9 ###### interface
@@ -28,36 +21,6 @@ in
31− settings = mkOption rec {
32− type = types.attrsOf settingsFormat.type;
33− apply = recursiveUpdate default;
38− modules_load_preference = "ondemand";
41− encryption = "luks2";
45− example = literalExpression ''
47− "WDC-WD10EZEX-60M2NA0-WD-WCC3F3SJ0698.conf" = {
55− Options passed to udisksd.
56− See <link xlink:href="http://manpages.ubuntu.com/manpages/latest/en/man5/udisks2.conf.5.html">here</link> and
57− drive configuration in <link xlink:href="http://manpages.ubuntu.com/manpages/latest/en/man8/udisks.8.html">here</link> for supported options.
@@ -69,8 +32,6 @@ in
70 environment.systemPackages = [ pkgs.udisks2 ];
33 environment.systemPackages = [ pkgs.udisks2 ];
72− environment.etc = mapAttrs' (name: value: nameValuePair "udisks2/${name}" { source = value; } ) configFiles;
74 security.polkit.enable = true;
35 security.polkit.enable = true;
76 services.dbus.packages = [ pkgs.udisks2 ];
37 services.dbus.packages = [ pkgs.udisks2 ];
nixos/modules/services/hardware/usbrelayd.nixdeleted−44
@@ -1,44 +0,0 @@
1−{ config, lib, pkgs, ... }:
4− cfg = config.services.usbrelayd;
7− options.services.usbrelayd = with types; {
8− enable = mkEnableOption "USB Relay MQTT daemon";
12− description = "Hostname or IP address of your MQTT Broker.";
13− default = "127.0.0.1";
20− clientName = mkOption {
22− description = "Name, your client connects as.";
23− default = "MyUSBRelay";
27− config = mkIf cfg.enable {
29− # TODO: Rename to .conf in upcomming release
30− environment.etc."usbrelayd.ini".text = ''
32− BROKER = ${cfg.broker}
33− CLIENTNAME = ${cfg.clientName}
36− services.udev.packages = [ pkgs.usbrelayd ];
37− systemd.packages = [ pkgs.usbrelayd ];
38− users.users.usbrelay = {
42− users.groups.usbrelay = { };
nixos/modules/services/logging/klogd.nix+35−6
@@ -1,9 +1,38 @@
1−{ lib, ... }:
1+{ config, lib, pkgs, ... }:
4− imports = [
6+ ###### interface
5− (lib.mkRemovedOptionModule [ "security" "klogd" "enable" ] ''
7+
6− Logging of kernel messages is now handled by systemd.
8+ options = {
10+ services.klogd.enable = mkOption {
12+ default = versionOlder (getVersion config.boot.kernelPackages.kernel) "3.5";
13+ defaultText = literalExpression ''versionOlder (getVersion config.boot.kernelPackages.kernel) "3.5"'';
15+ Whether to enable klogd, the kernel log message processing
16+ daemon. Since systemd handles logging of kernel messages on
17+ Linux 3.5 and later, this is only useful if you're running an
25+ ###### implementation
27+ config = mkIf config.services.klogd.enable {
28+ systemd.services.klogd = {
29+ description = "Kernel Log Daemon";
30+ wantedBy = [ "multi-user.target" ];
31+ path = [ pkgs.sysklogd ];
32+ unitConfig.ConditionVirtualization = "!systemd-nspawn";
34+ "klogd -c 1 -2 -n " +
35+ "-k $(dirname $(readlink -f /run/booted-system/kernel))/System.map";
nixos/modules/services/logging/logrotate.nix+3−3
@@ -162,8 +162,8 @@ let
162 # file exist, but we only have sandboxed users here so brown these
162 # file exist, but we only have sandboxed users here so brown these
163 # out. according to man page that means su, create and createolddir.
163 # out. according to man page that means su, create and createolddir.
164 # files required to exist also won't be present, so missingok is forced.
164 # files required to exist also won't be present, so missingok is forced.
165− user=$(${pkgs.buildPackages.coreutils}/bin/id -un)
165+ user=$(${pkgs.coreutils}/bin/id -un)
166− group=$(${pkgs.buildPackages.coreutils}/bin/id -gn)
166+ group=$(${pkgs.coreutils}/bin/id -gn)
167 sed -e "s/\bsu\s.*/su $user $group/" \
167 sed -e "s/\bsu\s.*/su $user $group/" \
168 -e "s/\b\(create\s\+[0-9]*\s*\|createolddir\s\+[0-9]*\s\+\).*/\1$user $group/" \
168 -e "s/\b\(create\s\+[0-9]*\s*\|createolddir\s\+[0-9]*\s\+\).*/\1$user $group/" \
169 -e "1imissingok" -e "s/\bnomissingok\b//" \
169 -e "1imissingok" -e "s/\bnomissingok\b//" \
@@ -173,7 +173,7 @@ let
173 # 'error:' at common log level, so we can use grep, taking care
173 # 'error:' at common log level, so we can use grep, taking care
174 # to keep error codes
174 # to keep error codes
175 set -o pipefail
175 set -o pipefail
176− if ! ${pkgs.buildPackages.logrotate}/sbin/logrotate --debug /tmp/logrotate.conf 2>&1 \
176+ if ! ${pkgs.logrotate}/sbin/logrotate --debug /tmp/logrotate.conf 2>&1 \
177 | ( ! grep "error:" ) > /tmp/logrotate-error; then
177 | ( ! grep "error:" ) > /tmp/logrotate-error; then
178 echo "Logrotate configuration check failed."
178 echo "Logrotate configuration check failed."
179 echo "The failing configuration (after adjustments to pass tests in sandbox) was:"
179 echo "The failing configuration (after adjustments to pass tests in sandbox) was:"
nixos/modules/services/mail/mailman.nix+7−14
@@ -192,6 +192,7 @@ in {
192 log_dir = "/var/log/mailman";
192 log_dir = "/var/log/mailman";
193 lock_dir = "$var_dir/lock";
193 lock_dir = "$var_dir/lock";
194 etc_dir = "/etc";
194 etc_dir = "/etc";
195+ ext_dir = "$etc_dir/mailman.d";
195 pid_file = "/run/mailman/master.pid";
196 pid_file = "/run/mailman/master.pid";
@@ -224,14 +225,7 @@ in {
224 See <https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html>.
225 See <https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html>.
228− { assertion = cfg.webHosts != [];
230− services.mailman.serve.enable requires there to be at least one entry
231− in services.mailman.webHosts.
234− ] ++ (lib.optionals cfg.enablePostfix [
228+ in (lib.optionals cfg.enablePostfix [
235 { assertion = postfix.enable;
229 { assertion = postfix.enable;
236 message = ''
230 message = ''
237 Mailman's default NixOS configuration requires Postfix to be enabled.
231 Mailman's default NixOS configuration requires Postfix to be enabled.
@@ -281,14 +275,15 @@ in {
281 globals().update(json.load(f))
275 globals().update(json.load(f))
284− services.nginx = mkIf (cfg.serve.enable && cfg.webHosts != []) {
278+ services.nginx = mkIf cfg.serve.enable {
285 enable = mkDefault true;
279 enable = mkDefault true;
286− virtualHosts = lib.genAttrs cfg.webHosts (webHost: {
280+ virtualHosts."${lib.head cfg.webHosts}" = {
281+ serverAliases = cfg.webHosts;
287 locations = {
282 locations = {
288 "/".extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
283 "/".extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
289 "/static/".alias = webSettings.STATIC_ROOT + "/";
284 "/static/".alias = webSettings.STATIC_ROOT + "/";
294 environment.systemPackages = [ (pkgs.buildEnv {
289 environment.systemPackages = [ (pkgs.buildEnv {
@@ -318,9 +313,7 @@ in {
318 systemd.services = {
313 systemd.services = {
319 mailman = {
314 mailman = {
320 description = "GNU Mailman Master Process";
315 description = "GNU Mailman Master Process";
321− before = lib.optional cfg.enablePostfix "postfix.service";
322− after = [ "network.target" ]
316+ after = [ "network.target" ];
323− ++ lib.optional cfg.enablePostfix "postfix-setup.service";
324 restartTriggers = [ config.environment.etc."mailman.cfg".source ];
317 restartTriggers = [ config.environment.etc."mailman.cfg".source ];
325 wantedBy = [ "multi-user.target" ];
318 wantedBy = [ "multi-user.target" ];
326 serviceConfig = {
319 serviceConfig = {
nixos/modules/services/mail/postfix.nix+17−22
@@ -723,10 +723,23 @@ in
723 { ${setgidGroup}.gid = config.ids.gids.postdrop;
723 { ${setgidGroup}.gid = config.ids.gids.postdrop;
726− systemd.services.postfix-setup =
726+ systemd.services.postfix =
727− { description = "Setup for Postfix mail server";
727+ { description = "Postfix mail server";
729+ wantedBy = [ "multi-user.target" ];
730+ after = [ "network.target" ];
731+ path = [ pkgs.postfix ];
728− serviceConfig.Type = "oneshot";
733+ serviceConfig = {
729− script = ''
734+ Type = "forking";
736+ PIDFile = "/var/lib/postfix/queue/pid/master.pid";
737+ ExecStart = "${pkgs.postfix}/bin/postfix start";
738+ ExecStop = "${pkgs.postfix}/bin/postfix stop";
739+ ExecReload = "${pkgs.postfix}/bin/postfix reload";
730 # Backwards compatibility
743 # Backwards compatibility
731 if [ ! -d /var/lib/postfix ] && [ -d /var/postfix ]; then
744 if [ ! -d /var/lib/postfix ] && [ -d /var/postfix ]; then
732 mkdir -p /var/lib
745 mkdir -p /var/lib
@@ -764,24 +777,6 @@ in
767− systemd.services.postfix =
768− { description = "Postfix mail server";
770− wantedBy = [ "multi-user.target" ];
771− after = [ "network.target" "postfix-setup.service" ];
772− requires = [ "postfix-setup.service" ];
773− path = [ pkgs.postfix ];
778− PIDFile = "/var/lib/postfix/queue/pid/master.pid";
779− ExecStart = "${pkgs.postfix}/bin/postfix start";
780− ExecStop = "${pkgs.postfix}/bin/postfix stop";
781− ExecReload = "${pkgs.postfix}/bin/postfix reload";
785 services.postfix.config = (mapAttrs (_: v: mkDefault v) {
780 services.postfix.config = (mapAttrs (_: v: mkDefault v) {
786 compatibility_level = pkgs.postfix.version;
781 compatibility_level = pkgs.postfix.version;
787 mail_owner = cfg.user;
782 mail_owner = cfg.user;
nixos/modules/services/matrix/matrix-synapse.nix+1−1
@@ -81,7 +81,7 @@ in {
81 (mkRemovedOptionModule [ "services" "matrix-synapse" "verbose" ] "Use a log config instead." )
81 (mkRemovedOptionModule [ "services" "matrix-synapse" "verbose" ] "Use a log config instead." )
83 # options that were moved into rfc42 style settigns
83 # options that were moved into rfc42 style settigns
84− (mkRemovedOptionModule [ "services" "matrix-synapse" "app_service_config_files" ] "Use settings.app_service_config_files instead" )
84+ (mkRemovedOptionModule [ "services" "matrix-synapse" "app_service_config_files" ] "Use settings.app_service_config_Files instead" )
85 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_args" ] "Use settings.database.args instead" )
85 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_args" ] "Use settings.database.args instead" )
86 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_name" ] "Use settings.database.args.database instead" )
86 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_name" ] "Use settings.database.args.database instead" )
87 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_type" ] "Use settings.database.name instead" )
87 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_type" ] "Use settings.database.name instead" )
nixos/modules/services/misc/dendrite.nix−1
@@ -247,7 +247,6 @@ in
247 WorkingDirectory = workingDir;
247 WorkingDirectory = workingDir;
248 RuntimeDirectory = "dendrite";
248 RuntimeDirectory = "dendrite";
249 RuntimeDirectoryMode = "0700";
249 RuntimeDirectoryMode = "0700";
250− LimitNOFILE = 65535;
251 EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
250 EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
252 ExecStartPre = ''
251 ExecStartPre = ''
253 ${pkgs.envsubst}/bin/envsubst \
252 ${pkgs.envsubst}/bin/envsubst \
nixos/modules/services/misc/etebase-server.nix+1−1
@@ -166,7 +166,7 @@ in
167 makeWrapper ${pythonEnv}/bin/etebase-server \
167 makeWrapper ${pythonEnv}/bin/etebase-server \
168 $out/bin/etebase-server \
168 $out/bin/etebase-server \
169− --chdir ${escapeShellArg cfg.dataDir} \
169+ --run "cd ${cfg.dataDir}" \
170 --prefix ETEBASE_EASY_CONFIG_PATH : "${configIni}"
170 --prefix ETEBASE_EASY_CONFIG_PATH : "${configIni}"
nixos/modules/services/misc/ethminer.nix+4−4
@@ -22,7 +22,7 @@ in
24 recheckInterval = mkOption {
24 recheckInterval = mkOption {
25− type = types.ints.unsigned;
25+ type = types.int;
26 default = 2000;
26 default = 2000;
27 description = "Interval in milliseconds between farm rechecks.";
27 description = "Interval in milliseconds between farm rechecks.";
@@ -70,7 +70,7 @@ in
72 maxPower = mkOption {
72 maxPower = mkOption {
73− type = types.ints.unsigned;
73+ type = types.int;
74 default = 113;
74 default = 113;
75 description = "Miner max watt usage.";
75 description = "Miner max watt usage.";
@@ -85,7 +85,7 @@ in
85 config = mkIf cfg.enable {
85 config = mkIf cfg.enable {
87 systemd.services.ethminer = {
87 systemd.services.ethminer = {
88− path = optional (cfg.toolkit == "cuda") [ pkgs.cudaPackages.cudatoolkit ];
88+ path = [ pkgs.cudatoolkit ];
89 description = "ethminer ethereum mining service";
89 description = "ethminer ethereum mining service";
90 wantedBy = [ "multi-user.target" ];
90 wantedBy = [ "multi-user.target" ];
91 after = [ "network.target" ];
91 after = [ "network.target" ];
@@ -97,7 +97,7 @@ in
97 Restart = "always";
97 Restart = "always";
100− environment = mkIf (cfg.toolkit == "cuda") {
100+ environment = {
101 LD_LIBRARY_PATH = "${config.boot.kernelPackages.nvidia_x11}/lib";
101 LD_LIBRARY_PATH = "${config.boot.kernelPackages.nvidia_x11}/lib";
nixos/modules/services/misc/gitea.nix+16−11
@@ -499,7 +499,6 @@ in
499 oldLfsJwtSecret = "${cfg.stateDir}/custom/conf/jwt_secret"; # old file for LFS_JWT_SECRET
499 oldLfsJwtSecret = "${cfg.stateDir}/custom/conf/jwt_secret"; # old file for LFS_JWT_SECRET
500 lfsJwtSecret = "${cfg.stateDir}/custom/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
500 lfsJwtSecret = "${cfg.stateDir}/custom/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
501 internalToken = "${cfg.stateDir}/custom/conf/internal_token";
501 internalToken = "${cfg.stateDir}/custom/conf/internal_token";
502− replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
504 # copy custom configuration and generate a random secret key if needed
503 # copy custom configuration and generate a random secret key if needed
505 ${optionalString (cfg.useWizard == false) ''
504 ${optionalString (cfg.useWizard == false) ''
@@ -527,17 +526,23 @@ in
527 ${gitea}/bin/gitea generate secret INTERNAL_TOKEN > ${internalToken}
526 ${gitea}/bin/gitea generate secret INTERNAL_TOKEN > ${internalToken}
530− chmod u+w '${runConfig}'
529+ SECRETKEY="$(head -n1 ${secretKey})"
531− ${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
532− ${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
530+ DBPASS="$(head -n1 ${cfg.database.passwordFile})"
533− ${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
531+ OAUTH2JWTSECRET="$(head -n1 ${oauth2JwtSecret})"
534− ${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
532+ LFSJWTSECRET="$(head -n1 ${lfsJwtSecret})"
535− ${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
533+ INTERNALTOKEN="$(head -n1 ${internalToken})"
537− ${lib.optionalString (cfg.mailerPasswordFile != null) ''
534+ ${if (cfg.mailerPasswordFile == null) then ''
535+ MAILERPASSWORD="#mailerpass#"
538− ${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
537+ MAILERPASSWORD="$(head -n1 ${cfg.mailerPasswordFile} || :)"
539+ sed -e "s,#secretkey#,$SECRETKEY,g" \
540+ -e "s,#dbpass#,$DBPASS,g" \
541+ -e "s,#oauth2jwtsecret#,$OAUTH2JWTSECRET,g" \
542+ -e "s,#lfsjwtsecret#,$LFSJWTSECRET,g" \
543+ -e "s,#internaltoken#,$INTERNALTOKEN,g" \
544+ -e "s,#mailerpass#,$MAILERPASSWORD,g" \
540− chmod u-w '${runConfig}'
545+ -i ${runConfig}
542 (umask 027; gitea_setup)
547 (umask 027; gitea_setup)
nixos/modules/services/misc/gitit.nix+1−1
@@ -10,7 +10,7 @@ let
11 toYesNo = b: if b then "yes" else "no";
11 toYesNo = b: if b then "yes" else "no";
13− gititShared = with cfg.haskellPackages; gitit + "/share/" + ghc.targetPrefix + ghc.haskellCompilerName + "/" + gitit.pname + "-" + gitit.version;
13+ gititShared = with cfg.haskellPackages; gitit + "/share/" + pkgs.stdenv.hostPlatform.system + "-" + ghc.name + "/" + gitit.pname + "-" + gitit.version;
15 gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
15 gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
nixos/modules/services/misc/gitlab.nix+2−2
@@ -179,7 +179,7 @@ let
179 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
179 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
180 --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
180 --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
181 --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \
181 --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \
182− --chdir '${cfg.packages.gitlab}/share/gitlab'
182+ --run 'cd ${cfg.packages.gitlab}/share/gitlab'
@@ -193,7 +193,7 @@ let
193 makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rails $out/bin/gitlab-rails \
193 makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rails $out/bin/gitlab-rails \
194 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
194 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
195 --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
195 --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
196− --chdir '${cfg.packages.gitlab}/share/gitlab'
196+ --run 'cd ${cfg.packages.gitlab}/share/gitlab'
nixos/modules/services/misc/nix-daemon.nix−8
@@ -708,14 +708,6 @@ in
709 systemd.packages = [ nixPackage ];
709 systemd.packages = [ nixPackage ];
711− # Will only work once https://github.com/NixOS/nix/pull/6285 is merged
712− # systemd.tmpfiles.packages = [ nixPackage ];
714− # Can be dropped for Nix > https://github.com/NixOS/nix/pull/6285
715− systemd.tmpfiles.rules = [
716− "d /nix/var/nix/daemon-socket 0755 root root - -"
719 systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
711 systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
721 systemd.services.nix-daemon =
713 systemd.services.nix-daemon =
nixos/modules/services/misc/paperless.nix → nixos/modules/services/misc/paperless-ng.nixrenamed+51−49
@@ -2,13 +2,11 @@
5− cfg = config.services.paperless;
5+ cfg = config.services.paperless-ng;
7 defaultUser = "paperless";
7 defaultUser = "paperless";
9− # Don't start a redis instance if the user sets a custom redis connection
10− enableRedis = !hasAttr "PAPERLESS_REDIS" cfg.extraConfig;
9+ hasCustomRedis = hasAttr "PAPERLESS_REDIS" cfg.extraConfig;
11− redisServer = config.services.redis.servers.paperless;
14 PAPERLESS_DATA_DIR = cfg.dataDir;
12 PAPERLESS_DATA_DIR = cfg.dataDir;
@@ -17,15 +15,15 @@ let
17 GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
15 GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
19 lib.mapAttrs (_: toString) cfg.extraConfig
17 lib.mapAttrs (_: toString) cfg.extraConfig
20− ) // (optionalAttrs enableRedis {
18+ ) // (optionalAttrs (!hasCustomRedis) {
21− PAPERLESS_REDIS = "unix://${redisServer.unixSocket}";
19+ PAPERLESS_REDIS = "unix://${config.services.redis.servers.paperless-ng.unixSocket}";
24 manage = let
22 manage = let
25 setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
23 setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
26 in pkgs.writeShellScript "manage" ''
24 in pkgs.writeShellScript "manage" ''
27 ${setupEnv}
25 ${setupEnv}
28− exec ${cfg.package}/bin/paperless-ngx "$@"
26+ exec ${cfg.package}/bin/paperless-ng "$@"
31 # Secure the services
29 # Secure the services
@@ -38,7 +36,7 @@ let
38 "-/etc/hosts"
36 "-/etc/hosts"
39 "-/etc/localtime"
37 "-/etc/localtime"
40 "-/run/postgresql"
38 "-/run/postgresql"
41− ] ++ (optional enableRedis redisServer.unixSocket);
39+ ] ++ (optional (!hasCustomRedis) config.services.redis.servers.paperless-ng.unixSocket);
42 BindPaths = [
40 BindPaths = [
43 cfg.consumptionDir
41 cfg.consumptionDir
44 cfg.dataDir
42 cfg.dataDir
@@ -55,6 +53,7 @@ let
55 PrivateNetwork = true;
53 PrivateNetwork = true;
56 PrivateTmp = true;
54 PrivateTmp = true;
57 PrivateUsers = true;
55 PrivateUsers = true;
58 ProtectClock = true;
57 ProtectClock = true;
59 # Breaks if the home dir of the user is in /home
58 # Breaks if the home dir of the user is in /home
60 # Also does not add much value in combination with the TemporaryFileSystem.
59 # Also does not add much value in combination with the TemporaryFileSystem.
@@ -67,15 +66,11 @@ let
67 ProtectKernelModules = true;
66 ProtectKernelModules = true;
68 ProtectKernelTunables = true;
67 ProtectKernelTunables = true;
69 ProtectProc = "invisible";
68 ProtectProc = "invisible";
70− # Don't restrict ProcSubset because django-q requires read access to /proc/stat
71− # to query CPU and memory information.
72− # Note that /proc only contains processes of user `paperless`, so this is safe.
73− # ProcSubset = "pid";
74 RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
69 RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
75 RestrictNamespaces = true;
70 RestrictNamespaces = true;
76 RestrictRealtime = true;
71 RestrictRealtime = true;
77 RestrictSUIDSGID = true;
72 RestrictSUIDSGID = true;
78− SupplementaryGroups = optional enableRedis redisServer.user;
73+ SupplementaryGroups = optional (!hasCustomRedis) config.services.redis.servers.paperless-ng.user;
79 SystemCallArchitectures = "native";
74 SystemCallArchitectures = "native";
80 SystemCallFilter = [ "@system-service" "~@privileged @resources @setuid @keyring" ];
75 SystemCallFilter = [ "@system-service" "~@privileged @resources @setuid @keyring" ];
81 # Does not work well with the temporary root
76 # Does not work well with the temporary root
@@ -86,22 +81,26 @@ in
86 meta.maintainers = with maintainers; [ earvstedt Flakebi ];
81 meta.maintainers = with maintainers; [ earvstedt Flakebi ];
88 imports = [
83 imports = [
89− (mkRenamedOptionModule [ "services" "paperless-ng" ] [ "services" "paperless" ])
84+ (mkRemovedOptionModule [ "services" "paperless"] ''
85+ The paperless module has been removed as the upstream project died.
86+ Users should migrate to the paperless-ng module (services.paperless-ng).
87+ More information can be found in the NixOS 21.11 release notes.
92− options.services.paperless = {
91+ options.services.paperless-ng = {
93 enable = mkOption {
92 enable = mkOption {
94 type = lib.types.bool;
93 type = lib.types.bool;
95 default = false;
94 default = false;
96 description = ''
95 description = ''
97− Enable Paperless.
96+ Enable Paperless-ng.
99 When started, the Paperless database is automatically created if it doesn't
98 When started, the Paperless database is automatically created if it doesn't
100 exist and updated if the Paperless package has changed.
99 exist and updated if the Paperless package has changed.
101 Both tasks are achieved by running a Django migration.
100 Both tasks are achieved by running a Django migration.
103 A script to manage the Paperless instance (by wrapping Django's manage.py) is linked to
102 A script to manage the Paperless instance (by wrapping Django's manage.py) is linked to
104− <literal>''${dataDir}/paperless-manage</literal>.
103+ <literal>''${dataDir}/paperless-ng-manage</literal>.
@@ -134,13 +133,13 @@ in
134 passwordFile = mkOption {
133 passwordFile = mkOption {
135 type = types.nullOr types.path;
134 type = types.nullOr types.path;
136 default = null;
135 default = null;
137− example = "/run/keys/paperless-password";
136+ example = "/run/keys/paperless-ng-password";
138 description = ''
137 description = ''
139 A file containing the superuser password.
138 A file containing the superuser password.
141 A superuser is required to access the web interface.
140 A superuser is required to access the web interface.
142 If unset, you can create a superuser manually by running
141 If unset, you can create a superuser manually by running
143− <literal>''${dataDir}/paperless-manage createsuperuser</literal>.
142+ <literal>''${dataDir}/paperless-ng-manage createsuperuser</literal>.
145 The default superuser name is <literal>admin</literal>. To change it, set
144 The default superuser name is <literal>admin</literal>. To change it, set
146 option <option>extraConfig.PAPERLESS_ADMIN_USER</option>.
145 option <option>extraConfig.PAPERLESS_ADMIN_USER</option>.
@@ -169,9 +168,9 @@ in
169 type = types.attrs;
168 type = types.attrs;
170 default = {};
169 default = {};
171 description = ''
170 description = ''
172− Extra paperless config options.
171+ Extra paperless-ng config options.
174− See <link xlink:href="https://paperless-ngx.readthedocs.io/en/latest/configuration.html">the documentation</link>
173+ See <link xlink:href="https://paperless-ng.readthedocs.io/en/latest/configuration.html">the documentation</link>
175 for available options.
174 for available options.
177 example = literalExpression ''
176 example = literalExpression ''
@@ -189,14 +188,15 @@ in
190 package = mkOption {
189 package = mkOption {
191 type = types.package;
190 type = types.package;
192− default = pkgs.paperless-ngx;
191+ default = pkgs.paperless-ng;
193− defaultText = literalExpression "pkgs.paperless-ngx";
192+ defaultText = literalExpression "pkgs.paperless-ng";
194 description = "The Paperless package to use.";
193 description = "The Paperless package to use.";
198 config = mkIf cfg.enable {
197 config = mkIf cfg.enable {
198+ # Enable redis if no special url is set
199− services.redis.servers.paperless.enable = mkIf enableRedis true;
199+ services.redis.servers.paperless-ng.enable = mkIf (!hasCustomRedis) true;
201 systemd.tmpfiles.rules = [
201 systemd.tmpfiles.rules = [
202 "d '${cfg.dataDir}' - ${cfg.user} ${config.users.users.${cfg.user}.group} - -"
202 "d '${cfg.dataDir}' - ${cfg.user} ${config.users.users.${cfg.user}.group} - -"
@@ -208,11 +208,11 @@ in
211− systemd.services.paperless-scheduler = {
211+ systemd.services.paperless-ng-server = {
212− description = "Paperless scheduler";
212+ description = "Paperless document server";
213 serviceConfig = defaultServiceConfig // {
213 serviceConfig = defaultServiceConfig // {
214 User = cfg.user;
214 User = cfg.user;
215− ExecStart = "${cfg.package}/bin/paperless-ngx qcluster";
215+ ExecStart = "${cfg.package}/bin/paperless-ng qcluster";
216 Restart = "on-failure";
216 Restart = "on-failure";
217 # The `mbind` syscall is needed for running the classifier.
217 # The `mbind` syscall is needed for running the classifier.
218 SystemCallFilter = defaultServiceConfig.SystemCallFilter ++ [ "mbind" ];
218 SystemCallFilter = defaultServiceConfig.SystemCallFilter ++ [ "mbind" ];
@@ -221,15 +221,15 @@ in
222 environment = env;
222 environment = env;
223 wantedBy = [ "multi-user.target" ];
223 wantedBy = [ "multi-user.target" ];
224− wants = [ "paperless-consumer.service" "paperless-web.service" ];
224+ wants = [ "paperless-ng-consumer.service" "paperless-ng-web.service" ];
226 preStart = ''
226 preStart = ''
227− ln -sf ${manage} ${cfg.dataDir}/paperless-manage
227+ ln -sf ${manage} ${cfg.dataDir}/paperless-ng-manage
229 # Auto-migrate on first run or if the package has changed
229 # Auto-migrate on first run or if the package has changed
230 versionFile="${cfg.dataDir}/src-version"
230 versionFile="${cfg.dataDir}/src-version"
231 if [[ $(cat "$versionFile" 2>/dev/null) != ${cfg.package} ]]; then
231 if [[ $(cat "$versionFile" 2>/dev/null) != ${cfg.package} ]]; then
232− ${cfg.package}/bin/paperless-ngx migrate
232+ ${cfg.package}/bin/paperless-ng migrate
233 echo ${cfg.package} > "$versionFile"
233 echo ${cfg.package} > "$versionFile"
@@ -240,18 +240,20 @@ in
240 superuserStateFile="${cfg.dataDir}/superuser-state"
240 superuserStateFile="${cfg.dataDir}/superuser-state"
242 if [[ $(cat "$superuserStateFile" 2>/dev/null) != $superuserState ]]; then
242 if [[ $(cat "$superuserStateFile" 2>/dev/null) != $superuserState ]]; then
243− ${cfg.package}/bin/paperless-ngx manage_superuser
243+ ${cfg.package}/bin/paperless-ng manage_superuser
244 echo "$superuserState" > "$superuserStateFile"
244 echo "$superuserState" > "$superuserStateFile"
247− } // optionalAttrs enableRedis {
247+ } // optionalAttrs (!hasCustomRedis) {
248− after = [ "redis-paperless.service" ];
248+ after = [ "redis-paperless-ng.service" ];
251− # Reading the user-provided password file requires root access
251+ # Password copying can't be implemented as a privileged preStart script
252+ # in 'paperless-ng-server' because 'defaultServiceConfig' limits the filesystem
253+ # paths accessible by the service.
252− systemd.services.paperless-copy-password = mkIf (cfg.passwordFile != null) {
254+ systemd.services.paperless-ng-copy-password = mkIf (cfg.passwordFile != null) {
253− requiredBy = [ "paperless-scheduler.service" ];
255+ requiredBy = [ "paperless-ng-server.service" ];
254− before = [ "paperless-scheduler.service" ];
256+ before = [ "paperless-ng-server.service" ];
255 serviceConfig = {
257 serviceConfig = {
256 ExecStart = ''
258 ExecStart = ''
257 ${pkgs.coreutils}/bin/install --mode 600 --owner '${cfg.user}' --compare \
259 ${pkgs.coreutils}/bin/install --mode 600 --owner '${cfg.user}' --compare \
@@ -261,27 +263,27 @@ in
264− systemd.services.paperless-consumer = {
266+ systemd.services.paperless-ng-consumer = {
265 description = "Paperless document consumer";
267 description = "Paperless document consumer";
266 serviceConfig = defaultServiceConfig // {
268 serviceConfig = defaultServiceConfig // {
267 User = cfg.user;
269 User = cfg.user;
268− ExecStart = "${cfg.package}/bin/paperless-ngx document_consumer";
270+ ExecStart = "${cfg.package}/bin/paperless-ng document_consumer";
269 Restart = "on-failure";
271 Restart = "on-failure";
271 environment = env;
273 environment = env;
272− # Bind to `paperless-scheduler` so that the consumer never runs
274+ # Bind to `paperless-ng-server` so that the consumer never runs
273 # during migrations
275 # during migrations
274− bindsTo = [ "paperless-scheduler.service" ];
276+ bindsTo = [ "paperless-ng-server.service" ];
275− after = [ "paperless-scheduler.service" ];
277+ after = [ "paperless-ng-server.service" ];
278− systemd.services.paperless-web = {
280+ systemd.services.paperless-ng-web = {
279 description = "Paperless web server";
281 description = "Paperless web server";
280 serviceConfig = defaultServiceConfig // {
282 serviceConfig = defaultServiceConfig // {
281 User = cfg.user;
283 User = cfg.user;
282 ExecStart = ''
284 ExecStart = ''
283 ${pkgs.python3Packages.gunicorn}/bin/gunicorn \
285 ${pkgs.python3Packages.gunicorn}/bin/gunicorn \
284− -c ${cfg.package}/lib/paperless-ngx/gunicorn.conf.py paperless.asgi:application
286+ -c ${cfg.package}/lib/paperless-ng/gunicorn.conf.py paperless.asgi:application
286 Restart = "on-failure";
288 Restart = "on-failure";
@@ -294,15 +296,15 @@ in
295 environment = env // {
297 environment = env // {
296 PATH = mkForce cfg.package.path;
298 PATH = mkForce cfg.package.path;
297− PYTHONPATH = "${cfg.package.pythonPath}:${cfg.package}/lib/paperless-ngx/src";
299+ PYTHONPATH = "${cfg.package.pythonPath}:${cfg.package}/lib/paperless-ng/src";
299 # Allow the web interface to access the private /tmp directory of the server.
301 # Allow the web interface to access the private /tmp directory of the server.
300 # This is required to support uploading files via the web interface.
302 # This is required to support uploading files via the web interface.
301− unitConfig.JoinsNamespaceOf = "paperless-scheduler.service";
303+ unitConfig.JoinsNamespaceOf = "paperless-ng-server.service";
302− # Bind to `paperless-scheduler` so that the web server never runs
304+ # Bind to `paperless-ng-server` so that the web server never runs
303 # during migrations
305 # during migrations
304− bindsTo = [ "paperless-scheduler.service" ];
306+ bindsTo = [ "paperless-ng-server.service" ];
305− after = [ "paperless-scheduler.service" ];
307+ after = [ "paperless-ng-server.service" ];
308 users = optionalAttrs (cfg.user == defaultUser) {
310 users = optionalAttrs (cfg.user == defaultUser) {
nixos/modules/services/misc/sourcehut/default.nix+1−1
@@ -1018,7 +1018,7 @@ in
1018 inherit configIniOfService;
1018 inherit configIniOfService;
1019 mainService = mkMerge [ baseService {
1019 mainService = mkMerge [ baseService {
1020 serviceConfig.StateDirectory = [ "sourcehut/gitsrht" "sourcehut/gitsrht/repos" ];
1020 serviceConfig.StateDirectory = [ "sourcehut/gitsrht" "sourcehut/gitsrht/repos" ];
1021− preStart = mkIf (versionOlder config.system.stateVersion "22.05") (mkBefore ''
1021+ preStart = mkIf (!versionAtLeast config.system.stateVersion "22.05") (mkBefore ''
1022 # Fix Git hooks of repositories pre-dating https://github.com/NixOS/nixpkgs/pull/133984
1022 # Fix Git hooks of repositories pre-dating https://github.com/NixOS/nixpkgs/pull/133984
nixos/modules/services/misc/taskserver/default.nix+6−10
@@ -106,7 +106,7 @@ let
107 certtool = "${pkgs.gnutls.bin}/bin/certtool";
107 certtool = "${pkgs.gnutls.bin}/bin/certtool";
109− nixos-taskserver = with pkgs.python3.pkgs; buildPythonApplication {
109+ nixos-taskserver = with pkgs.python2.pkgs; buildPythonApplication {
110 name = "nixos-taskserver";
110 name = "nixos-taskserver";
112 src = pkgs.runCommand "nixos-taskserver-src" { preferLocalBuild = true; } ''
112 src = pkgs.runCommand "nixos-taskserver-src" { preferLocalBuild = true; } ''
@@ -277,6 +277,10 @@ in {
277 example = "::";
277 example = "::";
278 description = ''
278 description = ''
279 The address (IPv4, IPv6 or DNS) to listen on.
279 The address (IPv4, IPv6 or DNS) to listen on.
281+ If the value is something else than <literal>localhost</literal> the
282+ port defined by <option>listenPort</option> is automatically added to
283+ <option>networking.firewall.allowedTCPPorts</option>.
@@ -288,14 +292,6 @@ in {
291− openFirewall = mkOption {
295− Whether to open the firewall for the specified Taskserver port.
299 fqdn = mkOption {
295 fqdn = mkOption {
300 type = types.str;
296 type = types.str;
301 default = "localhost";
297 default = "localhost";
@@ -564,7 +560,7 @@ in {
567− (mkIf (cfg.enable && cfg.openFirewall) {
563+ (mkIf (cfg.enable && cfg.listenHost != "localhost") {
568 networking.firewall.allowedTCPPorts = [ cfg.listenPort ];
564 networking.firewall.allowedTCPPorts = [ cfg.listenPort ];
nixos/modules/services/misc/taskserver/helper-tool.py+5−5
@@ -90,7 +90,7 @@ def certtool_cmd(*args, **kwargs):
91 return subprocess.check_output(
91 return subprocess.check_output(
92 [CERTTOOL_COMMAND] + list(args),
92 [CERTTOOL_COMMAND] + list(args),
93− preexec_fn=lambda: os.umask(0o077),
93+ preexec_fn=lambda: os.umask(0077),
94 stderr=subprocess.STDOUT,
94 stderr=subprocess.STDOUT,
@@ -164,7 +164,7 @@ def generate_key(org, user):
164 pubcert = os.path.join(basedir, "public.cert")
164 pubcert = os.path.join(basedir, "public.cert")
167− os.makedirs(basedir, mode=0o700)
167+ os.makedirs(basedir, mode=0700)
169 certtool_cmd("-p", "--bits", CERT_BITS, "--outfile", privkey)
169 certtool_cmd("-p", "--bits", CERT_BITS, "--outfile", privkey)
@@ -301,7 +301,7 @@ class Organisation(object):
301 return None
301 return None
302 if name not in self.users.keys():
302 if name not in self.users.keys():
303 output = taskd_cmd("add", "user", self.name, name,
303 output = taskd_cmd("add", "user", self.name, name,
304− capture_stdout=True, encoding='utf-8')
304+ capture_stdout=True)
305 key = RE_USERKEY.search(output)
305 key = RE_USERKEY.search(output)
306 if key is None:
306 if key is None:
307 msg = "Unable to find key while creating user {}."
307 msg = "Unable to find key while creating user {}."
@@ -412,9 +412,9 @@ class Manager(object):
412 if org is not None:
412 if org is not None:
413 if self.ignore_imperative and is_imperative(name):
413 if self.ignore_imperative and is_imperative(name):
415− for user in list(org.users.keys()):
415+ for user in org.users.keys():
416 org.del_user(user)
416 org.del_user(user)
417− for group in list(org.groups.keys()):
417+ for group in org.groups.keys():
418 org.del_group(group)
418 org.del_group(group)
419 taskd_cmd("remove", "org", name)
419 taskd_cmd("remove", "org", name)
420 del self._lazy_orgs[name]
420 del self._lazy_orgs[name]
nixos/modules/services/misc/zookeeper.nix+1−8
@@ -114,13 +114,6 @@ in {
114 type = types.package;
114 type = types.package;
118− description = "The JRE with which to run Zookeeper";
119− default = cfg.package.jre;
120− defaultText = literalExpression "pkgs.zookeeper.jre";
121− example = literalExpression "pkgs.jre";
122− type = types.package;
@@ -138,7 +131,7 @@ in {
138 after = [ "network.target" ];
131 after = [ "network.target" ];
139 serviceConfig = {
132 serviceConfig = {
140 ExecStart = ''
133 ExecStart = ''
141− ${cfg.jre}/bin/java \
134+ ${pkgs.jre}/bin/java \
142 -cp "${cfg.package}/lib/*:${configDir}" \
135 -cp "${cfg.package}/lib/*:${configDir}" \
143 ${escapeShellArgs cfg.extraCmdLineOptions} \
136 ${escapeShellArgs cfg.extraCmdLineOptions} \
144 -Dzookeeper.datadir.autocreate=false \
137 -Dzookeeper.datadir.autocreate=false \
nixos/modules/services/monitoring/collectd.nix+26−30
@@ -5,15 +5,36 @@ with lib;
6 cfg = config.services.collectd;
6 cfg = config.services.collectd;
8− baseDirLine = ''BaseDir "${cfg.dataDir}"'';
9− unvalidated_conf = pkgs.writeText "collectd-unvalidated.conf" cfg.extraConfig;
8+ unvalidated_conf = pkgs.writeText "collectd-unvalidated.conf" ''
9+ BaseDir "${cfg.dataDir}"
10+ AutoLoadPlugin ${boolToString cfg.autoLoadPlugin}
11+ Hostname "${config.networking.hostName}"
19+ ${concatStrings (mapAttrsToList (plugin: pluginConfig: ''
26+ ${concatMapStrings (f: ''
11 conf = if cfg.validateConfig then
33 conf = if cfg.validateConfig then
12 pkgs.runCommand "collectd.conf" {} ''
34 pkgs.runCommand "collectd.conf" {} ''
13 echo testing ${unvalidated_conf}
35 echo testing ${unvalidated_conf}
14− cp ${unvalidated_conf} collectd.conf
15 # collectd -t fails if BaseDir does not exist.
36 # collectd -t fails if BaseDir does not exist.
16− substituteInPlace collectd.conf --replace ${lib.escapeShellArgs [ baseDirLine ]} 'BaseDir "."'
37+ sed '1s/^BaseDir.*$/BaseDir "."/' ${unvalidated_conf} > collectd.conf
17 ${package}/bin/collectd -t -C collectd.conf
38 ${package}/bin/collectd -t -C collectd.conf
18 cp ${unvalidated_conf} $out
39 cp ${unvalidated_conf} $out
19 '' else unvalidated_conf;
40 '' else unvalidated_conf;
@@ -102,8 +123,7 @@ in {
102 extraConfig = mkOption {
123 extraConfig = mkOption {
103 default = "";
124 default = "";
104 description = ''
125 description = ''
105− Extra configuration for collectd. Use mkBefore to add lines before the
126+ Extra configuration for collectd.
106− default config, and mkAfter to add them below.
108 type = lines;
128 type = lines;
@@ -111,30 +131,6 @@ in {
113 config = mkIf cfg.enable {
133 config = mkIf cfg.enable {
114− # 1200 is after the default (1000) but before mkAfter (1500).
115− services.collectd.extraConfig = lib.mkOrder 1200 ''
117− AutoLoadPlugin ${boolToString cfg.autoLoadPlugin}
118− Hostname "${config.networking.hostName}"
126− ${concatStrings (mapAttrsToList (plugin: pluginConfig: ''
127− LoadPlugin ${plugin}
128− <Plugin "${plugin}">
133− ${concatMapStrings (f: ''
138 systemd.tmpfiles.rules = [
134 systemd.tmpfiles.rules = [
139 "d '${cfg.dataDir}' - ${cfg.user} - - -"
135 "d '${cfg.dataDir}' - ${cfg.user} - - -"
nixos/modules/services/monitoring/mimir.nixdeleted−63
@@ -1,63 +0,0 @@
1−{ config, lib, pkgs, ... }:
4− inherit (lib) escapeShellArgs mkEnableOption mkIf mkOption types;
6− cfg = config.services.mimir;
8− settingsFormat = pkgs.formats.yaml {};
10− options.services.mimir = {
11− enable = mkEnableOption "mimir";
13− configuration = mkOption {
14− type = (pkgs.formats.json {}).type;
17− Specify the configuration for Mimir in Nix.
21− configFile = mkOption {
22− type = types.nullOr types.path;
25− Specify a configuration file that Mimir should use.
30− config = mkIf cfg.enable {
33− (cfg.configuration == {} -> cfg.configFile != null) &&
34− (cfg.configFile != null -> cfg.configuration == {})
37− Please specify either
38− 'services.mimir.configuration' or
39− 'services.mimir.configFile'.
43− systemd.services.mimir = {
44− description = "mimir Service Daemon";
45− wantedBy = [ "multi-user.target" ];
48− conf = if cfg.configFile == null
49− then settingsFormat.generate "config.yaml" cfg.configuration
53− ExecStart = "${pkgs.grafana-mimir}/bin/mimir --config.file=${conf}";
56− ProtectSystem = "full";
57− DevicePolicy = "closed";
58− NoNewPrivileges = true;
59− StateDirectory = "mimir";
nixos/modules/services/monitoring/nagios.nix+2−2
@@ -102,8 +102,8 @@ in
103 plugins = mkOption {
103 plugins = mkOption {
104 type = types.listOf types.package;
104 type = types.listOf types.package;
105− default = with pkgs; [ monitoring-plugins msmtp mailutils ];
105+ default = with pkgs; [ monitoring-plugins ssmtp mailutils ];
106− defaultText = literalExpression "[pkgs.monitoring-plugins pkgs.msmtp pkgs.mailutils]";
106+ defaultText = literalExpression "[pkgs.monitoring-plugins pkgs.ssmtp pkgs.mailutils]";
107 description = "
107 description = "
108 Packages to be added to the Nagios <envar>PATH</envar>.
108 Packages to be added to the Nagios <envar>PATH</envar>.
109 Typically used to add plugins, but can be anything.
109 Typically used to add plugins, but can be anything.
nixos/modules/services/monitoring/prometheus/default.nix+9−2
@@ -74,6 +74,7 @@ let
75 "--web.listen-address=${cfg.listenAddress}:${builtins.toString cfg.port}"
75 "--web.listen-address=${cfg.listenAddress}:${builtins.toString cfg.port}"
76 "--alertmanager.notification-queue-capacity=${toString cfg.alertmanagerNotificationQueueCapacity}"
76 "--alertmanager.notification-queue-capacity=${toString cfg.alertmanagerNotificationQueueCapacity}"
77+ "--alertmanager.timeout=${toString cfg.alertmanagerTimeout}s"
77 ] ++ optional (cfg.webExternalUrl != null) "--web.external-url=${cfg.webExternalUrl}"
78 ] ++ optional (cfg.webExternalUrl != null) "--web.external-url=${cfg.webExternalUrl}"
78 ++ optional (cfg.retentionTime != null) "--storage.tsdb.retention.time=${cfg.retentionTime}";
79 ++ optional (cfg.retentionTime != null) "--storage.tsdb.retention.time=${cfg.retentionTime}";
@@ -1562,8 +1563,6 @@ in
1562 (mkRenamedOptionModule [ "services" "prometheus2" ] [ "services" "prometheus" ])
1563 (mkRenamedOptionModule [ "services" "prometheus2" ] [ "services" "prometheus" ])
1563 (mkRemovedOptionModule [ "services" "prometheus" "environmentFile" ]
1564 (mkRemovedOptionModule [ "services" "prometheus" "environmentFile" ]
1564 "It has been removed since it was causing issues (https://github.com/NixOS/nixpkgs/issues/126083) and Prometheus now has native support for secret files, i.e. `basic_auth.password_file` and `authorization.credentials_file`.")
1565 "It has been removed since it was causing issues (https://github.com/NixOS/nixpkgs/issues/126083) and Prometheus now has native support for secret files, i.e. `basic_auth.password_file` and `authorization.credentials_file`.")
1565− (mkRemovedOptionModule [ "services" "prometheus" "alertmanagerTimeout" ]
1566− "Deprecated upstream and no longer had any effect")
1569 options.services.prometheus = {
1568 options.services.prometheus = {
@@ -1720,6 +1719,14 @@ in
1722+ alertmanagerTimeout = mkOption {
1726+ Alert manager HTTP API timeout (in seconds).
1723 webExternalUrl = mkOption {
1730 webExternalUrl = mkOption {
1724 type = types.nullOr types.str;
1731 type = types.nullOr types.str;
1725 default = null;
1732 default = null;
nixos/modules/services/monitoring/prometheus/exporters.xml−21
@@ -19,7 +19,6 @@
19<programlisting>
19<programlisting>
20 services.prometheus.exporters.node = {
20 services.prometheus.exporters.node = {
21 enable = true;
21 enable = true;
23 enabledCollectors = [
22 enabledCollectors = [
@@ -43,26 +42,6 @@
43 <link xlink:href="https://nixos.org/nixos/options.html#prometheus.exporters">available
42 <link xlink:href="https://nixos.org/nixos/options.html#prometheus.exporters">available
44 options</link>.
43 options</link>.
48− Prometheus can now be configured to consume the metrics produced by the exporter:
50− services.prometheus = {
57− targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
66 </section>
45 </section>
67 <section xml:id="module-services-prometheus-exporters-new-exporter">
46 <section xml:id="module-services-prometheus-exporters-new-exporter">
68 <title>Adding a new exporter</title>
47 <title>Adding a new exporter</title>
nixos/modules/services/network-filesystems/ipfs.nix+10−16
@@ -1,7 +1,8 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, options, utils, ... }:
4 cfg = config.services.ipfs;
4 cfg = config.services.ipfs;
5+ opt = options.services.ipfs;
6 ipfsFlags = utils.escapeSystemdExecArgs (
7 ipfsFlags = utils.escapeSystemdExecArgs (
7 optional cfg.autoMount "--mount" ++
8 optional cfg.autoMount "--mount" ++
@@ -254,27 +255,23 @@ in
255 # After an unclean shutdown this file may exist which will cause the config command to attempt to talk to the daemon. This will hang forever if systemd is holding our sockets open.
256 # After an unclean shutdown this file may exist which will cause the config command to attempt to talk to the daemon. This will hang forever if systemd is holding our sockets open.
256 rm -vf "$IPFS_PATH/api"
257 rm -vf "$IPFS_PATH/api"
257− '' + optionalString cfg.autoMigrate ''
258+
258− ${pkgs.ipfs-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
260 ipfs --offline config profile apply ${profile}
259 ipfs --offline config profile apply ${profile}
262 '' + optionalString cfg.autoMount ''
261 '' + optionalString cfg.autoMount ''
263 ipfs --offline config Mounts.FuseAllowOther --json true
262 ipfs --offline config Mounts.FuseAllowOther --json true
264 ipfs --offline config Mounts.IPFS ${cfg.ipfsMountDir}
263 ipfs --offline config Mounts.IPFS ${cfg.ipfsMountDir}
265 ipfs --offline config Mounts.IPNS ${cfg.ipnsMountDir}
264 ipfs --offline config Mounts.IPNS ${cfg.ipnsMountDir}
265+ '' + optionalString cfg.autoMigrate ''
266+ ${pkgs.ipfs-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
267 ipfs --offline config show \
268 ipfs --offline config show \
268 | ${pkgs.jq}/bin/jq '. * $extraConfig' --argjson extraConfig ${
269 | ${pkgs.jq}/bin/jq '. * $extraConfig' --argjson extraConfig ${
269− escapeShellArg (builtins.toJSON (
270+ escapeShellArg (builtins.toJSON ({
272− Addresses.API = cfg.apiAddress;
271+ Addresses.API = cfg.apiAddress;
273− Addresses.Gateway = cfg.gatewayAddress;
272+ Addresses.Gateway = cfg.gatewayAddress;
274− Addresses.Swarm = cfg.swarmAddress;
273+ Addresses.Swarm = cfg.swarmAddress;
276− cfg.extraConfig
274+ } // cfg.extraConfig))
279 | ipfs --offline config replace -
276 | ipfs --offline config replace -
@@ -315,9 +312,6 @@ in
316 [ "" "%t/ipfs.sock" ] ++ lib.optional (fromCfg != null) fromCfg;
313 [ "" "%t/ipfs.sock" ] ++ lib.optional (fromCfg != null) fromCfg;
321− maintainers = with lib.maintainers; [ Luflosi ];
nixos/modules/services/networking/asterisk.nix+43−11
@@ -14,9 +14,28 @@ let
15 # Add filecontents from files of useTheseDefaultConfFiles to confFiles, do not override
15 # Add filecontents from files of useTheseDefaultConfFiles to confFiles, do not override
16 defaultConfFiles = subtractLists (attrNames cfg.confFiles) cfg.useTheseDefaultConfFiles;
16 defaultConfFiles = subtractLists (attrNames cfg.confFiles) cfg.useTheseDefaultConfFiles;
17− allConfFiles = {
17+ allConfFiles =
19+ builtins.listToAttrs (map (x: { name = x;
20+ value = builtins.readFile (cfg.package + "/etc/asterisk/" + x); })
23+ asteriskEtc = pkgs.stdenv.mkDerivation
24+ ((mapAttrs' (name: value: nameValuePair
25+ # Fudge the names to make bash happy
26+ ((replaceChars ["."] ["_"] name) + "_")
30+ confFilesString = concatStringsSep " " (
31+ attrNames allConfFiles
34+ name = "asterisk-etc";
18 # Default asterisk.conf file
36 # Default asterisk.conf file
19− "asterisk.conf".text = ''
37+ # (Notice that astetcdir will be set to the path of this derivation)
20 [directories]
39 [directories]
21 astetcdir => /etc/asterisk
40 astetcdir => /etc/asterisk
22 astmoddir => ${cfg.package}/lib/asterisk/modules
41 astmoddir => ${cfg.package}/lib/asterisk/modules
@@ -29,28 +48,43 @@ let
29 astrundir => /run/asterisk
48 astrundir => /run/asterisk
30 astlogdir => /var/log/asterisk
49 astlogdir => /var/log/asterisk
31 astsbindir => ${cfg.package}/sbin
50 astsbindir => ${cfg.package}/sbin
52+ extraConf = cfg.extraConfig;
35 # Loading all modules by default is considered sensible by the authors of
54 # Loading all modules by default is considered sensible by the authors of
36 # "Asterisk: The Definitive Guide". Secure sites will likely want to
55 # "Asterisk: The Definitive Guide". Secure sites will likely want to
37 # specify their own "modules.conf" in the confFiles option.
56 # specify their own "modules.conf" in the confFiles option.
38− "modules.conf".text = ''
57+ modulesConf = ''
40 autoload=yes
59 autoload=yes
43 # Use syslog for logging so logs can be viewed with journalctl
62 # Use syslog for logging so logs can be viewed with journalctl
44− "logger.conf".text = ''
63+ loggerConf = ''
47 [logfiles]
66 [logfiles]
48 syslog.local0 => notice,warning,error
67 syslog.local0 => notice,warning,error
51− mapAttrs (name: text: { inherit text; }) cfg.confFiles //
52− listToAttrs (map (x: nameValuePair x { source = cfg.package + "/etc/asterisk/" + x; }) defaultConfFiles);
73+ # Create asterisk.conf, pointing astetcdir to the path of this derivation
74+ echo "$asteriskConf" | sed "s|@out@|$out|g" > "$out"/asterisk.conf
75+ echo "$extraConf" >> "$out"/asterisk.conf
77+ echo "$modulesConf" > "$out"/modules.conf
79+ echo "$loggerConf" > "$out"/logger.conf
81+ # Config files specified in confFiles option override all other files
82+ for i in $confFilesString; do
83+ conf=$(echo "$i"_ | sed 's/\./_/g')
84+ echo "''${!conf}" > "$out"/"$i"
@@ -175,9 +209,7 @@ in
175 config = mkIf cfg.enable {
209 config = mkIf cfg.enable {
176 environment.systemPackages = [ cfg.package ];
210 environment.systemPackages = [ cfg.package ];
178− environment.etc = mapAttrs' (name: value:
212+ environment.etc.asterisk.source = asteriskEtc;
179− nameValuePair "asterisk/${name}" value
182 users.users.asterisk =
214 users.users.asterisk =
183 { name = asteriskUser;
215 { name = asteriskUser;
nixos/modules/services/networking/bird.nix+2−1
@@ -68,7 +68,8 @@ in
68 systemd.services.bird2 = {
68 systemd.services.bird2 = {
69 description = "BIRD Internet Routing Daemon";
69 description = "BIRD Internet Routing Daemon";
70 wantedBy = [ "multi-user.target" ];
70 wantedBy = [ "multi-user.target" ];
71+ reloadIfChanged = true;
71− reloadTriggers = [ config.environment.etc."bird/bird2.conf".source ];
72+ restartTriggers = [ config.environment.etc."bird/bird2.conf".source ];
72 serviceConfig = {
73 serviceConfig = {
73 Type = "forking";
74 Type = "forking";
74 Restart = "on-failure";
75 Restart = "on-failure";
nixos/modules/services/networking/cloudflare-dyndns.nixdeleted−93
@@ -1,93 +0,0 @@
1−{ config, pkgs, lib, ... }:
6− cfg = config.services.cloudflare-dyndns;
10− services.cloudflare-dyndns = {
11− enable = mkEnableOption "Cloudflare Dynamic DNS Client";
13− apiTokenFile = mkOption {
14− type = types.nullOr types.str;
17− The path to a file containing the CloudFlare API token.
19− The file must have the form `CLOUDFLARE_API_TOKEN=...`
24− type = types.listOf types.str;
27− List of domain names to update records for.
35− Whether this is a DNS-only record, or also being proxied through CloudFlare.
43− Whether to enable setting IPv4 A records.
51− Whether to enable setting IPv6 AAAA records.
55− deleteMissing = mkOption {
59− Whether to delete the record when no IP address is found.
65− config = mkIf cfg.enable {
66− systemd.services.cloudflare-dyndns = {
67− description = "CloudFlare Dynamic DNS Client";
68− after = [ "network.target" ];
69− wantedBy = [ "multi-user.target" ];
73− CLOUDFLARE_DOMAINS = toString cfg.domains;
79− StateDirectory = "cloudflare-dyndns";
80− EnvironmentFile = cfg.apiTokenFile;
83− args = [ "--cache-file /var/lib/cloudflare-dyndns/ip.cache" ]
84− ++ (if cfg.ipv4 then [ "-4" ] else [ "-no-4" ])
85− ++ (if cfg.ipv6 then [ "-6" ] else [ "-no-6" ])
86− ++ optional cfg.deleteMissing "--delete-missing"
87− ++ optional cfg.proxied "--proxied";
89− "${pkgs.cloudflare-dyndns}/bin/cloudflare-dyndns ${toString args}";
nixos/modules/services/networking/consul.nix+6−32
@@ -80,21 +80,13 @@ in
80 The name of the interface to pull the bind_addr from.
80 The name of the interface to pull the bind_addr from.
85− forceAddrFamily = mkOption {
86− type = types.enum [ "any" "ipv4" "ipv6" ];
89− Whether to bind ipv4/ipv6 or both kind of addresses.
93 forceIpv4 = mkOption {
86 forceIpv4 = mkOption {
94− type = types.nullOr types.bool;
87+ type = types.bool;
95− default = null;
88+ default = false;
96 description = ''
89 description = ''
97− Deprecated: Use consul.forceAddrFamily instead.
98 Whether we should force the interfaces to only pull ipv4 addresses.
90 Whether we should force the interfaces to only pull ipv4 addresses.
@@ -183,13 +175,6 @@ in
183 systemPackages = [ cfg.package ];
175 systemPackages = [ cfg.package ];
186− warnings = lib.flatten [
187− (lib.optional (cfg.forceIpv4 != null) ''
188− The option consul.forceIpv4 is deprecated, please use
189− consul.forceAddrFamily instead.
193 systemd.services.consul = {
178 systemd.services.consul = {
194 wantedBy = [ "multi-user.target" ];
179 wantedBy = [ "multi-user.target" ];
195 after = [ "network.target" ] ++ systemdDevices;
180 after = [ "network.target" ] ++ systemdDevices;
@@ -211,21 +196,15 @@ in
213 path = with pkgs; [ iproute2 gnugrep gawk consul ];
198 path = with pkgs; [ iproute2 gnugrep gawk consul ];
214− preStart = let
199+ preStart = ''
215− family = if cfg.forceAddrFamily == "ipv6" then
217− else if cfg.forceAddrFamily == "ipv4" then
222 mkdir -m 0700 -p ${dataDir}
200 mkdir -m 0700 -p ${dataDir}
223 chown -R consul ${dataDir}
201 chown -R consul ${dataDir}
225 # Determine interface addresses
203 # Determine interface addresses
226 getAddrOnce () {
204 getAddrOnce () {
227− ip ${family} addr show dev "$1" scope global \
205+ ip addr show dev "$1" \
206+ | grep 'inet${optionalString (cfg.forceIpv4) " "}.*scope global' \
228− | awk -F '[ /\t]*' '/inet/ {print $3}' | head -n 1
207+ | awk -F '[ /\t]*' '{print $3}' | head -n 1
230 getAddr () {
209 getAddr () {
231 ADDR="$(getAddrOnce $1)"
210 ADDR="$(getAddrOnce $1)"
@@ -255,11 +234,6 @@ in
259− (mkIf (cfg.forceIpv4 != null && cfg.forceIpv4) {
260− services.consul.forceAddrFamily = "ipv4";
263 (mkIf (cfg.alerts.enable) {
237 (mkIf (cfg.alerts.enable) {
264 systemd.services.consul-alerts = {
238 systemd.services.consul-alerts = {
265 wantedBy = [ "multi-user.target" ];
239 wantedBy = [ "multi-user.target" ];
nixos/modules/services/networking/create_ap.nixdeleted−50
@@ -1,50 +0,0 @@
1−{ config, lib, pkgs, ... }:
6− cfg = config.services.create_ap;
7− configFile = pkgs.writeText "create_ap.conf" (generators.toKeyValue { } cfg.settings);
10− services.create_ap = {
11− enable = mkEnableOption "setup wifi hotspots using create_ap";
12− settings = mkOption {
13− type = with types; attrsOf (oneOf [ int bool str ]);
16− Configuration for <package>create_ap</package>.
17− See <link xlink:href="https://raw.githubusercontent.com/lakinduakash/linux-wifi-hotspot/master/src/scripts/create_ap.conf">upstream example configuration</link>
18− for supported values.
21− INTERNET_IFACE = "eth0";
22− WIFI_IFACE = "wlan0";
23− SSID = "My Wifi Hotspot";
24− PASSPHRASE = "12345678";
30− config = mkIf cfg.enable {
33− services.create_ap = {
34− wantedBy = [ "multi-user.target" ];
35− description = "Create AP Service";
36− after = [ "network.target" ];
37− restartTriggers = [ configFile ];
39− ExecStart = "${pkgs.linux-wifi-hotspot}/bin/create_ap --config ${configFile}";
40− KillSignal = "SIGINT";
41− Restart = "on-failure";
48− meta.maintainers = with lib.maintainers; [ onny ];
nixos/modules/services/networking/envoy.nixdeleted−84
@@ -1,84 +0,0 @@
1−{ config, lib, pkgs, ... }:
6− cfg = config.services.envoy;
7− format = pkgs.formats.json { };
8− conf = format.generate "envoy.json" cfg.settings;
9− validateConfig = file:
10− pkgs.runCommand "validate-envoy-conf" { } ''
11− ${pkgs.envoy}/bin/envoy --log-level error --mode validate -c "${file}"
18− options.services.envoy = {
19− enable = mkEnableOption "Envoy reverse proxy";
21− settings = mkOption {
24− example = literalExpression ''
27− access_log_path = "/dev/null";
31− address = "127.0.0.1";
43− Specify the configuration for Envoy in Nix.
48− config = mkIf cfg.enable {
49− environment.systemPackages = [ pkgs.envoy ];
50− systemd.services.envoy = {
51− description = "Envoy reverse proxy";
52− after = [ "network-online.target" ];
53− requires = [ "network-online.target" ];
54− wantedBy = [ "multi-user.target" ];
56− ExecStart = "${pkgs.envoy}/bin/envoy -c ${validateConfig conf}";
59− CacheDirectory = "envoy";
60− LogsDirectory = "envoy";
61− AmbientCapabilities = "CAP_NET_BIND_SERVICE";
62− CapabilityBoundingSet = "CAP_NET_BIND_SERVICE";
63− RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6 AF_NETLINK AF_XDP";
64− SystemCallArchitectures = "native";
65− LockPersonality = true;
66− RestrictNamespaces = true;
67− RestrictRealtime = true;
68− PrivateUsers = false; # breaks CAP_NET_BIND_SERVICE
69− PrivateDevices = true;
71− ProtectControlGroups = true;
73− ProtectKernelLogs = true;
74− ProtectKernelModules = true;
75− ProtectKernelTunables = true;
76− ProtectProc = "ptraceable";
77− ProtectHostname = true;
78− ProtectSystem = "strict";
80− SystemCallFilter = "~@clock @module @mount @reboot @swap @obsolete @cpu-emulation";
nixos/modules/services/networking/headscale.nix+1−1
@@ -479,7 +479,7 @@ in
479 NoNewPrivileges = true;
479 NoNewPrivileges = true;
480 LockPersonality = true;
480 LockPersonality = true;
481 RestrictRealtime = true;
481 RestrictRealtime = true;
482− SystemCallFilter = [ "@system-service" "~@privileged" "@chown" ];
482+ SystemCallFilter = [ "@system-service" "~@priviledged" "@chown" ];
483 SystemCallArchitectures = "native";
483 SystemCallArchitectures = "native";
484 RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX";
484 RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX";
nixos/modules/services/networking/kea.nix+8−74
@@ -9,26 +9,20 @@ with lib;
10 cfg = config.services.kea;
10 cfg = config.services.kea;
12− xor = x: y: (!x && y) || (x && !y);
13 format = pkgs.formats.json {};
12 format = pkgs.formats.json {};
15− chooseNotNull = x: y: if x != null then x else y;
17− ctrlAgentConfig = chooseNotNull cfg.ctrl-agent.configFile (format.generate "kea-ctrl-agent.conf" {
14+ ctrlAgentConfig = format.generate "kea-ctrl-agent.conf" {
18 Control-agent = cfg.ctrl-agent.settings;
15 Control-agent = cfg.ctrl-agent.settings;
21− dhcp4Config = chooseNotNull cfg.dhcp4.configFile (format.generate "kea-dhcp4.conf" {
17+ dhcp4Config = format.generate "kea-dhcp4.conf" {
22 Dhcp4 = cfg.dhcp4.settings;
18 Dhcp4 = cfg.dhcp4.settings;
25− dhcp6Config = chooseNotNull cfg.dhcp6.configFile (format.generate "kea-dhcp6.conf" {
20+ dhcp6Config = format.generate "kea-dhcp6.conf" {
26 Dhcp6 = cfg.dhcp6.settings;
21 Dhcp6 = cfg.dhcp6.settings;
29− dhcpDdnsConfig = chooseNotNull cfg.dhcp-ddns.configFile (format.generate "kea-dhcp-ddns.conf" {
23+ dhcpDdnsConfig = format.generate "kea-dhcp-ddns.conf" {
30 DhcpDdns = cfg.dhcp-ddns.settings;
24 DhcpDdns = cfg.dhcp-ddns.settings;
33 package = pkgs.kea;
27 package = pkgs.kea;
@@ -51,17 +45,6 @@ in
54− configFile = mkOption {
58− Kea Control Agent configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/agent.html"/>.
60− Takes preference over <link linkend="opt-services.kea.ctrl-agent.settings">settings</link>.
61− Most users should prefer using <link linkend="opt-services.kea.ctrl-agent.settings">settings</link> instead.
65 settings = mkOption {
48 settings = mkOption {
66 type = format.type;
49 type = format.type;
67 default = null;
50 default = null;
@@ -90,17 +73,6 @@ in
93− configFile = mkOption {
97− Kea DHCP4 configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/dhcp4-srv.html"/>.
99− Takes preference over <link linkend="opt-services.kea.dhcp4.settings">settings</link>.
100− Most users should prefer using <link linkend="opt-services.kea.dhcp4.settings">settings</link> instead.
104 settings = mkOption {
76 settings = mkOption {
105 type = format.type;
77 type = format.type;
106 default = null;
78 default = null;
@@ -150,17 +122,6 @@ in
153− configFile = mkOption {
157− Kea DHCP6 configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/dhcp6-srv.html"/>.
159− Takes preference over <link linkend="opt-services.kea.dhcp6.settings">settings</link>.
160− Most users should prefer using <link linkend="opt-services.kea.dhcp6.settings">settings</link> instead.
164 settings = mkOption {
125 settings = mkOption {
165 type = format.type;
126 type = format.type;
166 default = null;
127 default = null;
@@ -211,17 +172,6 @@ in
214− configFile = mkOption {
218− Kea DHCP-DDNS configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/ddns.html"/>.
220− Takes preference over <link linkend="opt-services.kea.dhcp-ddns.settings">settings</link>.
221− Most users should prefer using <link linkend="opt-services.kea.dhcp-ddns.settings">settings</link> instead.
225 settings = mkOption {
175 settings = mkOption {
226 type = format.type;
176 type = format.type;
227 default = null;
177 default = null;
@@ -264,10 +214,6 @@ in
266 (mkIf cfg.ctrl-agent.enable {
216 (mkIf cfg.ctrl-agent.enable {
268− assertion = xor (cfg.ctrl-agent.settings == null) (cfg.ctrl-agent.configFile == null);
269− message = "Either services.kea.ctrl-agent.settings or services.kea.ctrl-agent.configFile must be set to a non-null value.";
272 environment.etc."kea/ctrl-agent.conf".source = ctrlAgentConfig;
218 environment.etc."kea/ctrl-agent.conf".source = ctrlAgentConfig;
@@ -306,10 +252,6 @@ in
308 (mkIf cfg.dhcp4.enable {
254 (mkIf cfg.dhcp4.enable {
310− assertion = xor (cfg.dhcp4.settings == null) (cfg.dhcp4.configFile == null);
311− message = "Either services.kea.dhcp4.settings or services.kea.dhcp4.configFile must be set to a non-null value.";
314 environment.etc."kea/dhcp4-server.conf".source = dhcp4Config;
256 environment.etc."kea/dhcp4-server.conf".source = dhcp4Config;
@@ -353,10 +295,6 @@ in
355 (mkIf cfg.dhcp6.enable {
297 (mkIf cfg.dhcp6.enable {
357− assertion = xor (cfg.dhcp6.settings == null) (cfg.dhcp6.configFile == null);
358− message = "Either services.kea.dhcp6.settings or services.kea.dhcp6.configFile must be set to a non-null value.";
361 environment.etc."kea/dhcp6-server.conf".source = dhcp6Config;
299 environment.etc."kea/dhcp6-server.conf".source = dhcp6Config;
@@ -398,10 +336,6 @@ in
400 (mkIf cfg.dhcp-ddns.enable {
338 (mkIf cfg.dhcp-ddns.enable {
402− assertion = xor (cfg.dhcp-ddns.settings == null) (cfg.dhcp-ddns.configFile == null);
403− message = "Either services.kea.dhcp-ddns.settings or services.kea.dhcp-ddns.configFile must be set to a non-null value.";
406 environment.etc."kea/dhcp-ddns.conf".source = dhcpDdnsConfig;
340 environment.etc."kea/dhcp-ddns.conf".source = dhcpDdnsConfig;
nixos/modules/services/networking/mozillavpn.nixdeleted−19
@@ -1,19 +0,0 @@
1−{ config, lib, pkgs, ... }:
4− options.services.mozillavpn.enable = lib.mkOption {
5− type = lib.types.bool;
8− Enable the Mozilla VPN daemon.
12− config = lib.mkIf config.services.mozillavpn.enable {
13− environment.systemPackages = [ pkgs.mozillavpn ];
14− services.dbus.packages = [ pkgs.mozillavpn ];
15− systemd.packages = [ pkgs.mozillavpn ];
18− meta.maintainers = with lib.maintainers; [ andersk ];
nixos/modules/services/networking/nbd.nix+15−28
@@ -4,34 +4,28 @@ with lib;
6 cfg = config.services.nbd;
6 cfg = config.services.nbd;
7+ configFormat = pkgs.formats.ini { };
7 iniFields = with types; attrsOf (oneOf [ bool int float str ]);
8 iniFields = with types; attrsOf (oneOf [ bool int float str ]);
8− # The `[generic]` section must come before all the others in the
9+ serverConfig = configFormat.generate "nbd-server-config"
9− # config file. This means we can't just dump an attrset to INI
10+ ({
10− # because that sorts the sections by name. Instead, we serialize it
11+ generic =
13− generic = (cfg.server.extraOptions // {
12+ (cfg.server.extraOptions // {
14− user = "root";
13+ user = "root";
15− group = "root";
14+ group = "root";
16− port = cfg.server.listenPort;
15+ port = cfg.server.listenPort;
17− } // (optionalAttrs (cfg.server.listenAddress != null) {
16+ } // (optionalAttrs (cfg.server.listenAddress != null) {
18− listenaddr = cfg.server.listenAddress;
17+ listenaddr = cfg.server.listenAddress;
22− mapAttrs
20+ // (mapAttrs
23 (_: { path, allowAddresses, extraOptions }:
21 (_: { path, allowAddresses, extraOptions }:
24 extraOptions // {
22 extraOptions // {
25 exportname = path;
23 exportname = path;
26 } // (optionalAttrs (allowAddresses != null) {
24 } // (optionalAttrs (allowAddresses != null) {
27 authfile = pkgs.writeText "authfile" (concatStringsSep "\n" allowAddresses);
25 authfile = pkgs.writeText "authfile" (concatStringsSep "\n" allowAddresses);
29− cfg.server.exports;
27+ cfg.server.exports)
31− pkgs.writeText "nbd-server-config" ''
32− ${lib.generators.toINI {} genericSection}
33− ${lib.generators.toINI {} exportSections}
35 splitLists =
29 splitLists =
37 (path: hasPrefix "/dev/" path)
31 (path: hasPrefix "/dev/" path)
@@ -109,13 +103,6 @@ in
111 config = mkIf cfg.server.enable {
105 config = mkIf cfg.server.enable {
114− assertion = !(cfg.server.exports ? "generic");
115− message = "services.nbd.server exports must not be named 'generic'";
119 boot.kernelModules = [ "nbd" ];
106 boot.kernelModules = [ "nbd" ];
121 systemd.services.nbd-server = {
108 systemd.services.nbd-server = {
nixos/modules/services/networking/ncdns.nix+2−2
@@ -58,7 +58,7 @@ in
59 address = mkOption {
59 address = mkOption {
60 type = types.str;
60 type = types.str;
61− default = "[::1]";
61+ default = "127.0.0.1";
62 description = ''
62 description = ''
63 The IP address the ncdns resolver will bind to. Leave this unchanged
63 The IP address the ncdns resolver will bind to. Leave this unchanged
64 if you do not wish to directly expose the resolver.
64 if you do not wish to directly expose the resolver.
@@ -202,7 +202,7 @@ in
202 config = mkIf cfg.enable {
202 config = mkIf cfg.enable {
204 services.pdns-recursor = mkIf cfgs.pdns-recursor.resolveNamecoin {
204 services.pdns-recursor = mkIf cfgs.pdns-recursor.resolveNamecoin {
205− forwardZonesRecurse.bit = "${cfg.address}:${toString cfg.port}";
205+ forwardZonesRecurse.bit = "127.0.0.1:${toString cfg.port}";
206 luaConfig =
206 luaConfig =
207 if cfg.dnssec.enable
207 if cfg.dnssec.enable
208 then ''readTrustAnchorsFromFile("${cfg.dnssec.keys.public}")''
208 then ''readTrustAnchorsFromFile("${cfg.dnssec.keys.public}")''
nixos/modules/services/networking/networkmanager.nix+53−56
@@ -5,6 +5,18 @@ with lib;
6 cfg = config.networking.networkmanager;
6 cfg = config.networking.networkmanager;
8+ basePackages = with pkgs; [
11+ networkmanager-fortisslvpn
12+ networkmanager-iodine
14+ networkmanager-openconnect
15+ networkmanager-openvpn
18+ ] ++ optional (!delegateWireless && !enableIwd) wpa_supplicant;
8 delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [];
20 delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [];
10 enableIwd = cfg.wifi.backend == "iwd";
22 enableIwd = cfg.wifi.backend == "iwd";
@@ -133,15 +145,6 @@ let
141− ++ lib.optionals (!delegateWireless && !enableIwd) [
@@ -224,33 +227,17 @@ in {
227− plugins = mkOption {
230+ packages = mkOption {
228− type =
231+ type = types.listOf types.package;
230− networkManagerPluginPackage = types.package // {
231− description = "NetworkManager plug-in";
235− (types.package.check p
236− && p ? networkManagerPlugin
237− && lib.isString p.networkManagerPlugin)
239− Package ‘${p.name}’, is not a NetworkManager plug-in.
240− Those need to have a ‘networkManagerPlugin’ attribute.
244− types.listOf networkManagerPluginPackage;
245 default = [ ];
232 default = [ ];
246 description = ''
233 description = ''
247− List of NetworkManager plug-ins to enable.
234+ Extra packages that provide NetworkManager plugins.
248− Some plug-ins are enabled by the NetworkManager module by default.
236+ apply = list: basePackages ++ list;
252 dhcp = mkOption {
239 dhcp = mkOption {
253− type = types.enum [ "dhcpcd" "internal" ];
240+ type = types.enum [ "dhclient" "dhcpcd" "internal" ];
254 default = "internal";
241 default = "internal";
255 description = ''
242 description = ''
256 Which program (or internal library) should be used for DHCP.
243 Which program (or internal library) should be used for DHCP.
@@ -393,7 +380,7 @@ in {
393 </para><para>
380 </para><para>
394 If you enable this option the
381 If you enable this option the
395 <literal>networkmanager_strongswan</literal> plugin will be added to
382 <literal>networkmanager_strongswan</literal> plugin will be added to
396− the <option>networking.networkmanager.plugins</option> option
383+ the <option>networking.networkmanager.packages</option> option
397 so you don't need to to that yourself.
384 so you don't need to to that yourself.
@@ -412,9 +399,6 @@ in {
414 imports = [
401 imports = [
415− (mkRenamedOptionModule
416− [ "networking" "networkmanager" "packages" ]
417− [ "networking" "networkmanager" "plugins" ])
418 (mkRenamedOptionModule [ "networking" "networkmanager" "useDnsmasq" ] [ "networking" "networkmanager" "dns" ])
402 (mkRenamedOptionModule [ "networking" "networkmanager" "useDnsmasq" ] [ "networking" "networkmanager" "dns" ])
419 (mkRemovedOptionModule ["networking" "networkmanager" "dynamicHosts"] ''
403 (mkRemovedOptionModule ["networking" "networkmanager" "dynamicHosts"] ''
420 This option was removed because allowing (multiple) regular users to
404 This option was removed because allowing (multiple) regular users to
@@ -442,12 +426,31 @@ in {
443 hardware.wirelessRegulatoryDatabase = true;
427 hardware.wirelessRegulatoryDatabase = true;
445− environment.etc = {
429+ environment.etc = with pkgs; {
446− "NetworkManager/NetworkManager.conf".source = configFile;
430+ "NetworkManager/NetworkManager.conf".source = configFile;
432+ "NetworkManager/VPN/nm-openvpn-service.name".source =
433+ "${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name";
435+ "NetworkManager/VPN/nm-vpnc-service.name".source =
436+ "${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name";
438+ "NetworkManager/VPN/nm-openconnect-service.name".source =
439+ "${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name";
441+ "NetworkManager/VPN/nm-fortisslvpn-service.name".source =
442+ "${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name";
444+ "NetworkManager/VPN/nm-l2tp-service.name".source =
445+ "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
447+ "NetworkManager/VPN/nm-iodine-service.name".source =
448+ "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
450+ "NetworkManager/VPN/nm-sstp-service.name".source =
451+ "${networkmanager-sstp}/lib/NetworkManager/VPN/nm-sstp-service.name";
448− // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
449− source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}";
451 // optionalAttrs cfg.enableFccUnlock
454 // optionalAttrs cfg.enableFccUnlock
453 "ModemManager/fcc-unlock.d".source =
456 "ModemManager/fcc-unlock.d".source =
@@ -457,13 +460,18 @@ in {
458 "NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
461 "NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
463+ // optionalAttrs cfg.enableStrongSwan
465+ "NetworkManager/VPN/nm-strongswan-service.name".source =
466+ "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
460 // listToAttrs (lib.imap1 (i: s:
468 // listToAttrs (lib.imap1 (i: s:
462 name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
470 name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
463 value = { mode = "0544"; inherit (s) source; };
471 value = { mode = "0544"; inherit (s) source; };
464 }) cfg.dispatcherScripts);
472 }) cfg.dispatcherScripts);
466− environment.systemPackages = packages;
474+ environment.systemPackages = cfg.packages;
468 users.groups = {
476 users.groups = {
469 networkmanager.gid = config.ids.gids.networkmanager;
477 networkmanager.gid = config.ids.gids.networkmanager;
@@ -482,13 +490,14 @@ in {
485− systemd.packages = packages;
493+ systemd.packages = cfg.packages;
487 systemd.tmpfiles.rules = [
495 systemd.tmpfiles.rules = [
488 "d /etc/NetworkManager/system-connections 0700 root root -"
496 "d /etc/NetworkManager/system-connections 0700 root root -"
489 "d /etc/ipsec.d 0700 root root -"
497 "d /etc/ipsec.d 0700 root root -"
490 "d /var/lib/NetworkManager-fortisslvpn 0700 root root -"
498 "d /var/lib/NetworkManager-fortisslvpn 0700 root root -"
500+ "d /var/lib/dhclient 0755 root root -"
492 "d /var/lib/misc 0755 root root -" # for dnsmasq.leases
501 "d /var/lib/misc 0755 root root -" # for dnsmasq.leases
@@ -525,20 +534,8 @@ in {
525 useDHCP = false;
534 useDHCP = false;
529− networkmanager.plugins = with pkgs; [
530− networkmanager-fortisslvpn
531− networkmanager-iodine
533− networkmanager-openconnect
534− networkmanager-openvpn
540 (mkIf cfg.enableStrongSwan {
537 (mkIf cfg.enableStrongSwan {
541− networkmanager.plugins = [ pkgs.networkmanager_strongswan ];
538+ networkmanager.packages = [ pkgs.networkmanager_strongswan ];
544 (mkIf enableIwd {
541 (mkIf enableIwd {
@@ -562,10 +559,10 @@ in {
562 security.polkit.enable = true;
559 security.polkit.enable = true;
563 security.polkit.extraConfig = polkitConf;
560 security.polkit.extraConfig = polkitConf;
565− services.dbus.packages = packages
562+ services.dbus.packages = cfg.packages
566 ++ optional cfg.enableStrongSwan pkgs.strongswanNM
563 ++ optional cfg.enableStrongSwan pkgs.strongswanNM
567 ++ optional (cfg.dns == "dnsmasq") pkgs.dnsmasq;
564 ++ optional (cfg.dns == "dnsmasq") pkgs.dnsmasq;
569− services.udev.packages = packages;
566+ services.udev.packages = cfg.packages;
nixos/modules/services/networking/openconnect.nixdeleted−137
@@ -1,137 +0,0 @@
1−{ config, lib, options, pkgs, ... }:
4− cfg = config.networking.openconnect;
5− openconnect = cfg.package;
6− pkcs11 = types.strMatching "pkcs11:.+" // {
8− description = "PKCS#11 URI";
13− description = "Gateway server to connect to.";
14− example = "gateway.example.com";
18− protocol = mkOption {
19− description = "Protocol to use.";
20− example = "anyconnect";
22− types.enum [ "anyconnect" "array" "nc" "pulse" "gp" "f5" "fortinet" ];
26− description = "Username to authenticate with.";
27− example = "example-user";
28− type = types.nullOr types.str;
31− # Note: It does not make sense to provide a way to declaratively
32− # set an authentication cookie, because they have to be requested
33− # for every new connection and would only work once.
34− passwordFile = mkOption {
36− File containing the password to authenticate with. This
37− is passed to <code>openconnect</code> via the
38− <code>--passwd-on-stdin</code> option.
41− example = "/var/lib/secrets/openconnect-passwd";
42− type = types.nullOr types.path;
45− certificate = mkOption {
46− description = "Certificate to authenticate with.";
48− example = "/var/lib/secrets/openconnect_certificate.pem";
49− type = with types; nullOr (either path pkcs11);
52− privateKey = mkOption {
53− description = "Private key to authenticate with.";
54− example = "/var/lib/secrets/openconnect_private_key.pem";
56− type = with types; nullOr (either path pkcs11);
59− extraOptions = mkOption {
61− Extra config to be appended to the interface config. It should
62− contain long-format options as would be accepted on the command
63− line by <code>openconnect</code>
64− (see https://www.infradead.org/openconnect/manual.html).
65− Non-key-value options like <code>deflate</code> can be used by
66− declaring them as booleans, i. e. <code>deflate = true;</code>.
70− compression = "stateless";
72− no-http-keepalive = true;
75− type = with types; attrsOf (either str bool);
79− generateExtraConfig = extra_cfg:
80− strings.concatStringsSep "\n" (attrsets.mapAttrsToList
81− (name: value: if (value == true) then name else "${name}=${value}")
82− (attrsets.filterAttrs (_: value: value != false) extra_cfg));
83− generateConfig = name: icfg:
84− pkgs.writeText "config" ''
86− ${optionalString (icfg.user != null) "user=${icfg.user}"}
87− ${optionalString (icfg.passwordFile != null) "passwd-on-stdin"}
88− ${optionalString (icfg.certificate != null)
89− "certificate=${icfg.certificate}"}
90− ${optionalString (icfg.privateKey != null) "sslkey=${icfg.privateKey}"}
92− ${generateExtraConfig icfg.extraOptions}
94− generateUnit = name: icfg: {
95− description = "OpenConnect Interface - ${name}";
96− requires = [ "network-online.target" ];
97− after = [ "network.target" "network-online.target" ];
98− wantedBy = [ "multi-user.target" ];
102− ExecStart = "${openconnect}/bin/openconnect --config=${
103− generateConfig name icfg
105− StandardInput = "file:${icfg.passwordFile}";
111− options.networking.openconnect = {
112− package = mkPackageOption pkgs "openconnect" { };
114− interfaces = mkOption {
115− description = "OpenConnect interfaces.";
119− gateway = "gateway.example.com";
120− protocol = "anyconnect";
121− user = "example-user";
122− passwordFile = "/var/lib/secrets/openconnect-passwd";
125− type = with types; attrsOf (submodule interfaceOptions);
130− systemd.services = mapAttrs' (name: value: {
131− name = "openconnect-${name}";
132− value = generateUnit name value;
136− meta.maintainers = with maintainers; [ alyaeanyx ];
nixos/modules/services/networking/openfire.nixnew file+56
@@ -0,0 +1,56 @@
1+{ config, lib, pkgs, ... }:
10+ services.openfire = {
12+ enable = mkEnableOption "OpenFire XMPP server";
14+ usePostgreSQL = mkOption {
18+ Whether you use PostgreSQL service for your storage back-end.
27+ ###### implementation
29+ config = mkIf config.services.openfire.enable {
31+ assertions = singleton
32+ { assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable);
33+ message = "OpenFire configured to use PostgreSQL but services.postgresql.enable is not enabled.";
36+ systemd.services.openfire = {
37+ description = "OpenFire XMPP server";
38+ wantedBy = [ "multi-user.target" ];
39+ after = [ "networking.target" ] ++
40+ optional config.services.openfire.usePostgreSQL "postgresql.service";
41+ path = with pkgs; [ jre openfire coreutils which gnugrep gawk gnused ];
44+ mkdir /var/log/openfire || true
45+ mkdir /etc/openfire || true
46+ for i in ${pkgs.openfire}/conf.inst/*; do
47+ if ! test -f /etc/openfire/$(basename $i); then
nixos/modules/services/networking/pdns-recursor.nix+7−12
@@ -30,10 +30,10 @@ in {
30 enable = mkEnableOption "PowerDNS Recursor, a recursive DNS server";
30 enable = mkEnableOption "PowerDNS Recursor, a recursive DNS server";
32 dns.address = mkOption {
32 dns.address = mkOption {
33− type = oneOrMore types.str;
33+ type = types.str;
34− default = [ "::" "0.0.0.0" ];
34+ default = "0.0.0.0";
35 description = ''
35 description = ''
36− IP addresses Recursor DNS server will bind to.
36+ IP address Recursor DNS server will bind to.
@@ -47,12 +47,8 @@ in {
48 dns.allowFrom = mkOption {
48 dns.allowFrom = mkOption {
49 type = types.listOf types.str;
49 type = types.listOf types.str;
50− default = [
50+ default = [ "10.0.0.0/8" "172.16.0.0/12" "192.168.0.0/16" ];
51− "127.0.0.0/8" "10.0.0.0/8" "100.64.0.0/10"
52− "169.254.0.0/16" "192.168.0.0/16" "172.16.0.0/12"
53− "::1/128" "fc00::/7" "fe80::/10"
55− example = [ "0.0.0.0/0" "::/0" ];
51+ example = [ "0.0.0.0/0" ];
56 description = ''
52 description = ''
57 IP address ranges of clients allowed to make DNS queries.
53 IP address ranges of clients allowed to make DNS queries.
@@ -76,8 +72,7 @@ in {
77 api.allowFrom = mkOption {
73 api.allowFrom = mkOption {
78 type = types.listOf types.str;
74 type = types.listOf types.str;
79− default = [ "127.0.0.1" "::1" ];
75+ default = [ "0.0.0.0/0" ];
80− example = [ "0.0.0.0/0" "::/0" ];
81 description = ''
76 description = ''
82 IP address ranges of clients allowed to make API requests.
77 IP address ranges of clients allowed to make API requests.
@@ -101,7 +96,7 @@ in {
102 forwardZonesRecurse = mkOption {
97 forwardZonesRecurse = mkOption {
103 type = types.attrs;
98 type = types.attrs;
104− example = { eth = "[::1]:5353"; };
99+ example = { eth = "127.0.0.1:5353"; };
105 default = {};
100 default = {};
106 description = ''
101 description = ''
107 DNS zones to be forwarded to other recursive servers.
102 DNS zones to be forwarded to other recursive servers.
nixos/modules/services/networking/prosody.nix−1
@@ -820,7 +820,6 @@ in
820 '') cfg.muc}
820 '') cfg.muc}
822 ${ lib.optionalString (cfg.uploadHttp != null) ''
822 ${ lib.optionalString (cfg.uploadHttp != null) ''
823− -- TODO: think about migrating this to mod-http_file_share instead.
824 Component ${toLua cfg.uploadHttp.domain} "http_upload"
823 Component ${toLua cfg.uploadHttp.domain} "http_upload"
825 http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
824 http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
826 http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
825 http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
nixos/modules/services/networking/shellhub-agent.nix+17−26
@@ -1,37 +1,31 @@
1{ config, lib, pkgs, ... }:
1{ config, lib, pkgs, ... }:
6 cfg = config.services.shellhub-agent;
5 cfg = config.services.shellhub-agent;
9 ###### interface
8 ###### interface
11 options = {
10 options = {
13 services.shellhub-agent = {
12 services.shellhub-agent = {
15− enable = mkEnableOption "ShellHub Agent daemon";
17− package = mkPackageOption pkgs "shellhub-agent" { };
19− preferredHostname = mkOption {
14+ enable = mkOption {
20− type = types.str;
15+ type = types.bool;
21− default = "";
16+ default = false;
22 description = ''
17 description = ''
23− Set the device preferred hostname. This provides a hint to
18+ Whether to enable the ShellHub Agent daemon, which allows
24− the server to use this as hostname if it is available.
19+ secure remote logins.
28− keepAliveInterval = mkOption {
23+ package = mkOption {
29− type = types.int;
24+ type = types.package;
30− default = 30;
25+ default = pkgs.shellhub-agent;
26+ defaultText = literalExpression "pkgs.shellhub-agent";
31 description = ''
27 description = ''
32− Determine the interval to send the keep alive message to
28+ Which ShellHub Agent package to use.
33− the server. This has a direct impact of the bandwidth
@@ -80,13 +74,9 @@ in
80 "time-sync.target"
74 "time-sync.target"
83− environment = {
77+ environment.SERVER_ADDRESS = cfg.server;
84− SHELLHUB_SERVER_ADDRESS = cfg.server;
78+ environment.PRIVATE_KEY = cfg.privateKey;
85− SHELLHUB_PRIVATE_KEY = cfg.privateKey;
79+ environment.TENANT_ID = cfg.tenantId;
86− SHELLHUB_TENANT_ID = cfg.tenantId;
87− SHELLHUB_KEEPALIVE_INTERVAL = toString cfg.keepAliveInterval;
88− SHELLHUB_PREFERRED_HOSTNAME = cfg.preferredHostname;
91 serviceConfig = {
81 serviceConfig = {
92 # The service starts sessions for different users.
82 # The service starts sessions for different users.
@@ -95,6 +85,7 @@ in
95 ExecStart = "${cfg.package}/bin/agent";
85 ExecStart = "${cfg.package}/bin/agent";
89+ environment.systemPackages = [ cfg.package ];
nixos/modules/services/networking/ssh/sshd.nix−1
@@ -441,7 +441,6 @@ in
442 ${flip concatMapStrings cfg.hostKeys (k: ''
442 ${flip concatMapStrings cfg.hostKeys (k: ''
443 if ! [ -s "${k.path}" ]; then
443 if ! [ -s "${k.path}" ]; then
445 ssh-keygen \
444 ssh-keygen \
446 -t "${k.type}" \
445 -t "${k.type}" \
447 ${if k ? bits then "-b ${toString k.bits}" else ""} \
446 ${if k ? bits then "-b ${toString k.bits}" else ""} \
nixos/modules/services/networking/supplicant.nix+1−1
@@ -43,7 +43,7 @@ let
43 path = [ pkgs.coreutils ];
43 path = [ pkgs.coreutils ];
45 preStart = ''
45 preStart = ''
46− ${optionalString (suppl.configFile.path!=null && suppl.configFile.writable) ''
46+ ${optionalString (suppl.configFile.path!=null) ''
47 (umask 077 && touch -a "${suppl.configFile.path}")
47 (umask 077 && touch -a "${suppl.configFile.path}")
49 ${optionalString suppl.userControlled.enable ''
49 ${optionalString suppl.userControlled.enable ''
nixos/modules/services/networking/syncplay.nix+1−1
@@ -89,7 +89,7 @@ in
89 ${lib.optionalString (cfg.passwordFile != null) ''
89 ${lib.optionalString (cfg.passwordFile != null) ''
90 export SYNCPLAY_PASSWORD=$(cat "''${CREDENTIALS_DIRECTORY}/password")
90 export SYNCPLAY_PASSWORD=$(cat "''${CREDENTIALS_DIRECTORY}/password")
92− exec ${pkgs.syncplay-nogui}/bin/syncplay-server ${escapeShellArgs cmdArgs}
92+ exec ${pkgs.syncplay}/bin/syncplay-server ${escapeShellArgs cmdArgs}
nixos/modules/services/networking/tailscale.nix+1−9
@@ -21,12 +21,6 @@ in {
21 description = ''The interface name for tunnel traffic. Use "userspace-networking" (beta) to not use TUN.'';
21 description = ''The interface name for tunnel traffic. Use "userspace-networking" (beta) to not use TUN.'';
24− permitCertUid = mkOption {
25− type = types.nullOr types.nonEmptyStr;
27− description = "Username or user ID of the user allowed to to fetch Tailscale TLS certificates for the node.";
30 package = mkOption {
24 package = mkOption {
31 type = types.package;
25 type = types.package;
32 default = pkgs.tailscale;
26 default = pkgs.tailscale;
@@ -44,9 +38,7 @@ in {
44 serviceConfig.Environment = [
38 serviceConfig.Environment = [
45 "PORT=${toString cfg.port}"
39 "PORT=${toString cfg.port}"
46 ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"''
40 ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"''
47− ] ++ (lib.optionals (cfg.permitCertUid != null) [
48− "TS_PERMIT_CERT_UID=${cfg.permitCertUid}"
nixos/modules/services/networking/zeronet.nix+1−1
@@ -90,5 +90,5 @@ in with lib; {
90 (mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
90 (mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
93− meta.maintainers = with maintainers; [ Madouura ];
93+ meta.maintainers = with maintainers; [ chiiruno ];
nixos/modules/services/system/nscd.nix+8−17
@@ -7,6 +7,10 @@ let
7 nssModulesPath = config.system.nssModules.path;
7 nssModulesPath = config.system.nssModules.path;
8 cfg = config.services.nscd;
8 cfg = config.services.nscd;
10+ nscd = if pkgs.stdenv.hostPlatform.libc == "glibc"
11+ then pkgs.stdenv.cc.libc.bin
@@ -33,19 +37,6 @@ in
33 description = "Configuration to use for Name Service Cache Daemon.";
37 description = "Configuration to use for Name Service Cache Daemon.";
37− type = types.package;
38− default = if pkgs.stdenv.hostPlatform.libc == "glibc"
39− then pkgs.stdenv.cc.libc.bin
41− defaultText = lib.literalExpression ''
42− if pkgs.stdenv.hostPlatform.libc == "glibc"
43− then pkgs.stdenv.cc.libc.bin
46− description = "package containing the nscd binary to be used by the service";
@@ -78,16 +69,16 @@ in
78 # files. So prefix the ExecStart command with "!" to prevent systemd
69 # files. So prefix the ExecStart command with "!" to prevent systemd
79 # from dropping privileges early. See ExecStart in systemd.service(5).
70 # from dropping privileges early. See ExecStart in systemd.service(5).
80 serviceConfig =
71 serviceConfig =
81− { ExecStart = "!@${cfg.package}/bin/nscd nscd";
72+ { ExecStart = "!@${nscd}/sbin/nscd nscd";
82 Type = "forking";
73 Type = "forking";
83 DynamicUser = true;
74 DynamicUser = true;
84 RuntimeDirectory = "nscd";
75 RuntimeDirectory = "nscd";
85 PIDFile = "/run/nscd/nscd.pid";
76 PIDFile = "/run/nscd/nscd.pid";
86 Restart = "always";
77 Restart = "always";
87 ExecReload =
78 ExecReload =
88− [ "${cfg.package}/bin/nscd --invalidate passwd"
79+ [ "${nscd}/sbin/nscd --invalidate passwd"
89− "${cfg.package}/bin/nscd --invalidate group"
80+ "${nscd}/sbin/nscd --invalidate group"
90− "${cfg.package}/bin/nscd --invalidate hosts"
81+ "${nscd}/sbin/nscd --invalidate hosts"
nixos/modules/services/ttys/kmscon.nix+5−24
@@ -1,6 +1,6 @@
1{ config, pkgs, lib, ... }:
1{ config, pkgs, lib, ... }:
3− inherit (lib) mapAttrs mkIf mkOption optional optionals types;
3+ inherit (lib) mkOption types mkIf;
5 cfg = config.services.kmscon;
5 cfg = config.services.kmscon;
@@ -28,19 +28,6 @@ in {
28 default = false;
28 default = false;
32− description = "Fonts used by kmscon, in order of priority.";
34− example = lib.literalExpression ''[ { name = "Source Code Pro"; package = pkgs.source-code-pro; } ]'';
36− let fontType = submodule {
38− name = mkOption { type = str; description = "Font name, as used by fontconfig."; };
39− package = mkOption { type = package; description = "Package providing the font."; };
41− }; in nullOr (nonEmptyListOf fontType);
44 extraConfig = mkOption {
31 extraConfig = mkOption {
45 description = "Extra contents of the kmscon.conf file.";
32 description = "Extra contents of the kmscon.conf file.";
46 type = types.lines;
33 type = types.lines;
@@ -100,17 +87,11 @@ in {
101 systemd.services.systemd-vconsole-setup.enable = false;
88 systemd.services.systemd-vconsole-setup.enable = false;
103− services.kmscon.extraConfig =
90+ services.kmscon.extraConfig = mkIf cfg.hwRender ''
105− render = optionals cfg.hwRender [ "drm" "hwaccel" ];
92+ hwaccel
106− fonts = optional (cfg.fonts != null) "font-name=${lib.concatMapStringsSep ", " (f: f.name) cfg.fonts}";
93+ '';
107− in lib.concatStringsSep "\n" (render ++ fonts);
109 hardware.opengl.enable = mkIf cfg.hwRender true;
95 hardware.opengl.enable = mkIf cfg.hwRender true;
111− fonts = mkIf (cfg.fonts != null) {
112− fontconfig.enable = true;
113− fonts = map (f: f.package) cfg.fonts;
nixos/modules/services/web-apps/atlassian/jira.nix−1
@@ -151,7 +151,6 @@ in
151 users.users.${cfg.user} = {
151 users.users.${cfg.user} = {
152 isSystemUser = true;
152 isSystemUser = true;
153 group = cfg.group;
153 group = cfg.group;
157 users.groups.${cfg.group} = {};
156 users.groups.${cfg.group} = {};
nixos/modules/services/web-apps/discourse.nix+3−9
@@ -609,7 +609,6 @@ in
609 connection_reaper_interval = 30;
609 connection_reaper_interval = 30;
610 relative_url_root = null;
610 relative_url_root = null;
611 message_bus_max_backlog_size = 100;
611 message_bus_max_backlog_size = 100;
612− message_bus_clear_every = 50;
613 secret_key_base = cfg.secretKeyBaseFile;
612 secret_key_base = cfg.secretKeyBaseFile;
614 fallback_assets_path = null;
613 fallback_assets_path = null;
@@ -656,12 +655,7 @@ in
656 long_polling_interval = null;
655 long_polling_interval = null;
659− services.redis.servers.discourse =
660− lib.mkIf (lib.elem cfg.redis.host [ "localhost" "127.0.0.1" ]) {
658+ services.redis.enable = lib.mkDefault (cfg.redis.host == "localhost");
662− bind = cfg.redis.host;
663− port = cfg.backendSettings.redis_port;
666 services.postgresql = lib.mkIf databaseActuallyCreateLocally {
660 services.postgresql = lib.mkIf databaseActuallyCreateLocally {
667 enable = true;
661 enable = true;
@@ -702,12 +696,12 @@ in
702 systemd.services.discourse = {
696 systemd.services.discourse = {
703 wantedBy = [ "multi-user.target" ];
697 wantedBy = [ "multi-user.target" ];
704 after = [
698 after = [
705− "redis-discourse.service"
699+ "redis.service"
706 "postgresql.service"
700 "postgresql.service"
707 "discourse-postgresql.service"
701 "discourse-postgresql.service"
709 bindsTo = [
703 bindsTo = [
710− "redis-discourse.service"
704+ "redis.service"
711 ] ++ lib.optionals (cfg.database.host == null) [
705 ] ++ lib.optionals (cfg.database.host == null) [
712 "postgresql.service"
706 "postgresql.service"
713 "discourse-postgresql.service"
707 "discourse-postgresql.service"
nixos/modules/services/web-apps/galene.nix−29
@@ -164,35 +164,6 @@ in
164 optional (cfg.dataDir == defaultdataDir) "galene/data" ++
164 optional (cfg.dataDir == defaultdataDir) "galene/data" ++
165 optional (cfg.groupsDir == defaultgroupsDir) "galene/groups" ++
165 optional (cfg.groupsDir == defaultgroupsDir) "galene/groups" ++
166 optional (cfg.recordingsDir == defaultrecordingsDir) "galene/recordings";
166 optional (cfg.recordingsDir == defaultrecordingsDir) "galene/recordings";
169− CapabilityBoundingSet = [ "" ];
170− DeviceAllow = [ "" ];
171− LockPersonality = true;
172− MemoryDenyWriteExecute = true;
173− NoNewPrivileges = true;
174− PrivateDevices = true;
176− PrivateUsers = true;
178− ProtectClock = true;
179− ProtectControlGroups = true;
181− ProtectHostname = true;
182− ProtectKernelLogs = true;
183− ProtectKernelModules = true;
184− ProtectKernelTunables = true;
185− ProtectProc = "invisible";
186− ProtectSystem = "strict";
187− ReadWritePaths = cfg.recordingsDir;
189− RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
190− RestrictNamespaces = true;
191− RestrictRealtime = true;
192− RestrictSUIDSGID = true;
193− SystemCallArchitectures = "native";
194− SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ];
nixos/modules/services/web-apps/keycloak.nix+514−360
@@ -4,94 +4,20 @@ let
4 cfg = config.services.keycloak;
4 cfg = config.services.keycloak;
5 opt = options.services.keycloak;
5 opt = options.services.keycloak;
11− mkChangedOptionModule
12− mkRenamedOptionModule
13− mkRemovedOptionModule
14− concatStringsSep
7+ inherit (lib) types mkOption concatStringsSep mapAttrsToList
15− mapAttrsToList
8+ escapeShellArg recursiveUpdate optionalAttrs boolToString mkOrder
16− escapeShellArg
9+ sort filterAttrs concatMapStringsSep concatStrings mkIf
21− literalExpression
10+ optionalString optionals mkDefault literalExpression hasSuffix
23− literalDocBook
11+ foldl' isAttrs filter attrNames elem literalDocBook
24− maintainers
12+ maintainers;
30− inherit (builtins)
14+ inherit (builtins) match typeOf;
39− prefixUnlessEmpty = prefix: string: optionalString (string != "") "${prefix}${string}";
44− (mkRenamedOptionModule
45− [ "services" "keycloak" "bindAddress" ]
46− [ "services" "keycloak" "settings" "http-host" ])
47− (mkRenamedOptionModule
48− [ "services" "keycloak" "forceBackendUrlToFrontendUrl"]
49− [ "services" "keycloak" "settings" "hostname-strict-backchannel"])
50− (mkChangedOptionModule
51− [ "services" "keycloak" "httpPort" ]
52− [ "services" "keycloak" "settings" "http-port" ]
54− builtins.fromJSON config.services.keycloak.httpPort))
55− (mkChangedOptionModule
56− [ "services" "keycloak" "httpsPort" ]
57− [ "services" "keycloak" "settings" "https-port" ]
59− builtins.fromJSON config.services.keycloak.httpsPort))
60− (mkRemovedOptionModule
61− [ "services" "keycloak" "frontendUrl" ]
63− Set `services.keycloak.settings.hostname' and `services.keycloak.settings.http-relative-path' instead.
64− NOTE: You likely want to set 'http-relative-path' to '/auth' to keep compatibility with your clients.
65− See its description for more information.
67− (mkRemovedOptionModule
68− [ "services" "keycloak" "extraConfig" ]
69− "Use `services.keycloak.settings' instead.")
72 options.services.keycloak =
17 options.services.keycloak =
74− inherit (types)
19+ inherit (types) bool str nullOr attrsOf path enum anything
83− package
20+ package port;
86− assertStringPath = optionName: value:
89− services.keycloak.${optionName}:
91− is a Nix path, but should be a string, since Nix
92− paths are copied into the world-readable Nix store.
97 enable = mkOption {
23 enable = mkOption {
@@ -104,14 +30,89 @@ in
33+ bindAddress = mkOption {
35+ default = "\${jboss.bind.address:0.0.0.0}";
36+ example = "127.0.0.1";
38+ On which address Keycloak should accept new connections.
40+ A special syntax can be used to allow command line Java system
41+ properties to override the value: ''${property.name:value}
45+ httpPort = mkOption {
47+ default = "\${jboss.http.port:80}";
50+ On which port Keycloak should listen for new HTTP connections.
52+ A special syntax can be used to allow command line Java system
53+ properties to override the value: ''${property.name:value}
57+ httpsPort = mkOption {
59+ default = "\${jboss.https.port:443}";
62+ On which port Keycloak should listen for new HTTPS connections.
64+ A special syntax can be used to allow command line Java system
65+ properties to override the value: ''${property.name:value}
69+ frontendUrl = mkOption {
72+ if x == "" || hasSuffix "/" x then
76+ example = "keycloak.example.com/auth";
78+ The public URL used as base for all frontend requests. Should
79+ normally include a trailing <literal>/auth</literal>.
81+ See <link xlink:href="https://www.keycloak.org/docs/latest/server_installation/#_hostname">the
82+ Hostname section of the Keycloak server installation
83+ manual</link> for more information.
87+ forceBackendUrlToFrontendUrl = mkOption {
92+ Whether Keycloak should force all requests to go through the
93+ frontend URL configured in <xref
94+ linkend="opt-services.keycloak.frontendUrl" />. By default,
95+ Keycloak allows backend requests to instead use its local
96+ hostname or IP address and may also advertise it to clients
97+ through its OpenID Connect Discovery endpoint.
100+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/#_hostname">the
101+ Hostname section of the Keycloak server installation
102+ manual</link> for more information.
107 sslCertificate = mkOption {
106 sslCertificate = mkOption {
108 type = nullOr path;
107 type = nullOr path;
109 default = null;
108 default = null;
110 example = "/run/keys/ssl_cert";
109 example = "/run/keys/ssl_cert";
111− apply = assertStringPath "sslCertificate";
112 description = ''
110 description = ''
113 The path to a PEM formatted certificate to use for TLS/SSL
111 The path to a PEM formatted certificate to use for TLS/SSL
114 connections.
112 connections.
114+ This should be a string, not a Nix path, since Nix paths are
115+ copied into the world-readable Nix store.
@@ -119,28 +120,28 @@ in
119 type = nullOr path;
120 type = nullOr path;
120 default = null;
121 default = null;
121 example = "/run/keys/ssl_key";
122 example = "/run/keys/ssl_key";
122− apply = assertStringPath "sslCertificateKey";
123 description = ''
123 description = ''
124 The path to a PEM formatted private key to use for TLS/SSL
124 The path to a PEM formatted private key to use for TLS/SSL
125 connections.
125 connections.
127+ This should be a string, not a Nix path, since Nix paths are
128+ copied into the world-readable Nix store.
129 plugins = lib.mkOption {
132 plugins = lib.mkOption {
130 type = lib.types.listOf lib.types.path;
133 type = lib.types.listOf lib.types.path;
131− default = [ ];
134+ default = [];
132 description = ''
135 description = ''
133− Keycloak plugin jar, ear files or derivations containing
136+ Keycloak plugin jar, ear files or derivations with them
134− them. Packaged plugins are available through
135− <literal>pkgs.keycloak.plugins</literal>.
139 database = {
140 database = {
140 type = mkOption {
141 type = mkOption {
141− type = enum [ "mysql" "mariadb" "postgresql" ];
142+ type = enum [ "mysql" "postgresql" ];
142 default = "postgresql";
143 default = "postgresql";
143− example = "mariadb";
144+ example = "mysql";
144 description = ''
145 description = ''
145 The type of database Keycloak should connect to.
146 The type of database Keycloak should connect to.
@@ -158,7 +159,6 @@ in
159 dbPorts = {
160 dbPorts = {
160 postgresql = 5432;
161 postgresql = 5432;
162 mysql = 3306;
162 mysql = 3306;
@@ -207,21 +207,6 @@ in
212− default = "keycloak";
214− Database name to use when connecting to an external or
215− manually provisioned database; has no effect when a local
216− database is automatically provisioned.
218− To use this with a local database, set <xref
219− linkend="opt-services.keycloak.database.createLocally" /> to
220− <literal>false</literal> and create the database and user
225 username = mkOption {
210 username = mkOption {
226 type = str;
211 type = str;
227 default = "keycloak";
212 default = "keycloak";
@@ -233,16 +218,19 @@ in
233 To use this with a local database, set <xref
218 To use this with a local database, set <xref
234 linkend="opt-services.keycloak.database.createLocally" /> to
219 linkend="opt-services.keycloak.database.createLocally" /> to
235 <literal>false</literal> and create the database and user
220 <literal>false</literal> and create the database and user
236− manually.
221+ manually. The database should be called
222+ <literal>keycloak</literal>.
240 passwordFile = mkOption {
226 passwordFile = mkOption {
241 type = path;
227 type = path;
242 example = "/run/keys/db_password";
228 example = "/run/keys/db_password";
243− apply = assertStringPath "passwordFile";
244 description = ''
229 description = ''
245− The path to a file containing the database password.
230+ File containing the database password.
232+ This should be a string, not a Nix path, since Nix paths are
233+ copied into the world-readable Nix store.
@@ -280,181 +268,67 @@ in
283− settings = mkOption {
271+ extraConfig = mkOption {
284− type = lib.types.submodule {
272+ type = attrsOf anything;
285− freeformType = attrsOf (nullOr (oneOf [ str int bool (attrsOf path) ]));
288− http-host = mkOption {
290− default = "0.0.0.0";
273+ default = { };
291− example = "127.0.0.1";
293− On which address Keycloak should accept new connections.
297− http-port = mkOption {
302− On which port Keycloak should listen for new HTTP connections.
306− https-port = mkOption {
311− On which port Keycloak should listen for new HTTPS connections.
315− http-relative-path = mkOption {
320− The path relative to <literal>/</literal> for serving
325− In versions of Keycloak using Wildfly (<17),
326− this defaulted to <literal>/auth</literal>. If
327− upgrading from the Wildfly version of Keycloak,
328− i.e. a NixOS version before 22.05, you'll likely
329− want to set this to <literal>/auth</literal> to
330− keep compatibility with your clients.
333− xlink:href="https://www.keycloak.org/migration/migrating-to-quarkus"
334− /> for more information on migrating from Wildfly
341− hostname = mkOption {
343− example = "keycloak.example.com";
345− The hostname part of the public URL used as base for
346− all frontend requests.
348− See <link xlink:href="https://www.keycloak.org/server/hostname" />
349− for more information about hostname configuration.
353− hostname-strict-backchannel = mkOption {
358− Whether Keycloak should force all requests to go
359− through the frontend URL. By default, Keycloak allows
360− backend requests to instead use its local hostname or
361− IP address and may also advertise it to clients
362− through its OpenID Connect Discovery endpoint.
364− See <link xlink:href="https://www.keycloak.org/server/hostname" />
365− for more information about hostname configuration.
370− type = enum [ "edge" "reencrypt" "passthrough" "none" ];
374− The proxy address forwarding mode if the server is
375− behind a reverse proxy.
382− Enables communication through HTTP between the
388− <term>reencrypt</term>
391− Requires communication through HTTPS between the
397− <term>passthrough</term>
400− Enables communication through HTTP or HTTPS between
401− the proxy and Keycloak.
408− xlink:href="https://www.keycloak.org/server/reverseproxy"
409− /> for more information.
415 example = literalExpression ''
274 example = literalExpression ''
276+ "subsystem=keycloak-server" = {
278+ "provider=default" = null;
279+ "provider=fixed" = {
417− hostname = "keycloak.example.com";
281+ properties.hostname = "keycloak.example.com";
418− proxy = "reencrypt";
282+ };
419− https-key-store-file = "/path/to/file";
283+ default-provider = "fixed";
420− https-key-store-password = { _secret = "/run/keys/store_password"; };
284+ };
424 description = ''
288 description = ''
425− Configuration options corresponding to parameters set in
289+ Additional Keycloak configuration options to set in
426− <filename>conf/keycloak.conf</filename>.
290+ <literal>standalone.xml</literal>.
428− Most available options are documented at <link
292+ Options are expressed as a Nix attribute set which matches the
429− xlink:href="https://www.keycloak.org/server/all-config" />.
293+ structure of the jboss-cli configuration. The configuration is
430−
294+ effectively overlayed on top of the default configuration
431− Options containing secret data should be set to an attribute
295+ shipped with Keycloak. To remove existing nodes and undefine
432− set containing the attribute <literal>_secret</literal> - a
296+ attributes from the default configuration, set them to
433− string pointing to a file containing the value the option
297+ <literal>null</literal>.
434− should be set to. See the example to get a better picture of
298+
435− this: in the resulting
299+ The example configuration does the equivalent of the following
436− <filename>conf/keycloak.conf</filename> file, the
300+ script, which removes the hostname provider
437− <literal>https-key-store-password</literal> key will be set
301+ <literal>default</literal>, adds the deprecated hostname
438− to the contents of the
302+ provider <literal>fixed</literal> and defines it the default:
439− <filename>/run/keys/store_password</filename> file.
303+
305+ /subsystem=keycloak-server/spi=hostname/provider=default:remove()
306+ /subsystem=keycloak-server/spi=hostname/provider=fixed:add(enabled = true, properties = { hostname = "keycloak.example.com" })
307+ /subsystem=keycloak-server/spi=hostname:write-attribute(name=default-provider, value="fixed")
310+ You can discover available options by using the <link
311+ xlink:href="http://docs.wildfly.org/21/Admin_Guide.html#Command_Line_Interface">jboss-cli.sh</link>
312+ program and by referring to the <link
313+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/index.html">Keycloak
314+ Server Installation and Configuration Guide</link>.
446− # We only want to create a database if we're actually going to
322+ # We only want to create a database if we're actually going to connect to it.
448 databaseActuallyCreateLocally = cfg.database.createLocally && cfg.database.host == "localhost";
323 databaseActuallyCreateLocally = cfg.database.createLocally && cfg.database.host == "localhost";
449 createLocalPostgreSQL = databaseActuallyCreateLocally && cfg.database.type == "postgresql";
324 createLocalPostgreSQL = databaseActuallyCreateLocally && cfg.database.type == "postgresql";
450− createLocalMySQL = databaseActuallyCreateLocally && elem cfg.database.type [ "mysql" "mariadb" ];
325+ createLocalMySQL = databaseActuallyCreateLocally && cfg.database.type == "mysql";
452 mySqlCaKeystore = pkgs.runCommand "mysql-ca-keystore" { } ''
327 mySqlCaKeystore = pkgs.runCommand "mysql-ca-keystore" { } ''
453 ${pkgs.jre}/bin/keytool -importcert -trustcacerts -alias MySQLCACert -file ${cfg.database.caCert} -keystore $out -storepass notsosecretpassword -noprompt
328 ${pkgs.jre}/bin/keytool -importcert -trustcacerts -alias MySQLCACert -file ${cfg.database.caCert} -keystore $out -storepass notsosecretpassword -noprompt
456− # Both theme and theme type directories need to be actual
331+ # Both theme and theme type directories need to be actual directories in one hierarchy to pass Keycloak checks.
457− # directories in one hierarchy to pass Keycloak checks.
458 themesBundle = pkgs.runCommand "keycloak-themes" { } ''
332 themesBundle = pkgs.runCommand "keycloak-themes" { } ''
459 linkTheme() {
333 linkTheme() {
460 theme="$1"
334 theme="$1"
@@ -473,7 +347,7 @@ in
475 mkdir -p "$out"
349 mkdir -p "$out"
476− for theme in ${keycloakBuild}/themes/*; do
350+ for theme in ${cfg.package}/themes/*; do
477 if [ -d "$theme" ]; then
351 if [ -d "$theme" ]; then
478 linkTheme "$theme" "$(basename "$theme")"
352 linkTheme "$theme" "$(basename "$theme")"
@@ -482,25 +356,329 @@ in
482 ${concatStringsSep "\n" (mapAttrsToList (name: theme: "linkTheme ${theme} ${escapeShellArg name}") cfg.themes)}
356 ${concatStringsSep "\n" (mapAttrsToList (name: theme: "linkTheme ${theme} ${escapeShellArg name}") cfg.themes)}
485− keycloakConfig = lib.generators.toKeyValue {
359+ keycloakConfig' = foldl' recursiveUpdate
486− mkKeyValue = lib.flip lib.generators.mkKeyValueDefault "=" {
360+ {
487− mkValueString = v: with builtins;
361+ "interface=public".inet-address = cfg.bindAddress;
488− if isInt v then toString v
362+ "socket-binding-group=standard-sockets"."socket-binding=http".port = cfg.httpPort;
489− else if isString v then v
363+ "subsystem=keycloak-server" = {
490− else if true == v then "true"
364+ "spi=hostname"."provider=default" = {
491− else if false == v then "false"
365+ enabled = true;
492− else if isSecret v then hashString "sha256" v._secret
366+ properties = {
493− else throw "unsupported type ${typeOf v}: ${(lib.generators.toPretty {}) v}";
367+ inherit (cfg) frontendUrl forceBackendUrlToFrontendUrl;
370+ "theme=defaults".dir = toString themesBundle;
372+ "subsystem=datasources"."data-source=KeycloakDS" = {
373+ max-pool-size = "20";
374+ user-name = if databaseActuallyCreateLocally then "keycloak" else cfg.database.username;
375+ password = "@db-password@";
378+ (optionalAttrs (cfg.database.type == "postgresql") {
379+ "subsystem=datasources" = {
380+ "jdbc-driver=postgresql" = {
381+ driver-module-name = "org.postgresql";
382+ driver-name = "postgresql";
383+ driver-xa-datasource-class-name = "org.postgresql.xa.PGXADataSource";
385+ "data-source=KeycloakDS" = {
386+ connection-url = "jdbc:postgresql://${cfg.database.host}:${toString cfg.database.port}/keycloak";
387+ driver-name = "postgresql";
388+ "connection-properties=ssl".value = boolToString cfg.database.useSSL;
389+ } // (optionalAttrs (cfg.database.caCert != null) {
390+ "connection-properties=sslrootcert".value = cfg.database.caCert;
391+ "connection-properties=sslmode".value = "verify-ca";
395+ (optionalAttrs (cfg.database.type == "mysql") {
396+ "subsystem=datasources" = {
397+ "jdbc-driver=mysql" = {
398+ driver-module-name = "com.mysql";
399+ driver-name = "mysql";
400+ driver-class-name = "com.mysql.jdbc.Driver";
402+ "data-source=KeycloakDS" = {
403+ connection-url = "jdbc:mysql://${cfg.database.host}:${toString cfg.database.port}/keycloak";
404+ driver-name = "mysql";
405+ "connection-properties=useSSL".value = boolToString cfg.database.useSSL;
406+ "connection-properties=requireSSL".value = boolToString cfg.database.useSSL;
407+ "connection-properties=verifyServerCertificate".value = boolToString cfg.database.useSSL;
408+ "connection-properties=characterEncoding".value = "UTF-8";
409+ valid-connection-checker-class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker";
410+ validate-on-match = true;
411+ exception-sorter-class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter";
412+ } // (optionalAttrs (cfg.database.caCert != null) {
413+ "connection-properties=trustCertificateKeyStoreUrl".value = "file:${mySqlCaKeystore}";
414+ "connection-properties=trustCertificateKeyStorePassword".value = "notsosecretpassword";
418+ (optionalAttrs (cfg.sslCertificate != null && cfg.sslCertificateKey != null) {
419+ "socket-binding-group=standard-sockets"."socket-binding=https".port = cfg.httpsPort;
420+ "subsystem=elytron" = mkOrder 900 {
421+ "key-store=httpsKS" = mkOrder 900 {
422+ path = "/run/keycloak/ssl/certificate_private_key_bundle.p12";
423+ credential-reference.clear-text = "notsosecretpassword";
426+ "key-manager=httpsKM" = mkOrder 901 {
427+ key-store = "httpsKS";
428+ credential-reference.clear-text = "notsosecretpassword";
430+ "server-ssl-context=httpsSSC" = mkOrder 902 {
431+ key-manager = "httpsKM";
434+ "subsystem=undertow" = mkOrder 901 {
435+ "server=default-server"."https-listener=https".ssl-context = "httpsSSC";
442+ /* Produces a JBoss CLI script that creates paths and sets
443+ attributes matching those described by `attrs`. When the
444+ script is run, the existing settings are effectively overlayed
445+ by those from `attrs`. Existing attributes can be unset by
446+ defining them `null`.
448+ JBoss paths and attributes / maps are distinguished by their
449+ name, where paths follow a `key=value` scheme.
453+ "subsystem=keycloak-server"."spi=hostname" = {
454+ "provider=fixed" = null;
455+ "provider=default" = {
458+ inherit frontendUrl;
459+ forceBackendUrlToFrontendUrl = false;
465+ if (outcome != success) of /:read-resource()
468+ if (outcome != success) of /subsystem=keycloak-server:read-resource()
469+ /subsystem=keycloak-server:add()
471+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname:read-resource()
472+ /subsystem=keycloak-server/spi=hostname:add()
474+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname/provider=default:read-resource()
475+ /subsystem=keycloak-server/spi=hostname/provider=default:add(enabled = true, properties = { forceBackendUrlToFrontendUrl = false, frontendUrl = "https://keycloak.example.com/auth" })
477+ if (result != true) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="enabled")
478+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=enabled, value=true)
480+ if (result != false) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.forceBackendUrlToFrontendUrl")
481+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.forceBackendUrlToFrontendUrl, value=false)
483+ if (result != "https://keycloak.example.com/auth") of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.frontendUrl")
484+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.frontendUrl, value="https://keycloak.example.com/auth")
486+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname/provider=fixed:read-resource()
487+ /subsystem=keycloak-server/spi=hostname/provider=fixed:remove()
491+ mkJbossScript = attrs:
493+ /* From a JBoss path and an attrset, produces a JBoss CLI
494+ snippet that writes the corresponding attributes starting
495+ at `path`. Recurses down into subattrsets as necessary,
496+ producing the variable name from its full path in the
500+ writeAttributes "/subsystem=keycloak-server/spi=hostname/provider=default" {
503+ forceBackendUrlToFrontendUrl = false;
504+ frontendUrl = "https://keycloak.example.com/auth";
508+ if (result != true) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="enabled")
509+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=enabled, value=true)
511+ if (result != false) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.forceBackendUrlToFrontendUrl")
512+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.forceBackendUrlToFrontendUrl, value=false)
514+ if (result != "https://keycloak.example.com/auth") of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.frontendUrl")
515+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.frontendUrl, value="https://keycloak.example.com/auth")
519+ writeAttributes = path: set:
521+ # JBoss expressions like `${var}` need to be prefixed
522+ # with `expression` to evaluate.
523+ prefixExpression = string:
525+ matchResult = match ''"\$\{.*}"'' string;
527+ if matchResult != null then
528+ "expression " + string
532+ writeAttribute = attribute: value:
534+ type = typeOf value;
536+ if type == "set" then
538+ names = attrNames value;
540+ foldl' (text: name: text + (writeAttribute "${attribute}.${name}" value.${name})) "" names
541+ else if value == null then ''
542+ if (outcome == success) of ${path}:read-attribute(name="${attribute}")
543+ ${path}:undefine-attribute(name="${attribute}")
546+ else if elem type [ "string" "path" "bool" ] then
548+ value' = if type == "bool" then boolToString value else ''"${value}"'';
551+ if (result != ${prefixExpression value'}) of ${path}:read-attribute(name="${attribute}")
552+ ${path}:write-attribute(name=${attribute}, value=${value'})
555+ else throw "Unsupported type '${type}' for path '${path}'!";
559+ (attribute: value: (writeAttribute attribute value))
563+ /* Produces an argument list for the JBoss `add()` function,
564+ which adds a JBoss path and takes as its arguments the
565+ required subpaths and attributes.
571+ forceBackendUrlToFrontendUrl = false;
572+ frontendUrl = "https://keycloak.example.com/auth";
576+ enabled = true, properties = { forceBackendUrlToFrontendUrl = false, frontendUrl = "https://keycloak.example.com/auth" }
581+ makeArg = attribute: value:
583+ type = typeOf value;
585+ if type == "set" then
586+ "${attribute} = { " + (makeArgList value) + " }"
587+ else if elem type [ "string" "path" "bool" ] then
588+ "${attribute} = ${if type == "bool" then boolToString value else ''"${value}"''}"
589+ else if value == null then
592+ throw "Unsupported type '${type}' for attribute '${attribute}'!";
595+ concatStringsSep ", " (mapAttrsToList makeArg set);
598+ /* Recurses into the `nodeValue` attrset. Only subattrsets that
599+ are JBoss paths, i.e. follows the `key=value` format, are recursed
600+ into - the rest are considered JBoss attributes / maps.
602+ recurse = nodePath: nodeValue:
605+ if isAttrs nodeValue && nodeValue._type or "" == "order" then
611+ value = nodeContent.${name};
613+ if (match ".*([=]).*" name) == [ "=" ] then
614+ if isAttrs value || value == null then
617+ throw "Parsing path '${concatStringsSep "." (nodePath ++ [ name ])}' failed: JBoss attributes cannot contain '='!"
620+ jbossPath = "/" + concatStringsSep "/" nodePath;
621+ children = if !isAttrs nodeContent then { } else nodeContent;
622+ subPaths = filter isPath (attrNames children);
625+ value = children.${name};
627+ if value._type or "" == "order" then value.priority else 1000;
628+ orderedSubPaths = sort (a: b: getPriority a < getPriority b) subPaths;
629+ jbossAttrs = filterAttrs (name: _: !(isPath name)) children;
631+ if nodeContent != null then
633+ if (outcome != success) of ${jbossPath}:read-resource()
634+ ${jbossPath}:add(${makeArgList jbossAttrs})
636+ '' + writeAttributes jbossPath jbossAttrs
639+ if (outcome == success) of ${jbossPath}:read-resource()
640+ ${jbossPath}:remove()
644+ text + concatMapStringsSep "\n" (name: recurse (nodePath ++ [ name ]) children.${name}) orderedSubPaths;
648+ jbossCliScript = pkgs.writeText "jboss-cli-script" (mkJbossScript keycloakConfig');
650+ keycloakConfig = pkgs.runCommand "keycloak-config"
652+ nativeBuildInputs = [ cfg.package ];
655+ export JBOSS_BASE_DIR="$(pwd -P)";
656+ export JBOSS_MODULEPATH="${cfg.package}/modules";
657+ export JBOSS_LOG_DIR="$JBOSS_BASE_DIR/log";
659+ cp -r ${cfg.package}/standalone/configuration .
660+ chmod -R u+rwX ./configuration
662+ mkdir -p {deployments,ssl}
668+ while ! jboss-cli.sh --connect ':read-attribute(name=server-state)'; do
669+ if [[ "$attempt" == "$max_attempts" ]]; then
670+ echo "ERROR: Could not connect to Keycloak after $attempt attempts! Failing.." >&2
673+ echo "Keycloak not fully started yet, retrying.. ($attempt/$max_attempts)"
497− isSecret = v: isAttrs v && v ? _secret && isString v._secret;
678+ jboss-cli.sh --connect --file=${jbossCliScript} --echo-command
498− filteredConfig = lib.converge (lib.filterAttrsRecursive (_: v: ! elem v [{ } null])) cfg.settings;
679+
499− confFile = pkgs.writeText "keycloak.conf" (keycloakConfig filteredConfig);
680+ cp configuration/standalone.xml $out
500− keycloakBuild = cfg.package.override {
502− plugins = cfg.package.enabledPlugins ++ cfg.plugins;
505 mkIf cfg.enable
683 mkIf cfg.enable
@@ -511,46 +689,7 @@ in
514− environment.systemPackages = [ keycloakBuild ];
692+ environment.systemPackages = [ cfg.package ];
516− services.keycloak.settings =
518− postgresParams = concatStringsSep "&" (
519− optionals cfg.database.useSSL [
521− ] ++ optionals (cfg.database.caCert != null) [
522− "sslrootcert=${cfg.database.caCert}"
526− mariadbParams = concatStringsSep "&" ([
527− "characterEncoding=UTF-8"
528− ] ++ optionals cfg.database.useSSL [
531− "verifyServerCertificate=true"
532− ] ++ optionals (cfg.database.caCert != null) [
533− "trustCertificateKeyStoreUrl=file:${mySqlCaKeystore}"
534− "trustCertificateKeyStorePassword=notsosecretpassword"
536− dbProps = if cfg.database.type == "postgresql" then postgresParams else mariadbParams;
540− db = if cfg.database.type == "postgresql" then "postgres" else cfg.database.type;
541− db-username = if databaseActuallyCreateLocally then "keycloak" else cfg.database.username;
542− db-password._secret = cfg.database.passwordFile;
543− db-url-host = cfg.database.host;
544− db-url-port = toString cfg.database.port;
545− db-url-database = if databaseActuallyCreateLocally then "keycloak" else cfg.database.name;
546− db-url-properties = prefixUnlessEmpty "?" dbProps;
549− (mkIf (cfg.sslCertificate != null && cfg.sslCertificateKey != null) {
550− https-certificate-file = "/run/keycloak/ssl/ssl_cert";
551− https-certificate-key-file = "/run/keycloak/ssl/ssl_key";
555 systemd.services.keycloakPostgreSQLInit = mkIf createLocalPostgreSQL {
694 systemd.services.keycloakPostgreSQLInit = mkIf createLocalPostgreSQL {
556 after = [ "postgresql.service" ];
695 after = [ "postgresql.service" ];
@@ -613,37 +752,41 @@ in
613 "mysql.service"
752 "mysql.service"
615 else [ ];
754 else [ ];
616− secretPaths = catAttrs "_secret" (collect isSecret cfg.settings);
617− mkSecretReplacement = file: ''
618− replace-secret ${hashString "sha256" file} $CREDENTIALS_DIRECTORY/${baseNameOf file} /run/keycloak/conf/keycloak.conf
620− secretReplacements = lib.concatMapStrings mkSecretReplacement secretPaths;
623 after = databaseServices;
757 after = databaseServices;
624 bindsTo = databaseServices;
758 bindsTo = databaseServices;
625 wantedBy = [ "multi-user.target" ];
759 wantedBy = [ "multi-user.target" ];
626 path = with pkgs; [
760 path = with pkgs; [
627− keycloakBuild
761+ cfg.package
629 replace-secret
763 replace-secret
631 environment = {
765 environment = {
632− KC_HOME_DIR = "/run/keycloak";
766+ JBOSS_LOG_DIR = "/var/log/keycloak";
633− KC_CONF_DIR = "/run/keycloak/conf";
767+ JBOSS_BASE_DIR = "/run/keycloak";
768+ JBOSS_MODULEPATH = "${cfg.package}/modules";
635 serviceConfig = {
770 serviceConfig = {
636− LoadCredential =
771+ LoadCredential = [
637− map (p: "${baseNameOf p}:${p}") secretPaths
772+ "db_password:${cfg.database.passwordFile}"
638− ++ optionals (cfg.sslCertificate != null && cfg.sslCertificateKey != null) [
773+ ] ++ optionals (cfg.sslCertificate != null && cfg.sslCertificateKey != null) [
639− "ssl_cert:${cfg.sslCertificate}"
774+ "ssl_cert:${cfg.sslCertificate}"
640− "ssl_key:${cfg.sslCertificateKey}"
775+ "ssl_key:${cfg.sslCertificateKey}"
642 User = "keycloak";
777 User = "keycloak";
643 Group = "keycloak";
778 Group = "keycloak";
644 DynamicUser = true;
779 DynamicUser = true;
645− RuntimeDirectory = "keycloak";
780+ RuntimeDirectory = map (p: "keycloak/" + p) [
646 RuntimeDirectoryMode = 0700;
788 RuntimeDirectoryMode = 0700;
789+ LogsDirectory = "keycloak";
647 AmbientCapabilities = "CAP_NET_BIND_SERVICE";
790 AmbientCapabilities = "CAP_NET_BIND_SERVICE";
649 script = ''
792 script = ''
@@ -652,30 +795,41 @@ in
653 umask u=rwx,g=,o=
796 umask u=rwx,g=,o=
655− ln -s ${themesBundle} /run/keycloak/themes
798+ install_plugin() {
656− ln -s ${keycloakBuild}/providers /run/keycloak/
799+ if [ -d "$1" ]; then
657−
800+ find "$1" -type f \( -iname \*.ear -o -iname \*.jar \) -exec install -m 0500 -o keycloak -g keycloak "{}" "/run/keycloak/deployments/" \;
802+ install -m 0500 -o keycloak -g keycloak "$1" "/run/keycloak/deployments/"
806+ install -m 0600 ${cfg.package}/standalone/configuration/*.properties /run/keycloak/configuration
658− install -D -m 0600 ${confFile} /run/keycloak/conf/keycloak.conf
807+ install -T -m 0600 ${keycloakConfig} /run/keycloak/configuration/standalone.xml
660− ${secretReplacements}
809+ replace-secret '@db-password@' "$CREDENTIALS_DIRECTORY/db_password" /run/keycloak/configuration/standalone.xml
811+ export JAVA_OPTS=-Djboss.server.config.user.dir=/run/keycloak/configuration
812+ add-user-keycloak.sh -u admin -p '${cfg.initialAdminPassword}'
814+ + lib.optionalString (cfg.plugins != []) (lib.concatStringsSep "\n" (map (pl: "install_plugin ${lib.escapeShellArg pl}") cfg.plugins)) + "\n"
662− '' + optionalString (cfg.sslCertificate != null && cfg.sslCertificateKey != null) ''
815+ + optionalString (cfg.sslCertificate != null && cfg.sslCertificateKey != null) ''
663− mkdir -p /run/keycloak/ssl
816+ pushd /run/keycloak/ssl/
664− cp $CREDENTIALS_DIRECTORY/ssl_{cert,key} /run/keycloak/ssl/
817+ cat "$CREDENTIALS_DIRECTORY/ssl_cert" <(echo) \
818+ "$CREDENTIALS_DIRECTORY/ssl_key" <(echo) \
819+ /etc/ssl/certs/ca-certificates.crt \
821+ openssl pkcs12 -export -in "$CREDENTIALS_DIRECTORY/ssl_cert" -inkey "$CREDENTIALS_DIRECTORY/ssl_key" -chain \
822+ -name "${cfg.frontendUrl}" -out certificate_private_key_bundle.p12 \
823+ -CAfile allcerts.pem -passout pass:notsosecretpassword
666− export KEYCLOAK_ADMIN=admin
826+ ${cfg.package}/bin/standalone.sh
667− export KEYCLOAK_ADMIN_PASSWORD=${cfg.initialAdminPassword}
672 services.postgresql.enable = mkDefault createLocalPostgreSQL;
830 services.postgresql.enable = mkDefault createLocalPostgreSQL;
673 services.mysql.enable = mkDefault createLocalMySQL;
831 services.mysql.enable = mkDefault createLocalMySQL;
674− services.mysql.package =
832+ services.mysql.package = mkIf createLocalMySQL pkgs.mariadb;
676− dbPkg = if cfg.database.type == "mariadb" then pkgs.mariadb else pkgs.mysql80;
678− mkIf createLocalMySQL (mkDefault dbPkg);
681 meta.doc = ./keycloak.xml;
835 meta.doc = ./keycloak.xml;
nixos/modules/services/web-apps/keycloak.xml+81−61
@@ -27,10 +27,10 @@
29 Refer to the <link
29 Refer to the <link
30− xlink:href="https://www.keycloak.org/docs/latest/server_admin/index.html">
30+ xlink:href="https://www.keycloak.org/docs/latest/server_admin/index.html#admin-console">Admin
31− Keycloak Server Administration Guide</link> for information on
31+ Console section of the Keycloak Server Administration Guide</link> for
32+ information on how to administer your
32− how to administer your <productname>Keycloak</productname>
33+ <productname>Keycloak</productname> instance.
35 </section>
35 </section>
@@ -38,28 +38,27 @@
38 <title>Database access</title>
38 <title>Database access</title>
40 <productname>Keycloak</productname> can be used with either
40 <productname>Keycloak</productname> can be used with either
41− <productname>PostgreSQL</productname>,
41+ <productname>PostgreSQL</productname> or
42− <productname>MariaDB</productname> or
43 <productname>MySQL</productname>. Which one is used can be
42 <productname>MySQL</productname>. Which one is used can be
44 configured in <xref
43 configured in <xref
45 linkend="opt-services.keycloak.database.type" />. The selected
44 linkend="opt-services.keycloak.database.type" />. The selected
46 database will automatically be enabled and a database and role
45 database will automatically be enabled and a database and role
47 created unless <xref
46 created unless <xref
48− linkend="opt-services.keycloak.database.host" /> is changed
47+ linkend="opt-services.keycloak.database.host" /> is changed from
49− from its default of <literal>localhost</literal> or <xref
48+ its default of <literal>localhost</literal> or <xref
50− linkend="opt-services.keycloak.database.createLocally" /> is
49+ linkend="opt-services.keycloak.database.createLocally" /> is set
51− set to <literal>false</literal>.
50+ to <literal>false</literal>.
55 External database access can also be configured by setting
54 External database access can also be configured by setting
56 <xref linkend="opt-services.keycloak.database.host" />, <xref
55 <xref linkend="opt-services.keycloak.database.host" />, <xref
57− linkend="opt-services.keycloak.database.name" />, <xref
58 linkend="opt-services.keycloak.database.username" />, <xref
56 linkend="opt-services.keycloak.database.username" />, <xref
59 linkend="opt-services.keycloak.database.useSSL" /> and <xref
57 linkend="opt-services.keycloak.database.useSSL" /> and <xref
60 linkend="opt-services.keycloak.database.caCert" /> as
58 linkend="opt-services.keycloak.database.caCert" /> as
61− appropriate. Note that you need to manually create the database
59+ appropriate. Note that you need to manually create a database
60+ called <literal>keycloak</literal> and allow the configured
62− and allow the configured database user full access to it.
61+ database user full access to it.
@@ -80,27 +79,22 @@
80 </warning>
79 </warning>
81 </section>
80 </section>
83− <section xml:id="module-services-keycloak-hostname">
82+ <section xml:id="module-services-keycloak-frontendurl">
84− <title>Hostname</title>
83+ <title>Frontend URL</title>
86− The hostname is used to build the public URL used as base for
87− all frontend requests and must be configured through <xref
85+ The frontend URL is used as base for all frontend requests and
88− linkend="opt-services.keycloak.settings.hostname" />.
86+ must be configured through <xref linkend="opt-services.keycloak.frontendUrl" />.
87+ It should normally include a trailing <literal>/auth</literal>
88+ (the default web context). If you use a reverse proxy, you need
89+ to set this option to <literal>""</literal>, so that frontend URL
90+ is derived from HTTP headers. <literal>X-Forwarded-*</literal> headers
91+ support also should be enabled, using <link
92+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/index.html#identifying-client-ip-addresses">
93+ respective guidelines</link>.
93− If you're migrating an old Wildfly based Keycloak instance
94− and want to keep compatibility with your current clients,
95− you'll likely want to set <xref
96− linkend="opt-services.keycloak.settings.http-relative-path"
97− /> to <literal>/auth</literal>. See the option description
103− <xref linkend="opt-services.keycloak.settings.hostname-strict-backchannel" />
97+ <xref linkend="opt-services.keycloak.forceBackendUrlToFrontendUrl" />
104 determines whether Keycloak should force all requests to go
98 determines whether Keycloak should force all requests to go
105 through the frontend URL. By default,
99 through the frontend URL. By default,
106 <productname>Keycloak</productname> allows backend requests to
100 <productname>Keycloak</productname> allows backend requests to
@@ -110,10 +104,10 @@
113− For more information on hostname configuration, see the <link
107+ See the <link
114− xlink:href="https://www.keycloak.org/server/hostname">Hostname
108+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/#_hostname">Hostname
115− section of the Keycloak Server Installation and Configuration
109+ section of the Keycloak Server Installation and Configuration
116− Guide</link>.
110+ Guide</link> for more information.
118 </section>
112 </section>
@@ -145,39 +139,67 @@
145 <section xml:id="module-services-keycloak-themes">
139 <section xml:id="module-services-keycloak-themes">
146 <title>Themes</title>
140 <title>Themes</title>
148− You can package custom themes and make them visible to
142+ You can package custom themes and make them visible to Keycloak via
149− Keycloak through <xref linkend="opt-services.keycloak.themes"
143+ <xref linkend="opt-services.keycloak.themes" />
151− xlink:href="https://www.keycloak.org/docs/latest/server_development/#_themes">
144+ option. See the <link xlink:href="https://www.keycloak.org/docs/latest/server_development/#_themes">
152 Themes section of the Keycloak Server Development Guide</link>
145 Themes section of the Keycloak Server Development Guide</link>
153− and the description of the aforementioned NixOS option for
154− more information.
146+ and respective NixOS option description for more information.
156 </section>
148 </section>
158− <section xml:id="module-services-keycloak-settings">
150+ <section xml:id="module-services-keycloak-extra-config">
159− <title>Configuration file settings</title>
151+ <title>Additional configuration</title>
161− Keycloak server configuration parameters can be set in <xref
153+ Additional Keycloak configuration options, for which no
154+ explicit <productname>NixOS</productname> options are provided,
162− linkend="opt-services.keycloak.settings" />. These correspond
155+ can be set in <xref linkend="opt-services.keycloak.extraConfig" />.
163− directly to options in
164− <filename>conf/keycloak.conf</filename>. Some of the most
165− important parameters are documented as suboptions, the rest can
166− be found in the <link
167− xlink:href="https://www.keycloak.org/server/all-config">All
168− configuration section of the Keycloak Server Installation and
169− Configuration Guide</link>.
173− Options containing secret data should be set to an attribute
159+ Options are expressed as a Nix attribute set which matches the
160+ structure of the jboss-cli configuration. The configuration is
161+ effectively overlayed on top of the default configuration
162+ shipped with Keycloak. To remove existing nodes and undefine
163+ attributes from the default configuration, set them to
174− set containing the attribute <literal>_secret</literal> - a
164+ <literal>null</literal>.
175− string pointing to a file containing the value the option
176− should be set to. See the description of <xref
177− linkend="opt-services.keycloak.settings" /> for an example.
179− </section>
166+ <para>
167+ For example, the following script, which removes the hostname
168+ provider <literal>default</literal>, adds the deprecated
169+ hostname provider <literal>fixed</literal> and defines it the
173+/subsystem=keycloak-server/spi=hostname/provider=default:remove()
174+/subsystem=keycloak-server/spi=hostname/provider=fixed:add(enabled = true, properties = { hostname = "keycloak.example.com" })
175+/subsystem=keycloak-server/spi=hostname:write-attribute(name=default-provider, value="fixed")
178+ would be expressed as
181+services.keycloak.extraConfig = {
182+ "subsystem=keycloak-server" = {
184+ "provider=default" = null;
185+ "provider=fixed" = {
187+ properties.hostname = "keycloak.example.com";
189+ default-provider = "fixed";
196+ You can discover available options by using the <link
197+ xlink:href="http://docs.wildfly.org/21/Admin_Guide.html#Command_Line_Interface">jboss-cli.sh</link>
198+ program and by referring to the <link
199+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/index.html">Keycloak
200+ Server Installation and Configuration Guide</link>.
182 <section xml:id="module-services-keycloak-example-config">
204 <section xml:id="module-services-keycloak-example-config">
183 <title>Example configuration</title>
205 <title>Example configuration</title>
@@ -186,11 +208,9 @@
186<programlisting>
208<programlisting>
187services.keycloak = {
209services.keycloak = {
188 <link linkend="opt-services.keycloak.enable">enable</link> = true;
210 <link linkend="opt-services.keycloak.enable">enable</link> = true;
190− <link linkend="opt-services.keycloak.settings.hostname">hostname</link> = "keycloak.example.com";
191− <link linkend="opt-services.keycloak.settings.hostname-strict-backchannel">hostname-strict-backchannel</link> = true;
193 <link linkend="opt-services.keycloak.initialAdminPassword">initialAdminPassword</link> = "e6Wcm0RrtegMEHl"; # change on first login
211 <link linkend="opt-services.keycloak.initialAdminPassword">initialAdminPassword</link> = "e6Wcm0RrtegMEHl"; # change on first login
212+ <link linkend="opt-services.keycloak.frontendUrl">frontendUrl</link> = "https://keycloak.example.com/auth";
213+ <link linkend="opt-services.keycloak.forceBackendUrlToFrontendUrl">forceBackendUrlToFrontendUrl</link> = true;
194 <link linkend="opt-services.keycloak.sslCertificate">sslCertificate</link> = "/run/keys/ssl_cert";
214 <link linkend="opt-services.keycloak.sslCertificate">sslCertificate</link> = "/run/keys/ssl_cert";
195 <link linkend="opt-services.keycloak.sslCertificateKey">sslCertificateKey</link> = "/run/keys/ssl_key";
215 <link linkend="opt-services.keycloak.sslCertificateKey">sslCertificateKey</link> = "/run/keys/ssl_key";
196 <link linkend="opt-services.keycloak.database.passwordFile">database.passwordFile</link> = "/run/keys/db_password";
216 <link linkend="opt-services.keycloak.database.passwordFile">database.passwordFile</link> = "/run/keys/db_password";
nixos/modules/services/web-apps/nextcloud.nix−75
@@ -251,23 +251,6 @@ in {
256− createLocally = mkOption {
260− Create the database and database user locally. Only available for
262− Note that this option will use the latest version of MariaDB which
263− is not officially supported by Nextcloud. As for now a workaround
264− is used to also support MariaDB version >= 10.6.
271 config = {
254 config = {
272 dbtype = mkOption {
255 dbtype = mkOption {
273 type = types.enum [ "sqlite" "pgsql" "mysql" ];
256 type = types.enum [ "sqlite" "pgsql" "mysql" ];
@@ -522,29 +505,6 @@ in {
522 The nextcloud-occ program preconfigured to target this Nextcloud instance.
505 The nextcloud-occ program preconfigured to target this Nextcloud instance.
525− globalProfiles = mkEnableOption "global profiles" // {
527− Makes user-profiles globally available under <literal>nextcloud.tld/u/user.name</literal>.
528− Even though it's enabled by default in Nextcloud, it must be explicitly enabled
529− here because it has the side-effect that personal information is even accessible to
530− unauthenticated users by default.
532− By default, the following properties are set to <quote>Show to everyone</quote>
533− if this flag is enabled:
535− <listitem><para>About</para></listitem>
536− <listitem><para>Full name</para></listitem>
537− <listitem><para>Headline</para></listitem>
538− <listitem><para>Organisation</para></listitem>
539− <listitem><para>Profile picture</para></listitem>
540− <listitem><para>Role</para></listitem>
541− <listitem><para>Twitter</para></listitem>
542− <listitem><para>Website</para></listitem>
545− Only has an effect in Nextcloud 23 and later.
549 nginx.recommendedHttpHeaders = mkOption {
509 nginx.recommendedHttpHeaders = mkOption {
550 type = types.bool;
510 type = types.bool;
@@ -623,12 +583,6 @@ in {
623 else pkgs.php80;
583 else pkgs.php80;
627− { assertion = cfg.database.createLocally -> cfg.config.dbtype == "mysql";
628− message = ''services.nextcloud.config.dbtype must be set to mysql if services.nextcloud.database.createLocally is set to true.'';
632 { systemd.timers.nextcloud-cron = {
586 { systemd.timers.nextcloud-cron = {
633 wantedBy = [ "timers.target" ];
587 wantedBy = [ "timers.target" ];
634 timerConfig.OnBootSec = "5m";
588 timerConfig.OnBootSec = "5m";
@@ -673,8 +627,6 @@ in {
673 if x == null then "false"
627 if x == null then "false"
674 else boolToString x;
628 else boolToString x;
676− nextcloudGreaterOrEqualThan = req: versionAtLeast cfg.package.version req;
678 overrideConfig = pkgs.writeText "nextcloud-config.php" ''
630 overrideConfig = pkgs.writeText "nextcloud-config.php" ''
680 ${optionalString requiresReadSecretFunction ''
632 ${optionalString requiresReadSecretFunction ''
@@ -714,7 +666,6 @@ in {
714 'trusted_domains' => ${writePhpArrary ([ cfg.hostName ] ++ c.extraTrustedDomains)},
666 'trusted_domains' => ${writePhpArrary ([ cfg.hostName ] ++ c.extraTrustedDomains)},
715 'trusted_proxies' => ${writePhpArrary (c.trustedProxies)},
667 'trusted_proxies' => ${writePhpArrary (c.trustedProxies)},
716 ${optionalString (c.defaultPhoneRegion != null) "'default_phone_region' => '${c.defaultPhoneRegion}',"}
668 ${optionalString (c.defaultPhoneRegion != null) "'default_phone_region' => '${c.defaultPhoneRegion}',"}
717− ${optionalString (nextcloudGreaterOrEqualThan "23") "'profile.enabled' => ${boolToString cfg.globalProfiles}"}
718 ${objectstoreConfig}
669 ${objectstoreConfig}
@@ -860,32 +811,6 @@ in {
861 environment.systemPackages = [ occ ];
812 environment.systemPackages = [ occ ];
863− services.mysql = lib.mkIf cfg.database.createLocally {
865− package = lib.mkDefault pkgs.mariadb;
866− ensureDatabases = [ cfg.config.dbname ];
868− name = cfg.config.dbuser;
869− ensurePermissions = { "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; };
871− # FIXME(@Ma27) Nextcloud isn't compatible with mariadb 10.6,
872− # this is a workaround.
873− # See https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/22
876− innodb_read_only_compressed = 0;
879− initialScript = pkgs.writeText "mysql-init" ''
880− CREATE USER '${cfg.config.dbname}'@'localhost' IDENTIFIED BY '${builtins.readFile( cfg.config.dbpassFile )}';
881− CREATE DATABASE IF NOT EXISTS ${cfg.config.dbname};
882− GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
883− CREATE TEMPORARY TABLES ON ${cfg.config.dbname}.* TO '${cfg.config.dbuser}'@'localhost'
884− IDENTIFIED BY '${builtins.readFile( cfg.config.dbpassFile )}';
889 services.nginx.enable = mkDefault true;
814 services.nginx.enable = mkDefault true;
891 services.nginx.virtualHosts.${cfg.hostName} = {
816 services.nginx.virtualHosts.${cfg.hostName} = {
nixos/modules/services/web-apps/nifi.nixdeleted−318
@@ -1,318 +0,0 @@
1−{ lib, pkgs, config, options, ... }:
4− cfg = config.services.nifi;
5− opt = options.services.nifi;
8− NIFI_OVERRIDE_NIFIENV = "true";
9− NIFI_HOME = "/var/lib/nifi";
10− NIFI_PID_DIR = "/run/nifi";
11− NIFI_LOG_DIR = "/var/log/nifi";
14− envFile = pkgs.writeText "nifi.env" (lib.concatMapStrings (s: s + "\n") (
15− (lib.concatLists (lib.mapAttrsToList (name: value:
16− if value != null then [
17− "${name}=\"${toString value}\""
21− nifiEnv = pkgs.writeShellScriptBin "nifi-env" ''
30− enable = lib.mkEnableOption "Apache NiFi";
32− package = lib.mkOption {
33− type = lib.types.package;
35− defaultText = lib.literalExpression "pkgs.nifi";
36− description = "Apache NiFi package to use.";
39− user = lib.mkOption {
40− type = lib.types.str;
42− description = "User account where Apache NiFi runs.";
45− group = lib.mkOption {
46− type = lib.types.str;
48− description = "Group account where Apache NiFi runs.";
51− enableHTTPS = lib.mkOption {
52− type = lib.types.bool;
54− description = "Enable HTTPS protocol. Don`t use in production.";
57− listenHost = lib.mkOption {
58− type = lib.types.str;
59− default = if cfg.enableHTTPS then "0.0.0.0" else "127.0.0.1";
60− defaultText = lib.literalExpression ''
61− if config.${opt.enableHTTPS}
65− description = "Bind to an ip for Apache NiFi web-ui.";
68− listenPort = lib.mkOption {
69− type = lib.types.int;
70− default = if cfg.enableHTTPS then 8443 else 8080;
71− defaultText = lib.literalExpression ''
72− if config.${opt.enableHTTPS}
76− description = "Bind to a port for Apache NiFi web-ui.";
79− proxyHost = lib.mkOption {
80− type = lib.types.nullOr lib.types.str;
81− default = if cfg.enableHTTPS then "0.0.0.0" else null;
82− defaultText = lib.literalExpression ''
83− if config.${opt.enableHTTPS}
87− description = "Allow requests from a specific host.";
90− proxyPort = lib.mkOption {
91− type = lib.types.nullOr lib.types.int;
92− default = if cfg.enableHTTPS then 8443 else null;
93− defaultText = lib.literalExpression ''
94− if config.${opt.enableHTTPS}
98− description = "Allow requests from a specific port.";
101− initUser = lib.mkOption {
102− type = lib.types.nullOr lib.types.str;
104− description = "Initial user account for Apache NiFi. Username must be at least 4 characters.";
107− initPasswordFile = lib.mkOption {
108− type = lib.types.nullOr lib.types.path;
110− example = "/run/keys/nifi/password-nifi";
111− description = "nitial password for Apache NiFi. Password must be at least 12 characters.";
114− initJavaHeapSize = lib.mkOption {
115− type = lib.types.nullOr lib.types.int;
118− description = "Set the initial heap size for the JVM in MB.";
121− maxJavaHeapSize = lib.mkOption {
122− type = lib.types.nullOr lib.types.int;
125− description = "Set the initial heap size for the JVM in MB.";
130− config = lib.mkIf cfg.enable {
132− { assertion = cfg.initUser!=null || cfg.initPasswordFile==null;
134− <option>services.nifi.initUser</option> needs to be set if <option>services.nifi.initPasswordFile</option> enabled.
137− { assertion = cfg.initUser==null || cfg.initPasswordFile!=null;
139− <option>services.nifi.initPasswordFile</option> needs to be set if <option>services.nifi.initUser</option> enabled.
142− { assertion = cfg.proxyHost==null || cfg.proxyPort!=null;
144− <option>services.nifi.proxyPort</option> needs to be set if <option>services.nifi.proxyHost</option> value specified.
147− { assertion = cfg.proxyHost!=null || cfg.proxyPort==null;
149− <option>services.nifi.proxyHost</option> needs to be set if <option>services.nifi.proxyPort</option> value specified.
152− { assertion = cfg.initJavaHeapSize==null || cfg.maxJavaHeapSize!=null;
154− <option>services.nifi.maxJavaHeapSize</option> needs to be set if <option>services.nifi.initJavaHeapSize</option> value specified.
157− { assertion = cfg.initJavaHeapSize!=null || cfg.maxJavaHeapSize==null;
159− <option>services.nifi.initJavaHeapSize</option> needs to be set if <option>services.nifi.maxJavaHeapSize</option> value specified.
164− warnings = lib.optional (cfg.enableHTTPS==false) ''
165− Please do not disable HTTPS mode in production. In this mode, access to the nifi is opened without authentication.
168− systemd.tmpfiles.rules = [
169− "d '/var/lib/nifi/conf' 0750 ${cfg.user} ${cfg.group}"
170− "L+ '/var/lib/nifi/lib' - - - - ${cfg.package}/lib"
174− systemd.services.nifi = {
175− description = "Apache NiFi";
176− after = [ "network.target" ];
177− wantedBy = [ "multi-user.target" ];
180− path = [ pkgs.gawk ];
184− PIDFile = "/run/nifi/nifi.pid";
185− ExecStartPre = pkgs.writeScript "nifi-pre-start.sh" ''
188− test -f '/var/lib/nifi/conf/authorizers.xml' || (cp '${cfg.package}/share/nifi/conf/authorizers.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/authorizers.xml')
189− test -f '/var/lib/nifi/conf/bootstrap.conf' || (cp '${cfg.package}/share/nifi/conf/bootstrap.conf' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/bootstrap.conf')
190− test -f '/var/lib/nifi/conf/bootstrap-hashicorp-vault.conf' || (cp '${cfg.package}/share/nifi/conf/bootstrap-hashicorp-vault.conf' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/bootstrap-hashicorp-vault.conf')
191− test -f '/var/lib/nifi/conf/bootstrap-notification-services.xml' || (cp '${cfg.package}/share/nifi/conf/bootstrap-notification-services.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/bootstrap-notification-services.xml')
192− test -f '/var/lib/nifi/conf/logback.xml' || (cp '${cfg.package}/share/nifi/conf/logback.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/logback.xml')
193− test -f '/var/lib/nifi/conf/login-identity-providers.xml' || (cp '${cfg.package}/share/nifi/conf/login-identity-providers.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/login-identity-providers.xml')
194− test -f '/var/lib/nifi/conf/nifi.properties' || (cp '${cfg.package}/share/nifi/conf/nifi.properties' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/nifi.properties')
195− test -f '/var/lib/nifi/conf/stateless-logback.xml' || (cp '${cfg.package}/share/nifi/conf/stateless-logback.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/stateless-logback.xml')
196− test -f '/var/lib/nifi/conf/stateless.properties' || (cp '${cfg.package}/share/nifi/conf/stateless.properties' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/stateless.properties')
197− test -f '/var/lib/nifi/conf/state-management.xml' || (cp '${cfg.package}/share/nifi/conf/state-management.xml' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/state-management.xml')
198− test -f '/var/lib/nifi/conf/zookeeper.properties' || (cp '${cfg.package}/share/nifi/conf/zookeeper.properties' '/var/lib/nifi/conf/' && chmod 0640 '/var/lib/nifi/conf/zookeeper.properties')
199− test -d '/var/lib/nifi/docs/html' || (mkdir -p /var/lib/nifi/docs && cp -r '${cfg.package}/share/nifi/docs/html' '/var/lib/nifi/docs/html')
200− ${lib.optionalString ((cfg.initUser != null) && (cfg.initPasswordFile != null)) ''
201− awk -F'[<|>]' '/property name="Username"/ {if ($3!="") f=1} END{exit !f}' /var/lib/nifi/conf/login-identity-providers.xml || ${cfg.package}/bin/nifi.sh set-single-user-credentials ${cfg.initUser} $(cat ${cfg.initPasswordFile})
203− ${lib.optionalString (cfg.enableHTTPS == false) ''
204− sed -i /var/lib/nifi/conf/nifi.properties \
205− -e 's|nifi.remote.input.secure=.*|nifi.remote.input.secure=false|g' \
206− -e 's|nifi.web.http.host=.*|nifi.web.http.host=${cfg.listenHost}|g' \
207− -e 's|nifi.web.http.port=.*|nifi.web.http.port=${(toString cfg.listenPort)}|g' \
208− -e 's|nifi.web.https.host=.*|nifi.web.https.host=|g' \
209− -e 's|nifi.web.https.port=.*|nifi.web.https.port=|g' \
210− -e 's|nifi.security.keystore=.*|nifi.security.keystore=|g' \
211− -e 's|nifi.security.keystoreType=.*|nifi.security.keystoreType=|g' \
212− -e 's|nifi.security.truststore=.*|nifi.security.truststore=|g' \
213− -e 's|nifi.security.truststoreType=.*|nifi.security.truststoreType=|g' \
214− -e '/nifi.security.keystorePasswd/s|^|#|' \
215− -e '/nifi.security.keyPasswd/s|^|#|' \
216− -e '/nifi.security.truststorePasswd/s|^|#|'
218− ${lib.optionalString (cfg.enableHTTPS == true) ''
219− sed -i /var/lib/nifi/conf/nifi.properties \
220− -e 's|nifi.remote.input.secure=.*|nifi.remote.input.secure=true|g' \
221− -e 's|nifi.web.http.host=.*|nifi.web.http.host=|g' \
222− -e 's|nifi.web.http.port=.*|nifi.web.http.port=|g' \
223− -e 's|nifi.web.https.host=.*|nifi.web.https.host=${cfg.listenHost}|g' \
224− -e 's|nifi.web.https.port=.*|nifi.web.https.port=${(toString cfg.listenPort)}|g' \
225− -e 's|nifi.security.keystore=.*|nifi.security.keystore=./conf/keystore.p12|g' \
226− -e 's|nifi.security.keystoreType=.*|nifi.security.keystoreType=PKCS12|g' \
227− -e 's|nifi.security.truststore=.*|nifi.security.truststore=./conf/truststore.p12|g' \
228− -e 's|nifi.security.truststoreType=.*|nifi.security.truststoreType=PKCS12|g' \
229− -e '/nifi.security.keystorePasswd/s|^#\+||' \
230− -e '/nifi.security.keyPasswd/s|^#\+||' \
231− -e '/nifi.security.truststorePasswd/s|^#\+||'
233− ${lib.optionalString ((cfg.enableHTTPS == true) && (cfg.proxyHost != null) && (cfg.proxyPort != null)) ''
234− sed -i /var/lib/nifi/conf/nifi.properties \
235− -e 's|nifi.web.proxy.host=.*|nifi.web.proxy.host=${cfg.proxyHost}:${(toString cfg.proxyPort)}|g'
237− ${lib.optionalString ((cfg.enableHTTPS == false) || (cfg.proxyHost == null) && (cfg.proxyPort == null)) ''
238− sed -i /var/lib/nifi/conf/nifi.properties \
239− -e 's|nifi.web.proxy.host=.*|nifi.web.proxy.host=|g'
241− ${lib.optionalString ((cfg.initJavaHeapSize != null) && (cfg.maxJavaHeapSize != null))''
242− sed -i /var/lib/nifi/conf/bootstrap.conf \
243− -e 's|java.arg.2=.*|java.arg.2=-Xms${(toString cfg.initJavaHeapSize)}m|g' \
244− -e 's|java.arg.3=.*|java.arg.3=-Xmx${(toString cfg.maxJavaHeapSize)}m|g'
246− ${lib.optionalString ((cfg.initJavaHeapSize == null) && (cfg.maxJavaHeapSize == null))''
247− sed -i /var/lib/nifi/conf/bootstrap.conf \
248− -e 's|java.arg.2=.*|java.arg.2=-Xms512m|g' \
249− -e 's|java.arg.3=.*|java.arg.3=-Xmx512m|g'
252− ExecStart = "${cfg.package}/bin/nifi.sh start";
253− ExecStop = "${cfg.package}/bin/nifi.sh stop";
257− # Runtime directory and mode
258− RuntimeDirectory = "nifi";
259− RuntimeDirectoryMode = "0750";
260− # State directory and mode
261− StateDirectory = "nifi";
262− StateDirectoryMode = "0750";
263− # Logs directory and mode
264− LogsDirectory = "nifi";
265− LogsDirectoryMode = "0750";
268− ProtectProc = "invisible";
269− # Access write directories
270− ReadWritePaths = [ cfg.initPasswordFile ];
273− CapabilityBoundingSet = "";
275− NoNewPrivileges = true;
277− ProtectSystem = "strict";
280− PrivateDevices = true;
282− PrivateUsers = true;
283− ProtectHostname = true;
284− ProtectClock = true;
285− ProtectKernelTunables = true;
286− ProtectKernelModules = true;
287− ProtectKernelLogs = true;
288− ProtectControlGroups = true;
289− RestrictAddressFamilies = [ "AF_INET AF_INET6" ];
290− RestrictNamespaces = true;
291− LockPersonality = true;
292− MemoryDenyWriteExecute = false;
293− RestrictRealtime = true;
294− RestrictSUIDSGID = true;
296− PrivateMounts = true;
297− # System Call Filtering
298− SystemCallArchitectures = "native";
299− SystemCallFilter = [ "~@cpu-emulation @debug @keyring @memlock @mount @obsolete @resources @privileged @setuid" "@chown" ];
303− users.users = lib.mkMerge [
304− (lib.mkIf (cfg.user == "nifi") {
307− isSystemUser = true;
311− (lib.attrsets.setAttrByPath [ cfg.user "packages" ] [ cfg.package nifiEnv ])
314− users.groups = lib.optionalAttrs (cfg.group == "nifi") {
nixos/modules/services/web-servers/hydron.nix+1−1
@@ -161,5 +161,5 @@ in with lib; {
161 (mkRenamedOptionModule [ "services" "hydron" "baseDir" ] [ "services" "hydron" "dataDir" ])
161 (mkRenamedOptionModule [ "services" "hydron" "baseDir" ] [ "services" "hydron" "dataDir" ])
164− meta.maintainers = with maintainers; [ Madouura ];
164+ meta.maintainers = with maintainers; [ chiiruno ];
nixos/modules/services/web-servers/nginx/default.nix+11−18
@@ -255,22 +255,20 @@ let
255 else defaultListen;
255 else defaultListen;
257 listenString = { addr, port, ssl, extraParameters ? [], ... }:
257 listenString = { addr, port, ssl, extraParameters ? [], ... }:
258− (if ssl && vhost.http3 then "
259− # UDP listener for **QUIC+HTTP/3
260− listen ${addr}:${toString port} http3 "
258+ "listen ${addr}:${toString port} "
261− + optionalString vhost.default "default_server "
262− + optionalString vhost.reuseport "reuseport "
263− + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
267− listen ${addr}:${toString port} "
268− + optionalString (ssl && vhost.http2) "http2 "
269 + optionalString ssl "ssl "
259 + optionalString ssl "ssl "
260+ + optionalString (ssl && vhost.http2) "http2 "
270 + optionalString vhost.default "default_server "
261 + optionalString vhost.default "default_server "
271− + optionalString vhost.reuseport "reuseport "
272 + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
262 + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
264+ + (if ssl && vhost.http3 then ''
265+ # UDP listener for **QUIC+HTTP/3
266+ listen ${addr}:${toString port} http3 reuseport;
267+ # Advertise that HTTP/3 is available
268+ add_header Alt-Svc 'h3=":443"';
269+ # Sent when QUIC was used
270+ add_header QUIC-Status $quic;
275 redirectListen = filter (x: !x.ssl) defaultListen;
273 redirectListen = filter (x: !x.ssl) defaultListen;
@@ -323,11 +321,6 @@ let
323 ssl_conf_command Options KTLS;
321 ssl_conf_command Options KTLS;
326− ${optionalString (hasSSL && vhost.http3) ''
327− # Advertise that HTTP/3 is available
328− add_header Alt-Svc 'h3=":443"; ma=86400' always;
331 ${mkBasicAuth vhostName vhost}
324 ${mkBasicAuth vhostName vhost}
333 ${mkLocations vhost.locations}
326 ${mkLocations vhost.locations}
nixos/modules/services/web-servers/nginx/vhost-options.nix+3−12
@@ -20,7 +20,7 @@ with lib;
20 serverAliases = mkOption {
20 serverAliases = mkOption {
21 type = types.listOf types.str;
21 type = types.listOf types.str;
22 default = [];
22 default = [];
23− example = [ "www.example.org" "example.org" ];
23+ example = ["www.example.org" "example.org"];
24 description = ''
24 description = ''
25 Additional names of virtual hosts served by this virtual host configuration.
25 Additional names of virtual hosts served by this virtual host configuration.
@@ -31,11 +31,11 @@ with lib;
31 addr = mkOption { type = str; description = "IP address."; };
31 addr = mkOption { type = str; description = "IP address."; };
32 port = mkOption { type = int; description = "Port number."; default = 80; };
32 port = mkOption { type = int; description = "Port number."; default = 80; };
33 ssl = mkOption { type = bool; description = "Enable SSL."; default = false; };
33 ssl = mkOption { type = bool; description = "Enable SSL."; default = false; };
34− extraParameters = mkOption { type = listOf str; description = "Extra parameters of this listen directive."; default = []; example = [ "backlog=1024" "deferred" ]; };
34+ extraParameters = mkOption { type = listOf str; description = "Extra parameters of this listen directive."; default = []; example = [ "reuseport" "deferred" ]; };
36 default = [];
36 default = [];
37 example = [
37 example = [
38− { addr = "195.154.1.1"; port = 443; ssl = true; }
38+ { addr = "195.154.1.1"; port = 443; ssl = true;}
39 { addr = "192.154.1.1"; port = 80; }
39 { addr = "192.154.1.1"; port = 80; }
41 description = ''
41 description = ''
@@ -207,15 +207,6 @@ with lib;
210− reuseport = mkOption {
214− Create an individual listening socket .
215− It is required to specify only once on one of the hosts.
219 root = mkOption {
210 root = mkOption {
220 type = types.nullOr types.path;
211 type = types.nullOr types.path;
221 default = null;
212 default = null;
nixos/modules/services/x11/desktop-managers/cinnamon.nix+3−3
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
@@ -196,7 +196,7 @@ in
196 programs.evince.enable = mkDefault true;
196 programs.evince.enable = mkDefault true;
197 programs.file-roller.enable = mkDefault true;
197 programs.file-roller.enable = mkDefault true;
199− environment.systemPackages = with pkgs // pkgs.gnome // pkgs.cinnamon; utils.removePackagesByName [
199+ environment.systemPackages = (with pkgs // pkgs.gnome // pkgs.cinnamon; pkgs.gnome.removePackagesByName [
200 # cinnamon team apps
200 # cinnamon team apps
202 blueberry
202 blueberry
@@ -212,7 +212,7 @@ in
212 # external apps shipped with linux-mint
212 # external apps shipped with linux-mint
214 gnome-calculator
214 gnome-calculator
215− ] config.environment.cinnamon.excludePackages;
215+ ] config.environment.cinnamon.excludePackages);
nixos/modules/services/x11/desktop-managers/enlightenment.nix−5
@@ -16,10 +16,6 @@ let
20− maintainers = teams.enlightenment.members;
23 imports = [
19 imports = [
24 (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
20 (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
@@ -96,7 +92,6 @@ in
97 services.udisks2.enable = true;
93 services.udisks2.enable = true;
98 services.upower.enable = config.powerManagement.enable;
94 services.upower.enable = config.powerManagement.enable;
99− services.xserver.libinput.enable = mkDefault true;
101 services.dbus.packages = [ e.efl ];
96 services.dbus.packages = [ e.efl ];
nixos/modules/services/x11/desktop-managers/gnome.nix+10−33
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
@@ -22,9 +22,6 @@ let
22 favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
22 favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
25− nixos-background-ligtht = pkgs.nixos-artwork.wallpapers.simple-blue;
26− nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
28 nixos-gsettings-desktop-schemas = let
25 nixos-gsettings-desktop-schemas = let
29 defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
26 defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
@@ -45,11 +42,10 @@ let
45 chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
42 chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
46 cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
43 cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
47 [org.gnome.desktop.background]
44 [org.gnome.desktop.background]
48− picture-uri='file://${nixos-background-ligtht.gnomeFilePath}'
45+ picture-uri='file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}'
49− picture-uri-dark='file://${nixos-background-dark.gnomeFilePath}'
51 [org.gnome.desktop.screensaver]
47 [org.gnome.desktop.screensaver]
52− picture-uri='file://${nixos-background-dark.gnomeFilePath}'
48+ picture-uri='file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom.gnomeFilePath}'
54 ${cfg.favoriteAppsOverride}
50 ${cfg.favoriteAppsOverride}
@@ -59,26 +55,6 @@ let
59 ${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
55 ${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
62− nixos-background-info = pkgs.writeTextFile rec {
63− name = "nixos-background-info";
65− <?xml version="1.0"?>
66− <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
68− <wallpaper deleted="false">
70− <filename>${nixos-background-ligtht.gnomeFilePath}</filename>
71− <filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
72− <options>zoom</options>
73− <shade_type>solid</shade_type>
74− <pcolor>#3a4ba0</pcolor>
75− <scolor>#2f302f</scolor>
79− destination = "/share/gnome-background-properties/nixos.xml";
82 flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
58 flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
83 flashbackWms = optional cfg.flashback.enableMetacity {
59 flashbackWms = optional cfg.flashback.enableMetacity {
84 wmName = "metacity";
60 wmName = "metacity";
@@ -454,7 +430,6 @@ in
454 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-shell.bst
430 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-shell.bst
455 environment.systemPackages = with pkgs.gnome; [
431 environment.systemPackages = with pkgs.gnome; [
456 adwaita-icon-theme
432 adwaita-icon-theme
457− nixos-background-info
458 gnome-backgrounds
433 gnome-backgrounds
459 gnome-bluetooth
434 gnome-bluetooth
460 gnome-color-manager
435 gnome-color-manager
@@ -463,6 +438,8 @@ in
463 gnome-shell-extensions
438 gnome-shell-extensions
464 gnome-themes-extra
439 gnome-themes-extra
465 pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
440 pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
441+ pkgs.nixos-artwork.wallpapers.simple-dark-gray
442+ pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom
466 pkgs.gnome-user-docs
443 pkgs.gnome-user-docs
467 pkgs.orca
444 pkgs.orca
468 pkgs.glib # for gsettings
445 pkgs.glib # for gsettings
@@ -478,7 +455,7 @@ in
478 (mkIf serviceCfg.core-utilities.enable {
455 (mkIf serviceCfg.core-utilities.enable {
479 environment.systemPackages =
456 environment.systemPackages =
480 with pkgs.gnome;
457 with pkgs.gnome;
481− utils.removePackagesByName
458+ removePackagesByName
@@ -538,7 +515,7 @@ in
540 (mkIf serviceCfg.games.enable {
517 (mkIf serviceCfg.games.enable {
541− environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
518+ environment.systemPackages = (with pkgs.gnome; removePackagesByName [
542 aisleriot
519 aisleriot
544 five-or-more
521 five-or-more
@@ -559,12 +536,12 @@ in
559 quadrapassel
536 quadrapassel
560 swell-foop
537 swell-foop
562− ] config.environment.gnome.excludePackages;
539+ ] config.environment.gnome.excludePackages);
565 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
542 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
566 (mkIf serviceCfg.core-developer-tools.enable {
543 (mkIf serviceCfg.core-developer-tools.enable {
567− environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
544+ environment.systemPackages = (with pkgs.gnome; removePackagesByName [
568 dconf-editor
545 dconf-editor
570 pkgs.gnome-builder
547 pkgs.gnome-builder
@@ -573,7 +550,7 @@ in
573 # in default configurations.
550 # in default configurations.
574 # https://github.com/NixOS/nixpkgs/issues/60908
551 # https://github.com/NixOS/nixpkgs/issues/60908
575 /* gnome-boxes */
552 /* gnome-boxes */
576− ] config.environment.gnome.excludePackages;
553+ ] config.environment.gnome.excludePackages);
578 services.sysprof.enable = notExcluded pkgs.sysprof;
555 services.sysprof.enable = notExcluded pkgs.sysprof;
nixos/modules/services/x11/desktop-managers/lumina.nix−4
@@ -10,10 +10,6 @@ let
14− maintainers = teams.lumina.members;
17 options = {
13 options = {
19 services.xserver.desktopManager.lumina.enable = mkOption {
15 services.xserver.desktopManager.lumina.enable = mkOption {
nixos/modules/services/x11/desktop-managers/lxqt.nix+2−11
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
@@ -9,10 +9,6 @@ let
13− maintainers = teams.lxqt.members;
16 options = {
12 options = {
18 services.xserver.desktopManager.lxqt.enable = mkOption {
14 services.xserver.desktopManager.lxqt.enable = mkOption {
@@ -55,7 +51,7 @@ in
55 environment.systemPackages =
51 environment.systemPackages =
56 pkgs.lxqt.preRequisitePackages ++
52 pkgs.lxqt.preRequisitePackages ++
57 pkgs.lxqt.corePackages ++
53 pkgs.lxqt.corePackages ++
58− (utils.removePackagesByName
54+ (pkgs.gnome.removePackagesByName
59 pkgs.lxqt.optionalPackages
55 pkgs.lxqt.optionalPackages
60 config.environment.lxqt.excludePackages);
56 config.environment.lxqt.excludePackages);
@@ -66,11 +62,6 @@ in
66 services.gvfs.enable = true;
62 services.gvfs.enable = true;
68 services.upower.enable = config.powerManagement.enable;
64 services.upower.enable = config.powerManagement.enable;
70− services.xserver.libinput.enable = mkDefault true;
72− xdg.portal.enable = true;
73− xdg.portal.extraPortals = [ pkgs.lxqt.xdg-desktop-portal-lxqt ];
nixos/modules/services/x11/desktop-managers/mate.nix+32−5
@@ -1,9 +1,20 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
8+ if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
9+ export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
12+ if [ -d "${p}/lib/girepository-1.0" ]; then
13+ export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
14+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
7 xcfg = config.services.xserver;
18 xcfg = config.services.xserver;
8 cfg = xcfg.desktopManager.mate;
19 cfg = xcfg.desktopManager.mate;
@@ -37,8 +48,24 @@ in
37 pkgs.mate.mate-session-manager
48 pkgs.mate.mate-session-manager
51+ services.xserver.displayManager.sessionCommands = ''
52+ if test "$XDG_CURRENT_DESKTOP" = "MATE"; then
53+ export XDG_MENU_PREFIX=mate-
40− # Let caja find extensions
55+ # Let caja find extensions
41− environment.sessionVariables.CAJA_EXTENSION_DIRS = [ "${config.system.path}/lib/caja/extensions-2.0" ];
56+ export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0
58+ # Let caja extensions find gsettings schemas
59+ ${concatMapStrings (p: ''
60+ if [ -d "${p}/lib/caja/extensions-2.0" ]; then
63+ '') config.environment.systemPackages}
65+ # Add mate-control-center paths to some XDG variables because its schemas are needed by mate-settings-daemon, and mate-settings-daemon is a dependency for mate-control-center (that is, they are mutually recursive)
66+ ${addToXDGDirs pkgs.mate.mate-control-center}
43 # Let mate-panel find applets
70 # Let mate-panel find applets
44 environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets";
71 environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets";
@@ -47,7 +74,7 @@ in
47 # Debugging
74 # Debugging
48 environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
75 environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
50− environment.systemPackages = utils.removePackagesByName
77+ environment.systemPackages = pkgs.gnome.removePackagesByName
51 (pkgs.mate.basePackages ++
78 (pkgs.mate.basePackages ++
52 pkgs.mate.extraPackages ++
79 pkgs.mate.extraPackages ++
@@ -56,6 +83,7 @@ in
56 pkgs.gtk3.out
83 pkgs.gtk3.out
57 pkgs.shared-mime-info
84 pkgs.shared-mime-info
58 pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
85 pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
86+ pkgs.mate.mate-settings-daemon
59 pkgs.yelp # for 'Contents' in 'Help' menus
87 pkgs.yelp # for 'Contents' in 'Help' menus
61 config.environment.mate.excludePackages;
89 config.environment.mate.excludePackages;
@@ -73,7 +101,6 @@ in
73 services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
101 services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
74 services.gvfs.enable = true;
102 services.gvfs.enable = true;
75 services.upower.enable = config.powerManagement.enable;
103 services.upower.enable = config.powerManagement.enable;
76− services.xserver.libinput.enable = mkDefault true;
78 security.pam.services.mate-screensaver.unixAuth = true;
105 security.pam.services.mate-screensaver.unixAuth = true;
nixos/modules/services/x11/desktop-managers/none.nix+5−44
@@ -1,46 +1,7 @@
1−{ config, lib, pkgs, ... }:
4− runXdgAutostart = config.services.xserver.desktopManager.runXdgAutostartIfNone;
8− services.xserver.desktopManager.runXdgAutostartIfNone = mkOption {
2+ services.xserver.desktopManager.session =
12− Whether to run XDG autostart files for sessions without a desktop manager
13− (with only a window manager), these sessions usually don't handle XDG
14− autostart files by default.
16− Some services like <option>i18n.inputMethod</option> and
17− <option>service.earlyoom</option> use XDG autostart files to start.
18− If this option is not set to <literal>true</literal> and you are using
19− a window manager without a desktop manager, you need to manually start
20− them or running <package>dex</package> somewhere.
27− services.xserver.desktopManager.session = [
29− name = "none";
3+ [ { name = "none";
30− start = optionalString runXdgAutostart ''
4+ start = "";
31− /run/current-system/systemd/bin/systemctl --user start xdg-autostart-if-no-desktop-manager.target
36− (mkIf runXdgAutostart {
37− systemd.user.targets.xdg-autostart-if-no-desktop-manager = {
38− description = "Run XDG autostart files";
39− # From `plasma-workspace`, `share/systemd/user/plasma-workspace@.target`.
40− requires = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
41− before = [ "xdg-desktop-autostart.target" "graphical-session.target" ];
42− bindsTo = [ "graphical-session.target" ];
nixos/modules/services/x11/desktop-managers/pantheon.nix+3−3
@@ -1,4 +1,4 @@
1−{ config, lib, utils, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
@@ -214,7 +214,7 @@ in
214 elementary-settings-daemon
214 elementary-settings-daemon
215 pantheon-agent-geoclue2
215 pantheon-agent-geoclue2
216 pantheon-agent-polkit
216 pantheon-agent-polkit
217− ]) ++ (utils.removePackagesByName [
217+ ]) ++ (gnome.removePackagesByName [
218 gnome.gnome-font-viewer
218 gnome.gnome-font-viewer
219 gnome.gnome-settings-daemon338
219 gnome.gnome-settings-daemon338
220 ] config.environment.pantheon.excludePackages);
220 ] config.environment.pantheon.excludePackages);
@@ -272,7 +272,7 @@ in
274 (mkIf serviceCfg.apps.enable {
274 (mkIf serviceCfg.apps.enable {
275− environment.systemPackages = with pkgs.pantheon; utils.removePackagesByName ([
275+ environment.systemPackages = with pkgs.pantheon; pkgs.gnome.removePackagesByName ([
276 elementary-calculator
276 elementary-calculator
277 elementary-calendar
277 elementary-calendar
278 elementary-camera
278 elementary-camera
nixos/modules/services/x11/desktop-managers/pantheon.xml+3−3
@@ -3,7 +3,7 @@
3 xml:id="chap-pantheon">
3 xml:id="chap-pantheon">
4 <title>Pantheon Desktop</title>
4 <title>Pantheon Desktop</title>
6− Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK and Granite.
6+ Pantheon is the desktop environment created for the elementary OS distribution. It is written from scratch in Vala, utilizing GNOME technologies with GTK 3 and Granite.
8 <section xml:id="sec-pantheon-enable">
8 <section xml:id="sec-pantheon-enable">
9 <title>Enabling Pantheon</title>
9 <title>Enabling Pantheon</title>
@@ -89,9 +89,9 @@ switchboard-with-plugs.override {
90 </listitem>
90 </listitem>
91 </varlistentry>
91 </varlistentry>
92− <varlistentry xml:id="sec-pantheon-faq-gnome-and-pantheon">
92+ <varlistentry xml:id="sec-pantheon-faq-gnome3-and-pantheon">
94− I cannot enable both GNOME and Pantheon.
94+ I cannot enable both GNOME 3 and Pantheon.
96 <listitem>
96 <listitem>
nixos/modules/services/x11/desktop-managers/xfce.nix+1−8
@@ -66,12 +66,6 @@ in
66 default = true;
66 default = true;
67 description = "Enable the XFWM (default) window manager.";
67 description = "Enable the XFWM (default) window manager.";
70− enableScreensaver = mkOption {
73− description = "Enable the XFCE screensaver.";
@@ -128,7 +122,7 @@ in
128 ] ++ optionals (!cfg.noDesktop) [
122 ] ++ optionals (!cfg.noDesktop) [
129 xfce4-panel
123 xfce4-panel
130 xfdesktop
124 xfdesktop
131− ] ++ optional cfg.enableScreensaver xfce4-screensaver;
125+ ];
133 environment.pathsToLink = [
127 environment.pathsToLink = [
134 "/share/xfce4"
128 "/share/xfce4"
@@ -174,6 +168,5 @@ in
174 xfce4-notifyd
168 xfce4-notifyd
177− security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver;
nixos/modules/services/x11/window-managers/qtile.nix+4−11
@@ -7,26 +7,19 @@ let
10− options.services.xserver.windowManager.qtile = {
11+ services.xserver.windowManager.qtile.enable = mkEnableOption "qtile";
11− enable = mkEnableOption "qtile";
13− package = mkPackageOption pkgs "qtile" { };
16 config = mkIf cfg.enable {
14 config = mkIf cfg.enable {
17 services.xserver.windowManager.session = [{
15 services.xserver.windowManager.session = [{
18 name = "qtile";
16 name = "qtile";
19 start = ''
17 start = ''
20− ${cfg.package}/bin/qtile start &
18+ ${pkgs.qtile}/bin/qtile start &
21 waitPID=$!
19 waitPID=$!
25− environment.systemPackages = [
23+ environment.systemPackages = [ pkgs.qtile ];
26− # pkgs.qtile is currently a buildenv of qtile and its dependencies.
27− # For userland commands, we want the underlying package so that
28− # packages such as python don't bleed into userland and overwrite intended behavior.
29− (cfg.package.unwrapped or cfg.package)
nixos/modules/services/x11/xserver.nix+3−10
@@ -1,4 +1,4 @@
1−{ config, lib, utils, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
@@ -181,13 +181,6 @@ in
184− excludePackages = mkOption {
186− example = literalExpression "[ pkgs.xterm ]";
187− type = types.listOf types.package;
188− description = "Which X11 packages to exclude from the default environment";
191 exportConfiguration = mkOption {
184 exportConfiguration = mkOption {
192 type = types.bool;
185 type = types.bool;
193 default = false;
186 default = false;
@@ -662,7 +655,7 @@ in
662 ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath;
655 ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath;
665− environment.systemPackages = utils.removePackagesByName
658+ environment.systemPackages =
666 [ xorg.xorgserver.out
659 [ xorg.xorgserver.out
667 xorg.xrandr
660 xorg.xrandr
668 xorg.xrdb
661 xorg.xrdb
@@ -678,7 +671,7 @@ in
678 pkgs.xdg-utils
671 pkgs.xdg-utils
679 xorg.xf86inputevdev.out # get evdev.4 man page
672 xorg.xf86inputevdev.out # get evdev.4 man page
680 pkgs.nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more
673 pkgs.nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more
681− ] config.services.xserver.excludePackages
674+ ]
682 ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh;
675 ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh;
684 environment.pathsToLink = [ "/share/X11" ];
677 environment.pathsToLink = [ "/share/X11" ];
nixos/modules/system/activation/switch-to-configuration.pl−12
@@ -1,17 +1,5 @@
1#! @perl@/bin/perl
1#! @perl@/bin/perl
3−# Issue #166838 uncovered a situation in which a configuration not suitable
4−# for the target architecture caused a cryptic error message instead of
5−# a clean failure. Due to this mismatch, the perl interpreter in the shebang
6−# line wasn't able to be executed, causing this script to be misinterpreted
9−# Let's detect this situation to give a more meaningful error
10−# message. The following two lines are carefully written to be both valid Perl
12−printf "Perl script erroneously interpreted as shell script,\ndoes target platform match nixpkgs.crossSystem platform?\n" && exit 1
15use strict;
3use strict;
16use warnings;
4use warnings;
17use Config::IniFiles;
5use Config::IniFiles;
nixos/modules/system/activation/top-level.nix+5−12
@@ -55,18 +55,11 @@ let
55 substituteInPlace $out/dry-activate --subst-var out
55 substituteInPlace $out/dry-activate --subst-var out
56 chmod u+x $out/activate $out/dry-activate
56 chmod u+x $out/activate $out/dry-activate
57 unset activationScript dryActivationScript
57 unset activationScript dryActivationScript
58+ ${pkgs.stdenv.shellDryRun} $out/activate
59+ ${pkgs.stdenv.shellDryRun} $out/dry-activate
59− ${if config.boot.initrd.systemd.enable then ''
60− cp ${config.system.build.bootStage2} $out/prepare-root
61+ cp ${config.system.build.bootStage2} $out/init
61− substituteInPlace $out/prepare-root --subst-var-by systemConfig $out
62− # This must not be a symlink or the abs_path of the grub builder for the tests
63− # will resolve the symlink and we end up with a path that doesn't point to a
65− cp "$systemd/lib/systemd/systemd" $out/init
67− cp ${config.system.build.bootStage2} $out/init
68− substituteInPlace $out/init --subst-var-by systemConfig $out
62+ substituteInPlace $out/init --subst-var-by systemConfig $out
71 ln -s ${config.system.build.etc}/etc $out/etc
64 ln -s ${config.system.build.etc}/etc $out/etc
72 ln -s ${config.system.path} $out/sw
65 ln -s ${config.system.path} $out/sw
@@ -163,7 +156,7 @@ in
164 specialisation = mkOption {
157 specialisation = mkOption {
165 default = {};
158 default = {};
166− example = lib.literalExpression "{ fewJobsManyCores.configuration = { nix.settings = { core = 0; max-jobs = 1; }; }; }";
159+ example = lib.literalExpression "{ fewJobsManyCores.configuration = { nix.settings = { core = 0; max-jobs = 1; }; }";
167 description = ''
160 description = ''
168 Additional configurations to build. If
161 Additional configurations to build. If
169 <literal>inheritParentConfig</literal> is true, the system
162 <literal>inheritParentConfig</literal> is true, the system
nixos/modules/system/boot/loader/grub/grub.nix−26
@@ -44,8 +44,6 @@ let
44 { splashImage = f cfg.splashImage;
44 { splashImage = f cfg.splashImage;
45 splashMode = f cfg.splashMode;
45 splashMode = f cfg.splashMode;
46 backgroundColor = f cfg.backgroundColor;
46 backgroundColor = f cfg.backgroundColor;
47− entryOptions = f cfg.entryOptions;
48− subEntryOptions = f cfg.subEntryOptions;
49 grub = f grub;
47 grub = f grub;
50 grubTarget = f (grub.grubTarget or "");
48 grubTarget = f (grub.grubTarget or "");
51 shell = "${pkgs.runtimeShell}";
49 shell = "${pkgs.runtimeShell}";
@@ -450,30 +448,6 @@ in
453− entryOptions = mkOption {
454− default = "--class nixos --unrestricted";
455− type = types.nullOr types.str;
457− Options applied to the primary NixOS menu entry.
460− This options has no effect for GRUB 1.
465− subEntryOptions = mkOption {
466− default = "--class nixos";
467− type = types.nullOr types.str;
469− Options applied to the secondary NixOS submenu entry.
472− This options has no effect for GRUB 1.
477 theme = mkOption {
451 theme = mkOption {
478 type = types.nullOr types.path;
452 type = types.nullOr types.path;
479 example = literalExpression "pkgs.nixos-grub2-theme";
453 example = literalExpression "pkgs.nixos-grub2-theme";
nixos/modules/system/boot/loader/grub/install-grub.pl+3−5
@@ -64,8 +64,6 @@ my $extraEntries = get("extraEntries");
64my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
64my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
65my $splashImage = get("splashImage");
65my $splashImage = get("splashImage");
66my $splashMode = get("splashMode");
66my $splashMode = get("splashMode");
67−my $entryOptions = get("entryOptions");
68−my $subEntryOptions = get("subEntryOptions");
69my $backgroundColor = get("backgroundColor");
67my $backgroundColor = get("backgroundColor");
70my $configurationLimit = int(get("configurationLimit"));
68my $configurationLimit = int(get("configurationLimit"));
71my $copyKernels = get("copyKernels") eq "true";
69my $copyKernels = get("copyKernels") eq "true";
@@ -511,7 +509,7 @@ sub addEntry {
511# Add default entries.
509# Add default entries.
512$conf .= "$extraEntries\n" if $extraEntriesBeforeNixOS;
510$conf .= "$extraEntries\n" if $extraEntriesBeforeNixOS;
514−addEntry("NixOS - Default", $defaultConfig, $entryOptions);
512+addEntry("NixOS - Default", $defaultConfig, "--unrestricted");
516$conf .= "$extraEntries\n" unless $extraEntriesBeforeNixOS;
514$conf .= "$extraEntries\n" unless $extraEntriesBeforeNixOS;
@@ -548,7 +546,7 @@ sub addProfile {
548 my ($profile, $description) = @_;
546 my ($profile, $description) = @_;
550 # Add entries for all generations of this profile.
548 # Add entries for all generations of this profile.
551− $conf .= "submenu \"$description\" --class submenu {\n" if $grubVersion == 2;
549+ $conf .= "submenu \"$description\" {\n" if $grubVersion == 2;
553 sub nrFromGen { my ($x) = @_; $x =~ /\/\w+-(\d+)-link/; return $1; }
551 sub nrFromGen { my ($x) = @_; $x =~ /\/\w+-(\d+)-link/; return $1; }
@@ -568,7 +566,7 @@ sub addProfile {
568 -e "$link/nixos-version"
566 -e "$link/nixos-version"
569 ? readFile("$link/nixos-version")
567 ? readFile("$link/nixos-version")
570 : basename((glob(dirname(Cwd::abs_path("$link/kernel")) . "/lib/modules/*"))[0]);
568 : basename((glob(dirname(Cwd::abs_path("$link/kernel")) . "/lib/modules/*"))[0]);
571− addEntry("NixOS - Configuration " . nrFromGen($link) . " ($date - $version)", $link, $subEntryOptions);
569+ addEntry("NixOS - Configuration " . nrFromGen($link) . " ($date - $version)", $link);
574 $conf .= "}\n" if $grubVersion == 2;
572 $conf .= "}\n" if $grubVersion == 2;
nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+1−1
@@ -33,7 +33,7 @@ let
33 netbootxyz = if cfg.netbootxyz.enable then pkgs.netbootxyz-efi else "";
33 netbootxyz = if cfg.netbootxyz.enable then pkgs.netbootxyz-efi else "";
35 copyExtraFiles = pkgs.writeShellScript "copy-extra-files" ''
35 copyExtraFiles = pkgs.writeShellScript "copy-extra-files" ''
36− empty_file=$(${pkgs.coreutils}/bin/mktemp)
36+ empty_file=$(mktemp)
38 ${concatStrings (mapAttrsToList (n: v: ''
38 ${concatStrings (mapAttrsToList (n: v: ''
39 ${pkgs.coreutils}/bin/install -Dp "${v}" "${efi.efiSysMountPoint}/"${escapeShellArg n}
39 ${pkgs.coreutils}/bin/install -Dp "${v}" "${efi.efiSysMountPoint}/"${escapeShellArg n}
nixos/modules/system/boot/luksroot.nix+6−73
@@ -1,11 +1,10 @@
1−{ config, options, lib, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
6 luks = config.boot.initrd.luks;
6 luks = config.boot.initrd.luks;
7 kernelPackages = config.boot.kernelPackages;
7 kernelPackages = config.boot.kernelPackages;
8− defaultPrio = (mkOptionDefault {}).priority;
10 commonFunctions = ''
9 commonFunctions = ''
@@ -475,16 +474,6 @@ let
475 preLVM = filterAttrs (n: v: v.preLVM) luks.devices;
474 preLVM = filterAttrs (n: v: v.preLVM) luks.devices;
476 postLVM = filterAttrs (n: v: !v.preLVM) luks.devices;
475 postLVM = filterAttrs (n: v: !v.preLVM) luks.devices;
478− stage1Crypttab = pkgs.writeText "initrd-crypttab" (lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: let
479− opts = v.crypttabExtraOpts
480− ++ optional v.allowDiscards "discard"
481− ++ optionals v.bypassWorkqueues [ "no-read-workqueue" "no-write-workqueue" ]
482− ++ optional (v.header != null) "header=${v.header}"
483− ++ optional (v.keyFileOffset != null) "keyfile-offset=${v.keyFileOffset}"
484− ++ optional (v.keyFileSize != null) "keyfile-size=${v.keyFileSize}"
486− in "${n} ${v.device} ${if v.keyFile == null then "-" else v.keyFile} ${lib.concatStringsSep "," opts}") luks.devices));
490 imports = [
479 imports = [
@@ -813,18 +802,6 @@ in
813 Commands that should be run right after we have mounted our LUKS device.
802 Commands that should be run right after we have mounted our LUKS device.
817− crypttabExtraOpts = mkOption {
818− type = with types; listOf singleLineStr;
820− example = [ "_netdev" ];
823− Only used with systemd stage 1.
825− Extra options to append to the last column of the generated crypttab file.
@@ -876,31 +853,6 @@ in
876 -> versionAtLeast kernelPackages.kernel.version "5.9";
853 -> versionAtLeast kernelPackages.kernel.version "5.9";
877 message = "boot.initrd.luks.devices.<name>.bypassWorkqueues is not supported for kernels older than 5.9";
854 message = "boot.initrd.luks.devices.<name>.bypassWorkqueues is not supported for kernels older than 5.9";
880− { assertion = config.boot.initrd.systemd.enable -> all (dev: !dev.fallbackToPassword) (attrValues luks.devices);
881− message = "boot.initrd.luks.devices.<name>.fallbackToPassword is implied by systemd stage 1.";
883− { assertion = config.boot.initrd.systemd.enable -> all (dev: dev.preLVM) (attrValues luks.devices);
884− message = "boot.initrd.luks.devices.<name>.preLVM is not used by systemd stage 1.";
886− { assertion = config.boot.initrd.systemd.enable -> options.boot.initrd.luks.reusePassphrases.highestPrio == defaultPrio;
887− message = "boot.initrd.luks.reusePassphrases has no effect with systemd stage 1.";
889− { assertion = config.boot.initrd.systemd.enable -> all (dev: dev.preOpenCommands == "" && dev.postOpenCommands == "") (attrValues luks.devices);
890− message = "boot.initrd.luks.devices.<name>.preOpenCommands and postOpenCommands is not supported by systemd stage 1. Please bind a service to cryptsetup.target or cryptsetup-pre.target instead.";
893− { assertion = config.boot.initrd.systemd.enable -> !luks.gpgSupport;
894− message = "systemd stage 1 does not support GPG smartcards yet.";
897− { assertion = config.boot.initrd.systemd.enable -> !luks.fido2Support;
898− message = "systemd stage 1 does not support FIDO2 yet.";
901− { assertion = config.boot.initrd.systemd.enable -> !luks.yubikeySupport;
902− message = "systemd stage 1 does not support Yubikeys yet.";
906 # actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested
858 # actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested
@@ -915,7 +867,7 @@ in
915 ++ (if builtins.elem "xts" luks.cryptoModules then ["ecb"] else []);
867 ++ (if builtins.elem "xts" luks.cryptoModules then ["ecb"] else []);
917 # copy the cryptsetup binary and it's dependencies
869 # copy the cryptsetup binary and it's dependencies
918− boot.initrd.extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable) ''
870+ boot.initrd.extraUtilsCommands = ''
919 copy_bin_and_libs ${pkgs.cryptsetup}/bin/cryptsetup
871 copy_bin_and_libs ${pkgs.cryptsetup}/bin/cryptsetup
920 copy_bin_and_libs ${askPass}/bin/cryptsetup-askpass
872 copy_bin_and_libs ${askPass}/bin/cryptsetup-askpass
921 sed -i s,/bin/sh,$out/bin/sh, $out/bin/cryptsetup-askpass
873 sed -i s,/bin/sh,$out/bin/sh, $out/bin/cryptsetup-askpass
@@ -963,7 +915,7 @@ in
966− boot.initrd.extraUtilsCommandsTest = mkIf (!config.boot.initrd.systemd.enable) ''
918+ boot.initrd.extraUtilsCommandsTest = ''
967 $out/bin/cryptsetup --version
919 $out/bin/cryptsetup --version
968 ${optionalString luks.yubikeySupport ''
920 ${optionalString luks.yubikeySupport ''
969 $out/bin/ykchalresp -V
921 $out/bin/ykchalresp -V
@@ -980,28 +932,9 @@ in
983− boot.initrd.systemd = {
984− contents."/etc/crypttab".source = stage1Crypttab;
986− extraBin.systemd-cryptsetup = "${config.boot.initrd.systemd.package}/lib/systemd/systemd-cryptsetup";
988− additionalUpstreamUnits = [
989− "cryptsetup-pre.target"
991− "remote-cryptsetup.target"
994− "${config.boot.initrd.systemd.package}/lib/systemd/systemd-cryptsetup"
995− "${config.boot.initrd.systemd.package}/lib/systemd/system-generators/systemd-cryptsetup-generator"
999− # We do this because we need the udev rules from the package
1000− boot.initrd.services.lvm.enable = true;
1002− boot.initrd.preFailCommands = mkIf (!config.boot.initrd.systemd.enable) postCommands;
935+ boot.initrd.preFailCommands = postCommands;
1003− boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand preLVM) + postCommands);
936+ boot.initrd.preLVMCommands = commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand preLVM) + postCommands;
1004− boot.initrd.postDeviceCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand postLVM) + postCommands);
937+ boot.initrd.postDeviceCommands = commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand postLVM) + postCommands;
1006 environment.systemPackages = [ pkgs.cryptsetup ];
939 environment.systemPackages = [ pkgs.cryptsetup ];
nixos/modules/system/boot/networkd.nix+1−139
@@ -10,36 +10,6 @@ let
14− sectionNetwork = checkUnitConfig "Network" [
17− "SpeedMeterIntervalSec"
18− "ManageForeignRoutingPolicyRules"
19− "ManageForeignRoutes"
22− (assertValueOneOf "SpeedMeter" boolValues)
23− (assertInt "SpeedMeterIntervalSec")
24− (assertValueOneOf "ManageForeignRoutingPolicyRules" boolValues)
25− (assertValueOneOf "ManageForeignRoutes" boolValues)
28− sectionDHCPv4 = checkUnitConfig "DHCPv4" [
35− sectionDHCPv6 = checkUnitConfig "DHCPv6" [
45 sectionLink = checkUnitConfig "Link" [
15 sectionLink = checkUnitConfig "Link" [
@@ -311,8 +281,6 @@ let
311 "PrivateKeyFile"
281 "PrivateKeyFile"
312 "ListenPort"
282 "ListenPort"
313 "FirewallMark"
283 "FirewallMark"
317 (assertInt "FirewallMark")
285 (assertInt "FirewallMark")
318 (assertRange "FirewallMark" 1 4294967295)
286 (assertRange "FirewallMark" 1 4294967295)
@@ -328,8 +296,6 @@ let
328 "AllowedIPs"
296 "AllowedIPs"
329 "Endpoint"
297 "Endpoint"
330 "PersistentKeepalive"
298 "PersistentKeepalive"
334 (assertInt "PersistentKeepalive")
300 (assertInt "PersistentKeepalive")
335 (assertRange "PersistentKeepalive" 0 65535)
301 (assertRange "PersistentKeepalive" 0 65535)
@@ -901,44 +867,6 @@ let
905− networkConfig = mkOption {
907− example = { SpeedMeter = true; ManageForeignRoutingPolicyRules = false; };
908− type = types.addCheck (types.attrsOf unitOption) check.global.sectionNetwork;
910− Each attribute in this set specifies an option in the
911− <literal>[Network]</literal> section of the networkd config.
912− See <citerefentry><refentrytitle>networkd.conf</refentrytitle>
913− <manvolnum>5</manvolnum></citerefentry> for details.
917− dhcpV4Config = mkOption {
919− example = { DUIDType = "vendor"; };
920− type = types.addCheck (types.attrsOf unitOption) check.global.sectionDHCPv4;
922− Each attribute in this set specifies an option in the
923− <literal>[DHCPv4]</literal> section of the networkd config.
924− See <citerefentry><refentrytitle>networkd.conf</refentrytitle>
925− <manvolnum>5</manvolnum></citerefentry> for details.
929− dhcpV6Config = mkOption {
931− example = { DUIDType = "vendor"; };
932− type = types.addCheck (types.attrsOf unitOption) check.global.sectionDHCPv6;
934− Each attribute in this set specifies an option in the
935− <literal>[DHCPv6]</literal> section of the networkd config.
936− See <citerefentry><refentrytitle>networkd.conf</refentrytitle>
937− <manvolnum>5</manvolnum></citerefentry> for details.
942 linkOptions = commonNetworkOptions // {
870 linkOptions = commonNetworkOptions // {
943 # overwrite enable option from above
871 # overwrite enable option from above
944 enable = mkOption {
872 enable = mkOption {
@@ -1587,39 +1515,6 @@ let
1590− networkdConfig = { config, ... }: {
1592− routeTables = mkOption {
1594− example = { foo = 27; };
1595− type = with types; attrsOf int;
1597− Defines route table names as an attrset of name to number.
1598− See <citerefentry><refentrytitle>networkd.conf</refentrytitle>
1599− <manvolnum>5</manvolnum></citerefentry> for details.
1603− addRouteTablesToIPRoute2 = mkOption {
1608− If true and routeTables are set, then the specified route tables
1609− will also be installed into /etc/iproute2/rt_tables.
1615− networkConfig = optionalAttrs (config.routeTables != { }) {
1616− RouteTable = mapAttrsToList
1617− (name: number: "${name}:${toString number}")
1618− config.routeTables;
1623 commonMatchText = def: optionalString (def.matchConfig != { }) ''
1518 commonMatchText = def: optionalString (def.matchConfig != { }) ''
1625 ${attrsToSection def.matchConfig}
1520 ${attrsToSection def.matchConfig}
@@ -1701,20 +1596,6 @@ let
1701 + def.extraConfig;
1596 + def.extraConfig;
1704− renderConfig = def:
1707− ${attrsToSection def.networkConfig}
1709− + optionalString (def.dhcpV4Config != { }) ''
1711− ${attrsToSection def.dhcpV4Config}
1713− + optionalString (def.dhcpV6Config != { }) ''
1715− ${attrsToSection def.dhcpV6Config}
1718 networkToUnit = name: def:
1599 networkToUnit = name: def:
1719 { inherit (def) enable;
1600 { inherit (def) enable;
1720 text = commonMatchText def
1601 text = commonMatchText def
@@ -1847,12 +1728,6 @@ in
1847 description = "Definition of systemd networks.";
1728 description = "Definition of systemd networks.";
1850− systemd.network.config = mkOption {
1852− type = with types; submodule [ { options = networkdOptions; } networkdConfig ];
1853− description = "Definition of global systemd network config.";
1856 systemd.network.units = mkOption {
1731 systemd.network.units = mkOption {
1857 description = "Definition of networkd units.";
1732 description = "Definition of networkd units.";
1858 default = {};
1733 default = {};
@@ -1944,9 +1819,7 @@ in
1944 systemd.services.systemd-networkd = {
1819 systemd.services.systemd-networkd = {
1945 wantedBy = [ "multi-user.target" ];
1820 wantedBy = [ "multi-user.target" ];
1946 aliases = [ "dbus-org.freedesktop.network1.service" ];
1821 aliases = [ "dbus-org.freedesktop.network1.service" ];
1947− restartTriggers = map (x: x.source) (attrValues unitFiles) ++ [
1822+ restartTriggers = map (x: x.source) (attrValues unitFiles);
1948− config.environment.etc."systemd/networkd.conf".source
1952 systemd.services.systemd-networkd-wait-online = {
1825 systemd.services.systemd-networkd-wait-online = {
@@ -1969,17 +1842,6 @@ in
1972− environment.etc."systemd/networkd.conf" = renderConfig cfg.config;
1974− networking.iproute2 = mkIf (cfg.config.addRouteTablesToIPRoute2 && cfg.config.routeTables != { }) {
1975− enable = mkDefault true;
1976− rttablesExtraConfig = ''
1978− # Extra tables defined in NixOS systemd.networkd.config.routeTables.
1979− ${concatStringsSep "\n" (mapAttrsToList (name: number: "${toString number} ${name}") cfg.config.routeTables)}
1983 services.resolved.enable = mkDefault true;
1845 services.resolved.enable = mkDefault true;
nixos/modules/system/boot/stage-1-init.sh+6−3
@@ -232,8 +232,7 @@ done
232mkdir -p /lib
232mkdir -p /lib
233ln -s @modulesClosure@/lib/modules /lib/modules
233ln -s @modulesClosure@/lib/modules /lib/modules
234ln -s @modulesClosure@/lib/firmware /lib/firmware
234ln -s @modulesClosure@/lib/firmware /lib/firmware
235−# see comment in stage-1.nix for explanation
236−echo @extraUtils@/bin/modprobe-kernel > /proc/sys/kernel/modprobe
235+echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe
237for i in @kernelModules@; do
236for i in @kernelModules@; do
238 info "loading module $(basename $i)..."
237 info "loading module $(basename $i)..."
239 modprobe $i
238 modprobe $i
@@ -318,7 +317,11 @@ checkFS() {
319 echo "checking $device..."
318 echo "checking $device..."
321− fsck -V -a "$device"
320+ fsckFlags=
321+ if test "$fsType" != "btrfs"; then
324+ fsck $fsckFlags "$device"
322 fsckResult=$?
325 fsckResult=$?
324 if test $(($fsckResult | 2)) = $fsckResult; then
327 if test $(($fsckResult | 2)) = $fsckResult; then
nixos/modules/system/boot/stage-1.nix+14−33
@@ -131,26 +131,6 @@ let
131 copy_bin_and_libs ${pkgs.kmod}/bin/kmod
131 copy_bin_and_libs ${pkgs.kmod}/bin/kmod
132 ln -sf kmod $out/bin/modprobe
132 ln -sf kmod $out/bin/modprobe
134− # Dirty hack to make sure the kernel properly loads modules
135− # such as ext4 on demand (e.g. on a `mount(2)` syscall). This is necessary
136− # because `kmod` isn't linked against `libpthread.so.0` anymore (since
137− # it was merged into `libc.so.6` since version `2.34`), but still needs
138− # to access it for some reason. This is not an issue in stage-1 itself
139− # because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of
140− # kmod/modprobe points to glibc's `$out/lib` where `libpthread.so.6` exists.
141− # However, this is a problem when the kernel calls `modprobe` inside
142− # the initial ramdisk because it doesn't know about the
143− # `LD_LIBRARY_PATH` and the rpath was nuked.
145− # Also, we can't use `makeWrapper` here because `kmod` only does
146− # `modprobe` functionality if `argv[0] == "modprobe"`.
147− cat >$out/bin/modprobe-kernel <<EOF
149− export LD_LIBRARY_PATH=$out/lib
150− exec $out/bin/modprobe "\$@"
152− chmod +x $out/bin/modprobe-kernel
154 # Copy resize2fs if any ext* filesystems are to be resized
134 # Copy resize2fs if any ext* filesystems are to be resized
155 ${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) ''
135 ${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) ''
156 # We need mke2fs in the initrd.
136 # We need mke2fs in the initrd.
@@ -355,7 +335,7 @@ let
355 [ { object = bootStage1;
335 [ { object = bootStage1;
356 symlink = "/init";
336 symlink = "/init";
358− { object = pkgs.writeText "mdadm.conf" config.boot.initrd.services.swraid.mdadmConf;
338+ { object = pkgs.writeText "mdadm.conf" config.boot.initrd.mdadmConf;
359 symlink = "/etc/mdadm.conf";
339 symlink = "/etc/mdadm.conf";
361 { object = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" {
341 { object = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" {
@@ -420,7 +400,7 @@ let
420 ${lib.optionalString (config.boot.initrd.secrets == {})
400 ${lib.optionalString (config.boot.initrd.secrets == {})
421 "exit 0"}
401 "exit 0"}
423− export PATH=${pkgs.coreutils}/bin:${pkgs.libarchive}/bin:${pkgs.gzip}/bin:${pkgs.findutils}/bin
403+ export PATH=${pkgs.coreutils}/bin:${pkgs.cpio}/bin:${pkgs.gzip}/bin:${pkgs.findutils}/bin
425 function cleanup {
405 function cleanup {
426 if [ -n "$tmp" -a -d "$tmp" ]; then
406 if [ -n "$tmp" -a -d "$tmp" ]; then
@@ -440,7 +420,7 @@ let
440 ) config.boot.initrd.secrets)
420 ) config.boot.initrd.secrets)
443− (cd "$tmp" && find . -print0 | sort -z | bsdtar --uid 0 --gid 0 -cnf - -T - | bsdtar --null -cf - --format=newc @-) | \
423+ (cd "$tmp" && find . -print0 | sort -z | cpio --quiet -o -H newc -R +0:+0 --reproducible --null) | \
444 ${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
424 ${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
@@ -505,6 +485,14 @@ in
488+ boot.initrd.mdadmConf = mkOption {
492+ Contents of <filename>/etc/mdadm.conf</filename> in stage 1.
508 boot.initrd.preLVMCommands = mkOption {
496 boot.initrd.preLVMCommands = mkOption {
509 default = "";
497 default = "";
510 type = types.lines;
498 type = types.lines;
@@ -715,12 +703,8 @@ in
718− system.build = mkMerge [
706+ system.build =
719− { inherit bootStage1 initialRamdiskSecretAppender extraUtils; }
707+ { inherit bootStage1 initialRamdisk initialRamdiskSecretAppender extraUtils; };
721− # generated in nixos/modules/system/boot/systemd/initrd.nix
722− (mkIf (!config.boot.initrd.systemd.enable) { inherit initialRamdisk; })
725 system.requiredKernelConfig = with config.lib.kernelConfig; [
709 system.requiredKernelConfig = with config.lib.kernelConfig; [
726 (isYes "TMPFS")
710 (isYes "TMPFS")
@@ -728,9 +712,6 @@ in
730 boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems;
714 boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems;
734− (mkRenamedOptionModule [ "boot" "initrd" "mdadmConf" ] [ "boot" "initrd" "services" "swraid" "mdadmConf" ])
nixos/modules/system/boot/stage-2-init.sh+94−66
@@ -5,30 +5,32 @@ systemConfig=@systemConfig@
5export HOME=/root PATH="@path@"
5export HOME=/root PATH="@path@"
8−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
9− # Process the kernel command line.
8+# Process the kernel command line.
10− for o in $(</proc/cmdline); do
9+for o in $(</proc/cmdline); do
11− case $o in
10+ case $o in
12− boot.debugtrace)
11+ boot.debugtrace)
13− # Show each command.
12+ # Show each command.
16+ set -- $(IFS==; echo $o)
20− # Print a greeting.
23+# Print a greeting.
22− echo -e "\e[1;32m<<< NixOS Stage 2 >>>\e[0m"
25+echo -e "\e[1;32m<<< NixOS Stage 2 >>>\e[0m"
26− # Normally, stage 1 mounts the root filesystem read/writable.
29+# Normally, stage 1 mounts the root filesystem read/writable.
27− # However, in some environments, stage 2 is executed directly, and the
30+# However, in some environments, stage 2 is executed directly, and the
28− # root is read-only. So make it writable here.
31+# root is read-only. So make it writable here.
29− if [ -z "$container" ]; then
32+if [ -z "$container" ]; then
30− mount -n -o remount,rw none /
33+ mount -n -o remount,rw none /
@@ -41,12 +43,6 @@ if [ ! -e /proc/1 ]; then
41 local options="$3"
43 local options="$3"
42 local fsType="$4"
44 local fsType="$4"
44− # We must not overwrite this mount because it's bind-mounted
45− # from stage 1's /run
46− if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ] && [ "${mountPoint}" = /run ]; then
50 install -m 0755 -d "$mountPoint"
46 install -m 0755 -d "$mountPoint"
51 mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
47 mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
@@ -54,11 +50,7 @@ if [ ! -e /proc/1 ]; then
57−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ]; then
58− echo "booting system configuration ${systemConfig}"
60− echo "booting system configuration $systemConfig" > /dev/kmsg
53+echo "booting system configuration $systemConfig" > /dev/kmsg
64# Make /nix/store a read-only bind mount to enforce immutability of
56# Make /nix/store a read-only bind mount to enforce immutability of
@@ -80,32 +72,59 @@ if [ -n "@readOnlyStore@" ]; then
83−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
75+# Provide a /etc/mtab.
84− # Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
76+install -m 0755 -d /etc
85− if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
77+test -e /etc/fstab || touch /etc/fstab # to shut up mount
86− resolvconf -m 1000 -a host </etc/resolv.conf
78+rm -f /etc/mtab* # not that we care about stale locks
87− fi
79+ln -s /proc/mounts /etc/mtab
90− # Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
82+# More special file systems, initialise required directories.
91− # Only at this point are all the necessary prerequisites ready for these commands.
83+[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
92− exec {logOutFd}>&1 {logErrFd}>&2
84+install -m 01777 -d /tmp
93− if test -w /dev/kmsg; then
85+install -m 0755 -d /var/{log,lib,db} /nix/var /etc/nixos/ \
94− exec > >(tee -i /proc/self/fd/"$logOutFd" | while read -r line; do
86+ /run/lock /home /bin # for the /bin/sh symlink
89+# Miscellaneous boot time cleanup.
90+rm -rf /var/run /var/lock
91+rm -f /etc/{group,passwd,shadow}.lock
94+# Also get rid of temporary GC roots.
95+rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
98+# For backwards compatibility, symlink /var/run to /run, and /var/lock
101+ln -s /run/lock /var/lock
104+# Clear the resume device.
95− if test -n "$line"; then
105+if test -n "$resumeDevice"; then
96− echo "<7>stage-2-init: $line" > /dev/kmsg
106+ mkswap "$resumeDevice" || echo 'Failed to clear saved image.'
101− exec > >(tee -i /run/log/stage-2-init.log) 2>&1
106−# Required by the activation script
110+# Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
107−install -m 0755 -d /etc /etc/nixos
111+if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
108−install -m 01777 -d /tmp
112+ resolvconf -m 1000 -a host </etc/resolv.conf
115+# Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
116+# Only at this point are all the necessary prerequisites ready for these commands.
117+exec {logOutFd}>&1 {logErrFd}>&2
118+if test -w /dev/kmsg; then
119+ exec > >(tee -i /proc/self/fd/"$logOutFd" | while read -r line; do
120+ if test -n "$line"; then
121+ echo "<7>stage-2-init: $line" > /dev/kmsg
126+ exec > >(tee -i /run/log/stage-2-init.log) 2>&1
111# Run the script that performs all configuration activation that does
130# Run the script that performs all configuration activation that does
@@ -114,9 +133,22 @@ echo "running activation script..."
114$systemConfig/activate
133$systemConfig/activate
136+# Restore the system time from the hardware clock. We do this after
137+# running the activation script to be sure that /etc/localtime points
138+# at the current time zone.
139+if [ -e /dev/rtc ]; then
117# Record the boot configuration.
144# Record the boot configuration.
118ln -sfn "$systemConfig" /run/booted-system
145ln -sfn "$systemConfig" /run/booted-system
147+# Prevent the booted system from being garbage-collected. If it weren't
148+# a gcroot, if we were running a different kernel, switched system,
149+# and garbage collected all, we could not load kernel modules anymore.
150+ln -sfn /run/booted-system /nix/var/nix/gcroots/booted-system
121# Run any user-specified commands.
153# Run any user-specified commands.
122@shell@ @postBootCommands@
154@shell@ @postBootCommands@
@@ -130,15 +162,11 @@ ln -sfn "$systemConfig" /run/booted-system
130: >> /etc/machine-id
162: >> /etc/machine-id
133−# No need to restore the stdout/stderr streams we never redirected and
134−# especially no need to start systemd
135−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
136− # Reset the logging file descriptors.
165+# Reset the logging file descriptors.
137− exec 1>&$logOutFd 2>&$logErrFd
166+exec 1>&$logOutFd 2>&$logErrFd
138− exec {logOutFd}>&- {logErrFd}>&-
167+exec {logOutFd}>&- {logErrFd}>&-
141− # Start systemd in a clean environment.
170+# Start systemd in a clean environment.
142− echo "starting systemd..."
171+echo "starting systemd..."
143− exec @systemdExecutable@ "$@"
172+exec env - @systemdExecutable@ "$@"
nixos/modules/system/boot/systemd.nix+33−18
@@ -11,7 +11,14 @@ let
11 systemd = cfg.package;
11 systemd = cfg.package;
13 inherit (systemdUtils.lib)
13 inherit (systemdUtils.lib)
14 generateUnits
15 generateUnits
15 targetToUnit
22 targetToUnit
16 serviceToUnit
23 serviceToUnit
17 socketToUnit
24 socketToUnit
@@ -178,7 +185,13 @@ in
178 systemd.units = mkOption {
185 systemd.units = mkOption {
179 description = "Definition of systemd units.";
186 description = "Definition of systemd units.";
180 default = {};
187 default = {};
181− type = systemdUtils.types.units;
188+ type = with types; attrsOf (submodule (
189+ { name, config, ... }:
190+ { options = concreteUnitOptions;
192+ unit = mkDefault (makeUnit name config);
184 systemd.packages = mkOption {
197 systemd.packages = mkOption {
@@ -190,37 +203,37 @@ in
191 systemd.targets = mkOption {
204 systemd.targets = mkOption {
192 default = {};
205 default = {};
193− type = systemdUtils.types.targets;
206+ type = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig] );
194 description = "Definition of systemd target units.";
207 description = "Definition of systemd target units.";
197 systemd.services = mkOption {
210 systemd.services = mkOption {
198 default = {};
211 default = {};
199− type = systemdUtils.types.services;
212+ type = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ]);
200 description = "Definition of systemd service units.";
213 description = "Definition of systemd service units.";
203 systemd.sockets = mkOption {
216 systemd.sockets = mkOption {
204 default = {};
217 default = {};
205− type = systemdUtils.types.sockets;
218+ type = with types; attrsOf (submodule [ { options = socketOptions; } unitConfig ]);
206 description = "Definition of systemd socket units.";
219 description = "Definition of systemd socket units.";
209 systemd.timers = mkOption {
222 systemd.timers = mkOption {
210 default = {};
223 default = {};
211− type = systemdUtils.types.timers;
224+ type = with types; attrsOf (submodule [ { options = timerOptions; } unitConfig ]);
212 description = "Definition of systemd timer units.";
225 description = "Definition of systemd timer units.";
215 systemd.paths = mkOption {
228 systemd.paths = mkOption {
216 default = {};
229 default = {};
217− type = systemdUtils.types.paths;
230+ type = with types; attrsOf (submodule [ { options = pathOptions; } unitConfig ]);
218 description = "Definition of systemd path units.";
231 description = "Definition of systemd path units.";
221 systemd.mounts = mkOption {
234 systemd.mounts = mkOption {
222 default = [];
235 default = [];
223− type = systemdUtils.types.mounts;
236+ type = with types; listOf (submodule [ { options = mountOptions; } unitConfig mountConfig ]);
224 description = ''
237 description = ''
225 Definition of systemd mount units.
238 Definition of systemd mount units.
226 This is a list instead of an attrSet, because systemd mandates the names to be derived from
239 This is a list instead of an attrSet, because systemd mandates the names to be derived from
@@ -230,7 +243,7 @@ in
231 systemd.automounts = mkOption {
244 systemd.automounts = mkOption {
232 default = [];
245 default = [];
233− type = systemdUtils.types.automounts;
246+ type = with types; listOf (submodule [ { options = automountOptions; } unitConfig automountConfig ]);
234 description = ''
247 description = ''
235 Definition of systemd automount units.
248 Definition of systemd automount units.
236 This is a list instead of an attrSet, because systemd mandates the names to be derived from
249 This is a list instead of an attrSet, because systemd mandates the names to be derived from
@@ -240,7 +253,7 @@ in
241 systemd.slices = mkOption {
254 systemd.slices = mkOption {
242 default = {};
255 default = {};
243− type = systemdUtils.types.slices;
256+ type = with types; attrsOf (submodule [ { options = sliceOptions; } unitConfig] );
244 description = "Definition of slice configurations.";
257 description = "Definition of slice configurations.";
@@ -349,11 +362,10 @@ in
349 type = types.listOf types.str;
362 type = types.listOf types.str;
350 example = [ "systemd-backlight@.service" ];
363 example = [ "systemd-backlight@.service" ];
351 description = ''
364 description = ''
352− A list of units to skip when generating system systemd configuration directory. This has
365+ A list of units to suppress when generating system systemd configuration directory. This has
353 priority over upstream units, <option>systemd.units</option>, and
366 priority over upstream units, <option>systemd.units</option>, and
354 <option>systemd.additionalUpstreamSystemUnits</option>. The main purpose of this is to
367 <option>systemd.additionalUpstreamSystemUnits</option>. The main purpose of this is to
355− prevent a upstream systemd unit from being added to the initrd with any modifications made to it
368+ suppress a upstream systemd unit with any modifications made to it by other NixOS modules.
356− by other NixOS modules.
@@ -470,12 +482,7 @@ in
470 enabledUnits = filterAttrs (n: v: ! elem n cfg.suppressedSystemUnits) cfg.units;
482 enabledUnits = filterAttrs (n: v: ! elem n cfg.suppressedSystemUnits) cfg.units;
473− "systemd/system".source = generateUnits {
485+ "systemd/system".source = generateUnits "system" enabledUnits enabledUpstreamSystemUnits upstreamSystemWants;
475− units = enabledUnits;
476− upstreamUnits = enabledUpstreamSystemUnits;
477− upstreamWants = upstreamSystemWants;
480 "systemd/system.conf".text = ''
487 "systemd/system.conf".text = ''
481 [Manager]
488 [Manager]
@@ -573,6 +580,14 @@ in
574 (filterAttrs (name: service: service.enable && service.startAt != []) cfg.services);
581 (filterAttrs (name: service: service.enable && service.startAt != []) cfg.services);
583+ # Generate timer units for all services that have a ‘startAt’ value.
584+ systemd.user.timers =
585+ mapAttrs (name: service:
586+ { wantedBy = [ "timers.target" ];
587+ timerConfig.OnCalendar = service.startAt;
589+ (filterAttrs (name: service: service.startAt != []) cfg.user.services);
576 # Some overrides to upstream units.
591 # Some overrides to upstream units.
577 systemd.services."systemd-backlight@".restartIfChanged = false;
592 systemd.services."systemd-backlight@".restartIfChanged = false;
578 systemd.services."systemd-fsck@".restartIfChanged = false;
593 systemd.services."systemd-fsck@".restartIfChanged = false;
nixos/modules/system/boot/systemd/initrd-secrets.nixdeleted−36
@@ -1,36 +0,0 @@
1−{ config, pkgs, lib, ... }:
4− config = lib.mkIf (config.boot.initrd.enable && config.boot.initrd.systemd.enable) {
5− # Copy secrets into the initrd if they cannot be appended
6− boot.initrd.systemd.contents = lib.mkIf (!config.boot.loader.supportsInitrdSecrets)
7− (lib.mapAttrs' (dest: source: lib.nameValuePair "/.initrd-secrets/${dest}" { source = if source == null then dest else source; }) config.boot.initrd.secrets);
9− # Copy secrets to their respective locations
10− boot.initrd.systemd.services.initrd-nixos-copy-secrets = lib.mkIf (config.boot.initrd.secrets != {}) {
11− description = "Copy secrets into place";
12− # Run as early as possible
13− wantedBy = [ "sysinit.target" ];
14− before = [ "cryptsetup-pre.target" ];
15− unitConfig.DefaultDependencies = false;
17− # We write the secrets to /.initrd-secrets and move them because this allows
18− # secrets to be written to /run. If we put the secret directly to /run and
19− # drop this service, we'd mount the /run tmpfs over the secret, making it
20− # invisible in stage 2.
22− for secret in $(cd /.initrd-secrets; find . -type f); do
23− mkdir -p "$(dirname "/$secret")"
24− cp "/.initrd-secrets/$secret" "/$secret"
30− RemainAfterExit = true;
33− # The script needs this
34− boot.initrd.systemd.extraBin.find = "${pkgs.findutils}/bin/find";
nixos/modules/system/boot/systemd/initrd.nixdeleted−502
@@ -1,502 +0,0 @@
1−{ lib, config, utils, pkgs, ... }:
6− inherit (utils) systemdUtils escapeSystemdPath;
7− inherit (systemdUtils.lib)
19− cfg = config.boot.initrd.systemd;
24− "ctrl-alt-del.target"
29− "initrd-cleanup.service"
31− "initrd-parse-etc.service"
32− "initrd-root-device.target"
33− "initrd-root-fs.target"
34− "initrd-switch-root.service"
35− "initrd-switch-root.target"
38− "kmod-static-nodes.service"
39− "local-fs-pre.target"
54− "sys-kernel-config.mount"
56− "systemd-ask-password-console.path"
57− "systemd-ask-password-console.service"
58− "systemd-fsck@.service"
59− "systemd-halt.service"
60− "systemd-hibernate-resume@.service"
61− "systemd-journald-audit.socket"
62− "systemd-journald-dev-log.socket"
63− "systemd-journald.service"
64− "systemd-journald.socket"
65− "systemd-kexec.service"
66− "systemd-modules-load.service"
67− "systemd-poweroff.service"
68− "systemd-reboot.service"
69− "systemd-sysctl.service"
70− "systemd-tmpfiles-setup-dev.service"
71− "systemd-tmpfiles-setup.service"
76− # "network-online.target"
77− # "network-pre.target"
79− # "nss-lookup.target"
80− # "nss-user-lookup.target"
81− # "remote-fs-pre.target"
83− ] ++ cfg.additionalUpstreamUnits;
86− "sysinit.target.wants"
89− enabledUpstreamUnits = filter (n: ! elem n cfg.suppressedUnits) upstreamUnits;
90− enabledUnits = filterAttrs (n: v: ! elem n cfg.suppressedUnits) cfg.units;
91− jobScripts = concatLists (mapAttrsToList (_: unit: unit.jobScripts or []) (filterAttrs (_: v: v.enable) cfg.services));
93− stage1Units = generateUnits {
95− units = enabledUnits;
96− upstreamUnits = enabledUpstreamUnits;
97− inherit upstreamWants;
98− inherit (cfg) packages package;
101− fileSystems = filter utils.fsNeededForBoot config.system.build.fileSystems;
103− fstab = pkgs.writeText "initrd-fstab" (lib.concatMapStringsSep "\n"
104− ({ fsType, mountPoint, device, options, autoFormat, autoResize, ... }@fs: let
105− opts = options ++ optional autoFormat "x-systemd.makefs" ++ optional autoResize "x-systemd.growfs";
106− in "${device} /sysroot${mountPoint} ${fsType} ${lib.concatStringsSep "," opts}") fileSystems);
108− needMakefs = lib.any (fs: fs.autoFormat) fileSystems;
109− needGrowfs = lib.any (fs: fs.autoResize) fileSystems;
111− kernel-name = config.boot.kernelPackages.kernel.name or "kernel";
112− modulesTree = config.system.modulesTree.override { name = kernel-name + "-modules"; };
113− firmware = config.hardware.firmware;
114− # Determine the set of modules that we need to mount the root FS.
115− modulesClosure = pkgs.makeModulesClosure {
116− rootModules = config.boot.initrd.availableKernelModules ++ config.boot.initrd.kernelModules;
117− kernel = modulesTree;
118− firmware = firmware;
119− allowMissing = false;
122− initrdBinEnv = pkgs.buildEnv {
123− name = "initrd-bin-env";
124− paths = map getBin cfg.initrdBin;
125− pathsToLink = ["/bin" "/sbin"];
126− postBuild = concatStringsSep "\n" (mapAttrsToList (n: v: "ln -s '${v}' $out/bin/'${n}'") cfg.extraBin);
129− initialRamdisk = pkgs.makeInitrdNG {
130− name = "initrd-${kernel-name}";
131− inherit (config.boot.initrd) compressor compressorArgs prepend;
133− contents = map (path: { object = path; symlink = ""; }) (subtractLists cfg.suppressedStorePaths cfg.storePaths)
134− ++ mapAttrsToList (_: v: { object = v.source; symlink = v.target; }) (filterAttrs (_: v: v.enable) cfg.contents);
138− options.boot.initrd.systemd = {
139− enable = mkEnableOption ''systemd in initrd.
141− Note: This is in very early development and is highly
142− experimental. Most of the features NixOS supports in initrd are
143− not yet supported by the intrd generated with this option.
146− package = (mkPackageOption pkgs "systemd" {
147− default = "systemdStage1";
152− contents = mkOption {
153− description = "Set of files that have to be linked into the initrd";
154− example = literalExpression ''
156− "/etc/hostname".text = "mymachine";
161− type = utils.systemdUtils.types.initrdContents;
164− storePaths = mkOption {
166− Store paths to copy into the initrd as well.
168− type = with types; listOf (oneOf [ singleLineStr package ]);
172− extraBin = mkOption {
174− Tools to add to /bin
176− example = literalExpression ''
178− umount = ''${pkgs.util-linux}/bin/umount;
181− type = types.attrsOf types.path;
185− suppressedStorePaths = mkOption {
187− Store paths specified in the storePaths option that
188− should not be copied.
190− type = types.listOf types.singleLineStr;
194− emergencyAccess = mkOption {
195− type = with types; oneOf [ bool singleLineStr ];
198− Set to true for unauthenticated emergency access, and false for
199− no emergency access.
201− Can also be set to a hashed super user password to allow
202− authenticated access to the emergency mode.
207− initrdBin = mkOption {
208− type = types.listOf types.package;
212− Packages to include in /bin for the stage 1 emergency shell.
216− additionalUpstreamUnits = mkOption {
218− type = types.listOf types.str;
220− example = [ "debug-shell.service" "systemd-quotacheck.service" ];
222− Additional units shipped with systemd that shall be enabled.
226− suppressedUnits = mkOption {
228− type = types.listOf types.str;
229− example = [ "systemd-backlight@.service" ];
232− A list of units to skip when generating system systemd configuration directory. This has
233− priority over upstream units, <option>boot.initrd.systemd.units</option>, and
234− <option>boot.initrd.systemd.additionalUpstreamUnits</option>. The main purpose of this is to
235− prevent a upstream systemd unit from being added to the initrd with any modifications made to it
236− by other NixOS modules.
241− description = "Definition of systemd units.";
244− type = systemdUtils.types.units;
247− packages = mkOption {
250− type = types.listOf types.package;
251− example = literalExpression "[ pkgs.systemd-cryptsetup-generator ]";
252− description = "Packages providing systemd units and hooks.";
255− targets = mkOption {
258− type = systemdUtils.types.initrdTargets;
259− description = "Definition of systemd target units.";
262− services = mkOption {
264− type = systemdUtils.types.initrdServices;
266− description = "Definition of systemd service units.";
269− sockets = mkOption {
271− type = systemdUtils.types.initrdSockets;
273− description = "Definition of systemd socket units.";
278− type = systemdUtils.types.initrdTimers;
280− description = "Definition of systemd timer units.";
285− type = systemdUtils.types.initrdPaths;
287− description = "Definition of systemd path units.";
292− type = systemdUtils.types.initrdMounts;
295− Definition of systemd mount units.
296− This is a list instead of an attrSet, because systemd mandates the names to be derived from
297− the 'where' attribute.
301− automounts = mkOption {
303− type = systemdUtils.types.automounts;
306− Definition of systemd automount units.
307− This is a list instead of an attrSet, because systemd mandates the names to be derived from
308− the 'where' attribute.
314− type = systemdUtils.types.slices;
316− description = "Definition of slice configurations.";
320− config = mkIf (config.boot.initrd.enable && cfg.enable) {
321− system.build = { inherit initialRamdisk; };
323− boot.initrd.availableKernelModules = [ "autofs4" ]; # systemd needs this for some features
325− boot.initrd.systemd = {
326− initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package] ++ config.system.fsPackages;
328− less = "${pkgs.less}/bin/less";
329− mount = "${cfg.package.util-linux}/bin/mount";
330− umount = "${cfg.package.util-linux}/bin/umount";
334− "/init".source = "${cfg.package}/lib/systemd/systemd";
335− "/etc/systemd/system".source = stage1Units;
337− "/etc/systemd/system.conf".text = ''
339− DefaultEnvironment=PATH=/bin:/sbin ${optionalString (isBool cfg.emergencyAccess && cfg.emergencyAccess) "SYSTEMD_SULOGIN_FORCE=1"}
342− "/etc/fstab".source = fstab;
344− "/lib/modules".source = "${modulesClosure}/lib/modules";
345− "/lib/firmware".source = "${modulesClosure}/lib/firmware";
347− "/etc/modules-load.d/nixos.conf".text = concatStringsSep "\n" config.boot.initrd.kernelModules;
349− "/etc/passwd".source = "${pkgs.fakeNss}/etc/passwd";
350− "/etc/shadow".text = "root:${if isBool cfg.emergencyAccess then "!" else cfg.emergencyAccess}:::::::";
352− "/bin".source = "${initrdBinEnv}/bin";
353− "/sbin".source = "${initrdBinEnv}/sbin";
355− "/etc/sysctl.d/nixos.conf".text = "kernel.modprobe = /sbin/modprobe";
356− "/etc/modprobe.d/systemd.conf".source = "${cfg.package}/lib/modprobe.d/systemd.conf";
357− "/etc/modprobe.d/ubuntu.conf".source = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" { } ''
358− ${pkgs.buildPackages.perl}/bin/perl -0pe 's/## file: iwlwifi.conf(.+?)##/##/s;' $src > $out
360− "/etc/modprobe.d/debian.conf".source = pkgs.kmod-debian-aliases;
366− "${cfg.package}/lib/systemd/systemd-fsck"
367− (lib.mkIf needGrowfs "${cfg.package}/lib/systemd/systemd-growfs")
368− "${cfg.package}/lib/systemd/systemd-hibernate-resume"
369− "${cfg.package}/lib/systemd/systemd-journald"
370− (lib.mkIf needMakefs "${cfg.package}/lib/systemd/systemd-makefs")
371− "${cfg.package}/lib/systemd/systemd-modules-load"
372− "${cfg.package}/lib/systemd/systemd-remount-fs"
373− "${cfg.package}/lib/systemd/systemd-shutdown"
374− "${cfg.package}/lib/systemd/systemd-sulogin-shell"
375− "${cfg.package}/lib/systemd/systemd-sysctl"
378− "${cfg.package}/lib/systemd/system-generators/systemd-debug-generator"
379− "${cfg.package}/lib/systemd/system-generators/systemd-fstab-generator"
380− "${cfg.package}/lib/systemd/system-generators/systemd-gpt-auto-generator"
381− "${cfg.package}/lib/systemd/system-generators/systemd-hibernate-resume-generator"
382− "${cfg.package}/lib/systemd/system-generators/systemd-run-generator"
384− # utilities needed by systemd
385− "${cfg.package.util-linux}/bin/mount"
386− "${cfg.package.util-linux}/bin/umount"
387− "${cfg.package.util-linux}/bin/sulogin"
389− # so NSS can look up usernames
390− "${pkgs.glibc}/lib/libnss_files.so.2"
393− targets.initrd.aliases = ["default.target"];
395− mapAttrs' (n: v: nameValuePair "${n}.path" (pathToUnit n v)) cfg.paths
396− // mapAttrs' (n: v: nameValuePair "${n}.service" (serviceToUnit n v)) cfg.services
397− // mapAttrs' (n: v: nameValuePair "${n}.slice" (sliceToUnit n v)) cfg.slices
398− // mapAttrs' (n: v: nameValuePair "${n}.socket" (socketToUnit n v)) cfg.sockets
399− // mapAttrs' (n: v: nameValuePair "${n}.target" (targetToUnit n v)) cfg.targets
400− // mapAttrs' (n: v: nameValuePair "${n}.timer" (timerToUnit n v)) cfg.timers
402− (v: let n = escapeSystemdPath v.where;
403− in nameValuePair "${n}.mount" (mountToUnit n v)) cfg.mounts)
405− (v: let n = escapeSystemdPath v.where;
406− in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts);
408− # The unit in /run/systemd/generator shadows the unit in
409− # /etc/systemd/system, but will still apply drop-ins from
410− # /etc/systemd/system/foo.service.d/
412− # We need IgnoreOnIsolate, otherwise the Requires dependency of
413− # a mount unit on its makefs unit causes it to be unmounted when
414− # we isolate for switch-root. Use a dummy package so that
415− # generateUnits will generate drop-ins instead of unit files.
416− packages = [(pkgs.runCommand "dummy" {} ''
417− mkdir -p $out/etc/systemd/system
418− touch $out/etc/systemd/system/systemd-{makefs,growfs}@.service
420− services."systemd-makefs@" = lib.mkIf needMakefs { unitConfig.IgnoreOnIsolate = true; };
421− services."systemd-growfs@" = lib.mkIf needGrowfs { unitConfig.IgnoreOnIsolate = true; };
423− services.initrd-nixos-activation = {
424− after = [ "initrd-fs.target" ];
425− requiredBy = [ "initrd.target" ];
426− unitConfig.AssertPathExists = "/etc/initrd-release";
427− serviceConfig.Type = "oneshot";
428− description = "NixOS Activation";
430− script = /* bash */ ''
432− export PATH="/bin:${cfg.package.util-linux}/bin"
434− # Figure out what closure to boot
436− for o in $(< /proc/cmdline); do
439− IFS== read -r -a initParam <<< "$o"
440− closure="$(dirname "''${initParam[1]}")"
446− if [ -z "''${closure:-}" ]; then
447− echo 'No init= parameter on the kernel command line' >&2
451− # If we are not booting a NixOS closure (e.g. init=/bin/sh),
452− # we don't know what root to prepare so we don't do anything
453− if ! [ -x "/sysroot$closure/prepare-root" ]; then
454− echo "NEW_INIT=''${initParam[1]}" > /etc/switch-root.conf
455− echo "$closure does not look like a NixOS installation - not activating"
458− echo 'NEW_INIT=' > /etc/switch-root.conf
461− # We need to propagate /run for things like /run/booted-system
462− # and /run/current-system.
463− mkdir -p /sysroot/run
464− mount --bind /run /sysroot/run
466− # Initialize the system
467− export IN_NIXOS_SYSTEMD_STAGE1=true
468− exec chroot /sysroot $closure/prepare-root
472− # This will either call systemctl with the new init as the last parameter (which
473− # is the case when not booting a NixOS system) or with an empty string, causing
474− # systemd to bypass its verification code that checks whether the next file is a systemd
475− # and using its compiled-in value
476− services.initrd-switch-root.serviceConfig = {
477− EnvironmentFile = "-/etc/switch-root.conf";
480− ''systemctl --no-block switch-root /sysroot "''${NEW_INIT}"''
484− services.panic-on-fail = {
485− wantedBy = ["emergency.target"];
487− DefaultDependencies = false;
488− ConditionKernelCommandLine = [
489− "|boot.panic_on_fail"
494− echo c > /proc/sysrq-trigger
496− serviceConfig.Type = "oneshot";
500− boot.kernelParams = lib.mkIf (config.boot.resumeDevice != "") [ "resume=${config.boot.resumeDevice}" ];
nixos/modules/system/boot/systemd/nspawn.nix+1−7
@@ -116,13 +116,7 @@ in {
117 mkMerge [
117 mkMerge [
118 (mkIf (cfg != {}) {
118 (mkIf (cfg != {}) {
119− environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits {
119+ environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits' false "nspawn" units [] []);
120− allowCollisions = false;
128 systemd.targets.multi-user.wants = [ "machines.target" ];
122 systemd.targets.multi-user.wants = [ "machines.target" ];
nixos/modules/system/boot/systemd/shutdown.nixdeleted−58
@@ -1,58 +0,0 @@
1−{ config, lib, utils, pkgs, ... }: let
3− cfg = config.systemd.shutdownRamfs;
6− storePaths = map (p: "${p}\n") cfg.storePaths;
7− contents = lib.mapAttrsToList (_: v: "${v.source}\n${v.target}") (lib.filterAttrs (_: v: v.enable) cfg.contents);
8− in pkgs.writeText "shutdown-ramfs-contents" (lib.concatStringsSep "\n" (storePaths ++ contents));
11− options.systemd.shutdownRamfs = {
12− enable = lib.mkEnableOption "pivoting back to an initramfs for shutdown" // { default = true; };
13− contents = lib.mkOption {
14− description = "Set of files that have to be linked into the shutdown ramfs";
15− example = lib.literalExpression ''
17− "/lib/systemd/system-shutdown/zpool-sync-shutdown".source = writeShellScript "zpool" "exec ''${zfs}/bin/zpool sync"
20− type = utils.systemdUtils.types.initrdContents;
23− storePaths = lib.mkOption {
25− Store paths to copy into the shutdown ramfs as well.
27− type = lib.types.listOf lib.types.singleLineStr;
32− config = lib.mkIf cfg.enable {
33− systemd.shutdownRamfs.contents."/shutdown".source = "${config.systemd.package}/lib/systemd/systemd-shutdown";
34− systemd.shutdownRamfs.storePaths = [pkgs.runtimeShell "${pkgs.coreutils}/bin"];
36− systemd.services.generate-shutdown-ramfs = {
37− description = "Generate shutdown ramfs";
38− wantedBy = [ "shutdown.target" ];
39− before = [ "shutdown.target" ];
41− DefaultDependencies = false;
42− ConditionFileIsExecutable = [
43− "!/run/initramfs/shutdown"
47− path = [pkgs.util-linux pkgs.makeInitrdNGTool];
48− serviceConfig.Type = "oneshot";
50− mkdir -p /run/initramfs
51− if ! mountpoint -q /run/initramfs; then
52− mount -t tmpfs tmpfs /run/initramfs
54− make-initrd-ng ${ramfsContents} /run/initramfs
nixos/modules/system/boot/systemd/tmpfiles.nix−16
@@ -100,21 +100,5 @@ in
104− systemd.tmpfiles.rules = [
105− "d /nix/var 0755 root root - -"
106− "L+ /nix/var/nix/gcroots/booted-system 0755 root root - /run/booted-system"
107− "d /run/lock 0755 root root - -"
108− "d /var/db 0755 root root - -"
109− "L /etc/mtab - - - - ../proc/mounts"
110− "L /var/lock - - - - ../run/lock"
112− "R! /etc/group.lock - - - - -"
113− "R! /etc/passwd.lock - - - - -"
114− "R! /etc/shadow.lock - - - - -"
115− "R! /etc/mtab* - - - - -"
116− "R! /nix/var/nix/gcroots/tmp - - - - -"
117− "R! /nix/var/nix/temproots - - - - -"
nixos/modules/system/boot/systemd/user.nix+18−13
@@ -12,6 +12,10 @@ let
12 (systemdUtils.lib)
12 (systemdUtils.lib)
14 generateUnits
14 generateUnits
15 targetToUnit
19 targetToUnit
16 serviceToUnit
20 serviceToUnit
17 socketToUnit
21 socketToUnit
@@ -53,42 +57,48 @@ in {
53 systemd.user.units = mkOption {
57 systemd.user.units = mkOption {
54 description = "Definition of systemd per-user units.";
58 description = "Definition of systemd per-user units.";
55 default = {};
59 default = {};
56− type = systemdUtils.types.units;
60+ type = with types; attrsOf (submodule (
61+ { name, config, ... }:
62+ { options = concreteUnitOptions;
64+ unit = mkDefault (makeUnit name config);
59 systemd.user.paths = mkOption {
69 systemd.user.paths = mkOption {
60 default = {};
70 default = {};
61− type = systemdUtils.types.paths;
71+ type = with types; attrsOf (submodule [ { options = pathOptions; } unitConfig ]);
62 description = "Definition of systemd per-user path units.";
72 description = "Definition of systemd per-user path units.";
65 systemd.user.services = mkOption {
75 systemd.user.services = mkOption {
66 default = {};
76 default = {};
67− type = systemdUtils.types.services;
77+ type = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ] );
68 description = "Definition of systemd per-user service units.";
78 description = "Definition of systemd per-user service units.";
71 systemd.user.slices = mkOption {
81 systemd.user.slices = mkOption {
72 default = {};
82 default = {};
73− type = systemdUtils.types.slices;
83+ type = with types; attrsOf (submodule [ { options = sliceOptions; } unitConfig ] );
74 description = "Definition of systemd per-user slice units.";
84 description = "Definition of systemd per-user slice units.";
77 systemd.user.sockets = mkOption {
87 systemd.user.sockets = mkOption {
78 default = {};
88 default = {};
79− type = systemdUtils.types.sockets;
89+ type = with types; attrsOf (submodule [ { options = socketOptions; } unitConfig ] );
80 description = "Definition of systemd per-user socket units.";
90 description = "Definition of systemd per-user socket units.";
83 systemd.user.targets = mkOption {
93 systemd.user.targets = mkOption {
84 default = {};
94 default = {};
85− type = systemdUtils.types.targets;
95+ type = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig] );
86 description = "Definition of systemd per-user target units.";
96 description = "Definition of systemd per-user target units.";
89 systemd.user.timers = mkOption {
99 systemd.user.timers = mkOption {
90 default = {};
100 default = {};
91− type = systemdUtils.types.timers;
101+ type = with types; attrsOf (submodule [ { options = timerOptions; } unitConfig ] );
92 description = "Definition of systemd per-user timer units.";
102 description = "Definition of systemd per-user timer units.";
@@ -109,12 +119,7 @@ in {
111 environment.etc = {
121 environment.etc = {
112− "systemd/user".source = generateUnits {
122+ "systemd/user".source = generateUnits "user" cfg.units upstreamUserUnits [];
114− inherit (cfg) units;
115− upstreamUnits = upstreamUserUnits;
119 "systemd/user.conf".text = ''
124 "systemd/user.conf".text = ''
120 [Manager]
125 [Manager]
nixos/modules/system/boot/timesyncd.nix+5−17
@@ -60,27 +60,15 @@ with lib;
61 users.groups.systemd-timesync.gid = config.ids.gids.systemd-timesync;
61 users.groups.systemd-timesync.gid = config.ids.gids.systemd-timesync;
63− system.activationScripts.systemd-timesyncd-migration =
63+ system.activationScripts.systemd-timesyncd-migration = mkIf (versionOlder config.system.stateVersion "19.09") ''
64 # workaround an issue of systemd-timesyncd not starting due to upstream systemd reverting their dynamic users changes
64 # workaround an issue of systemd-timesyncd not starting due to upstream systemd reverting their dynamic users changes
65 # - https://github.com/NixOS/nixpkgs/pull/61321#issuecomment-492423742
65 # - https://github.com/NixOS/nixpkgs/pull/61321#issuecomment-492423742
66 # - https://github.com/systemd/systemd/issues/12131
66 # - https://github.com/systemd/systemd/issues/12131
67− mkIf (versionOlder config.system.stateVersion "19.09") ''
68− if [ -L /var/lib/systemd/timesync ]; then
67+ if [ -L /var/lib/systemd/timesync ]; then
69− rm /var/lib/systemd/timesync
68+ rm /var/lib/systemd/timesync
70− mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
69+ mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
73− system.activationScripts.systemd-timesyncd-init-clock =
74− # Ensure that we have some stored time to prevent systemd-timesyncd to
75− # resort back to the fallback time.
76− # If the file doesn't exist we assume that our current system clock is
77− # good enough to provide an initial value.
79− if ! [ -f /var/lib/systemd/timesync/clock ]; then
80− test -d /var/lib/systemd/timesync || mkdir -p /var/lib/systemd/timesync
81− touch /var/lib/systemd/timesync/clock
nixos/modules/tasks/auto-upgrade.nix+7−32
@@ -63,16 +63,13 @@ in {
65 dates = mkOption {
65 dates = mkOption {
67 default = "04:40";
66 default = "04:40";
68− example = "daily";
67+ type = types.str;
69 description = ''
68 description = ''
70− How often or when upgrade occurs. For most desktop and server systems
71− a sufficient upgrade frequency is once a day.
73− The format is described in
69+ Specification (in the format described by
74 <citerefentry><refentrytitle>systemd.time</refentrytitle>
70 <citerefentry><refentrytitle>systemd.time</refentrytitle>
75− <manvolnum>7</manvolnum></citerefentry>.
71+ <manvolnum>7</manvolnum></citerefentry>) of the time at
72+ which the update will occur.
@@ -126,22 +123,6 @@ in {
129− persistent = mkOption {
134− Takes a boolean argument. If true, the time when the service
135− unit was last triggered is stored on disk. When the timer is
136− activated, the service unit is triggered immediately if it
137− would have been triggered at least once during the time when
138− the timer was inactive. Such triggering is nonetheless
139− subject to the delay imposed by RandomizedDelaySec=. This is
140− useful to catch up on missed runs of the service when the
141− system was powered down.
@@ -236,17 +217,11 @@ in {
238 startAt = cfg.dates;
219 startAt = cfg.dates;
240− after = [ "network-online.target" ];
241− wants = [ "network-online.target" ];
244− systemd.timers.nixos-upgrade = {
222+ systemd.timers.nixos-upgrade.timerConfig.RandomizedDelaySec =
246− RandomizedDelaySec = cfg.randomizedDelaySec;
223+ cfg.randomizedDelaySec;
247− Persistent = cfg.persistent;
224+
nixos/modules/tasks/bcache.nix+6−16
@@ -1,23 +1,13 @@
1−{ config, lib, pkgs, ... }:
1+{ pkgs, ... }:
4− options.boot.initrd.services.bcache.enable = (lib.mkEnableOption "bcache support in the initrd") // {
5− visible = false; # only works with systemd stage 1
8− config = {
5+ environment.systemPackages = [ pkgs.bcache-tools ];
10− environment.systemPackages = [ pkgs.bcache-tools ];
7+ services.udev.packages = [ pkgs.bcache-tools ];
9+ boot.initrd.extraUdevRulesCommands = ''
12− services.udev.packages = [ pkgs.bcache-tools ];
10+ cp -v ${pkgs.bcache-tools}/lib/udev/rules.d/*.rules $out/
14− boot.initrd.extraUdevRulesCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
15− cp -v ${pkgs.bcache-tools}/lib/udev/rules.d/*.rules $out/
18− boot.initrd.services.udev = lib.mkIf config.boot.initrd.services.bcache.enable {
19− packages = [ pkgs.bcache-tools ];
20− binPackages = [ pkgs.bcache-tools ];
nixos/modules/tasks/filesystems.nix+1−1
@@ -352,7 +352,7 @@ in
352 unitConfig.DefaultDependencies = false; # needed to prevent a cycle
352 unitConfig.DefaultDependencies = false; # needed to prevent a cycle
353 serviceConfig.Type = "oneshot";
353 serviceConfig.Type = "oneshot";
355− in listToAttrs (map formatDevice (filter (fs: fs.autoFormat && !(utils.fsNeededForBoot fs)) fileSystems)) // {
355+ in listToAttrs (map formatDevice (filter (fs: fs.autoFormat) fileSystems)) // {
356 # Mount /sys/fs/pstore for evacuating panic logs and crashdumps from persistent storage onto the disk using systemd-pstore.
356 # Mount /sys/fs/pstore for evacuating panic logs and crashdumps from persistent storage onto the disk using systemd-pstore.
357 # This cannot be done with the other special filesystems because the pstore module (which creates the mount point) is not loaded then.
357 # This cannot be done with the other special filesystems because the pstore module (which creates the mount point) is not loaded then.
358 "mount-pstore" = {
358 "mount-pstore" = {
nixos/modules/tasks/filesystems/btrfs.nix+3−3
@@ -66,19 +66,19 @@ in
69− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
69+ boot.initrd.extraUtilsCommands = mkIf inInitrd
71 copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfs
71 copy_bin_and_libs ${pkgs.btrfs-progs}/bin/btrfs
72 ln -sv btrfs $out/bin/btrfsck
72 ln -sv btrfs $out/bin/btrfsck
73 ln -sv btrfsck $out/bin/fsck.btrfs
73 ln -sv btrfsck $out/bin/fsck.btrfs
76− boot.initrd.extraUtilsCommandsTest = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
76+ boot.initrd.extraUtilsCommandsTest = mkIf inInitrd
78 $out/bin/btrfs --version
78 $out/bin/btrfs --version
81− boot.initrd.postDeviceCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
81+ boot.initrd.postDeviceCommands = mkIf inInitrd
83 btrfs device scan
83 btrfs device scan
nixos/modules/tasks/filesystems/cifs.nix+1−1
@@ -16,7 +16,7 @@ in
16 boot.initrd.availableKernelModules = mkIf inInitrd
16 boot.initrd.availableKernelModules = mkIf inInitrd
17 [ "cifs" "nls_utf8" "hmac" "md4" "ecb" "des_generic" "sha256" ];
17 [ "cifs" "nls_utf8" "hmac" "md4" "ecb" "des_generic" "sha256" ];
19− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
19+ boot.initrd.extraUtilsCommands = mkIf inInitrd
21 copy_bin_and_libs ${pkgs.cifs-utils}/sbin/mount.cifs
21 copy_bin_and_libs ${pkgs.cifs-utils}/sbin/mount.cifs
nixos/modules/tasks/filesystems/ext.nix+4−10
@@ -1,20 +1,14 @@
1−{ config, lib, pkgs, ... }:
1+{ pkgs, ... }:
5− inInitrd = lib.any (fs: fs == "ext2" || fs == "ext3" || fs == "ext4") config.boot.initrd.supportedFilesystems;
10 config = {
4 config = {
12− system.fsPackages = lib.mkIf (config.boot.initrd.systemd.enable -> inInitrd) [ pkgs.e2fsprogs ];
6+ system.fsPackages = [ pkgs.e2fsprogs ];
14 # As of kernel 4.3, there is no separate ext3 driver (they're also handled by ext4.ko)
8 # As of kernel 4.3, there is no separate ext3 driver (they're also handled by ext4.ko)
15− boot.initrd.availableKernelModules = lib.mkIf (config.boot.initrd.systemd.enable -> inInitrd) [ "ext2" "ext4" ];
9+ boot.initrd.availableKernelModules = [ "ext2" "ext4" ];
17− boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
11+ boot.initrd.extraUtilsCommands =
19 # Copy e2fsck and friends.
13 # Copy e2fsck and friends.
20 copy_bin_and_libs ${pkgs.e2fsprogs}/sbin/e2fsck
14 copy_bin_and_libs ${pkgs.e2fsprogs}/sbin/e2fsck
nixos/modules/tasks/filesystems/f2fs.nix+1−1
@@ -13,7 +13,7 @@ in
14 boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" "crc32" ];
14 boot.initrd.availableKernelModules = mkIf inInitrd [ "f2fs" "crc32" ];
16− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable) ''
16+ boot.initrd.extraUtilsCommands = mkIf inInitrd ''
17 copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/fsck.f2fs
17 copy_bin_and_libs ${pkgs.f2fs-tools}/sbin/fsck.f2fs
18 ${optionalString (any (fs: fs.autoResize) fileSystems) ''
18 ${optionalString (any (fs: fs.autoResize) fileSystems) ''
19 # We need f2fs-tools' tools to resize filesystems
19 # We need f2fs-tools' tools to resize filesystems
nixos/modules/tasks/filesystems/jfs.nix+1−1
@@ -12,7 +12,7 @@ in
13 boot.initrd.kernelModules = mkIf inInitrd [ "jfs" ];
13 boot.initrd.kernelModules = mkIf inInitrd [ "jfs" ];
15− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !boot.initrd.systemd.enable) ''
15+ boot.initrd.extraUtilsCommands = mkIf inInitrd ''
16 copy_bin_and_libs ${pkgs.jfsutils}/sbin/fsck.jfs
16 copy_bin_and_libs ${pkgs.jfsutils}/sbin/fsck.jfs
nixos/modules/tasks/filesystems/reiserfs.nix+1−1
@@ -15,7 +15,7 @@ in
16 boot.initrd.kernelModules = mkIf inInitrd [ "reiserfs" ];
16 boot.initrd.kernelModules = mkIf inInitrd [ "reiserfs" ];
18− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
18+ boot.initrd.extraUtilsCommands = mkIf inInitrd
20 copy_bin_and_libs ${pkgs.reiserfsprogs}/sbin/reiserfsck
20 copy_bin_and_libs ${pkgs.reiserfsprogs}/sbin/reiserfsck
21 ln -s reiserfsck $out/bin/fsck.reiserfs
21 ln -s reiserfsck $out/bin/fsck.reiserfs
nixos/modules/tasks/filesystems/unionfs-fuse.nix+2−13
@@ -6,7 +6,7 @@
6 (lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
6 (lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.initrd.supportedFilesystems) {
7 boot.initrd.kernelModules = [ "fuse" ];
7 boot.initrd.kernelModules = [ "fuse" ];
9− boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
9+ boot.initrd.extraUtilsCommands = ''
10 copy_bin_and_libs ${pkgs.fuse}/sbin/mount.fuse
10 copy_bin_and_libs ${pkgs.fuse}/sbin/mount.fuse
11 copy_bin_and_libs ${pkgs.unionfs-fuse}/bin/unionfs
11 copy_bin_and_libs ${pkgs.unionfs-fuse}/bin/unionfs
12 substitute ${pkgs.unionfs-fuse}/sbin/mount.unionfs-fuse $out/bin/mount.unionfs-fuse \
12 substitute ${pkgs.unionfs-fuse}/sbin/mount.unionfs-fuse $out/bin/mount.unionfs-fuse \
@@ -16,23 +16,12 @@
16 chmod +x $out/bin/mount.unionfs-fuse
16 chmod +x $out/bin/mount.unionfs-fuse
19− boot.initrd.postDeviceCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
19+ boot.initrd.postDeviceCommands = ''
20 # Hacky!!! fuse hard-codes the path to mount
20 # Hacky!!! fuse hard-codes the path to mount
21 mkdir -p /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
21 mkdir -p /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
22 ln -s $(which mount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
22 ln -s $(which mount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
23 ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
23 ln -s $(which umount) /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-${pkgs.util-linux.name}-bin/bin
26− boot.initrd.systemd.extraBin = {
27− "mount.fuse" = "${pkgs.fuse}/bin/mount.fuse";
28− "unionfs" = "${pkgs.unionfs-fuse}/bin/unionfs";
29− "mount.unionfs-fuse" = pkgs.runCommand "mount.unionfs-fuse" {} ''
30− substitute ${pkgs.unionfs-fuse}/sbin/mount.unionfs-fuse $out \
31− --replace '${pkgs.bash}/bin/bash' /bin/sh \
32− --replace '${pkgs.fuse}/sbin' /bin \
33− --replace '${pkgs.unionfs-fuse}/bin' /bin
38 (lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
27 (lib.mkIf (lib.any (fs: fs == "unionfs-fuse") config.boot.supportedFilesystems) {
nixos/modules/tasks/filesystems/vfat.nix+1−1
@@ -15,7 +15,7 @@ in
16 boot.initrd.kernelModules = mkIf inInitrd [ "vfat" "nls_cp437" "nls_iso8859-1" ];
16 boot.initrd.kernelModules = mkIf inInitrd [ "vfat" "nls_cp437" "nls_iso8859-1" ];
18− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
18+ boot.initrd.extraUtilsCommands = mkIf inInitrd
20 copy_bin_and_libs ${pkgs.dosfstools}/sbin/dosfsck
20 copy_bin_and_libs ${pkgs.dosfstools}/sbin/dosfsck
21 ln -sv dosfsck $out/bin/fsck.vfat
21 ln -sv dosfsck $out/bin/fsck.vfat
nixos/modules/tasks/filesystems/xfs.nix+2−2
@@ -15,14 +15,14 @@ in
16 boot.initrd.availableKernelModules = mkIf inInitrd [ "xfs" "crc32c" ];
16 boot.initrd.availableKernelModules = mkIf inInitrd [ "xfs" "crc32c" ];
18− boot.initrd.extraUtilsCommands = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
18+ boot.initrd.extraUtilsCommands = mkIf inInitrd
20 copy_bin_and_libs ${pkgs.xfsprogs.bin}/bin/fsck.xfs
20 copy_bin_and_libs ${pkgs.xfsprogs.bin}/bin/fsck.xfs
21 copy_bin_and_libs ${pkgs.xfsprogs.bin}/bin/xfs_repair
21 copy_bin_and_libs ${pkgs.xfsprogs.bin}/bin/xfs_repair
24 # Trick just to set 'sh' after the extraUtils nuke-refs.
24 # Trick just to set 'sh' after the extraUtils nuke-refs.
25− boot.initrd.extraUtilsCommandsTest = mkIf (inInitrd && !config.boot.initrd.systemd.enable)
25+ boot.initrd.extraUtilsCommandsTest = mkIf inInitrd
27 sed -i -e 's,^#!.*,#!'$out/bin/sh, $out/bin/fsck.xfs
27 sed -i -e 's,^#!.*,#!'$out/bin/sh, $out/bin/fsck.xfs
nixos/modules/tasks/filesystems/zfs.nix+33−9
@@ -466,11 +466,6 @@ in
466 '') rootPools));
466 '') rootPools));
469− systemd.shutdownRamfs.contents."/etc/systemd/system-shutdown/zpool".source = pkgs.writeShellScript "zpool-sync-shutdown" ''
470− exec ${cfgZfs.package}/bin/zpool sync
472− systemd.shutdownRamfs.storePaths = ["${cfgZfs.package}/bin/zpool"];
474 # TODO FIXME See https://github.com/NixOS/nixpkgs/pull/99386#issuecomment-798813567. To not break people's bootloader and as probably not everybody would read release notes that thoroughly add inSystem.
469 # TODO FIXME See https://github.com/NixOS/nixpkgs/pull/99386#issuecomment-798813567. To not break people's bootloader and as probably not everybody would read release notes that thoroughly add inSystem.
475 boot.loader.grub = mkIf (inInitrd || inSystem) {
470 boot.loader.grub = mkIf (inInitrd || inSystem) {
476 zfsSupport = true;
471 zfsSupport = true;
@@ -647,14 +642,41 @@ in
649 scriptArgs = "%i";
644 scriptArgs = "%i";
650− path = [ cfgZfs.package ];
645+ path = [ pkgs.gawk cfgZfs.package ];
647+ # ZFS has no way of enumerating just devices in a pool in a way
648+ # that 'zpool online -e' supports. Thus, we've implemented a
649+ # bit of a strange approach of highlighting just devices.
650+ # See: https://github.com/openzfs/zfs/issues/12505
652− script = ''
651+ script = let
652+ # This UUID has been chosen at random and is to provide a
653+ # collision-proof, predictable token to search for
654+ magicIdentifier = "NIXOS-ZFS-ZPOOL-DEVICE-IDENTIFIER-37108bec-aff6-4b58-9e5e-53c7c9766f05";
655+ zpoolScripts = pkgs.writeShellScriptBin "device-highlighter" ''
656+ echo "${magicIdentifier}"
655 echo "Expanding all devices for $pool."
661 echo "Expanding all devices for $pool."
657− ${pkgs.zpool-auto-expand-partitions}/bin/zpool_part_disks --automatically-grow "$pool"
663+ # Put our device-highlighter script it to the PATH
664+ export ZPOOL_SCRIPTS_PATH=${zpoolScripts}/bin
666+ # Enable running our precisely specified zpool script as root
667+ export ZPOOL_SCRIPTS_AS_ROOT=1
670+ zpool status -c device-highlighter "$pool" \
671+ | awk '($2 == "ONLINE" && $6 == "${magicIdentifier}") { print $1; }'
674+ for device in $(devices); do
675+ echo "Attempting to expand $device of $pool..."
676+ if ! zpool online -e "$pool" "$device"; then
677+ echo "Failed to expand '$device' of '$pool'."
@@ -679,6 +701,8 @@ in
679 RemainAfterExit = true;
701 RemainAfterExit = true;
704+ path = [ pkgs.gawk cfgZfs.package ];
682 script = ''
706 script = ''
683 for pool in ${poolListProvider}; do
707 for pool in ${poolListProvider}; do
684 systemctl start --no-block "zpool-expand@$pool"
708 systemctl start --no-block "zpool-expand@$pool"
nixos/modules/tasks/lvm.nix+6−55
@@ -7,22 +7,17 @@ in {
7 options.services.lvm = {
7 options.services.lvm = {
8 package = mkOption {
8 package = mkOption {
9 type = types.package;
9 type = types.package;
10− default = pkgs.lvm2;
10+ default = if cfg.dmeventd.enable then pkgs.lvm2_dmeventd else pkgs.lvm2;
11 internal = true;
11 internal = true;
12 defaultText = literalExpression "pkgs.lvm2";
12 defaultText = literalExpression "pkgs.lvm2";
13 description = ''
13 description = ''
14 This option allows you to override the LVM package that's used on the system
14 This option allows you to override the LVM package that's used on the system
15 (udev rules, tmpfiles, systemd services).
15 (udev rules, tmpfiles, systemd services).
16− Defaults to pkgs.lvm2, pkgs.lvm2_dmeventd if dmeventd or pkgs.lvm2_vdo if vdo is enabled.
16+ Defaults to pkgs.lvm2, or pkgs.lvm2_dmeventd if dmeventd is enabled.
19 dmeventd.enable = mkEnableOption "the LVM dmevent daemon";
19 dmeventd.enable = mkEnableOption "the LVM dmevent daemon";
20 boot.thin.enable = mkEnableOption "support for booting from ThinLVs";
20 boot.thin.enable = mkEnableOption "support for booting from ThinLVs";
21− boot.vdo.enable = mkEnableOption "support for booting from VDOLVs";
24− options.boot.initrd.services.lvm.enable = (mkEnableOption "enable booting from LVM2 in the initrd") // {
28 config = mkMerge [
23 config = mkMerge [
@@ -35,13 +30,8 @@ in {
35 environment.systemPackages = [ cfg.package ];
30 environment.systemPackages = [ cfg.package ];
36 systemd.packages = [ cfg.package ];
31 systemd.packages = [ cfg.package ];
33+ # TODO: update once https://github.com/NixOS/nixpkgs/pull/93006 was merged
38 services.udev.packages = [ cfg.package.out ];
34 services.udev.packages = [ cfg.package.out ];
40− # We need lvm2 for the device-mapper rules
41− boot.initrd.services.udev.packages = lib.mkIf config.boot.initrd.services.lvm.enable [ cfg.package ];
42− # The device-mapper rules want to call tools from lvm2
43− boot.initrd.systemd.initrdBin = lib.mkIf config.boot.initrd.services.lvm.enable [ cfg.package ];
44− boot.initrd.services.udev.binPackages = lib.mkIf config.boot.initrd.services.lvm.enable [ cfg.package ];
46 (mkIf cfg.dmeventd.enable {
36 (mkIf cfg.dmeventd.enable {
47 systemd.sockets."dm-event".wantedBy = [ "sockets.target" ];
37 systemd.sockets."dm-event".wantedBy = [ "sockets.target" ];
@@ -50,21 +40,18 @@ in {
50 environment.etc."lvm/lvm.conf".text = ''
40 environment.etc."lvm/lvm.conf".text = ''
51 dmeventd/executable = "${cfg.package}/bin/dmeventd"
41 dmeventd/executable = "${cfg.package}/bin/dmeventd"
53− services.lvm.package = mkDefault pkgs.lvm2_dmeventd;
55 (mkIf cfg.boot.thin.enable {
44 (mkIf cfg.boot.thin.enable {
56 boot.initrd = {
45 boot.initrd = {
57 kernelModules = [ "dm-snapshot" "dm-thin-pool" ];
46 kernelModules = [ "dm-snapshot" "dm-thin-pool" ];
59− systemd.initrdBin = lib.mkIf config.boot.initrd.services.lvm.enable [ pkgs.thin-provisioning-tools ];
61− extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable) ''
48+ extraUtilsCommands = ''
62 for BIN in ${pkgs.thin-provisioning-tools}/bin/*; do
49 for BIN in ${pkgs.thin-provisioning-tools}/bin/*; do
63 copy_bin_and_libs $BIN
50 copy_bin_and_libs $BIN
67− extraUtilsCommandsTest = mkIf (!config.boot.initrd.systemd.enable) ''
54+ extraUtilsCommandsTest = ''
68 ls ${pkgs.thin-provisioning-tools}/bin/ | grep -v pdata_tools | while read BIN; do
55 ls ${pkgs.thin-provisioning-tools}/bin/ | grep -v pdata_tools | while read BIN; do
69 $out/bin/$(basename $BIN) --help > /dev/null
56 $out/bin/$(basename $BIN) --help > /dev/null
@@ -74,45 +61,9 @@ in {
74 environment.etc."lvm/lvm.conf".text = concatMapStringsSep "\n"
61 environment.etc."lvm/lvm.conf".text = concatMapStringsSep "\n"
75 (bin: "global/${bin}_executable = ${pkgs.thin-provisioning-tools}/bin/${bin}")
62 (bin: "global/${bin}_executable = ${pkgs.thin-provisioning-tools}/bin/${bin}")
76 [ "thin_check" "thin_dump" "thin_repair" "cache_check" "cache_dump" "cache_repair" ];
63 [ "thin_check" "thin_dump" "thin_repair" "cache_check" "cache_dump" "cache_repair" ];
78− environment.systemPackages = [ pkgs.thin-provisioning-tools ];
80− (mkIf cfg.boot.vdo.enable {
83− kernelModules = [ "kvdo" ];
85− systemd.initrdBin = lib.mkIf config.boot.initrd.services.lvm.enable [ pkgs.vdo ];
87− extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable)''
88− ls ${pkgs.vdo}/bin/ | grep -v adaptLVMVDO | while read BIN; do
89− copy_bin_and_libs ${pkgs.vdo}/bin/$BIN
93− extraUtilsCommandsTest = mkIf (!config.boot.initrd.systemd.enable)''
94− ls ${pkgs.vdo}/bin/ | grep -v adaptLVMVDO | while read BIN; do
95− $out/bin/$(basename $BIN) --help > /dev/null
99− extraModulePackages = [ config.boot.kernelPackages.kvdo ];
102− services.lvm.package = mkOverride 999 pkgs.lvm2_vdo; # this overrides mkDefault
104− environment.systemPackages = [ pkgs.vdo ];
106 (mkIf (cfg.dmeventd.enable || cfg.boot.thin.enable) {
65 (mkIf (cfg.dmeventd.enable || cfg.boot.thin.enable) {
107− boot.initrd.systemd.contents."/etc/lvm/lvm.conf".text = optionalString (config.boot.initrd.services.lvm.enable && cfg.boot.thin.enable) (concatMapStringsSep "\n"
66+ boot.initrd.preLVMCommands = ''
108− (bin: "global/${bin}_executable = /bin/${bin}")
109− [ "thin_check" "thin_dump" "thin_repair" "cache_check" "cache_dump" "cache_repair" ]
110− ) + "\n" + optionalString cfg.dmeventd.enable ''
111− dmeventd/executable = /bin/false
112− activation/monitoring = 0
115− boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) ''
116 mkdir -p /etc/lvm
67 mkdir -p /etc/lvm
117 cat << EOF >> /etc/lvm/lvm.conf
68 cat << EOF >> /etc/lvm/lvm.conf
118 ${optionalString cfg.boot.thin.enable (
69 ${optionalString cfg.boot.thin.enable (
nixos/modules/tasks/network-interfaces.nix+10−11
@@ -403,15 +403,6 @@ let
403 </itemizedlist>
403 </itemizedlist>
406− hostidFile = pkgs.runCommand "gen-hostid" { preferLocalBuild = true; } ''
408− ${if pkgs.stdenv.isBigEndian then ''
409− echo -ne "\x''${hi:0:2}\x''${hi:2:2}\x''${hi:4:2}\x''${hi:6:2}" > $out
411− echo -ne "\x''${hi:6:2}\x''${hi:4:2}\x''${hi:2:2}\x''${hi:0:2}" > $out
@@ -1392,8 +1383,16 @@ in
1392 domainname "${cfg.domain}"
1383 domainname "${cfg.domain}"
1395− environment.etc.hostid = mkIf (cfg.hostId != null) { source = hostidFile; };
1386+ environment.etc.hostid = mkIf (cfg.hostId != null)
1396− boot.initrd.systemd.contents."/etc/hostid" = mkIf (cfg.hostId != null) { source = hostidFile; };
1387+ { source = pkgs.runCommand "gen-hostid" { preferLocalBuild = true; } ''
1389+ ${if pkgs.stdenv.isBigEndian then ''
1390+ echo -ne "\x''${hi:0:2}\x''${hi:2:2}\x''${hi:4:2}\x''${hi:6:2}" > $out
1392+ echo -ne "\x''${hi:6:2}\x''${hi:4:2}\x''${hi:2:2}\x''${hi:0:2}" > $out
1398 # static hostname configuration needed for hostnamectl and the
1397 # static hostname configuration needed for hostnamectl and the
1399 # org.freedesktop.hostname1 dbus service (both provided by systemd)
1398 # org.freedesktop.hostname1 dbus service (both provided by systemd)
nixos/modules/tasks/swraid.nix+9−35
@@ -1,43 +1,17 @@
1−{ config, pkgs, lib, ... }: let
1+{ pkgs, ... }:
3− cfg = config.boot.initrd.services.swraid;
3+{
5−in {
5+ environment.systemPackages = [ pkgs.mdadm ];
7− options.boot.initrd.services.swraid = {
7+ services.udev.packages = [ pkgs.mdadm ];
8− enable = (lib.mkEnableOption "swraid support using mdadm") // {
9− visible = false; # only has effect when the new stage 1 is in place
12− mdadmConf = lib.mkOption {
9+ systemd.packages = [ pkgs.mdadm ];
13− description = "Contents of <filename>/etc/mdadm.conf</filename> in initrd.";
14− type = lib.types.lines;
19− config = {
11+ boot.initrd.availableKernelModules = [ "md_mod" "raid0" "raid1" "raid10" "raid456" ];
20− environment.systemPackages = [ pkgs.mdadm ];
22− services.udev.packages = [ pkgs.mdadm ];
13+ boot.initrd.extraUdevRulesCommands = ''
14+ cp -v ${pkgs.mdadm}/lib/udev/rules.d/*.rules $out/
24− systemd.packages = [ pkgs.mdadm ];
26− boot.initrd.availableKernelModules = lib.mkIf (config.boot.initrd.systemd.enable -> cfg.enable) [ "md_mod" "raid0" "raid1" "raid10" "raid456" ];
28− boot.initrd.extraUdevRulesCommands = lib.mkIf (!config.boot.initrd.systemd.enable) ''
29− cp -v ${pkgs.mdadm}/lib/udev/rules.d/*.rules $out/
32− boot.initrd.systemd = lib.mkIf cfg.enable {
33− contents."/etc/mdadm.conf" = lib.mkIf (cfg.mdadmConf != "") {
34− text = cfg.mdadmConf;
37− packages = [ pkgs.mdadm ];
38− initrdBin = [ pkgs.mdadm ];
41− boot.initrd.services.udev.packages = lib.mkIf cfg.enable [ pkgs.mdadm ];
nixos/modules/testing/test-instrumentation.nix+26−19
@@ -65,26 +65,33 @@ in
68− boot.kernel.sysctl = {
68+ boot.initrd.preDeviceCommands =
69− "kernel.hung_task_timeout_secs" = 600;
69+ ''
70− # Panic on out-of-memory conditions rather than letting the
70+ echo 600 > /proc/sys/kernel/hung_task_timeout_secs
71− # OOM killer randomly get rid of processes, since this leads
72− # to failures that are hard to diagnose.
73− "vm.panic_on_oom" = lib.mkDefault 2;
76− boot.kernelParams = [
73+ boot.initrd.postDeviceCommands =
77− "console=${qemu-common.qemuSerialDevice}"
74+ ''
78− # Panic if an error occurs in stage 1 (rather than waiting for
79− # user intervention).
80− "panic=1" "boot.panic_on_fail"
81− # Using acpi_pm as a clock source causes the guest clock to
75+ # Using acpi_pm as a clock source causes the guest clock to
82− # slow down under high host load. This is usually a bad
76+ # slow down under high host load. This is usually a bad
83− # thing, but for VM tests it should provide a bit more
77+ # thing, but for VM tests it should provide a bit more
84− # determinism (e.g. if the VM runs at lower speed, then
78+ # determinism (e.g. if the VM runs at lower speed, then
85− # timeouts in the VM should also be delayed).
79+ # timeouts in the VM should also be delayed).
86− "clock=acpi_pm"
80+ echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource
83+ boot.postBootCommands =
85+ # Panic on out-of-memory conditions rather than letting the
86+ # OOM killer randomly get rid of processes, since this leads
87+ # to failures that are hard to diagnose.
88+ echo 2 > /proc/sys/vm/panic_on_oom
91+ # Panic if an error occurs in stage 1 (rather than waiting for
92+ # user intervention).
94+ [ "console=${qemu-common.qemuSerialDevice}" "panic=1" "boot.panic_on_fail" ];
89 # `xwininfo' is used by the test driver to query open windows.
96 # `xwininfo' is used by the test driver to query open windows.
90 environment.systemPackages = [ pkgs.xorg.xwininfo ];
97 environment.systemPackages = [ pkgs.xorg.xwininfo ];
nixos/modules/virtualisation/azure-common.nix+1−5
@@ -21,11 +21,7 @@ with lib;
21 # way to select them anyway.
21 # way to select them anyway.
22 boot.loader.grub.configurationLimit = 0;
22 boot.loader.grub.configurationLimit = 0;
25− device = "/dev/disk/by-label/nixos";
24+ fileSystems."/".device = "/dev/disk/by-label/nixos";
30 # Allow root logins only using the SSH key that the user specified
26 # Allow root logins only using the SSH key that the user specified
31 # at instance creation time, ping client connections to avoid timeouts
27 # at instance creation time, ping client connections to avoid timeouts
nixos/modules/virtualisation/libvirtd.nix−4
@@ -344,10 +344,6 @@ in
344 restartIfChanged = false;
344 restartIfChanged = false;
347− systemd.services.virtchd = {
348− path = [ pkgs.cloud-hypervisor ];
351 systemd.services.libvirt-guests = {
347 systemd.services.libvirt-guests = {
352 wantedBy = [ "multi-user.target" ];
348 wantedBy = [ "multi-user.target" ];
353 path = with pkgs; [ coreutils gawk cfg.package ];
349 path = with pkgs; [ coreutils gawk cfg.package ];
nixos/modules/virtualisation/nixos-containers.nix+11−26
@@ -4,11 +4,6 @@ with lib;
7− configurationPrefix = optionalString (versionAtLeast config.system.stateVersion "22.05") "nixos-";
8− configurationDirectoryName = "${configurationPrefix}containers";
9− configurationDirectory = "/etc/${configurationDirectoryName}";
10− stateDirectory = "/var/lib/${configurationPrefix}containers";
12 # The container's init script, a small wrapper around the regular
7 # The container's init script, a small wrapper around the regular
13 # NixOS stage-2 init script.
8 # NixOS stage-2 init script.
14 containerInit = (cfg:
9 containerInit = (cfg:
@@ -82,7 +77,7 @@ let
82 startScript = cfg:
77 startScript = cfg:
84 mkdir -p -m 0755 "$root/etc" "$root/var/lib"
79 mkdir -p -m 0755 "$root/etc" "$root/var/lib"
85− mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/nixos-containers
80+ mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
86 if ! [ -e "$root/etc/os-release" ]; then
81 if ! [ -e "$root/etc/os-release" ]; then
87 touch "$root/etc/os-release"
82 touch "$root/etc/os-release"
@@ -254,11 +249,11 @@ let
255 SyslogIdentifier = "container %i";
250 SyslogIdentifier = "container %i";
257− EnvironmentFile = "-${configurationDirectory}/%i.conf";
252+ EnvironmentFile = "-/etc/containers/%i.conf";
259 Type = "notify";
254 Type = "notify";
261− RuntimeDirectory = lib.optional cfg.ephemeral "${configurationDirectoryName}/%i";
256+ RuntimeDirectory = lib.optional cfg.ephemeral "containers/%i";
263 # Note that on reboot, systemd-nspawn returns 133, so this
258 # Note that on reboot, systemd-nspawn returns 133, so this
264 # unit will be restarted. On poweroff, it returns 0, so the
259 # unit will be restarted. On poweroff, it returns 0, so the
@@ -742,21 +737,15 @@ in
743 config = mkIf (config.boot.enableContainers) (let
738 config = mkIf (config.boot.enableContainers) (let
745− warnings = flatten [
746− (optional (config.virtualisation.containers.enable && versionOlder config.system.stateVersion "22.05") ''
747− Enabling both boot.enableContainers & virtualisation.containers on system.stateVersion < 22.05 is unsupported.
752 description = "Container '%i'";
741 description = "Container '%i'";
754− unitConfig.RequiresMountsFor = "${stateDirectory}/%i";
743+ unitConfig.RequiresMountsFor = "/var/lib/containers/%i";
756 path = [ pkgs.iproute2 ];
745 path = [ pkgs.iproute2 ];
758 environment = {
747 environment = {
759− root = "${stateDirectory}/%i";
748+ root = "/var/lib/containers/%i";
760 INSTANCE = "%i";
749 INSTANCE = "%i";
@@ -793,8 +782,8 @@ in
793 script = startScript containerConfig;
782 script = startScript containerConfig;
794 postStart = postStartScript containerConfig;
783 postStart = postStartScript containerConfig;
795 serviceConfig = serviceDirectives containerConfig;
784 serviceConfig = serviceDirectives containerConfig;
796− unitConfig.RequiresMountsFor = lib.optional (!containerConfig.ephemeral) "${stateDirectory}/%i";
785+ unitConfig.RequiresMountsFor = lib.optional (!containerConfig.ephemeral) "/var/lib/containers/%i";
797− environment.root = if containerConfig.ephemeral then "/run/nixos-containers/%i" else "${stateDirectory}/%i";
786+ environment.root = if containerConfig.ephemeral then "/run/containers/%i" else "/var/lib/containers/%i";
799 if containerConfig.autoStart then
788 if containerConfig.autoStart then
@@ -803,7 +792,7 @@ in
803 after = [ "network.target" ];
792 after = [ "network.target" ];
804 restartTriggers = [
793 restartTriggers = [
805 containerConfig.path
794 containerConfig.path
806− config.environment.etc."${configurationDirectoryName}/${name}.conf".source
795+ config.environment.etc."containers/${name}.conf".source
808 restartIfChanged = true;
797 restartIfChanged = true;
@@ -811,12 +800,12 @@ in
811 )) config.containers)
800 )) config.containers)
814− # Generate a configuration file in /etc/nixos-containers for each
803+ # Generate a configuration file in /etc/containers for each
815 # container so that container@.target can get the container
804 # container so that container@.target can get the container
816 # configuration.
805 # configuration.
817 environment.etc =
806 environment.etc =
818 let mkPortStr = p: p.protocol + ":" + (toString p.hostPort) + ":" + (if p.containerPort == null then toString p.hostPort else toString p.containerPort);
807 let mkPortStr = p: p.protocol + ":" + (toString p.hostPort) + ":" + (if p.containerPort == null then toString p.hostPort else toString p.containerPort);
819− in mapAttrs' (name: cfg: nameValuePair "${configurationDirectoryName}/${name}.conf"
808+ in mapAttrs' (name: cfg: nameValuePair "containers/${name}.conf"
822 SYSTEM_PATH=${cfg.path}
811 SYSTEM_PATH=${cfg.path}
@@ -865,11 +854,7 @@ in
865 ENV{INTERFACE}=="v[eb]-*", ENV{NM_UNMANAGED}="1"
854 ENV{INTERFACE}=="v[eb]-*", ENV{NM_UNMANAGED}="1"
868− environment.systemPackages = [
857+ environment.systemPackages = [ pkgs.nixos-container ];
869− (pkgs.nixos-container.override {
870− inherit stateDirectory configurationDirectory;
874 boot.kernelModules = [
859 boot.kernelModules = [
nixos/modules/virtualisation/oci-containers.nix+5−1
@@ -338,7 +338,11 @@ in {
339 backend = mkOption {
339 backend = mkOption {
340 type = types.enum [ "podman" "docker" ];
340 type = types.enum [ "podman" "docker" ];
342+ # TODO: Once https://github.com/NixOS/nixpkgs/issues/77925 is resolved default to podman
341− default = if versionAtLeast config.system.stateVersion "22.05" then "podman" else "docker";
343+ # if versionAtLeast config.system.stateVersion "20.09" then "podman"
342 description = "The underlying Docker implementation to use.";
346 description = "The underlying Docker implementation to use.";
nixos/modules/virtualisation/openstack-config.nix+7−39
@@ -1,11 +1,8 @@
1−{ config, pkgs, lib, ... }:
1+{ pkgs, lib, ... }:
3−# image metadata:
3+with lib;
4−# hw_firmware_type=uefi
7− inherit (lib) mkIf mkDefault;
8− cfg = config.openstack;
9 metadataFetcher = import ./openstack-metadata-fetcher.nix {
6 metadataFetcher = import ./openstack-metadata-fetcher.nix {
10 targetRoot = "/";
7 targetRoot = "/";
11 wgetExtraOptions = "--retry-connrefused";
8 wgetExtraOptions = "--retry-connrefused";
@@ -14,47 +11,23 @@ in
15 imports = [
12 imports = [
16 ../profiles/qemu-guest.nix
13 ../profiles/qemu-guest.nix
18− # Note: While we do use the headless profile, we also explicitly
19− # turn on the serial console on tty1 below.
20− # Note that I could not find any documentation indicating tty1 was
21− # the correct choice. I picked tty1 because that is what one
22− # particular host was using.
23 ../profiles/headless.nix
14 ../profiles/headless.nix
25 # The Openstack Metadata service exposes data on an EC2 API also.
15 # The Openstack Metadata service exposes data on an EC2 API also.
26 ./ec2-data.nix
16 ./ec2-data.nix
27 ./amazon-init.nix
17 ./amazon-init.nix
30 config = {
20 config = {
31− fileSystems."/" = mkIf (!cfg.zfs.enable) {
21+ fileSystems."/" = {
32 device = "/dev/disk/by-label/nixos";
22 device = "/dev/disk/by-label/nixos";
33 fsType = "ext4";
23 fsType = "ext4";
34 autoResize = true;
24 autoResize = true;
37− fileSystems."/boot" = mkIf (cfg.efi || cfg.zfs.enable) {
38− # The ZFS image uses a partition labeled ESP whether or not we're
40− device = "/dev/disk/by-label/ESP";
44 boot.growPartition = true;
27 boot.growPartition = true;
45− boot.kernelParams = [ "console=tty1" ];
28+ boot.kernelParams = [ "console=ttyS0" ];
46− boot.loader.grub.device = if (!cfg.efi) then "/dev/vda" else "nodev";
29+ boot.loader.grub.device = "/dev/vda";
47− boot.loader.grub.efiSupport = cfg.efi;
48− boot.loader.grub.efiInstallAsRemovable = cfg.efi;
49− boot.loader.timeout = 1;
30+ boot.loader.timeout = 0;
50− boot.loader.grub.extraConfig = ''
51− serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1
52− terminal_output console serial
53− terminal_input console serial
56− services.zfs.expandOnBoot = mkIf cfg.zfs.enable (lib.mkDefault "all");
57− boot.zfs.devNodes = mkIf cfg.zfs.enable "/dev/";
59 # Allow root logins
32 # Allow root logins
60 services.openssh = {
33 services.openssh = {
@@ -63,11 +36,6 @@ in
63 passwordAuthentication = mkDefault false;
36 passwordAuthentication = mkDefault false;
66− users.users.root.initialPassword = "foobar";
68− # Enable the serial console on tty1
69− systemd.services."serial-getty@tty1".enable = true;
71 # Force getting the hostname from Openstack metadata.
39 # Force getting the hostname from Openstack metadata.
72 networking.hostName = mkDefault "";
40 networking.hostName = mkDefault "";
@@ -75,7 +43,7 @@ in
75 path = [ pkgs.wget ];
43 path = [ pkgs.wget ];
76 description = "Fetch Metadata on startup";
44 description = "Fetch Metadata on startup";
77 wantedBy = [ "multi-user.target" ];
45 wantedBy = [ "multi-user.target" ];
78− before = [ "apply-ec2-data.service" "amazon-init.service" ];
46+ before = [ "apply-ec2-data.service" "amazon-init.service"];
79 wants = [ "network-online.target" ];
47 wants = [ "network-online.target" ];
80 after = [ "network-online.target" ];
48 after = [ "network-online.target" ];
81 script = metadataFetcher;
49 script = metadataFetcher;
nixos/modules/virtualisation/openstack-metadata-fetcher.nix+3−3
@@ -14,9 +14,9 @@
14 wget ${wgetExtraOptions} "$@"
14 wget ${wgetExtraOptions} "$@"
17− wget_imds -O "$metaDir/ami-manifest-path" http://169.254.169.254/1.0/meta-data/ami-manifest-path || true
17+ wget_imds -O "$metaDir/ami-manifest-path" http://169.254.169.254/1.0/meta-data/ami-manifest-path
18 # When no user-data is provided, the OpenStack metadata server doesn't expose the user-data route.
18 # When no user-data is provided, the OpenStack metadata server doesn't expose the user-data route.
19 (umask 077 && wget_imds -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data || rm -f "$metaDir/user-data")
19 (umask 077 && wget_imds -O "$metaDir/user-data" http://169.254.169.254/1.0/user-data || rm -f "$metaDir/user-data")
20− wget_imds -O "$metaDir/hostname" http://169.254.169.254/1.0/meta-data/hostname || true
20+ wget_imds -O "$metaDir/hostname" http://169.254.169.254/1.0/meta-data/hostname
21− wget_imds -O "$metaDir/public-keys-0-openssh-key" http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key || true
21+ wget_imds -O "$metaDir/public-keys-0-openssh-key" http://169.254.169.254/1.0/meta-data/public-keys/0/openssh-key
nixos/modules/virtualisation/openstack-options.nixdeleted−71
@@ -1,71 +0,0 @@
1−{ config, lib, pkgs, ... }:
3− inherit (lib) literalExpression types;
9− enable = lib.mkOption {
13− Whether the OpenStack instance uses a ZFS root.
17− datasets = lib.mkOption {
19− Datasets to create under the `tank` and `boot` zpools.
21− **NOTE:** This option is used only at image creation time, and
22− does not attempt to declaratively create or manage datasets
23− on an existing system.
28− type = types.attrsOf (types.submodule {
30− mount = lib.mkOption {
31− description = "Where to mount this dataset.";
32− type = types.nullOr types.string;
36− properties = lib.mkOption {
37− description = "Properties to set on this dataset.";
38− type = types.attrsOf types.string;
47− default = pkgs.stdenv.hostPlatform.isAarch64;
48− defaultText = literalExpression "pkgs.stdenv.hostPlatform.isAarch64";
51− Whether the instance is using EFI.
57− config = lib.mkIf config.openstack.zfs.enable {
58− networking.hostId = lib.mkDefault "00000000";
62− mountable = lib.filterAttrs (_: value: ((value.mount or null) != null)) config.openstack.zfs.datasets;
65− (dataset: opts: lib.nameValuePair opts.mount {
nixos/modules/virtualisation/qemu-vm.nix+5−38
@@ -754,13 +754,13 @@ in
755 boot.loader.grub.gfxmodeBios = with cfg.resolution; "${toString x}x${toString y}";
755 boot.loader.grub.gfxmodeBios = with cfg.resolution; "${toString x}x${toString y}";
757− boot.initrd.extraUtilsCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
757+ boot.initrd.extraUtilsCommands =
759 # We need mke2fs in the initrd.
759 # We need mke2fs in the initrd.
760 copy_bin_and_libs ${pkgs.e2fsprogs}/bin/mke2fs
760 copy_bin_and_libs ${pkgs.e2fsprogs}/bin/mke2fs
763− boot.initrd.postDeviceCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
763+ boot.initrd.postDeviceCommands =
765 # If the disk image appears to be empty, run mke2fs to
765 # If the disk image appears to be empty, run mke2fs to
766 # initialise.
766 # initialise.
@@ -770,7 +770,7 @@ in
773− boot.initrd.postMountCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
773+ boot.initrd.postMountCommands =
775 # Mark this as a NixOS machine.
775 # Mark this as a NixOS machine.
776 mkdir -p $targetRoot/etc
776 mkdir -p $targetRoot/etc
@@ -789,11 +789,6 @@ in
792− systemd.tmpfiles.rules = lib.mkIf config.boot.initrd.systemd.enable [
793− "f /etc/NIXOS 0644 root root -"
794− "d /boot 0644 root root -"
797 # After booting, register the closure of the paths in
792 # After booting, register the closure of the paths in
798 # `virtualisation.additionalPaths' in the Nix database in the VM. This
793 # `virtualisation.additionalPaths' in the Nix database in the VM. This
799 # allows Nix operations to work in the VM. The path to the
794 # allows Nix operations to work in the VM. The path to the
@@ -858,12 +853,8 @@ in
858 (mkIf (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) [
853 (mkIf (pkgs.stdenv.isAarch32 || pkgs.stdenv.isAarch64) [
859 "-device virtio-gpu-pci" "-device usb-ehci,id=usb0" "-device usb-kbd" "-device usb-tablet"
854 "-device virtio-gpu-pci" "-device usb-ehci,id=usb0" "-device usb-kbd" "-device usb-tablet"
862− alphaNumericChars = lowerChars ++ upperChars ++ (map toString (range 0 9));
863− # Replace all non-alphanumeric characters with underscores
864− sanitizeShellIdent = s: concatMapStrings (c: if builtins.elem c alphaNumericChars then c else "_") (stringToCharacters s);
865− in mkIf (!cfg.useBootLoader) [
856+ (mkIf (!cfg.useBootLoader) [
866− "-kernel \${NIXPKGS_QEMU_KERNEL_${sanitizeShellIdent config.system.name}:-${config.system.build.toplevel}/kernel}"
857+ "-kernel ${config.system.build.toplevel}/kernel"
867 "-initrd ${config.system.build.toplevel}/initrd"
858 "-initrd ${config.system.build.toplevel}/initrd"
868 ''-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${consoles} $QEMU_KERNEL_PARAMS"''
859 ''-append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${consoles} $QEMU_KERNEL_PARAMS"''
@@ -932,8 +923,6 @@ in
932 mkVMOverride (cfg.fileSystems //
923 mkVMOverride (cfg.fileSystems //
934 "/".device = cfg.bootDevice;
925 "/".device = cfg.bootDevice;
935− "/".fsType = "ext4";
936− "/".autoFormat = true;
938 "/tmp" = mkIf config.boot.tmpOnTmpfs
927 "/tmp" = mkIf config.boot.tmpOnTmpfs
939 { device = "tmpfs";
928 { device = "tmpfs";
@@ -964,28 +953,6 @@ in
965 } // lib.mapAttrs' mkSharedDir cfg.sharedDirectories);
954 } // lib.mapAttrs' mkSharedDir cfg.sharedDirectories);
967− boot.initrd.systemd = lib.mkIf (config.boot.initrd.systemd.enable && cfg.writableStore) {
969− where = "/sysroot/nix/store";
972− options = "lowerdir=/sysroot/nix/.ro-store,upperdir=/sysroot/nix/.rw-store/store,workdir=/sysroot/nix/.rw-store/work";
973− wantedBy = ["local-fs.target"];
974− before = ["local-fs.target"];
975− requires = ["sysroot-nix-.ro\\x2dstore.mount" "sysroot-nix-.rw\\x2dstore.mount" "rw-store.service"];
976− after = ["sysroot-nix-.ro\\x2dstore.mount" "sysroot-nix-.rw\\x2dstore.mount" "rw-store.service"];
977− unitConfig.IgnoreOnIsolate = true;
979− services.rw-store = {
980− after = ["sysroot-nix-.rw\\x2dstore.mount"];
981− unitConfig.DefaultDependencies = false;
984− ExecStart = "/bin/mkdir -p 0755 /sysroot/nix/.rw-store/store /sysroot/nix/.rw-store/work /sysroot/nix/store";
989 swapDevices = mkVMOverride [ ];
956 swapDevices = mkVMOverride [ ];
990 boot.initrd.luks.devices = mkVMOverride {};
957 boot.initrd.luks.devices = mkVMOverride {};
nixos/modules/virtualisation/vmware-host.nixdeleted−166
@@ -1,166 +0,0 @@
1−{ config, pkgs, lib, ... }:
4− cfg = config.virtualisation.vmware.host;
5− wrapperDir = "/run/vmware/bin"; # Perfectly fits as /usr/local/bin
6− parentWrapperDir = dirOf wrapperDir;
7− vmwareWrappers = # Needed as hardcoded paths workaround
11− ln -s "${config.security.wrapperDir}/${program}" $wrapperDir/${program}
15− (mkVmwareSymlink "pkexec")
16− (mkVmwareSymlink "mount")
17− (mkVmwareSymlink "umount")
21− options = with lib; {
22− virtualisation.vmware.host = {
23− enable = mkEnableOption "VMware" // {
25− This enables VMware host virtualisation for running VMs.
28− <literal>vmware-vmx</literal> will cause kcompactd0 due to
29− <literal>Transparent Hugepages</literal> feature in kernel.
30− Apply <literal>[ "transparent_hugepage=never" ]</literal> in
31− option <option>boot.kernelParams</option> to disable them.
35− If that didn't work disable <literal>TRANSPARENT_HUGEPAGE</literal>,
36− <literal>COMPACTION</literal> configs and recompile kernel.
41− type = types.package;
42− default = pkgs.vmware-workstation;
43− defaultText = literalExpression "pkgs.vmware-workstation";
44− description = "VMware host virtualisation package to use";
46− extraPackages = mkOption {
47− type = with types; listOf package;
48− default = with pkgs; [ ];
49− description = "Extra packages to be used with VMware host.";
50− example = "with pkgs; [ ntfs3g ]";
52− extraConfig = mkOption {
55− description = "Add extra config to /etc/vmware/config";
57− # Allow unsupported device's OpenGL and Vulkan acceleration for guest vGPU
58− mks.gl.allowUnsupportedDrivers = "TRUE"
59− mks.vk.allowUnsupportedDevices = "TRUE"
65− config = lib.mkIf cfg.enable {
66− boot.extraModulePackages = [ config.boot.kernelPackages.vmware ];
67− boot.extraModprobeConfig = "alias char-major-10-229 fuse";
68− boot.kernelModules = [ "vmw_pvscsi" "vmw_vmci" "vmmon" "vmnet" "fuse" ];
70− environment.systemPackages = [ cfg.package ] ++ cfg.extraPackages;
71− services.printing.drivers = [ cfg.package ];
73− environment.etc."vmware/config".text = ''
74− ${builtins.readFile "${cfg.package}/etc/vmware/config"}
78− environment.etc."vmware/bootstrap".source = "${cfg.package}/etc/vmware/bootstrap";
79− environment.etc."vmware/icu".source = "${cfg.package}/etc/vmware/icu";
80− environment.etc."vmware-installer".source = "${cfg.package}/etc/vmware-installer";
84− security.wrappers = {
89− source = "${cfg.package}/lib/vmware/bin/.vmware-vmx-wrapped";
93− ###### wrappers activation script
95− system.activationScripts.vmwareWrappers =
96− lib.stringAfter [ "specialfs" "users" ]
98− mkdir -p "${parentWrapperDir}"
99− chmod 755 "${parentWrapperDir}"
100− # We want to place the tmpdirs for the wrappers to the parent dir.
101− wrapperDir=$(mktemp --directory --tmpdir="${parentWrapperDir}" wrappers.XXXXXXXXXX)
102− chmod a+rx "$wrapperDir"
103− ${lib.concatStringsSep "\n" (vmwareWrappers)}
104− if [ -L ${wrapperDir} ]; then
105− # Atomically replace the symlink
106− # See https://axialcorps.com/2013/07/03/atomically-replacing-files-and-directories/
107− old=$(readlink -f ${wrapperDir})
108− if [ -e "${wrapperDir}-tmp" ]; then
109− rm --force --recursive "${wrapperDir}-tmp"
111− ln --symbolic --force --no-dereference "$wrapperDir" "${wrapperDir}-tmp"
112− mv --no-target-directory "${wrapperDir}-tmp" "${wrapperDir}"
113− rm --force --recursive "$old"
116− ln --symbolic "$wrapperDir" "${wrapperDir}"
122− systemd.services."vmware-authdlauncher" = {
123− description = "VMware Authentification Daemon";
126− ExecStart = [ "${cfg.package}/bin/vmware-authdlauncher" ];
128− wantedBy = [ "multi-user.target" ];
131− systemd.services."vmware-networks-configuration" = {
132− description = "VMware Networks Configuration Generation";
133− unitConfig.ConditionPathExists = "!/etc/vmware/networking";
137− "${cfg.package}/bin/vmware-networks --postinstall vmware-player,0,1"
140− RemainAfterExit = "yes";
142− wantedBy = [ "multi-user.target" ];
145− systemd.services."vmware-networks" = {
146− description = "VMware Networks";
147− after = [ "vmware-networks-configuration.service" ];
148− requires = [ "vmware-networks-configuration.service" ];
151− ExecCondition = [ "${pkgs.kmod}/bin/modprobe vmnet" ];
152− ExecStart = [ "${cfg.package}/bin/vmware-networks --start" ];
153− ExecStop = [ "${cfg.package}/bin/vmware-networks --stop" ];
155− wantedBy = [ "multi-user.target" ];
158− systemd.services."vmware-usbarbitrator" = {
159− description = "VMware USB Arbitrator";
161− ExecStart = [ "${cfg.package}/bin/vmware-usbarbitrator -f" ];
163− wantedBy = [ "multi-user.target" ];
nixos/release-combined.nix−2
@@ -132,14 +132,12 @@ in rec {
132 # fails with kernel >= 5.15 https://github.com/NixOS/nixpkgs/pull/152505#issuecomment-1005049314
132 # fails with kernel >= 5.15 https://github.com/NixOS/nixpkgs/pull/152505#issuecomment-1005049314
133 #(onFullSupported "nixos.tests.nfs3.simple")
133 #(onFullSupported "nixos.tests.nfs3.simple")
134 (onFullSupported "nixos.tests.nfs4.simple")
134 (onFullSupported "nixos.tests.nfs4.simple")
135− (onSystems ["x86_64-linux"] "nixos.tests.oci-containers.podman")
136 (onFullSupported "nixos.tests.openssh")
135 (onFullSupported "nixos.tests.openssh")
137 (onFullSupported "nixos.tests.pantheon")
136 (onFullSupported "nixos.tests.pantheon")
138 (onFullSupported "nixos.tests.php.fpm")
137 (onFullSupported "nixos.tests.php.fpm")
139 (onFullSupported "nixos.tests.php.httpd")
138 (onFullSupported "nixos.tests.php.httpd")
140 (onFullSupported "nixos.tests.php.pcre")
139 (onFullSupported "nixos.tests.php.pcre")
141 (onFullSupported "nixos.tests.plasma5")
140 (onFullSupported "nixos.tests.plasma5")
142− (onSystems ["x86_64-linux"] "nixos.tests.podman")
143 (onFullSupported "nixos.tests.predictable-interface-names.predictableNetworkd")
141 (onFullSupported "nixos.tests.predictable-interface-names.predictableNetworkd")
144 (onFullSupported "nixos.tests.predictable-interface-names.predictable")
142 (onFullSupported "nixos.tests.predictable-interface-names.predictable")
145 (onFullSupported "nixos.tests.predictable-interface-names.unpredictableNetworkd")
143 (onFullSupported "nixos.tests.predictable-interface-names.unpredictableNetworkd")
@@ -150,13 +150,13 @@ in rec {
152 iso_plasma5 = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
152 iso_plasma5 = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
153− module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma5.nix;
153+ module = ./modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix;
154 type = "plasma5";
154 type = "plasma5";
155 inherit system;
155 inherit system;
158 iso_gnome = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
158 iso_gnome = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
159− module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix;
159+ module = ./modules/installer/cd-dvd/installation-cd-graphical-gnome.nix;
160 type = "gnome";
160 type = "gnome";
161 inherit system;
161 inherit system;
nixos/tests/all-terminfo.nixdeleted−31
@@ -1,31 +0,0 @@
1−import ./make-test-python.nix ({ pkgs, ... }: rec {
2− name = "all-terminfo";
3− meta = with pkgs.lib.maintainers; {
4− maintainers = [ jkarlson ];
7− nodes.machine = { pkgs, config, lib, ... }:
9− infoFilter = name: drv:
11− o = builtins.tryEval drv;
13− o.success && lib.isDerivation o.value && o.value ? outputs && builtins.elem "terminfo" o.value.outputs;
14− terminfos = lib.filterAttrs infoFilter pkgs;
15− excludedTerminfos = lib.filterAttrs (_: drv: !(builtins.elem drv.terminfo config.environment.systemPackages)) terminfos;
16− includedOuts = lib.filterAttrs (_: drv: builtins.elem drv.out config.environment.systemPackages) terminfos;
20− enableAllTerminfo = true;
21− etc."terminfo-missing".text = builtins.concatStringsSep "\n" (builtins.attrNames excludedTerminfos);
22− etc."terminfo-extra-outs".text = builtins.concatStringsSep "\n" (builtins.attrNames includedOuts);
28− machine.fail("grep . /etc/terminfo-missing >&2")
29− machine.fail("grep . /etc/terminfo-extra-outs >&2")
nixos/tests/all-tests.nix+3−21
@@ -35,7 +35,6 @@ in
35 agate = handleTest ./web-servers/agate.nix {};
35 agate = handleTest ./web-servers/agate.nix {};
36 agda = handleTest ./agda.nix {};
36 agda = handleTest ./agda.nix {};
37 airsonic = handleTest ./airsonic.nix {};
37 airsonic = handleTest ./airsonic.nix {};
38− allTerminfo = handleTest ./all-terminfo.nix {};
39 amazon-init-shell = handleTest ./amazon-init-shell.nix {};
38 amazon-init-shell = handleTest ./amazon-init-shell.nix {};
40 apfs = handleTest ./apfs.nix {};
39 apfs = handleTest ./apfs.nix {};
41 apparmor = handleTest ./apparmor.nix {};
40 apparmor = handleTest ./apparmor.nix {};
@@ -143,7 +142,6 @@ in
143 engelsystem = handleTest ./engelsystem.nix {};
142 engelsystem = handleTest ./engelsystem.nix {};
144 enlightenment = handleTest ./enlightenment.nix {};
143 enlightenment = handleTest ./enlightenment.nix {};
145 env = handleTest ./env.nix {};
144 env = handleTest ./env.nix {};
146− envoy = handleTest ./envoy.nix {};
147 ergo = handleTest ./ergo.nix {};
145 ergo = handleTest ./ergo.nix {};
148 ergochat = handleTest ./ergochat.nix {};
146 ergochat = handleTest ./ergochat.nix {};
149 etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
147 etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
@@ -196,12 +194,8 @@ in
196 hadoop_3_2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop_3_2; };
194 hadoop_3_2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop_3_2; };
197 hadoop2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop2; };
195 hadoop2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop2; };
198 haka = handleTest ./haka.nix {};
196 haka = handleTest ./haka.nix {};
199− haste-server = handleTest ./haste-server.nix {};
200 haproxy = handleTest ./haproxy.nix {};
197 haproxy = handleTest ./haproxy.nix {};
201 hardened = handleTest ./hardened.nix {};
198 hardened = handleTest ./hardened.nix {};
202− hbase1 = handleTest ./hbase.nix { package=pkgs.hbase1; };
203− hbase2 = handleTest ./hbase.nix { package=pkgs.hbase2; };
204− hbase3 = handleTest ./hbase.nix { package=pkgs.hbase3; };
205 hedgedoc = handleTest ./hedgedoc.nix {};
199 hedgedoc = handleTest ./hedgedoc.nix {};
206 herbstluftwm = handleTest ./herbstluftwm.nix {};
200 herbstluftwm = handleTest ./herbstluftwm.nix {};
207 installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
201 installed-tests = pkgs.recurseIntoAttrs (handleTest ./installed-tests {});
@@ -212,7 +206,6 @@ in
212 # hibernation. This test happens to work on x86_64-linux but
206 # hibernation. This test happens to work on x86_64-linux but
213 # not on other platforms.
207 # not on other platforms.
214 hibernate = handleTestOn ["x86_64-linux"] ./hibernate.nix {};
208 hibernate = handleTestOn ["x86_64-linux"] ./hibernate.nix {};
215− hibernate-systemd-stage-1 = handleTestOn ["x86_64-linux"] ./hibernate.nix { systemdStage1 = true; };
216 hitch = handleTest ./hitch {};
209 hitch = handleTest ./hitch {};
217 hledger-web = handleTest ./hledger-web.nix {};
210 hledger-web = handleTest ./hledger-web.nix {};
218 hocker-fetchdocker = handleTest ./hocker-fetchdocker {};
211 hocker-fetchdocker = handleTest ./hocker-fetchdocker {};
@@ -235,7 +228,6 @@ in
235 input-remapper = handleTest ./input-remapper.nix {};
228 input-remapper = handleTest ./input-remapper.nix {};
236 inspircd = handleTest ./inspircd.nix {};
229 inspircd = handleTest ./inspircd.nix {};
237 installer = handleTest ./installer.nix {};
230 installer = handleTest ./installer.nix {};
238− installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
239 invoiceplane = handleTest ./invoiceplane.nix {};
231 invoiceplane = handleTest ./invoiceplane.nix {};
240 iodine = handleTest ./iodine.nix {};
232 iodine = handleTest ./iodine.nix {};
241 ipfs = handleTest ./ipfs.nix {};
233 ipfs = handleTest ./ipfs.nix {};
@@ -282,8 +274,8 @@ in
282 login = handleTest ./login.nix {};
274 login = handleTest ./login.nix {};
283 logrotate = handleTest ./logrotate.nix {};
275 logrotate = handleTest ./logrotate.nix {};
284 loki = handleTest ./loki.nix {};
276 loki = handleTest ./loki.nix {};
285− lvm2 = handleTest ./lvm2 {};
286 lxd = handleTest ./lxd.nix {};
277 lxd = handleTest ./lxd.nix {};
278+ lxd-image = handleTest ./lxd-image.nix {};
287 lxd-nftables = handleTest ./lxd-nftables.nix {};
279 lxd-nftables = handleTest ./lxd-nftables.nix {};
288 lxd-image-server = handleTest ./lxd-image-server.nix {};
280 lxd-image-server = handleTest ./lxd-image-server.nix {};
289 #logstash = handleTest ./logstash.nix {};
281 #logstash = handleTest ./logstash.nix {};
@@ -368,9 +360,8 @@ in
368 nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
360 nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
369 nginx-sso = handleTest ./nginx-sso.nix {};
361 nginx-sso = handleTest ./nginx-sso.nix {};
370 nginx-variants = handleTest ./nginx-variants.nix {};
362 nginx-variants = handleTest ./nginx-variants.nix {};
371− nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {};
372 nitter = handleTest ./nitter.nix {};
363 nitter = handleTest ./nitter.nix {};
373− nix-ld = handleTest ./nix-ld.nix {};
364+ nix-ld = handleTest ./nix-ld {};
374 nix-serve = handleTest ./nix-serve.nix {};
365 nix-serve = handleTest ./nix-serve.nix {};
375 nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
366 nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
376 nixops = handleTest ./nixops/default.nix {};
367 nixops = handleTest ./nixops/default.nix {};
@@ -405,10 +396,9 @@ in
405 pam-file-contents = handleTest ./pam/pam-file-contents.nix {};
396 pam-file-contents = handleTest ./pam/pam-file-contents.nix {};
406 pam-oath-login = handleTest ./pam/pam-oath-login.nix {};
397 pam-oath-login = handleTest ./pam/pam-oath-login.nix {};
407 pam-u2f = handleTest ./pam/pam-u2f.nix {};
398 pam-u2f = handleTest ./pam/pam-u2f.nix {};
408− pam-ussh = handleTest ./pam/pam-ussh.nix {};
409 pantalaimon = handleTest ./matrix/pantalaimon.nix {};
399 pantalaimon = handleTest ./matrix/pantalaimon.nix {};
410 pantheon = handleTest ./pantheon.nix {};
400 pantheon = handleTest ./pantheon.nix {};
411− paperless = handleTest ./paperless.nix {};
401+ paperless-ng = handleTest ./paperless-ng.nix {};
412 parsedmarc = handleTest ./parsedmarc {};
402 parsedmarc = handleTest ./parsedmarc {};
413 pdns-recursor = handleTest ./pdns-recursor.nix {};
403 pdns-recursor = handleTest ./pdns-recursor.nix {};
414 peerflix = handleTest ./peerflix.nix {};
404 peerflix = handleTest ./peerflix.nix {};
@@ -524,12 +514,6 @@ in
524 systemd-confinement = handleTest ./systemd-confinement.nix {};
514 systemd-confinement = handleTest ./systemd-confinement.nix {};
525 systemd-cryptenroll = handleTest ./systemd-cryptenroll.nix {};
515 systemd-cryptenroll = handleTest ./systemd-cryptenroll.nix {};
526 systemd-escaping = handleTest ./systemd-escaping.nix {};
516 systemd-escaping = handleTest ./systemd-escaping.nix {};
527− systemd-initrd-btrfs-raid = handleTest ./systemd-initrd-btrfs-raid.nix {};
528− systemd-initrd-luks-keyfile = handleTest ./systemd-initrd-luks-keyfile.nix {};
529− systemd-initrd-luks-password = handleTest ./systemd-initrd-luks-password.nix {};
530− systemd-initrd-shutdown = handleTest ./systemd-shutdown.nix { systemdStage1 = true; };
531− systemd-initrd-simple = handleTest ./systemd-initrd-simple.nix {};
532− systemd-initrd-swraid = handleTest ./systemd-initrd-swraid.nix {};
533 systemd-journal = handleTest ./systemd-journal.nix {};
517 systemd-journal = handleTest ./systemd-journal.nix {};
534 systemd-machinectl = handleTest ./systemd-machinectl.nix {};
518 systemd-machinectl = handleTest ./systemd-machinectl.nix {};
535 systemd-networkd = handleTest ./systemd-networkd.nix {};
519 systemd-networkd = handleTest ./systemd-networkd.nix {};
@@ -538,7 +522,6 @@ in
538 systemd-networkd-ipv6-prefix-delegation = handleTest ./systemd-networkd-ipv6-prefix-delegation.nix {};
522 systemd-networkd-ipv6-prefix-delegation = handleTest ./systemd-networkd-ipv6-prefix-delegation.nix {};
539 systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
523 systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
540 systemd-nspawn = handleTest ./systemd-nspawn.nix {};
524 systemd-nspawn = handleTest ./systemd-nspawn.nix {};
541− systemd-shutdown = handleTest ./systemd-shutdown.nix {};
542 systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
525 systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
543 systemd-misc = handleTest ./systemd-misc.nix {};
526 systemd-misc = handleTest ./systemd-misc.nix {};
544 taskserver = handleTest ./taskserver.nix {};
527 taskserver = handleTest ./taskserver.nix {};
@@ -599,7 +582,6 @@ in
599 xautolock = handleTest ./xautolock.nix {};
582 xautolock = handleTest ./xautolock.nix {};
600 xfce = handleTest ./xfce.nix {};
583 xfce = handleTest ./xfce.nix {};
601 xmonad = handleTest ./xmonad.nix {};
584 xmonad = handleTest ./xmonad.nix {};
602− xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {};
603 xrdp = handleTest ./xrdp.nix {};
585 xrdp = handleTest ./xrdp.nix {};
604 xss-lock = handleTest ./xss-lock.nix {};
586 xss-lock = handleTest ./xss-lock.nix {};
605 xterm = handleTest ./xterm.nix {};
587 xterm = handleTest ./xterm.nix {};
@@ -182,6 +182,10 @@ in
182 atopgpu = makeTest {
182 atopgpu = makeTest {
183 name = "atop-atopgpu";
183 name = "atop-atopgpu";
184 nodes.machine = {
184 nodes.machine = {
185+ nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (getName pkg) [
185 programs.atop = {
189 programs.atop = {
186 enable = true;
190 enable = true;
187 atopgpu.enable = true;
191 atopgpu.enable = true;
@@ -201,6 +205,10 @@ in
201 everything = makeTest {
205 everything = makeTest {
202 name = "atop-everthing";
206 name = "atop-everthing";
203 nodes.machine = {
207 nodes.machine = {
208+ nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (getName pkg) [
204 programs.atop = {
212 programs.atop = {
205 enable = true;
213 enable = true;
206 settings = {
214 settings = {
nixos/tests/bcachefs.nix+1−1
@@ -1,6 +1,6 @@
1import ./make-test-python.nix ({ pkgs, ... }: {
1import ./make-test-python.nix ({ pkgs, ... }: {
2 name = "bcachefs";
2 name = "bcachefs";
3− meta.maintainers = with pkgs.lib.maintainers; [ Madouura ];
3+ meta.maintainers = with pkgs.lib.maintainers; [ chiiruno ];
5 nodes.machine = { pkgs, ... }: {
5 nodes.machine = { pkgs, ... }: {
6 virtualisation.emptyDiskImages = [ 4096 ];
6 virtualisation.emptyDiskImages = [ 4096 ];
@@ -42,7 +42,7 @@ let
42 nodes = { };
42 nodes = { };
43 testScript =
43 testScript =
45− machine = create_machine(${machineConfig})
45+ nodes.machine = create_machine(${machineConfig})
46 machine.start()
46 machine.start()
47 machine.wait_for_unit("multi-user.target")
47 machine.wait_for_unit("multi-user.target")
48 machine.succeed("nix store verify --no-trust -r --option experimental-features nix-command /run/current-system")
48 machine.succeed("nix store verify --no-trust -r --option experimental-features nix-command /run/current-system")
@@ -83,7 +83,7 @@ let
83 name = "boot-netboot-" + name;
83 name = "boot-netboot-" + name;
84 nodes = { };
84 nodes = { };
85 testScript = ''
85 testScript = ''
86− machine = create_machine(${machineConfig})
86+ nodes.machine = create_machine(${machineConfig})
87 machine.start()
87 machine.start()
88 machine.wait_for_unit("multi-user.target")
88 machine.wait_for_unit("multi-user.target")
89 machine.shutdown()
89 machine.shutdown()
@@ -138,7 +138,7 @@ in {
138 if os.system("qemu-img create -f qcow2 -F raw -b ${sdImage} ${mutableImage}") != 0:
138 if os.system("qemu-img create -f qcow2 -F raw -b ${sdImage} ${mutableImage}") != 0:
139 raise RuntimeError("Could not create mutable linked image")
139 raise RuntimeError("Could not create mutable linked image")
141− machine = create_machine(${machineConfig})
141+ nodes.machine = create_machine(${machineConfig})
142 machine.start()
142 machine.start()
143 machine.wait_for_unit("multi-user.target")
143 machine.wait_for_unit("multi-user.target")
144 machine.succeed("nix store verify -r --no-trust --option experimental-features nix-command /run/current-system")
144 machine.succeed("nix store verify -r --no-trust --option experimental-features nix-command /run/current-system")
nixos/tests/collectd.nix+1−6
@@ -3,14 +3,11 @@ import ./make-test-python.nix ({ pkgs, ... }: {
3 meta = { };
3 meta = { };
5 nodes.machine =
5 nodes.machine =
6− { pkgs, lib, ... }:
6+ { pkgs, ... }:
9 services.collectd = {
9 services.collectd = {
10 enable = true;
10 enable = true;
11− extraConfig = lib.mkBefore ''
14 plugins = {
11 plugins = {
15 rrdtool = ''
12 rrdtool = ''
16 DataDir "/var/lib/collectd/rrd"
13 DataDir "/var/lib/collectd/rrd"
@@ -29,8 +26,6 @@ import ./make-test-python.nix ({ pkgs, ... }: {
29 machine.succeed(f"rrdinfo {file} | logger")
26 machine.succeed(f"rrdinfo {file} | logger")
30 # check that this file contains a shortterm metric
27 # check that this file contains a shortterm metric
31 machine.succeed(f"rrdinfo {file} | grep -F 'ds[shortterm].min = '")
28 machine.succeed(f"rrdinfo {file} | grep -F 'ds[shortterm].min = '")
32− # check that interval was set before the plugins
33− machine.succeed(f"rrdinfo {file} | grep -F 'step = 30'")
34 # check that there are frequent updates
29 # check that there are frequent updates
35 machine.succeed(f"cp {file} before")
30 machine.succeed(f"cp {file} before")
36 machine.wait_until_fails(f"cmp before {file}")
31 machine.wait_until_fails(f"cmp before {file}")
nixos/tests/common/lxd/config.yamldeleted−24
nixos/tests/containers-ephemeral.nix+3−3
@@ -33,10 +33,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
33 machine.succeed("nixos-container start webserver")
33 machine.succeed("nixos-container start webserver")
35 with subtest("Container got its own root folder"):
35 with subtest("Container got its own root folder"):
36− machine.succeed("ls /run/nixos-containers/webserver")
36+ machine.succeed("ls /run/containers/webserver")
38 with subtest("Container persistent directory is not created"):
38 with subtest("Container persistent directory is not created"):
39− machine.fail("ls /var/lib/nixos-containers/webserver")
39+ machine.fail("ls /var/lib/containers/webserver")
41 # Since "start" returns after the container has reached
41 # Since "start" returns after the container has reached
42 # multi-user.target, we should now be able to access it.
42 # multi-user.target, we should now be able to access it.
@@ -49,6 +49,6 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
49 machine.fail(f"curl --fail --connect-timeout 2 http://{ip}/ > /dev/null")
49 machine.fail(f"curl --fail --connect-timeout 2 http://{ip}/ > /dev/null")
51 with subtest("Container's root folder was removed"):
51 with subtest("Container's root folder was removed"):
52− machine.fail("ls /run/nixos-containers/webserver")
52+ machine.fail("ls /run/containers/webserver")
nixos/tests/containers-imperative.nix+6−6
@@ -69,8 +69,8 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
70 with subtest(f"Put the root of {id2} into a bind mount"):
70 with subtest(f"Put the root of {id2} into a bind mount"):
71 machine.succeed(
71 machine.succeed(
72− f"mv /var/lib/nixos-containers/{id2} /id2-bindmount",
72+ f"mv /var/lib/containers/{id2} /id2-bindmount",
73− f"mount --bind /id2-bindmount /var/lib/nixos-containers/{id1}",
73+ f"mount --bind /id2-bindmount /var/lib/containers/{id1}",
76 ip1 = machine.succeed(f"nixos-container show-ip {id1}").rstrip()
76 ip1 = machine.succeed(f"nixos-container show-ip {id1}").rstrip()
@@ -88,7 +88,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
88 "Create a directory with a dummy file and bind-mount it into both containers."
88 "Create a directory with a dummy file and bind-mount it into both containers."
90 for id in id1, id2:
90 for id in id1, id2:
91− important_path = f"/var/lib/nixos-containers/{id}/very/important/data"
91+ important_path = f"/var/lib/containers/{id}/very/important/data"
92 machine.succeed(
92 machine.succeed(
93 f"mkdir -p {important_path}",
93 f"mkdir -p {important_path}",
94 f"mount --bind /nested-bindmount {important_path}",
94 f"mount --bind /nested-bindmount {important_path}",
@@ -154,13 +154,13 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
154 machine.succeed("grep -qF 'important data' /nested-bindmount/dummy")
154 machine.succeed("grep -qF 'important data' /nested-bindmount/dummy")
156 with subtest("Ensure that the container path is gone"):
156 with subtest("Ensure that the container path is gone"):
157− print(machine.succeed("ls -lsa /var/lib/nixos-containers"))
157+ print(machine.succeed("ls -lsa /var/lib/containers"))
158− machine.succeed(f"test ! -e /var/lib/nixos-containers/{id1}")
158+ machine.succeed(f"test ! -e /var/lib/containers/{id1}")
160 with subtest("Ensure that a failed container creation doesn'leave any state"):
160 with subtest("Ensure that a failed container creation doesn'leave any state"):
161 machine.fail(
161 machine.fail(
162 "nixos-container create b0rk --config-file ${brokenCfg}"
162 "nixos-container create b0rk --config-file ${brokenCfg}"
164− machine.succeed("test ! -e /var/lib/nixos-containers/b0rk")
164+ machine.succeed("test ! -e /var/lib/containers/b0rk")
nixos/tests/containers-tmpfs.nix+5−5
@@ -62,7 +62,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
62 machine.succeed(
62 machine.succeed(
63 tmpfs_cmd("touch /root/test.file"),
63 tmpfs_cmd("touch /root/test.file"),
64 tmpfs_cmd("ls -l /root | grep -q test.file"),
64 tmpfs_cmd("ls -l /root | grep -q test.file"),
65− "test -e /var/lib/nixos-containers/tmpfs/root/test.file",
65+ "test -e /var/lib/containers/tmpfs/root/test.file",
68 with subtest(
68 with subtest(
@@ -73,7 +73,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
73 tmpfs_cmd("touch /some/random/path/test.file"),
73 tmpfs_cmd("touch /some/random/path/test.file"),
74 tmpfs_cmd("test -e /some/random/path/test.file"),
74 tmpfs_cmd("test -e /some/random/path/test.file"),
76− machine.fail("test -e /var/lib/nixos-containers/tmpfs/some/random/path/test.file")
76+ machine.fail("test -e /var/lib/containers/tmpfs/some/random/path/test.file")
78 with subtest(
78 with subtest(
79 "files created in the hosts container dir in a path where a tmpfs "
79 "files created in the hosts container dir in a path where a tmpfs "
@@ -81,9 +81,9 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
81 + "the do not exist in the tmpfs"
81 + "the do not exist in the tmpfs"
83 machine.succeed(
83 machine.succeed(
84− "touch /var/lib/nixos-containers/tmpfs/var/test.file",
84+ "touch /var/lib/containers/tmpfs/var/test.file",
85− "test -e /var/lib/nixos-containers/tmpfs/var/test.file",
85+ "test -e /var/lib/containers/tmpfs/var/test.file",
86− "ls -l /var/lib/nixos-containers/tmpfs/var/ | grep -q test.file 2>/dev/null",
86+ "ls -l /var/lib/containers/tmpfs/var/ | grep -q test.file 2>/dev/null",
88 machine.fail(tmpfs_cmd("ls -l /var | grep -q test.file"))
88 machine.fail(tmpfs_cmd("ls -l /var | grep -q test.file"))
nixos/tests/custom-ca.nix+90−104
@@ -1,14 +1,9 @@
1# Checks that `security.pki` options are working in curl and the main browser
1# Checks that `security.pki` options are working in curl and the main browser
2−# engines: Gecko (via Firefox), Chromium, QtWebEngine (via qutebrowser) and
2+# engines: Gecko (via Firefox), Chromium, QtWebEngine (Falkon) and WebKitGTK
3−# WebKitGTK (via Midori). The test checks that certificates issued by a custom
3+# (via Midori). The test checks that certificates issued by a custom trusted
4−# trusted CA are accepted but those from an unknown CA are rejected.
4+# CA are accepted but those from an unknown CA are rejected.
6−{ system ? builtins.currentSystem,
6+import ./make-test-python.nix ({ pkgs, lib, ... }:
8− pkgs ? import ../.. { inherit system config; }
11−with import ../lib/testing-python.nix { inherit system pkgs; };
14 makeCert = { caName, domain }: pkgs.runCommand "example-cert"
9 makeCert = { caName, domain }: pkgs.runCommand "example-cert"
@@ -73,8 +68,24 @@ let
73 domain = "bad.example.com";
68 domain = "bad.example.com";
76− webserverConfig =
71+in
75+ meta.maintainers = with lib.maintainers; [ rnhmjoj ];
79+ nodes.machine = { pkgs, ... }:
80+ { imports = [ ./common/user-account.nix ./common/x11.nix ];
82+ # chromium-based browsers refuse to run as root
83+ test-support.displayManager.auto.user = "alice";
85+ # browsers may hang with the default memory
86+ virtualisation.memorySize = 600;
77− { networking.hosts."127.0.0.1" = [ "good.example.com" "bad.example.com" ];
88+ networking.hosts."127.0.0.1" = [ "good.example.com" "bad.example.com" ];
78 security.pki.certificateFiles = [ "${example-good-cert}/ca.crt" ];
89 security.pki.certificateFiles = [ "${example-good-cert}/ca.crt" ];
80 services.nginx.enable = true;
91 services.nginx.enable = true;
@@ -96,98 +107,73 @@ let
96 return 200 'It does not work!';
107 return 200 'It does not work!';
101− curlTest = makeTest {
102− name = "custom-ca-curl";
103− meta.maintainers = with lib.maintainers; [ rnhmjoj ];
104− nodes.machine = { ... }: webserverConfig;
106− with subtest("Good certificate is trusted in curl"):
107− machine.wait_for_unit("nginx")
108− machine.wait_for_open_port(443)
109− machine.succeed("curl -fv https://good.example.com")
111− with subtest("Unknown CA is untrusted in curl"):
112− machine.fail("curl -fv https://bad.example.com")
116− mkBrowserTest = browser: testParams: makeTest {
117− name = "custom-ca-${browser}";
118− meta.maintainers = with lib.maintainers; [ rnhmjoj ];
122− nodes.machine = { pkgs, ... }:
124− [ ./common/user-account.nix
129− # chromium-based browsers refuse to run as root
130− test-support.displayManager.auto.user = "alice";
132− # browsers may hang with the default memory
133− virtualisation.memorySize = 600;
135− environment.systemPackages = [ pkgs.xdotool pkgs.${browser} ];
111+ environment.systemPackages = with pkgs; [
138− testScript = ''
114+ chromium
139− from typing import Tuple
115+ qutebrowser
140− def execute_as(user: str, cmd: str) -> Tuple[int, str]:
116+ midori
142− Run a shell command as a specific user.
144− return machine.execute(f"sudo -u {user} {cmd}")
147− def wait_for_window_as(user: str, cls: str) -> None:
149− Wait until a X11 window of a given user appears.
152− def window_is_visible(last_try: bool) -> bool:
153− ret, stdout = execute_as(user, f"xdotool search --onlyvisible --class {cls}")
155− machine.log(f"Last chance to match {cls} on the window list")
158− with machine.nested("Waiting for a window to appear"):
159− retry(window_is_visible)
163− machine.wait_for_x()
165− command = "${browser} ${testParams.args or ""}"
166− with subtest("Good certificate is trusted in ${browser}"):
168− "alice", f"{command} https://good.example.com >&2 &"
170− wait_for_window_as("alice", "${browser}")
172− execute_as("alice", "xdotool key ctrl+r") # reload to be safe
173− machine.wait_for_text("It works!")
174− machine.screenshot("good${browser}")
175− execute_as("alice", "xdotool key ctrl+w") # close tab
177− with subtest("Unknown CA is untrusted in ${browser}"):
178− execute_as("alice", f"{command} https://bad.example.com >&2 &")
179− machine.wait_for_text("${testParams.error}")
180− machine.screenshot("bad${browser}")
186−{
120+ testScript = ''
187− curl = curlTest;
121+ from typing import Tuple
188−} // pkgs.lib.mapAttrs mkBrowserTest {
122+ def execute_as(user: str, cmd: str) -> Tuple[int, str]:
124+ Run a shell command as a specific user.
126+ return machine.execute(f"sudo -u {user} {cmd}")
129+ def wait_for_window_as(user: str, cls: str) -> None:
131+ Wait until a X11 window of a given user appears.
134+ def window_is_visible(last_try: bool) -> bool:
135+ ret, stdout = execute_as(user, f"xdotool search --onlyvisible --class {cls}")
137+ machine.log(f"Last chance to match {cls} on the window list")
140+ with machine.nested("Waiting for a window to appear"):
141+ retry(window_is_visible)
146+ with subtest("Good certificate is trusted in curl"):
147+ machine.wait_for_unit("nginx")
148+ machine.wait_for_open_port(443)
149+ machine.succeed("curl -fv https://good.example.com")
151+ with subtest("Unknown CA is untrusted in curl"):
152+ machine.fail("curl -fv https://bad.example.com")
189− firefox = { error = "Security Risk"; };
155+ "firefox": "Security Risk",
190− chromium = { error = "not private"; };
156+ "chromium": "not private",
191− qutebrowser = { args = "-T"; error = "Certificate error"; };
157+ "qutebrowser -T": "Certificate error",
192− midori = { error = "Security"; };
158+ "midori": "Security"
161+ machine.wait_for_x()
162+ for command, error in browsers.items():
163+ browser = command.split()[0]
164+ with subtest("Good certificate is trusted in " + browser):
166+ "alice", f"{command} https://good.example.com >&2 &"
168+ wait_for_window_as("alice", browser)
169+ machine.wait_for_text("It works!")
170+ machine.screenshot("good" + browser)
171+ execute_as("alice", "xdotool key ctrl+w") # close tab
173+ with subtest("Unknown CA is untrusted in " + browser):
174+ execute_as("alice", f"{command} https://bad.example.com >&2 &")
175+ machine.wait_for_text(error)
176+ machine.screenshot("bad" + browser)
177+ machine.succeed("pkill -f " + browser)
nixos/tests/docker-tools-cross.nix+2−2
@@ -7,7 +7,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
9 remoteSystem =
9 remoteSystem =
10− if pkgs.stdenv.hostPlatform.system == "aarch64-linux"
10+ if pkgs.system == "aarch64-linux"
11 then "x86_64-linux"
11 then "x86_64-linux"
12 else "aarch64-linux";
12 else "aarch64-linux";
@@ -18,7 +18,7 @@ let
19 # NOTE: Since this file can't control where the test will be _run_ we don't
19 # NOTE: Since this file can't control where the test will be _run_ we don't
20 # cross-compile _to_ a different system but _from_ a different system
20 # cross-compile _to_ a different system but _from_ a different system
21− crossSystem = pkgs.stdenv.hostPlatform.system;
21+ crossSystem = pkgs.system;
24 hello1 = remoteCrossPkgs.dockerTools.buildImage {
24 hello1 = remoteCrossPkgs.dockerTools.buildImage {
nixos/tests/docker-tools.nix+1−1
@@ -315,7 +315,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
315 "docker inspect ${pkgs.dockerTools.examples.cross.imageName} "
315 "docker inspect ${pkgs.dockerTools.examples.cross.imageName} "
316 + "| ${pkgs.jq}/bin/jq -r .[].Architecture"
316 + "| ${pkgs.jq}/bin/jq -r .[].Architecture"
317 ).strip()
317 ).strip()
318− == "${if pkgs.stdenv.hostPlatform.system == "aarch64-linux" then "amd64" else "arm64"}"
318+ == "${if pkgs.system == "aarch64-linux" then "amd64" else "arm64"}"
321 with subtest("buildLayeredImage doesn't dereference /nix/store symlink layers"):
321 with subtest("buildLayeredImage doesn't dereference /nix/store symlink layers"):
nixos/tests/emacs-daemon.nix+1−1
@@ -33,7 +33,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
35 # connects to the daemon
35 # connects to the daemon
36− machine.succeed("emacsclient --no-wait --frame-parameters='((display . \"'\"$DISPLAY\"'\"))' --create-frame $EDITOR >&2")
36+ machine.succeed("emacsclient --create-frame $EDITOR >&2 &")
38 # checks that Emacs shows the edited filename
38 # checks that Emacs shows the edited filename
39 machine.wait_for_text("emacseditor")
39 machine.wait_for_text("emacseditor")
nixos/tests/envoy.nixdeleted−33
@@ -1,33 +0,0 @@
1−import ./make-test-python.nix ({ pkgs, lib, ...} : {
3− meta = with pkgs.lib.maintainers; {
4− maintainers = [ cameronnemo ];
7− nodes.machine = { pkgs, ... }: {
8− services.envoy.enable = true;
9− services.envoy.settings = {
11− access_log_path = "/dev/null";
15− address = "127.0.0.1";
29− machine.wait_for_unit("envoy.service")
30− machine.wait_for_open_port(9901)
31− machine.wait_until_succeeds("curl -fsS localhost:9901/ready")
nixos/tests/fenics.nix+1−1
@@ -44,6 +44,6 @@ in
44 { nodes, ... }:
44 { nodes, ... }:
46 start_all()
46 start_all()
47− fenicsnode.succeed("${fenicsScript}")
47+ node1.succeed("${fenicsScript}")
nixos/tests/gitlab.nix+25−298
@@ -1,31 +1,9 @@
1−# This test runs gitlab and performs the following tests:
1+# This test runs gitlab and checks if it works
6−# - Creating Merge Requests and merging them
7−# - Opening and closing issues.
8−# - Downloading repository archives as tar.gz and tar.bz2
9−import ./make-test-python.nix ({ pkgs, lib, ... }:
14− inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey;
15 initialRootPassword = "notproduction";
4 initialRootPassword = "notproduction";
18− aliceUsername = "alice";
20− alicePassword = "alicepassword";
21− aliceProjectId = "2";
22− aliceProjectName = "test-alice";
26− bobPassword = "bobpassword";
6+import ./make-test-python.nix ({ pkgs, lib, ...} : with lib; {
29 name = "gitlab";
7 name = "gitlab";
30 meta = with pkgs.lib.maintainers; {
8 meta = with pkgs.lib.maintainers; {
31 maintainers = [ globin yayayayaka ];
9 maintainers = [ globin yayayayaka ];
@@ -53,8 +31,6 @@ in {
56− services.openssh.enable = true;
58 services.dovecot2 = {
34 services.dovecot2 = {
59 enable = true;
35 enable = true;
60 enableImap = true;
36 enableImap = true;
@@ -101,43 +77,8 @@ in {
101 password = initialRootPassword;
77 password = initialRootPassword;
104− createUserAlice = pkgs.writeText "create-user-alice.json" (builtins.toJSON rec {
105− username = aliceUsername;
107− email = "alice@localhost";
108− password = alicePassword;
109− skip_confirmation = true;
112− createUserBob = pkgs.writeText "create-user-bob.json" (builtins.toJSON rec {
113− username = bobUsername;
115− email = "bob@localhost";
116− password = bobPassword;
117− skip_confirmation = true;
120− aliceAuth = pkgs.writeText "alice-auth.json" (builtins.toJSON {
121− grant_type = "password";
122− username = aliceUsername;
123− password = alicePassword;
126− bobAuth = pkgs.writeText "bob-auth.json" (builtins.toJSON {
127− grant_type = "password";
128− username = bobUsername;
129− password = bobPassword;
132− aliceAddSSHKey = pkgs.writeText "alice-add-ssh-key.json" (builtins.toJSON {
134− title = "snakeoil@nixos";
135− key = snakeOilPublicKey;
138− createProjectAlice = pkgs.writeText "create-project-alice.json" (builtins.toJSON {
80+ createProject = pkgs.writeText "create-project.json" (builtins.toJSON {
139− name = aliceProjectName;
81+ name = "test";
140− visibility = "public";
143 putFile = pkgs.writeText "put-file.json" (builtins.toJSON {
84 putFile = pkgs.writeText "put-file.json" (builtins.toJSON {
@@ -148,23 +89,6 @@ in {
148 commit_message = "create a new file";
89 commit_message = "create a new file";
151− mergeRequest = pkgs.writeText "merge-request.json" (builtins.toJSON {
153− target_project_id = aliceProjectId;
154− source_branch = "master";
155− target_branch = "master";
156− title = "Add some other file";
159− newIssue = pkgs.writeText "new-issue.json" (builtins.toJSON {
160− title = "useful issue title";
163− closeIssue = pkgs.writeText "close-issue.json" (builtins.toJSON {
165− state_event = "close";
168 # Wait for all GitLab services to be fully started.
92 # Wait for all GitLab services to be fully started.
169 waitForServices = ''
93 waitForServices = ''
170 gitlab.wait_for_unit("gitaly.service")
94 gitlab.wait_for_unit("gitaly.service")
@@ -181,8 +105,6 @@ in {
181 # The actual test of GitLab. Only push data to GitLab if
105 # The actual test of GitLab. Only push data to GitLab if
182 # `doSetup` is is true.
106 # `doSetup` is is true.
183 test = doSetup: ''
107 test = doSetup: ''
184− GIT_SSH_COMMAND = "ssh -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=/dev/null"
186 gitlab.succeed(
108 gitlab.succeed(
187 "curl -isSf http://gitlab | grep -i location | grep http://gitlab/users/sign_in"
109 "curl -isSf http://gitlab | grep -i location | grep http://gitlab/users/sign_in"
@@ -193,222 +115,27 @@ in {
193 "echo \"Authorization: Bearer $(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers"
115 "echo \"Authorization: Bearer $(curl -X POST -H 'Content-Type: application/json' -d @${auth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers"
195 '' + optionalString doSetup ''
117 '' + optionalString doSetup ''
196− with subtest("Create user Alice"):
198− """[ "$(curl -o /dev/null -w '%{http_code}' -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createUserAlice} http://gitlab/api/v4/users)" = "201" ]"""
201− "echo \"Authorization: Bearer $(curl -X POST -H 'Content-Type: application/json' -d @${aliceAuth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers-alice"
204− with subtest("Create user Bob"):
206− """ [ "$(curl -o /dev/null -w '%{http_code}' -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createUserBob} http://gitlab/api/v4/users)" = "201" ]"""
209− "echo \"Authorization: Bearer $(curl -X POST -H 'Content-Type: application/json' -d @${bobAuth} http://gitlab/oauth/token | ${pkgs.jq}/bin/jq -r '.access_token')\" >/tmp/headers-bob"
212− with subtest("Setup Git and SSH for Alice"):
213− gitlab.succeed("git config --global user.name Alice")
214− gitlab.succeed("git config --global user.email alice@nixos.invalid")
215− gitlab.succeed("mkdir -m 700 /root/.ssh")
216− gitlab.succeed("cat ${snakeOilPrivateKey} > /root/.ssh/id_ecdsa")
217− gitlab.succeed("chmod 600 /root/.ssh/id_ecdsa")
224− -H 'Content-Type: application/json' \
225− -H @/tmp/headers-alice -d @${aliceAddSSHKey} \
226− http://gitlab/api/v4/user/keys)" = "201" ]
230− with subtest("Create a new repository"):
231− # Alice creates a new repository
238− -H 'Content-Type: application/json' \
239− -H @/tmp/headers-alice \
240− -d @${createProjectAlice} \
241− http://gitlab/api/v4/projects)" = "201" ]
245− # Alice commits an initial commit
252− -H 'Content-Type: application/json' \
253− -H @/tmp/headers-alice \
255− http://gitlab/api/v4/projects/${aliceProjectId}/repository/files/some-file.txt)" = "201" ]"""
258− with subtest("git clone over HTTP"):
260− """git clone http://gitlab/alice/${aliceProjectName}.git clone-via-http""",
264− with subtest("Push a commit via SSH"):
266− f"""GIT_SSH_COMMAND="{GIT_SSH_COMMAND}" git clone gitlab@gitlab:alice/${aliceProjectName}.git""",
270− """echo "a commit sent over ssh" > ${aliceProjectName}/ssh.txt"""
274− cd ${aliceProjectName} || exit 1
280− cd ${aliceProjectName} || exit 1
281− git commit -m "Add a commit to be sent over ssh"
286− cd ${aliceProjectName} || exit 1
287− GIT_SSH_COMMAND="{GIT_SSH_COMMAND}" git push --set-upstream origin master
292− with subtest("Fork a project"):
293− # Bob forks Alice's project
300− -H 'Content-Type: application/json' \
301− -H @/tmp/headers-bob \
302− http://gitlab/api/v4/projects/${aliceProjectId}/fork)" = "201" ]
306− # Bob creates a commit
307− gitlab.wait_until_succeeds(
313− -H 'Content-Type: application/json' \
314− -H @/tmp/headers-bob \
316− http://gitlab/api/v4/projects/${bobProjectId}/repository/files/some-other-file.txt)" = "201" ]
320− with subtest("Create a Merge Request"):
321− # Bob opens a merge request against Alice's repository
322− gitlab.wait_until_succeeds(
328− -H 'Content-Type: application/json' \
329− -H @/tmp/headers-bob \
330− -d @${mergeRequest} \
331− http://gitlab/api/v4/projects/${bobProjectId}/merge_requests)" = "201" ]
335− # Alice merges the MR
336− gitlab.wait_until_succeeds(
342− -H 'Content-Type: application/json' \
343− -H @/tmp/headers-alice \
344− -d @${mergeRequest} \
345− http://gitlab/api/v4/projects/${aliceProjectId}/merge_requests/1/merge)" = "200" ]
349− with subtest("Create an Issue"):
350− # Bob opens an issue on Alice's repository
351− gitlab.succeed(
118+ gitlab.succeed(
356− -H 'Content-Type: application/json' \
119+ """[ "$(curl -o /dev/null -w '%{http_code}' -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${createProject} http://gitlab/api/v4/projects)" = "201" ]"""
357− -H @/tmp/headers-bob \
359− http://gitlab/api/v4/projects/${aliceProjectId}/issues)" = "201" ]
363− # Alice closes the issue
122+ """[ "$(curl -o /dev/null -w '%{http_code}' -X POST -H 'Content-Type: application/json' -H @/tmp/headers -d @${putFile} http://gitlab/api/v4/projects/2/repository/files/some-file.txt)" = "201" ]"""
364− gitlab.wait_until_succeeds(
370− -H 'Content-Type: application/json' \
371− -H @/tmp/headers-alice -d @${closeIssue} http://gitlab/api/v4/projects/${aliceProjectId}/issues/1)" = "200" ]
375− with subtest("Download archive.tar.gz"):
376− gitlab.succeed(
125+ gitlab.succeed(
381− -H @/tmp/headers-alice \
382− http://gitlab/api/v4/projects/${aliceProjectId}/repository/archive.tar.gz)" = "200" ]
126+ """[ "$(curl -o /dev/null -w '%{http_code}' -H @/tmp/headers http://gitlab/api/v4/projects/2/repository/archive.tar.gz)" = "200" ]"""
385− gitlab.succeed(
128+ gitlab.succeed(
388− -H @/tmp/headers-alice \
389− http://gitlab/api/v4/projects/${aliceProjectId}/repository/archive.tar.gz > /tmp/archive.tar.gz
129+ """curl -H @/tmp/headers http://gitlab/api/v4/projects/2/repository/archive.tar.gz > /tmp/archive.tar.gz"""
392− gitlab.succeed("test -s /tmp/archive.tar.gz")
394− with subtest("Download archive.tar.bz2"):
395− gitlab.succeed(
131+ gitlab.succeed(
400− -H @/tmp/headers-alice \
401− http://gitlab/api/v4/projects/${aliceProjectId}/repository/archive.tar.bz2)" = "200" ]
132+ """[ "$(curl -o /dev/null -w '%{http_code}' -H @/tmp/headers http://gitlab/api/v4/projects/2/repository/archive.tar.bz2)" = "200" ]"""
404− gitlab.succeed(
134+ gitlab.succeed(
407− -H @/tmp/headers-alice \
408− http://gitlab/api/v4/projects/${aliceProjectId}/repository/archive.tar.bz2 > /tmp/archive.tar.bz2
135+ """curl -o /dev/null -w '%{http_code}' -H @/tmp/headers http://gitlab/api/v4/projects/2/repository/archive.tar.bz2 > /tmp/archive.tar.bz2"""
137+ gitlab.succeed("test -s /tmp/archive.tar.gz")
411− gitlab.succeed("test -s /tmp/archive.tar.bz2")
138+ gitlab.succeed("test -s /tmp/archive.tar.bz2")
nixos/tests/haste-server.nixdeleted−23
@@ -1,23 +0,0 @@
1−import ./make-test-python.nix ({ pkgs, lib, ... }:
3− name = "haste-server";
4− meta.maintainers = with lib.maintainers; [ mkg20001 ];
6− nodes.machine = { pkgs, ... }: {
7− environment.systemPackages = with pkgs; [
12− services.haste-server = {
18− machine.wait_for_unit("haste-server")
19− machine.wait_until_succeeds("curl -s localhost:7777")
20− machine.succeed('curl -s -X POST http://localhost:7777/documents -d "Hello World!" > bla')
21− machine.succeed('curl http://localhost:7777/raw/$(cat bla | jq -r .key) | grep "Hello World"')
nixos/tests/hbase.nixdeleted−30
@@ -1,30 +0,0 @@
1−import ./make-test-python.nix ({ pkgs, lib, package ? pkgs.hbase, ... }:
5− meta = with lib.maintainers; {
6− maintainers = [ illustris ];
10− hbase = { pkgs, ... }: {
14− # Needed for standalone mode in hbase 2+
15− # This setting and standalone mode are not suitable for production
16− settings."hbase.unsafe.stream.capability.enforce" = "false";
18− environment.systemPackages = with pkgs; [
26− hbase.wait_for_unit("hbase.service")
27− hbase.wait_until_succeeds("echo \"create 't1','f1'\" | sudo -u hbase hbase shell -n")
28− assert "NAME => 'f1'" in hbase.succeed("echo \"describe 't1'\" | sudo -u hbase hbase shell -n")
nixos/tests/hibernate.nix+1−12
@@ -3,7 +3,6 @@
3{ system ? builtins.currentSystem
3{ system ? builtins.currentSystem
4, config ? {}
4, config ? {}
5, pkgs ? import ../.. { inherit system config; }
5, pkgs ? import ../.. { inherit system config; }
6−, systemdStage1 ? false
9with import ../lib/testing-python.nix { inherit system pkgs; };
8with import ../lib/testing-python.nix { inherit system pkgs; };
@@ -30,11 +29,6 @@ let
30 "/".device = "/dev/vda2";
29 "/".device = "/dev/vda2";
32 swapDevices = mkOverride 0 [ { device = "/dev/vda1"; } ];
31 swapDevices = mkOverride 0 [ { device = "/dev/vda1"; } ];
33− boot.resumeDevice = mkIf systemdStage1 "/dev/vda1";
34− boot.initrd.systemd = mkIf systemdStage1 {
36− emergencyAccess = true;
39 installedSystem = (import ../lib/eval-config.nix {
33 installedSystem = (import ../lib/eval-config.nix {
40 inherit system;
34 inherit system;
@@ -45,7 +39,7 @@ in makeTest {
47 # System configuration used for installing the installedConfig from above.
41 # System configuration used for installing the installedConfig from above.
48− machine = { config, lib, pkgs, ... }: with lib; {
42+ nodes.machine = { config, lib, pkgs, ... }: with lib; {
49 imports = [
43 imports = [
50 ../modules/profiles/installation-device.nix
44 ../modules/profiles/installation-device.nix
51 ../modules/profiles/base.nix
45 ../modules/profiles/base.nix
@@ -123,11 +117,6 @@ in makeTest {
123 resume = create_named_machine("resume")
117 resume = create_named_machine("resume")
124 resume.start()
118 resume.start()
125 resume.succeed("grep 'not persisted to disk' /run/test/suspended")
119 resume.succeed("grep 'not persisted to disk' /run/test/suspended")
127− # Ensure we don't restore from hibernation when booting again
129− resume.wait_for_unit("default.target")
130− resume.fail("grep 'not persisted to disk' /run/test/suspended")
nixos/tests/installer-systemd-stage-1.nixdeleted−33
@@ -1,33 +0,0 @@
1−{ system ? builtins.currentSystem
3−, pkgs ? import ../.. { inherit system config; }
7− # Some of these tests don't work with systemd stage 1 yet. Uncomment
9− inherit (import ./installer.nix { inherit system config pkgs; systemdStage1 = true; })
14− # encryptedFSWithKeyfile
27− simpleUefiGrubSpecialisation
28− simpleUefiSystemdBoot
nixos/tests/installer.nix+1−15
@@ -1,7 +1,6 @@
1{ system ? builtins.currentSystem,
1{ system ? builtins.currentSystem,
2 config ? {},
2 config ? {},
3− pkgs ? import ../.. { inherit system config; },
3+ pkgs ? import ../.. { inherit system config; }
7with import ../lib/testing-python.nix { inherit system pkgs; };
6with import ../lib/testing-python.nix { inherit system pkgs; };
@@ -24,8 +23,6 @@ let
24 # To ensure that we can rebuild the grub configuration on the nixos-rebuild
23 # To ensure that we can rebuild the grub configuration on the nixos-rebuild
25 system.extraDependencies = with pkgs; [ stdenvNoCC ];
24 system.extraDependencies = with pkgs; [ stdenvNoCC ];
27− ${optionalString systemdStage1 "boot.initrd.systemd.enable = true;"}
29 ${optionalString (bootLoader == "grub") ''
26 ${optionalString (bootLoader == "grub") ''
30 boot.loader.grub.version = ${toString grubVersion};
27 boot.loader.grub.version = ${toString grubVersion};
31 ${optionalString (grubVersion == 1) ''
28 ${optionalString (grubVersion == 1) ''
@@ -293,8 +290,6 @@ let
293 virtualisation.cores = 8;
290 virtualisation.cores = 8;
294 virtualisation.memorySize = 1536;
291 virtualisation.memorySize = 1536;
296− boot.initrd.systemd.enable = systemdStage1;
298 # Use a small /dev/vdb as the root disk for the
293 # Use a small /dev/vdb as the root disk for the
299 # installer. This ensures the target disk (/dev/vda) is
294 # installer. This ensures the target disk (/dev/vda) is
300 # the same during and after installation.
295 # the same during and after installation.
@@ -304,13 +299,6 @@ let
304 virtualisation.qemu.diskInterface =
299 virtualisation.qemu.diskInterface =
305 if grubVersion == 1 then "scsi" else "virtio";
300 if grubVersion == 1 then "scsi" else "virtio";
307− # We don't want to have any networking in the guest whatsoever.
308− # Also, if any vlans are enabled, the guest will reboot
309− # (with a different configuration for legacy reasons),
310− # and spend 5 minutes waiting for the vlan interface to show up
311− # (which will never happen).
312− virtualisation.vlans = [];
314 boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true;
302 boot.loader.systemd-boot.enable = mkIf (bootLoader == "systemd-boot") true;
316 hardware.enableAllFirmware = mkForce false;
304 hardware.enableAllFirmware = mkForce false;
@@ -324,8 +312,6 @@ let
324 desktop-file-utils
312 desktop-file-utils
326 docbook_xsl_ns
314 docbook_xsl_ns
329 libxml2.bin
315 libxml2.bin
330 libxslt.bin
316 libxslt.bin
331 nixos-artwork.wallpapers.simple-dark-gray-bottom
317 nixos-artwork.wallpapers.simple-dark-gray-bottom
nixos/tests/kexec.nix+16−44
@@ -1,50 +1,22 @@
1+# Test whether fast reboots via kexec work.
1−import ./make-test-python.nix ({ pkgs, lib, ... }: {
3+import ./make-test-python.nix ({ pkgs, lib, ...} : {
2 name = "kexec";
4 name = "kexec";
3 meta = with lib.maintainers; {
5 meta = with lib.maintainers; {
4− maintainers = [ flokli lassulus ];
6+ maintainers = [ eelco ];
9− virtualisation.vlans = [ ];
10− virtualisation.memorySize = 4 * 1024;
11− virtualisation.useBootLoader = true;
12− virtualisation.useEFIBoot = true;
13− boot.loader.systemd-boot.enable = true;
14− boot.loader.efi.canTouchEfiVariables = true;
17− node2 = { modulesPath, ... }: {
18− virtualisation.vlans = [ ];
19− environment.systemPackages = [ pkgs.hello ];
21− "${modulesPath}/installer/kexec/kexec-boot.nix"
22− "${modulesPath}/profiles/minimal.nix"
27− testScript = { nodes, ... }: ''
9+ nodes.machine = { ... }:
28− # Test whether reboot via kexec works.
10+ { virtualisation.vlans = [ ]; };
29− node1.wait_for_unit("multi-user.target")
30− node1.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"')
31− node1.execute("systemctl kexec >&2 &", check_return=False)
32− node1.connected = False
34− node1.wait_for_unit("multi-user.target")
36− # Check if the machine with kexec-boot.nix profile boots up
37− node2.wait_for_unit("multi-user.target")
40− # Kexec node1 to the toplevel of node2 via the kexec-boot script
41− node1.succeed('touch /run/foo')
43− node1.execute('${nodes.node2.config.system.build.kexecBoot}/kexec-boot', check_return=False)
44− node1.succeed('! test -e /run/foo')
45− node1.succeed('hello')
46− node1.succeed('[ "$(hostname)" = "node2" ]')
48− node1.shutdown()
12+ testScript =
14+ machine.wait_for_unit("multi-user.target")
15+ machine.succeed('kexec --load /run/current-system/kernel --initrd /run/current-system/initrd --command-line "$(</proc/cmdline)"')
16+ machine.execute("systemctl kexec >&2 &", check_return=False)
17+ machine.connected = False
19+ machine.wait_for_unit("multi-user.target")
nixos/tests/keycloak.nix+11−15
@@ -4,7 +4,7 @@
6 certs = import ./common/acme/server/snakeoil-certs.nix;
6 certs = import ./common/acme/server/snakeoil-certs.nix;
7− frontendUrl = "https://${certs.domain}";
7+ frontendUrl = "https://${certs.domain}/auth";
8 initialAdminPassword = "h4IhoJFnt2iQIR9";
8 initialAdminPassword = "h4IhoJFnt2iQIR9";
10 keycloakTest = import ./make-test-python.nix (
10 keycloakTest = import ./make-test-python.nix (
@@ -27,23 +27,20 @@ let
28 services.keycloak = {
28 services.keycloak = {
29 enable = true;
29 enable = true;
31− hostname = certs.domain;
33− inherit initialAdminPassword;
30+ inherit frontendUrl initialAdminPassword;
34− sslCertificate = "${certs.${certs.domain}.cert}";
31+ sslCertificate = certs.${certs.domain}.cert;
35− sslCertificateKey = "${certs.${certs.domain}.key}";
32+ sslCertificateKey = certs.${certs.domain}.key;
36 database = {
33 database = {
37 type = databaseType;
34 type = databaseType;
38 username = "bogus";
35 username = "bogus";
40− passwordFile = "${pkgs.writeText "dbPassword" "wzf6vOCbPp6cqTH"}";
36+ passwordFile = pkgs.writeText "dbPassword" "wzf6vOCbPp6cqTH";
42 plugins = with config.services.keycloak.package.plugins; [
38 plugins = with config.services.keycloak.package.plugins; [
43 keycloak-discord
39 keycloak-discord
44 keycloak-metrics-spi
40 keycloak-metrics-spi
47 environment.systemPackages = with pkgs; [
44 environment.systemPackages = with pkgs; [
48 xmlstarlet
45 xmlstarlet
@@ -102,9 +99,9 @@ let
103 keycloak.start()
100 keycloak.start()
104 keycloak.wait_for_unit("keycloak.service")
101 keycloak.wait_for_unit("keycloak.service")
105− keycloak.wait_for_open_port(443)
106 keycloak.wait_until_succeeds("curl -sSf ${frontendUrl}")
102 keycloak.wait_until_succeeds("curl -sSf ${frontendUrl}")
108 ### Realm Setup ###
105 ### Realm Setup ###
110 # Get an admin interface access token
107 # Get an admin interface access token
@@ -120,8 +117,8 @@ let
120 # Register the metrics SPI
117 # Register the metrics SPI
121 keycloak.succeed(
118 keycloak.succeed(
122 "${pkgs.jre}/bin/keytool -import -alias snakeoil -file ${certs.ca.cert} -storepass aaaaaa -keystore cacert.jks -noprompt",
119 "${pkgs.jre}/bin/keytool -import -alias snakeoil -file ${certs.ca.cert} -storepass aaaaaa -keystore cacert.jks -noprompt",
123− "KC_OPTS='-Djavax.net.ssl.trustStore=cacert.jks -Djavax.net.ssl.trustStorePassword=aaaaaa' kcadm.sh config credentials --server '${frontendUrl}' --realm master --user admin --password '${initialAdminPassword}'",
120+ "KC_OPTS='-Djavax.net.ssl.trustStore=cacert.jks -Djavax.net.ssl.trustStorePassword=aaaaaa' ${pkgs.keycloak}/bin/kcadm.sh config credentials --server '${frontendUrl}' --realm master --user admin --password '${initialAdminPassword}'",
124− "KC_OPTS='-Djavax.net.ssl.trustStore=cacert.jks -Djavax.net.ssl.trustStorePassword=aaaaaa' kcadm.sh update events/config -s 'eventsEnabled=true' -s 'adminEventsEnabled=true' -s 'eventsListeners+=metrics-listener'",
121+ "KC_OPTS='-Djavax.net.ssl.trustStore=cacert.jks -Djavax.net.ssl.trustStorePassword=aaaaaa' ${pkgs.keycloak}/bin/kcadm.sh update events/config -s 'eventsEnabled=true' -s 'adminEventsEnabled=true' -s 'eventsListeners+=metrics-listener'",
125 "curl -sSf '${frontendUrl}/realms/master/metrics' | grep '^keycloak_admin_event_UPDATE'"
122 "curl -sSf '${frontendUrl}/realms/master/metrics' | grep '^keycloak_admin_event_UPDATE'"
@@ -146,7 +143,7 @@ let
146 # post url.
143 # post url.
147 keycloak.succeed(
144 keycloak.succeed(
148 "curl -sSf -c cookie '${frontendUrl}/realms/${realm.realm}/protocol/openid-connect/auth?client_id=${client.name}&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=openid+email&response_type=code&response_mode=query&nonce=qw4o89g3qqm' >login_form",
145 "curl -sSf -c cookie '${frontendUrl}/realms/${realm.realm}/protocol/openid-connect/auth?client_id=${client.name}&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=openid+email&response_type=code&response_mode=query&nonce=qw4o89g3qqm' >login_form",
149− "tidy -asxml -q -m login_form || true",
146+ "tidy -q -m login_form || true",
150 "xml sel -T -t -m \"_:html/_:body/_:div/_:div/_:div/_:div/_:div/_:div/_:form[@id='kc-form-login']\" -v @action login_form >form_post_url",
147 "xml sel -T -t -m \"_:html/_:body/_:div/_:div/_:div/_:div/_:div/_:div/_:form[@id='kc-form-login']\" -v @action login_form >form_post_url",
@@ -154,7 +151,7 @@ let
154 # the HTML, then extract the authorization code.
151 # the HTML, then extract the authorization code.
155 keycloak.succeed(
152 keycloak.succeed(
156 "curl -sSf -L -b cookie -d 'username=${user.username}' -d 'password=${password}' -d 'credentialId=' \"$(<form_post_url)\" >auth_code_html",
153 "curl -sSf -L -b cookie -d 'username=${user.username}' -d 'password=${password}' -d 'credentialId=' \"$(<form_post_url)\" >auth_code_html",
157− "tidy -asxml -q -m auth_code_html || true",
154+ "tidy -q -m auth_code_html || true",
158 "xml sel -T -t -m \"_:html/_:body/_:div/_:div/_:div/_:div/_:div/_:input[@id='code']\" -v @value auth_code_html >auth_code",
155 "xml sel -T -t -m \"_:html/_:body/_:div/_:div/_:div/_:div/_:div/_:input[@id='code']\" -v @value auth_code_html >auth_code",
@@ -175,6 +172,5 @@ let
177 postgres = keycloakTest { databaseType = "postgresql"; };
174 postgres = keycloakTest { databaseType = "postgresql"; };
178− mariadb = keycloakTest { databaseType = "mariadb"; };
179 mysql = keycloakTest { databaseType = "mysql"; };
175 mysql = keycloakTest { databaseType = "mysql"; };
nixos/tests/lvm2/default.nixdeleted−45
@@ -1,45 +0,0 @@
1−{ system ? builtins.currentSystem
3−, pkgs ? import ../../.. { inherit system config; }
5−, kernelVersionsToTest ? [ "4.19" "5.4" "5.10" "5.15" "latest" ]
8−# For quickly running a test, the nixosTests.lvm2.lvm-thinpool-linux-latest attribute is recommended
10− tests = let callTest = p: lib.flip (import p) { inherit system pkgs; }; in {
11− thinpool = { test = callTest ./thinpool.nix; kernelFilter = lib.id; };
12− # we would like to test all versions, but the kernel module currently does not compile against the other versions
13− vdo = { test = callTest ./vdo.nix; kernelFilter = lib.filter (v: v == "5.15"); };
18− test = callTest ./systemd-stage-1.nix;
19− kernelFilter = lib.id;
22− thinpool-sd-stage-1 = {
23− test = callTest ./systemd-stage-1.nix;
24− kernelFilter = lib.id;
25− flavour = "thinpool";
28− test = callTest ./systemd-stage-1.nix;
29− kernelFilter = lib.filter (v: v == "5.15");
35− lib.filter (x: x.value != {}) (
36− lib.flip lib.concatMap kernelVersionsToTest (version:
38− v' = lib.replaceStrings [ "." ] [ "_" ] version;
40− lib.flip lib.mapAttrsToList tests (name: t:
41− lib.nameValuePair "lvm-${name}-linux-${v'}" (lib.optionalAttrs (builtins.elem version (t.kernelFilter kernelVersionsToTest)) (t.test ({ kernelPackages = pkgs."linuxPackages_${v'}"; } // builtins.removeAttrs t [ "test" "kernelFilter" ])))
nixos/tests/lvm2/systemd-stage-1.nixdeleted−104
@@ -1,104 +0,0 @@
1−{ kernelPackages ? null, flavour }: let
4− machine.succeed("vgcreate test_vg /dev/vdc /dev/vdd")
5− machine.succeed("lvcreate -L 512M --type raid0 test_vg -n test_lv")
9− machine.succeed("vgcreate test_vg /dev/vdc")
10− machine.succeed("lvcreate -L 512M -T test_vg/test_thin_pool")
11− machine.succeed("lvcreate -n test_lv -V 16G --thinpool test_thin_pool test_vg")
15− machine.succeed("vgcreate test_vg /dev/vdc")
16− machine.succeed("lvcreate --type vdo -n test_lv -L 6G -V 12G test_vg/vdo_pool_lv")
22− boot.initrd.kernelModules = [
30− boot.thin.enable = true;
31− dmeventd.enable = true;
37− boot.vdo.enable = true;
38− dmeventd.enable = true;
45− "test_lv" in machine.succeed("lvs --select segtype=raid0")
49− "test_lv" in machine.succeed("lvs --select segtype=thin-pool")
53− "test_lv" in machine.succeed("lvs --select segtype=vdo")
57−in import ../make-test-python.nix ({ pkgs, ... }: {
58− name = "lvm2-${flavour}-systemd-stage-1";
59− meta.maintainers = with pkgs.lib.maintainers; [ das_j ];
61− nodes.machine = { pkgs, lib, ... }: {
62− imports = [ extraConfig ];
65− emptyDiskImages = [ 8192 8192 ];
66− useBootLoader = true;
69− boot.loader.systemd-boot.enable = true;
70− boot.loader.efi.canTouchEfiVariables = true;
72− environment.systemPackages = with pkgs; [ e2fsprogs ]; # for mkfs.ext4
76− emergencyAccess = true;
78− initrd.services.lvm.enable = true;
79− kernelPackages = lib.mkIf (kernelPackages != null) kernelPackages;
82− specialisation.boot-lvm.configuration.virtualisation.bootDevice = "/dev/test_vg/test_lv";
86− machine.wait_for_unit("multi-user.target")
87− # Create a VG for the root
89− machine.succeed("mkfs.ext4 /dev/test_vg/test_lv")
90− machine.succeed("mkdir -p /mnt && mount /dev/test_vg/test_lv /mnt && echo hello > /mnt/test && umount /mnt")
93− machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-lvm.conf")
94− machine.succeed("sync")
96− machine.wait_for_unit("multi-user.target")
98− # Ensure we have successfully booted from LVM
99− assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
100− assert "/dev/mapper/test_vg-test_lv on / type ext4" in machine.succeed("mount")
101− assert "hello" in machine.succeed("cat /test")
nixos/tests/lvm2/thinpool.nixdeleted−32
@@ -1,32 +0,0 @@
1−{ kernelPackages ? null }:
2−import ../make-test-python.nix ({ pkgs, ... }: {
3− name = "lvm2-thinpool";
4− meta.maintainers = with pkgs.lib.maintainers; [ ajs124 ];
6− nodes.machine = { pkgs, lib, ... }: {
7− virtualisation.emptyDiskImages = [ 4096 ];
9− boot.thin.enable = true;
10− dmeventd.enable = true;
12− environment.systemPackages = with pkgs; [ xfsprogs ];
13− environment.etc."lvm/lvm.conf".text = ''
14− activation/thin_pool_autoextend_percent = 10
15− activation/thin_pool_autoextend_threshold = 80
17− boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
21− machine.succeed("vgcreate test_vg /dev/vdb")
22− machine.succeed("lvcreate -L 512M -T test_vg/test_thin_pool")
23− machine.succeed("lvcreate -n test_lv -V 16G --thinpool test_thin_pool test_vg")
24− machine.succeed("mkfs.xfs /dev/test_vg/test_lv")
25− machine.succeed("mkdir /mnt; mount /dev/test_vg/test_lv /mnt")
26− assert "/dev/mapper/test_vg-test_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
27− machine.succeed("dd if=/dev/zero of=/mnt/empty.file bs=1M count=1024")
28− machine.succeed("journalctl -u dm-event.service | grep \"successfully resized\"")
29− machine.succeed("umount /mnt")
30− machine.succeed("vgchange -a n")
nixos/tests/lvm2/vdo.nixdeleted−27
@@ -1,27 +0,0 @@
1−{ kernelPackages ? null }:
2−import ../make-test-python.nix ({ pkgs, ... }: {
4− meta.maintainers = with pkgs.lib.maintainers; [ ajs124 ];
6− nodes.machine = { pkgs, lib, ... }: {
7− # Minimum required size for VDO volume: 5063921664 bytes
8− virtualisation.emptyDiskImages = [ 8192 ];
10− boot.vdo.enable = true;
11− dmeventd.enable = true;
13− environment.systemPackages = with pkgs; [ xfsprogs ];
14− boot = lib.mkIf (kernelPackages != null) { inherit kernelPackages; };
18− machine.succeed("vgcreate test_vg /dev/vdb")
19− machine.succeed("lvcreate --type vdo -n vdo_lv -L 6G -V 12G test_vg/vdo_pool_lv")
20− machine.succeed("mkfs.xfs -K /dev/test_vg/vdo_lv")
21− machine.succeed("mkdir /mnt; mount /dev/test_vg/vdo_lv /mnt")
22− assert "/dev/mapper/test_vg-vdo_lv" == machine.succeed("findmnt -no SOURCE /mnt").strip()
23− machine.succeed("umount /mnt")
24− machine.succeed("vdostats")
25− machine.succeed("vgchange -a n")
nixos/tests/lxd-image-server.nix+48−15
@@ -1,21 +1,54 @@
1−import ./make-test-python.nix ({ pkgs, lib, ... } :
1+import ./make-test-python.nix ({ pkgs, ...} :
4− lxd-image = import ../release.nix {
4+ # Since we don't have access to the internet during the tests, we have to
5− configuration = {
5+ # pre-fetch lxd containers beforehand.
6− # Building documentation makes the test unnecessarily take a longer time:
6+ #
7− documentation.enable = lib.mkForce false;
7+ # I've chosen to import Alpine Linux, because its image is turbo-tiny and,
8+ # generally, sufficient for our tests.
9+ alpine-meta = pkgs.fetchurl {
10+ url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
11+ hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
14+ alpine-rootfs = pkgs.fetchurl {
15+ url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
16+ hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
11− lxd-image-metadata = lxd-image.lxdMeta.${pkgs.system};
19+ lxd-config = pkgs.writeText "config.yaml" ''
12− lxd-image-rootfs = lxd-image.lxdImage.${pkgs.system};
20+ storage_pools:
24+ source: /var/lxd-pool
15 name = "lxd-image-server";
48 name = "lxd-image-server";
17 meta = with pkgs.lib.maintainers; {
50 meta = with pkgs.lib.maintainers; {
18− maintainers = [ mkg20001 patryk27 ];
51+ maintainers = [ mkg20001 ];
21 nodes.machine = { lib, ... }: {
54 nodes.machine = { lib, ... }: {
@@ -67,20 +100,20 @@ in {
67 # lxd expects the pool's directory to already exist
100 # lxd expects the pool's directory to already exist
68 machine.succeed("mkdir /var/lxd-pool")
101 machine.succeed("mkdir /var/lxd-pool")
70 machine.succeed(
104 machine.succeed(
71− "cat ${./common/lxd/config.yaml} | lxd init --preseed"
105+ "cat ${lxd-config} | lxd init --preseed"
74 machine.succeed(
108 machine.succeed(
75− "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos"
109+ "lxc image import ${alpine-meta} ${alpine-rootfs} --alias alpine"
78− loc = "/var/www/simplestreams/images/iats/nixos/amd64/default/v1"
112+ loc = "/var/www/simplestreams/images/iats/alpine/amd64/default/v1"
80 with subtest("push image to server"):
114 with subtest("push image to server"):
81− machine.succeed("lxc launch nixos test")
115+ machine.succeed("lxc launch alpine test")
83− machine.succeed("lxc stop -f test")
116+ machine.succeed("lxc stop test")
84 machine.succeed("lxc publish --public test --alias=testimg")
117 machine.succeed("lxc publish --public test --alias=testimg")
85 machine.succeed("lxc image export testimg")
118 machine.succeed("lxc image export testimg")
86 machine.succeed("ls >&2")
119 machine.succeed("ls >&2")
nixos/tests/lxd-image.nixnew file+89
@@ -0,0 +1,89 @@
1+# This test ensures that the nixOS lxd images builds and functions properly
2+# It has been extracted from `lxd.nix` to seperate failures of just the image and the lxd software
4+import ./make-test-python.nix ({ pkgs, ...} : let
5+ release = import ../release.nix {
7+ environment.systemPackages = with pkgs; [ stdenv ]; # inject stdenv so rebuild test works
11+ metadata = release.lxdMeta.${pkgs.system};
12+ image = release.lxdImage.${pkgs.system};
14+ lxd-config = pkgs.writeText "config.yaml" ''
19+ source: /var/lxd-pool
43+ meta = with pkgs.lib.maintainers; {
44+ maintainers = [ mkg20001 ];
47+ nodes.machine = { lib, ... }: {
49+ # disk full otherwise
52+ lxc.lxcfs.enable = true;
58+ machine.wait_for_unit("sockets.target")
59+ machine.wait_for_unit("lxd.service")
60+ machine.wait_for_file("/var/lib/lxd/unix.socket")
62+ # It takes additional second for lxd to settle
65+ # lxd expects the pool's directory to already exist
66+ machine.succeed("mkdir /var/lxd-pool")
69+ "cat ${lxd-config} | lxd init --preseed"
72+ # TODO: test custom built container aswell
74+ with subtest("importing container works"):
75+ machine.succeed("lxc image import ${metadata}/*/*.tar.xz ${image}/*/*.tar.xz --alias nixos")
77+ with subtest("launching container works"):
78+ machine.succeed("lxc launch nixos machine -c security.nesting=true")
79+ # make sure machine boots up properly
82+ with subtest("container shell works"):
83+ machine.succeed("echo true | lxc exec machine /run/current-system/sw/bin/bash -")
84+ machine.succeed("lxc exec machine /run/current-system/sw/bin/true")
86+ # with subtest("rebuilding works"):
87+ # machine.succeed("lxc exec machine /run/current-system/sw/bin/nixos-rebuild switch")
nixos/tests/lxd.nix+63−40
@@ -1,18 +1,48 @@
1−import ./make-test-python.nix ({ pkgs, lib, ... } :
1+import ./make-test-python.nix ({ pkgs, ...} :
4− lxd-image = import ../release.nix {
4+ # Since we don't have access to the internet during the tests, we have to
5− configuration = {
5+ # pre-fetch lxd containers beforehand.
6− # Building documentation makes the test unnecessarily take a longer time:
6+ #
7− documentation.enable = lib.mkForce false;
7+ # I've chosen to import Alpine Linux, because its image is turbo-tiny and,
8+ # generally, sufficient for our tests.
9+ alpine-meta = pkgs.fetchurl {
10+ url = "https://tarballs.nixos.org/alpine/3.12/lxd.tar.xz";
11+ hash = "sha256-1tcKaO9lOkvqfmG/7FMbfAEToAuFy2YMewS8ysBKuLA=";
9− # Our tests require `grep` & friends:
14+ alpine-rootfs = pkgs.fetchurl {
10− environment.systemPackages = with pkgs; [ busybox ];
15+ url = "https://tarballs.nixos.org/alpine/3.12/rootfs.tar.xz";
11− };
16+ hash = "sha256-Tba9sSoaiMtQLY45u7p5DMqXTSDgs/763L/SQp0bkCA=";
14− lxd-image-metadata = lxd-image.lxdMeta.${pkgs.system};
19+ lxd-config = pkgs.writeText "config.yaml" ''
15− lxd-image-rootfs = lxd-image.lxdImage.${pkgs.system};
20+ storage_pools:
24+ source: /var/lxd-pool
18 name = "lxd";
48 name = "lxd";
@@ -23,8 +53,6 @@ in {
24 nodes.machine = { lib, ... }: {
54 nodes.machine = { lib, ... }: {
25 virtualisation = {
55 virtualisation = {
28 # Since we're testing `limits.cpu`, we've gotta have a known number of
56 # Since we're testing `limits.cpu`, we've gotta have a known number of
29 # cores to lean on
57 # cores to lean on
30 cores = 2;
58 cores = 2;
@@ -49,66 +77,61 @@ in {
49 machine.succeed("mkdir /var/lxd-pool")
77 machine.succeed("mkdir /var/lxd-pool")
51 machine.succeed(
79 machine.succeed(
52− "cat ${./common/lxd/config.yaml} | lxd init --preseed"
80+ "cat ${lxd-config} | lxd init --preseed"
55 machine.succeed(
83 machine.succeed(
56− "lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs}/*/*.tar.xz --alias nixos"
84+ "lxc image import ${alpine-meta} ${alpine-rootfs} --alias alpine"
59− with subtest("Container can be managed"):
87+ with subtest("Containers can be launched and destroyed"):
60− machine.succeed("lxc launch nixos container")
88+ machine.succeed("lxc launch alpine test")
62− machine.succeed("echo true | lxc exec container /run/current-system/sw/bin/bash -")
63− machine.succeed("lxc exec container true")
89+ machine.succeed("lxc exec test true")
64− machine.succeed("lxc delete -f container")
90+ machine.succeed("lxc delete -f test")
66− with subtest("Container is mounted with lxcfs inside"):
92+ with subtest("Containers are being mounted with lxcfs inside"):
67− machine.succeed("lxc launch nixos container")
93+ machine.succeed("lxc launch alpine test")
70 ## ---------- ##
95 ## ---------- ##
71 ## limits.cpu ##
96 ## limits.cpu ##
73− machine.succeed("lxc config set container limits.cpu 1")
98+ machine.succeed("lxc config set test limits.cpu 1")
74− machine.succeed("lxc restart container")
99+ machine.succeed("lxc restart test")
101+ # Since Alpine doesn't have `nproc` pre-installed, we've gotta resort
102+ # to the primal methods
79− == machine.succeed("lxc exec container grep -- -c ^processor /proc/cpuinfo").strip()
105+ == machine.succeed("lxc exec test grep -- -c ^processor /proc/cpuinfo").strip()
82− machine.succeed("lxc config set container limits.cpu 2")
108+ machine.succeed("lxc config set test limits.cpu 2")
83− machine.succeed("lxc restart container")
109+ machine.succeed("lxc restart test")
88− == machine.succeed("lxc exec container grep -- -c ^processor /proc/cpuinfo").strip()
113+ == machine.succeed("lxc exec test grep -- -c ^processor /proc/cpuinfo").strip()
91 ## ------------- ##
116 ## ------------- ##
92 ## limits.memory ##
117 ## limits.memory ##
94− machine.succeed("lxc config set container limits.memory 64MB")
119+ machine.succeed("lxc config set test limits.memory 64MB")
95− machine.succeed("lxc restart container")
120+ machine.succeed("lxc restart test")
99 "MemTotal: 62500 kB"
123 "MemTotal: 62500 kB"
100− == machine.succeed("lxc exec container grep -- MemTotal /proc/meminfo").strip()
124+ == machine.succeed("lxc exec test grep -- MemTotal /proc/meminfo").strip()
103− machine.succeed("lxc config set container limits.memory 128MB")
127+ machine.succeed("lxc config set test limits.memory 128MB")
104− machine.succeed("lxc restart container")
128+ machine.succeed("lxc restart test")
108 "MemTotal: 125000 kB"
131 "MemTotal: 125000 kB"
109− == machine.succeed("lxc exec container grep -- MemTotal /proc/meminfo").strip()
132+ == machine.succeed("lxc exec test grep -- MemTotal /proc/meminfo").strip()
112− machine.succeed("lxc delete -f container")
135+ machine.succeed("lxc delete -f test")
nixos/tests/mailcatcher.nix+2−7
@@ -9,13 +9,8 @@ import ./make-test-python.nix ({ lib, ... }:
10 services.mailcatcher.enable = true;
10 services.mailcatcher.enable = true;
13− enable = true;
12+ services.ssmtp.enable = true;
14− accounts.default = {
13+ services.ssmtp.hostName = "localhost:1025";
20 environment.systemPackages = [ pkgs.mailutils ];
15 environment.systemPackages = [ pkgs.mailutils ];
nixos/tests/matrix-appservice-irc.nix−3
@@ -20,9 +20,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
21 enable_registration = true;
21 enable_registration = true;
23− # don't use this in production, always use some form of verification
24− enable_registration_without_verification = true;
26 listeners = [ {
23 listeners = [ {
27 # The default but tls=false
24 # The default but tls=false
28 bind_addresses = [
25 bind_addresses = [
nixos/tests/mongodb.nix−4
@@ -37,8 +37,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
37 mongodb-3_6
37 mongodb-3_6
38 mongodb-4_0
38 mongodb-4_0
39 mongodb-4_2
39 mongodb-4_2
@@ -50,8 +48,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
50 + runMongoDBTest pkgs.mongodb-3_6
48 + runMongoDBTest pkgs.mongodb-3_6
51 + runMongoDBTest pkgs.mongodb-4_0
49 + runMongoDBTest pkgs.mongodb-4_0
52 + runMongoDBTest pkgs.mongodb-4_2
50 + runMongoDBTest pkgs.mongodb-4_2
53− + runMongoDBTest pkgs.mongodb-4_4
54− + runMongoDBTest pkgs.mongodb-5_0
56 node.shutdown()
52 node.shutdown()
nixos/tests/nar-serve.nix+1−1
@@ -31,7 +31,7 @@ import ./make-test-python.nix (
32 # Create a fake cache with Nginx service the static files
32 # Create a fake cache with Nginx service the static files
33 server.succeed(
33 server.succeed(
34− "nix --experimental-features nix-command copy --to file:///var/www ${pkgs.hello}"
34+ "nix copy --to file:///var/www ${pkgs.hello}"
36 server.wait_for_unit("nginx.service")
36 server.wait_for_unit("nginx.service")
37 server.wait_for_open_port(80)
37 server.wait_for_open_port(80)
@@ -28,11 +28,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
28 ## It's also a loopback device to test exporting /dev/...
28 ## It's also a loopback device to test exporting /dev/...
29 systemd.services.create-priv-file =
29 systemd.services.create-priv-file =
30 mkCreateSmallFileService { path = "/vault-priv.disk"; loop = true; };
30 mkCreateSmallFileService { path = "/vault-priv.disk"; loop = true; };
31− ## `aaa.disk` is just here because "[aaa]" sorts before
32− ## "[generic]" lexicographically, and nbd-server breaks if
33− ## "[generic]" isn't the first section.
34− systemd.services.create-aaa-file =
35− mkCreateSmallFileService { path = "/aaa.disk"; };
37 # Needed only for nbd-client used in the tests.
32 # Needed only for nbd-client used in the tests.
38 environment.systemPackages = [ pkgs.nbd ];
33 environment.systemPackages = [ pkgs.nbd ];
@@ -44,9 +39,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
44 services.nbd.server = {
39 services.nbd.server = {
45 enable = true;
40 enable = true;
46 exports = {
41 exports = {
50 vault-pub = {
42 vault-pub = {
51 path = "/vault-pub.disk";
43 path = "/vault-pub.disk";
@@ -91,13 +83,5 @@ import ./make-test-python.nix ({ pkgs, ... }:
91 if foundString != testString:
83 if foundString != testString:
92 raise Exception(f"Read the wrong string from nbd disk. Expected: '{testString}'. Found: '{foundString}'")
84 raise Exception(f"Read the wrong string from nbd disk. Expected: '{testString}'. Found: '{foundString}'")
93 server.succeed("nbd-client -d /dev/nbd0")
85 server.succeed("nbd-client -d /dev/nbd0")
95− # Server: Successfully connect to the aaa disk
96− server.succeed("nbd-client localhost ${toString listenPort} /dev/nbd0 -name aaa -persist")
97− server.succeed(f"echo '{testString}' | dd of=/dev/nbd0 conv=notrunc")
98− foundString = server.succeed(f"dd status=none if=/aaa.disk count={len(testString)}")[:len(testString)]
99− if foundString != testString:
100− raise Exception(f"Read the wrong string from nbd disk. Expected: '{testString}'. Found: '{foundString}'")
101− server.succeed("nbd-client -d /dev/nbd0")
nixos/tests/ncdns.nix+9−6
@@ -29,10 +29,10 @@ in
31 nodes.server = { ... }: {
31 nodes.server = { ... }: {
32− networking.nameservers = [ "::1" ];
32+ networking.nameservers = [ "127.0.0.1" ];
34 services.namecoind.rpc = {
34 services.namecoind.rpc = {
35− address = "::1";
35+ address = "127.0.0.1";
36 user = "namecoin";
36 user = "namecoin";
37 password = "secret";
37 password = "secret";
38 port = 8332;
38 port = 8332;
@@ -45,7 +45,7 @@ in
45 script = ''
45 script = ''
46 while true; do
46 while true; do
47 echo -e "HTTP/1.1 200 OK\n\n $(<${fakeReply})\n" \
47 echo -e "HTTP/1.1 200 OK\n\n $(<${fakeReply})\n" \
48− | ${pkgs.netcat}/bin/nc -N -l ::1 8332
48+ | ${pkgs.netcat}/bin/nc -N -l 127.0.0.1 8332
@@ -58,10 +58,14 @@ in
58 identity.address = "1.0.0.1";
58 identity.address = "1.0.0.1";
61− services.pdns-recursor.enable = true;
61+ services.pdns-recursor = {
63+ dns.allowFrom = [ "127.0.0.0/8" ];
62− services.pdns-recursor.resolveNamecoin = true;
64+ resolveNamecoin = true;
64 environment.systemPackages = [ pkgs.dnsutils ];
67 environment.systemPackages = [ pkgs.dnsutils ];
67 testScript =
71 testScript =
@@ -87,7 +91,6 @@ in
87 assert "example.com" in server.succeed("dig SOA @localhost -p 5333 bit")
91 assert "example.com" in server.succeed("dig SOA @localhost -p 5333 bit")
89 with subtest("bit. zone forwarding works"):
93 with subtest("bit. zone forwarding works"):
90− server.wait_for_unit("pdns-recursor")
91 assert "1.2.3.4" in server.succeed("host test.bit")
94 assert "1.2.3.4" in server.succeed("host test.bit")
nixos/tests/networking.nix+1−1
@@ -878,7 +878,7 @@ let
878 linkConfig.Name = "custom_name";
878 linkConfig.Name = "custom_name";
881− else { boot.initrd.services.udev.rules = ''
881+ else { services.udev.initrdRules = ''
882 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="custom_name"
882 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:12:01:01", KERNEL=="eth*", NAME="custom_name"
nixos/tests/nextcloud/with-mysql-and-memcached.nix+22−1
@@ -26,7 +26,6 @@ in {
26 redis = false;
26 redis = false;
27 memcached = true;
27 memcached = true;
29− database.createLocally = true;
30 config = {
29 config = {
31 dbtype = "mysql";
30 dbtype = "mysql";
32 dbname = "nextcloud";
31 dbname = "nextcloud";
@@ -39,6 +38,28 @@ in {
44+ bind-address = "127.0.0.1";
46+ # FIXME(@Ma27) Nextcloud isn't compatible with mariadb 10.6,
47+ # this is a workaround.
48+ # See https://help.nextcloud.com/t/update-to-next-cloud-21-0-2-has-get-an-error/117028/22
49+ innodb_read_only_compressed = 0;
51+ package = pkgs.mariadb;
53+ initialScript = pkgs.writeText "mysql-init" ''
54+ CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'hunter2';
55+ CREATE DATABASE IF NOT EXISTS nextcloud;
56+ GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER,
57+ CREATE TEMPORARY TABLES ON nextcloud.* TO 'nextcloud'@'localhost'
58+ IDENTIFIED BY 'hunter2';
42 systemd.services.nextcloud-setup= {
63 systemd.services.nextcloud-setup= {
43 requires = ["mysql.service"];
64 requires = ["mysql.service"];
44 after = ["mysql.service"];
65 after = ["mysql.service"];
nixos/tests/nixops/default.nix+1−1
@@ -97,7 +97,7 @@ let
97 derivations and all build dependency outputs, all the way down.
97 derivations and all build dependency outputs, all the way down.
99 allDrvOutputs = pkg:
99 allDrvOutputs = pkg:
100− let name = "allDrvOutputs-${pkg.pname or pkg.name or "unknown"}";
100+ let name = lib.strings.sanitizeDerivationName "allDrvOutputs-${pkg.pname or pkg.name or "unknown"}";
102 pkgs.runCommand name { refs = pkgs.writeReferencesToFile pkg.drvPath; } ''
102 pkgs.runCommand name { refs = pkgs.writeReferencesToFile pkg.drvPath; } ''
103 touch $out
103 touch $out
nixos/tests/openssh.nix+6−12
@@ -80,21 +80,17 @@ in {
81 client.wait_for_unit("network.target")
81 client.wait_for_unit("network.target")
82 client.succeed(
82 client.succeed(
83− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2",
83+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2"
86 client.succeed(
85 client.succeed(
87− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024",
86+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024"
91 client.succeed(
89 client.succeed(
92− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server_lazy 'echo hello world' >&2",
90+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server_lazy 'echo hello world' >&2"
95 client.succeed(
92 client.succeed(
96− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server_lazy 'ulimit -l' | grep 1024",
93+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server_lazy 'ulimit -l' | grep 1024"
100 with subtest("configured-authkey"):
96 with subtest("configured-authkey"):
@@ -103,12 +99,10 @@ in {
104 client.succeed("chmod 600 privkey.snakeoil")
100 client.succeed("chmod 600 privkey.snakeoil")
105 client.succeed(
101 client.succeed(
106− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server true",
102+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server true"
109 client.succeed(
104 client.succeed(
110− "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server_lazy true",
105+ "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i privkey.snakeoil server_lazy true"
114 with subtest("localhost-only"):
108 with subtest("localhost-only"):
nixos/tests/pam/pam-oath-login.nix+1−1
@@ -7,7 +7,7 @@ let
7 # how many passwords have been made. In this env, we'll always be on
7 # how many passwords have been made. In this env, we'll always be on
8 # the 0th counter, so the password is static.
8 # the 0th counter, so the password is static.
10− # Generated in nix-shell -p oath-toolkit
10+ # Generated in nix-shell -p oathToolkit
11 # via: oathtool -v -d6 -w10 cdd4083ef8ff1fa9178c6d46bfb1a3
11 # via: oathtool -v -d6 -w10 cdd4083ef8ff1fa9178c6d46bfb1a3
12 # and picking a the first 4:
12 # and picking a the first 4:
13 oathSnakeOilPassword1 = "143349";
13 oathSnakeOilPassword1 = "143349";
nixos/tests/pam/pam-ussh.nixdeleted−70
@@ -1,70 +0,0 @@
1−import ../make-test-python.nix ({ pkgs, lib, ... }:
4− testOnlySSHCredentials = pkgs.runCommand "pam-ussh-test-ca" {
5− nativeBuildInputs = [ pkgs.openssh ];
8− ssh-keygen -t ed25519 -N "" -f $out/ca
10− ssh-keygen -t ed25519 -N "" -f $out/alice
11− ssh-keygen -s $out/ca -I "alice user key" -n "alice,root" -V 19700101:forever $out/alice.pub
13− ssh-keygen -t ed25519 -N "" -f $out/bob
14− ssh-keygen -s $out/ca -I "bob user key" -n "bob" -V 19700101:forever $out/bob.pub
16− makeTestScript = user: pkgs.writeShellScript "pam-ussh-${user}-test-script" ''
19− eval $(${pkgs.openssh}/bin/ssh-agent)
23− cp ${testOnlySSHCredentials}/${user}{,.pub,-cert.pub} $HOME/.ssh
24− chmod 600 $HOME/.ssh/${user}
25− chmod 644 $HOME/.ssh/${user}{,-cert}.pub
29− ${pkgs.openssh}/bin/ssh-add $HOME/.ssh/${user}
30− ${pkgs.openssh}/bin/ssh-add -l &>2
36− meta.maintainers = with lib.maintainers; [ lukegb ];
41− users.users.alice = { isNormalUser = true; extraGroups = [ "wheel" ]; };
42− users.users.bob = { isNormalUser = true; extraGroups = [ "wheel" ]; };
44− security.pam.ussh = {
46− authorizedPrincipals = "root";
47− caFile = "${testOnlySSHCredentials}/ca.pub";
53− Defaults lecture="never"
60− with subtest("alice should be allowed to escalate to root"):
62− 'su -c "${makeTestScript "alice"}" -l alice | grep root'
65− with subtest("bob should not be allowed to escalate to root"):
67− 'su -c "${makeTestScript "bob"}" -l bob | grep root'
nixos/tests/paperless.nix → nixos/tests/paperless-ng.nixrenamed+12−11
@@ -1,32 +1,30 @@
1import ./make-test-python.nix ({ lib, ... }: {
1import ./make-test-python.nix ({ lib, ... }: {
2− name = "paperless";
2+ name = "paperless-ng";
3 meta.maintainers = with lib.maintainers; [ earvstedt Flakebi ];
3 meta.maintainers = with lib.maintainers; [ earvstedt Flakebi ];
5 nodes.machine = { pkgs, ... }: {
5 nodes.machine = { pkgs, ... }: {
6 environment.systemPackages = with pkgs; [ imagemagick jq ];
6 environment.systemPackages = with pkgs; [ imagemagick jq ];
7− services.paperless = {
7+ services.paperless-ng = {
8 enable = true;
8 enable = true;
9 passwordFile = builtins.toFile "password" "admin";
9 passwordFile = builtins.toFile "password" "admin";
13 testScript = ''
13 testScript = ''
14− import json
14+ machine.wait_for_unit("paperless-ng-consumer.service")
16− machine.wait_for_unit("paperless-consumer.service")
16+ with subtest("Create test doc"):
18− with subtest("Add a document via the file system"):
19 machine.succeed(
17 machine.succeed(
20 "convert -size 400x40 xc:white -font 'DejaVu-Sans' -pointsize 20 -fill black "
18 "convert -size 400x40 xc:white -font 'DejaVu-Sans' -pointsize 20 -fill black "
21 "-annotate +5+20 'hello world 16-10-2005' /var/lib/paperless/consume/doc.png"
19 "-annotate +5+20 'hello world 16-10-2005' /var/lib/paperless/consume/doc.png"
24 with subtest("Web interface gets ready"):
22 with subtest("Web interface gets ready"):
25− machine.wait_for_unit("paperless-web.service")
23+ machine.wait_for_unit("paperless-ng-web.service")
26 # Wait until server accepts connections
24 # Wait until server accepts connections
27 machine.wait_until_succeeds("curl -fs localhost:28981")
25 machine.wait_until_succeeds("curl -fs localhost:28981")
29− with subtest("Add a document via the web interface"):
27+ with subtest("Create web test doc"):
30 machine.succeed(
28 machine.succeed(
31 "convert -size 400x40 xc:white -font 'DejaVu-Sans' -pointsize 20 -fill black "
29 "convert -size 400x40 xc:white -font 'DejaVu-Sans' -pointsize 20 -fill black "
32 "-annotate +5+20 'hello web 16-10-2005' /tmp/webdoc.png"
30 "-annotate +5+20 'hello web 16-10-2005' /tmp/webdoc.png"
@@ -37,8 +35,11 @@ import ./make-test-python.nix ({ lib, ... }: {
37 machine.wait_until_succeeds(
35 machine.wait_until_succeeds(
38 "(($(curl -u admin:admin -fs localhost:28981/api/documents/ | jq .count) == 2))"
36 "(($(curl -u admin:admin -fs localhost:28981/api/documents/ | jq .count) == 2))"
38+ assert "2005-10-16" in machine.succeed(
40− docs = json.loads(machine.succeed("curl -u admin:admin -fs localhost:28981/api/documents/"))['results']
39+ "curl -u admin:admin -fs localhost:28981/api/documents/ | jq '.results | .[0] | .created'"
41− assert "2005-10-16" in docs[0]['created']
40+ )
42− assert "2005-10-16" in docs[1]['created']
41+ assert "2005-10-16" in machine.succeed(
42+ "curl -u admin:admin -fs localhost:28981/api/documents/ | jq '.results | .[1] | .created'"
nixos/tests/pdns-recursor.nix+1−4
@@ -1,15 +1,12 @@
1import ./make-test-python.nix ({ pkgs, ... }: {
1import ./make-test-python.nix ({ pkgs, ... }: {
2− name = "powerdns-recursor";
2+ name = "powerdns";
4 nodes.server = { ... }: {
4 nodes.server = { ... }: {
5 services.pdns-recursor.enable = true;
5 services.pdns-recursor.enable = true;
6− services.pdns-recursor.exportHosts= true;
7− networking.hosts."192.0.2.1" = [ "example.com" ];
10 testScript = ''
8 testScript = ''
11 server.wait_for_unit("pdns-recursor")
9 server.wait_for_unit("pdns-recursor")
12 server.wait_for_open_port("53")
10 server.wait_for_open_port("53")
13− assert "192.0.2.1" in server.succeed("host example.com localhost")
nixos/tests/pgadmin4.nix+47−37
@@ -1,27 +1,52 @@
1−import ./make-test-python.nix ({ pkgs, lib, buildDeps ? [ ], pythonEnv ? [ ], ... }:
1+import ./make-test-python.nix ({ pkgs, lib, ... }:
4− This test suite replaces the typical pytestCheckHook function in python
5− packages. Pgadmin4 test suite needs a running and configured postgresql
6− server. This is why this test exists.
8− To not repeat all the python dependencies needed, this test is called directly
9− from the pgadmin4 derivation, which also passes the currently
10− used propagatedBuildInputs and any python overrides.
12− Unfortunately, there doesn't seem to be an easy way to otherwise include
13− the needed packages here.
15− Due the the needed parameters a direct call to "nixosTests.pgadmin4" fails
16− and needs to be called as "pgadmin4.tests"
21 pgadmin4SrcDir = "/pgadmin";
4 pgadmin4SrcDir = "/pgadmin";
22 pgadmin4Dir = "/var/lib/pgadmin";
5 pgadmin4Dir = "/var/lib/pgadmin";
23 pgadmin4LogDir = "/var/log/pgadmin";
6 pgadmin4LogDir = "/var/log/pgadmin";
8+ python-with-needed-packages = pkgs.python3.withPackages (ps: with ps; [
27 name = "pgadmin4";
52 name = "pgadmin4";
@@ -29,27 +54,12 @@ import ./make-test-python.nix ({ pkgs, lib, buildDeps ? [ ], pythonEnv ? [ ], ..
30 nodes.machine = { pkgs, ... }: {
55 nodes.machine = { pkgs, ... }: {
31 imports = [ ./common/x11.nix ];
56 imports = [ ./common/x11.nix ];
32− # needed because pgadmin 6.8 will fail, if those dependencies get updated
35− pythonPackages = pythonEnv;
39 environment.systemPackages = with pkgs; [
57 environment.systemPackages = with pkgs; [
41 postgresql
59 postgresql
60+ python-with-needed-packages
42 chromedriver
61 chromedriver
44− # include the same packages as in pgadmin minus speaklater3
45− (python3.withPackages
48− # test suite package requirements
49− pythonPackages.testscenarios
50− pythonPackages.selenium
54 services.postgresql = {
64 services.postgresql = {
55 enable = true;
65 enable = true;
@@ -110,7 +120,7 @@ import ./make-test-python.nix ({ pkgs, lib, buildDeps ? [ ], pythonEnv ? [ ], ..
110 with subtest("run browser test"):
120 with subtest("run browser test"):
111 machine.succeed(
121 machine.succeed(
112 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
122 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
113− && python regression/runtests.py --pkg browser --exclude \
123+ && ${python-with-needed-packages.interpreter} regression/runtests.py --pkg browser --exclude \
114 browser.tests.test_ldap_login.LDAPLoginTestCase,browser.tests.test_ldap_login'
124 browser.tests.test_ldap_login.LDAPLoginTestCase,browser.tests.test_ldap_login'
@@ -120,13 +130,13 @@ import ./make-test-python.nix ({ pkgs, lib, buildDeps ? [ ], pythonEnv ? [ ], ..
120 machine.succeed(
130 machine.succeed(
121 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
131 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
122 && export FONTCONFIG_FILE=${pkgs.makeFontsConf { fontDirectories = [];}} \
132 && export FONTCONFIG_FILE=${pkgs.makeFontsConf { fontDirectories = [];}} \
123− && python regression/runtests.py --pkg feature_tests'
133+ && ${python-with-needed-packages.interpreter} regression/runtests.py --pkg feature_tests'
126 with subtest("run resql test"):
136 with subtest("run resql test"):
127 machine.succeed(
137 machine.succeed(
128 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
138 'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
129− && python regression/runtests.py --pkg resql'
139+ && ${python-with-needed-packages.interpreter} regression/runtests.py --pkg resql'
nixos/tests/snapcast.nix−1
@@ -19,7 +19,6 @@ in {
19 port = port;
19 port = port;
20 tcp.port = tcpPort;
20 tcp.port = tcpPort;
21 http.port = httpPort;
21 http.port = httpPort;
23 buffer = bufferSize;
22 buffer = bufferSize;
24 streams = {
23 streams = {
nixos/tests/step-ca.nix−1
@@ -9,7 +9,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
15 caserver =
14 caserver =
nixos/tests/systemd-initrd-btrfs-raid.nixdeleted−45
@@ -1,45 +0,0 @@
1−import ./make-test-python.nix ({ lib, pkgs, ... }: {
2− name = "systemd-initrd-btrfs-raid";
4− nodes.machine = { pkgs, ... }: {
7− emptyDiskImages = [ 512 512 ];
11− boot.loader.systemd-boot.enable = true;
12− boot.loader.efi.canTouchEfiVariables = true;
14− environment.systemPackages = with pkgs; [ btrfs-progs ];
15− boot.initrd.systemd = {
17− emergencyAccess = true;
20− specialisation.boot-btrfs-raid.configuration = {
21− fileSystems = lib.mkVMOverride {
22− "/".fsType = lib.mkForce "btrfs";
24− virtualisation.bootDevice = "/dev/vdc";
30− machine.succeed("mkfs.btrfs -d raid0 /dev/vdc /dev/vdd")
31− machine.succeed("mkdir -p /mnt && mount /dev/vdc /mnt && echo hello > /mnt/test && umount /mnt")
34− machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-btrfs-raid.conf")
35− machine.succeed("sync")
37− machine.wait_for_unit("multi-user.target")
39− # Ensure we have successfully booted from the RAID
40− assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
41− assert "/dev/vdc on / type btrfs" in machine.succeed("mount")
42− assert "hello" in machine.succeed("cat /test")
43− assert "Total devices 2" in machine.succeed("btrfs filesystem show")
nixos/tests/systemd-initrd-luks-keyfile.nixdeleted−53
@@ -1,53 +0,0 @@
1−import ./make-test-python.nix ({ lib, pkgs, ... }: let
3− keyfile = pkgs.writeText "luks-keyfile" ''
4− MIGHAoGBAJ4rGTSo/ldyjQypd0kuS7k2OSsmQYzMH6TNj3nQ/vIUjDn7fqa3slt2
5− gV6EK3TmTbGc4tzC1v4SWx2m+2Bjdtn4Fs4wiBwn1lbRdC6i5ZYCqasTWIntWn+6
6− FllUkMD5oqjOR/YcboxG8Z3B5sJuvTP9llsF+gnuveWih9dpbBr7AgEC
10− name = "systemd-initrd-luks-keyfile";
12− nodes.machine = { pkgs, ... }: {
15− emptyDiskImages = [ 512 ];
16− useBootLoader = true;
19− boot.loader.systemd-boot.enable = true;
21− environment.systemPackages = with pkgs; [ cryptsetup ];
22− boot.initrd.systemd = {
24− emergencyAccess = true;
27− specialisation.boot-luks.configuration = {
28− boot.initrd.luks.devices = lib.mkVMOverride {
31− keyFile = "/etc/cryptroot.key";
34− virtualisation.bootDevice = "/dev/mapper/cryptroot";
35− boot.initrd.secrets."/etc/cryptroot.key" = keyfile;
40− # Create encrypted volume
41− machine.wait_for_unit("multi-user.target")
42− machine.succeed("cryptsetup luksFormat -q --iter-time=1 -d ${keyfile} /dev/vdc")
44− # Boot from the encrypted disk
45− machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
46− machine.succeed("sync")
49− # Boot and decrypt the disk
50− machine.wait_for_unit("multi-user.target")
51− assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
nixos/tests/systemd-initrd-luks-password.nixdeleted−48
@@ -1,48 +0,0 @@
1−import ./make-test-python.nix ({ lib, pkgs, ... }: {
2− name = "systemd-initrd-luks-password";
4− nodes.machine = { pkgs, ... }: {
7− emptyDiskImages = [ 512 512 ];
11− boot.loader.systemd-boot.enable = true;
13− environment.systemPackages = with pkgs; [ cryptsetup ];
14− boot.initrd.systemd = {
16− emergencyAccess = true;
19− specialisation.boot-luks.configuration = {
20− boot.initrd.luks.devices = lib.mkVMOverride {
21− # We have two disks and only type one password - key reuse is in place
22− cryptroot.device = "/dev/vdc";
23− cryptroot2.device = "/dev/vdd";
25− virtualisation.bootDevice = "/dev/mapper/cryptroot";
30− # Create encrypted volume
31− machine.wait_for_unit("multi-user.target")
32− machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
33− machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdd -")
35− # Boot from the encrypted disk
36− machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
37− machine.succeed("sync")
40− # Boot and decrypt the disk
42− machine.wait_for_console_text("Please enter passphrase for disk cryptroot")
43− machine.send_console("supersecret\n")
44− machine.wait_for_unit("multi-user.target")
46− assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")
nixos/tests/systemd-initrd-simple.nixdeleted−44
@@ -1,44 +0,0 @@
1−import ./make-test-python.nix ({ lib, pkgs, ... }: {
2− name = "systemd-initrd-simple";
4− nodes.machine = { pkgs, ... }: {
5− boot.initrd.systemd = {
7− emergencyAccess = true;
9− fileSystems = lib.mkVMOverride {
10− "/".autoResize = true;
17− with subtest("handover to stage-2 systemd works"):
18− machine.wait_for_unit("multi-user.target")
19− machine.succeed("systemd-analyze | grep -q '(initrd)'") # direct handover
20− machine.succeed("touch /testfile") # / is writable
21− machine.fail("touch /nix/store/testfile") # /nix/store is not writable
22− # Special filesystems are mounted by systemd
23− machine.succeed("[ -e /run/booted-system ]") # /run
24− machine.succeed("[ -e /sys/class ]") # /sys
25− machine.succeed("[ -e /dev/null ]") # /dev
26− machine.succeed("[ -e /proc/1 ]") # /proc
27− # stage-2-init mounted more special filesystems
28− machine.succeed("[ -e /dev/shm ]") # /dev/shm
29− machine.succeed("[ -e /dev/pts/ptmx ]") # /dev/pts
30− machine.succeed("[ -e /run/keys ]") # /run/keys
33− with subtest("growfs works"):
34− oldAvail = machine.succeed("df --output=avail / | sed 1d")
37− subprocess.check_call(["qemu-img", "resize", "vm-state-machine/machine.qcow2", "+1G"])
40− newAvail = machine.succeed("df --output=avail / | sed 1d")
42− assert int(oldAvail) < int(newAvail), "File system did not grow"
nixos/tests/systemd-initrd-swraid.nixdeleted−50
@@ -1,50 +0,0 @@
1−import ./make-test-python.nix ({ lib, pkgs, ... }: {
2− name = "systemd-initrd-swraid";
4− nodes.machine = { pkgs, ... }: {
7− emptyDiskImages = [ 512 512 ];
11− boot.loader.systemd-boot.enable = true;
12− boot.loader.efi.canTouchEfiVariables = true;
14− environment.systemPackages = with pkgs; [ mdadm e2fsprogs ]; # for mdadm and mkfs.ext4
18− emergencyAccess = true;
23− ARRAY /dev/md0 devices=/dev/vdc,/dev/vdd
26− kernelModules = [ "raid0" ];
29− specialisation.boot-swraid.configuration.virtualisation.bootDevice = "/dev/disk/by-label/testraid";
34− machine.succeed("mdadm --create --force /dev/md0 -n 2 --level=raid0 /dev/vdc /dev/vdd")
35− machine.succeed("mkfs.ext4 -L testraid /dev/md0")
36− machine.succeed("mkdir -p /mnt && mount /dev/md0 /mnt && echo hello > /mnt/test && umount /mnt")
39− machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-swraid.conf")
40− machine.succeed("sync")
42− machine.wait_for_unit("multi-user.target")
44− # Ensure we have successfully booted from the RAID
45− assert "(initrd)" in machine.succeed("systemd-analyze") # booted with systemd in stage 1
46− assert "/dev/md0 on / type ext4" in machine.succeed("mount")
47− assert "hello" in machine.succeed("cat /test")
48− assert "md0" in machine.succeed("cat /proc/mdstat")
nixos/tests/systemd-networkd.nix−10
@@ -8,9 +8,6 @@ let generateNodeConf = { lib, pkgs, config, privk, pubk, peerId, nodeId, ...}: {
8 environment.systemPackages = with pkgs; [ wireguard-tools ];
8 environment.systemPackages = with pkgs; [ wireguard-tools ];
9 systemd.network = {
9 systemd.network = {
10 enable = true;
10 enable = true;
12− routeTables.custom = 23;
14 netdevs = {
11 netdevs = {
15 "90-wg0" = {
12 "90-wg0" = {
16 netdevConfig = { Kind = "wireguard"; Name = "wg0"; };
13 netdevConfig = { Kind = "wireguard"; Name = "wg0"; };
@@ -42,7 +39,6 @@ let generateNodeConf = { lib, pkgs, config, privk, pubk, peerId, nodeId, ...}: {
42 address = [ "10.0.0.${nodeId}/32" ];
39 address = [ "10.0.0.${nodeId}/32" ];
43 routes = [
40 routes = [
44 { routeConfig = { Gateway = "10.0.0.${nodeId}"; Destination = "10.0.0.0/24"; }; }
41 { routeConfig = { Gateway = "10.0.0.${nodeId}"; Destination = "10.0.0.0/24"; }; }
45− { routeConfig = { Gateway = "10.0.0.${nodeId}"; Destination = "10.0.0.0/24"; Table = "custom"; }; }
48 "30-eth1" = {
44 "30-eth1" = {
@@ -91,12 +87,6 @@ testScript = ''
91 node1.wait_for_unit("systemd-networkd-wait-online.service")
87 node1.wait_for_unit("systemd-networkd-wait-online.service")
92 node2.wait_for_unit("systemd-networkd-wait-online.service")
88 node2.wait_for_unit("systemd-networkd-wait-online.service")
94− # ================================
96− # ================================
97− node1.succeed("grep RouteTable=custom:23 /etc/systemd/networkd.conf")
98− node1.succeed("sudo ip route show table custom | grep '10.0.0.0/24 via 10.0.0.1 dev wg0 proto static'")
100 # ================================
90 # ================================
101 # Wireguard
91 # Wireguard
102 # ================================
92 # ================================
nixos/tests/systemd-shutdown.nixdeleted−26
@@ -1,26 +0,0 @@
1−import ./make-test-python.nix ({ pkgs, systemdStage1 ? false, ...} : let
2− msg = "Shutting down NixOS";
4− name = "systemd-shutdown";
5− meta = with pkgs.lib.maintainers; {
6− maintainers = [ das_j ];
10− imports = [ ../modules/profiles/minimal.nix ];
11− systemd.shutdownRamfs.contents."/etc/systemd/system-shutdown/shutdown-message".source = pkgs.writeShellScript "shutdown-message" ''
17− machine.wait_for_unit("multi-user.target")
18− # .shutdown() would wait for the machine to power off
19− machine.succeed("systemctl poweroff")
20− # Message printed by systemd-shutdown
21− machine.wait_for_console_text("Unmounting '/oldroot'")
22− machine.wait_for_console_text("${msg}")
23− # Don't try to sync filesystems
24− machine.booted = False
nixos/tests/taskserver.nix−1
@@ -63,7 +63,6 @@ in {
63 server = {
63 server = {
64 services.taskserver.enable = true;
64 services.taskserver.enable = true;
65 services.taskserver.listenHost = "::";
65 services.taskserver.listenHost = "::";
66− services.taskserver.openFirewall = true;
67 services.taskserver.fqdn = "server";
66 services.taskserver.fqdn = "server";
68 services.taskserver.organisations = {
67 services.taskserver.organisations = {
69 testOrganisation.users = [ "alice" "foo" ];
68 testOrganisation.users = [ "alice" "foo" ];
nixos/tests/vaultwarden.nix+1
@@ -113,6 +113,7 @@ let
113 driver.find_element_by_css_selector('input#masterPasswordRetype').send_keys(
113 driver.find_element_by_css_selector('input#masterPasswordRetype').send_keys(
114 '${userPassword}'
114 '${userPassword}'
116+ driver.find_element_by_css_selector('input#acceptPolicies').click()
117 driver.find_element_by_xpath("//button[contains(., 'Submit')]").click()
118 driver.find_element_by_xpath("//button[contains(., 'Submit')]").click()
nixos/tests/web-apps/netbox.nix+1−1
@@ -5,7 +5,7 @@ import ../make-test-python.nix ({ lib, pkgs, ... }: {
5 maintainers = [ n0emis ];
5 maintainers = [ n0emis ];
8− nodes.machine = { ... }: {
8+ machine = { ... }: {
9 services.netbox = {
9 services.netbox = {
10 enable = true;
10 enable = true;
11 secretKeyFile = pkgs.writeText "secret" ''
11 secretKeyFile = pkgs.writeText "secret" ''
nixos/tests/web-apps/nifi.nixdeleted−30
@@ -1,30 +0,0 @@
1−import ../make-test-python.nix ({pkgs, ...}:
4− meta.maintainers = with pkgs.lib.maintainers; [ izorkin ];
7− nifi = { pkgs, ... }: {
22− nifi.wait_for_unit("nifi.service")
23− nifi.wait_for_open_port(8080)
25− # Check if NiFi is running
26− nifi.succeed("curl --fail http://127.0.0.1:8080/nifi/login 2> /dev/null | grep 'NiFi Login'")
nixos/tests/web-apps/peertube.nix+2−3
@@ -30,11 +30,10 @@ import ../make-test-python.nix ({pkgs, ...}:
33− services.redis.servers.peertube = {
33+ services.redis = {
34 enable = true;
34 enable = true;
35 bind = "0.0.0.0";
35 bind = "0.0.0.0";
36 requirePass = "turrQfaQwnanGbcsdhxy";
36 requirePass = "turrQfaQwnanGbcsdhxy";
@@ -110,7 +109,7 @@ import ../make-test-python.nix ({pkgs, ...}:
110 start_all()
109 start_all()
112 database.wait_for_unit("postgresql.service")
111 database.wait_for_unit("postgresql.service")
113− database.wait_for_unit("redis-peertube.service")
112+ database.wait_for_unit("redis.service")
115 database.wait_for_open_port(5432)
114 database.wait_for_open_port(5432)
116 database.wait_for_open_port(6379)
115 database.wait_for_open_port(6379)
nixos/tests/xmonad-xdg-autostart.nixdeleted−35
@@ -1,35 +0,0 @@
1−import ./make-test-python.nix ({ lib, ... }: {
2− name = "xmonad-xdg-autostart";
3− meta.maintainers = with lib.maintainers; [ oxalica ];
5− nodes.machine = { pkgs, config, ... }: {
6− imports = [ ./common/x11.nix ./common/user-account.nix ];
7− test-support.displayManager.auto.user = "alice";
8− services.xserver.displayManager.defaultSession = "none+xmonad";
9− services.xserver.windowManager.xmonad.enable = true;
10− services.xserver.desktopManager.runXdgAutostartIfNone = true;
12− environment.systemPackages = [
13− (pkgs.writeTextFile {
14− name = "test-xdg-autostart";
15− destination = "/etc/xdg/autostart/test-xdg-autostart.desktop";
18− Name=test-xdg-autoatart
21− Exec=${pkgs.coreutils}/bin/touch ${config.users.users.alice.home}/xdg-autostart-executed
27− testScript = { nodes, ... }:
29− user = nodes.machine.config.users.users.alice;
33− machine.wait_for_file("${user.home}/xdg-autostart-executed")
nixos/tests/xmpp/xmpp-sendmessage.nix+4−1
@@ -51,8 +51,11 @@ class CthonTest(ClientXMPP):
51 log.info('Message sent')
51 log.info('Message sent')
53 # Test http upload (XEP_0363)
53 # Test http upload (XEP_0363)
54+ def timeout_callback(arg):
55+ log.error("ERROR: Cannot upload file. XEP_0363 seems broken")
55− url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10)
58+ url = await self['xep_0363'].upload_file("${dummyFile}",timeout=10, timeout_callback=timeout_callback)
57 log.error("ERROR: Cannot run upload command. XEP_0363 seems broken")
60 log.error("ERROR: Cannot run upload command. XEP_0363 seems broken")
58 sys.exit(1)
61 sys.exit(1)
@@ -127,54 +127,4 @@ in {
129 installer = (import ./installer.nix { }).zfsroot;
129 installer = (import ./installer.nix { }).zfsroot;
131− expand-partitions = makeTest {
132− name = "multi-disk-zfs";
134− machine = { pkgs, ... }: {
135− environment.systemPackages = [ pkgs.parted ];
136− boot.supportedFilesystems = [ "zfs" ];
137− networking.hostId = "00000000";
140− emptyDiskImages = [ 20480 20480 20480 20480 20480 20480 ];
143− specialisation.resize.configuration = {
144− services.zfs.expandOnBoot = [ "tank" ];
149− testScript = { nodes, ... }:
152− machine.wait_for_unit("default.target")
153− print(machine.succeed('mount'))
155− print(machine.succeed('parted --script /dev/vdb -- mklabel gpt'))
156− print(machine.succeed('parted --script /dev/vdb -- mkpart primary 1M 70M'))
158− print(machine.succeed('parted --script /dev/vdc -- mklabel gpt'))
159− print(machine.succeed('parted --script /dev/vdc -- mkpart primary 1M 70M'))
161− print(machine.succeed('zpool create tank mirror /dev/vdb1 /dev/vdc1 mirror /dev/vdd /dev/vde mirror /dev/vdf /dev/vdg'))
162− print(machine.succeed('zpool list -v'))
163− print(machine.succeed('mount'))
164− start_size = int(machine.succeed('df -k --output=size /tank | tail -n1').strip())
166− print(machine.succeed("/run/current-system/specialisation/resize/bin/switch-to-configuration test >&2"))
167− machine.wait_for_unit("zpool-expand-pools.service")
168− machine.wait_for_unit("zpool-expand@tank.service")
170− print(machine.succeed('zpool list -v'))
171− new_size = int(machine.succeed('df -k --output=size /tank | tail -n1').strip())
173− if (new_size - start_size) > 20000000:
174− print("Disk grew appropriately.")
176− print(f"Disk went from {start_size} to {new_size}, which doesn't seem right.")
pkgs/applications/accessibility/espeakup/default.nixdeleted−46
@@ -1,46 +0,0 @@
13−stdenv.mkDerivation rec {
17− src = fetchFromGitHub {
18− owner = "linux-speakup";
21− sha256 = "0lmjwafvfxy07zn18v3dzjwwpnid2xffgvy2dzlwkbns8gb60ds2";
24− nativeBuildInputs = [
37− PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system";
40− homepage = "https://github.com/linux-speakup/espeakup";
41− description = "Lightweight connector for espeak-ng and speakup";
42− license = licenses.gpl3Plus;
43− maintainers = with maintainers; [ ethindp ];
44− platforms = with platforms; linux;
pkgs/applications/accessibility/wvkbd/default.nixdeleted−36
@@ -1,36 +0,0 @@
14−stdenv.mkDerivation rec {
18− src = fetchFromGitHub {
19− owner = "jjsullivan5196";
22− sha256 = "sha256-5UV2PMrLXtF3AxjfPxxwFRkgVef+Ap8nG1v795o0bWE=";
25− nativeBuildInputs = [ pkg-config ];
26− buildInputs = [ wayland-scanner wayland pango glib harfbuzz cairo libxkbcommon ];
27− installFlags = [ "PREFIX=$(out)" ];
30− homepage = "https://github.com/jjsullivan5196/wvkbd";
31− description = "On-screen keyboard for wlroots";
32− maintainers = [ maintainers.elohmeier ];
33− platforms = platforms.linux;
34− license = licenses.gpl3Plus;
pkgs/applications/audio/ChowPhaser/default.nixdeleted−76
@@ -1,76 +0,0 @@
1−{ alsa-lib, at-spi2-core, cmake, curl, dbus, libepoxy, fetchFromGitHub, freeglut
2−, freetype, gcc-unwrapped, gtk3, lib, libGL, libXcursor, libXdmcp, libXext
3−, libXinerama, libXrandr, libXtst, libdatrie, libjack2, libpsl, libselinux
4−, libsepol, libsysprof-capture, libthai, libxkbcommon, pcre, pkg-config
5−, python3, sqlite, stdenv }:
7−stdenv.mkDerivation rec {
11− src = fetchFromGitHub {
12− owner = "jatinchowdhury18";
15− fetchSubmodules = true;
16− sha256 = "sha256-9wo7ZFMruG3QNvlpILSvrFh/Sx6J1qnlWc8+aQyS4tQ=";
19− nativeBuildInputs = [ pkg-config cmake ];
52− "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
53− "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
54− "-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
58− mkdir -p $out/lib/lv2 $out/lib/vst3 $out/bin $out/share/doc/ChowPhaser/
59− cd ChowPhaserMono_artefacts/Release
60− cp libChowPhaserMono_SharedCode.a $out/lib
61− cp -r VST3/ChowPhaserMono.vst3 $out/lib/vst3
62− cp Standalone/ChowPhaserMono $out/bin
63− cd ../../ChowPhaserStereo_artefacts/Release
64− cp libChowPhaserStereo_SharedCode.a $out/lib
65− cp -r VST3/ChowPhaserStereo.vst3 $out/lib/vst3
66− cp Standalone/ChowPhaserStereo $out/bin
70− homepage = "https://github.com/jatinchowdhury18/ChowPhaser";
71− description = "Phaser effect based loosely on the Schulte Compact Phasing 'A'";
72− license = with licenses; [ bsd3 ];
73− maintainers = with maintainers; [ magnetophon ];
74− platforms = platforms.linux;
pkgs/applications/audio/LibreArp/default.nixdeleted−53
@@ -1,53 +0,0 @@
1−{ stdenv, lib, fetchFromGitLab, cmake, pkg-config, cairo, libxkbcommon
2−, xcbutilcursor, xcbutilkeysyms, xcbutil, libXrandr, libXinerama, libXcursor
3−, alsa-lib, libjack2, lv2, gcc-unwrapped, curl}:
5−stdenv.mkDerivation rec {
9− src = fetchFromGitLab {
13− hash = "sha256-jCUT/sflO9L57xRTqNR90RbwJ0uZ+xJVXnB3n+FhWBo=";
14− fetchSubmodules = true;
17− nativeBuildInputs = [ cmake pkg-config ];
34− "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
35− "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
36− "-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
40− mkdir -p $out/lib/vst3
41− cd LibreArp_artefacts/Release
42− cp -r VST3/LibreArp.vst3 $out/lib/vst3
47− "A pattern-based arpeggio generator plugin.";
48− homepage = "https://librearp.gitlab.io/";
49− license = licenses.gpl3Plus;
50− platforms = [ "x86_64-linux" ];
51− maintainers = with maintainers; [ magnetophon ];
pkgs/applications/audio/LibreArp/lv2.nixdeleted−53
@@ -1,53 +0,0 @@
1−{ stdenv, lib, fetchFromGitLab, cmake, pkg-config, cairo, libxkbcommon
2−, xcbutilcursor, xcbutilkeysyms, xcbutil, libXrandr, libXinerama, libXcursor
3−, alsa-lib, libjack2, lv2, gcc-unwrapped, curl}:
5−stdenv.mkDerivation rec {
6− pname = "LibreArp-lv2";
9− src = fetchFromGitLab {
12− rev = "${version}-lv2";
13− hash = "sha256-j5SksuhC4ZXXILfOpwXNqIu5fO07a/6tiZ5qUo+p0Ug=";
14− fetchSubmodules = true;
17− nativeBuildInputs = [ cmake pkg-config ];
34− "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
35− "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
36− "-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
40− mkdir -p $out/lib/lv2
41− cd LibreArp_artefacts/Release
42− cp -r LV2/LibreArp.lv2 $out/lib/lv2
47− "A pattern-based arpeggio generator plugin.";
48− homepage = "https://librearp.gitlab.io/";
49− license = licenses.gpl3Plus;
50− platforms = [ "x86_64-linux" ];
51− maintainers = with maintainers; [ magnetophon ];
pkgs/applications/audio/amberol/default.nixdeleted−75
@@ -1,75 +0,0 @@
19−stdenv.mkDerivation rec {
23− src = fetchFromGitLab {
24− domain = "gitlab.gnome.org";
28− sha256 = "sha256-4yW7rVlP9Zskyt4l/VQoX+9q3TUdEuLZrNQuQvziIf4=";
31− cargoDeps = rustPlatform.fetchCargoTarball {
33− name = "${pname}-${version}";
34− sha256 = "sha256-1ahEWLBmkT+B8qD0Qd1skXqk1wvP6yuFNAQBRdispC4=";
38− patchShebangs build-aux
41− nativeBuildInputs = [
49− ] ++ (with rustPlatform; [
60− gst_all_1.gst-plugins-base
61− gst_all_1.gst-plugins-good
62− gst_all_1.gst-plugins-bad
63− gst_all_1.gst-plugins-ugly
69− homepage = "https://gitlab.gnome.org/ebassi/amberol";
70− description = "A small and simple sound and music player";
71− maintainers = with maintainers; [ linsui ];
72− license = licenses.gpl3Plus;
73− platforms = platforms.linux;
pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patchnew file+355
@@ -0,0 +1,355 @@
1+From deeb435829d73524df851f6f4c2d4be552c99230 Mon Sep 17 00:00:00 2001
2+From: Dmitry Vedenko <dmitry@crsib.me>
3+Date: Fri, 1 Oct 2021 16:21:22 +0300
4+Subject: [PATCH] Use a different approach to estimate the disk space usage
6+New a approach is a bit less precise, but removes the requirement for the "private" SQLite3 table and allows Audacity to be built against system SQLite3.
8+ cmake-proxies/sqlite/CMakeLists.txt | 5 -
9+ src/DBConnection.h | 4 +-
10+ src/ProjectFileIO.cpp | 269 +++++-----------------------
11+ 3 files changed, 44 insertions(+), 234 deletions(-)
13+diff --git a/cmake-proxies/sqlite/CMakeLists.txt b/cmake-proxies/sqlite/CMakeLists.txt
14+index 63d70637c..d7b9b95ef 100644
15+--- a/cmake-proxies/sqlite/CMakeLists.txt
16++++ b/cmake-proxies/sqlite/CMakeLists.txt
17+@@ -19,11 +19,6 @@ list( APPEND INCLUDES
22+- # We need the dbpage table for space calculations.
24+- SQLITE_ENABLE_DBPAGE_VTAB=1
26+ # Can't be set after a WAL mode database is initialized, so change
27+ # the default here to ensure all project files get the same page
29+diff --git a/src/DBConnection.h b/src/DBConnection.h
30+index 16a7fc9d4..07d3af95e 100644
31+--- a/src/DBConnection.h
32++++ b/src/DBConnection.h
33+@@ -75,8 +75,8 @@ public:
40++ GetAllSampleBlocksSize
42+ sqlite3_stmt *Prepare(enum StatementID id, const char *sql);
44+diff --git a/src/ProjectFileIO.cpp b/src/ProjectFileIO.cpp
45+index 3b3e2e1fd..c9bc45af4 100644
46+--- a/src/ProjectFileIO.cpp
47++++ b/src/ProjectFileIO.cpp
48+@@ -35,6 +35,7 @@ Paul Licameli split from AudacityProject.cpp
49+ #include "widgets/ProgressDialog.h"
50+ #include "wxFileNameWrapper.h"
51+ #include "xml/XMLFileReader.h"
52++#include "MemoryX.h"`
55+ #if !defined(__WXMSW__)
56+@@ -2357,255 +2358,69 @@ int64_t ProjectFileIO::GetTotalUsage()
60+-// Returns the amount of disk space used by the specified sample blockid or all
61+-// of the sample blocks if the blockid is 0. It does this by using the raw SQLite
62+-// pages available from the "sqlite_dbpage" virtual table to traverse the SQLite
63+-// table b-tree described here: https://www.sqlite.org/fileformat.html
64++// Returns the estimation of disk space used by the specified sample blockid or all
65++// of the sample blocks if the blockid is 0. This does not include small overhead
66++// of the internal SQLite structures, only the size used by the data
68+ int64_t ProjectFileIO::GetDiskUsage(DBConnection &conn, SampleBlockID blockid /* = 0 */)
70+- // Information we need to track our travels through the b-tree
76+- unsigned char data[65536];
78+- std::vector<page> stack;
84++ sqlite3_stmt* stmt = nullptr;
86+- // Get the rootpage for the sampleblocks table.
87+- sqlite3_stmt *stmt =
88+- conn.Prepare(DBConnection::GetRootPage,
89+- "SELECT rootpage FROM sqlite_master WHERE tbl_name = 'sampleblocks';");
90+- if (stmt == nullptr || sqlite3_step(stmt) != SQLITE_ROW)
96+- // And store it in our first stack frame
97+- stack.push_back({sqlite3_column_int64(stmt, 0)});
98++ static const char* statement =
100++ sum(length(blockid) + length(sampleformat) +
101++ length(summin) + length(summax) + length(sumrms) +
102++ length(summary256) + length(summary64k) +
104++FROM sampleblocks;)";
106+- // All done with the statement
107+- sqlite3_clear_bindings(stmt);
108+- sqlite3_reset(stmt);
110+- // Prepare/retrieve statement to read raw database page
111+- stmt = conn.Prepare(DBConnection::GetDBPage,
112+- "SELECT data FROM sqlite_dbpage WHERE pgno = ?1;");
113+- if (stmt == nullptr)
116++ stmt = conn.Prepare(DBConnection::GetAllSampleBlocksSize, statement);
119+- // Traverse the b-tree until we've visited all of the leaf pages or until
120+- // we find the one corresponding to the passed in sample blockid. Because we
121+- // use an integer primary key for the sampleblocks table, the traversal will
122+- // be in ascending blockid sequence.
126+- // Acces the top stack frame
127+- page &pg = stack.back();
128++ static const char* statement =
130++ length(blockid) + length(sampleformat) +
131++ length(summin) + length(summax) + length(sumrms) +
132++ length(summary256) + length(summary64k) +
134++FROM sampleblocks WHERE blockid = ?1;)";
136+- // Read the page from the sqlite_dbpage table if it hasn't yet been loaded
137+- if (pg.numCells == 0)
139+- // Bind the page number
140+- sqlite3_bind_int64(stmt, 1, pg.pgno);
141++ stmt = conn.Prepare(DBConnection::GetSampleBlockSize, statement);
144+- // And retrieve the page
145+- if (sqlite3_step(stmt) != SQLITE_ROW)
146++ auto cleanup = finally(
148++ // Clear statement bindings and rewind statement
149++ if (stmt != nullptr)
151+- // REVIEW: Likely harmless failure - says size is zero on
153+- // LLL: Yea, but not much else we can do.
155++ sqlite3_clear_bindings(stmt);
156++ sqlite3_reset(stmt);
160+- // Copy the page content to the stack frame
162+- sqlite3_column_blob(stmt, 0),
163+- sqlite3_column_bytes(stmt, 0));
165+- // And retrieve the total number of cells within it
166+- pg.numCells = get2(&pg.data[3]);
168+- // Reset statement for next usage
169+- sqlite3_clear_bindings(stmt);
170+- sqlite3_reset(stmt);
173+- //wxLogDebug("%*.*spgno %lld currentCell %d numCells %d", (stack.size() - 1) * 2, (stack.size() - 1) * 2, "", pg.pgno, pg.currentCell, pg.numCells);
175+- // Process an interior table b-tree page
176+- if (pg.data[0] == 0x05)
178+- // Process the next cell if we haven't examined all of them yet
179+- if (pg.currentCell < pg.numCells)
181+- // Remember the right-most leaf page number.
182+- right = get4(&pg.data[8]);
184+- // Iterate over the cells.
186+- // If we're not looking for a specific blockid, then we always push the
187+- // target page onto the stack and leave the loop after a single iteration.
189+- // Otherwise, we match the blockid against the highest integer key contained
190+- // within the cell and if the blockid falls within the cell, we stack the
191+- // page and stop the iteration.
193+- // In theory, we could do a binary search for a specific blockid here, but
194+- // because our sample blocks are always large, we will get very few cells
195+- // per page...usually 6 or less.
197+- // In both cases, the stacked page can be either an internal or leaf page.
198+- bool stacked = false;
199+- while (pg.currentCell < pg.numCells)
201+- // Get the offset to this cell using the offset in the cell pointer
204+- // The cell pointer array starts immediately after the page header
205+- // at offset 12 and the retrieved offset is from the beginning of
207+- int celloff = get2(&pg.data[12 + (pg.currentCell * 2)]);
209+- // Bump to the next cell for the next iteration.
212+- // Get the page number this cell describes
213+- int pagenum = get4(&pg.data[celloff]);
215+- // And the highest integer key, which starts at offset 4 within the cell.
216+- int64_t intkey = 0;
217+- get_varint(&pg.data[celloff + 4], &intkey);
219+- //wxLogDebug("%*.*sinternal - right %lld celloff %d pagenum %d intkey %lld", (stack.size() - 1) * 2, (stack.size() - 1) * 2, " ", right, celloff, pagenum, intkey);
221+- // Stack the described page if we're not looking for a specific blockid
222+- // or if this page contains the given blockid.
223+- if (!blockid || blockid <= intkey)
225+- stack.push_back({pagenum, 0, 0});
231+- // If we pushed a new page onto the stack, we need to jump back up
232+- // to read the page
240++ int rc = sqlite3_bind_int64(stmt, 1, blockid);
242+- // We've exhausted all the cells with this page, so we stack the right-most
243+- // leaf page. Ensure we only process it once.
246+- stack.push_back({right, 0, 0});
251+- // Process a leaf table b-tree page
252+- else if (pg.data[0] == 0x0d)
253++ if (rc != SQLITE_OK)
255+- // Iterate over the cells
257+- // If we're not looking for a specific blockid, then just accumulate the
258+- // payload sizes. We will be reading every leaf page in the sampleblocks
261+- // Otherwise we break out when we find the matching blockid. In this case,
262+- // we only ever look at 1 leaf page.
264+- for (int i = 0; i < pg.numCells; i++)
266+- // Get the offset to this cell using the offset in the cell pointer
269+- // The cell pointer array starts immediately after the page header
270+- // at offset 8 and the retrieved offset is from the beginning of
272+- int celloff = get2(&pg.data[8 + (i * 2)]);
274+- // Get the total payload size in bytes of the described row.
275+- int64_t payload = 0;
276+- int digits = get_varint(&pg.data[celloff], &payload);
278+- // Get the integer key for this row.
279+- int64_t intkey = 0;
280+- get_varint(&pg.data[celloff + digits], &intkey);
282+- //wxLogDebug("%*.*sleaf - celloff %4d intkey %lld payload %lld", (stack.size() - 1) * 2, (stack.size() - 1) * 2, " ", celloff, intkey, payload);
284+- // Add this payload size to the total if we're not looking for a specific
290+- // Otherwise, return the payload size for a matching row
291+- else if (blockid == intkey)
296++ conn.ThrowException(false);
300+- // Done with the current branch, so pop back up to the previous one (if any)
302+- } while (!stack.empty());
304+- // Return the total used for all sample blocks
308+-// Retrieves a 2-byte big-endian integer from the page data
309+-unsigned int ProjectFileIO::get2(const unsigned char *ptr)
311+- return (ptr[0] << 8) | ptr[1];
314+-// Retrieves a 4-byte big-endian integer from the page data
315+-unsigned int ProjectFileIO::get4(const unsigned char *ptr)
317+- return ((unsigned int) ptr[0] << 24) |
318+- ((unsigned int) ptr[1] << 16) |
319+- ((unsigned int) ptr[2] << 8) |
320+- ((unsigned int) ptr[3]);
323+-// Retrieves a variable length integer from the page data. Returns the
324+-// number of digits used to encode the integer and the stores the
325+-// value at the given location.
326+-int ProjectFileIO::get_varint(const unsigned char *ptr, int64_t *out)
330++ int rc = sqlite3_step(stmt);
332+- for (i = 0; i < 8; ++i)
333++ if (rc != SQLITE_ROW)
335+- val = (val << 7) + (ptr[i] & 0x7f);
336+- if ((ptr[i] & 0x80) == 0)
341++ conn.ThrowException(false);
344+- val = (val << 8) + (ptr[i] & 0xff);
346++ const int64_t size = sqlite3_column_int64(stmt, 0);
352+ InvisibleTemporaryProject::InvisibleTemporaryProject()
pkgs/applications/audio/audacity/default.nix+35−58
@@ -3,7 +3,6 @@
3, fetchFromGitHub
3, fetchFromGitHub
4, fetchpatch
4, fetchpatch
7, pkg-config
6, pkg-config
@@ -21,17 +20,14 @@
21, libsndfile
20, libsndfile
27, libid3tag
25, libid3tag
31, soundtouch
28, soundtouch
33−, portaudio # given up fighting their portaudio.patch?
30+/*, portaudio - given up fighting their portaudio.patch */
35, linuxHeaders
31, linuxHeaders
37, at-spi2-core
33, at-spi2-core
@@ -40,14 +36,11 @@
42, libpthreadstubs
38, libpthreadstubs
44, libselinux
39, libselinux
46, libxkbcommon
41, libxkbcommon
47, util-linux
42, util-linux
51, AppKit ? null
44, AppKit ? null
52, AudioToolbox ? null
45, AudioToolbox ? null
53, AudioUnit ? null
46, AudioUnit ? null
@@ -65,14 +58,12 @@
67 inherit (lib) optionals;
60 inherit (lib) optionals;
71 wxWidgets_src = fetchFromGitHub {
62 wxWidgets_src = fetchFromGitHub {
72− owner = pname;
63+ owner = "audacity";
73 repo = "wxWidgets";
64 repo = "wxWidgets";
74− rev = "v${version}-${pname}";
65+ rev = "07e7d832c7a337aedba3537b90b2c98c4d8e2985";
75− sha256 = "sha256-KrmYYv23DHBYKIuxMYBioCQ2e4KWdgmuREnimtm0XNU=";
66+ sha256 = "1mawnkcrmqj98jp0jxlnh9xkc950ca033ccb51c7035pzmi9if9a";
76 fetchSubmodules = true;
67 fetchSubmodules = true;
@@ -83,20 +74,41 @@ let
83 wxmac' = wxmac.overrideAttrs (oldAttrs: rec {
74 wxmac' = wxmac.overrideAttrs (oldAttrs: rec {
84 src = wxWidgets_src;
75 src = wxWidgets_src;
86−in stdenv.mkDerivation rec {
79+stdenv.mkDerivation rec {
81+ # nixpkgs-update: no auto update
82+ # Humans too! Let's wait to see how the situation with
83+ # https://github.com/audacity/audacity/issues/1213 develops before
84+ # pulling any updates that are subject to this privacy policy. We
85+ # may wish to switch to a fork, but at the time of writing
86+ # (2021-07-05) it's too early to tell how well any of the forks will
87− inherit pname version;
88+ version = "3.0.2";
89 src = fetchFromGitHub {
90 src = fetchFromGitHub {
90− owner = pname;
91+ owner = "audacity";
91− repo = pname;
92+ repo = "audacity";
92 rev = "Audacity-${version}";
93 rev = "Audacity-${version}";
93− sha256 = "sha256-sdI4paxIHDZgoWTCekjrkFR4JFpQC6OatcnJdVXCCZk=";
94+ sha256 = "035qq2ff16cdl2cb9iply2bfjmhfl1dpscg79x6c9l0i9m8k41zj";
99+ url = "https://github.com/audacity/audacity/commit/7f8135e112a0e1e8e906abab9339680d1e491441.patch";
100+ sha256 = "0zp2iydd46analda9cfnbmzdkjphz5m7dynrdj5qdnmq6j3px9fw";
101+ name = "audacity_xdg_paths.patch";
103+ # This is required to make audacity work with nixpkgs’ sqlite
104+ # https://github.com/audacity/audacity/pull/1802 rebased onto 3.0.2
105+ ./0001-Use-a-different-approach-to-estimate-the-disk-space-.patch
96 postPatch = ''
108 postPatch = ''
97− mkdir src/private
109+ touch src/RevisionIdent.h
98 '' + lib.optionalString stdenv.isLinux ''
110 '' + lib.optionalString stdenv.isLinux ''
99− substituteInPlace libraries/lib-files/FileNames.cpp \
111+ substituteInPlace src/FileNames.cpp \
100 --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
112 --replace /usr/include/linux/magic.h ${linuxHeaders}/include/linux/magic.h
@@ -107,7 +119,6 @@ in stdenv.mkDerivation rec {
108 ] ++ optionals stdenv.isLinux [
120 ] ++ optionals stdenv.isLinux [
109 linuxHeaders
121 linuxHeaders
113 buildInputs = [
124 buildInputs = [
@@ -115,18 +126,15 @@ in stdenv.mkDerivation rec {
119 libid3tag
129 libid3tag
124 libsndfile
133 libsndfile
125 libvorbis
134 libvorbis
132 soundtouch
140 soundtouch
@@ -135,7 +143,6 @@ in stdenv.mkDerivation rec {
139 ] ++ optionals stdenv.isLinux [
146 ] ++ optionals stdenv.isLinux [
140 alsa-lib # for portaudio
147 alsa-lib # for portaudio
141 at-spi2-core
148 at-spi2-core
@@ -147,7 +154,6 @@ in stdenv.mkDerivation rec {
147 libxkbcommon
154 libxkbcommon
148 libselinux
155 libselinux
151 util-linux
157 util-linux
153 wxGTK'.gtk
159 wxGTK'.gtk
@@ -157,49 +163,20 @@ in stdenv.mkDerivation rec {
158 CoreAudioKit
164 CoreAudioKit
159 AudioUnit AudioToolbox CoreAudio CoreServices Carbon # for portaudio
165 AudioUnit AudioToolbox CoreAudio CoreServices Carbon # for portaudio
164 cmakeFlags = [
168 cmakeFlags = [
165− "-DAUDACITY_REV_LONG=nixpkgs"
169+ "-Daudacity_use_ffmpeg=linked"
166− "-DAUDACITY_REV_TIME=nixpkgs"
167 "-DDISABLE_DYNAMIC_LOADING_FFMPEG=ON"
170 "-DDISABLE_DYNAMIC_LOADING_FFMPEG=ON"
168− "-Daudacity_conan_enabled=Off"
169− "-Daudacity_use_ffmpeg=loaded"
172 doCheck = false; # Test fails
173 doCheck = false; # Test fails
174− # Replace audacity's wrapper, to:
175− # - put it in the right place, it shouldn't be in "$out/audacity"
176− # - Add the ffmpeg dynamic dependency
177− postInstall = lib.optionalString stdenv.isLinux ''
179− wrapProgram "$out/bin/audacity" \
180− --prefix LD_LIBRARY_PATH : "$out/lib/audacity":${lib.makeLibraryPath [ ffmpeg_4 ]} \
181− --suffix AUDACITY_MODULES_PATH : "$out/lib/audacity/modules" \
182− --suffix AUDACITY_PATH : "$out/share/audacity"
185 meta = with lib; {
175 meta = with lib; {
186 description = "Sound editor with graphical UI";
176 description = "Sound editor with graphical UI";
187− homepage = "https://www.audacityteam.org";
177+ homepage = "https://www.audacityteam.org/";
188− changelog = "https://github.com/audacity/audacity/releases";
189− license = with licenses; [
178+ license = licenses.gpl2Plus;
191− # Must be GPL3 when building with "technologies that require it,
192− # such as the VST3 audio plugin interface".
193− # https://github.com/audacity/audacity/discussions/2142.
198 maintainers = with maintainers; [ lheckemann veprbl ];
179 maintainers = with maintainers; [ lheckemann veprbl ];
199 platforms = platforms.unix;
180 platforms = platforms.unix;
200− # darwin-aarch due to qtbase broken for it.
201− # darwin-x86_64 due to
202− # https://logs.nix.ci/?attempt_id=5cbc4581-09b4-4148-82fe-0326411a56b3&key=nixos%2Fnixpkgs.152273.
203− broken = stdenv.isDarwin;
pkgs/applications/audio/audio-recorder/default.nix+1−1
@@ -2,7 +2,7 @@
2, pkg-config, intltool
2, pkg-config, intltool
3, glib, dbus, gtk3, libappindicator-gtk3, gst_all_1
3, glib, dbus, gtk3, libappindicator-gtk3, gst_all_1
4, librsvg, wrapGAppsHook
4, librsvg, wrapGAppsHook
5−, pulseaudioSupport ? true, libpulseaudio }:
5+, pulseaudioSupport ? true, libpulseaudio ? null }:
7stdenv.mkDerivation rec {
7stdenv.mkDerivation rec {
8 pname = "audio-recorder";
8 pname = "audio-recorder";
pkgs/applications/audio/bespokesynth/default.nix−1
@@ -142,7 +142,6 @@ stdenv.mkDerivation rec {
143 ] ++ lib.optional enableVST2 unfree;
143 ] ++ lib.optional enableVST2 unfree;
144 maintainers = with maintainers; [ astro tobiasBora OPNA2608 ];
144 maintainers = with maintainers; [ astro tobiasBora OPNA2608 ];
145− mainProgram = "BespokeSynth";
146 platforms = platforms.all;
145 platforms = platforms.all;
pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix+2−2
@@ -6,11 +6,11 @@
7stdenv.mkDerivation rec {
7stdenv.mkDerivation rec {
8 pname = "bitwig-studio";
8 pname = "bitwig-studio";
9− version = "4.2.3";
9+ version = "4.2.1";
11 src = fetchurl {
11 src = fetchurl {
12 url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
12 url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
13− sha256 = "sha256-UCafrjrEwwHkhPum7sTOjtXzy7PNeK5/aeKg+b3CGJU=";
13+ sha256 = "sha256-kkpb8tLuj4QO+TBW2yNDugS4c6dCQ9Lddv6Z8NS0uio=";
16 nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
16 nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ];
pkgs/applications/audio/blanket/default.nix+7−7
@@ -9,21 +9,21 @@
9, appstream-glib
9, appstream-glib
10, python3Packages
10, python3Packages
13−, libadwaita
13+, libhandy
14, gobject-introspection
14, gobject-introspection
15, gst_all_1
15, gst_all_1
18python3Packages.buildPythonApplication rec {
18python3Packages.buildPythonApplication rec {
19 pname = "blanket";
19 pname = "blanket";
20− version = "0.6.0";
20+ version = "0.5.0";
22 src = fetchFromGitHub {
22 src = fetchFromGitHub {
23 owner = "rafaelmardojai";
23 owner = "rafaelmardojai";
24 repo = "blanket";
24 repo = "blanket";
25− rev = "refs/tags/${version}";
25+ rev = version;
26− sha256 = "sha256-4gthT1x76IfXWkLaLMPtFS4TRlRGk5Enbu/k1jAHzwE=";
26+ sha256 = "00i821zqfbigxmc709322r16z75qsw4rg23yhv35gza9sl65bzkg";
29 nativeBuildInputs = [
29 nativeBuildInputs = [
@@ -37,8 +37,8 @@ python3Packages.buildPythonApplication rec {
38 buildInputs = [
38 buildInputs = [
41− libadwaita
41+ libhandy
42 gobject-introspection
42 gobject-introspection
43 gst_all_1.gstreamer
43 gst_all_1.gstreamer
44 gst_all_1.gst-plugins-base
44 gst_all_1.gst-plugins-base
pkgs/applications/audio/callaudiod/default.nix+2−2
@@ -11,14 +11,14 @@
12stdenv.mkDerivation rec {
12stdenv.mkDerivation rec {
13 pname = "callaudiod";
13 pname = "callaudiod";
14− version = "0.1.4";
14+ version = "0.1.3";
16 src = fetchFromGitLab {
16 src = fetchFromGitLab {
17 domain = "gitlab.com";
17 domain = "gitlab.com";
18 owner = "mobian1";
18 owner = "mobian1";
19 repo = pname;
19 repo = pname;
20 rev = version;
20 rev = version;
21− sha256 = "sha256-71+9ALz55aqxXRBRwOcs9fwiQK31pJ9E72pGRmt0OkE=";
21+ sha256 = "sha256-WZ23jacCsZiNeMJfnYMaGdHXY9OCIBbeU9dWGDroaHE=";
24 strictDeps = true;
24 strictDeps = true;
pkgs/applications/audio/cardinal/default.nix+11−2
@@ -23,14 +23,23 @@
24stdenv.mkDerivation rec {
24stdenv.mkDerivation rec {
25 pname = "cardinal";
25 pname = "cardinal";
26− version = "22.04";
26+ version = "22.02";
28 src = fetchurl {
28 src = fetchurl {
30 "https://github.com/DISTRHO/Cardinal/releases/download/${version}/cardinal-${version}.tar.xz";
30 "https://github.com/DISTRHO/Cardinal/releases/download/${version}/cardinal-${version}.tar.xz";
31− sha256 = "sha256-7As4CckwByrTynOOpwAXa1R9Bpp/ft537f+PvAgz/BE=";
31+ sha256 = "sha256-IVlAROFGFffTEU00NCmv74w1DRb7dNMp20FeBVoDrdM=";
35+ # see https://github.com/DISTRHO/Cardinal/issues/151#issuecomment-1041886260
38+ "https://github.com/DISTRHO/Cardinal/commit/13e9ef37c5dd35d77a54b1cb006767be7a72ac69.patch";
39+ sha256 = "sha256-NYUYLbLeBX1WEzjPi0s/T1N+EXQKyi0ifbPxgBYDjRs=";
34 prePatch = ''
43 prePatch = ''
35 patchShebangs ./dpf/utils/generate-ttl.sh
44 patchShebangs ./dpf/utils/generate-ttl.sh
pkgs/applications/audio/carla/default.nix+2−2
@@ -15,13 +15,13 @@ assert withGtk3 -> gtk3 != null;
16stdenv.mkDerivation rec {
16stdenv.mkDerivation rec {
17 pname = "carla";
17 pname = "carla";
18− version = "2.4.3";
18+ version = "2.4.2";
20 src = fetchFromGitHub {
20 src = fetchFromGitHub {
21 owner = "falkTX";
21 owner = "falkTX";
22 repo = pname;
22 repo = pname;
23 rev = "v${version}";
23 rev = "v${version}";
24− sha256 = "sha256-FAQTIM5NpcOhLNMf62qiKaxg6QtK5uIJF/XT6KJVnUc=";
24+ sha256 = "sha256-A0QmyphjsNU06kh2f9rXrR+GkDEI5HqXRA9J82E6qJU=";
27 nativeBuildInputs = [
27 nativeBuildInputs = [
pkgs/applications/audio/caudec/default.nix+2−2
@@ -1,4 +1,4 @@
1−{ lib, stdenv, fetchurl, makeWrapper, bc, findutils, flac, lame, opusTools, procps, sox }:
1+{ lib, stdenv, fetchurl, makeWrapper, bash, bc, findutils, flac, lame, opusTools, procps, sox }:
3stdenv.mkDerivation rec {
3stdenv.mkDerivation rec {
4 pname = "caudec";
4 pname = "caudec";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
13 patchShebangs ./install.sh
13 patchShebangs ./install.sh
16− nativeBuildInputs = [ makeWrapper ];
16+ nativeBuildInputs = [ bash makeWrapper ];
18 installPhase = ''
18 installPhase = ''
19 ./install.sh --prefix=$out/bin
19 ./install.sh --prefix=$out/bin
pkgs/applications/audio/cider/default.nix+3−3
@@ -2,11 +2,11 @@
3appimageTools.wrapType2 rec {
3appimageTools.wrapType2 rec {
4 pname = "cider";
4 pname = "cider";
5− version = "1.4.1.1680";
5+ version = "1.3.1308";
7 src = fetchurl {
7 src = fetchurl {
8− url = "https://github.com/ciderapp/cider-releases/releases/download/v${version}/Cider-${builtins.concatStringsSep "." (lib.take 3 (lib.splitVersion version))}-alpha.${builtins.elemAt (lib.splitVersion version) 3}.AppImage";
8+ url = "https://1308-429851205-gh.circle-artifacts.com/0/%7E/Cider/dist/artifacts/Cider-${version}.AppImage";
9− sha256 = "sha256-hEv+vfMMH+Trwa1UF5R8EtyYeyiRVLP0BrXOK2+1q8M=";
9+ sha256 = "1lbyvn1c8155p039qfzx7jwad7km073phkmrzjm0w3ahdpwz3wgi";
12 extraInstallCommands =
12 extraInstallCommands =
pkgs/applications/audio/clementine/default.nix+10−3
@@ -51,17 +51,24 @@ let
51 withCD = config.clementine.cd or true;
51 withCD = config.clementine.cd or true;
52 withCloud = config.clementine.cloud or true;
52 withCloud = config.clementine.cloud or true;
54− version = "unstable-2022-04-11";
54+ # On the update after all 1.4rc, qt5.15 and protobuf 3.15 will be supported.
55+ version = "1.4.0rc1";
56 src = fetchFromGitHub {
57 src = fetchFromGitHub {
57 owner = "clementine-player";
58 owner = "clementine-player";
58 repo = "Clementine";
59 repo = "Clementine";
59− rev = "250024e117fbe5fae7c62b9c8e655d66412a6ed7";
60+ rev = version;
60− sha256 = "06fcbs3wig3mh711iypyj49qm5246f7qhvgvv8brqfrd8cqyh6qf";
61+ sha256 = "1rqk0hrsn8f8bjk0j0vq1af0ygy6xx7qi9fw0jjw2cmj6kzckyi2";
63 patches = [
64 patches = [
64 ./clementine-spotify-blob.patch
65 ./clementine-spotify-blob.patch
67+ # "short-term" fix for execution on wayland (1.4.0rc1-131-g2179027a6)
68+ # for https://github.com/clementine-player/Clementine/issues/6587
69+ url = "https://github.com/clementine-player/Clementine/commit/2179027a6d97530c857e43be873baacd696ff332.patch";
70+ sha256 = "0344bfcyvjim5ph8w4km6zkg96rj5g9ybp9x14qgyw2gkdksimn6";
67 nativeBuildInputs = [
74 nativeBuildInputs = [
pkgs/applications/audio/cmus/default.nix+2−2
@@ -1,5 +1,5 @@
1{ config, lib, stdenv, fetchFromGitHub, runCommand, ncurses, pkg-config
1{ config, lib, stdenv, fetchFromGitHub, runCommand, ncurses, pkg-config
2−, libiconv, CoreAudio, AudioUnit, VideoToolbox
2+, libiconv, CoreAudio, AudioUnit
4, alsaSupport ? stdenv.isLinux, alsa-lib ? null
4, alsaSupport ? stdenv.isLinux, alsa-lib ? null
5# simple fallback for everyone else
5# simple fallback for everyone else
@@ -121,7 +121,7 @@ stdenv.mkDerivation rec {
121 nativeBuildInputs = [ pkg-config ];
121 nativeBuildInputs = [ pkg-config ];
122 buildInputs = [ ncurses ]
122 buildInputs = [ ncurses ]
123 ++ lib.optional stdenv.cc.isClang clangGCC
123 ++ lib.optional stdenv.cc.isClang clangGCC
124− ++ lib.optionals stdenv.isDarwin [ libiconv CoreAudio AudioUnit VideoToolbox ]
124+ ++ lib.optionals stdenv.isDarwin [ libiconv CoreAudio AudioUnit ]
125 ++ flatten (concatMap (a: a.deps) opts);
125 ++ flatten (concatMap (a: a.deps) opts);
127 makeFlags = [ "LD=$(CC)" ];
127 makeFlags = [ "LD=$(CC)" ];
pkgs/applications/audio/denemo/default.nix+2−2
@@ -6,11 +6,11 @@
7stdenv.mkDerivation rec {
7stdenv.mkDerivation rec {
8 pname = "denemo";
8 pname = "denemo";
9− version = "2.6.0";
9+ version = "2.5.0";
11 src = fetchurl {
11 src = fetchurl {
12 url = "https://ftp.gnu.org/gnu/denemo/denemo-${version}.tar.gz";
12 url = "https://ftp.gnu.org/gnu/denemo/denemo-${version}.tar.gz";
13− sha256 = "sha256-S+WXDGmEf5fx+HYnXJdE5QNOfJg7EqEEX7IMI2SUtV0=";
13+ sha256 = "sha256-B6GbBL/o/z0emT+Iw6XvWmAsJCmIwSGCyV1DkhDyfBY=";
16 buildInputs = [
16 buildInputs = [
pkgs/applications/audio/dragonfly-reverb/default.nix+2−2
@@ -2,13 +2,13 @@
3stdenv.mkDerivation rec {
3stdenv.mkDerivation rec {
4 pname = "dragonfly-reverb";
4 pname = "dragonfly-reverb";
5− version = "3.2.6";
5+ version = "3.2.5";
7 src = fetchFromGitHub {
7 src = fetchFromGitHub {
8 owner = "michaelwillis";
8 owner = "michaelwillis";
9 repo = "dragonfly-reverb";
9 repo = "dragonfly-reverb";
10 rev = version;
10 rev = version;
11− sha256 = "sha256-hTapy/wXt1rRZVdkx2RDW8LS/DcY30p+WaAWgemGqVo=";
11+ sha256 = "14kia9wjs0nqfx4psnr3vf4x6hihkf80gb0mjzmdnnnk4cnrdydm";
12 fetchSubmodules = true;
12 fetchSubmodules = true;
pkgs/applications/audio/faust/faust2.nix+2−2
@@ -20,13 +20,13 @@ with lib.strings;
23− version = "2.40.0";
23+ version = "2.37.3";
25 src = fetchFromGitHub {
25 src = fetchFromGitHub {
26 owner = "grame-cncm";
26 owner = "grame-cncm";
27 repo = "faust";
27 repo = "faust";
28 rev = version;
28 rev = version;
29− sha256 = "sha256-IsrLaoMDwrDPxtqCXIy/7tZCdogTUkJ00obSco9SR/A=";
29+ sha256 = "sha256-Jzauw8+vBjtbK73Bh4huhX1ql1cWmh80EzEET3x03rc=";
30 fetchSubmodules = true;
30 fetchSubmodules = true;
pkgs/applications/audio/faust/faustlive.nix+12−9
@@ -1,34 +1,37 @@
1{ lib, stdenv, fetchFromGitHub
1{ lib, stdenv, fetchFromGitHub
2, llvm_10, qt5, qrencode, libmicrohttpd, libjack2, alsa-lib, faust, curl
2, llvm_10, qt5, qrencode, libmicrohttpd, libjack2, alsa-lib, faust, curl
3−, bc, coreutils, which, libsndfile, flac, libogg, libvorbis, libopus, pkg-config, libxcb, cmake, gnutls, libtasn1, p11-kit
3+, bc, coreutils, which, libsndfile, pkg-config, libxcb
6stdenv.mkDerivation rec {
6stdenv.mkDerivation rec {
7 pname = "faustlive";
7 pname = "faustlive";
8− version = "2.5.8";
8+ version = "2.5.5";
9 src = fetchFromGitHub {
9 src = fetchFromGitHub {
10 owner = "grame-cncm";
10 owner = "grame-cncm";
11 repo = "faustlive";
11 repo = "faustlive";
12 rev = version;
12 rev = version;
13− sha256 = "sha256-dt5YlvaCZ6JiNGPwVXPrKzVGWxnhdyP4lnKgck7ZSF8=";
13+ sha256 = "0qbn05nq170ckycwalkk5fppklc4g457mapr7p7ryrhc1hwzffm9";
14 fetchSubmodules = true;
14 fetchSubmodules = true;
17− nativeBuildInputs = [ pkg-config qt5.wrapQtAppsHook cmake ];
17+ nativeBuildInputs = [ pkg-config qt5.wrapQtAppsHook ];
19 buildInputs = [
19 buildInputs = [
20 llvm_10 qt5.qtbase qrencode libmicrohttpd libjack2 alsa-lib faust curl
20 llvm_10 qt5.qtbase qrencode libmicrohttpd libjack2 alsa-lib faust curl
21− bc coreutils which libsndfile flac libogg libvorbis libopus libxcb gnutls libtasn1 p11-kit
21+ bc coreutils which libsndfile libxcb
24 makeFlags = [ "PREFIX=$(out)" ];
24 makeFlags = [ "PREFIX=$(out)" ];
27− wrapProgram $out/bin/FaustLive --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libmicrohttpd libsndfile faust llvm_10 ]}"
30 postPatch = "cd Build";
26 postPatch = "cd Build";
29+ install -d "$out/bin"
30+ install -d "$out/share/applications"
31+ install FaustLive/FaustLive "$out/bin"
32+ install rsrc/FaustLive.desktop "$out/share/applications"
32 meta = with lib; {
35 meta = with lib; {
33 description = "A standalone just-in-time Faust compiler";
36 description = "A standalone just-in-time Faust compiler";
34 longDescription = ''
37 longDescription = ''
pkgs/applications/audio/faustPhysicalModeling/default.nix+2−2
@@ -1,13 +1,13 @@
1{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
1{ stdenv, lib, fetchFromGitHub, faust2jaqt, faust2lv2 }:
2stdenv.mkDerivation rec {
2stdenv.mkDerivation rec {
3 pname = "faustPhysicalModeling";
3 pname = "faustPhysicalModeling";
4− version = "2.40.0";
4+ version = "2.37.3";
6 src = fetchFromGitHub {
6 src = fetchFromGitHub {
7 owner = "grame-cncm";
7 owner = "grame-cncm";
8 repo = "faust";
8 repo = "faust";
9 rev = version;
9 rev = version;
10− sha256 = "sha256-t3I3j5s2ACHfub+fxxaTwu+5ptEwH0JQpVdmHYOzbCA=";
10+ sha256 = "sha256-h6L+qRkN2chnI4821WrjD3uRFw3J0sUYVLL8w57vR1U=";
13 buildInputs = [ faust2jaqt faust2lv2 ];
13 buildInputs = [ faust2jaqt faust2lv2 ];
pkgs/applications/audio/flac/default.nix+10−2
@@ -2,13 +2,21 @@
3stdenv.mkDerivation rec {
3stdenv.mkDerivation rec {
4 pname = "flac";
4 pname = "flac";
5− version = "1.3.4";
5+ version = "1.3.3";
7 src = fetchurl {
7 src = fetchurl {
8 url = "http://downloads.xiph.org/releases/flac/${pname}-${version}.tar.xz";
8 url = "http://downloads.xiph.org/releases/flac/${pname}-${version}.tar.xz";
9− sha256 = "0dz7am8kbc97a6afml1h4yp085274prg8j7csryds8m3fmz61w4g";
9+ sha256 = "0j0p9sf56a2fm2hkjnf7x3py5ir49jyavg4q5zdyd7bcf6yq4gi1";
14+ name = "CVE-2020-0499.patch";
15+ url = "https://github.com/xiph/flac/commit/2e7931c27eb15e387da440a37f12437e35b22dd4.patch";
16+ sha256 = "160qzq9ms5addz7sx06pnyjjkqrffr54r4wd8735vy4x008z71ah";
12 buildInputs = [ libogg ];
20 buildInputs = [ libogg ];
14 #doCheck = true; # takes lots of time
22 #doCheck = true; # takes lots of time
pkgs/applications/audio/fluidsynth/default.nix+2−2
@@ -5,13 +5,13 @@
6stdenv.mkDerivation rec {
6stdenv.mkDerivation rec {
7 pname = "fluidsynth";
7 pname = "fluidsynth";
8− version = "2.2.5";
8+ version = "2.2.3";
10 src = fetchFromGitHub {
10 src = fetchFromGitHub {
11 owner = "FluidSynth";
11 owner = "FluidSynth";
12 repo = "fluidsynth";
12 repo = "fluidsynth";
13 rev = "v${version}";
13 rev = "v${version}";
14− sha256 = "sha256-aR8TLxl6OziP+DMSNro0DB/UtvzXDeDYQ3o/iy70XD4=";
14+ sha256 = "0x5808d03ym23np17nl8gfbkx3c4y3d7jyyr2222wn2prswbb6x3";
17 nativeBuildInputs = [ buildPackages.stdenv.cc pkg-config cmake ];
17 nativeBuildInputs = [ buildPackages.stdenv.cc pkg-config cmake ];
pkgs/applications/audio/foo-yc20/default.nixnew file+29
@@ -0,0 +1,29 @@
1+{ lib, stdenv, fetchFromGitHub, libjack2, gtk2, lv2, faust, pkg-config }:
4+ version = "unstable-2015-05-21";
6+ src = fetchFromGitHub {
9+ rev = "edd9d14c91229429b14270a181743e1046160ca8";
10+ sha256 = "0i8261n95n4xic766h70xkrpbvw3sag96n1883ahmg6h7yb94avq";
13+ nativeBuildInputs = [ pkg-config ];
14+ buildInputs = [ libjack2 gtk2 lv2 faust ];
16+ makeFlags = [ "PREFIX=$(out)" ];
18+ # remove lv2 until https://github.com/sampov2/foo-yc20/issues/6 is resolved
19+ postInstallFixup = "rm -rf $out/lib/lv2";
22+ broken = true; # see: https://github.com/sampov2/foo-yc20/issues/7
23+ description = "A Faust implementation of a 1969 designed Yamaha combo organ, the YC-20";
24+ homepage = "https://github.com/sampov2/foo-yc20";
25+ license = with licenses; [ bsd3 lgpl21 mpl11 ];
26+ maintainers = [ maintainers.magnetophon ];
27+ platforms = platforms.linux;
pkgs/applications/audio/ft2-clone/default.nix+2−2
@@ -13,13 +13,13 @@
14stdenv.mkDerivation rec {
14stdenv.mkDerivation rec {
15 pname = "ft2-clone";
15 pname = "ft2-clone";
16− version = "1.54";
16+ version = "1.52";
18 src = fetchFromGitHub {
18 src = fetchFromGitHub {
19 owner = "8bitbubsy";
19 owner = "8bitbubsy";
20 repo = "ft2-clone";
20 repo = "ft2-clone";
21 rev = "v${version}";
21 rev = "v${version}";
22− sha256 = "sha256-lNiQ0X2vvPGubb4Pde+eh0Z6ClCQgigIUM+PddaiVUg=";
22+ sha256 = "sha256-RyZ3PV7jaTN3DEYMT0BqKDHbb+7/IgiRaCra1xA0h1A=";
25 # Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
25 # Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
pkgs/applications/audio/furnace/default.nix+2−2
@@ -1,7 +1,7 @@
3, gitUpdater
3, gitUpdater
4−, testers
4+, testVersion
6, fetchFromGitHub
6, fetchFromGitHub
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
83 inherit pname version;
83 inherit pname version;
84 rev-prefix = "v";
84 rev-prefix = "v";
86− tests.version = testers.testVersion {
86+ tests.version = testVersion {
87 package = furnace;
87 package = furnace;
88 # The command always exits with code 1
88 # The command always exits with code 1
89 command = "(furnace --version || [ $? -eq 1 ])";
89 command = "(furnace --version || [ $? -eq 1 ])";
pkgs/applications/audio/greg/default.nix+3−3
@@ -2,15 +2,15 @@
3with pythonPackages; buildPythonApplication rec {
3with pythonPackages; buildPythonApplication rec {
4 pname = "greg";
4 pname = "greg";
5− version = "0.4.8";
5+ version = "0.4.7";
7 disabled = !isPy3k;
7 disabled = !isPy3k;
9 src = fetchFromGitHub {
9 src = fetchFromGitHub {
10 owner = "manolomartinez";
10 owner = "manolomartinez";
11 repo = pname;
11 repo = pname;
12− rev = "refs/tags/v${version}";
12+ rev = "v" + version;
13− sha256 = "sha256-o4+tXVJTgT52JyJOC+Glr2cvZjbTaZL8TIsmz+A4vE4=";
13+ sha256 = "0bdzgh2k1ppgcvqiasxwp3w89q44s4jgwjidlips3ixx1bzm822v";
16 propagatedBuildInputs = [ setuptools feedparser ];
16 propagatedBuildInputs = [ setuptools feedparser ];
pkgs/applications/audio/gspeech/default.nix+2−2
@@ -20,13 +20,13 @@
21python3.pkgs.buildPythonApplication rec {
21python3.pkgs.buildPythonApplication rec {
22 pname = "gSpeech";
22 pname = "gSpeech";
23− version = "0.11.0";
23+ version = "0.10.1";
25 src = fetchFromGitHub {
25 src = fetchFromGitHub {
26 owner = "mothsart";
26 owner = "mothsart";
27 repo = pname;
27 repo = pname;
28 rev = version;
28 rev = version;
29− sha256 = "0z11yxvgi8m2xjmmf56zla91jpmf0a4imwi9qqz6bp51pw4sk8gp";
29+ sha256 = "1i0jwgxcn94nsi7c0ad0w77y04g04ka2szijzfqzqfnacdmdyrfc";
32 nativeBuildInputs = [
32 nativeBuildInputs = [
pkgs/applications/audio/guitarix/default.nix−2
@@ -108,8 +108,6 @@ stdenv.mkDerivation rec {
108 "--install-roboto-font"
108 "--install-roboto-font"
109 ] ++ optional optimizationSupport "--optimization";
109 ] ++ optional optimizationSupport "--optimization";
111− NIX_CFLAGS_COMPILE = [ "-fpermissive" ];
113 meta = with lib; {
111 meta = with lib; {
114 description = "A virtual guitar amplifier for Linux running with JACK";
112 description = "A virtual guitar amplifier for Linux running with JACK";
115 longDescription = ''
113 longDescription = ''
pkgs/applications/audio/helio-workstation/default.nix+2−2
@@ -5,14 +5,14 @@
6stdenv.mkDerivation rec {
6stdenv.mkDerivation rec {
7 pname = "helio-workstation";
7 pname = "helio-workstation";
8− version = "3.9";
8+ version = "3.8";
10 src = fetchFromGitHub {
10 src = fetchFromGitHub {
11 owner = "helio-fm";
11 owner = "helio-fm";
12 repo = pname;
12 repo = pname;
13 rev = version;
13 rev = version;
14 fetchSubmodules = true;
14 fetchSubmodules = true;
15− sha256 = "sha256-AtgKgw+F5lc0Ma3zOxmk3iaZQp2KZb2FP5F8QvvYTT4=";
15+ sha256 = "sha256-uwRSOJ5WvDH4mfL9pCTCGzuSRT8SIBrI+Wsbumzejv0=";
18 buildInputs = [
18 buildInputs = [
pkgs/applications/audio/hivelytracker/default.nix+1−1
@@ -60,7 +60,7 @@ stdenv.mkDerivation rec {
60 # files passed as arguments anyway, so this works well enough until the
60 # files passed as arguments anyway, so this works well enough until the
61 # issue is fixed.
61 # issue is fixed.
62 wrapProgram $out/bin/hivelytracker \
62 wrapProgram $out/bin/hivelytracker \
63− --chdir "$out/share/hivelytracker"
63+ --run "cd $out/share/hivelytracker"
65 # Also install the hvl2wav tool
65 # Also install the hvl2wav tool
66 install -Dm755 hvl2wav/hvl2wav $out/bin/hvl2wav
66 install -Dm755 hvl2wav/hvl2wav $out/bin/hvl2wav
pkgs/applications/audio/hqplayer-desktop/default.nix−1
@@ -86,7 +86,6 @@ mkDerivation rec {
86 homepage = "https://www.signalyst.com/custom.html";
86 homepage = "https://www.signalyst.com/custom.html";
87 description = "High-end upsampling multichannel software HD-audio player";
87 description = "High-end upsampling multichannel software HD-audio player";
88 license = licenses.unfree;
88 license = licenses.unfree;
89− platforms = [ "x86_64-linux" ];
90 maintainers = with maintainers; [ lovesegfault ];
89 maintainers = with maintainers; [ lovesegfault ];
pkgs/applications/audio/jacktrip/default.nixdeleted−61
@@ -1,61 +0,0 @@
1−{ lib, mkDerivation, fetchFromGitHub
21− src = fetchFromGitHub {
25− sha256 = "sha256-sfAYMTnBjT4LkgksyzDGGy97NLX5ljjhNDFioQnTzLs=";
40− nativeBuildInputs = [
52− qmakeFlags = [ "jacktrip.pro" ];
55− description = "Multi-machine audio network performance over the Internet";
56− homepage = "https://jacktrip.github.io/jacktrip/";
57− license = with licenses; [ gpl3 lgpl3 mit ];
58− maintainers = [ maintainers.iwanb ];
59− platforms = platforms.linux;
pkgs/applications/audio/jamesdsp/default.nix+5−40
This diff is too big to show here.
pkgs/applications/audio/jmusicbot/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/libopenmpt/default.nixnew file+42
This diff is too big to show here.
pkgs/applications/audio/lollypop/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/losslessaudiochecker/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/lyrebird/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/moc/default.nix+3−5
This diff is too big to show here.
pkgs/applications/audio/mopidy/mopidy.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/musikcube/default.nix+3−5
This diff is too big to show here.
pkgs/applications/audio/ncspot/default.nix+7−3
This diff is too big to show here.
pkgs/applications/audio/ncspot/rust_1_57_support.patchnew file+21
This diff is too big to show here.
pkgs/applications/audio/noise-repellent/default.nix+9−11
This diff is too big to show here.
pkgs/applications/audio/ocenaudio/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/odin2/default.nixdeleted−79
This diff is too big to show here.
pkgs/applications/audio/osdlyrics/default.nixdeleted−87
This diff is too big to show here.
pkgs/applications/audio/parlatype/default.nixnew file+66
This diff is too big to show here.
pkgs/applications/audio/pianobar/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/pipecontrol/default.nixdeleted−50
This diff is too big to show here.
pkgs/applications/audio/plexamp/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/praat/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/pt2-clone/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/puddletag/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/pulseaudio-modules-bt/default.nixnew file+91
This diff is too big to show here.
pkgs/applications/audio/pulseaudio-modules-bt/fix-install-path.patchnew file+11
This diff is too big to show here.
pkgs/applications/audio/pyradio/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/qpwgraph/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/sfizz/default.nix+1−6
This diff is too big to show here.
pkgs/applications/audio/sfxr-qt/default.nix−7
This diff is too big to show here.
pkgs/applications/audio/shortwave/default.nix+12−9
This diff is too big to show here.
pkgs/applications/audio/sonixd/default.nixdeleted−27
This diff is too big to show here.
pkgs/applications/audio/soundwireserver/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/spot/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/spotify-tui/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/spotify/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/strawberry/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/viper4linux-gui/default.nixdeleted−82
This diff is too big to show here.
pkgs/applications/audio/viper4linux/default.nixdeleted−61
This diff is too big to show here.
pkgs/applications/audio/whipper/default.nix−8
This diff is too big to show here.
pkgs/applications/audio/x42-plugins/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/alfis/default.nix+3−3
This diff is too big to show here.
pkgs/applications/blockchains/bisq-desktop/default.nix+2−1
This diff is too big to show here.
pkgs/applications/blockchains/bitcoin/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/btcpayserver/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/btcpayserver/deps.nix+29−29
This diff is too big to show here.
pkgs/applications/blockchains/chia-plotter/default.nix+6−13
This diff is too big to show here.
pkgs/applications/blockchains/chia-plotter/dont_fetch_dependencies.patch+11−24
This diff is too big to show here.
pkgs/applications/blockchains/clightning/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/electrs/default.nix+3−3
This diff is too big to show here.
pkgs/applications/blockchains/ledger-live-desktop/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/lightning-loop/default.nix+3−3
This diff is too big to show here.
pkgs/applications/blockchains/lnd/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/lndmanage/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/monero-cli/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/monero-gui/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/namecoin/default.nix+6−5
This diff is too big to show here.
pkgs/applications/blockchains/nbxplorer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/blockchains/nbxplorer/deps.nix−15
This diff is too big to show here.
pkgs/applications/blockchains/nearcore/default.nixdeleted−42
This diff is too big to show here.
pkgs/applications/blockchains/openethereum/default.nix+3−3
This diff is too big to show here.
pkgs/applications/blockchains/polkadot/default.nix+1−2
This diff is too big to show here.
pkgs/applications/blockchains/solana/default.nix+4−9
This diff is too big to show here.
pkgs/applications/blockchains/solana/pin.jsondeleted−5
This diff is too big to show here.
pkgs/applications/blockchains/solana/update.shdeleted−33
This diff is too big to show here.
pkgs/applications/blockchains/stellar-core/default.nix+3−7
This diff is too big to show here.
pkgs/applications/blockchains/wasabibackend/default.nix+1−1
This diff is too big to show here.
pkgs/applications/blockchains/zcash/default.nix+6−6
This diff is too big to show here.
pkgs/applications/editors/android-studio/common.nix+3−5
This diff is too big to show here.
pkgs/applications/editors/android-studio/default.nix+7−8
This diff is too big to show here.
pkgs/applications/editors/apostrophe/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/bluej/default.nix+8−35
This diff is too big to show here.
pkgs/applications/editors/cudatext/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/cudatext/deps.json+12−12
This diff is too big to show here.
pkgs/applications/editors/eclipse/default.nix+13−13
This diff is too big to show here.
pkgs/applications/editors/eclipse/plugins.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/emacs/27.nixnew file+11
This diff is too big to show here.
pkgs/applications/editors/emacs/28.nixdeleted−5
This diff is too big to show here.
pkgs/applications/editors/emacs/at-fdcwd.patchnew file+15
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/cedet/default.nixnew file+52
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/control-lock/default.nixdeleted−23
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/elpa-generated.nix+45−124
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/ement/default.nix+3−11
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/header-file-mode/default.nixdeleted−30
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix+1−7
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix+32−26
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+1744−2254
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default-grammars.jsondeleted−32
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/default.nixdeleted−44
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tree-sitter-langs/update-defaults.pydeleted−74
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tsc/default.nixdeleted−89
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tsc/src.jsondeleted−10
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/tsc/update.pydeleted−122
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/updatedeleted−10
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/update-manualdeleted−7
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/update-manual.nixdeleted−11
This diff is too big to show here.
pkgs/applications/editors/emacs/generic.nix+5−9
This diff is too big to show here.
pkgs/applications/editors/gnome-builder/default.nix+13−2
This diff is too big to show here.
pkgs/applications/editors/helix/default.nix+10−13
This diff is too big to show here.
pkgs/applications/editors/jetbrains/default.nix+17−20
This diff is too big to show here.
pkgs/applications/editors/jetbrains/update.py+14−17
This diff is too big to show here.
pkgs/applications/editors/jetbrains/versions.json+132−132
This diff is too big to show here.
pkgs/applications/editors/jupyter-kernels/octave/kernel.nix+6−4
This diff is too big to show here.
pkgs/applications/editors/jupyter-kernels/wolfram/default.nixdeleted−22
This diff is too big to show here.
pkgs/applications/editors/jupyter-kernels/wolfram/kernel.nixdeleted−32
This diff is too big to show here.
pkgs/applications/editors/kakoune/plugins/default.nix+1−1
This diff is too big to show here.
pkgs/applications/editors/kakoune/plugins/kakoune-plugin-names+19−20
This diff is too big to show here.
pkgs/applications/editors/lapce/default.nix+7−23
This diff is too big to show here.
pkgs/applications/editors/lapce/fix-version.patchnew file+31
This diff is too big to show here.
pkgs/applications/editors/lifeograph/default.nix+5−5
This diff is too big to show here.
pkgs/applications/editors/marker/default.nix+1−4
This diff is too big to show here.
pkgs/applications/editors/mg/default.nix−4
This diff is too big to show here.
pkgs/applications/editors/mle/default.nix+1−11
This diff is too big to show here.
pkgs/applications/editors/neovim/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/neovim/neovide/default.nix+6−6
This diff is too big to show here.
pkgs/applications/editors/neovim/ruby_provider/Gemfile.lock+2−2
This diff is too big to show here.
pkgs/applications/editors/neovim/ruby_provider/gemset.nix+5−5
This diff is too big to show here.
pkgs/applications/editors/oed/default.nix−9
This diff is too big to show here.
pkgs/applications/editors/okteta/default.nix−2
This diff is too big to show here.
pkgs/applications/editors/oni2/common.nix+1
This diff is too big to show here.
pkgs/applications/editors/pinegrow/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/poke/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/rstudio/default.nix+1−1
This diff is too big to show here.
pkgs/applications/editors/setzer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/texmaker/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/texstudio/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/tiled/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/vim/common.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/build-vim-plugin.nix−2
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/default.nix+3−8
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/generated.nix+1307−1343
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/overrides.nix+5−4
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/update.py+16−47
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/vim-command-check-hook.shdeleted−25
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/vim-plugin-names+1010−1014
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/vim-utils.nix+2−18
This diff is too big to show here.
pkgs/applications/editors/vscode/extensions/default.nix+15−27
This diff is too big to show here.
pkgs/applications/editors/vscode/extensions/ms-vsliveshare-vsliveshare/default.nix+1
This diff is too big to show here.
pkgs/applications/editors/vscode/extensions/remote-ssh/default.nix+2−2
This diff is too big to show here.
pkgs/applications/editors/vscode/generic.nix+3−9
This diff is too big to show here.
pkgs/applications/editors/vscode/update-vscodium.sh+12−16
This diff is too big to show here.
pkgs/applications/editors/vscode/vscode.nix+6−6
This diff is too big to show here.
pkgs/applications/editors/vscode/vscodium.nix+13−10
This diff is too big to show here.
pkgs/applications/editors/xedit/default.nix+2−2
This diff is too big to show here.
pkgs/applications/emulators/bsnes/ares/default.nix → pkgs/applications/emulators/ares/default.nixrenamed
The content is the same.
pkgs/applications/emulators/bsnes/ares/fix-ruby.patch → pkgs/applications/emulators/ares/fix-ruby.patchrenamed
The content is the same.
pkgs/applications/emulators/basiliskii/default.nixdeleted−28
This diff is too big to show here.
pkgs/applications/emulators/basiliskii/remove-redhat-6-workaround-for-scsi-sg.h.patchdeleted−10
This diff is too big to show here.
pkgs/applications/emulators/bsnes/bsnes-hd/default.nix → pkgs/applications/emulators/bsnes-hd/default.nixrenamed
The content is the same.
pkgs/applications/emulators/bsnes/bsnes-hd/macos-copy-app-to-prefix.patch → pkgs/applications/emulators/bsnes-hd/macos-copy-app-to-prefix.patchrenamed
The content is the same.
pkgs/applications/emulators/bsnes/bsnes-hd/macos-replace-sips-with-png2icns.patch → pkgs/applications/emulators/bsnes-hd/macos-replace-sips-with-png2icns.patchrenamed
The content is the same.
pkgs/applications/emulators/commanderx16/emulator.nix+5−7
This diff is too big to show here.
pkgs/applications/emulators/commanderx16/rom.nix+6−12
This diff is too big to show here.
pkgs/applications/emulators/dolphin-emu/master.nix+4−4
This diff is too big to show here.
pkgs/applications/emulators/dolphin-emu/primehack.nix+2−2
This diff is too big to show here.
pkgs/applications/emulators/epsxe/default.nixnew file+52
This diff is too big to show here.
pkgs/applications/emulators/fakenes/build.patchnew file+84
This diff is too big to show here.
pkgs/applications/emulators/fakenes/default.nixnew file+34
This diff is too big to show here.
pkgs/applications/emulators/flycast/default.nix+2−2
This diff is too big to show here.
pkgs/applications/emulators/bsnes/higan/001-include-cmath.patch → pkgs/applications/emulators/higan/001-include-cmath.patchrenamed
The content is the same.
pkgs/applications/emulators/bsnes/higan/002-sips-to-png2icns.patch → pkgs/applications/emulators/higan/002-sips-to-png2icns.patchrenamed
The content is the same.
pkgs/applications/emulators/bsnes/higan/default.nix → pkgs/applications/emulators/higan/default.nixrenamed
The content is the same.
pkgs/applications/emulators/mame/0001-Revert-Added-PDF-documentation-to-dist.mak.patchdeleted−37
This diff is too big to show here.
pkgs/applications/emulators/mame/default.nix+14−64
This diff is too big to show here.
pkgs/applications/emulators/proton-caller/default.nix+3−4
This diff is too big to show here.
pkgs/applications/emulators/qmc2/default.nixnew file+41
This diff is too big to show here.
pkgs/applications/emulators/retroarch/disable-menu_show_core_updater.patch → pkgs/applications/emulators/retroarch/0001-Disable-menu_show_core_updater.patchrenamed+1−1
This diff is too big to show here.
pkgs/applications/emulators/retroarch/use-fixed-paths-on-libretro_info_path.patch → pkgs/applications/emulators/retroarch/0002-Use-fixed-paths-on-libretro_info_path.patchrenamed+17−21
This diff is too big to show here.
pkgs/applications/emulators/retroarch/cores.nix+43−16
This diff is too big to show here.
pkgs/applications/emulators/retroarch/default.nix+8−25
This diff is too big to show here.
pkgs/applications/emulators/retroarch/disable-menu-show-core-updater.patchnew file+13
This diff is too big to show here.
pkgs/applications/emulators/retroarch/hashes.json+150−139
This diff is too big to show here.
pkgs/applications/emulators/retroarch/update_cores.py → pkgs/applications/emulators/retroarch/update.pyrenamed+13−7
This diff is too big to show here.
pkgs/applications/emulators/retroarch/wrapper.nix+6−10
This diff is too big to show here.
pkgs/applications/emulators/ripes/default.nixdeleted−50
This diff is too big to show here.
pkgs/applications/emulators/ryujinx/default.nix+3−7
This diff is too big to show here.
pkgs/applications/emulators/ryujinx/deps.nix+10−9
This diff is too big to show here.
pkgs/applications/emulators/ryujinx/updater.sh+24−51
This diff is too big to show here.
pkgs/applications/emulators/snes9x-gtk/default.nixnew file+37
This diff is too big to show here.
pkgs/applications/emulators/snes9x/default.nixdeleted−130
This diff is too big to show here.
pkgs/applications/emulators/tinyemu/default.nix+1−6
This diff is too big to show here.
pkgs/applications/emulators/yuzu/base.nixnew file+86
This diff is too big to show here.
pkgs/applications/emulators/yuzu/compatibility-list.jsondeleted−1
This diff is too big to show here.
pkgs/applications/emulators/yuzu/default.nix+10−22
This diff is too big to show here.
pkgs/applications/emulators/yuzu/generic.nixdeleted−157
This diff is too big to show here.
pkgs/applications/emulators/yuzu/update.shdeleted−102
This diff is too big to show here.
pkgs/applications/emulators/zesarux/default.nix−8
This diff is too big to show here.
pkgs/applications/finance/irpf/default.nix+3−10
This diff is too big to show here.
pkgs/applications/gis/grass/default.nix+36−10
This diff is too big to show here.
pkgs/applications/gis/qgis/unwrapped-ltr.nix+2−2
This diff is too big to show here.
pkgs/applications/gis/qgis/unwrapped.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/ImageMagick/7.0.nix+11−6
This diff is too big to show here.
pkgs/applications/graphics/apitrace/default.nix−6
This diff is too big to show here.
pkgs/applications/graphics/apitrace/glibc-2.34-compat.patchdeleted−13
This diff is too big to show here.
pkgs/applications/graphics/awesomebump/default.nix+1−1
This diff is too big to show here.
pkgs/applications/graphics/cloudcompare/default.nix+12−47
This diff is too big to show here.
pkgs/applications/graphics/cq-editor/default.nix+1−1
This diff is too big to show here.
pkgs/applications/graphics/darktable/default.nix−2
This diff is too big to show here.
pkgs/applications/graphics/digikam/default.nix+3−14
This diff is too big to show here.
pkgs/applications/graphics/drawing/default.nix−11
This diff is too big to show here.
pkgs/applications/graphics/drawio/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/foxotron/default.nix+1−1
This diff is too big to show here.
pkgs/applications/graphics/geeqie/default.nix+4−4
This diff is too big to show here.
pkgs/applications/graphics/gimp/plugins/default.nix+1−40
This diff is too big to show here.
pkgs/applications/graphics/graphicsmagick/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/gscan2pdf/default.nix+4−2
This diff is too big to show here.
pkgs/applications/graphics/gthumb/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/hydrus/default.nix+3−3
This diff is too big to show here.
pkgs/applications/graphics/imgbrd-grabber/default.nix+1−1
This diff is too big to show here.
pkgs/applications/graphics/inkscape/default.nix−1
This diff is too big to show here.
pkgs/applications/graphics/jpegrescan/default.nix+1−5
This diff is too big to show here.
pkgs/applications/graphics/mypaint/default.nix−10
This diff is too big to show here.
pkgs/applications/graphics/ocrfeeder/default.nix+8−5
This diff is too big to show here.
pkgs/applications/graphics/openboard/default.nix+4−3
This diff is too big to show here.
pkgs/applications/graphics/openscad/default.nix−4
This diff is too big to show here.
pkgs/applications/graphics/ovito/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/photivo/default.nixnew file+54
This diff is too big to show here.
pkgs/applications/graphics/photivo/gcc6.patchnew file+13
This diff is too big to show here.
pkgs/applications/graphics/pixeluvo/default.nix−1
This diff is too big to show here.
pkgs/applications/graphics/rawtherapee/default.nix−3
This diff is too big to show here.
pkgs/applications/graphics/rawtherapee/fix-6324.patchdeleted−356
This diff is too big to show here.
pkgs/applications/graphics/sane/backends/brscan4/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/sane/backends/brscan5/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/shotwell/default.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/skanpage.nix → pkgs/applications/graphics/skanpage/default.nixrenamed+7−3
This diff is too big to show here.
pkgs/applications/graphics/synfigstudio/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/tesseract/default.nix−6
This diff is too big to show here.
pkgs/applications/graphics/tesseract/fetch-language-hashes+2−2
This diff is too big to show here.
pkgs/applications/graphics/tesseract/languages.nix+245−245
This diff is too big to show here.
pkgs/applications/graphics/tesseract/tesseract3.nix+3−14
This diff is too big to show here.
pkgs/applications/graphics/tesseract/tesseract4.nix+3−15
This diff is too big to show here.
pkgs/applications/graphics/tesseract/tesseract5.nixdeleted−39
This diff is too big to show here.
pkgs/applications/graphics/tesseract/wrapper.nix+3−29
This diff is too big to show here.
pkgs/applications/graphics/unigine-sanctuary/default.nixdeleted−97
This diff is too big to show here.
pkgs/applications/graphics/unigine-tropics/default.nixdeleted−95
This diff is too big to show here.
pkgs/applications/graphics/unigine-valley/default.nix+99−120
This diff is too big to show here.
pkgs/applications/graphics/yed/default.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/default.nix+1−4
This diff is too big to show here.
pkgs/applications/kde/fetch.sh+1−1
This diff is too big to show here.
pkgs/applications/kde/kaddressbook.nix−4
This diff is too big to show here.
pkgs/applications/kde/kalarm.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/kalarmcal.nixnew file+19
This diff is too big to show here.
pkgs/applications/kde/kdegraphics-thumbnailers.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/kdepim-addons.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/kdepim-runtime/default.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/kitinerary.nix+10−1
This diff is too big to show here.
pkgs/applications/kde/kmousetool.nixdeleted−35
This diff is too big to show here.
pkgs/applications/kde/picmi.nix+11−1
This diff is too big to show here.
pkgs/applications/kde/pimcommon.nix+2−2
This diff is too big to show here.
pkgs/applications/kde/srcs.nix+921−937
This diff is too big to show here.
pkgs/applications/kde/yakuake.nix−2
This diff is too big to show here.
pkgs/applications/logging/sosreport/default.nixdeleted−51
This diff is too big to show here.
pkgs/applications/misc/1password-gui/beta.nixdeleted−132
This diff is too big to show here.
pkgs/applications/misc/1password-gui/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/1password/default.nix+5−5
This diff is too big to show here.
pkgs/applications/misc/ArchiSteamFarm/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/ArchiSteamFarm/deps-aarch64-linux.nix+18−17
This diff is too big to show here.
pkgs/applications/misc/ArchiSteamFarm/deps-x86_64-linux.nix+18−17
This diff is too big to show here.
pkgs/applications/misc/ablog/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/anytype/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/archivy/default.nix+3−9
This diff is too big to show here.
pkgs/applications/misc/audio/wavesurfer/default.nixnew file+30
This diff is too big to show here.
pkgs/applications/misc/authy/default.nix+7−30
This diff is too big to show here.
pkgs/applications/misc/autospotting/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/azuredatastudio/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/barrier/default.nix+1−12
This diff is too big to show here.
pkgs/applications/misc/bikeshed/default.nixdeleted−77
This diff is too big to show here.
pkgs/applications/misc/blender/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/bottles/default.nix+17−7
This diff is too big to show here.
pkgs/applications/misc/bottles/update.pynew file+65
This diff is too big to show here.
pkgs/applications/misc/buku/default.nix+1−2
This diff is too big to show here.
pkgs/applications/misc/calcoo/0001-javac-encoding.diffdeleted−21
This diff is too big to show here.
pkgs/applications/misc/calcoo/default.nixdeleted−58
This diff is too big to show here.
pkgs/applications/misc/calcurse/default.nix+3−4
This diff is too big to show here.
pkgs/applications/misc/calibre/default.nix+1−5
This diff is too big to show here.
pkgs/applications/misc/catclock/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/charm/default.nix+5−3
This diff is too big to show here.
pkgs/applications/misc/copyq/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/cubiomes-viewer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/dasel/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/dbeaver/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/debian-goodies/default.nixdeleted−70
This diff is too big to show here.
pkgs/applications/misc/dunst/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/electrum-grs/default.nix+21−3
This diff is too big to show here.
pkgs/applications/misc/evtest/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/faircamp/default.nix+4−4
This diff is too big to show here.
pkgs/applications/misc/ff2mpv/default.nixdeleted−34
This diff is too big to show here.
pkgs/applications/misc/firestarter/default.nix+1−3
This diff is too big to show here.
pkgs/applications/misc/fluidd/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/foxitreader/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/fspy/default.nix+3−2
This diff is too big to show here.
pkgs/applications/misc/gallery-dl/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/globe-cli/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/gnome-firmware-updater/default.nixnew file+75
This diff is too big to show here.
pkgs/applications/misc/gnome-firmware/default.nixdeleted−63
This diff is too big to show here.
pkgs/applications/misc/gnome-secrets/default.nix+10−4
This diff is too big to show here.
pkgs/applications/misc/gnome-solanum/default.nix−10
This diff is too big to show here.
pkgs/applications/misc/gpsprune/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/gremlin-console/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/gsctl/default.nix+7−13
This diff is too big to show here.
pkgs/applications/misc/hello/default.nix+9−11
This diff is too big to show here.
pkgs/applications/misc/hello/test.nixdeleted−8
This diff is too big to show here.
pkgs/applications/misc/hubstaff/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/hugo/default.nix+6−6
This diff is too big to show here.
pkgs/applications/misc/index-fm/default.nix+2
This diff is too big to show here.
pkgs/applications/misc/ipmiview/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/join-desktop/default.nixdeleted−73
This diff is too big to show here.
pkgs/applications/misc/joplin-desktop/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/josm/default.nix+4−4
This diff is too big to show here.
pkgs/applications/misc/k4dirstat/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/keylight-controller-mschneider82/default.nixdeleted−53
This diff is too big to show here.
pkgs/applications/misc/kiln/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/kjv/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/kratos/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/libosmocore/default.nix+6−21
This diff is too big to show here.
pkgs/applications/misc/lighthouse/default.nixnew file+35
This diff is too big to show here.
pkgs/applications/misc/lutris/default.nix+12−14
This diff is too big to show here.
pkgs/applications/misc/lutris/fixes.patchnew file+67
This diff is too big to show here.
pkgs/applications/misc/marktext/default.nix+6−5
This diff is too big to show here.
pkgs/applications/misc/masterpdfeditor/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/mediainfo/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/megacmd/default.nix+10−5
This diff is too big to show here.
pkgs/applications/misc/megasync/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/mepo/default.nix+8−34
This diff is too big to show here.
pkgs/applications/misc/metadata-cleaner/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/minigalaxy/default.nix−4
This diff is too big to show here.
pkgs/applications/misc/mob/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/moonlight-qt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/mop/default.nix+8−7
This diff is too big to show here.
pkgs/applications/misc/mop/deps.nixnew file+11
This diff is too big to show here.
pkgs/applications/misc/multibootusb/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/nnn/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/notejot/default.nix+11−4
This diff is too big to show here.
pkgs/applications/misc/nut/default.nix−2
This diff is too big to show here.
pkgs/applications/misc/obsidian/default.nix+25−25
This diff is too big to show here.
pkgs/applications/misc/octoprint/default.nix+245−7
This diff is too big to show here.
pkgs/applications/misc/opencpn/default.nix+16−85
This diff is too big to show here.
pkgs/applications/misc/organicmaps/default.nix+12−7
This diff is too big to show here.
pkgs/applications/misc/osmscout-server/default.nix+24−3
This diff is too big to show here.
pkgs/applications/misc/otpclient/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/pdfslicer/default.nix−6
This diff is too big to show here.
pkgs/applications/misc/pdfstudio/default.nix+4−4
This diff is too big to show here.
pkgs/applications/misc/phwmon/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/polybar/default.nix+2−12
This diff is too big to show here.
pkgs/applications/misc/polybar/remove-hardcoded-etc.diffdeleted−13
This diff is too big to show here.
pkgs/applications/misc/portfolio-filemanager/default.nix+2−6
This diff is too big to show here.
pkgs/applications/misc/prusa-slicer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/prusa-slicer/super-slicer.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/pure-maps/default.nix+2−3
This diff is too big to show here.
pkgs/applications/misc/pytrainer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/ranger/default.nix+4−13
This diff is too big to show here.
pkgs/applications/misc/rm-improved/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/sampler/default.nix+2−5
This diff is too big to show here.
pkgs/applications/misc/seatd/default.nix+3−7
This diff is too big to show here.
pkgs/applications/misc/sigal/default.nix+13−17
This diff is too big to show here.
pkgs/applications/misc/sigi/default.nix+10−7
This diff is too big to show here.
pkgs/applications/misc/sioyek/default.nixdeleted−56
This diff is too big to show here.
pkgs/applications/misc/skate/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/skytemple/default.nix+2−5
This diff is too big to show here.
pkgs/applications/misc/slides/default.nix+4−5
This diff is too big to show here.
pkgs/applications/misc/solaar/default.nix+2−3
This diff is too big to show here.
pkgs/applications/misc/sqls/default.nix+3−5
This diff is too big to show here.
pkgs/applications/misc/stork/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/taskwarrior/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/terminal-typeracer/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/timewarrior/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/toipe/default.nixdeleted−20
This diff is too big to show here.
pkgs/applications/misc/trenchbroom/default.nix−13
This diff is too big to show here.
pkgs/applications/misc/tty-solitaire/default.nix−1
This diff is too big to show here.
pkgs/applications/misc/tut/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/tvbrowser/bin.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/udiskie/default.nix+25−30
This diff is too big to show here.
pkgs/applications/misc/udiskie/locale-path.patchdeleted−17
This diff is too big to show here.
pkgs/applications/misc/upwork/default.nix+4−14
This diff is too big to show here.
pkgs/applications/misc/veracrypt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/vit/default.nix+5−3
This diff is too big to show here.
pkgs/applications/misc/wlclock/default.nixdeleted−46
This diff is too big to show here.
pkgs/tools/X11/xdragon/default.nix → pkgs/applications/misc/xdragon/default.nixrenamed+3−3
This diff is too big to show here.
pkgs/applications/misc/xmrig/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/xmrig/moneroocean.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/xpdf/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/xplr/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/xteddy/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/ydict/default.nixdeleted−28
This diff is too big to show here.
pkgs/applications/misc/zathura/core/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/zettlr/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/zola/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/alpnpass/default.nixdeleted−34
This diff is too big to show here.
pkgs/applications/networking/appgate-sdp/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/bee/bee.nix+3−1
This diff is too big to show here.
pkgs/applications/networking/browsers/brave/default.nix+53−72
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/common.nix+9−16
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/default.nix+3−1
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/get-commit-message.py+3−3
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/upstream-info.json+30−30
This diff is too big to show here.
pkgs/applications/kde/falkon.nix → pkgs/applications/networking/browsers/falkon/default.nixrenamed+13−4
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix+393−393
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox-bin/release_sources.nix+393−393
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox/common.nix+14−3
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox/librewolf/src.json+5−5
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox/packages.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/browsers/google-chrome/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/browsers/lagrange/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/browsers/links2/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/browsers/microsoft-edge/default.nix+6−6
This diff is too big to show here.
pkgs/applications/networking/browsers/palemoon/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/browsers/qtchan/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/browsers/qutebrowser/default.nix+3−6
This diff is too big to show here.
pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix+4−11
This diff is too big to show here.
pkgs/applications/networking/browsers/vieb/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/browsers/vivaldi/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/browsers/vivaldi/widevine.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/c14/default.nixnew file+22
This diff is too big to show here.
pkgs/applications/networking/cloudflare-dyndns/default.nixdeleted−53
This diff is too big to show here.
pkgs/applications/networking/cloudflared/default.nix+6−17
This diff is too big to show here.
pkgs/applications/networking/cluster/argo/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/argocd-autopilot/default.nix+5−4
This diff is too big to show here.
pkgs/applications/networking/cluster/argocd/default.nix+11−7
This diff is too big to show here.
pkgs/applications/networking/cluster/arkade/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/cluster/atlantis/default.nix+5−8
This diff is too big to show here.
pkgs/applications/networking/cluster/cilium/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/cloudfoundry-cli/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/cmctl/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/driftctl/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/flink/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/fluxcd/default.nix+5−5
This diff is too big to show here.
pkgs/applications/networking/cluster/fluxcd/update.sh+31−38
This diff is too big to show here.
pkgs/applications/networking/cluster/hadoop/default.nix−5
This diff is too big to show here.
pkgs/applications/networking/cluster/helm-docs/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/helm/default.nix+9−21
This diff is too big to show here.
pkgs/applications/networking/cluster/helmfile/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/istioctl/default.nix+6−9
This diff is too big to show here.
pkgs/applications/networking/cluster/k3s/default.nix+8−23
This diff is too big to show here.
pkgs/applications/networking/cluster/k3s/patches/0002-Don-t-build-a-static-binary-in-package-cli.patchnew file+37
This diff is too big to show here.
pkgs/applications/networking/cluster/kn/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/kompose/default.nix+7−17
This diff is too big to show here.
pkgs/applications/networking/cluster/kops/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/krane/Gemfile.lock+12−12
This diff is too big to show here.
pkgs/applications/networking/cluster/krane/gemset.nix+20−20
This diff is too big to show here.
pkgs/applications/networking/cluster/kube3d/default.nix+12−29
This diff is too big to show here.
pkgs/applications/networking/cluster/kubecfg/default.nix+7−7
This diff is too big to show here.
pkgs/applications/networking/cluster/kubeless/default.nixnew file+38
This diff is too big to show here.
pkgs/applications/networking/cluster/kubernetes/kubectl.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/kubeseal/default.nix+2
This diff is too big to show here.
pkgs/applications/networking/cluster/kuttl/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/nerdctl/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/nomad-pack/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/cluster/nomad/1.1.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/ocm/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/odo/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/openshift/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/pachyderm/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/pgo-client/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/popeye/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/sonobuoy/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/cluster/spark/default.nix+2−6
This diff is too big to show here.
pkgs/applications/networking/cluster/ssm-session-manager-plugin/default.nix+4−9
This diff is too big to show here.
pkgs/applications/networking/cluster/starboard/default.nix+9−15
This diff is too big to show here.
pkgs/applications/networking/cluster/talosctl/default.nix+9−11
This diff is too big to show here.
pkgs/applications/networking/cluster/tanka/default.nix−1
This diff is too big to show here.
pkgs/applications/networking/cluster/tektoncd-cli/default.nix+1−2
This diff is too big to show here.
pkgs/applications/networking/cluster/terraform-providers/default.nix+2−6
This diff is too big to show here.
pkgs/applications/networking/cluster/terraform-providers/providers.json+278−303
This diff is too big to show here.
pkgs/applications/networking/cluster/terraform/default.nix+4−5
This diff is too big to show here.
pkgs/applications/networking/cluster/waypoint/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/cluster/werf/default.nix+4−11
This diff is too big to show here.
pkgs/applications/networking/feedreaders/rss2email/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/firewalld/default.nixdeleted−104
This diff is too big to show here.
pkgs/applications/networking/firewalld/respect-xml-catalog-files-var.patchdeleted−13
This diff is too big to show here.
pkgs/applications/networking/flexget/default.nix+3−6
This diff is too big to show here.
pkgs/applications/networking/gmailctl/default.nix+6−4
This diff is too big to show here.
pkgs/applications/networking/gns3/default.nix+8−7
This diff is too big to show here.
pkgs/applications/networking/gns3/gui.nix+7−29
This diff is too big to show here.
pkgs/applications/networking/gns3/server.nix+22−36
This diff is too big to show here.
pkgs/applications/networking/ids/zeek/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/alfaview/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/bluejeans/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/caprine-bin/build-from-appimage.nixdeleted−50
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/caprine-bin/build-from-dmg.nixdeleted−35
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/caprine-bin/default.nixdeleted−25
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/chatty/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix+5−6
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/deltachat-desktop/package.json+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/discord/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/element/element-desktop-package.json+1−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/element/pin.json+4−4
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/ferdi/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/franz/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/gajim/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/gotktrix/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/gtmess/default.nixnew file+20
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix+3−4
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/kaidan/default.nix−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/kdeltachat/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/linphone/default.nix+13−40
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/linphone/do-not-build-linphone-sdk.patch+31−56
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/linphone/no-store-path-in-autostart.patchdeleted−27
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/linphone/remove-bc_compute_full_version-usage.patch+6−6
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/pond/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/psi-plus/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/ripcord/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/rocketchat-desktop/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/signal-desktop/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/slack/default.nix+7−7
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/teams/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/default.nix+21−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kf594.patchdeleted−57
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/kotato-10.12-sdk.patch+22−31
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt-10.12-sdk.patch+4−17
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/tg_owt.nix+7−15
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/kotatogram-desktop/with-webkit.nixdeleted−23
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix−8
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/telegram/tdesktop/kf594.diffdeleted−57
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/threema-desktop/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/torchat/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/wire-desktop/default.nix+5−6
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/zoom-us/default.nix+8−47
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/zulip/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/ipfs-cluster/default.nix+12−3
This diff is too big to show here.
pkgs/applications/networking/ipfs/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/irc/senpai/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/irc/weechat/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/aerc/default.nix+14−23
This diff is too big to show here.
pkgs/applications/networking/mailreaders/aerc/runtime-sharedir.patch+56−86
This diff is too big to show here.
pkgs/applications/networking/mailreaders/claws-mail/default.nix+14−6
This diff is too big to show here.
pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/evolution/evolution/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/mailspring/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/mailreaders/meli/default.nix+2−1
This diff is too big to show here.
pkgs/applications/networking/mailreaders/mutt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/neomutt/default.nix+12−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/notbit/default.nixnew file+30
This diff is too big to show here.
pkgs/applications/networking/mailreaders/notmuch-bower/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/notmuch/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix+261−261
This diff is too big to show here.
pkgs/applications/networking/mailreaders/thunderbird/packages.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/modem-manager-gui/default.nix−15
This diff is too big to show here.
pkgs/applications/networking/n8n/node-packages.nix+774−706
This diff is too big to show here.
pkgs/applications/networking/newsreaders/liferea/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/nextcloud-client/default.nix+3−26
This diff is too big to show here.
pkgs/applications/networking/nextdns/default.nix+5−3
This diff is too big to show here.
pkgs/applications/networking/owncloud-client/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/p2p/gnunet/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/p2p/qbittorrent/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/p2p/tribler/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/p2p/twister/default.nixnew file+70
This diff is too big to show here.
pkgs/applications/networking/ping/default.nixnew file+76
This diff is too big to show here.
pkgs/applications/networking/pjsip/default.nix+1−7
This diff is too big to show here.
pkgs/applications/networking/protonvpn-gui/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/remote/freerdp/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/remote/rustdesk/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/remote/vmware-horizon-client/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/resilio-sync/default.nix+19−19
This diff is too big to show here.
pkgs/applications/networking/seafile-client/default.nix+3−5
This diff is too big to show here.
pkgs/applications/networking/seahub/default.nix+5−12
This diff is too big to show here.
pkgs/applications/networking/seaweedfs/default.nix+5−6
This diff is too big to show here.
pkgs/applications/networking/shellhub-agent/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/sniffers/wireshark/default.nix+5−20
This diff is too big to show here.
pkgs/applications/networking/soju/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/sync/onedrive/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/sync/rclone/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/syncplay/default.nix+4−6
This diff is too big to show here.
pkgs/applications/networking/syncthing/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/synology-drive-client/default.nix+4−4
This diff is too big to show here.
pkgs/applications/networking/termius/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/tetrd/default.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/zerobin/default.nix+1−1
This diff is too big to show here.
pkgs/applications/office/banking/default.nix+8−10
This diff is too big to show here.
pkgs/applications/office/beamerpresenter/default.nix+22−45
This diff is too big to show here.
pkgs/applications/office/bookworm/default.nix+2
This diff is too big to show here.
pkgs/applications/office/buho/default.nixdeleted−58
This diff is too big to show here.
pkgs/applications/office/calligra/default.nix−16
This diff is too big to show here.
pkgs/applications/office/fava/default.nix+3−15
This diff is too big to show here.
pkgs/applications/office/foliate/default.nix+1
This diff is too big to show here.
pkgs/applications/office/gnumeric/default.nix+2−3
This diff is too big to show here.
pkgs/applications/office/jameica/default.nix+1−1
This diff is too big to show here.
pkgs/applications/kde/kalendar.nix → pkgs/applications/office/kalendar/default.nixrenamed+10−1
This diff is too big to show here.
pkgs/applications/office/khronos/default.nix+9−2
This diff is too big to show here.
pkgs/applications/office/ledger/default.nix+2−2
This diff is too big to show here.
pkgs/applications/office/libreoffice/soffice-template.desktopdeleted−6
This diff is too big to show here.
pkgs/applications/office/libreoffice/wrapper.nix+12−25
This diff is too big to show here.
pkgs/applications/office/morgen/default.nix+2−2
This diff is too big to show here.
pkgs/applications/office/paperless-ngx/default.nix → pkgs/applications/office/paperless-ng/default.nixrenamed+34−16
This diff is too big to show here.
pkgs/applications/office/paperwork/paperwork-gtk.nix+1−1
This diff is too big to show here.
pkgs/applications/office/portfolio/default.nix+3−3
This diff is too big to show here.
pkgs/applications/office/qownnotes/default.nix+2−2
This diff is too big to show here.
pkgs/applications/office/trilium/default.nix+3−3
This diff is too big to show here.
pkgs/applications/office/tusk/default.nix+2−3
This diff is too big to show here.
pkgs/applications/office/vnote/default.nix+2−2
This diff is too big to show here.
pkgs/applications/office/zotero/default.nix+2−2
This diff is too big to show here.
pkgs/applications/radio/cubicsdr/default.nix+21−3
This diff is too big to show here.
pkgs/applications/radio/flex-ncat/default.nix−1
This diff is too big to show here.
pkgs/applications/radio/flrig/default.nix+2−4
This diff is too big to show here.
pkgs/applications/radio/gnss-sdr/default.nix−6
This diff is too big to show here.
pkgs/applications/radio/gnuradio/3.9.nix+2−8
This diff is too big to show here.
pkgs/applications/radio/gnuradio/default.nix+3−10
This diff is too big to show here.
pkgs/applications/radio/gnuradio/wrapper.nix+1−1
This diff is too big to show here.
pkgs/applications/radio/gqrx/default.nix+2−2
This diff is too big to show here.
pkgs/applications/radio/kalibrate-rtl/default.nix+5−5
This diff is too big to show here.
pkgs/applications/radio/rtl-ais/default.nix−1
This diff is too big to show here.
pkgs/applications/radio/rtl-sdr/default.nix+7−11
This diff is too big to show here.
pkgs/applications/radio/splat/default.nixdeleted−55
This diff is too big to show here.
pkgs/applications/radio/uhd/default.nix−2
This diff is too big to show here.
pkgs/applications/science/astronomy/astrolabe-generator/default.nix−1
This diff is too big to show here.
pkgs/applications/science/astronomy/openspace/assets.patchnew file+100
This diff is too big to show here.
pkgs/applications/science/astronomy/openspace/config.patchnew file+49
This diff is too big to show here.
pkgs/applications/science/astronomy/openspace/constexpr.patchnew file+91
This diff is too big to show here.
pkgs/applications/science/astronomy/openspace/default.nixnew file+90
This diff is too big to show here.
pkgs/applications/science/astronomy/openspace/vrpn.patchnew file+13
This diff is too big to show here.
pkgs/applications/science/astronomy/stellarium/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/biology/bayescan/default.nix−1
This diff is too big to show here.
pkgs/applications/science/biology/blast/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/biology/bwa/default.nix−2
This diff is too big to show here.
pkgs/applications/science/biology/clustal-omega/default.nix−1
This diff is too big to show here.
pkgs/applications/science/biology/cmtk/default.nix+1−4
This diff is too big to show here.
pkgs/applications/science/biology/dcm2niix/default.nix+7−42
This diff is too big to show here.
pkgs/applications/science/biology/dcm2niix/dont-fetch-external-libs.patchdeleted−36
This diff is too big to show here.
pkgs/applications/science/biology/eggnog-mapper/default.nix+16−30
This diff is too big to show here.
pkgs/applications/science/biology/megahit/default.nix−3
This diff is too big to show here.
pkgs/applications/science/biology/ncbi-tools/default.nixnew file+34
This diff is too big to show here.
pkgs/applications/science/biology/picard-tools/default.nix−1
This diff is too big to show here.
pkgs/applications/science/biology/quast/default.nix+3−1
This diff is too big to show here.
pkgs/applications/science/biology/samtools/default.nix+1−8
This diff is too big to show here.
pkgs/applications/science/biology/tebreak/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/chemistry/jmol/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/computer-architecture/qtrvsim/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/electronics/eagle/eagle7.nixnew file+97
This diff is too big to show here.
pkgs/applications/science/electronics/verilator/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/engineering/brmodelo/default.nixdeleted−109
This diff is too big to show here.
pkgs/applications/science/logic/abc/default.nix+3−3
This diff is too big to show here.
pkgs/applications/science/logic/coq/default.nix+14−14
This diff is too big to show here.
pkgs/applications/science/logic/cvc5/default.nixdeleted−34
This diff is too big to show here.
pkgs/applications/science/logic/easycrypt/default.nixdeleted−50
This diff is too big to show here.
pkgs/applications/science/logic/easycrypt/runtest.nixdeleted−24
This diff is too big to show here.
pkgs/applications/science/logic/elan/default.nix+3−3
This diff is too big to show here.
pkgs/applications/science/logic/fast-downward/default.nix+12−19
This diff is too big to show here.
pkgs/applications/science/logic/isabelle/default.nix+2−31
This diff is too big to show here.
pkgs/applications/science/logic/jonprl/default.nixnew file+35
This diff is too big to show here.
pkgs/applications/science/logic/key/default.nix+3−2
This diff is too big to show here.
pkgs/applications/science/logic/lean2/default.nixnew file+37
This diff is too big to show here.
pkgs/applications/science/logic/naproche/default.nix+3−3
This diff is too big to show here.
pkgs/applications/science/logic/otter/default.nixnew file+53
This diff is too big to show here.
pkgs/applications/science/logic/potassco/clingcon.nix−5
This diff is too big to show here.
pkgs/applications/science/logic/symbiyosys/default.nix−1
This diff is too big to show here.
pkgs/applications/science/logic/symfpu/default.nixdeleted−26
This diff is too big to show here.
pkgs/applications/science/logic/tlaplus/toolbox.nix+1−1
This diff is too big to show here.
pkgs/applications/science/logic/z3/default.nix+66−66
This diff is too big to show here.
pkgs/applications/science/machine-learning/finalfusion-utils/default.nix−1
This diff is too big to show here.
pkgs/applications/science/math/adolc/default.nixdeleted−23
This diff is too big to show here.
pkgs/applications/science/math/caffe/default.nix+4−9
This diff is too big to show here.
pkgs/applications/science/math/calc/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/math/calculix/calculix.patch+9−10
This diff is too big to show here.
pkgs/applications/science/math/calculix/default.nix+3−6
This diff is too big to show here.
pkgs/applications/science/math/cntk/default.nix+2−6
This diff is too big to show here.
pkgs/applications/science/math/giac/default.nix+16−12
This diff is too big to show here.
pkgs/applications/science/math/mxnet/default.nix+2−14
This diff is too big to show here.
pkgs/applications/science/math/qalculate-gtk/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/math/sage/patches/docutils-0.18.1-deprecation.patchdeleted−13
This diff is too big to show here.
pkgs/applications/science/math/sage/sage-env.nix−2
This diff is too big to show here.
pkgs/applications/science/math/sage/sage-src.nix+11−51
This diff is too big to show here.
pkgs/applications/science/math/sage/sagelib.nix+3−8
This diff is too big to show here.
pkgs/applications/science/math/wolfram-engine/default.nixdeleted−143
This diff is too big to show here.
pkgs/applications/science/math/wolfram-engine/l10ns.nixdeleted−51
This diff is too big to show here.
pkgs/applications/science/math/wolfram-engine/notebook.nixdeleted−9
This diff is too big to show here.
pkgs/applications/science/math/wxmaxima/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/medicine/xmedcon/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/misc/bada-bib/default.nix+3−3
This diff is too big to show here.
pkgs/applications/science/misc/colmap/default.nix+6−22
This diff is too big to show here.
pkgs/applications/science/misc/cwltool/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/misc/fityk/default.nix−4
This diff is too big to show here.
pkgs/applications/science/misc/netlogo/default.nix+1−1
This diff is too big to show here.
pkgs/applications/science/misc/openmvs/default.nixnew file+77
This diff is too big to show here.
pkgs/applications/science/misc/root/5.nix−5
This diff is too big to show here.
pkgs/applications/science/misc/snakemake/default.nix+13−27
This diff is too big to show here.
pkgs/applications/science/molecular-dynamics/gromacs/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/physics/xfitter/default.nix+30−34
This diff is too big to show here.
pkgs/applications/science/physics/xfitter/undefined_behavior.patchnew file+454
This diff is too big to show here.
pkgs/applications/science/programming/jflap/default.nixdeleted−32
This diff is too big to show here.
pkgs/applications/science/robotics/mavproxy/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/robotics/sumorobot-manager/default.nix+1−1
This diff is too big to show here.
pkgs/applications/terminal-emulators/alacritty/default.nix+2
This diff is too big to show here.
pkgs/applications/terminal-emulators/foot/default.nix+2−3
This diff is too big to show here.
pkgs/applications/terminal-emulators/hyper/default.nix+2−2
This diff is too big to show here.
pkgs/applications/terminal-emulators/syncterm/default.nix−2
This diff is too big to show here.
pkgs/applications/terminal-emulators/wezterm/default.nix+10−21
This diff is too big to show here.
pkgs/applications/version-management/bitkeeper/default.nixnew file+56
This diff is too big to show here.
pkgs/applications/version-management/commit-formatter/default.nix−1
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix−1
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix−1
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/gh/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/ghorg/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix−1
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-branchless/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-cliff/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-crypt/default.nix+7−17
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-dit/default.nixnew file+58
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-extras/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-interactive-rebase-tool/default.nix+12−5
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-machete/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git/default.nix+18−27
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/gitbatch/default.nix+10−12
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/gitbatch/deps.nixnew file+543
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/glab/default.nix+1−10
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/hut/default.nix+8−5
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/scmpuff/default.nix+9−14
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/scmpuff/deps.nixnew file+273
This diff is too big to show here.
pkgs/applications/version-management/git-lfs/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-repo/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-review/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-sizer/default.nix+6−15
This diff is too big to show here.
pkgs/applications/version-management/gitea/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/github-desktop/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/gitkraken/default.nix+4−4
This diff is too big to show here.
pkgs/applications/version-management/gitlab/data.json+7−7
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitaly/Gemfile+1−1
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitaly/Gemfile.lock+13−13
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitaly/default.nix+4−4
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitaly/gemset.nix+16−16
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitlab-shell/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/gitlab/gitlab-workhorse/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/gitlab/rubyEnv/Gemfile+9−10
This diff is too big to show here.
pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock+83−87
This diff is too big to show here.
pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix+64−75
This diff is too big to show here.
pkgs/applications/version-management/gitoxide/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/gogs/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/jujutsu/default.nix+2−3
This diff is too big to show here.
pkgs/applications/version-management/mercurial/default.nix+8−3
This diff is too big to show here.
pkgs/applications/version-management/mercurial/fix-rhg-type-aarch64.patchnew file+12
This diff is too big to show here.
pkgs/applications/version-management/monotone/default.nix−2
This diff is too big to show here.
pkgs/applications/version-management/p4/default.nix+1−1
This diff is too big to show here.
pkgs/applications/version-management/pijul/default.nix+3−3
This diff is too big to show here.
pkgs/applications/version-management/rcs/default.nix+1−1
This diff is too big to show here.
pkgs/applications/version-management/redmine/Gemfile+2−2
This diff is too big to show here.
pkgs/applications/version-management/redmine/Gemfile.lock+50−48
This diff is too big to show here.
pkgs/applications/version-management/redmine/default.nix+6−4
This diff is too big to show here.
pkgs/applications/version-management/redmine/gemset.nix+49−39
This diff is too big to show here.
pkgs/applications/version-management/redmine/update.shdeleted−17
This diff is too big to show here.
pkgs/applications/version-management/subversion/default.nix+9−4
This diff is too big to show here.
pkgs/applications/version-management/yadm/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/ani-cli/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/celluloid/default.nix+4−2
This diff is too big to show here.
pkgs/applications/video/clickshare-csc1/default.nix+2
This diff is too big to show here.
pkgs/applications/video/davinci-resolve/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/epgstation/default.nix+5−3
This diff is too big to show here.
pkgs/applications/video/epgstation/update.nix+4−2
This diff is too big to show here.
pkgs/applications/video/f1viewer/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/ffmpeg-normalize/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/handbrake/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/hdhomerun-config-gui/default.nix+1−3
This diff is too big to show here.
pkgs/applications/video/hyperion-ng/default.nixdeleted−50
This diff is too big to show here.
pkgs/applications/video/kodi/add-KODI_WEBSERVER_EXTRA_WHITELIST.patchdeleted−88
This diff is too big to show here.
pkgs/applications/video/kodi/unwrapped.nix+2−17
This diff is too big to show here.
pkgs/applications/video/kodi/wrapper.nix+6
This diff is too big to show here.
pkgs/applications/video/lightworks/default.nix+4−4
This diff is too big to show here.
pkgs/applications/video/mirakurun/default.nix+6−4
This diff is too big to show here.
pkgs/applications/video/mirakurun/update.nix+7−3
This diff is too big to show here.
pkgs/applications/video/mkvtoolnix/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/mpv/scripts/autocrop.nixdeleted−19
This diff is too big to show here.
pkgs/applications/video/mpv/scripts/autodeint.nixdeleted−19
This diff is too big to show here.
pkgs/applications/video/obs-studio/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/obs-studio/plugins/default.nix−1
This diff is too big to show here.
pkgs/applications/video/obs-studio/plugins/obs-vkcapture.nixdeleted−35
This diff is too big to show here.
pkgs/applications/video/peek/default.nix+2
This diff is too big to show here.
pkgs/applications/video/pitivi/default.nix−8
This diff is too big to show here.
pkgs/applications/video/quvi/library.nix−1
This diff is too big to show here.
pkgs/applications/video/quvi/scripts.nix−1
This diff is too big to show here.
pkgs/applications/video/quvi/tool.nix−1
This diff is too big to show here.
pkgs/applications/video/vdr/plugins.nix+80−5
This diff is too big to show here.
pkgs/applications/video/vlc/default.nix+2−2
This diff is too big to show here.
pkgs/applications/video/webcamoid/default.nix+9−4
This diff is too big to show here.
pkgs/applications/video/webtorrent_desktop/default.nix+87−68
This diff is too big to show here.
pkgs/applications/virtualization/cloud-hypervisor/default.nix+3−3
This diff is too big to show here.
pkgs/applications/virtualization/containerd/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/crosvm/Cargo.lock+22−31
This diff is too big to show here.
pkgs/applications/virtualization/crosvm/generate-cargo.shdeleted−7
This diff is too big to show here.
pkgs/applications/virtualization/crosvm/update.py+2−10
This diff is too big to show here.
pkgs/applications/virtualization/crosvm/upstream-info.json+5−5
This diff is too big to show here.
pkgs/applications/virtualization/crun/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/distrobox/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/docker-slim/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/docker/buildx.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/docker/compose.nix+3−3
This diff is too big to show here.
pkgs/applications/virtualization/ecs-agent/default.nix−1
This diff is too big to show here.
pkgs/applications/virtualization/firectl/default.nix+6−6
This diff is too big to show here.
pkgs/applications/virtualization/firectl/gomod.patchnew file+15
This diff is too big to show here.
pkgs/applications/virtualization/imgcrypt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/kvmtool/default.nixdeleted−23
This diff is too big to show here.
pkgs/applications/virtualization/lima/default.nix+3−8
This diff is too big to show here.
pkgs/applications/virtualization/podman-tui/default.nix+4−4
This diff is too big to show here.
pkgs/applications/virtualization/podman/default.nix−1
This diff is too big to show here.
pkgs/applications/virtualization/qemu/allow-virtfs-on-darwin.patchnew file+77
This diff is too big to show here.
pkgs/applications/virtualization/qemu/default.nix+70−18
This diff is too big to show here.
pkgs/applications/virtualization/qemu/provide-fallback-for-utimensat.patch+4−4
This diff is too big to show here.
pkgs/applications/virtualization/qemu/rename-9p-util.patchnew file+54
This diff is too big to show here.
pkgs/applications/virtualization/qemu/revert-ui-cocoa-add-clipboard-support.patchdeleted−208
This diff is too big to show here.
pkgs/applications/virtualization/virt-manager/default.nix+2−12
This diff is too big to show here.
pkgs/applications/virtualization/virtualbox/guest-additions/default.nix+7−3
This diff is too big to show here.
pkgs/applications/virtualization/vmware-workstation/default.nixdeleted−341
This diff is too big to show here.
pkgs/applications/virtualization/vmware-workstation/vmware-bootstrapdeleted−11
This diff is too big to show here.
pkgs/applications/virtualization/vmware-workstation/vmware-configdeleted−21
This diff is too big to show here.
pkgs/applications/virtualization/vmware-workstation/vmware-installer-bootstrapdeleted−5
This diff is too big to show here.
pkgs/applications/virtualization/vmware-workstation/vmware-modconfigdeleted−8
This diff is too big to show here.
pkgs/applications/virtualization/x11docker/default.nix+2−2
This diff is too big to show here.
pkgs/applications/window-managers/afterstep/default.nix+1−13
This diff is too big to show here.
pkgs/applications/window-managers/berry/default.nix+2−2
This diff is too big to show here.
pkgs/applications/window-managers/clfswm/default.nixnew file+51
This diff is too big to show here.
pkgs/applications/window-managers/clfswm/require-clx.patchnew file+13
This diff is too big to show here.
pkgs/applications/window-managers/herbstluftwm/default.nix+4−9
This diff is too big to show here.
pkgs/applications/window-managers/i3/status-rust.nix+3−3
This diff is too big to show here.
pkgs/applications/window-managers/phosh/default.nix+2−2
This diff is too big to show here.
pkgs/applications/window-managers/sway/idle.nix−2
This diff is too big to show here.
pkgs/applications/window-managers/sway/lock-effects.nix−8
This diff is too big to show here.
pkgs/applications/window-managers/wmfs/default.nix+5−1
This diff is too big to show here.
pkgs/applications/window-managers/wmii-hg/default.nixnew file+46
This diff is too big to show here.
pkgs/applications/window-managers/wmii/default.nixdeleted−72
This diff is too big to show here.
pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix+1−1
This diff is too big to show here.
pkgs/build-support/build-graalvm-native-image/default.nix−2
This diff is too big to show here.
pkgs/build-support/docker/default.nix+25−17
This diff is too big to show here.
pkgs/build-support/docker/examples.nix+1−1
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/default.nix+5−10
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh+1−2
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-check-hook.sh+1−2
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-configure-hook.sh+1−5
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh+4−5
This diff is too big to show here.
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh+1−2
This diff is too big to show here.
pkgs/build-support/dotnet/make-nuget-source/default.nix+18−26
This diff is too big to show here.
pkgs/build-support/dotnet/nuget-to-nix/default.nix+3−25
This diff is too big to show here.
pkgs/build-support/dotnet/nuget-to-nix/nuget-to-nix.sh+1−3
This diff is too big to show here.
pkgs/build-support/emacs/wrapper.nix+2−16
This diff is too big to show here.
pkgs/build-support/emacs/wrapper.sh+1−1
This diff is too big to show here.
pkgs/build-support/fake-nss/default.nixdeleted−24
This diff is too big to show here.
pkgs/build-support/fetchfirefoxaddon/default.nix+2−2
This diff is too big to show here.
pkgs/build-support/fetchgit/default.nix+1−2
This diff is too big to show here.
pkgs/build-support/fetchnextcloudapp/default.nix+6−1
This diff is too big to show here.
pkgs/build-support/fetchurl/default.nix+1−1
This diff is too big to show here.
pkgs/build-support/fetchurl/mirrors.nix−1
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng-tool.nixdeleted−16
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng.nixdeleted−93
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng/Cargo.lockdeleted−5
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng/Cargo.tomldeleted−9
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng/README.mddeleted−79
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd-ng/src/main.rsdeleted−216
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd.nix+2−2
This diff is too big to show here.
pkgs/build-support/kernel/make-initrd.sh+1−1
This diff is too big to show here.
pkgs/build-support/make-darwin-bundle/default.nix+4−4
This diff is too big to show here.
pkgs/build-support/make-desktopitem/default.nix+8−3
This diff is too big to show here.
pkgs/build-support/ocaml/dune.nix+2−2
This diff is too big to show here.
pkgs/build-support/ocaml/oasis.nix+1−1
This diff is too big to show here.
pkgs/build-support/rust/build-rust-crate/build-crate.nix+2−3
This diff is too big to show here.
pkgs/build-support/rust/build-rust-crate/configure-crate.nix+1−2
This diff is too big to show here.
pkgs/build-support/rust/build-rust-crate/default.nix+4−11
This diff is too big to show here.
pkgs/build-support/rust/default-crate-overrides.nix+1−1
This diff is too big to show here.
pkgs/build-support/setup-hooks/auto-patchelf.py+17−23
This diff is too big to show here.
pkgs/build-support/setup-hooks/auto-patchelf.sh+1−9
This diff is too big to show here.
pkgs/build-support/setup-hooks/copy-desktop-items.sh+4−5
This diff is too big to show here.
pkgs/build-support/setup-hooks/desktop-to-darwin-bundle.sh+6−26
This diff is too big to show here.
pkgs/build-support/setup-hooks/make-wrapper.sh−5
This diff is too big to show here.
pkgs/build-support/setup-hooks/postgresql-test-hook/default.nixdeleted−9
This diff is too big to show here.
pkgs/build-support/setup-hooks/postgresql-test-hook/postgresql-test-hook.shdeleted−79
This diff is too big to show here.
pkgs/build-support/setup-hooks/postgresql-test-hook/test.nixdeleted−27
This diff is too big to show here.
pkgs/build-support/setup-hooks/wrap-gapps-hook/wrap-gapps-hook.sh+4
This diff is too big to show here.
pkgs/build-support/testers/test-equal-derivation.nix → pkgs/build-support/test-equal-derivation.nixrenamed+18−1
This diff is too big to show here.
pkgs/build-support/testers/default.nixdeleted−18
This diff is too big to show here.
pkgs/build-support/trivial-builders.nix+39−9
This diff is too big to show here.
pkgs/build-support/trivial-builders/test/write-text-file.nixdeleted−34
This diff is too big to show here.
pkgs/build-support/writers/default.nix+3−3
This diff is too big to show here.
pkgs/common-updater/git-updater.nix+2−6
This diff is too big to show here.
pkgs/common-updater/scripts/list-git-tags+1−1
This diff is too big to show here.
pkgs/data/documentation/rnrs/r3rs.nixnew file+7
This diff is too big to show here.
pkgs/data/documentation/scheme-manpages/default.nix+3−3
This diff is too big to show here.
pkgs/data/fonts/amiri/default.nix+2−2
This diff is too big to show here.
pkgs/data/fonts/annapurna-sil/default.nixdeleted−29
This diff is too big to show here.
pkgs/data/fonts/comic-mono/comic-mono-weight.confdeleted−14
This diff is too big to show here.
pkgs/data/fonts/comic-mono/default.nixdeleted−35
This diff is too big to show here.
pkgs/data/fonts/ezra-sil/default.nixdeleted−26
This diff is too big to show here.
pkgs/data/fonts/galatia-sil/default.nixdeleted−29
This diff is too big to show here.
pkgs/data/fonts/iosevka/bin.nix+2−3
This diff is too big to show here.
pkgs/data/fonts/iosevka/variants.nix+92−92
This diff is too big to show here.
pkgs/data/fonts/kacst/default.nixdeleted−22
This diff is too big to show here.
pkgs/data/fonts/lao/default.nixdeleted−22
This diff is too big to show here.
pkgs/data/fonts/material-design-icons/default.nix+6−3
This diff is too big to show here.
pkgs/data/fonts/sarasa-gothic/default.nix+2−2
This diff is too big to show here.
pkgs/data/fonts/sudo/default.nix+2−2
This diff is too big to show here.
pkgs/data/fonts/times-newer-roman/default.nix+1−1
This diff is too big to show here.
pkgs/data/fonts/uni-vga/default.nix+6−4
This diff is too big to show here.
pkgs/data/fonts/unifont/default.nix+6−4
This diff is too big to show here.
pkgs/data/fonts/unifont_upper/default.nix+2−2
This diff is too big to show here.
pkgs/data/icons/comixcursors/default.nix+25−5
This diff is too big to show here.
pkgs/data/icons/elementary-xfce-icon-theme/default.nix+3−3
This diff is too big to show here.
pkgs/data/icons/hicolor-icon-theme/default.nix+2−3
This diff is too big to show here.
pkgs/data/icons/luna-icons/default.nix+2−5
This diff is too big to show here.
pkgs/data/misc/cacert/default.nix+2−2
This diff is too big to show here.
pkgs/data/misc/cacert/update.sh+10−7
This diff is too big to show here.
pkgs/data/misc/cldr-annotations/default.nixdeleted−24
This diff is too big to show here.
pkgs/data/misc/cldr-emoji-annotation/default.nixnew file+27
This diff is too big to show here.
pkgs/data/misc/dns-root-data/default.nix+1−2
This diff is too big to show here.
pkgs/data/misc/freepats/default.nix+2−3
This diff is too big to show here.
pkgs/data/misc/hackage/default.nix+1−2
This diff is too big to show here.
pkgs/data/misc/hackage/pin.json+4−4
This diff is too big to show here.
pkgs/data/misc/iana-etc/default.nix+3−2
This diff is too big to show here.
pkgs/data/misc/nixos-artwork/wallpapers.nix−16
This diff is too big to show here.
pkgs/data/misc/shared-mime-info/default.nix−1
This diff is too big to show here.
pkgs/data/misc/tzdata/default.nix+3−3
This diff is too big to show here.
pkgs/data/misc/unicode-emoji/default.nix+12−4
This diff is too big to show here.
pkgs/data/misc/wireless-regdb/default.nix+2−2
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook-ebnf/default.nix+3−4
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix+8−3
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix+5−2
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix+5−2
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix+5−2
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix+5−2
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/docbook/generic.nix+4−6
This diff is too big to show here.
pkgs/data/sgml+xml/schemas/xml-dtd/xhtml1/default.nix+2−3
This diff is too big to show here.
pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/default.nix+1−5
This diff is too big to show here.
pkgs/data/sgml+xml/stylesheets/xslt/docbook-xsl/fix-man-options-duplication.patchdeleted−11
This diff is too big to show here.
pkgs/data/themes/arc/default.nix+2−2
This diff is too big to show here.
pkgs/data/themes/flat-remix-gnome/default.nix+4−4
This diff is too big to show here.
pkgs/data/themes/flat-remix-gtk/default.nix+2−2
This diff is too big to show here.
pkgs/data/themes/gnome-breeze/default.nixnew file+29
This diff is too big to show here.
pkgs/data/themes/orchis-theme/default.nix+2−2
This diff is too big to show here.
pkgs/data/themes/vimix/default.nix+4−12
This diff is too big to show here.
pkgs/data/themes/yaru/default.nix+5−2
This diff is too big to show here.
pkgs/desktops/cdesktopenv/default.nix+2−15
This diff is too big to show here.
pkgs/desktops/enlightenment/econnman/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/enlightenment/ecrire/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/efl/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/enlightenment/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/ephoto/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/evisum/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/rage/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/enlightenment/terminology/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/gnome-2/bindings/gnome-python/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/gnome-2/desktop/scrollkeeper/default.nix+4−6
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/ORBit2/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/gnome-common/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/gnome-mime-data/default.nix+4−5
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/gnome-vfs/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/gtkhtml/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libIDL/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libart_lgpl/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libbonobo/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libbonoboui/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libglade/default.nix+8−6
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnome/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomecanvas/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomecanvasmm/default.nix+4−5
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomecups/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomeprint/default.nix+2−3
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomeprintui/default.nix+4−5
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgnomeui/default.nix+4−4
This diff is too big to show here.
pkgs/desktops/gnome-2/platform/libgtkhtml/default.nix+4−5
This diff is too big to show here.
pkgs/desktops/gnome/apps/gedit/default.nix+2−5
This diff is too big to show here.
pkgs/desktops/gnome/apps/ghex/default.nix+27−8
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-boxes/default.nix−7
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-boxes/fix-gir-lib-path.patchdeleted−22
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-calendar/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-connections/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-maps/default.nix+13−2
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-music/default.nix+5−4
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-nettool/default.nix+11−61
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-text-editor/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-todo/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/gnome/core/eog/default.nix+2−9
This diff is too big to show here.
pkgs/desktops/gnome/core/eog/fix-gir-lib-path.patchdeleted−13
This diff is too big to show here.
pkgs/desktops/gnome/core/epiphany/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/evince/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/evolution-data-server/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-initial-setup/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-software/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/mutter/3.38/default.nix+1−3
This diff is too big to show here.
pkgs/desktops/gnome/core/mutter/default.nix+1−3
This diff is too big to show here.
pkgs/desktops/gnome/core/nautilus/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/simple-scan/default.nix+4−3
This diff is too big to show here.
pkgs/desktops/gnome/core/sushi/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/zenity/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/default.nix+16−1
This diff is too big to show here.
pkgs/desktops/gnome/extensions/arcmenu/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/extensions/collisions.json−32
This diff is too big to show here.
pkgs/desktops/gnome/extensions/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/gnome/extensions/extensionRenames.nix+12−15
This diff is too big to show here.
pkgs/desktops/gnome/extensions/extensions.json+223−248
This diff is too big to show here.
pkgs/desktops/gnome/extensions/impatience/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/gnome/extensions/manuallyPackaged.nix+1
This diff is too big to show here.
pkgs/desktops/gnome/extensions/night-theme-switcher/default.nixnew file+35
This diff is too big to show here.
pkgs/desktops/gnome/extensions/system-monitor/default.nix+24−11
This diff is too big to show here.
pkgs/desktops/gnome/extensions/update-extensions.py+47−66
This diff is too big to show here.
pkgs/desktops/gnome/games/hitori/default.nix+14−2
This diff is too big to show here.
pkgs/desktops/gnome/games/swell-foop/default.nix+4−3
This diff is too big to show here.
pkgs/desktops/gnome/games/tali/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/lumina/lumina-calculator/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lumina/lumina-pdf/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lumina/lumina/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lxqt/compton-conf/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lxqt/default.nix+5−2
This diff is too big to show here.
pkgs/desktops/lxqt/libfm-qt/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/liblxqt/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/libqtxdg/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/libsysstat/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lxqt/lximage-qt/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-about/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-admin/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-archiver/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-build-tools/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-config/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-globalkeys/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-notificationd/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-openssh-askpass/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-panel/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-policykit/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-powermanagement/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-qtplugin/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-runner/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-session/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-sudo/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/lxqt-themes/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/obconf-qt/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lxqt/pavucontrol-qt/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/pcmanfm-qt/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/qlipper/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/lxqt/qps/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/qterminal/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/qtermwidget/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/screengrab/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/lxqt/xdg-desktop-portal-lxqt/default.nixdeleted−41
This diff is too big to show here.
pkgs/desktops/mate/caja-extensions/default.nix+1−17
This diff is too big to show here.
pkgs/desktops/mate/caja-extensions/hardcode-gsettings.patchdeleted−169
This diff is too big to show here.
pkgs/desktops/mate/default.nix−2
This diff is too big to show here.
pkgs/desktops/mate/mate-control-center/default.nix+1−3
This diff is too big to show here.
pkgs/desktops/mate/mate-panel/default.nix−7
This diff is too big to show here.
pkgs/desktops/mate/mate-settings-daemon/wrapped.nixdeleted−22
This diff is too big to show here.
pkgs/desktops/pantheon/apps/elementary-code/default.nix+12−2
This diff is too big to show here.
pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/pantheon/apps/switchboard/default.nix+15−2
This diff is too big to show here.
pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix+5−12
This diff is too big to show here.
pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix+6−6
This diff is too big to show here.
pkgs/desktops/pantheon/default.nix+1−3
This diff is too big to show here.
pkgs/desktops/pantheon/desktop/gala/default.nix+15−4
This diff is too big to show here.
pkgs/desktops/pantheon/granite/7/default.nixdeleted−73
This diff is too big to show here.
pkgs/desktops/pantheon/services/elementary-notifications/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/plasma-5/3rdparty/addons/bismuth/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/plasma-5/3rdparty/kwin/scripts/dynamic-workspaces.nix+1−1
This diff is too big to show here.
pkgs/desktops/plasma-5/default.nix+1−1
This diff is too big to show here.
pkgs/desktops/plasma-5/fetch.sh+1−1
This diff is too big to show here.
pkgs/desktops/plasma-5/kscreen.nix+2−2
This diff is too big to show here.
pkgs/desktops/plasma-5/srcs.nix+214−214
This diff is too big to show here.
pkgs/desktops/xfce/applications/mousepad/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/xfce/applications/xfce4-screensaver/default.nixdeleted−49
This diff is too big to show here.
pkgs/desktops/xfce/applications/xfce4-terminal/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/xfce/core/thunar/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/xfce/core/xfce4-panel/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/xfce/default.nix+1−3
This diff is too big to show here.
pkgs/desktops/xfce/panel-plugins/xfce4-eyes-plugin/default.nix+2−2
This diff is too big to show here.
pkgs/development/beam-modules/elvis-erlang/default.nix+1−2
This diff is too big to show here.
pkgs/development/beam-modules/erlang-ls/default.nix+3−3
This diff is too big to show here.
pkgs/development/beam-modules/erlang-ls/rebar-deps.nix+7−8
This diff is too big to show here.
pkgs/development/compilers/abcl/default.nix+1−6
This diff is too big to show here.
pkgs/development/compilers/adoptopenjdk-bin/generate-sources.py−1
This diff is too big to show here.
pkgs/development/compilers/adoptopenjdk-bin/jdk-darwin-base.nix+3−4
This diff is too big to show here.
pkgs/development/compilers/adoptopenjdk-bin/jdk-linux-base.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/adoptopenjdk-bin/sources.json+100−244
This diff is too big to show here.
pkgs/development/compilers/alan/2.nixdeleted−31
This diff is too big to show here.
pkgs/development/compilers/alan/default.nixdeleted−48
This diff is too big to show here.
pkgs/development/compilers/aldor/default.nixnew file+54
This diff is too big to show here.
pkgs/development/compilers/algol68g/default.nix−1
This diff is too big to show here.
pkgs/development/compilers/aliceml/default.nixnew file+59
This diff is too big to show here.
pkgs/development/compilers/aliceml/make.patchnew file+20
This diff is too big to show here.
pkgs/development/compilers/aliceml/seam.patchnew file+13
This diff is too big to show here.
pkgs/development/compilers/bluespec/default.nix+5−13
This diff is too big to show here.
pkgs/development/compilers/bupc/default.nix+1
This diff is too big to show here.
pkgs/development/compilers/chez/default.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/chicken/5/chicken.nix+1−6
This diff is too big to show here.
pkgs/development/compilers/chicken/5/eggs.nix+4−464
This diff is too big to show here.
pkgs/development/compilers/chicken/5/eggs.scm−8
This diff is too big to show here.
pkgs/development/compilers/coreclr/default.nixnew file+100
This diff is too big to show here.
pkgs/development/compilers/crystal/build-package.nix+1−5
This diff is too big to show here.
pkgs/development/compilers/crystal/default.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.shdeleted−14
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/common.nix−1
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/default.nixnew file+90
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/extension.nixdeleted−15
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nixdeleted−51
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/extension.nixdeleted−32
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.jsondeleted−862
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.jsondeleted−873
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.jsondeleted−873
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/overrides.nixdeleted−72
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/versions.tomldeleted−61
This diff is too big to show here.
pkgs/development/compilers/dmd/binary.nix+2−3
This diff is too big to show here.
pkgs/development/compilers/dotnet/default.nix+27−27
This diff is too big to show here.
pkgs/development/compilers/elm/default.nix−12
This diff is too big to show here.
pkgs/development/compilers/fennel/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/gcc/10/default.nix+10−11
This diff is too big to show here.
pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patchdeleted−70
This diff is too big to show here.
pkgs/development/compilers/gcc/11/default.nix+7−2
This diff is too big to show here.
pkgs/development/compilers/gcc/4.8/default.nix+8−3
This diff is too big to show here.
pkgs/development/compilers/gcc/4.9/default.nix+8−3
This diff is too big to show here.
pkgs/development/compilers/gcc/6/default.nix+7−4
This diff is too big to show here.
pkgs/development/compilers/gcc/6/gnat-glibc234.patchdeleted−30
This diff is too big to show here.
pkgs/development/compilers/gcc/7/default.nix+7−6
This diff is too big to show here.
pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patchdeleted−70
This diff is too big to show here.
pkgs/development/compilers/gcc/8/default.nix+7−3
This diff is too big to show here.
pkgs/development/compilers/gcc/9/default.nix+8−9
This diff is too big to show here.
pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patchdeleted−70
This diff is too big to show here.
pkgs/development/compilers/gcc/builder.sh−4
This diff is too big to show here.
pkgs/development/compilers/ghc/8.10.2-binary.nix−14
This diff is too big to show here.
pkgs/development/compilers/ghc/8.10.7-binary.nix+1−14
This diff is too big to show here.
pkgs/development/compilers/ghc/8.10.7.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/ghc/9.0.2.nix−21
This diff is too big to show here.
pkgs/development/compilers/ghc/head.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/ghcjs/8.10/common-overrides.nix+3−32
This diff is too big to show here.
pkgs/development/compilers/ghcjs/8.10/default.nix+1−2
This diff is too big to show here.
pkgs/development/compilers/glslang/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/go-jsonnet/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/go/1.16.nix+2−1
This diff is too big to show here.
pkgs/development/compilers/go/1.17.nix+4−3
This diff is too big to show here.
pkgs/development/compilers/go/1.18.nix+4−3
This diff is too big to show here.
pkgs/development/compilers/go/2-dev.nixnew file+276
This diff is too big to show here.
pkgs/development/compilers/go/ssl-cert-file-2-dev.patchnew file+54
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/default.nix+29−16
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json+56−24
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json+42−28
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/mkGraal.nix+71−94
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/update.nix+9−11
This diff is too big to show here.
pkgs/development/compilers/graalvm/enterprise-edition.nixnew file+183
This diff is too big to show here.
pkgs/development/compilers/hare/config-template.mkdeleted−27
This diff is too big to show here.
pkgs/development/compilers/hare/hare.nixdeleted−93
This diff is too big to show here.
pkgs/development/compilers/hare/harec.nixdeleted−45
This diff is too big to show here.
pkgs/development/compilers/hhvm/default.nixnew file+68
This diff is too big to show here.
pkgs/development/compilers/hhvm/flexible-array-members-gcc6.patchnew file+20
This diff is too big to show here.
pkgs/development/compilers/inklecate/default.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/inklecate/deps-darwin.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/inklecate/deps-linux.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/jasmin-compiler/default.nixdeleted−41
This diff is too big to show here.
pkgs/development/compilers/julia/1.6-bin.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/kotlin/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/kotlin/native.nix+4−4
This diff is too big to show here.
pkgs/development/compilers/ldc/binary.nix+2−3
This diff is too big to show here.
pkgs/development/compilers/llvm/10/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/11/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/12/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/13/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/14/clang/default.nix−1
This diff is too big to show here.
pkgs/development/compilers/llvm/14/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/llvm/14/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/5/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/6/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/7/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/8/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/9/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/git/llvm/default.nix−6
This diff is too big to show here.
pkgs/development/compilers/llvm/multi.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/mruby/default.nix+1−9
This diff is too big to show here.
pkgs/development/compilers/mrustc/default.nix−1
This diff is too big to show here.
pkgs/development/compilers/muonlang/default.nix → pkgs/development/compilers/muon/default.nixrenamed
The content is the same.
pkgs/development/compilers/ocaml/4.00.1.nix+1−7
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.01.0.nix+1−7
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.02.nix+1−7
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.03.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.04.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.05.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.06.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.07.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.08.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.09.nix−6
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.10.nix−3
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.11.nix−3
This diff is too big to show here.
pkgs/development/compilers/ocaml/4.12.nix−5
This diff is too big to show here.
pkgs/development/compilers/ocaml/Makefile.nixpkgsdeleted−16
This diff is too big to show here.
pkgs/development/compilers/ocaml/generic.nix+12−24
This diff is too big to show here.
pkgs/development/compilers/ocaml/glibc-2.34-for-ocaml-4.10-and-11.patchdeleted−37
This diff is too big to show here.
pkgs/development/compilers/ocaml/metaocaml-3.09.nixnew file+34
This diff is too big to show here.
pkgs/development/compilers/open-watcom/v2.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/opendylan/bin.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/openjdk/11.nix+4−8
This diff is too big to show here.
pkgs/development/compilers/openjdk/16.nix−1
This diff is too big to show here.
pkgs/development/compilers/openjdk/17.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/openjdk/8.nix+1−2
This diff is too big to show here.
pkgs/development/compilers/openjdk/darwin/8.nix−6
This diff is too big to show here.
pkgs/development/compilers/openjdk/fix-glibc-2.34.patchdeleted−24
This diff is too big to show here.
pkgs/development/compilers/openjdk/fix-library-path-jdk11.patch+3−21
This diff is too big to show here.
pkgs/development/compilers/polyml/5.6.nix+1−9
This diff is too big to show here.
pkgs/development/compilers/polyml/5.7.nix+2−10
This diff is too big to show here.
pkgs/development/compilers/polyml/default.nix+1−7
This diff is too big to show here.
pkgs/development/compilers/ponyc/default.nix+11−2
This diff is too big to show here.
pkgs/development/compilers/ponyc/disable-tests.patch+7−9
This diff is too big to show here.
pkgs/development/compilers/ponyc/make-safe-for-sandbox.patch+12−17
This diff is too big to show here.
pkgs/development/compilers/ponyc/pony-corral.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/purescript/purescript/default.nix+7−5
This diff is too big to show here.
pkgs/development/compilers/purescript/purescript/test-minimal-module/Main.js+1−1
This diff is too big to show here.
pkgs/development/compilers/purescript/purescript/test-minimal-module/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/qbe/default.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/rust/1_58.nixnew file+63
This diff is too big to show here.
pkgs/development/compilers/rust/1_60.nixdeleted−64
This diff is too big to show here.
pkgs/development/compilers/rust/binary.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/rust/cargo.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/rust/rustfmt.nix+4−4
This diff is too big to show here.
pkgs/development/compilers/sbcl/2.2.4.nixdeleted−4
This diff is too big to show here.
pkgs/development/compilers/scryer-prolog/cargo.patch+74−27
This diff is too big to show here.
pkgs/development/compilers/scryer-prolog/default.nix+6−19
This diff is too big to show here.
pkgs/development/compilers/scryer-prolog/fix-tests.patchdeleted−29
This diff is too big to show here.
pkgs/development/compilers/solc/default.nix+11−34
This diff is too big to show here.
pkgs/development/compilers/squeak/default.nix+3−1
This diff is too big to show here.
pkgs/development/compilers/swift/default.nix+6
This diff is too big to show here.
pkgs/development/compilers/tinygo/default.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/uasm/default.nix+18−31
This diff is too big to show here.
pkgs/development/compilers/vlang/default.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/yosys/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/zulu/8.nix+3−9
This diff is too big to show here.
pkgs/development/compilers/zulu/default.nix+1−7
This diff is too big to show here.
pkgs/development/coq-modules/CoLoR/default.nix+1−2
This diff is too big to show here.
pkgs/development/coq-modules/Verdi/default.nix−3
This diff is too big to show here.
pkgs/development/coq-modules/aac-tactics/default.nix+2−6
This diff is too big to show here.
pkgs/development/coq-modules/coqprime/default.nix+1−2
This diff is too big to show here.
pkgs/development/coq-modules/coqtail-math/default.nix+1−6
This diff is too big to show here.
pkgs/development/coq-modules/flocq/default.nix+2−2
This diff is too big to show here.
pkgs/development/coq-modules/gappalib/default.nix+1−2
This diff is too big to show here.
pkgs/development/coq-modules/mathcomp-word/default.nix+1−2
This diff is too big to show here.
pkgs/development/coq-modules/metacoq/default.nixdeleted−76
This diff is too big to show here.
pkgs/development/coq-modules/metalib/default.nix+3−7
This diff is too big to show here.
pkgs/development/coq-modules/parsec/default.nix+2−6
This diff is too big to show here.
pkgs/development/coq-modules/relation-algebra/default.nix+1−8
This diff is too big to show here.
pkgs/development/coq-modules/simple-io/default.nix+3−10
This diff is too big to show here.
pkgs/development/coq-modules/smtcoq/default.nixdeleted−26
This diff is too big to show here.
pkgs/development/coq-modules/tlc/default.nix−2
This diff is too big to show here.
pkgs/development/coq-modules/trakt/default.nixdeleted−24
This diff is too big to show here.
pkgs/development/embedded/fpga/apio/default.nix+4−5
This diff is too big to show here.
pkgs/development/embedded/openocd/default.nix−11
This diff is too big to show here.
pkgs/development/embedded/platformio/core.nix+1−2
This diff is too big to show here.
pkgs/development/embedded/stm32/betaflight/default.nixnew file+64
This diff is too big to show here.
pkgs/development/embedded/stm32/inav/default.nixnew file+56
This diff is too big to show here.
pkgs/development/embedded/stm32/stm32flash/default.nix+2−2
This diff is too big to show here.
pkgs/development/gnuradio-modules/osmosdr/default.nix−2
This diff is too big to show here.
pkgs/development/go-modules/generic/default.nix+5−12
This diff is too big to show here.
pkgs/development/go-packages/generic/default.nix+3−11
This diff is too big to show here.
pkgs/development/haskell-modules/HACKING.md+1−1
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-arm.nix+1
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-common.nix+64−119
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-darwin.nix+9−6
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.10.x.nix+9−25
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.6.x.nix−6
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix+8−23
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix−10
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix+2−14
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-head.nix+4−14
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghcjs.nix+1−1
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml+4−30
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml+2−19
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml+159−167
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml+10−18
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-nix.nix+3−16
This diff is too big to show here.
pkgs/development/haskell-modules/generic-builder.nix+6−9
This diff is too big to show here.
pkgs/development/haskell-modules/hackage-packages.nix+3147−2961
This diff is too big to show here.
pkgs/development/haskell-modules/non-hackage-packages.nix−1
This diff is too big to show here.
pkgs/development/haskell-modules/patches/graphql-engine-mapkeys.patchnew file+33
This diff is too big to show here.
pkgs/development/haskell-modules/with-packages-wrapper.nix+4−4
This diff is too big to show here.
pkgs/development/idris-modules/default.nix+1−1
This diff is too big to show here.
pkgs/development/interpreters/alda/default.nix+3−3
This diff is too big to show here.
pkgs/development/interpreters/bats/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/clojure/babashka.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/clojure/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/dart/default.nix+1−6
This diff is too big to show here.
pkgs/development/interpreters/duktape/default.nix−1
This diff is too big to show here.
pkgs/development/interpreters/elixir/1.13.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/gnu-apl/default.nix+1−3
This diff is too big to show here.
pkgs/development/interpreters/guile/1.8.nix+1
This diff is too big to show here.
pkgs/development/interpreters/guile/2.0.nix+1
This diff is too big to show here.
pkgs/development/interpreters/guile/2.2.nix+1
This diff is too big to show here.
pkgs/development/interpreters/guile/3.0.nix+1
This diff is too big to show here.
pkgs/development/interpreters/janet/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/joker/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/lolcode/default.nix−1
This diff is too big to show here.
pkgs/development/interpreters/luajit/2.0.nix+3−3
This diff is too big to show here.
pkgs/development/interpreters/luajit/2.1.nix+3−3
This diff is too big to show here.
pkgs/development/interpreters/luajit/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/maude/default.nix−4
This diff is too big to show here.
pkgs/development/interpreters/nickel/default.nixdeleted−33
This diff is too big to show here.
pkgs/development/interpreters/octave/default.nix+10−3
This diff is too big to show here.
pkgs/development/interpreters/perl/default.nix+18−21
This diff is too big to show here.
pkgs/development/interpreters/php/7.4.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/php/8.0.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/php/8.1.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/php/generic.nix+1−5
This diff is too big to show here.
pkgs/development/interpreters/pixie/default.nixnew file+94
This diff is too big to show here.
pkgs/development/interpreters/pixie/dust.nixnew file+46
This diff is too big to show here.
pkgs/development/interpreters/pixie/load_paths.patchnew file+25
This diff is too big to show here.
pkgs/development/interpreters/pixie/make-paths-configurable.patchnew file+119
This diff is too big to show here.
pkgs/development/interpreters/pure/default.nixnew file+46
This diff is too big to show here.
pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patchdeleted−257
This diff is too big to show here.
pkgs/development/interpreters/python/cpython/default.nix+10−16
This diff is too big to show here.
pkgs/development/interpreters/python/default.nix+12−7
This diff is too big to show here.
pkgs/development/interpreters/python/graalpython/default.nixnew file+21
This diff is too big to show here.
pkgs/development/interpreters/python/hooks/default.nix−6
This diff is too big to show here.
pkgs/development/interpreters/python/hooks/setuptools-build-hook.sh−3
This diff is too big to show here.
pkgs/development/interpreters/python/hooks/sphinx-hook.shdeleted−57
This diff is too big to show here.
pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py+8−10
This diff is too big to show here.
pkgs/development/interpreters/python/wrapper.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/racket/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/racket/minimal.nix+1−1
This diff is too big to show here.
pkgs/development/interpreters/rakudo/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/rakudo/moarvm.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/rakudo/nqp.nix+2−12
This diff is too big to show here.
pkgs/development/interpreters/ruby/default.nix+30−26
This diff is too big to show here.
pkgs/development/interpreters/ruby/patchsets.nix+3−3
This diff is too big to show here.
pkgs/development/interpreters/ruby/rbinstall-new-rubygems-compat.patchdeleted−87
This diff is too big to show here.
pkgs/development/interpreters/ruby/rubygems/default.nix+1−1
This diff is too big to show here.
pkgs/development/interpreters/scsh/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/sollya/default.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/spidermonkey/91.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/starlark/default.nixdeleted−23
This diff is too big to show here.
pkgs/development/interpreters/supercollider/default.nix+13−36
This diff is too big to show here.
pkgs/development/interpreters/supercollider/plugins/sc3-plugins.nixdeleted−33
This diff is too big to show here.
pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patchdeleted−65
This diff is too big to show here.
pkgs/development/interpreters/supercollider/wrapper.nixdeleted−18
This diff is too big to show here.
pkgs/development/interpreters/trealla/default.nix−1
This diff is too big to show here.
pkgs/development/interpreters/wasmtime/default.nix+9−19
This diff is too big to show here.
pkgs/development/interpreters/yex-lang/default.nix−1
This diff is too big to show here.
pkgs/development/interpreters/zuo/default.nixdeleted−23
This diff is too big to show here.
pkgs/development/java-modules/liquibase_redshift_extension/default.nixdeleted−27
This diff is too big to show here.
pkgs/development/java-modules/redshift_jdbc/default.nixdeleted−28
This diff is too big to show here.
pkgs/development/libraries/CoinMP/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/SDL2/default.nix+1−13
This diff is too big to show here.
pkgs/development/libraries/SDL2/find-headers.patchdeleted−34
This diff is too big to show here.
pkgs/development/libraries/SDL_audiolib/default.nix−53
This diff is too big to show here.
pkgs/development/libraries/amdvlk/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/apache-activemq/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/applet-window-buttons/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/argagg/0001-catch.diff−20
This diff is too big to show here.
pkgs/development/libraries/argagg/default.nix−46
This diff is too big to show here.
pkgs/development/libraries/armadillo/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/aspell/default.nix+2−19
This diff is too big to show here.
pkgs/development/libraries/at-spi2-core/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/audio/libopenmpt/default.nix−66
This diff is too big to show here.
pkgs/development/libraries/audio/libopenmpt/update.sh−31
This diff is too big to show here.
pkgs/development/libraries/audio/libspecbleach/default.nix−26
This diff is too big to show here.
pkgs/development/libraries/audio/lilv/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/audio/lv2/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/audio/sratom/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/avahi/default.nix+1−5
This diff is too big to show here.
pkgs/development/libraries/avro-c/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/aws-c-sdkutils/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/aws-sdk-cpp/default.nix+12−41
This diff is too big to show here.
pkgs/development/libraries/bash/bash-preexec/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/bashup-events/generic.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/bc-decaf/default.nix−36
This diff is too big to show here.
pkgs/development/libraries/bctoolbox/default.nix+7−19
This diff is too big to show here.
pkgs/development/libraries/belcard/default.nix+3−4
This diff is too big to show here.
pkgs/development/libraries/belle-sip/default.nix+9−10
This diff is too big to show here.
pkgs/development/libraries/belr/default.nix+3−4
This diff is too big to show here.
pkgs/development/libraries/boost/1.69.nix−2
This diff is too big to show here.
pkgs/development/libraries/boost/1.70.nix−2
This diff is too big to show here.
pkgs/development/libraries/boost/1.72.nix−2
This diff is too big to show here.
pkgs/development/libraries/boost/1.78.nix−15
This diff is too big to show here.
pkgs/development/libraries/boost/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/boost/generic.nix+5−23
This diff is too big to show here.
pkgs/development/libraries/boost/pthread-stack-min-fix.patch−15
This diff is too big to show here.
pkgs/development/libraries/botan/default.nix+17
This diff is too big to show here.
pkgs/development/libraries/bullet/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/bzrtp/default.nix+6−5
This diff is too big to show here.
pkgs/development/libraries/catch/default.nix−6
This diff is too big to show here.
pkgs/development/libraries/cgreen/default.nix−6
This diff is too big to show here.
pkgs/development/libraries/civetweb/default.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/clucene-core/2.x.nix+1−4
This diff is too big to show here.
pkgs/development/libraries/clucene-core/default.nix−4
This diff is too big to show here.
pkgs/development/libraries/cpp-hocon/default.nix−4
This diff is too big to show here.
pkgs/development/libraries/cpp-ipfs-api/default.nix−4
This diff is too big to show here.
pkgs/development/libraries/cpp-utilities/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/cutelyst/default.nix+4−13
This diff is too big to show here.
pkgs/development/libraries/cwiid/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/cxxopts/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/cyrus-sasl/cyrus-sasl-ac-try-run-fix.patch+11−12
This diff is too big to show here.
pkgs/development/libraries/cyrus-sasl/default.nix+13−12
This diff is too big to show here.
pkgs/development/libraries/cyrus-sasl/missing-size_t.patch+13
This diff is too big to show here.
pkgs/development/libraries/dav1d/default.nix+2−4
This diff is too big to show here.
pkgs/development/libraries/dbus/default.nix−7
This diff is too big to show here.
pkgs/development/libraries/docopt_cpp/default.nix+2−10
This diff is too big to show here.
pkgs/development/libraries/doctest/default.nix+5−5
This diff is too big to show here.
pkgs/development/libraries/dotconf/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/duckdb/default.nix+3−36
This diff is too big to show here.
pkgs/development/libraries/entt/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/expat/default.nix+2−3
This diff is too big to show here.
pkgs/development/libraries/faudio/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/fcft/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/ffmpeg/0001-fate-ffmpeg-add-missing-samples-dependency-to-fate-s.patch+27
This diff is too big to show here.
pkgs/development/libraries/ffmpeg/5.nix+4−2
This diff is too big to show here.
pkgs/development/libraries/ffmpegthumbnailer/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/flatcc/default.nix−5
This diff is too big to show here.
pkgs/development/libraries/flint/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/fltk/common.nix+9−2
This diff is too big to show here.
pkgs/development/libraries/freeimage/default.nix+4−4
This diff is too big to show here.
pkgs/development/libraries/freeimage/unbundle.diff+39−39
This diff is too big to show here.
pkgs/development/libraries/freetype/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gcc/libgcc/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/gdal/2.4.nix+1−11
This diff is too big to show here.
pkgs/development/libraries/gdal/default.nix−40
This diff is too big to show here.
pkgs/development/libraries/gdata-sharp/default.nix+42
This diff is too big to show here.
pkgs/development/libraries/gdcm/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gecode/3.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gensio/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/geos/3.9.nix−25
This diff is too big to show here.
pkgs/development/libraries/geos/default.nix+6−15
This diff is too big to show here.
pkgs/development/libraries/ggz_base_libs/default.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/ghc_filesystem/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/glfw/3.x.nix+5−4
This diff is too big to show here.
pkgs/development/libraries/glib/default.nix+2−8
This diff is too big to show here.
pkgs/development/libraries/glib/elementary-terminal-support.patch−16
This diff is too big to show here.
pkgs/development/libraries/glib/gnome-console-support.patch−55
This diff is too big to show here.
pkgs/development/libraries/glibc/0001-Revert-Remove-all-usage-of-BASH-or-BASH-in-installed.patch−131
This diff is too big to show here.
pkgs/development/libraries/glibc/2.33-master.patch.gz
This diff is too big to show here.
pkgs/development/libraries/glibc/2.34-master.patch.gz
This diff is too big to show here.
pkgs/development/libraries/glibc/common.nix+8−21
This diff is too big to show here.
pkgs/development/libraries/glibc/default.nix+7−15
This diff is too big to show here.
pkgs/development/libraries/glibc/nix-locale-archive.patch+21−24
This diff is too big to show here.
pkgs/development/libraries/glibmm/2.68.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/glibmm/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/glm/default.nix−5
This diff is too big to show here.
pkgs/development/libraries/globalplatform/default.nix+21
This diff is too big to show here.
pkgs/development/libraries/globalplatform/gppcscconnectionplugin.nix+21
This diff is too big to show here.
pkgs/development/libraries/glog/default.nix+14−5
This diff is too big to show here.
pkgs/development/libraries/gmp/6.x.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/gnutls-kdh/3.5.nix+12
This diff is too big to show here.
pkgs/development/libraries/gnutls-kdh/generic.nix+95
This diff is too big to show here.
pkgs/development/libraries/goffice/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/goocanvas/2.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/graphene-hardened-malloc/default.nix+8−15
This diff is too big to show here.
pkgs/development/libraries/graphene/0001-meson-add-options-for-tests-installation-dirs.patch+59−13
This diff is too big to show here.
pkgs/development/libraries/graphene/default.nix+3−14
This diff is too big to show here.
pkgs/development/libraries/grpc/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gsettings-desktop-schemas/default.nix+3−9
This diff is too big to show here.
pkgs/development/libraries/gspell/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/bad/default.nix+3−5
This diff is too big to show here.
pkgs/development/libraries/gstreamer/base/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/core/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/devtools/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/ges/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/good/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/libav/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/rtsp-server/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/ugly/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/vaapi/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gstreamer/viperfx/default.nix−41
This diff is too big to show here.
pkgs/development/libraries/gtk-frdp/default.nix+5−3
This diff is too big to show here.
pkgs/development/libraries/gtk/4.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gtkmathview/default.nix+29
This diff is too big to show here.
pkgs/development/libraries/gtkmathview/gcc-4.3-build-fixes.patch+74
This diff is too big to show here.
pkgs/development/libraries/gtkmathview/gcc-4.4-build-fixes.patch+21
This diff is too big to show here.
pkgs/development/libraries/gtkmm/2.x.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/gtksourceview/5.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gusb/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gvfs/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/hivex/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/hspell/dicts.nix+4−4
This diff is too big to show here.
pkgs/development/libraries/htmlcxx/c++17.patch−24
This diff is too big to show here.
pkgs/development/libraries/htmlcxx/default.nix+4−7
This diff is too big to show here.
pkgs/development/libraries/http-parser/default.nix+2−9
This diff is too big to show here.
pkgs/development/libraries/hunspell/dictionaries.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/hwloc/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/hyperscan/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/igraph/default.nix+6−10
This diff is too big to show here.
pkgs/development/libraries/ijs/default.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/ilixi/default.nix+35
This diff is too big to show here.
pkgs/development/libraries/imath/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/inih/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/intel-media-driver/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/intel-media-sdk/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/isl/generic.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/jarowinkler-cpp/default.nix−41
This diff is too big to show here.
pkgs/development/libraries/java/commons/daemon/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/jcal/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/jellyfin-ffmpeg/default.nix−30
This diff is too big to show here.
pkgs/development/libraries/jsoncpp/default.nix+3−27
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/attica.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/baloo.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/bluez-qt.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/breeze-icons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/default.nix+5−4
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/extra-cmake-modules/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/fetch.sh+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/frameworkintegration.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kactivities-stats.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kactivities.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kapidox.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/karchive.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kauth/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kbookmarks.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcalendarcore.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcmutils/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcodecs.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcompletion.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kconfig.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kconfigwidgets/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcontacts.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcoreaddons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kcrash.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdav.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdbusaddons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdeclarative.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kded.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdelibs4support/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdesu/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdewebkit.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdnssd.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kdoctools/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kemoticons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kfilemetadata/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kglobalaccel.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kguiaddons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kholidays.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/khtml.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/ki18n.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kiconthemes/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kidletime.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kimageformats.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kinit/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kio/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kirigami2.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kitemmodels.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kitemviews.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kjobwidgets.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kjs.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kjsembed.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kmediaplayer.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/knewstuff/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/knotifications.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/knotifyconfig.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kpackage/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kparts.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kpeople.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kplotting.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kpty.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kquickcharts.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kross.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/krunner.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kservice/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/ktexteditor.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/ktextwidgets.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kunitconversion.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kwallet.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kwayland.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kwidgetsaddons.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kwindowsystem/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kxmlgui.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/kxmlrpcclient.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/modemmanager-qt.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/networkmanager-qt.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/oxygen-icons5.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/plasma-framework.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/prison.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/purpose.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/qqc2-desktop-style.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/solid.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/sonnet.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/srcs.nix+332−332
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/syndication.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/syntax-highlighting.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kde-frameworks/threadweaver.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kerberos/krb5.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/khronos-ocl-icd-loader/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/kpmcore/default.nix+18−10
This diff is too big to show here.
pkgs/development/libraries/languagemachines/frog.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/frogdata.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/libfolia.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/mbt.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/ticcutils.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/timbl.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/timblserver.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/ucto.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/languagemachines/uctodata.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/lasso/default.nix+9−35
This diff is too big to show here.
pkgs/development/libraries/leatherman/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/leveldb/default.nix+5−1
This diff is too big to show here.
pkgs/development/libraries/libadwaita/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libappindicator/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libarchive/default.nix+32−74
This diff is too big to show here.
pkgs/development/libraries/libargon2/default.nix+1−3
This diff is too big to show here.
pkgs/development/libraries/libargs/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libavif/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libcbor/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libcef/default.nix+6−6
This diff is too big to show here.
pkgs/development/libraries/libcollectdclient/default.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/libdeltachat/darwin-dylib.patch
This diff is too big to show here.
pkgs/development/libraries/libdeltachat/default.nix+5−3
This diff is too big to show here.
pkgs/development/libraries/libdvbcsa/default.nix−22
This diff is too big to show here.
pkgs/development/libraries/libe57format/default.nix−9
This diff is too big to show here.
pkgs/development/libraries/libechonest/default.nix−3
This diff is too big to show here.
pkgs/development/libraries/libepoxy/default.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/libevdev/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libfido2/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libfive/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/libgcrypt/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libguestfs/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libhandy/default.nix+2−5
This diff is too big to show here.
pkgs/development/libraries/libinjection/default.nix+4−12
This diff is too big to show here.
pkgs/development/libraries/libinput/default.nix+7−17
This diff is too big to show here.
pkgs/development/libraries/libixp-hg/default.nix+27
This diff is too big to show here.
pkgs/development/libraries/libixp/default.nix−28
This diff is too big to show here.
pkgs/development/libraries/libjcat/default.nix+3−4
This diff is too big to show here.
pkgs/development/libraries/libjpeg-turbo/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libjson/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/libjxl/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/libkqueue/default.nix−23
This diff is too big to show here.
pkgs/development/libraries/liblastfm/default.nix−5
This diff is too big to show here.
pkgs/development/libraries/liblinphone/default.nix+9−23
This diff is too big to show here.
pkgs/development/libraries/liblinphone/use-normal-jsoncpp.patch−57
This diff is too big to show here.
pkgs/development/libraries/libmnl/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libnet/default.nix+6−14
This diff is too big to show here.
pkgs/development/libraries/libnet/fix-includes.patch+29
This diff is too big to show here.
pkgs/development/libraries/libnetfilter_conntrack/default.nix+3−11
This diff is too big to show here.
pkgs/development/libraries/libnfc/default.nix+7−10
This diff is too big to show here.
pkgs/development/libraries/libnfnetlink/Use-stdlib-uint-instead-of-u_int.patch+499
This diff is too big to show here.
pkgs/development/libraries/libnfnetlink/default.nix+6−2
This diff is too big to show here.
pkgs/development/libraries/libnftnl/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/libngspice/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libosmscout/default.nix+8−11
This diff is too big to show here.
pkgs/development/libraries/libotr/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/libotr/fix-regtest-client.patch−11
This diff is too big to show here.
pkgs/development/libraries/libowfat/default.nix−3
This diff is too big to show here.
pkgs/development/libraries/libpinyin/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/libpostal/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/libpqxx/6.nix+4−4
This diff is too big to show here.
pkgs/development/libraries/libpqxx/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libqalculate/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libraspberrypi/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/libraw/default.nix+4−4
This diff is too big to show here.
pkgs/development/libraries/libraw/unstable.nix−12
This diff is too big to show here.
pkgs/development/libraries/librealsense/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/libressl/fix-build-with-glibc.patch−92
This diff is too big to show here.
pkgs/development/libraries/libsecret/default.nix+10−25
This diff is too big to show here.
pkgs/development/libraries/libslirp/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libsoup/3.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libspf2/default.nix+1−9
This diff is too big to show here.
pkgs/development/libraries/libsystemtap/default.nix+6−9
This diff is too big to show here.
pkgs/development/libraries/libtiff/default.nix−30
This diff is too big to show here.
pkgs/development/libraries/libuldaq/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libunistring/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libunwind/default.nix+1−9
This diff is too big to show here.
pkgs/development/libraries/libusb1/default.nix+10−4
This diff is too big to show here.
pkgs/development/libraries/libuv/default.nix+2−3
This diff is too big to show here.
pkgs/development/libraries/libva/1.0.0.nix+37
This diff is too big to show here.
pkgs/development/libraries/libva/1.nix−50
This diff is too big to show here.
pkgs/development/libraries/libva/default.nix+4−4
This diff is too big to show here.
pkgs/development/libraries/libva/utils.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/libvdpau/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libviperfx/default.nix−30
This diff is too big to show here.
pkgs/development/libraries/libvirt/default.nix+1−7
This diff is too big to show here.
pkgs/development/libraries/libvmaf/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libwacom/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libwebsockets/default.nix+3−14
This diff is too big to show here.
pkgs/development/libraries/libxcrypt/default.nix+2−6
This diff is too big to show here.
pkgs/development/libraries/libxmlb/default.nix+12−4
This diff is too big to show here.
pkgs/development/libraries/libxsmm/default.nix+3−1
This diff is too big to show here.
pkgs/development/libraries/libyang/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/lime/default.nix+5−15
This diff is too big to show here.
pkgs/development/libraries/liquid-dsp/default.nix+5−4
This diff is too big to show here.
pkgs/development/libraries/log4shib/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/mapbox-gl-native/default.nix−5
This diff is too big to show here.
pkgs/development/libraries/mapbox-gl-qml/default.nix+7−4
This diff is too big to show here.
pkgs/development/libraries/maplibre-gl-native/default.nix−66
This diff is too big to show here.
pkgs/development/libraries/mediastreamer/default.nix+15−22
This diff is too big to show here.
pkgs/development/libraries/mediastreamer/msopenh264.nix+7−6
This diff is too big to show here.
pkgs/development/libraries/mesa/default.nix+5−8
This diff is too big to show here.
pkgs/development/libraries/mimetic/default.nix+2−8
This diff is too big to show here.
pkgs/development/libraries/mlt/qt-5.nix−1
This diff is too big to show here.
pkgs/development/libraries/mpich/default.nix+2−5
This diff is too big to show here.
pkgs/development/libraries/mustache-hpp/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/mvapich/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/netcdf-fortran/default.nix−3
This diff is too big to show here.
pkgs/development/libraries/netcdf/default.nix+18−6
This diff is too big to show here.
pkgs/development/libraries/nghttp2/default.nix+43−63
This diff is too big to show here.
pkgs/development/libraries/nghttp3/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/ngtcp2/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/nlopt/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/notcurses/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/nss/85_security_load_3.77+.patch−76
This diff is too big to show here.
pkgs/development/libraries/nss/default.nix+11−11
This diff is too big to show here.
pkgs/development/libraries/nss/esr.nix−4
This diff is too big to show here.
pkgs/development/libraries/nss/latest.nix−10
This diff is too big to show here.
pkgs/development/libraries/ntdb/default.nix+51
This diff is too big to show here.
pkgs/development/libraries/openal-soft/default.nix+8−14
This diff is too big to show here.
pkgs/development/libraries/openal-soft/search-out.patch+2−2
This diff is too big to show here.
pkgs/development/libraries/opendht/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/openfst/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/openjpeg/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/openmpi/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/openssl/1.0.2/darwin64-arm64.patch+12
This diff is too big to show here.
pkgs/development/libraries/openssl/1.0.2/nix-ssl-cert-file.patch+16
This diff is too big to show here.
pkgs/development/libraries/openssl/1.0.2/use-etc-ssl-certs-darwin.patch+13
This diff is too big to show here.
pkgs/development/libraries/openssl/1.0.2/use-etc-ssl-certs.patch+13
This diff is too big to show here.
pkgs/development/libraries/openssl/chacha.nix+82
This diff is too big to show here.
pkgs/development/libraries/openssl/default.nix+16−8
This diff is too big to show here.
pkgs/development/libraries/opensubdiv/default.nix+2−9
This diff is too big to show here.
pkgs/development/libraries/openvino/default.nix+1−3
This diff is too big to show here.
pkgs/development/libraries/ortp/default.nix+4−5
This diff is too big to show here.
pkgs/development/libraries/pcmsolver/default.nix+2−9
This diff is too big to show here.
pkgs/development/libraries/pcre/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/pcre2/default.nix+3−1
This diff is too big to show here.
pkgs/development/libraries/pdal/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/phash/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/physics/cernlib/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/physics/lhapdf/maintainer.sh+2−2
This diff is too big to show here.
pkgs/development/libraries/physics/lhapdf/pdf_sets.nix+129−431
This diff is too big to show here.
pkgs/development/libraries/physics/qcdnum/default.nix−4
This diff is too big to show here.
pkgs/development/libraries/pmdk/default.nix+2−4
This diff is too big to show here.
pkgs/development/libraries/pocketsphinx/default.nix+48
This diff is too big to show here.
pkgs/development/libraries/polkit-qt-1/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/polkit/default.nix−6
This diff is too big to show here.
pkgs/development/libraries/poppler/0.61-CVE-2019-9959.patch+20
This diff is too big to show here.
pkgs/development/libraries/poppler/0.61.nix+94
This diff is too big to show here.
pkgs/development/libraries/proj/default.nix+8−17
This diff is too big to show here.
pkgs/development/libraries/protobuf/2.5.nix+10
This diff is too big to show here.
pkgs/development/libraries/protobuf/generic.nix+61
This diff is too big to show here.
pkgs/development/libraries/protolock/default.nix+2
This diff is too big to show here.
pkgs/development/libraries/ptex/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/qca-qt5/2.3.2.nix−30
This diff is too big to show here.
pkgs/development/libraries/qca-qt5/default.nix+10−5
This diff is too big to show here.
pkgs/development/libraries/qrupdate/default.nix+6−8
This diff is too big to show here.
pkgs/development/libraries/qt-5/5.12/default.nix+1−9
This diff is too big to show here.
pkgs/development/libraries/qt-5/5.14/default.nix+2−8
This diff is too big to show here.
pkgs/development/libraries/qt-5/5.14/qtwayland-libdrm-build.patch+56
This diff is too big to show here.
pkgs/development/libraries/qt-5/5.15/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/qt-5/5.15/srcs-generated.json+63−63
This diff is too big to show here.
pkgs/development/libraries/qt-5/modules/qtbase.nix+5−9
This diff is too big to show here.
pkgs/development/libraries/qt-5/modules/qtmultimedia.nix+2−3
This diff is too big to show here.
pkgs/development/libraries/qt-5/modules/qtwayland-app_id.patch−36
This diff is too big to show here.
pkgs/development/libraries/qt-5/modules/qtwayland.nix−6
This diff is too big to show here.
pkgs/development/libraries/qt-5/modules/qtwebengine.nix+6−22
This diff is too big to show here.
pkgs/development/libraries/qt-5/qtModule.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/qtutilities/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/quictls/default.nix+8−3
This diff is too big to show here.
pkgs/development/libraries/qwt/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/qxt/default.nix+34
This diff is too big to show here.
pkgs/development/libraries/rapidcheck/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/rapidfuzz-cpp/default.nix−41
This diff is too big to show here.
pkgs/development/libraries/re2/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/recastnavigation/default.nix+1−7
This diff is too big to show here.
pkgs/development/libraries/redis-plus-plus/default.nix−38
This diff is too big to show here.
pkgs/development/libraries/rlottie/default.nix+1−16
This diff is too big to show here.
pkgs/development/libraries/robin-map/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/rocclr/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/rocm-comgr/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/rocm-device-libs/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/rocm-runtime/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/rocm-thunk/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/s2n-tls/default.nix−3
This diff is too big to show here.
pkgs/development/libraries/science/astronomy/indilib/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/science/astronomy/wcslib/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/science/biology/htslib/default.nix+2−18
This diff is too big to show here.
pkgs/development/libraries/science/math/blis/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/science/math/caffe2/default.nix+147
This diff is too big to show here.
pkgs/development/libraries/science/math/caffe2/fix_compilation_on_gcc7.patch+46
This diff is too big to show here.
pkgs/development/libraries/science/math/caffe2/update_clang_cvtsh_bugfix.patch+55
This diff is too big to show here.
pkgs/development/libraries/science/math/cudnn/default.nix+118
This diff is too big to show here.
pkgs/development/libraries/science/math/cudnn/extension.nix−116
This diff is too big to show here.
pkgs/development/libraries/science/math/cudnn/generic.nix+43−62
This diff is too big to show here.
pkgs/development/libraries/science/math/cutensor/default.nix+49
This diff is too big to show here.
pkgs/development/libraries/science/math/cutensor/generic.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/science/math/fenics/default.nix+20−12
This diff is too big to show here.
pkgs/development/libraries/science/math/liblapack/default.nix+11−2
This diff is too big to show here.
pkgs/development/libraries/science/math/libtorch/test/default.nix+2−3
This diff is too big to show here.
pkgs/development/libraries/science/math/magma/default.nix+20−7
This diff is too big to show here.
pkgs/development/libraries/science/math/nccl/default.nix+2−6
This diff is too big to show here.
pkgs/development/libraries/science/math/petsc/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/science/math/scalapack/default.nix+1−8
This diff is too big to show here.
pkgs/development/libraries/science/math/tensorflow/bin.nix+1−4
This diff is too big to show here.
pkgs/development/libraries/science/math/zn_poly/default.nix+14−4
This diff is too big to show here.
pkgs/development/libraries/seasocks/default.nix+1−7
This diff is too big to show here.
pkgs/development/libraries/simgear/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/simpleitk/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/skalibs/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/slang/default.nix−7
This diff is too big to show here.
pkgs/development/libraries/smesh/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/snack/default.nix+36
This diff is too big to show here.
pkgs/development/libraries/soci/bc-soci.nix−53
This diff is too big to show here.
pkgs/development/libraries/soci/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/spdlog/default.nix+3−7
This diff is too big to show here.
pkgs/development/libraries/sphinxbase/default.nix+40
This diff is too big to show here.
pkgs/development/libraries/spirv-headers/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/sqlite/default.nix+2−4
This diff is too big to show here.
pkgs/development/libraries/sqlite/tools.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/sundials/default.nix−13
This diff is too big to show here.
pkgs/development/libraries/symengine/default.nix−5
This diff is too big to show here.
pkgs/development/libraries/tachyon/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/talloc/default.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/taskflow/default.nix−50
This diff is too big to show here.
pkgs/development/libraries/taskflow/unvendor-doctest.patch−21
This diff is too big to show here.
pkgs/development/libraries/tdlib/default.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/template-glib/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/tomlc99/default.nix−30
This diff is too big to show here.
pkgs/development/libraries/tomlcpp/0001-missing-headers.diff−15
This diff is too big to show here.
pkgs/development/libraries/tomlcpp/default.nix−35
This diff is too big to show here.
pkgs/development/libraries/tpm2-tss/default.nix+3−7
This diff is too big to show here.
pkgs/development/libraries/umockdev/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/unixODBCDrivers/default.nix+3−46
This diff is too big to show here.
pkgs/development/libraries/utmps/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/valhalla/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/vapoursynth/default.nix+7−4
This diff is too big to show here.
pkgs/development/libraries/vigra/default.nix+15−3
This diff is too big to show here.
pkgs/development/libraries/vulkan-headers/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/vulkan-loader/default.nix+3−6
This diff is too big to show here.
pkgs/development/libraries/vulkan-loader/fix-pkgconfig.patch−14
This diff is too big to show here.
pkgs/development/libraries/wasilibc/default.nix+14−19
This diff is too big to show here.
pkgs/development/libraries/waylandpp/default.nix+3−4
This diff is too big to show here.
pkgs/development/libraries/webkitgtk/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/wolfssl/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/wxwidgets/wxGTK28.nix+2
This diff is too big to show here.
pkgs/development/libraries/wxwidgets/wxGTK29.nix+1
This diff is too big to show here.
pkgs/development/libraries/wxwidgets/wxGTK30.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/wxwidgets/wxGTK31.nix+5−3
This diff is too big to show here.
pkgs/development/libraries/wxwidgets/wxmac30.nix+5−7
This diff is too big to show here.
pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/xdg-desktop-portal-gtk/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/xdg-desktop-portal/default.nix+12−18
This diff is too big to show here.
pkgs/development/libraries/xdg-desktop-portal/fix-paths.patch+13
This diff is too big to show here.
pkgs/development/libraries/xgboost/default.nix+5−5
This diff is too big to show here.
pkgs/development/libraries/zeroc-ice/3.6.nix+59
This diff is too big to show here.
pkgs/development/libraries/zeroc-ice/default.nix−13
This diff is too big to show here.
pkgs/development/libraries/zeroc-ice/uninitialized-variable-warning.patch+20
This diff is too big to show here.
pkgs/development/libraries/zlib/CVE-2018-25032-1.patch−346
This diff is too big to show here.
pkgs/development/libraries/zlib/CVE-2018-25032-2.patch−27
This diff is too big to show here.
pkgs/development/libraries/zlib/default.nix+4−6
This diff is too big to show here.
pkgs/development/libraries/zlib/disable-cygwin-widechar.patch+13
This diff is too big to show here.
pkgs/development/libraries/zlib/fix-configure-issue-cross.patch−24
This diff is too big to show here.
pkgs/development/lisp-modules-new/.gitattributes−1
This diff is too big to show here.
pkgs/development/lisp-modules-new/.gitignore−3
This diff is too big to show here.
pkgs/development/lisp-modules-new/doc/api.md−197
This diff is too big to show here.
pkgs/development/lisp-modules-new/doc/nix-cl.md−98
This diff is too big to show here.
pkgs/development/lisp-modules-new/doc/quicklisp.md−54
This diff is too big to show here.
pkgs/development/lisp-modules-new/doc/quirks.md−5
This diff is too big to show here.
pkgs/development/lisp-modules-new/examples/abcl-package-set.nix−24
This diff is too big to show here.
pkgs/development/lisp-modules-new/examples/abcl-with-packages.nix−23
This diff is too big to show here.
pkgs/development/lisp-modules-new/examples/bordeaux-threads.nix−43
This diff is too big to show here.
pkgs/development/lisp-modules-new/examples/sbcl-with-bt.nix−31
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/api.lisp−18
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/database/sqlite.lisp−134
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/init.sql−41
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/main.lisp−40
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/nix.lisp−81
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/org.lispbuilds.nix.asd−24
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/repository/quicklisp.lisp−199
This diff is too big to show here.
pkgs/development/lisp-modules-new/import/util.lisp−16
This diff is too big to show here.
pkgs/development/lisp-modules-new/imported.nix−65675
This diff is too big to show here.
pkgs/development/lisp-modules-new/lisp-packages.nix−432
This diff is too big to show here.
pkgs/development/lisp-modules-new/old-make-wrapper.sh−155
This diff is too big to show here.
pkgs/development/lisp-modules-new/packages.nix−369
This diff is too big to show here.
pkgs/development/lisp-modules-new/patches/swank-pure-paths.patch−28
This diff is too big to show here.
pkgs/development/lisp-modules-new/ql-import.lisp−6
This diff is too big to show here.
pkgs/development/lisp-modules-new/ql.nix−140
This diff is too big to show here.
pkgs/development/lisp-modules-new/readme.md−34
This diff is too big to show here.
pkgs/development/lisp-modules-new/shell.nix−7
This diff is too big to show here.
pkgs/development/lisp-modules-new/test/lispPackagesToTest.txt−395
This diff is too big to show here.
pkgs/development/lisp-modules-new/test/test.lisp−94
This diff is too big to show here.
pkgs/development/lua-modules/generated-packages.nix+9−42
This diff is too big to show here.
pkgs/development/lua-modules/luaexpat.patch+36
This diff is too big to show here.
pkgs/development/lua-modules/overrides.nix+7−8
This diff is too big to show here.
pkgs/development/misc/breakpad/default.nix−5
This diff is too big to show here.
pkgs/development/misc/datafusion/default.nix−34
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/ekg-core.nix+9−8
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/ekg-json.nix+3−6
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/graphql-engine.nix+50−70
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/graphql-parser.nix+12−16
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/kriti-lang.nix−41
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/pg-client.nix+17−18
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/pool.nix+1−1
This diff is too big to show here.
pkgs/development/misc/haskell/hasura/update.sh+1−11
This diff is too big to show here.
pkgs/development/misc/msp430/mspds/binary.nix+1−2
This diff is too big to show here.
pkgs/development/misc/resholve/README.md+58−111
This diff is too big to show here.
pkgs/development/misc/resholve/default.nix+37−5
This diff is too big to show here.
pkgs/development/misc/resholve/resholve-package.nix+37
This diff is too big to show here.
pkgs/development/misc/resholve/resholve-utils.nix+20−149
This diff is too big to show here.
pkgs/development/misc/resholve/resholve.nix+6−7
This diff is too big to show here.
pkgs/development/misc/resholve/source.nix+2−2
This diff is too big to show here.
pkgs/development/misc/resholve/test.nix+57−18
This diff is too big to show here.
pkgs/development/mobile/androidenv/build-tools.nix+2−2
This diff is too big to show here.
pkgs/development/mobile/androidenv/platform-tools.nix+2−1
This diff is too big to show here.
pkgs/development/nim-packages/tempfile/default.nix−1
This diff is too big to show here.
pkgs/development/node-packages/composition.nix+1−1
This diff is too big to show here.
pkgs/development/node-packages/default.nix+42−24
This diff is too big to show here.
pkgs/development/node-packages/node-env.nix+11−21
This diff is too big to show here.
pkgs/development/node-packages/node-packages.json+2−4
This diff is too big to show here.
pkgs/development/node-packages/node-packages.nix+6986−7383
This diff is too big to show here.
pkgs/development/ocaml-modules/alcotest/default.nix+4−6
This diff is too big to show here.
pkgs/development/ocaml-modules/asn1-combinators/default.nix+3−1
This diff is too big to show here.
pkgs/development/ocaml-modules/atd/default.nix+14−6
This diff is too big to show here.
pkgs/development/ocaml-modules/atdgen/codec-runtime.nix−18
This diff is too big to show here.
pkgs/development/ocaml-modules/atdgen/default.nix+17−8
This diff is too big to show here.
pkgs/development/ocaml-modules/atdgen/runtime.nix−15
This diff is too big to show here.
pkgs/development/ocaml-modules/bap/default.nix+4−5
This diff is too big to show here.
pkgs/development/ocaml-modules/batteries/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/bitstring/ppx.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/bitv/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/bjack/default.nix−25
This diff is too big to show here.
pkgs/development/ocaml-modules/brisk-reconciler/default.nix−33
This diff is too big to show here.
pkgs/development/ocaml-modules/bz2/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/camlp-streams/default.nix−20
This diff is too big to show here.
pkgs/development/ocaml-modules/camlpdf/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/caqti/default.nix+4−9
This diff is too big to show here.
pkgs/development/ocaml-modules/cmdliner/default.nix+23−15
This diff is too big to show here.
pkgs/development/ocaml-modules/coin/default.nix+9−6
This diff is too big to show here.
pkgs/development/ocaml-modules/cpdf/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/cstruct/lwt.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/cstruct/ppx.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/cstruct/sexp.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/cstruct/unix.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/csv/lwt.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ctypes/default.nix+3−3
This diff is too big to show here.
pkgs/development/ocaml-modules/dssi/default.nix−25
This diff is too big to show here.
pkgs/development/ocaml-modules/dune-action-plugin/default.nix−4
This diff is too big to show here.
pkgs/development/ocaml-modules/dune-glob/default.nix−4
This diff is too big to show here.
pkgs/development/ocaml-modules/dune-private-libs/default.nix−4
This diff is too big to show here.
pkgs/development/ocaml-modules/dune-rpc/default.nix−23
This diff is too big to show here.
pkgs/development/ocaml-modules/dune-site/default.nix−4
This diff is too big to show here.
pkgs/development/ocaml-modules/eliom/default.nix+3−9
This diff is too big to show here.
pkgs/development/ocaml-modules/erm_xml/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/expat/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/farfadet/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ffmpeg/base.nix+2−2
This diff is too big to show here.
pkgs/development/ocaml-modules/fiber/default.nix−23
This diff is too big to show here.
pkgs/development/ocaml-modules/flex/default.nix−22
This diff is too big to show here.
pkgs/development/ocaml-modules/fmt/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/fpath/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/frontc/default.nix+25−8
This diff is too big to show here.
pkgs/development/ocaml-modules/gen_js_api/default.nix−41
This diff is too big to show here.
pkgs/development/ocaml-modules/gen_js_api/ojs.nix−21
This diff is too big to show here.
pkgs/development/ocaml-modules/hacl-star/raw.nix−3
This diff is too big to show here.
pkgs/development/ocaml-modules/javalib/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/lablgl/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/lablgtk-extras/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ladspa/default.nix−25
This diff is too big to show here.
pkgs/development/ocaml-modules/lastfm/default.nix−32
This diff is too big to show here.
pkgs/development/ocaml-modules/llvm/default.nix+2−2
This diff is too big to show here.
pkgs/development/ocaml-modules/logs/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/lua-ml/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/lwt/default.nix+3−3
This diff is too big to show here.
pkgs/development/ocaml-modules/nocrypto/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/notty/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ocaml-lsp/default.nix+8−7
This diff is too big to show here.
pkgs/development/ocaml-modules/ocaml-lsp/jsonrpc.nix+4−8
This diff is too big to show here.
pkgs/development/ocaml-modules/ocaml-lsp/lsp.nix+5−25
This diff is too big to show here.
pkgs/development/ocaml-modules/ocamlformat-rpc-lib/default.nix+3−15
This diff is too big to show here.
pkgs/development/ocaml-modules/ocp-ocamlres/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsigen-deriving/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsigen-ppx-rpc/default.nix−23
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsigen-server/default.nix+4−4
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsigen-start/default.nix+2−4
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsigen-toolkit/default.nix+2−2
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsipersist/default.nix−20
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsipersist/lib.nix−27
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsipersist/pgsql.nix−24
This diff is too big to show here.
pkgs/development/ocaml-modules/ocsipersist/sqlite.nix−23
This diff is too big to show here.
pkgs/development/ocaml-modules/phylogenetics/default.nix+4−2
This diff is too big to show here.
pkgs/development/ocaml-modules/ppxlib/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/ptime/default.nix+5−5
This diff is too big to show here.
pkgs/development/ocaml-modules/pure-splitmix/default.nix−22
This diff is too big to show here.
pkgs/development/ocaml-modules/reactivedata/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/rebez/default.nix−22
This diff is too big to show here.
pkgs/development/ocaml-modules/reperf/default.nix−41
This diff is too big to show here.
pkgs/development/ocaml-modules/samplerate/default.nix−25
This diff is too big to show here.
pkgs/development/ocaml-modules/sawja/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/sedlex/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/sosa/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/sqlite3EZ/default.nix+36
This diff is too big to show here.
pkgs/development/ocaml-modules/stdune/default.nix+2−6
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/010-PtGRANAD-test-helpers.nix+39
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/011-PtHangz2-test-helpers.nix+35
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/base-test-helpers.nix+32
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/base.nix+37
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/clic.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/client-010-PtGRANAD.nix+38
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/client-011-PtHangz2.nix+44
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/client-base.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/context.nix+34
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/crypto.nix+42
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/embedded-protocol-010-PtGRANAD.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/embedded-protocol-demo-noops.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/error-monad.nix+35
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/event-logging-test-helpers.nix+25
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/event-logging.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/hacl-glue-unix.nix+26
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/hacl-glue.nix+17
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/legacy-store.nix+42
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/lmdb.nix+51
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/lwt-result-stdlib.nix+31
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/micheline.nix+32
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/mockup-proxy.nix+27
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/mockup-registration.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/p2p-services.nix+19
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/p2p.nix+38
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-010-PtGRANAD-parameters.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-010-PtGRANAD.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-011-PtHangz2-parameters.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-011-PtHangz2.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-alpha.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-compiler.nix+34
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-demo-noops.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-environment-packer.nix+18
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-environment-sigs.nix+42
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-environment-structs.nix+25
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-environment.nix+43
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-plugin-010-PtGRANAD.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-plugin-011-PtHangz2.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-plugin-alpha.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/protocol-updater.nix+26
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/proxy.nix+36
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/requester.nix+34
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/rpc-http-client-unix.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/rpc-http-client.nix+23
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/rpc-http.nix+25
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/rpc.nix+25
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/sapling.nix+35
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/shell-context.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/shell-services-test-helpers.nix+32
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/shell-services.nix+30
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/shell.nix+44
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/signer-backends.nix+30
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/signer-services.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/stdlib-unix.nix+33
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/stdlib.nix+64
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/store.nix+50
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/test-helpers.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/validation.nix+28
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/version.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/tezos/workers.nix+21
This diff is too big to show here.
pkgs/development/ocaml-modules/toml/default.nix+4−2
This diff is too big to show here.
pkgs/development/ocaml-modules/torch/default.nix−1
This diff is too big to show here.
pkgs/development/ocaml-modules/tsdl/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/type_conv/108.08.00.nix+31
This diff is too big to show here.
pkgs/development/ocaml-modules/type_conv/109.60.01.nix+32
This diff is too big to show here.
pkgs/development/ocaml-modules/type_conv/112.01.01.nix+26
This diff is too big to show here.
pkgs/development/ocaml-modules/uri/sexp.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/uucp/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/uunf/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/uuuu/default.nix+9−6
This diff is too big to show here.
pkgs/development/ocaml-modules/vg/default.nix+2−2
This diff is too big to show here.
pkgs/development/ocaml-modules/wasm/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/xdg/default.nix−17
This diff is too big to show here.
pkgs/development/ocaml-modules/xmlm/default.nix+1−1
This diff is too big to show here.
pkgs/development/ocaml-modules/xmlplaylist/default.nix−25
This diff is too big to show here.
pkgs/development/ocaml-modules/z3/default.nix+6−1
This diff is too big to show here.
pkgs/development/ocaml-modules/z3/ocamlfind.patch+13
This diff is too big to show here.
pkgs/development/ocaml-modules/zarith/default.nix+1−1
This diff is too big to show here.
pkgs/development/octave-modules/octproj/default.nix−1
This diff is too big to show here.
pkgs/development/php-packages/composer/default.nix+2−2
This diff is too big to show here.
pkgs/development/php-packages/datadog_trace/default.nix−22
This diff is too big to show here.
pkgs/development/php-packages/openswoole/default.nix−22
This diff is too big to show here.
pkgs/development/php-packages/pdepend/default.nix−41
This diff is too big to show here.
pkgs/development/php-packages/phpstan/default.nix+2−2
This diff is too big to show here.
pkgs/development/php-packages/xdebug/default.nix+2−2
This diff is too big to show here.
pkgs/development/pure-modules/audio/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/avahi/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/csv/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/doc/default.nix+23
This diff is too big to show here.
pkgs/development/pure-modules/fastcgi/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/faust/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/ffi/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/gen/default.nix+26
This diff is too big to show here.
pkgs/development/pure-modules/generic-setup-hook.sh+2
This diff is too big to show here.
pkgs/development/pure-modules/gl/default.nix+27
This diff is too big to show here.
pkgs/development/pure-modules/glpk/default.nix+40
This diff is too big to show here.
pkgs/development/pure-modules/gplot/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/gsl/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/gtk/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/liblo/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/lilv/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/lv2/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/midi/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/mpfr/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/octave/default.nix+26
This diff is too big to show here.
pkgs/development/pure-modules/odbc/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/pandoc/default.nix+28
This diff is too big to show here.
pkgs/development/pure-modules/rational/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/readline/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/sockets/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/sql3/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/stldict/default.nix+30
This diff is too big to show here.
pkgs/development/pure-modules/stllib/default.nix+30
This diff is too big to show here.
pkgs/development/pure-modules/tk/default.nix+24
This diff is too big to show here.
pkgs/development/pure-modules/xml/default.nix+24
This diff is too big to show here.
pkgs/development/python-modules/Cython/default.nix+9−2
This diff is too big to show here.
pkgs/development/python-modules/Mako/default.nix+4−31
This diff is too big to show here.
pkgs/development/python-modules/Nikola/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/Theano/default.nix+4−10
This diff is too big to show here.
pkgs/development/python-modules/XlsxWriter/default.nix+13−25
This diff is too big to show here.
pkgs/development/python-modules/adafruit-io/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/adafruit-platformdetect/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/adb-shell/default.nix+3−12
This diff is too big to show here.
pkgs/development/python-modules/adblock/default.nix+4−4
This diff is too big to show here.
pkgs/development/python-modules/add-trailing-comma/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/advocate/default.nix−45
This diff is too big to show here.
pkgs/development/python-modules/aenum/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aesara/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aesedb/default.nix−45
This diff is too big to show here.
pkgs/development/python-modules/afdko/default.nix+9−5
This diff is too big to show here.
pkgs/development/python-modules/afsapi/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/ailment/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aio-geojson-generic-client/default.nix−51
This diff is too big to show here.
pkgs/development/python-modules/aio-georss-client/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aio-georss-gdacs/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioairzone/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aiobotocore/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioconsole/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/aiodiscover/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioftp/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioguardian/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioh2/default.nix+24
This diff is too big to show here.
pkgs/development/python-modules/aiohomekit/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aiohttp-apispec/default.nix+7−2
This diff is too big to show here.
pkgs/development/python-modules/aiohttp-remotes/default.nix−6
This diff is too big to show here.
pkgs/development/python-modules/aiohttp-swagger/default.nix+2−10
This diff is too big to show here.
pkgs/development/python-modules/aiohttp/default.nix−4
This diff is too big to show here.
pkgs/development/python-modules/aiolifx/default.nix+5−8
This diff is too big to show here.
pkgs/development/python-modules/aiomysql/default.nix+27−17
This diff is too big to show here.
pkgs/development/python-modules/aionotify/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/aiooncue/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aioqsw/default.nix−40
This diff is too big to show here.
pkgs/development/python-modules/aioshelly/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aioslimproto/default.nix−41
This diff is too big to show here.
pkgs/development/python-modules/aioswitcher/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aiotractive/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/alembic/default.nix+6−2
This diff is too big to show here.
pkgs/development/python-modules/amazon-ion/default.nix+9−27
This diff is too big to show here.
pkgs/development/python-modules/amberelectric/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/amply/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/amqp/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/androidtv/default.nix+4−12
This diff is too big to show here.
pkgs/development/python-modules/angr/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/angrop/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/ansi/default.nix+8−20
This diff is too big to show here.
pkgs/development/python-modules/ansi2html/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/ansible-compat/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ansible-doctor/default.nix+25−32
This diff is too big to show here.
pkgs/development/python-modules/ansible-later/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/ansible-lint/default.nix+4
This diff is too big to show here.
pkgs/development/python-modules/ansible-runner/default.nix+3−8
This diff is too big to show here.
pkgs/development/python-modules/ansible/base.nix+88
This diff is too big to show here.
pkgs/development/python-modules/ansible/collections.nix+8−15
This diff is too big to show here.
pkgs/development/python-modules/ansible/core.nix+14−5
This diff is too big to show here.
pkgs/development/python-modules/ansible/legacy.nix+55
This diff is too big to show here.
pkgs/development/python-modules/anybadge/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/anyconfig/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/anyio/default.nix+2−11
This diff is too big to show here.
pkgs/development/python-modules/apache-airflow/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/apache-beam/default.nix+19−16
This diff is too big to show here.
pkgs/development/python-modules/apache-beam/fix-cython.patch+41
This diff is too big to show here.
pkgs/development/python-modules/apache-beam/relax-deps.patch+20
This diff is too big to show here.
pkgs/development/python-modules/apispec/default.nix+9−13
This diff is too big to show here.
pkgs/development/python-modules/aplpy/default.nix+25−5
This diff is too big to show here.
pkgs/development/python-modules/apprise/default.nix+4−4
This diff is too big to show here.
pkgs/development/python-modules/approvaltests/default.nix+11−33
This diff is too big to show here.
pkgs/development/python-modules/appthreat-vulnerability-db/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/aprslib/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/apsw/default.nix+25−10
This diff is too big to show here.
pkgs/development/python-modules/apycula/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/archinfo/default.nix+14−4
This diff is too big to show here.
pkgs/development/python-modules/arris-tg2492lg/default.nix−43
This diff is too big to show here.
pkgs/development/python-modules/arrow/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/asana/default.nix+16−26
This diff is too big to show here.
pkgs/development/python-modules/asciimatics/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/asdf-standard/default.nix−43
This diff is too big to show here.
pkgs/development/python-modules/asdf-transform-schemas/default.nix−46
This diff is too big to show here.
pkgs/development/python-modules/asdf/default.nix+7−18
This diff is too big to show here.
pkgs/development/python-modules/asgiref/default.nix+4−14
This diff is too big to show here.
pkgs/development/python-modules/asn1crypto/default.nix+7−13
This diff is too big to show here.
pkgs/development/python-modules/astroid/default.nix+2−6
This diff is too big to show here.
pkgs/development/python-modules/astropy-extension-helpers/default.nix+4−15
This diff is too big to show here.
pkgs/development/python-modules/astropy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/astroquery/default.nix+8−30
This diff is too big to show here.
pkgs/development/python-modules/asttokens/default.nix+1−6
This diff is too big to show here.
pkgs/development/python-modules/async-lru/default.nix−4
This diff is too big to show here.
pkgs/development/python-modules/async-upnp-client/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/async_generator/default.nix+2
This diff is too big to show here.
pkgs/development/python-modules/asyncssh/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/atlassian-python-api/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/atom/default.nix+9−35
This diff is too big to show here.
pkgs/development/python-modules/aurorapy/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/authcaptureproxy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/authheaders/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/autobahn/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/autograd/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/av/default.nix+16−130
This diff is too big to show here.
pkgs/development/python-modules/awesomeversion/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/aws-adfs/default.nix+25−33
This diff is too big to show here.
pkgs/development/python-modules/aws-lambda-builders/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/awscrt/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/awsiotpythonsdk/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/azure-common/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-core/default.nix+3−5
This diff is too big to show here.
pkgs/development/python-modules/azure-eventgrid/default.nix+3−10
This diff is too big to show here.
pkgs/development/python-modules/azure-identity/default.nix+13−15
This diff is too big to show here.
pkgs/development/python-modules/azure-keyvault-keys/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-containerservice/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-core/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-datafactory/default.nix+6−6
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-kusto/azure-mgmt-apimanagement/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-loganalytics/default.nix+2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-msi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-reservations/default.nix+6−6
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-servicelinker/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-storage/default.nix+6−12
This diff is too big to show here.
pkgs/development/python-modules/azure-mgmt-trafficmanager/default.nix+2−4
This diff is too big to show here.
pkgs/development/python-modules/azure-servicebus/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/azure-synapse-artifacts/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/backports-zoneinfo/default.nix−3
This diff is too big to show here.
pkgs/development/python-modules/basemap/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bc-python-hcl2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bcrypt/default.nix+8−33
This diff is too big to show here.
pkgs/development/python-modules/beautifulsoup4/default.nix+3−9
This diff is too big to show here.
pkgs/development/python-modules/beautifultable/default.nix+1−6
This diff is too big to show here.
pkgs/development/python-modules/behave/default.nix+4−4
This diff is too big to show here.
pkgs/development/python-modules/bimmer-connected/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bip_utils/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bitarray/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bitbox02/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bitcoin-price-api/default.nix+24
This diff is too big to show here.
pkgs/development/python-modules/bitstruct/default.nix+4−15
This diff is too big to show here.
pkgs/development/python-modules/bjoern/default.nix+5−10
This diff is too big to show here.
pkgs/development/python-modules/black/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bleach/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bleak/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/blessed/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/blinker/default.nix+3−8
This diff is too big to show here.
pkgs/development/python-modules/blspy/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/boltztrap2/default.nix+13−26
This diff is too big to show here.
pkgs/development/python-modules/boschshcpy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/boto3/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/botocore/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/bottleneck/default.nix+16−31
This diff is too big to show here.
pkgs/development/python-modules/boxx/default.nix+4−11
This diff is too big to show here.
pkgs/development/python-modules/bpython/default.nix+2−16
This diff is too big to show here.
pkgs/development/python-modules/breezy/default.nix+5−20
This diff is too big to show here.
pkgs/development/python-modules/brother/default.nix+15−16
This diff is too big to show here.
pkgs/development/python-modules/browser-cookie3/default.nix+5−6
This diff is too big to show here.
pkgs/development/python-modules/bsblan/default.nix+16−24
This diff is too big to show here.
pkgs/development/python-modules/build/default.nix+2
This diff is too big to show here.
pkgs/development/python-modules/buildbot/default.nix+2−5
This diff is too big to show here.
pkgs/development/python-modules/buildbot/pkg.nix+1−1
This diff is too big to show here.
pkgs/development/python-modules/buildbot/plugins.nix+5−5
This diff is too big to show here.
pkgs/development/python-modules/buildbot/worker.nix+7−41
This diff is too big to show here.
pkgs/development/python-modules/caldav/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/can/default.nix+4−9
This diff is too big to show here.
pkgs/development/python-modules/canonicaljson/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/casbin/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/cattrs/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/cbor2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/celery/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/cert-chain-resolver/default.nix+7−22
This diff is too big to show here.
pkgs/development/python-modules/certbot/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/certomancer/default.nix−71
This diff is too big to show here.
pkgs/development/python-modules/cffi/default.nix+4−5
This diff is too big to show here.
pkgs/development/python-modules/chainer/default.nix+2−4
This diff is too big to show here.
pkgs/development/python-modules/chalice/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/cherrypy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/chex/default.nix+5−3
This diff is too big to show here.
pkgs/development/python-modules/chiavdf/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ciscoconfparse/default.nix−1
This diff is too big to show here.
pkgs/development/python-modules/ckcc-protocol/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/claripy/default.nix+5−7
This diff is too big to show here.
pkgs/development/python-modules/cle/default.nix+3−5
This diff is too big to show here.
pkgs/development/python-modules/click-log/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/click/default.nix+8−3
This diff is too big to show here.
pkgs/development/python-modules/clickhouse-driver/default.nix+2
This diff is too big to show here.
pkgs/development/python-modules/clize/default.nix+9−26
This diff is too big to show here.
pkgs/development/python-modules/clldutils/default.nix+2−8
This diff is too big to show here.
pkgs/development/python-modules/cloudflare/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/cma/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/cmd2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/codepy/default.nix−35
This diff is too big to show here.
pkgs/development/python-modules/collections-extended/default.nix+5−10
This diff is too big to show here.
pkgs/development/python-modules/commoncode/default.nix+3−8
This diff is too big to show here.
pkgs/development/python-modules/connexion/default.nix+16−10
This diff is too big to show here.
pkgs/development/python-modules/construct/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/contexttimer/default.nix−42
This diff is too big to show here.
pkgs/development/python-modules/convertdate/default.nix+7−10
This diff is too big to show here.
pkgs/development/python-modules/coqpit/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/coverage/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/cppy/default.nix+7−12
This diff is too big to show here.
pkgs/development/python-modules/cryptography/default.nix+26−24
This diff is too big to show here.
pkgs/development/python-modules/cryptography/vectors.nix+6−9
This diff is too big to show here.
pkgs/development/python-modules/crytic-compile/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/cssselect2/default.nix+2−8
This diff is too big to show here.
pkgs/development/python-modules/cupy/default.nix+4−13
This diff is too big to show here.
pkgs/development/python-modules/cx_freeze/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/cyclonedx-python-lib/default.nix+6−15
This diff is too big to show here.
pkgs/development/python-modules/cypherpunkpay/default.nix−97
This diff is too big to show here.
pkgs/development/python-modules/dask-mpi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dask-yarn/default.nix−47
This diff is too big to show here.
pkgs/development/python-modules/dask/default.nix+4−2
This diff is too big to show here.
pkgs/development/python-modules/databricks-connect/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/datadog/default.nix+2−8
This diff is too big to show here.
pkgs/development/python-modules/dataset/default.nix+5−11
This diff is too big to show here.
pkgs/development/python-modules/datasets/default.nix+7−20
This diff is too big to show here.
pkgs/development/python-modules/datasette/default.nix+12−12
This diff is too big to show here.
pkgs/development/python-modules/datashader/default.nix+1
This diff is too big to show here.
pkgs/development/python-modules/datatable/default.nix+9−3
This diff is too big to show here.
pkgs/development/python-modules/dateparser/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/db-dtypes/default.nix−39
This diff is too big to show here.
pkgs/development/python-modules/debtcollector/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/debugpy/default.nix+1
This diff is too big to show here.
pkgs/development/python-modules/deepdiff/default.nix+3−6
This diff is too big to show here.
pkgs/development/python-modules/deezer-python/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/deltachat/default.nix+3−7
This diff is too big to show here.
pkgs/development/python-modules/denonavr/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/detect-secrets/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/devito/default.nix−100
This diff is too big to show here.
pkgs/development/python-modules/devolo-home-control-api/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/devtools/default.nix−7
This diff is too big to show here.
pkgs/development/python-modules/dictpath/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/diff-cover/default.nix+2−4
This diff is too big to show here.
pkgs/development/python-modules/diskcache/default.nix+4
This diff is too big to show here.
pkgs/development/python-modules/distributed/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/distro/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django-allauth/default.nix+11−25
This diff is too big to show here.
pkgs/development/python-modules/django-appconf/default.nix−45
This diff is too big to show here.
pkgs/development/python-modules/django-hijack-admin/default.nix−3
This diff is too big to show here.
pkgs/development/python-modules/django-hijack/default.nix+22−22
This diff is too big to show here.
pkgs/development/python-modules/django-raster/default.nix+3−1
This diff is too big to show here.
pkgs/development/python-modules/django-statici18n/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django-taggit/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django-widget-tweaks/default.nix+9−32
This diff is too big to show here.
pkgs/development/python-modules/django/1.10-gis-libs.template.patch+24
This diff is too big to show here.
pkgs/development/python-modules/django/2.nix+39
This diff is too big to show here.
pkgs/development/python-modules/django/3.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django/4.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django_appconf/default.nix+35
This diff is too big to show here.
pkgs/development/python-modules/django_compressor/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django_contrib_comments/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/django_modelcluster/default.nix+9−27
This diff is too big to show here.
pkgs/development/python-modules/django_reversion/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dm-haiku/default.nix+3−10
This diff is too big to show here.
pkgs/development/python-modules/dm-sonnet/default.nix+91
This diff is too big to show here.
pkgs/development/python-modules/dnspython/default.nix+6−14
This diff is too big to show here.
pkgs/development/python-modules/doc8/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dockerfile-parse/default.nix+9−27
This diff is too big to show here.
pkgs/development/python-modules/docstring-parser/default.nix+11−25
This diff is too big to show here.
pkgs/development/python-modules/docutils/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/doit/default.nix+4−7
This diff is too big to show here.
pkgs/development/python-modules/dotmap/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dragonfly/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dropbox/default.nix+12−41
This diff is too big to show here.
pkgs/development/python-modules/duckdb-engine/default.nix−40
This diff is too big to show here.
pkgs/development/python-modules/dugong/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/dunamai/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/dungeon-eos/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/durus/default.nix−28
This diff is too big to show here.
pkgs/development/python-modules/dynalite-devices/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/eagle100/default.nix−37
This diff is too big to show here.
pkgs/development/python-modules/easyprocess/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/editables/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/elementpath/default.nix+4−4
This diff is too big to show here.
pkgs/development/python-modules/elkm1-lib/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/enaml/default.nix+3−6
This diff is too big to show here.
pkgs/development/python-modules/entrypoint2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/entrypoints/default.nix+12−17
This diff is too big to show here.
pkgs/development/python-modules/env-canada/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/envs/default.nix+11−15
This diff is too big to show here.
pkgs/development/python-modules/ephemeral-port-reserve/default.nix−42
This diff is too big to show here.
pkgs/development/python-modules/exceptiongroup/default.nix−39
This diff is too big to show here.
pkgs/development/python-modules/exchangelib/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/faker/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/fakeredis/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/falcon/default.nix+33−46
This diff is too big to show here.
pkgs/development/python-modules/faraday-agent-parameters-types/default.nix+1−6
This diff is too big to show here.
pkgs/development/python-modules/faraday-plugins/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/fastapi/default.nix+3−17
This diff is too big to show here.
pkgs/development/python-modules/fastavro/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/fastbencode/default.nix−26
This diff is too big to show here.
pkgs/development/python-modules/fastcore/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/fasteners/default.nix+24−11
This diff is too big to show here.
pkgs/development/python-modules/fastjsonschema/default.nix+14−3
This diff is too big to show here.
pkgs/development/python-modules/fastparquet/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ffcv/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/filelock/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/filetype/default.nix+6−26
This diff is too big to show here.
pkgs/development/python-modules/findpython/default.nix−53
This diff is too big to show here.
pkgs/development/python-modules/fints/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/fipy/default.nix−8
This diff is too big to show here.
pkgs/development/python-modules/fipy/gmsh.patch−182
This diff is too big to show here.
pkgs/development/python-modules/fitbit/default.nix+16−24
This diff is too big to show here.
pkgs/development/python-modules/fivem-api/default.nix−42
This diff is too big to show here.
pkgs/development/python-modules/flake8-blind-except/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/flake8-bugbear/default.nix+4−9
This diff is too big to show here.
pkgs/development/python-modules/flake8-debugger/default.nix+14−23
This diff is too big to show here.
pkgs/development/python-modules/flake8/default.nix+1−1
This diff is too big to show here.
pkgs/development/python-modules/flask-admin/default.nix−5
This diff is too big to show here.
pkgs/development/python-modules/flask-appbuilder/default.nix+13−4
This diff is too big to show here.
pkgs/development/python-modules/flask-bcrypt/default.nix+3−9
This diff is too big to show here.
pkgs/development/python-modules/flask-compress/default.nix+8−26
This diff is too big to show here.
pkgs/development/python-modules/flask-httpauth/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flask-jwt-extended/default.nix+10−31
This diff is too big to show here.
pkgs/development/python-modules/flask-login/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flask-paranoid/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flask-restful/default.nix−4
This diff is too big to show here.
pkgs/development/python-modules/flask-restful/werkzeug-2.1.0-compat.patch−114
This diff is too big to show here.
pkgs/development/python-modules/flask-restx/default.nix−15
This diff is too big to show here.
pkgs/development/python-modules/flask-seasurf/default.nix+3−13
This diff is too big to show here.
pkgs/development/python-modules/flask-security-too/default.nix+32−66
This diff is too big to show here.
pkgs/development/python-modules/flask-socketio/default.nix+2−6
This diff is too big to show here.
pkgs/development/python-modules/flask-talisman/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flask-testing/default.nix+15−41
This diff is too big to show here.
pkgs/development/python-modules/flask/default.nix+8−6
This diff is too big to show here.
pkgs/development/python-modules/flatbuffers/default.nix−1
This diff is too big to show here.
pkgs/development/python-modules/flatdict/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flax/default.nix+3−7
This diff is too big to show here.
pkgs/development/python-modules/flickrapi/default.nix+19−50
This diff is too big to show here.
pkgs/development/python-modules/flit-core/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/flit/default.nix+11−10
This diff is too big to show here.
pkgs/development/python-modules/flux-led/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/fn/default.nix+8−22
This diff is too big to show here.
pkgs/development/python-modules/fontmake/default.nix−42
This diff is too big to show here.
pkgs/development/python-modules/fontparts/default.nix+3−5
This diff is too big to show here.
pkgs/development/python-modules/fonttools/default.nix+5−8
This diff is too big to show here.
pkgs/development/python-modules/fqdn/default.nix−36
This diff is too big to show here.
pkgs/development/python-modules/freezegun/default.nix+10−21
This diff is too big to show here.
pkgs/development/python-modules/frozendict/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/fs/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ftfy/default.nix+2−8
This diff is too big to show here.
pkgs/development/python-modules/funcparserlib/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/furo/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/fuse-python/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/garminconnect/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/gattlib/default.nix−68
This diff is too big to show here.
pkgs/development/python-modules/gattlib/setup.patch−18
This diff is too big to show here.
pkgs/development/python-modules/gb-io/default.nix−45
This diff is too big to show here.
pkgs/development/python-modules/gbulb/default.nix−43
This diff is too big to show here.
pkgs/development/python-modules/gcal-sync/default.nix−46
This diff is too big to show here.
pkgs/development/python-modules/gehomesdk/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/genshi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/gensim/default.nix+20−37
This diff is too big to show here.
pkgs/development/python-modules/geoalchemy2/default.nix+2−13
This diff is too big to show here.
pkgs/development/python-modules/geocachingapi/default.nix+4−10
This diff is too big to show here.
pkgs/development/python-modules/geopandas/default.nix+1−14
This diff is too big to show here.
pkgs/development/python-modules/ghapi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ghp-import/default.nix+4−12
This diff is too big to show here.
pkgs/development/python-modules/gidgethub/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/gipc/default.nix+2
This diff is too big to show here.
pkgs/development/python-modules/git-annex-adapter/default.nix−4
This diff is too big to show here.
pkgs/development/python-modules/github3_py/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/glad/default.nix−18
This diff is too big to show here.
pkgs/development/python-modules/glances-api/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/glcontext/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/glean-parser/default.nix+5−6
This diff is too big to show here.
pkgs/development/python-modules/glfw/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/globus-sdk/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/glyphslib/default.nix−59
This diff is too big to show here.
pkgs/development/python-modules/goodwe/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-api-core/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-api-python-client/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-auth-oauthlib/default.nix+3−13
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-bigquery-storage/default.nix−48
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-bigquery/default.nix+4−15
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-bigtable/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-dataproc/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-error-reporting/default.nix+7−6
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-pubsub/default.nix+3−8
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-secret-manager/default.nix+2−6
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-testutils/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-cloud-videointelligence/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-nest-sdm/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/google-re2/default.nix+7−22
This diff is too big to show here.
pkgs/development/python-modules/gradient/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/graph_nets/default.nix+45
This diff is too big to show here.
pkgs/development/python-modules/graphene-django/default.nix+3−7
This diff is too big to show here.
pkgs/development/python-modules/graphene-django/graphene-3_2_0.patch−150
This diff is too big to show here.
pkgs/development/python-modules/graphene/default.nix−17
This diff is too big to show here.
pkgs/development/python-modules/graphql-relay/default.nix+4−19
This diff is too big to show here.
pkgs/development/python-modules/graphql-subscription-manager/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/graphviz/default.nix−4
This diff is too big to show here.
pkgs/development/python-modules/graspologic/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/greeclimate/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/gremlinpython/default.nix+9−3
This diff is too big to show here.
pkgs/development/python-modules/grip/default.nix+11−2
This diff is too big to show here.
pkgs/development/python-modules/grpcio-status/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/grpcio-tools/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/gspread/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/gssapi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/gtts/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/h11/default.nix+2−5
This diff is too big to show here.
pkgs/development/python-modules/h3/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/ha-av/default.nix+43
This diff is too big to show here.
pkgs/development/python-modules/hachoir/default.nix+3−9
This diff is too big to show here.
pkgs/development/python-modules/hahomematic/default.nix+4−4
This diff is too big to show here.
pkgs/development/python-modules/hangups/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hass-nabucasa/default.nix+1−2
This diff is too big to show here.
pkgs/development/python-modules/hatasmota/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/hatchling/default.nix−79
This diff is too big to show here.
pkgs/development/python-modules/hg-evolve/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hg-git/default.nix+5−15
This diff is too big to show here.
pkgs/development/python-modules/hid/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hidapi/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hkavr/default.nix−37
This diff is too big to show here.
pkgs/development/python-modules/hmmlearn/default.nix+8−9
This diff is too big to show here.
pkgs/development/python-modules/homeconnect/default.nix+4−11
This diff is too big to show here.
pkgs/development/python-modules/howdoi/default.nix+2−16
This diff is too big to show here.
pkgs/development/python-modules/hpack/default.nix+6−19
This diff is too big to show here.
pkgs/development/python-modules/html-sanitizer/default.nix+1−3
This diff is too big to show here.
pkgs/development/python-modules/http-message-signatures/default.nix−56
This diff is too big to show here.
pkgs/development/python-modules/http-sfv/default.nix−39
This diff is too big to show here.
pkgs/development/python-modules/httpbin/default.nix−10
This diff is too big to show here.
pkgs/development/python-modules/httpcore/default.nix+2−9
This diff is too big to show here.
pkgs/development/python-modules/httplib2/default.nix+5−9
This diff is too big to show here.
pkgs/development/python-modules/httptools/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/httpx-ntlm/default.nix+1−7
This diff is too big to show here.
pkgs/development/python-modules/httpx/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/huggingface-hub/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/humanize/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hwi/default.nix+8−11
This diff is too big to show here.
pkgs/development/python-modules/hydra-check/default.nix+19−12
This diff is too big to show here.
pkgs/development/python-modules/hyperframe/default.nix+1−4
This diff is too big to show here.
pkgs/development/python-modules/hyperion-py/default.nix+3−4
This diff is too big to show here.
pkgs/development/python-modules/hypothesis/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/hypothesmith/default.nix+4−32
This diff is too big to show here.
pkgs/development/python-modules/hypothesmith/remove-black.patch−88
This diff is too big to show here.
pkgs/development/python-modules/hyppo/default.nix+4−6
This diff is too big to show here.
pkgs/development/python-modules/ibis-framework/default.nix+47−34
This diff is too big to show here.
pkgs/development/python-modules/identify/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/igraph/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/ihatemoney/default.nix+34−36
This diff is too big to show here.
pkgs/development/python-modules/imageio/default.nix+15−24
This diff is too big to show here.
pkgs/development/python-modules/imageio/libgl-path.patch−13
This diff is too big to show here.
pkgs/development/python-modules/imap-tools/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/img2pdf/default.nix+12−2
This diff is too big to show here.
pkgs/development/python-modules/immutables/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/impacket/default.nix+5−31
This diff is too big to show here.
pkgs/development/python-modules/importlib-metadata/default.nix+2−4
This diff is too big to show here.
pkgs/development/python-modules/importlib-resources/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/inquirer/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/installer/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/insteon-frontend-home-assistant/default.nix−26
This diff is too big to show here.
pkgs/development/python-modules/intbitset/default.nix+19−6
This diff is too big to show here.
pkgs/development/python-modules/intbitset/remove-impure-tuning.patch+24
This diff is too big to show here.
pkgs/development/python-modules/intellifire4py/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/intensity-normalization/default.nix+3−6
This diff is too big to show here.
pkgs/development/python-modules/invocations/default.nix+4−15
This diff is too big to show here.
pkgs/development/python-modules/ipykernel/default.nix+7−9
This diff is too big to show here.
pkgs/development/python-modules/ipympl/default.nix+3−4
This diff is too big to show here.
pkgs/development/python-modules/ipython-sql/default.nix−58
This diff is too big to show here.
pkgs/development/python-modules/ipython/default.nix+5−3
This diff is too big to show here.
pkgs/development/python-modules/ipywidgets/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/islpy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/ismartgate/default.nix+2−12
This diff is too big to show here.
pkgs/development/python-modules/iso4217/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/iso8601/default.nix+1−6
This diff is too big to show here.
pkgs/development/python-modules/isoduration/default.nix−50
This diff is too big to show here.
pkgs/development/python-modules/iterm2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/itsdangerous/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jaraco_itertools/default.nix+2−3
This diff is too big to show here.
pkgs/development/python-modules/jaraco_text/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jarowinkler/default.nix−54
This diff is too big to show here.
pkgs/development/python-modules/jax/default.nix+8−21
This diff is too big to show here.
pkgs/development/python-modules/jaxlib/bin.nix+4−8
This diff is too big to show here.
pkgs/development/python-modules/jaxlib/default.nix+7−7
This diff is too big to show here.
pkgs/development/python-modules/jc/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jedi-language-server/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/jeepney/default.nix+3−10
This diff is too big to show here.
pkgs/development/python-modules/jenkins-job-builder/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jinja2/default.nix+3−4
This diff is too big to show here.
pkgs/development/python-modules/jira/default.nix+10−21
This diff is too big to show here.
pkgs/development/python-modules/jmespath/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/joblib/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/josepy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jsbeautifier/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/json-home-client/default.nix−40
This diff is too big to show here.
pkgs/development/python-modules/json-schema-for-humans/default.nix+8−7
This diff is too big to show here.
pkgs/development/python-modules/jsondiff/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jsonpickle/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jsonrpc-async/default.nix+4−25
This diff is too big to show here.
pkgs/development/python-modules/jsonrpc-base/default.nix+1−9
This diff is too big to show here.
pkgs/development/python-modules/jug/default.nix+18−31
This diff is too big to show here.
pkgs/development/python-modules/junos-eznc/default.nix+15−49
This diff is too big to show here.
pkgs/development/python-modules/jupyter-client/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jupyter-packaging/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jupyter_console/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jupyter_core/default.nix+7−28
This diff is too big to show here.
pkgs/development/python-modules/jupyterlab-git/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jupyterlab/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/jupyterlab_server/default.nix+5−7
This diff is too big to show here.
pkgs/development/python-modules/jupytext/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/jwcrypto/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/kaldi-active-grammar/default.nix+1−7
This diff is too big to show here.
pkgs/development/python-modules/karton-core/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/kbcstorage/default.nix−69
This diff is too big to show here.
pkgs/development/python-modules/keepalive/default.nix−1
This diff is too big to show here.
pkgs/development/python-modules/keras/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/kiss-headers/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/kivy-garden/default.nix+9−11
This diff is too big to show here.
pkgs/development/python-modules/kiwisolver/default.nix+9−21
This diff is too big to show here.
pkgs/development/python-modules/kubernetes/default.nix+3−4
This diff is too big to show here.
pkgs/development/python-modules/labelbox/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/labgrid/default.nix−2
This diff is too big to show here.
pkgs/development/python-modules/ledgerblue/default.nix+6−29
This diff is too big to show here.
pkgs/development/python-modules/lektor/default.nix+25−54
This diff is too big to show here.
pkgs/development/python-modules/levenshtein/default.nix+7−15
This diff is too big to show here.
pkgs/development/python-modules/libcst/default.nix+4−21
This diff is too big to show here.
pkgs/development/python-modules/libevdev/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/libgpuarray/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/libtmux/default.nix+5−7
This diff is too big to show here.
pkgs/development/python-modules/lightwave2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/limits/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/limnoria/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/lmnotify/default.nix+6−17
This diff is too big to show here.
pkgs/development/python-modules/loo-py/default.nix+24−28
This diff is too big to show here.
pkgs/development/python-modules/losant-rest/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/lru-dict/default.nix−34
This diff is too big to show here.
pkgs/development/python-modules/luxtronik/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/lxmf/default.nix−39
This diff is too big to show here.
pkgs/development/python-modules/lxml/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/lz4/default.nix+8−9
This diff is too big to show here.
pkgs/development/python-modules/magicgui/default.nix+3−12
This diff is too big to show here.
pkgs/development/python-modules/mailchecker/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/manticore/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/mariadb/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/markupsafe/default.nix+3−5
This diff is too big to show here.
pkgs/development/python-modules/marshmallow-dataclass/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/marshmallow-sqlalchemy/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/mat2/default.nix+2−2
This diff is too big to show here.
pkgs/development/python-modules/matchpy/default.nix+23−29
This diff is too big to show here.
pkgs/development/python-modules/matrix-nio/default.nix−1
This diff is too big to show here.
pkgs/development/python-modules/mautrix/default.nix+3−3
This diff is too big to show here.
pkgs/development/python-modules/mccabe/default.nix+4−16
This diff is too big to show here.
pkgs/development/python-modules/md-toc/default.nix+2−2
This diff is too big to show here.
2223 more files changed are not listed.