6745 files changed+200866−226623
3745 more files changed are not listed.
.editorconfig−5
@@ -55,11 +55,6 @@ trim_trailing_whitespace = unset
5555[*.lock]
5656indent_size = unset
5757
58−# trailing whitespace is an actual syntax element of classic Markdown/
59−# CommonMark to enforce a line break
60−[*.md]
61−trim_trailing_whitespace = unset
62−
6358[eggs.nix]
6459trim_trailing_whitespace = unset
6560
.github/CODEOWNERS+45−38
@@ -10,6 +10,9 @@
1010# IMPORTANT NOTE: in order to actually get pinged, commit access is required.
1111# This also holds true for GitHub teams. Since almost none of our teams have write
1212# permissions, you need to list all members of the team with commit access individually.
13+# We still add the team to the list next to its members, this helps keeping things
14+# in sync. (Put non team members before the team to distinguish them.)
15+# See https://github.com/NixOS/nixpkgs/issues/124085 for more details
1316
1417# This file
1518/.github/CODEOWNERS @edolstra
@@ -36,13 +39,12 @@
3639/pkgs/top-level/stage.nix @nbp @Ericson2314 @matthewbauer
3740/pkgs/top-level/splice.nix @Ericson2314 @matthewbauer
3841/pkgs/top-level/release-cross.nix @Ericson2314 @matthewbauer
39−/pkgs/stdenv/generic @Ericson2314 @matthewbauer
42+/pkgs/stdenv/generic @Ericson2314 @matthewbauer @cab404
4043/pkgs/stdenv/cross @Ericson2314 @matthewbauer
41−/pkgs/build-support/cc-wrapper @Ericson2314
42−/pkgs/build-support/bintools-wrapper @Ericson2314
44+/pkgs/build-support/cc-wrapper @Ericson2314 @orivej
45+/pkgs/build-support/bintools-wrapper @Ericson2314 @orivej
4346/pkgs/build-support/setup-hooks @Ericson2314
44−/pkgs/build-support/setup-hooks/auto-patchelf.sh @layus
45−/pkgs/build-support/setup-hooks/auto-patchelf.py @layus
47+/pkgs/build-support/setup-hooks/auto-patchelf.sh @aszlig
4648
4749# Nixpkgs build-support
4850/pkgs/build-support/writers @lassulus @Profpatsch
@@ -75,12 +77,6 @@
7577# NixOS integration test driver
7678/nixos/lib/test-driver @tfc
7779
78−# Systemd
79−/nixos/modules/system/boot/systemd.nix @NixOS/systemd
80−/nixos/modules/system/boot/systemd @NixOS/systemd
81−/nixos/lib/systemd-*.nix @NixOS/systemd
82−/pkgs/os-specific/linux/systemd @NixOS/systemd
83−
8480# Updaters
8581## update.nix
8682/maintainers/scripts/update.nix @jtojnar
@@ -95,7 +91,8 @@
9591/pkgs/development/python-modules @FRidh @jonringer
9692/doc/languages-frameworks/python.section.md @FRidh
9793/pkgs/development/tools/poetry2nix @adisbladis
98−/pkgs/development/interpreters/python/hooks @FRidh @jonringer
94+/pkgs/development/interpreters/python/hooks @FRidh @jonringer @DavHau
95+/pkgs/development/interpreters/python/conda @DavHau
9996
10097# Haskell
10198/doc/languages-frameworks/haskell.section.md @cdepillabout @sternenseemann @maralorn @expipiplus1
@@ -112,8 +109,8 @@
112109/pkgs/development/perl-modules @stigtsp @zakame
113110
114111# R
115−/pkgs/applications/science/math/R @jbedo
116−/pkgs/development/r-modules @jbedo
112+/pkgs/applications/science/math/R @jbedo @bcdarwin
113+/pkgs/development/r-modules @jbedo @bcdarwin
117114
118115# Ruby
119116/pkgs/development/interpreters/ruby @marsam
@@ -124,6 +121,10 @@
124121/pkgs/build-support/rust @zowoq
125122/doc/languages-frameworks/rust.section.md @zowoq
126123
124+# Darwin-related
125+/pkgs/stdenv/darwin @NixOS/darwin-maintainers
126+/pkgs/os-specific/darwin @NixOS/darwin-maintainers
127+
127128# C compilers
128129/pkgs/development/compilers/gcc @matthewbauer
129130/pkgs/development/compilers/llvm @matthewbauer
@@ -132,6 +133,15 @@
132133/pkgs/top-level/unix-tools.nix @matthewbauer
133134/pkgs/development/tools/xcbuild @matthewbauer
134135
136+# Beam-related (Erlang, Elixir, LFE, etc)
137+/pkgs/development/beam-modules @gleber
138+/pkgs/development/interpreters/erlang @gleber
139+/pkgs/development/interpreters/lfe @gleber
140+/pkgs/development/interpreters/elixir @gleber
141+/pkgs/development/tools/build-managers/rebar @gleber
142+/pkgs/development/tools/build-managers/rebar3 @gleber
143+/pkgs/development/tools/erlang @gleber
144+
135145# Audio
136146/nixos/modules/services/audio/botamusique.nix @mweinelt
137147/nixos/modules/services/audio/snapserver.nix @mweinelt
@@ -199,7 +209,7 @@
199209/pkgs/development/idris-modules @Infinisil
200210
201211# Bazel
202−/pkgs/development/tools/build-managers/bazel @Profpatsch
212+/pkgs/development/tools/build-managers/bazel @mboes @Profpatsch
203213
204214# NixOS modules for e-mail and dns services
205215/nixos/modules/services/mail/mailman.nix @peti
@@ -227,24 +237,25 @@
227237/nixos/tests/prometheus-exporters.nix @WilliButz
228238
229239# PHP interpreter, packages, extensions, tests and documentation
230−/doc/languages-frameworks/php.section.md @aanderse @etu @globin @ma27 @talyz
231−/nixos/tests/php @aanderse @etu @globin @ma27 @talyz
232−/pkgs/build-support/build-pecl.nix @aanderse @etu @globin @ma27 @talyz
233−/pkgs/development/interpreters/php @jtojnar @aanderse @etu @globin @ma27 @talyz
234−/pkgs/development/php-packages @aanderse @etu @globin @ma27 @talyz
235−/pkgs/top-level/php-packages.nix @jtojnar @aanderse @etu @globin @ma27 @talyz
240+/doc/languages-frameworks/php.section.md @NixOS/php @aanderse @etu @globin @ma27 @talyz
241+/nixos/tests/php @NixOS/php @aanderse @etu @globin @ma27 @talyz
242+/pkgs/build-support/build-pecl.nix @NixOS/php @aanderse @etu @globin @ma27 @talyz
243+/pkgs/development/interpreters/php @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
244+/pkgs/development/php-packages @NixOS/php @aanderse @etu @globin @ma27 @talyz
245+/pkgs/top-level/php-packages.nix @jtojnar @NixOS/php @aanderse @etu @globin @ma27 @talyz
236246
237247# Podman, CRI-O modules and related
238−/nixos/modules/virtualisation/containers.nix @zowoq @adisbladis
239−/nixos/modules/virtualisation/cri-o.nix @zowoq @adisbladis
240−/nixos/modules/virtualisation/podman @zowoq @adisbladis
241−/nixos/tests/cri-o.nix @zowoq @adisbladis
242−/nixos/tests/podman @zowoq @adisbladis
248+/nixos/modules/virtualisation/containers.nix @NixOS/podman @zowoq @adisbladis
249+/nixos/modules/virtualisation/cri-o.nix @NixOS/podman @zowoq @adisbladis
250+/nixos/modules/virtualisation/podman @NixOS/podman @zowoq @adisbladis
251+/nixos/tests/cri-o.nix @NixOS/podman @zowoq @adisbladis
252+/nixos/tests/podman @NixOS/podman @zowoq @adisbladis
243253
244254# Docker tools
245−/pkgs/build-support/docker @roberth
246−/nixos/tests/docker-tools* @roberth
247−/doc/builders/images/dockertools.section.md @roberth
255+/pkgs/build-support/docker @roberth @utdemir
256+/nixos/tests/docker-tools-overlay.nix @roberth
257+/nixos/tests/docker-tools.nix @roberth
258+/doc/builders/images/dockertools.xml @roberth
248259
249260# Blockchains
250261/pkgs/applications/blockchains @mmahut @RaghavSood
@@ -256,8 +267,8 @@
256267/pkgs/development/go-packages @kalbasit @Mic92 @zowoq
257268
258269# GNOME
259−/pkgs/desktops/gnome @jtojnar @hedning
260−/pkgs/desktops/gnome/extensions @piegamesde @jtojnar @hedning
270+/pkgs/desktops/gnome @NixOS/GNOME @jtojnar @hedning
271+/pkgs/desktops/gnome/extensions @piegamesde @NixOS/GNOME @jtojnar @hedning
261272
262273# Cinnamon
263274/pkgs/desktops/cinnamon @mkg20001
@@ -278,14 +289,10 @@
278289
279290# Matrix
280291/pkgs/servers/heisenbridge @piegamesde
281−/pkgs/servers/matrix-conduit @piegamesde
292+/pkgs/servers/matrix-conduit @piegamesde @pstn
282293/pkgs/servers/matrix-synapse/matrix-appservice-irc @piegamesde
283294/nixos/modules/services/misc/heisenbridge.nix @piegamesde
284295/nixos/modules/services/misc/matrix-appservice-irc.nix @piegamesde
285−/nixos/modules/services/misc/matrix-conduit.nix @piegamesde
296+/nixos/modules/services/misc/matrix-conduit.nix @piegamesde @pstn
286297/nixos/tests/matrix-appservice-irc.nix @piegamesde
287−/nixos/tests/matrix-conduit.nix @piegamesde
288−
289−# Dotnet
290−/pkgs/build-support/dotnet @IvarWithoutBones
291−/pkgs/development/compilers/dotnet @IvarWithoutBones
298+/nixos/tests/matrix-conduit.nix @piegamesde @pstn
.github/workflows/basic-eval.yml+9−10
@@ -1,22 +1,21 @@
11name: Basic evaluation checks
22
33on:
4− workflow_dispatch
5− # pull_request:
6− # branches:
7− # - master
8− # - release-**
9− # push:
10− # branches:
11− # - master
12− # - release-**
4+ pull_request:
5+ branches:
6+ - master
7+ - release-**
8+ push:
9+ branches:
10+ - master
11+ - release-**
1312jobs:
1413 tests:
1514 runs-on: ubuntu-latest
1615 # we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
1716 steps:
1817 - uses: actions/checkout@v3
19− - uses: cachix/install-nix-action@v17
18+ - uses: cachix/install-nix-action@v16
2019 - uses: cachix/cachix-action@v10
2120 with:
2221 # This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
.github/workflows/direct-push.yml+1−1
@@ -22,7 +22,7 @@ jobs:
2222 if: steps.ismerge.outputs.ismerge != 'true'
2323 - name: Warn if the commit was a direct push
2424 if: steps.ismerge.outputs.ismerge != 'true'
25− uses: peter-evans/commit-comment@v2
25+ uses: peter-evans/commit-comment@v1
2626 with:
2727 body: |
2828 @${{ github.actor }}, you pushed a commit directly to master/release branch
.github/workflows/editorconfig.yml+1−1
@@ -28,7 +28,7 @@ jobs:
2828 with:
2929 # pull_request_target checks out the base branch by default
3030 ref: refs/pull/${{ github.event.pull_request.number }}/merge
31− - uses: cachix/install-nix-action@v17
31+ - uses: cachix/install-nix-action@v16
3232 with:
3333 # nixpkgs commit is pinned so that it doesn't break
3434 # editorconfig-checker 2.4.0
.github/workflows/manual-nixos.yml+1−1
@@ -18,7 +18,7 @@ jobs:
1818 with:
1919 # pull_request_target checks out the base branch by default
2020 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v16
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
.github/workflows/manual-nixpkgs.yml+1−1
@@ -18,7 +18,7 @@ jobs:
1818 with:
1919 # pull_request_target checks out the base branch by default
2020 ref: refs/pull/${{ github.event.pull_request.number }}/merge
21− - uses: cachix/install-nix-action@v17
21+ - uses: cachix/install-nix-action@v16
2222 with:
2323 # explicitly enable sandbox
2424 extra_nix_config: sandbox = true
.github/workflows/nixos-manual.yml+1−1
@@ -19,7 +19,7 @@ jobs:
1919 with:
2020 # pull_request_target checks out the base branch by default
2121 ref: refs/pull/${{ github.event.pull_request.number }}/merge
22− - uses: cachix/install-nix-action@v17
22+ - uses: cachix/install-nix-action@v16
2323 - name: Check DocBook files generated from Markdown are consistent
2424 run: |
2525 nixos/doc/manual/md-to-db.sh
.github/workflows/periodic-merge-24h.yml+1−1
@@ -49,7 +49,7 @@ jobs:
4949 github_token: ${{ secrets.GITHUB_TOKEN }}
5050
5151 - name: Comment on failure
52− uses: peter-evans/create-or-update-comment@v2
52+ uses: peter-evans/create-or-update-comment@v1
5353 if: ${{ failure() }}
5454 with:
5555 issue-number: 105153
.github/workflows/periodic-merge-6h.yml+1−1
@@ -43,7 +43,7 @@ jobs:
4343 github_token: ${{ secrets.GITHUB_TOKEN }}
4444
4545 - name: Comment on failure
46− uses: peter-evans/create-or-update-comment@v2
46+ uses: peter-evans/create-or-update-comment@v1
4747 if: ${{ failure() }}
4848 with:
4949 issue-number: 105153
.github/workflows/update-terraform-providers.yml+7−8
@@ -11,7 +11,7 @@ jobs:
1111 runs-on: ubuntu-latest
1212 steps:
1313 - uses: actions/checkout@v3
14− - uses: cachix/install-nix-action@v17
14+ - uses: cachix/install-nix-action@v16
1515 - name: setup
1616 id: setup
1717 run: |
@@ -25,22 +25,21 @@ jobs:
2525 git commit -m "${{ steps.setup.outputs.title }}" providers.json
2626 popd
2727 - name: create PR
28− uses: peter-evans/create-pull-request@v4
28+ uses: peter-evans/create-pull-request@v3
2929 with:
3030 body: |
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.
3232
33− Check that all providers build with:
34− ```
35− @ofborg build terraform-full
36− ```
33+ Created by [update-terraform-providers](https://github.com/NixOS/nixpkgs/blob/master/.github/workflows/update-terraform-providers.yml) action.
34+
35+ Check that all providers build with `@ofborg build terraform-full`
3736 branch: terraform-providers-update
3837 delete-branch: false
3938 labels: "2.status: work-in-progress"
4039 title: ${{ steps.setup.outputs.title }}
4140 token: ${{ secrets.GITHUB_TOKEN }}
4241 - name: comment on failure
43− uses: peter-evans/create-or-update-comment@v2
42+ uses: peter-evans/create-or-update-comment@v1
4443 if: ${{ failure() }}
4544 with:
4645 issue-number: 153416
CONTRIBUTING.md+1−42
@@ -20,7 +20,7 @@ Below is a short excerpt of some points in there:
2020 ```
2121 (pkg-name | nixos/<module>): (from -> to | init at version | refactor | etc)
2222
23− (Motivation for change. Link to release notes. Additional information.)
23+ (Motivation for change. Additional information.)
2424 ```
2525
2626 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:
2929
3030 * nginx: init at 2.0.1
3131 * firefox: 54.0.1 -> 55.0
32− https://www.mozilla.org/en-US/firefox/55.0/releasenotes/
3332 * nixos/hydra: add bazBaz option
3433
3534 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
5352
5453For package version upgrades and such a one-line commit message is usually sufficient.
5554
56−## Rebasing between branches (i.e. from master to staging)
57−
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.
64−
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.
69−
70−
71−```console
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
80−```
81−
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.
86−
87−```console
88−# Rebase onto target branch
89−git rebase upstream/staging
90−# Review and fixup possible conflicts
91−git status
92−# Force push your changes
93−git push origin $(git branch --show-current) --force-with-lease
94−```
95−
9655## Backporting changes
9756
9857Follow 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−16
@@ -6,11 +6,11 @@ When using Nix, you will frequently need to download source code and other files
66
77Because 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.
88
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.
1010
1111## `fetchurl` and `fetchzip` {#fetchurl}
1212
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.
1414
1515```nix
1616{ stdenv, fetchurl }:
@@ -24,9 +24,9 @@ stdenv.mkDerivation {
2424}
2525```
2626
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.
2828
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.
3030
3131Most other fetchers return a directory rather than a single file.
3232
@@ -38,9 +38,9 @@ Used with Subversion. Expects `url` to a Subversion directory, `rev`, and `sha25
3838
3939Used 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`.
4040
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.
4242
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:
4444
4545```nix
4646{ stdenv, fetchgit }:
@@ -72,23 +72,19 @@ Used with Mercurial. Expects `url`, `rev`, and `sha256`.
7272
7373A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
7474
75−## `fetchFromGitea` {#fetchfromgitea}
76−
77−`fetchFromGitea` expects five arguments. `domain` is the gitea server name. `owner` is a string corresponding to the Gitea user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea 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.
78−
7975## `fetchFromGitHub` {#fetchfromgithub}
8076
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.
77+`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.
8278
8379`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.
8480
8581## `fetchFromGitLab` {#fetchfromgitlab}
8682
87−This is used with GitLab repositories. The arguments expected are very similar to `fetchFromGitHub` above.
83+This is used with GitLab repositories. The arguments expected are very similar to fetchFromGitHub above.
8884
8985## `fetchFromGitiles` {#fetchfromgitiles}
9086
91−This is used with Gitiles repositories. The arguments expected are similar to `fetchgit`.
87+This is used with Gitiles repositories. The arguments expected are similar to fetchgit.
9288
9389## `fetchFromBitbucket` {#fetchfrombitbucket}
9490
@@ -96,11 +92,11 @@ This is used with BitBucket repositories. The arguments expected are very simila
9692
9793## `fetchFromSavannah` {#fetchfromsavannah}
9894
99−This is used with Savannah repositories. The arguments expected are very similar to `fetchFromGitHub` above.
95+This is used with Savannah repositories. The arguments expected are very similar to fetchFromGitHub above.
10096
10197## `fetchFromRepoOrCz` {#fetchfromrepoorcz}
10298
103−This is used with repo.or.cz repositories. The arguments expected are very similar to `fetchFromGitHub` above.
99+This is used with repo.or.cz repositories. The arguments expected are very similar to fetchFromGitHub above.
104100
105101## `fetchFromSourcehut` {#fetchfromsourcehut}
106102
@@ -111,4 +107,4 @@ or "hg"), `domain` and `fetchSubmodules`.
111107
112108If `fetchSubmodules` is `true`, `fetchFromSourcehut` uses `fetchgit`
113109or `fetchhg` with `fetchSubmodules` or `fetchSubrepos` set to `true`,
114−respectively. Otherwise, the fetcher uses `fetchzip`.
110+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`
5858
5959At the end of the process, only one new single layer will be produced and added to the resulting image.
6060
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`.
6262
6363It is possible to inspect the arguments with which an image was built using its `buildArgs` attribute.
6464
@@ -87,7 +87,7 @@ pkgs.dockerTools.buildImage {
8787}
8888```
8989
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:
9191
9292```ShellSession
9393$ docker images
@@ -95,7 +95,7 @@ REPOSITORY TAG IMAGE ID CREATED SIZE
9595hello latest de2bf4786de6 About a minute ago 25.2MB
9696```
9797
98−However, the produced images will not be binary reproducible.
98+however, the produced images will not be binary reproducible.
9999
100100## buildLayeredImage {#ssec-pkgs-dockerTools-buildLayeredImage}
101101
@@ -119,13 +119,13 @@ Create a Docker image with many of the store paths being on their own layer to i
119119
120120`contents` _optional_
121121
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.
123123
124124 *Default:* `[]`
125125
126126`config` _optional_
127127
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).
129129
130130 *Default:* `{}`
131131
@@ -195,9 +195,9 @@ pkgs.dockerTools.buildLayeredImage {
195195
196196Increasing the `maxLayers` increases the number of layers which have a chance to be shared between different images.
197197
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.
199199
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.
201201
202202The 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.
203203
@@ -213,7 +213,7 @@ The image produced by running the output script can be piped directly into `dock
213213$(nix-build) | docker load
214214```
215215
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:
217217
218218```ShellSession
219219$(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 @@
11# pkgs.ociTools {#sec-pkgs-ociTools}
22
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.
44
55## buildContainer {#ssec-pkgs-ociTools-buildContainer}
66
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.
88
99The parameters of `buildContainer` with an example value are described below:
1010
@@ -30,7 +30,7 @@ buildContainer {
3030}
3131```
3232
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
3434
3535- `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)
3636
doc/builders/images/snaptools.section.md+1−1
@@ -33,7 +33,7 @@ in snapTools.makeSnap {
3333
3434## Build a Graphical Snap {#ssec-pkgs-snapTools-build-a-snap-firefox}
3535
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.
3737
3838``` {#ex-snapTools-buildSnap-firefox .nix}
3939let
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
44
55## Basic usage {#sec-citrix-base}
66
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.
88
9−## Citrix Self-service {#sec-citrix-selfservice}
9+## Citrix Selfservice {#sec-citrix-selfservice}
1010
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.
1212
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:
1414
1515```ShellSession
1616$ storebrowse -C ~/Downloads/receiverconfig.cr
@@ -19,7 +19,7 @@ $ selfservice
1919
2020## Custom certificates {#sec-citrix-custom-certs}
2121
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`:
2323
2424```nix
2525with 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
88$ nix-env -f '<nixpkgs>' -qaP -A eclipses --description
99```
1010
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.
1212
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
1414
1515```nix
1616packageOverrides = pkgs: {
@@ -22,15 +22,15 @@ packageOverrides = pkgs: {
2222}
2323```
2424
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
2626
2727```ShellSession
2828$ nix-env -f '<nixpkgs>' -qaP -A eclipses.plugins --description
2929```
3030
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.
3232
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
3434
3535```nix
3636packageOverrides = pkgs: {
doc/builders/packages/elm.section.md+1−1
@@ -1,6 +1,6 @@
11# Elm {#sec-elm}
22
3−To start a development environment, run:
3+To start a development environment do
44
55```ShellSession
66nix-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.
2020}
2121```
2222
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.
2424
2525```nix
2626{
@@ -101,9 +101,9 @@ You can install it like any other packages via `nix-env -iA myEmacs`. However, t
101101}
102102```
103103
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.
105105
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'`.
107107
108108```nix
109109overrides = self: super: rec {
doc/builders/packages/etc-files.section.md+4−4
@@ -1,10 +1,10 @@
11# /etc files {#etc}
22
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.
44
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.
66
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_.
88
99
1010```bash
@@ -15,4 +15,4 @@ NIX_ETC_SERVICES=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/e
1515NIX_ETC_PROTOCOLS=/nix/store/aj866hr8fad8flnggwdhrldm0g799ccz-iana-etc-20210225/etc/protocols
1616```
1717
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 @@
22
33## Build wrapped Firefox with extensions and policies {#build-wrapped-firefox-with-extensions-and-policies}
44
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:
66
77```nix
88{
@@ -40,12 +40,13 @@ The `wrapFirefox` function allows to pass policies, preferences and extensions t
4040}
4141```
4242
43−If `nixExtensions != null`, then all manually installed add-ons will be uninstalled from your browser profile.
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`.
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.
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)
45+or type into the Firefox url bar: `about:policies#documentation`.
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.
4747
4848## 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.
50+
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.
5052
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.
3636## Fish wrapper {#sec-fish-wrapper}
3737
3838The `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
4040snippets and functions sourced from the given paths. This provides a convenient
4141way to test Fish plugins and scripts without having to alter the environment.
4242
doc/builders/packages/fuse.section.md+2−2
@@ -24,10 +24,10 @@ packages on macOS:
2424 checking for fuse.h... no
2525 configure: error: No fuse.h found.
2626
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
2828`AC_CHECK_LIBS` to detect libfuse, and will occur even when the `fuse` package
2929is 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
3131`FUSE_USE_VERSION`, but only inside C source files. This results in the above
3232error at configure time because the configure script would attempt to compile
3333sample 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.
66
77IBus 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).
88
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:
1010
1111```nix
1212{ pkgs, ... }: {
@@ -19,7 +19,7 @@ On NixOS, you need to explicitly enable `ibus` with given engines before customi
1919
2020## Using custom hunspell dictionaries {#sec-ibus-typing-booster-customize-hunspell}
2121
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:
2323
2424```nix
2525ibus-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
3131
3232The `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:
3333
34−On NixOS, it can be installed using the following expression:
34+On NixOS it can be installed using the following expression:
3535
3636```nix
3737{ 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
44
55The 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`).
66
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:
88
99```nix
1010modulesTree = [kernel]
@@ -14,19 +14,19 @@ modulesTree = [kernel]
1414
1515How to add a new (major) version of the Linux kernel to Nixpkgs:
1616
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.
1818
19192. Add the new kernel to the `kernels` attribute set in `linux-kernels.nix` (e.g., create an attribute `kernel_2_6_22`).
2020
21213. 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:
2222
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`).
2424
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.
2626
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`).
2828
29− 4. If needed, you can also run `make menuconfig`:
29+ 4. If needed you can also run `make menuconfig`:
3030
3131 ```ShellSession
3232 $ nix-env -f "<nixpkgs>" -iA ncurses
@@ -34,7 +34,7 @@ How to add a new (major) version of the Linux kernel to Nixpkgs:
3434 $ make menuconfig ARCH=arch
3535 ```
3636
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`).
3838
39394. 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.
4040
doc/builders/packages/locales.section.md+2−2
@@ -1,5 +1,5 @@
11# Locales {#locales}
22
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.
44
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 @@
44
55## ETags on static files served from the Nix store {#sec-nginx-etag}
66
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).
88
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.
1010
1111As 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
1212
1313If 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.
1414
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
44
55- `fzf` : `fzf-share`
66
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:
88
99```bash
1010source "$(fzf-share)/completion.bash"
doc/builders/packages/steam.section.md+8−8
@@ -2,20 +2,20 @@
22
33## Steam in Nix {#sec-steam-nix}
44
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.
66
77Nix problems and constraints:
88
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`.
1010- 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.
1212- The steam binary cannot be patched, it's also checked.
1313
1414The 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.
1515
1616## How to play {#sec-steam-play}
1717
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.
1919
2020## Troubleshooting {#sec-steam-troub}
2121
@@ -32,7 +32,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
3232- **Using the FOSS Radeon or nouveau (nvidia) drivers**
3333
3434 - 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
3636
3737 ```
3838 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`
4242
4343- **Java**
4444
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
4646
4747 ```
4848 /home/foo/.local/share/Steam/SteamApps/common/towns/towns.sh: line 1: java: command not found
4949 ```
5050
51− you need to add:
51+ you need to add
5252
5353 ```nix
5454 steam.override { withJava = true; };
@@ -56,7 +56,7 @@ Use `programs.steam.enable = true;` if you want to add steam to `systemPackages`
5656
5757## steam-run {#sec-steam-run}
5858
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
6060
6161```
6262steam-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.
44
55## Configuring urxvt {#sec-urxvt-conf}
66
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
88
99```nix
1010rxvt-unicode.override {
@@ -58,14 +58,14 @@ rxvt-unicode.override {
5858
5959## Packaging urxvt plugins {#sec-urxvt-pkg}
6060
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`.
6262
6363A 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.
6464
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:
6666
6767```nix
6868passthru.perlPackages = [ "self" ];
6969```
7070
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}
22
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
44
55```nix
66weechat.override {configure = {availablePlugins, ...}: {
@@ -13,7 +13,7 @@ If the `configure` function returns an attrset without the `plugins` attribute,
1313
1414The plugins currently available are `python`, `perl`, `ruby`, `guile`, `tcl` and `lua`.
1515
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:
1717
1818```nix
1919weechat.override { configure = {availablePlugins, ...}: {
@@ -49,7 +49,7 @@ weechat.override {
4949
5050Further values can be added to the list of commands when running `weechat --run-command "your-commands"`.
5151
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`:
5353
5454```nix
5555weechat.override {
@@ -64,7 +64,7 @@ weechat.override {
6464}
6565```
6666
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:
6868
6969```nix
7070{ stdenv, fetchurl }:
doc/builders/special.xml+1
@@ -7,4 +7,5 @@
77 </para>
88 <xi:include href="special/fhs-environments.section.xml" />
99 <xi:include href="special/mkshell.section.xml" />
10+ <xi:include href="special/invalidateFetcherByDrvHash.section.xml" />
1011</chapter>
doc/builders/special/invalidateFetcherByDrvHash.section.mdnew file+31
@@ -0,0 +1,31 @@
1+
2+## `invalidateFetcherByDrvHash` {#sec-pkgs-invalidateFetcherByDrvHash}
3+
4+Use the derivation hash to invalidate the output via name, for testing.
5+
6+Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
7+
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.
10+
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.
15+
16+This relies on the assumption that Nix isn't clever enough to reuse its
17+database of local store contents to optimize fetching.
18+
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.
23+
24+Example:
25+
26+ tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
27+ name = "nix-source";
28+ url = "https://github.com/NixOS/nix";
29+ rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
30+ sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
31+ };
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.
3−
4−## `testVersion` {#tester-testVersion}
5−
6−Checks the command output contains the specified version
7−
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.
13−
14−Examples:
15−
16−```nix
17−passthru.tests.version = testVersion { package = hello; };
18−
19−passthru.tests.version = testVersion {
20− package = seaweedfs;
21− command = "weed version";
22−};
23−
24−passthru.tests.version = testVersion {
25− package = key;
26− command = "KeY --help";
27− # Wrong '2.5' version in the code. Drop on next version.
28− version = "2.5";
29−};
30−```
31−
32−## `testEqualDerivation` {#tester-testEqualDerivation}
33−
34−Checks that two packages produce the exact same build instructions.
35−
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.
38−
39−When the derivations are equal, the return value is an empty file.
40−Otherwise, the build log explains the difference via `nix-diff`.
41−
42−Example:
43−
44−```nix
45−testEqualDerivation
46− "The hello package must stay the same when enabling checks."
47− hello
48− (hello.overrideAttrs(o: { doCheck = true; }))
49−```
50−
51−## `invalidateFetcherByDrvHash` {#tester-invalidateFetcherByDrvHash}
52−
53−Use the derivation hash to invalidate the output via name, for testing.
54−
55−Type: `(a@{ name, ... } -> Derivation) -> a -> Derivation`
56−
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.
59−
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.
64−
65−This relies on the assumption that Nix isn't clever enough to reuse its
66−database of local store contents to optimize fetching.
67−
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.
72−
73−Example:
74−
75−```nix
76−tests.fetchgit = invalidateFetcherByDrvHash fetchgit {
77− name = "nix-source";
78− url = "https://github.com/NixOS/nix";
79− rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
80− sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
81−};
82−```
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
3535
3636## `runCommandLocal` {#trivial-builder-runCommandLocal}
3737
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.
3939
4040::: {.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`.
4242:::
4343
4444## `writeTextFile`, `writeText`, `writeTextDir`, `writeScript`, `writeScriptBin` {#trivial-builder-writeText}
@@ -219,5 +219,5 @@ produces an output path `/nix/store/<hash>-runtime-references` containing
219219/nix/store/<hash>-hello-2.10
220220```
221221
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
223223by `hi`'s output.
doc/contributing/coding-conventions.chapter.md+7−8
@@ -214,15 +214,15 @@ Most of the time, these are the same. For instance, the package `e2fsprogs` has
214214
215215There are a few naming guidelines:
216216
217−- The `pname` attribute _should_ be identical to the upstream package name.
217+- The `name` attribute _should_ be identical to the upstream package name.
218218
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"`.
220220
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"`.
222222
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"`.
224224
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.
226226
227227- 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)
228228
@@ -540,11 +540,10 @@ If you do need to do create this sort of patch file, one way to do so is with gi
540540
541541If a patch is available online but does not cleanly apply, it can be modified in some fixed ways by using additional optional arguments for `fetchpatch`:
542542
543−- `relative`: Similar to using `git-diff`'s `--relative` flag, only keep changes inside the specified directory, making paths relative to it.
544543- `stripLen`: Remove the first `stripLen` components of pathnames in the patch.
545544- `extraPrefix`: Prefix pathnames by this string.
546−- `excludes`: Exclude files matching these patterns (applies after the above arguments).
547−- `includes`: Include only files matching these patterns (applies after the above arguments).
545+- `excludes`: Exclude files matching this pattern.
546+- `includes`: Include only files matching this pattern.
548547- `revert`: Revert the patch.
549548
550549Note that because the checksum is computed after applying these effects, using or modifying these arguments will have no effect unless the `sha256` argument is changed as well.
doc/contributing/reviewing-contributions.chapter.md+2−2
@@ -122,7 +122,7 @@ Reviewing process:
122122 - [CODEOWNERS](https://help.github.com/articles/about-codeowners/) will make GitHub notify users based on the submitted changes, but it can happen that it misses some of the package maintainers.
123123- Ensure that the module tests, if any, are succeeding.
124124- Ensure that the introduced options are correct.
125− - Type should be appropriate (string related types differs in their merging capabilities, `loaOf` and `string` types are deprecated).
125+ - Type should be appropriate (string related types differs in their merging capabilities, `optionSet` and `string` types are deprecated).
126126 - Description, default and example should be provided.
127127- Ensure that option changes are backward compatible.
128128 - `mkRenamedOptionModuleWith` provides a way to make option changes backward compatible.
@@ -157,7 +157,7 @@ Reviewing process:
157157
158158- Ensure that the module tests, if any, are succeeding.
159159- Ensure that the introduced options are correct.
160− - Type should be appropriate (string related types differs in their merging capabilities, `loaOf` and `string` types are deprecated).
160+ - Type should be appropriate (string related types differs in their merging capabilities, `optionSet` and `string` types are deprecated).
161161 - Description, default and example should be provided.
162162- Ensure that module `meta` field is present
163163 - Maintainers should be declared in `meta.maintainers`.
doc/contributing/submitting-changes.chapter.md+1−1
@@ -96,7 +96,7 @@ We use jbidwatcher as an example for a discontinued project here.
9696
97971. Have Nixpkgs checked out locally and up to date.
98981. 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`
1001001. Remove the package from the list of all packages (`pkgs/top-level/all-packages.nix`).
1011011. 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.)
102102
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"
4− xml:id="chap-hooks">
5− <title>Hooks reference</title>
6− <para>
7− Nixpkgs has several hook packages that augment the stdenv phases.
8− </para>
9− <xi:include href="./postgresql-test-hook.section.xml" />
10−</chapter>
doc/hooks/postgresql-test-hook.section.mddeleted−59
@@ -1,59 +0,0 @@
1−
2−# `postgresqlTestHook` {#sec-postgresqlTestHook}
3−
4−This hook starts a PostgreSQL server during the `checkPhase`. Example:
5−
6−```nix
7−{ stdenv, postgresql, postgresqlTestHook }:
8−stdenv.mkDerivation {
9−
10− # ...
11−
12− checkInputs = [
13− postgresql
14− postgresqlTestHook
15− ];
16−}
17−```
18−
19−If you use a custom `checkPhase`, remember to add the `runHook` calls:
20−```nix
21− checkPhase ''
22− runHook preCheck
23−
24− # ... your tests
25−
26− runHook postCheck
27− ''
28−```
29−
30−## Variables {#sec-postgresqlTestHook-variables}
31−
32−The hook logic will read a number of variables and set them to a default value if unset or empty.
33−
34−Exported variables:
35−
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`.
40−
41−Bash-only variables:
42−
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`.
48−
49−## TCP and the Nix sandbox {#sec-postgresqlTestHook-tcp}
50−
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.
53−
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.
56−
57−::: {.note}
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.
59−:::
doc/languages-frameworks/chicken.section.mddeleted−49
@@ -1,49 +0,0 @@
1−# CHICKEN {#sec-chicken}
2−
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".
6−
7−## Using Eggs
8−
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
13−might write:
14−
15−```nix
16− buildInputs = [
17− chicken
18− chickenPackages.chickenEggs.srfi-189
19− ];
20−```
21−
22−Both `chicken` and its eggs have a setup hook which configures the environment
23−variables `CHICKEN_INCLUDE_PATH` and `CHICKEN_REPOSITORY_PATH`.
24−
25−## Updating Eggs
26−
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.
30−
31−The package set is regenerated by running the following shell commands:
32−
33−```
34−$ nix-shell -p chickenPackages.egg2nix
35−$ cd pkgs/development/compilers/chicken/5/
36−$ egg2nix eggs.scm > eggs.nix
37−```
38−
39−## Adding Eggs
40−
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.
45−
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 @@
1−# CUDA {#cuda}
2−
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`.
6−
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.
12−
13−To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
14−```nix
15−cudaSupport ? false
16−cudaPackages ? {}
17−```
18−
19−When using `callPackage`, you can choose to pass in a different variant, e.g.
20−when a different version of the toolkit suffices
21−```nix
22−mypkg = callPackage { cudaPackages = cudaPackages_11_5; }
23−```
24−
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
27−set.
28−```nix
29−mypkg = let
30− cudaPackages = cudaPackages_11_5.overrideScope' (final: prev {
31− cudnn = prev.cudnn_8_3_2;
32− }});
33−in callPackage { inherit cudaPackages; };
34−```
doc/languages-frameworks/gnome.section.md+2−16
@@ -42,21 +42,7 @@ Unlike other libraries mentioned in this section, GdkPixbuf only supports a sing
4242
4343### Icons {#ssec-gnome-icons}
4444
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.
46−
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:
48−
49−```nix
50− buildInputs = [
51− pantheon.elementary-icon-theme
52− ];
53− preFixup = ''
54− gappsWrapperArgs+=(
55− # The icon theme is hardcoded.
56− --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
57− )
58− '';
59−```
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.
6046
6147To 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.
6248
@@ -112,7 +98,7 @@ For convenience, it also adds `dconf.lib` for a GIO module implementing a GSetti
11298
11399- []{#ssec-gnome-hooks-dconf} `dconf.lib` is a dependency of `wrapGAppsHook`, which then also adds it to the `GIO_EXTRA_MODULES` variable.
114100
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`.
116102
117103- []{#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`.
118104
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
142142
143143### `subPackages` {#var-go-subPackages}
144144
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.
146−
147−### `excludedPackages` {#var-go-excludedPackages}
148−
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.
145+Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
doc/languages-frameworks/index.xml−2
@@ -9,10 +9,8 @@
99 <xi:include href="android.section.xml" />
1010 <xi:include href="beam.section.xml" />
1111 <xi:include href="bower.section.xml" />
12− <xi:include href="chicken.section.xml" />
1312 <xi:include href="coq.section.xml" />
1413 <xi:include href="crystal.section.xml" />
15− <xi:include href="cuda.section.xml" />
1614 <xi:include href="dhall.section.xml" />
1715 <xi:include href="dotnet.section.xml" />
1816 <xi:include href="emscripten.section.xml" />
doc/languages-frameworks/ocaml.section.md+3−7
@@ -38,12 +38,8 @@ Here is a simple package example.
3838
3939- It uses the `fetchFromGitHub` fetcher to get its source.
4040
41−- `duneVersion = "2"` ensures that Dune version 2 is used for the
42− build (this is the default; valid values are `"1"`, `"2"`, and `"3"`);
43− note that there is also a legacy `useDune2` boolean attribute:
44− set to `false` it corresponds to `duneVersion = "1"`; set to `true` it
45− corresponds to `duneVersion = "2"`. If both arguments (`duneVersion` and
46− `useDune2`) are given, the second one (`useDune2`) is silently ignored.
41+- `useDune2 = true` ensures that Dune version 2 is used for the
42+ build (this is the default; set to `false` to use Dune version 1).
4743
4844- It sets the optional `doCheck` attribute such that tests will be run with
4945 `dune runtest -p angstrom` after the build (`dune build -p angstrom`) is
@@ -71,7 +67,7 @@ Here is a simple package example.
7167buildDunePackage rec {
7268 pname = "angstrom";
7369 version = "0.15.0";
74− duneVersion = "2";
70+ useDune2 = true;
7571
7672 minimalOCamlVersion = "4.04";
7773
doc/languages-frameworks/texlive.section.md+1−1
@@ -6,7 +6,7 @@ Since release 15.09 there is a new TeX Live packaging that lives entirely under
66
77- For basic usage just pull `texlive.combined.scheme-basic` for an environment with basic LaTeX support.
88
9−- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this. Most CTAN packages should be available:
9+- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this:
1010
1111 ```nix
1212 texlive.combine {
doc/languages-frameworks/vim.section.md+2−5
@@ -18,7 +18,7 @@ Adding custom .vimrc lines can be done using the following code:
1818
1919```nix
2020vim_configurable.customize {
21− # `name` optionally specifies the name of the executable and package
21+ # `name` specifies the name of the executable and package
2222 name = "vim-with-plugins";
2323
2424 vimrcConfig.customRC = ''
@@ -28,9 +28,6 @@ vim_configurable.customize {
2828```
2929
3030This configuration is used when Vim is invoked with the command specified as name, in this case `vim-with-plugins`.
31−You can also omit `name` to customize Vim itself. See the
32−[definition of `vimUtils.makeCustomizable`](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/vim/plugins/vim-utils.nix#L408)
33−for all supported options.
3431
3532For Neovim the `configure` argument can be overridden to achieve the same:
3633
@@ -289,7 +286,7 @@ Sample output1:
289286"reload" = buildVimPluginFrom2Nix { # created by nix#NixDerivation
290287 name = "reload";
291288 src = fetchgit {
292− url = "https://github.com/xolox/vim-reload";
289+ url = "git://github.com/xolox/vim-reload";
293290 rev = "0a601a668727f5b675cb1ddc19f6861f3f7ab9e1";
294291 sha256 = "0vb832l9yxj919f5hfg6qj6bn9ni57gnjd3bj7zpq7d4iv2s4wdh";
295292 };
doc/manual.xml−2
@@ -25,10 +25,8 @@
2525 <title>Builders</title>
2626 <xi:include href="builders/fetchers.chapter.xml" />
2727 <xi:include href="builders/trivial-builders.chapter.xml" />
28− <xi:include href="builders/testers.chapter.xml" />
2928 <xi:include href="builders/special.xml" />
3029 <xi:include href="builders/images.xml" />
31− <xi:include href="hooks/index.xml" />
3230 <xi:include href="languages-frameworks/index.xml" />
3331 <xi:include href="builders/packages/index.xml" />
3432 </part>
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-
7878
7979Finally, 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.
8080
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.
82−
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`.
84−
85−Only nine dependency types matter in practice:
81+Putting this all together, that means we have dependencies in the form "host → target", in at most the following six combinations:
8682
8783#### Possible dependency types {#possible-dependency-types}
8884
89−| Dependency type | Dependency’s host platform | Dependency’s target platform |
90−|-----------------|----------------------------|------------------------------|
91−| build → * | build | (none) |
92−| build → build | build | build |
93−| build → host | build | host |
94−| build → target | build | target |
95−| host → * | host | (none) |
96−| host → host | host | host |
97−| host → target | host | target |
98−| target → * | target | (none) |
99−| target → target | target | target |
100−
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.
102−
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".
104−
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.
106−
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".
108−
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.
110−
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.
113−
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.
115−
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)`.
85+| Dependency’s host platform | Dependency’s target platform |
86+|----------------------------|------------------------------|
87+| build | build |
88+| build | host |
89+| build | target |
90+| host | host |
91+| host | target |
92+| target | target |
11793
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.
11994
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)`.
12196
12297### Cross packaging cookbook {#ssec-cross-cookbook}
12398
doc/stdenv/meta.chapter.md−34
@@ -175,40 +175,6 @@ The NixOS tests are available as `nixosTests` in parameters of derivations. For
175175
176176NixOS 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).
177177
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.
183−
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
186−all places.
187−
188−```nix
189−# my-package/default.nix
190−{ stdenv, callPackage }:
191−stdenv.mkDerivation (finalAttrs: {
192− # ...
193− passthru.tests.example = callPackage ./example.nix { my-package = finalAttrs.finalPackage; };
194−})
195−```
196−
197−```nix
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" ];
203−} ''
204− my-package --help
205− my-package <example.in >example.actual
206− diff -U3 --color=auto example.expected example.actual
207− mkdir $out
208−''
209−```
210−
211−
212178### `timeout` {#var-meta-timeout}
213179
214180A 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
125125A dependency is said to be **propagated** when some of its other-transitive (non-immediate) downstream dependencies also need it as an immediate dependency.
126126[^footnote-stdenv-propagated-dependencies]
127127
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:
129129
130130| `host → target` | attribute name | offset |
131131| ------------------- | ------------------- | -------- |
@@ -317,60 +317,6 @@ The script will be usually run from the root of the Nixpkgs repository but you s
317317
318318For information about how to run the updates, execute `nix-shell maintainers/scripts/update.nix`.
319319
320−### Recursive attributes in `mkDerivation`
321−
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:
323−
324−```nix
325−mkDerivation (finalAttrs: {
326− pname = "hello";
327− withFeature = true;
328− configureFlags =
329− lib.optionals finalAttrs.withFeature ["--with-feature"];
330−})
331−```
332−
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.
335−
336−Instead, the definition references `finalAttrs`, allowing users to change `withFeature`
337−consistently with `overrideAttrs`.
338−
339−`finalAttrs` also contains the attribute `finalPackage`, which includes the output paths, etc.
340−
341−Let's look at a more elaborate example to understand the differences between
342−various bindings:
343−
344−```nix
345−# `pkg` is the _original_ definition (for illustration purposes)
346−let pkg =
347− mkDerivation (finalAttrs: {
348− # ...
349−
350− # An example attribute
351− packages = [];
352−
353− # `passthru.tests` is a commonly defined attribute.
354− passthru.tests.simple = f finalAttrs.finalPackage;
355−
356− # An example of an attribute containing a function
357− passthru.appendPackages = packages':
358− finalAttrs.finalPackage.overrideAttrs (newSelf: super: {
359− packages = super.packages ++ packages';
360− });
361−
362− # For illustration purposes; referenced as
363− # `(pkg.overrideAttrs(x)).finalAttrs` etc in the text below.
364− passthru.finalAttrs = finalAttrs;
365− passthru.original = pkg;
366− });
367−in pkg
368−```
369−
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`.
371−
372−See also the section about [`passthru.tests`](#var-meta-tests).
373−
374320## Phases {#sec-stdenv-phases}
375321
376322`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
10971043
10981044In 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.
10991045
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.
11011047
11021048The `autoPatchelf` command also recognizes a `--no-recurse` command line flag, which prevents it from recursing into subdirectories.
11031049
doc/using/overrides.chapter.md+2−6
@@ -39,18 +39,14 @@ The function `overrideAttrs` allows overriding the attribute set passed to a `st
3939Example usage:
4040
4141```nix
42−helloWithDebug = pkgs.hello.overrideAttrs (finalAttrs: previousAttrs: {
42+helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
4343 separateDebugInfo = true;
4444});
4545```
4646
4747In 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.
4848
49−The argument `previousAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
50−
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.
52−
53−If only a one-argument function is written, the argument has the meaning of `previousAttrs`.
49+The argument `oldAttrs` is conventionally used to refer to the attr set originally passed to `stdenv.mkDerivation`.
5450
5551::: {.note}
5652Note 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).
lib/customisation.nix+2−49
@@ -117,55 +117,8 @@ rec {
117117 callPackageWith = autoArgs: fn: args:
118118 let
119119 f = if lib.isFunction fn then fn else import fn;
120− fargs = lib.functionArgs f;
121−
122− # All arguments that will be passed to the function
123− # This includes automatic ones and ones passed explicitly
124− allArgs = builtins.intersectAttrs fargs autoArgs // args;
125−
126− # A list of argument names that the function requires, but
127− # wouldn't be passed to it
128− missingArgs = lib.attrNames
129− # Filter out arguments that have a default value
130− (lib.filterAttrs (name: value: ! value)
131− # Filter out arguments that would be passed
132− (removeAttrs fargs (lib.attrNames allArgs)));
133−
134− # Get a list of suggested argument names for a given missing one
135− getSuggestions = arg: lib.pipe (autoArgs // args) [
136− lib.attrNames
137− # Only use ones that are at most 2 edits away. While mork would work,
138− # levenshteinAtMost is only fast for 2 or less.
139− (lib.filter (lib.strings.levenshteinAtMost 2 arg))
140− # Put strings with shorter distance first
141− (lib.sort (x: y: lib.strings.levenshtein x arg < lib.strings.levenshtein y arg))
142− # Only take the first couple results
143− (lib.take 3)
144− # Quote all entries
145− (map (x: "\"" + x + "\""))
146− ];
147−
148− prettySuggestions = suggestions:
149− if suggestions == [] then ""
150− else if lib.length suggestions == 1 then ", did you mean ${lib.elemAt suggestions 0}?"
151− else ", did you mean ${lib.concatStringsSep ", " (lib.init suggestions)} or ${lib.last suggestions}?";
152−
153− errorForArg = arg:
154− let
155− loc = builtins.unsafeGetAttrPos arg fargs;
156− # loc' can be removed once lib/minver.nix is >2.3.4, since that includes
157− # https://github.com/NixOS/nix/pull/3468 which makes loc be non-null
158− loc' = if loc != null then loc.file + ":" + toString loc.line
159− else if ! lib.isFunction fn then
160− toString fn + lib.optionalString (lib.sources.pathIsDirectory fn) "/default.nix"
161− else "<unknown location>";
162− in "Function called without required argument \"${arg}\" at "
163− + "${loc'}${prettySuggestions (getSuggestions arg)}";
164−
165− # Only show the error for the first missing argument
166− error = errorForArg (lib.head missingArgs);
167−
168− in if missingArgs == [] then makeOverridable f allArgs else throw error;
120+ auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
121+ in makeOverridable f (auto // args);
169122
170123
171124 /* Like callPackage, but for a function that returns an attribute
lib/default.nix+5−11
@@ -11,9 +11,6 @@ let
1111 callLibs = file: import file { lib = self; };
1212 in {
1313
14− # interacting with flakes
15− flakes = callLibs ./flakes.nix;
16−
1714 # often used, or depending on very little
1815 trivial = callLibs ./trivial.nix;
1916 fixedPoints = callLibs ./fixed-points.nix;
@@ -62,7 +59,6 @@ let
6259 # linux kernel configuration
6360 kernel = callLibs ./kernel.nix;
6461
65− inherit (self.flakes) callLocklessFlake;
6662 inherit (builtins) add addErrorContext attrNames concatLists
6763 deepSeq elem elemAt filter genericClosure genList getAttr
6864 hasAttr head isAttrs isBool isInt isList isString length
@@ -70,10 +66,9 @@ let
7066 stringLength sub substring tail trace;
7167 inherit (self.trivial) id const pipe concat or and bitAnd bitOr bitXor
7268 bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max
73− importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum
69+ importJSON importTOML warn warnIf throwIfNot checkListOfEnum
7470 info showWarnings nixpkgsVersion version isInOldestRelease
75− mod compare splitByAndCompare
76− functionArgs setFunctionArgs isFunction toFunction
71+ mod compare splitByAndCompare functionArgs setFunctionArgs isFunction
7772 toHexString toBaseDigits;
7873 inherit (self.fixedPoints) fix fix' converge extends composeExtensions
7974 composeManyExtensions makeExtensible makeExtensibleWithCustomName;
@@ -98,8 +93,7 @@ let
9893 concatImapStringsSep makeSearchPath makeSearchPathOutput
9994 makeLibraryPath makeBinPath optionalString
10095 hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
101− escapeShellArg escapeShellArgs isValidPosixName toShellVar toShellVars
102− escapeRegex escapeXML replaceChars lowerChars
96+ escapeShellArg escapeShellArgs escapeRegex escapeXML replaceChars lowerChars
10397 upperChars toLower toUpper addContextFrom splitString
10498 removePrefix removeSuffix versionOlder versionAtLeast
10599 getName getVersion
@@ -113,13 +107,13 @@ let
113107 makeScope makeScopeWithSplicing;
114108 inherit (self.meta) addMetaAttrs dontDistribute setName updateName
115109 appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
116− hiPrioSet getLicenseFromSpdxId getExe;
110+ hiPrioSet getLicenseFromSpdxId;
117111 inherit (self.sources) pathType pathIsDirectory cleanSourceFilter
118112 cleanSource sourceByRegex sourceFilesBySuffices
119113 commitIdFromGitRepo cleanSourceWith pathHasContext
120114 canCleanSource pathIsRegularFile pathIsGitRepo;
121115 inherit (self.modules) evalModules setDefaultModuleLocation
122− unifyModuleSyntax applyModuleArgsIfFunction mergeModules
116+ unifyModuleSyntax applyIfFunction mergeModules
123117 mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
124118 pushDownProperties dischargeProperties filterOverrides
125119 sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
lib/flakes.nixdeleted−22
@@ -1,22 +0,0 @@
1−{ lib }:
2−
3−rec {
4−
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.
8−
9− Example:
10− callLocklessFlake {
11− path = ./directoryContainingFlake;
12− inputs = { inherit nixpkgs; };
13− }
14− */
15− callLocklessFlake = { path, inputs ? { } }:
16− let
17− self = { outPath = path; } //
18− ((import (path + "/flake.nix")).outputs (inputs // { self = self; }));
19− in
20− self;
21−
22−}
lib/generators.nix+2−47
@@ -10,7 +10,7 @@
1010 * are mostly generators themselves, called with
1111 * their respective default values; they can be reused.
1212 *
13− * Tests can be found in ./tests/misc.nix
13+ * Tests can be found in ./tests.nix
1414 * Documentation in the manual, #sec-generators
1515 */
1616{ lib }:
@@ -108,7 +108,7 @@ rec {
108108 * The mk* configuration attributes can generically change
109109 * the way sections and key-value strings are generated.
110110 *
111− * For more examples see the test cases in ./tests/misc.nix.
111+ * For more examples see the test cases in ./tests.nix.
112112 */
113113 toINI = {
114114 # apply transformations (e.g. escapes) to section names
@@ -130,51 +130,6 @@ rec {
130130 # map input to ini sections
131131 mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
132132
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.
136− *
137− * generators.toINIWithGlobalSection {} {
138− * globalSection = {
139− * someGlobalKey = "hi";
140− * };
141− * sections = {
142− * foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
143− * baz = { "also, integers" = 42; };
144− * }
145− *
146− *> someGlobalKey=hi
147− *>
148− *> [baz]
149− *> also, integers=42
150− *>
151− *> [foo]
152− *> ciao=bar
153− *> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
154− *
155− * The mk* configuration attributes can generically change
156− * the way sections and key-value strings are generated.
157− *
158− * For more examples see the test cases in ./tests/misc.nix.
159− *
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`.
163− */
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 == {}
173− then ""
174− else (toKeyValue { inherit mkKeyValue listsAsDuplicateKeys; } globalSection)
175− + "\n")
176− + (toINI { inherit mkSectionName mkKeyValue listsAsDuplicateKeys; } sections);
177−
178133 /* Generate a git-config file from an attrset.
179134 *
180135 * It has two major differences from the regular INI format:
lib/licenses.nix−10
@@ -389,11 +389,6 @@ in mkLicense lset) ({
389389 free = false;
390390 };
391391
392− generaluser = {
393− fullName = "GeneralUser GS License v2.0";
394− url = "http://www.schristiancollins.com/generaluser.php"; # license included in sources
395− };
396−
397392 gpl1Only = {
398393 spdxId = "GPL-1.0-only";
399394 fullName = "GNU General Public License v1.0 only";
@@ -612,11 +607,6 @@ in mkLicense lset) ({
612607 fullName = "Enlightenment License (e16)";
613608 };
614609
615− mit0 = {
616− spdxId = "MIT-0";
617− fullName = "MIT No Attribution";
618− };
619−
620610 mpl10 = {
621611 spdxId = "MPL-1.0";
622612 fullName = "Mozilla Public License 1.0";
lib/meta.nix−14
@@ -126,18 +126,4 @@ rec {
126126 lib.warn "getLicenseFromSpdxId: No license matches the given SPDX ID: ${licstr}"
127127 { shortName = licstr; }
128128 );
129−
130− /* Get the path to the main program of a derivation with either
131− meta.mainProgram or pname or name
132−
133− Type: getExe :: derivation -> string
134−
135− Example:
136− getExe pkgs.hello
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"
140− */
141− getExe = x:
142− "${lib.getBin x}/bin/${x.meta.mainProgram or (lib.getName x)}";
143129}
lib/modules.nix+35−106
@@ -46,7 +46,6 @@ let
4646 showFiles
4747 showOption
4848 unknownModule
49− literalExpression
5049 ;
5150
5251 showDeclPrefix = loc: decl: prefix:
@@ -113,10 +112,6 @@ rec {
113112 args ? {}
114113 , # This would be remove in the future, Prefer _module.check option instead.
115114 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
120115 }:
121116 let
122117 withWarnings = x:
@@ -145,7 +140,7 @@ rec {
145140 # this module is used, to avoid conflicts and allow chaining of
146141 # extendModules.
147142 internalModule = rec {
148− _file = "lib/modules.nix";
143+ _file = ./modules.nix;
149144
150145 key = _file;
151146
@@ -158,94 +153,8 @@ rec {
158153 # a `_module.args.pkgs = import (fetchTarball { ... }) {}` won't
159154 # start a download when `pkgs` wasn't evaluated.
160155 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.
164− ${if prefix == []
165− then null # unset => visible
166− else "internal"} = true;
167− # TODO: Change the type of this option to a submodule with a
168− # freeformType, so that individual arguments can be documented
169− # separately
170− description = ''
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>.
174− </para>
175− <para>
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.
183− </para>
184− <para>
185− Some arguments are already passed by default, of which the
186− following <emphasis>cannot</emphasis> be changed with this option:
187− <itemizedlist>
188− <listitem>
189− <para>
190− <varname>lib</varname>: The nixpkgs library.
191− </para>
192− </listitem>
193− <listitem>
194− <para>
195− <varname>config</varname>: The results of all options after merging the values from all modules together.
196− </para>
197− </listitem>
198− <listitem>
199− <para>
200− <varname>options</varname>: The options declared in all modules.
201− </para>
202− </listitem>
203− <listitem>
204− <para>
205− <varname>specialArgs</varname>: The <literal>specialArgs</literal> argument passed to <literal>evalModules</literal>.
206− </para>
207− </listitem>
208− <listitem>
209− <para>
210− All attributes of <varname>specialArgs</varname>
211− </para>
212− <para>
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.
216− </para>
217− <para>
218− For this reason, callers of the module system can provide <literal>specialArgs</literal>
219− which are available during import resolution.
220− </para>
221− <para>
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.
227− <programlisting>
228− { modulesPath, ... }: {
229− imports = [
230− (modulesPath + "/profiles/minimal.nix")
231− ];
232− }
233− </programlisting>
234− </para>
235− </listitem>
236− </itemizedlist>
237− </para>
238− <para>
239− For NixOS, the default value for this option includes at least this argument:
240− <itemizedlist>
241− <listitem>
242− <para>
243− <varname>pkgs</varname>: The nixpkgs package set according to
244− the <option>nixpkgs.pkgs</option> option.
245− </para>
246− </listitem>
247− </itemizedlist>
248− '';
156+ internal = true;
157+ description = "Arguments passed to each module.";
249158 };
250159
251160 _module.check = mkOption {
@@ -345,17 +254,15 @@ rec {
345254 modules ? [],
346255 specialArgs ? {},
347256 prefix ? [],
348− extensionOffset ? length modules,
349257 }:
350258 evalModules (evalModulesArgs // {
351259 modules = regularModules ++ modules;
352260 specialArgs = evalModulesArgs.specialArgs or {} // specialArgs;
353261 prefix = extendArgs.prefix or evalModulesArgs.prefix;
354− inherit extensionOffset;
355262 });
356263
357264 type = lib.types.submoduleWith {
358− inherit modules specialArgs extensionOffset;
265+ inherit modules specialArgs;
359266 };
360267
361268 result = withWarnings {
@@ -375,11 +282,11 @@ rec {
375282 # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
376283 loadModule = args: fallbackFile: fallbackKey: m:
377284 if isFunction m || isAttrs m then
378− unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgsIfFunction fallbackKey m args)
285+ unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
379286 else if isList m then
380287 let defs = [{ file = fallbackFile; value = m; }]; in
381288 throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
382− else unifyModuleSyntax (toString m) (toString m) (applyModuleArgsIfFunction (toString m) (import m) args);
289+ else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);
383290
384291 /*
385292 Collects all modules recursively into the form
@@ -476,7 +383,7 @@ rec {
476383 config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
477384 };
478385
479− applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
386+ applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
480387 let
481388 # Module arguments are resolved in a strict manner when attribute set
482389 # deconstruction is used. As the arguments are now defined with the
@@ -702,9 +609,17 @@ rec {
702609 throw "The option `${showOption loc}' in `${opt._file}' is already declared in ${showFiles res.declarations}."
703610 else
704611 let
612+ /* Add the modules of the current option to the list of modules
613+ already collected. The options attribute except either a list of
614+ submodules or a submodule. For each submodule, we add the file of the
615+ current option declaration as the file use for the submodule. If the
616+ submodule defines any filename, then we ignore the enclosing option file. */
617+ options' = toList opt.options.options;
618+
705619 getSubModules = opt.options.type.getSubModules or null;
706620 submodules =
707621 if getSubModules != null then map (setDefaultModuleLocation opt._file) getSubModules ++ res.options
622+ else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
708623 else res.options;
709624 in opt.options // res //
710625 { declarations = res.declarations ++ [opt._file];
@@ -887,13 +802,27 @@ rec {
887802 compare = a: b: (a.priority or 1000) < (b.priority or 1000);
888803 in sort compare defs';
889804
890− # This calls substSubModules, whose entire purpose is only to ensure that
891− # option declarations in submodules have accurate position information.
892− # TODO: Merge this into mergeOptionDecls
893805 fixupOptionType = loc: opt:
894− if opt.type.getSubModules or null == null
895− then opt // { type = opt.type or types.unspecified; }
896− else opt // { type = opt.type.substSubModules opt.options; options = []; };
806+ let
807+ options = opt.options or
808+ (throw "Option `${showOption loc}' has type optionSet but has no option attribute, in ${showFiles opt.declarations}.");
809+
810+ # Hack for backward compatibility: convert options of type
811+ # optionSet to options of type submodule. FIXME: remove
812+ # eventually.
813+ f = tp:
814+ if tp.name == "option set" || tp.name == "submodule" then
815+ throw "The option ${showOption loc} uses submodules without a wrapping type, in ${showFiles opt.declarations}."
816+ else if (tp.functor.wrapped.name or null) == "optionSet" then
817+ if tp.name == "attrsOf" then types.attrsOf (types.submodule options)
818+ else if tp.name == "listOf" then types.listOf (types.submodule options)
819+ else if tp.name == "nullOr" then types.nullOr (types.submodule options)
820+ else tp
821+ else tp;
822+ in
823+ if opt.type.getSubModules or null == null
824+ then opt // { type = f (opt.type or types.unspecified); }
825+ else opt // { type = opt.type.substSubModules opt.options; options = []; };
897826
898827
899828 /* Properties. */
lib/options.nix+3−1
@@ -79,6 +79,8 @@ rec {
7979 visible ? null,
8080 # Whether the option can be set only once
8181 readOnly ? null,
82+ # Deprecated, used by types.optionSet.
83+ options ? null
8284 } @ attrs:
8385 attrs // { _type = "option"; };
8486
@@ -120,7 +122,7 @@ rec {
120122 Example:
121123 mkPackageOption pkgs "GHC" {
122124 default = [ "ghc" ];
123− example = "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
125+ example = "pkgs.haskell.package.ghc921.ghc.withPackages (hkgs: [ hkgs.primes ])";
124126 }
125127 => { _type = "option"; default = «derivation /nix/store/jxx55cxsjrf8kyh3fp2ya17q99w7541r-ghc-8.10.7.drv»; defaultText = { ... }; description = "The GHC package to use."; example = { ... }; type = { ... }; }
126128 */
lib/strings.nix+5−196
@@ -17,7 +17,6 @@ rec {
1717 head
1818 isInt
1919 isList
20− isAttrs
2120 isString
2221 match
2322 parseDrvName
@@ -254,7 +253,10 @@ rec {
254253 => false
255254 */
256255 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);
258260
259261 /* Convert a string to a list of characters (i.e. singleton strings).
260262 This allows you to, e.g., map a function over each character. However,
@@ -325,65 +327,6 @@ rec {
325327 */
326328 escapeShellArgs = concatMapStringsSep " " escapeShellArg;
327329
328− /* Test whether the given name is a valid POSIX shell variable name.
329−
330− Type: string -> bool
331−
332− Example:
333− isValidPosixName "foo_bar000"
334− => true
335− isValidPosixName "0-bad.jpg"
336− => false
337− */
338− isValidPosixName = name: match "[a-zA-Z_][a-zA-Z0-9_]*" name != null;
339−
340− /* Translate a Nix value into a shell variable declaration, with proper escaping.
341−
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.
345−
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).
348−
349− Type: string -> (string | listOf string | attrsOf string) -> string
350−
351− Example:
352− ''
353− ${toShellVar "foo" "some string"}
354− [[ "$foo" == "some string" ]]
355− ''
356− */
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}"
363− ) value)
364− })"
365− else if isList value then
366− "declare -a ${name}=(${escapeShellArgs value})"
367− else
368− "${name}=${escapeShellArg value}"
369− );
370−
371− /* Translate an attribute set into corresponding shell variable declarations
372− using `toShellVar`.
373−
374− Type: attrsOf (string | listOf string | attrsOf string) -> string
375−
376− Example:
377− let
378− foo = "value";
379− bar = foo;
380− in ''
381− ${toShellVars { inherit foo bar; }}
382− [[ "$foo" == "$bar" ]]
383− ''
384− */
385− toShellVars = vars: concatStringsSep "\n" (lib.mapAttrsToList toShellVar vars);
386−
387330 /* Turn a string into a Nix expression representing that string
388331
389332 Type: string -> string
@@ -813,14 +756,7 @@ rec {
813756 sanitizeDerivationName pkgs.hello
814757 => "-nix-store-2g75chlbpxlrqn15zlby2dfh8hr9qwbk-hello-2.10"
815758 */
816− sanitizeDerivationName =
817− let okRegex = match "[[:alnum:]+_?=-][[:alnum:]+._?=-]*";
818− in
819− string:
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 [
759+ sanitizeDerivationName = string: lib.pipe string [
824760 # Get rid of string context. This is safe under the assumption that the
825761 # resulting string is only used as a derivation name
826762 unsafeDiscardStringContext
@@ -838,131 +774,4 @@ rec {
838774 (x: if stringLength x == 0 then "unknown" else x)
839775 ];
840776
841− /* Computes the Levenshtein distance between two strings.
842− Complexity O(n*m) where n and m are the lengths of the strings.
843− Algorithm adjusted from https://stackoverflow.com/a/9750974/6605742
844−
845− Type: levenshtein :: string -> string -> int
846−
847− Example:
848− levenshtein "foo" "foo"
849− => 0
850− levenshtein "book" "hook"
851− => 1
852− levenshtein "hello" "Heyo"
853− => 3
854− */
855− levenshtein = a: b: let
856− # Two dimensional array with dimensions (stringLength a + 1, stringLength b + 1)
857− arr = lib.genList (i:
858− lib.genList (j:
859− dist i j
860− ) (stringLength b + 1)
861− ) (stringLength a + 1);
862− d = x: y: lib.elemAt (lib.elemAt arr x) y;
863− dist = i: j:
864− let c = if substring (i - 1) 1 a == substring (j - 1) 1 b
865− then 0 else 1;
866− in
867− if j == 0 then i
868− else if i == 0 then j
869− else lib.min
870− ( lib.min (d (i - 1) j + 1) (d i (j - 1) + 1))
871− ( d (i - 1) (j - 1) + c );
872− in d (stringLength a) (stringLength b);
873−
874− /* Returns the length of the prefix common to both strings.
875− */
876− commonPrefixLength = a: b:
877− let
878− m = lib.min (stringLength a) (stringLength b);
879− go = i: if i >= m then m else if substring i 1 a == substring i 1 b then go (i + 1) else i;
880− in go 0;
881−
882− /* Returns the length of the suffix common to both strings.
883− */
884− commonSuffixLength = a: b:
885− let
886− m = lib.min (stringLength a) (stringLength b);
887− go = i: if i >= m then m else if substring (stringLength a - i - 1) 1 a == substring (stringLength b - i - 1) 1 b then go (i + 1) else i;
888− in go 0;
889−
890− /* Returns whether the levenshtein distance between two strings is at most some value
891− Complexity is O(min(n,m)) for k <= 2 and O(n*m) otherwise
892−
893− Type: levenshteinAtMost :: int -> string -> string -> bool
894−
895− Example:
896− levenshteinAtMost 0 "foo" "foo"
897− => true
898− levenshteinAtMost 1 "foo" "boa"
899− => false
900− levenshteinAtMost 2 "foo" "boa"
901− => true
902− levenshteinAtMost 2 "This is a sentence" "this is a sentense."
903− => false
904− levenshteinAtMost 3 "This is a sentence" "this is a sentense."
905− => true
906−
907− */
908− levenshteinAtMost = let
909− infixDifferAtMost1 = x: y: stringLength x <= 1 && stringLength y <= 1;
910−
911− # This function takes two strings stripped by their common pre and suffix,
912− # and returns whether they differ by at most two by Levenshtein distance.
913− # Because of this stripping, if they do indeed differ by at most two edits,
914− # we know that those edits were (if at all) done at the start or the end,
915− # while the middle has to have stayed the same. This fact is used in the
916− # implementation.
917− infixDifferAtMost2 = x: y:
918− let
919− xlen = stringLength x;
920− ylen = stringLength y;
921− # This function is only called with |x| >= |y| and |x| - |y| <= 2, so
922− # diff is one of 0, 1 or 2
923− diff = xlen - ylen;
924−
925− # Infix of x and y, stripped by the left and right most character
926− xinfix = substring 1 (xlen - 2) x;
927− yinfix = substring 1 (ylen - 2) y;
928−
929− # x and y but a character deleted at the left or right
930− xdelr = substring 0 (xlen - 1) x;
931− xdell = substring 1 (xlen - 1) x;
932− ydelr = substring 0 (ylen - 1) y;
933− ydell = substring 1 (ylen - 1) y;
934− in
935− # A length difference of 2 can only be gotten with 2 delete edits,
936− # which have to have happened at the start and end of x
937− # Example: "abcdef" -> "bcde"
938− if diff == 2 then xinfix == y
939− # A length difference of 1 can only be gotten with a deletion on the
940− # right and a replacement on the left or vice versa.
941− # Example: "abcdef" -> "bcdez" or "zbcde"
942− else if diff == 1 then xinfix == ydelr || xinfix == ydell
943− # No length difference can either happen through replacements on both
944− # sides, or a deletion on the left and an insertion on the right or
945− # vice versa
946− # Example: "abcdef" -> "zbcdez" or "bcdefz" or "zabcde"
947− else xinfix == yinfix || xdelr == ydell || xdell == ydelr;
948−
949− in k: if k <= 0 then a: b: a == b else
950− let f = a: b:
951− let
952− alen = stringLength a;
953− blen = stringLength b;
954− prelen = commonPrefixLength a b;
955− suflen = commonSuffixLength a b;
956− presuflen = prelen + suflen;
957− ainfix = substring prelen (alen - presuflen) a;
958− binfix = substring prelen (blen - presuflen) b;
959− in
960− # Make a be the bigger string
961− if alen < blen then f b a
962− # If a has over k more characters than b, even with k deletes on a, b can't be reached
963− else if alen - blen > k then false
964− else if k == 1 then infixDifferAtMost1 ainfix binfix
965− else if k == 2 then infixDifferAtMost2 ainfix binfix
966− else levenshtein ainfix binfix <= k;
967− in f;
968777}
lib/systems/doubles.nix−2
@@ -74,8 +74,6 @@ in {
7474 mips = filterDoubles predicates.isMips;
7575 mmix = filterDoubles predicates.isMmix;
7676 riscv = filterDoubles predicates.isRiscV;
77− riscv32 = filterDoubles predicates.isRiscV32;
78− riscv64 = filterDoubles predicates.isRiscV64;
7977 vc4 = filterDoubles predicates.isVc4;
8078 or1k = filterDoubles predicates.isOr1k;
8179 m68k = filterDoubles predicates.isM68k;
lib/systems/inspect.nix−3
@@ -13,7 +13,6 @@ rec {
1313 isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
1414 isPowerPC = { cpu = cpuTypes.powerpc; };
1515 isPower = { cpu = { family = "power"; }; };
16− isPower64 = { cpu = { family = "power"; bits = 64; }; };
1716 isx86 = { cpu = { family = "x86"; }; };
1817 isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
1918 isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
@@ -24,8 +23,6 @@ rec {
2423 isMips64n64 = { cpu = { family = "mips"; bits = 64; }; abi = { abi = "64"; }; };
2524 isMmix = { cpu = { family = "mmix"; }; };
2625 isRiscV = { cpu = { family = "riscv"; }; };
27− isRiscV32 = { cpu = { family = "riscv"; bits = 32; }; };
28− isRiscV64 = { cpu = { family = "riscv"; bits = 64; }; };
2926 isSparc = { cpu = { family = "sparc"; }; };
3027 isWasm = { cpu = { family = "wasm"; }; };
3128 isMsp430 = { cpu = { family = "msp430"; }; };
lib/systems/platforms.nix+3−3
@@ -3,7 +3,7 @@
33# targetPlatform, etc) containing at least the minimal set of attrs
44# required (see types.parsedPlatform in lib/systems/parse.nix). This
55# 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.
77
88{ lib }:
99rec {
@@ -500,7 +500,7 @@ rec {
500500 # based on:
501501 # https://www.mail-archive.com/qemu-discuss@nongnu.org/msg05179.html
502502 # https://gmplib.org/~tege/qemu.html#mips64-debian
503− mips64el-qemu-linux-gnuabi64 = {
503+ mips64el-qemu-linux-gnuabi64 = (import ./examples).mips64el-linux-gnuabi64 // {
504504 linux-kernel = {
505505 name = "mips64el";
506506 baseConfig = "64r2el_defconfig";
@@ -568,5 +568,5 @@ rec {
568568
569569 else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
570570
571− else { };
571+ else pc;
572572}
lib/tests/flakes/subflakeTest/flake.nixdeleted−8
@@ -1,8 +0,0 @@
1−{
2− outputs = { self, subflake, callLocklessFlake }: rec {
3− x = (callLocklessFlake {
4− path = subflake;
5− inputs = {};
6− }).subflakeOutput;
7− };
8−}
lib/tests/flakes/subflakeTest/subflake/flake.nixdeleted−5
@@ -1,5 +0,0 @@
1−{
2− outputs = { self }: {
3− subflakeOutput = 1;
4− };
5−}
lib/tests/misc.nix+1−277
@@ -22,15 +22,6 @@ in
2222
2323runTests {
2424
25−# FLAKES
26−
27− testCallLocklessFlake = {
28− expr = callLocklessFlake {
29− path = ./flakes/subflakeTest;
30− inputs = { subflake = ./flakes/subflakeTest/subflake; inherit callLocklessFlake; };
31− };
32− expected = { x = 1; outPath = ./flakes/subflakeTest; };
33− };
3425
3526# TRIVIAL
3627
@@ -260,56 +251,6 @@ runTests {
260251 expected = ""test" 'test' < & >";
261252 };
262253
263− testToShellVars = {
264− expr = ''
265− ${toShellVars {
266− STRing01 = "just a 'string'";
267− _array_ = [ "with" "more strings" ];
268− assoc."with some" = ''
269− strings
270− possibly newlines
271− '';
272− }}
273− '';
274− expected = ''
275− STRing01='just a '\'''string'\''''
276− declare -a _array_=('with' 'more strings')
277− declare -A assoc=(['with some']='strings
278− possibly newlines
279− ')
280− '';
281− };
282−
283− testHasInfixFalse = {
284− expr = hasInfix "c" "abde";
285− expected = false;
286− };
287−
288− testHasInfixTrue = {
289− expr = hasInfix "c" "abcde";
290− expected = true;
291− };
292−
293− testHasInfixDerivation = {
294− expr = hasInfix "hello" (import ../.. { system = "x86_64-linux"; }).hello;
295− expected = true;
296− };
297−
298− testHasInfixPath = {
299− expr = hasInfix "tests" ./.;
300− expected = true;
301− };
302−
303− testHasInfixPathStoreDir = {
304− expr = hasInfix builtins.storeDir ./.;
305− expected = true;
306− };
307−
308− testHasInfixToString = {
309− expr = hasInfix "a" { __toString = _: "a"; };
310− expected = true;
311− };
312−
313254# LISTS
314255
315256 testFilter = {
@@ -530,66 +471,6 @@ runTests {
530471 '';
531472 };
532473
533− testToINIWithGlobalSectionEmpty = {
534− expr = generators.toINIWithGlobalSection {} {
535− globalSection = {
536− };
537− sections = {
538− };
539− };
540− expected = ''
541− '';
542− };
543−
544− testToINIWithGlobalSectionGlobalEmptyIsTheSameAsToINI =
545− let
546− sections = {
547− "section 1" = {
548− attribute1 = 5;
549− x = "Me-se JarJar Binx";
550− };
551− "foo" = {
552− "he\\h=he" = "this is okay";
553− };
554− };
555− in {
556− expr =
557− generators.toINIWithGlobalSection {} {
558− globalSection = {};
559− sections = sections;
560− };
561− expected = generators.toINI {} sections;
562− };
563−
564− testToINIWithGlobalSectionFull = {
565− expr = generators.toINIWithGlobalSection {} {
566− globalSection = {
567− foo = "bar";
568− test = false;
569− };
570− sections = {
571− "section 1" = {
572− attribute1 = 5;
573− x = "Me-se JarJar Binx";
574− };
575− "foo" = {
576− "he\\h=he" = "this is okay";
577− };
578− };
579− };
580− expected = ''
581− foo=bar
582− test=false
583−
584− [foo]
585− he\h\=he=this is okay
586−
587− [section 1]
588− attribute1=5
589− x=Me-se JarJar Binx
590− '';
591− };
592−
593474 /* right now only invocation check */
594475 testToJSONSimple =
595476 let val = {
@@ -768,11 +649,6 @@ runTests {
768649 expected = "foo";
769650 };
770651
771− testSanitizeDerivationNameUnicode = testSanitizeDerivationName {
772− name = "fö";
773− expected = "f-";
774− };
775−
776652 testSanitizeDerivationNameAscii = testSanitizeDerivationName {
777653 name = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
778654 expected = "-+--.-0123456789-=-?-ABCDEFGHIJKLMNOPQRSTUVWXYZ-_-abcdefghijklmnopqrstuvwxyz-";
@@ -815,7 +691,7 @@ runTests {
815691
816692 locs = filter (o: ! o.internal) (optionAttrSetToDocList options);
817693 in map (o: o.loc) locs;
818− expected = [ [ "_module" "args" ] [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
694+ expected = [ [ "foo" ] [ "foo" "<name>" "bar" ] [ "foo" "bar" ] ];
819695 };
820696
821697 testCartesianProductOfEmptySet = {
@@ -1037,156 +913,4 @@ runTests {
1037913 };
1038914 };
1039915
1040− ## Levenshtein distance functions and co.
1041− testCommonPrefixLengthEmpty = {
1042− expr = strings.commonPrefixLength "" "hello";
1043− expected = 0;
1044− };
1045−
1046− testCommonPrefixLengthSame = {
1047− expr = strings.commonPrefixLength "hello" "hello";
1048− expected = 5;
1049− };
1050−
1051− testCommonPrefixLengthDiffering = {
1052− expr = strings.commonPrefixLength "hello" "hey";
1053− expected = 2;
1054− };
1055−
1056− testCommonSuffixLengthEmpty = {
1057− expr = strings.commonSuffixLength "" "hello";
1058− expected = 0;
1059− };
1060−
1061− testCommonSuffixLengthSame = {
1062− expr = strings.commonSuffixLength "hello" "hello";
1063− expected = 5;
1064− };
1065−
1066− testCommonSuffixLengthDiffering = {
1067− expr = strings.commonSuffixLength "test" "rest";
1068− expected = 3;
1069− };
1070−
1071− testLevenshteinEmpty = {
1072− expr = strings.levenshtein "" "";
1073− expected = 0;
1074− };
1075−
1076− testLevenshteinOnlyAdd = {
1077− expr = strings.levenshtein "" "hello there";
1078− expected = 11;
1079− };
1080−
1081− testLevenshteinOnlyRemove = {
1082− expr = strings.levenshtein "hello there" "";
1083− expected = 11;
1084− };
1085−
1086− testLevenshteinOnlyTransform = {
1087− expr = strings.levenshtein "abcdef" "ghijkl";
1088− expected = 6;
1089− };
1090−
1091− testLevenshteinMixed = {
1092− expr = strings.levenshtein "kitchen" "sitting";
1093− expected = 5;
1094− };
1095−
1096− testLevenshteinAtMostZeroFalse = {
1097− expr = strings.levenshteinAtMost 0 "foo" "boo";
1098− expected = false;
1099− };
1100−
1101− testLevenshteinAtMostZeroTrue = {
1102− expr = strings.levenshteinAtMost 0 "foo" "foo";
1103− expected = true;
1104− };
1105−
1106− testLevenshteinAtMostOneFalse = {
1107− expr = strings.levenshteinAtMost 1 "car" "ct";
1108− expected = false;
1109− };
1110−
1111− testLevenshteinAtMostOneTrue = {
1112− expr = strings.levenshteinAtMost 1 "car" "cr";
1113− expected = true;
1114− };
1115−
1116− # We test levenshteinAtMost 2 particularly well because it uses a complicated
1117− # implementation
1118− testLevenshteinAtMostTwoIsEmpty = {
1119− expr = strings.levenshteinAtMost 2 "" "";
1120− expected = true;
1121− };
1122−
1123− testLevenshteinAtMostTwoIsZero = {
1124− expr = strings.levenshteinAtMost 2 "abcdef" "abcdef";
1125− expected = true;
1126− };
1127−
1128− testLevenshteinAtMostTwoIsOne = {
1129− expr = strings.levenshteinAtMost 2 "abcdef" "abddef";
1130− expected = true;
1131− };
1132−
1133− testLevenshteinAtMostTwoDiff0False = {
1134− expr = strings.levenshteinAtMost 2 "abcdef" "aczyef";
1135− expected = false;
1136− };
1137−
1138− testLevenshteinAtMostTwoDiff0Outer = {
1139− expr = strings.levenshteinAtMost 2 "abcdef" "zbcdez";
1140− expected = true;
1141− };
1142−
1143− testLevenshteinAtMostTwoDiff0DelLeft = {
1144− expr = strings.levenshteinAtMost 2 "abcdef" "bcdefz";
1145− expected = true;
1146− };
1147−
1148− testLevenshteinAtMostTwoDiff0DelRight = {
1149− expr = strings.levenshteinAtMost 2 "abcdef" "zabcde";
1150− expected = true;
1151− };
1152−
1153− testLevenshteinAtMostTwoDiff1False = {
1154− expr = strings.levenshteinAtMost 2 "abcdef" "bddez";
1155− expected = false;
1156− };
1157−
1158− testLevenshteinAtMostTwoDiff1DelLeft = {
1159− expr = strings.levenshteinAtMost 2 "abcdef" "bcdez";
1160− expected = true;
1161− };
1162−
1163− testLevenshteinAtMostTwoDiff1DelRight = {
1164− expr = strings.levenshteinAtMost 2 "abcdef" "zbcde";
1165− expected = true;
1166− };
1167−
1168− testLevenshteinAtMostTwoDiff2False = {
1169− expr = strings.levenshteinAtMost 2 "hello" "hxo";
1170− expected = false;
1171− };
1172−
1173− testLevenshteinAtMostTwoDiff2True = {
1174− expr = strings.levenshteinAtMost 2 "hello" "heo";
1175− expected = true;
1176− };
1177−
1178− testLevenshteinAtMostTwoDiff3 = {
1179− expr = strings.levenshteinAtMost 2 "hello" "ho";
1180− expected = false;
1181− };
1182−
1183− testLevenshteinAtMostThreeFalse = {
1184− expr = strings.levenshteinAtMost 3 "hello" "Holla!";
1185− expected = false;
1186− };
1187−
1188− testLevenshteinAtMostThreeTrue = {
1189− expr = strings.levenshteinAtMost 3 "hello" "Holla";
1190− expected = true;
1191− };
1192916}
lib/tests/modules.sh+1−5
@@ -293,7 +293,7 @@ checkConfigOutput '^"a c"$' config.result ./functionTo/merging-attrs.nix
293293
294294# moduleType
295295checkConfigOutput '^"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
297297checkConfigOutput '^"a b c"$' config.resultFooFoo ./declare-variants.nix ./define-variant.nix
298298
299299## emptyValue's
@@ -327,10 +327,6 @@ checkConfigError 'The option .theOption.nested. in .other.nix. is already declar
327327# Test that types.optionType leaves types untouched as long as they don't need to be merged
328328checkConfigOutput 'ok' config.freeformItems.foo.bar ./adhoc-freeformType-survives-type-merge.nix
329329
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
333−
334330cat <<EOF
335331====== module tests ======
336332$pass Pass
lib/tests/modules/extendModules-168767-imports.nixdeleted−41
@@ -1,41 +0,0 @@
1−{ lib
2−, extendModules
3−, ...
4−}:
5−with lib;
6−{
7− imports = [
8−
9− {
10− options.sub = mkOption {
11− default = { };
12− type = types.submodule (
13− { config
14− , extendModules
15− , ...
16− }:
17− {
18− options.value = mkOption {
19− type = types.int;
20− };
21−
22− options.specialisation = mkOption {
23− default = { };
24− inherit
25− (extendModules {
26− modules = [{
27− specialisation = mkOverride 0 { };
28− }];
29− })
30− type;
31− };
32− }
33− );
34− };
35− }
36−
37− { config.sub.value = 1; }
38−
39−
40− ];
41−}
lib/tests/systems.nix−3
@@ -19,9 +19,6 @@ with lib.systems.doubles; lib.runTests {
1919 testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-genode" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ];
2020 testmips = mseteq mips [ "mips64el-linux" "mipsel-linux" "mipsel-netbsd" ];
2121 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" ];
2522 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" ];
2623
2724 testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
lib/trivial.nix+1−34
@@ -347,14 +347,7 @@ rec {
347347
348348 Type: bool -> string -> a -> a
349349 */
350− warnIf = cond: msg: if cond then warn msg else x: x;
351−
352− /*
353− Like warnIf, but negated (warn if the first argument is `false`).
354−
355− Type: bool -> string -> a -> a
356− */
357− warnIfNot = cond: msg: if cond then x: x else warn msg;
350+ warnIf = cond: msg: if cond then warn msg else id;
358351
359352 /*
360353 Like the `assert b; e` expression, but with a custom error message and
@@ -378,13 +371,6 @@ rec {
378371 */
379372 throwIfNot = cond: msg: if cond then x: x else throw msg;
380373
381− /*
382− Like throwIfNot, but negated (throw if the first argument is `true`).
383−
384− Type: bool -> string -> a -> a
385− */
386− throwIf = cond: msg: if cond then throw msg else x: x;
387−
388374 /* Check if the elements in a list are valid values from a enum, returning the identity function, or throwing an error message otherwise.
389375
390376 Example:
@@ -441,25 +427,6 @@ rec {
441427 isFunction = f: builtins.isFunction f ||
442428 (f ? __functor && isFunction (f.__functor f));
443429
444− /*
445− Turns any non-callable values into constant functions.
446− Returns callable values as is.
447−
448− Example:
449−
450− nix-repl> lib.toFunction 1 2
451− 1
452−
453− nix-repl> lib.toFunction (x: x + 1) 2
454− 3
455− */
456− toFunction =
457− # Any value
458− v:
459− if isFunction v
460− then v
461− else k: v;
462−
463430 /* Convert the given positive integer to a string of its hexadecimal
464431 representation. For example:
465432
lib/types.nix+10−8
@@ -568,11 +568,6 @@ rec {
568568 { modules
569569 , specialArgs ? {}
570570 , shorthandOnlyDefinesConfig ? false
571−
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
576571 }@attrs:
577572 let
578573 inherit (lib.modules) evalModules;
@@ -584,11 +579,11 @@ rec {
584579 allModules = defs: imap1 (n: { value, file }:
585580 if isFunction value
586581 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))
588583 (functionArgs value)
589584 else if isAttrs value
590585 then
591− lib.modules.unifyModuleSyntax file "${toString file}-${toString (n + extensionOffset)}" (shorthandToModule value)
586+ lib.modules.unifyModuleSyntax file "${toString file}-${toString n}" (shorthandToModule value)
592587 else value
593588 ) defs;
594589
@@ -625,7 +620,6 @@ rec {
625620 (base.extendModules {
626621 modules = [ { _module.args.name = last loc; } ] ++ allModules defs;
627622 prefix = loc;
628− extensionOffset = extensionOffset + length defs;
629623 }).config;
630624 emptyValue = { value = {}; };
631625 getSubOptions = prefix: (base.extendModules
@@ -755,6 +749,14 @@ rec {
755749 nestedTypes.finalType = finalType;
756750 };
757751
752+ # Obsolete alternative to configOf. It takes its option
753+ # declarations from the ‘options’ attribute of containing option
754+ # declaration.
755+ optionSet = mkOptionType {
756+ name = "optionSet";
757+ description = "option set";
758+ deprecationMessage = "Use `types.submodule' instead";
759+ };
758760 # Augment the given type with an additional type check function.
759761 addCheck = elemType: check: elemType // { check = x: elemType.check x && check x; };
760762
maintainers/maintainer-list.nix+39−346
@@ -380,12 +380,6 @@
380380 githubId = 209175;
381381 name = "Alesya Huzik";
382382 };
383− aidalgol = {
384− email = "aidalgol+nixpkgs@fastmail.net";
385− github = "aidalgol";
386− githubId = 2313201;
387− name = "Aidan Gauland";
388− };
389383 aij = {
390384 email = "aij+git@mrph.org";
391385 github = "aij";
@@ -525,12 +519,6 @@
525519 githubId = 38869148;
526520 name = "Alex Eyre";
527521 };
528− algram = {
529− email = "aliasgram@gmail.com";
530− github = "Algram";
531− githubId = 5053729;
532− name = "Alias Gram";
533− };
534522 alibabzo = {
535523 email = "alistair.bill@gmail.com";
536524 github = "alibabzo";
@@ -681,18 +669,6 @@
681669 githubId = 858965;
682670 name = "Andrew Morsillo";
683671 };
684− an-empty-string = {
685− name = "Tris Emmy Wilson";
686− email = "tris@tris.fyi";
687− github = "an-empty-string";
688− githubId = 681716;
689− };
690− AnatolyPopov = {
691− email = "aipopov@live.ru";
692− github = "AnatolyPopov";
693− githubId = 2312534;
694− name = "Anatolii Popov";
695− };
696672 andehen = {
697673 email = "git@andehen.net";
698674 github = "andehen";
@@ -841,13 +817,6 @@
841817 githubId = 5327697;
842818 name = "Anatolii Prylutskyi";
843819 };
844− anselmschueler = {
845− email = "mail@anselmschueler.com";
846− github = "schuelermine";
847− githubId = 48802534;
848− name = "Anselm Schüler";
849− matrix = "@schuelermine:matrix.org";
850− };
851820 antoinerg = {
852821 email = "roygobeil.antoine@gmail.com";
853822 github = "antoinerg";
@@ -960,12 +929,6 @@
960929 githubId = 1296771;
961930 name = "Anders Riutta";
962931 };
963− arjan-s = {
964− email = "github@anymore.nl";
965− github = "arjan-s";
966− githubId = 10400299;
967− name = "Arjan Schrijver";
968− };
969932 arkivm = {
970933 email = "vikram186@gmail.com";
971934 github = "arkivm";
@@ -1068,8 +1031,8 @@
10681031 name = "Kirill Boltaev";
10691032 };
10701033 ashley = {
1071− email = "ashley@kira64.xyz";
1072− github = "kira64xyz";
1034+ email = "personavinny@protonmail.com";
1035+ github = "paranoidcat";
10731036 githubId = 84152630;
10741037 name = "Ashley Chiara";
10751038 };
@@ -1332,12 +1295,6 @@
13321295 githubId = 127523;
13331296 name = "Herman Fries";
13341297 };
1335− BarinovMaxim = {
1336− name = "Barinov Maxim";
1337− email = "barinov274@gmail.com";
1338− github = "barinov274";
1339− githubId = 54442153;
1340− };
13411298 barrucadu = {
13421299 email = "mike@barrucadu.co.uk";
13431300 github = "barrucadu";
@@ -1409,12 +1366,6 @@
14091366 githubId = 164148;
14101367 name = "Ben Darwin";
14111368 };
1412− bdd = {
1413− email = "bdd@mindcast.org";
1414− github = "bdd";
1415− githubId = 11135;
1416− name = "Berk D. Demir";
1417− };
14181369 bdesham = {
14191370 email = "benjamin@esham.io";
14201371 github = "bdesham";
@@ -1831,12 +1782,6 @@
18311782 githubId = 7214361;
18321783 name = "Roman Gerasimenko";
18331784 };
1834− builditluc = {
1835− email = "builditluc@icloud.com";
1836− github = "builditluc";
1837− githubId = 37375448;
1838− name = "Buildit";
1839− };
18401785 bburdette = {
18411786 email = "bburdette@protonmail.com";
18421787 github = "bburdette";
@@ -2086,12 +2031,6 @@
20862031 githubId = 8228888;
20872032 name = "Charlie Hanley";
20882033 };
2089− charlesbaynham = {
2090− email = "charlesbaynham@gmail.com";
2091− github = "charlesbaynham";
2092− githubId = 4397637;
2093− name = "Charles Baynham";
2094− };
20952034 CharlesHD = {
20962035 email = "charleshdespointes@gmail.com";
20972036 github = "CharlesHD";
@@ -2132,6 +2071,12 @@
21322071 githubId = 18648043;
21332072 name = "Daniel Cartwright";
21342073 };
2074+ chiiruno = {
2075+ email = "okinan@protonmail.com";
2076+ github = "chiiruno";
2077+ githubId = 30435868;
2078+ name = "Okina Matara";
2079+ };
21352080 Chili-Man = {
21362081 email = "dr.elhombrechile@gmail.com";
21372082 name = "Diego Rodriguez";
@@ -2303,7 +2248,6 @@
23032248 fingerprint = "539F 0655 4D35 38A5 429A E253 13E7 9449 C052 5215";
23042249 }];
23052250 name = "ckie";
2306− matrix = "@ckie:ckie.dev";
23072251 };
23082252 clkamp = {
23092253 email = "c@lkamp.de";
@@ -2874,12 +2818,6 @@
28742818 githubId = 49904992;
28752819 name = "Dawid Sowa";
28762820 };
2877− dbeckwith = {
2878− email = "djbsnx@gmail.com";
2879− github = "dbeckwith";
2880− githubId = 1279939;
2881− name = "Daniel Beckwith";
2882− };
28832821 dbirks = {
28842822 email = "david@birks.dev";
28852823 github = "dbirks";
@@ -3881,13 +3819,6 @@
38813819 githubId = 222467;
38823820 name = "Dmitry Ivanov";
38833821 };
3884− ethindp = {
3885− name = "Ethin Probst";
3886− email = "harlydavidsen@gmail.com";
3887− matrix = "@ethindp:the-gdn.net";
3888− github = "ethindp";
3889− githubId = 8030501;
3890− };
38913822 Etjean = {
38923823 email = "et.jean@outlook.fr";
38933824 github = "Etjean";
@@ -4124,18 +4055,11 @@
41244055 matrix = "@felschr:matrix.org";
41254056 github = "felschr";
41264057 githubId = 3314323;
4127− name = "Felix Schröter";
4128− keys = [
4129− {
4130− # historical
4131− longkeyid = "ed25519/0x910ACB9F6BD26F58";
4132− fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
4133− }
4134− {
4135− longkeyid = "ed25519/0x671E39E6744C807D";
4136− fingerprint = "7E08 6842 0934 AA1D 6821 1F2A 671E 39E6 744C 807D";
4137− }
4138− ];
4058+ name = "Felix Tenley";
4059+ keys = [{
4060+ longkeyid = "ed25519/0x910ACB9F6BD26F58";
4061+ fingerprint = "6AB3 7A28 5420 9A41 82D9 0068 910A CB9F 6BD2 6F58";
4062+ }];
41394063 };
41404064 ffinkdevs = {
41414065 email = "fink@h0st.space";
@@ -4311,12 +4235,7 @@
43114235 githubId = 119691;
43124236 name = "Michael Gough";
43134237 };
4314− freax13 = {
4315− email = "erbse.13@gmx.de";
4316− github = "freax13";
4317− githubId = 14952658;
4318− name = "Tom Dohrmann";
4319− };
4238+
43204239 fredeb = {
43214240 email = "im@fredeb.dev";
43224241 github = "fredeeb";
@@ -4560,12 +4479,6 @@
45604479 githubId = 3217744;
45614480 name = "Peter Ferenczy";
45624481 };
4563− ghostbuster91 = {
4564− name = "Kasper Kondzielski";
4565− email = "kghost0@gmail.com";
4566− github = "ghostbuster91";
4567− githubId = 5662622;
4568− };
45694482 ghuntley = {
45704483 email = "ghuntley@ghuntley.com";
45714484 github = "ghuntley";
@@ -4720,12 +4633,6 @@
47204633 githubId = 4656860;
47214634 name = "Gaute Ravndal";
47224635 };
4723− graysonhead = {
4724− email = "grayson@graysonhead.net";
4725− github = "graysonhead";
4726− githubId = 6179496;
4727− name = "Grayson Head";
4728− };
47294636 grburst = {
47304637 email = "GRBurst@protonmail.com";
47314638 github = "GRBurst";
@@ -4754,12 +4661,6 @@
47544661 githubId = 201997;
47554662 name = "Eric Seidel";
47564663 };
4757− grindhold = {
4758− name = "grindhold";
4759− email = "grindhold+nix@skarphed.org";
4760− github = "grindhold";
4761− githubId = 2592640;
4762− };
47634664 gspia = {
47644665 email = "iahogsp@gmail.com";
47654666 github = "gspia";
@@ -4778,12 +4679,6 @@
47784679 githubId = 343415;
47794680 name = "Greg Roodt";
47804681 };
4781− grnnja = {
4782− email = "grnnja@gmail.com";
4783− github = "grnnja";
4784− githubId = 31556469;
4785− name = "Prem Netsuwan";
4786− };
47874682 gruve-p = {
47884683 email = "groestlcoin@gmail.com";
47894684 github = "gruve-p";
@@ -5499,12 +5394,6 @@
54995394 githubId = 41924494;
55005395 name = "Ivar";
55015396 };
5502− iwanb = {
5503− email = "tracnar@gmail.com";
5504− github = "iwanb";
5505− githubId = 4035835;
5506− name = "Iwan";
5507− };
55085397 ixmatus = {
55095398 email = "parnell@digitalmentat.com";
55105399 github = "ixmatus";
@@ -5649,12 +5538,6 @@
56495538 githubId = 488556;
56505539 name = "Javier Aguirre";
56515540 };
5652− jayesh-bhoot = {
5653− name = "Jayesh Bhoot";
5654− email = "jayesh@bhoot.sh";
5655− github = "jayesh-bhoot";
5656− githubId = 1915507;
5657− };
56585541 jb55 = {
56595542 email = "jb55@jb55.com";
56605543 github = "jb55";
@@ -5986,12 +5869,6 @@
59865869 githubId = 587870;
59875870 name = "Jonathan Mettes";
59885871 };
5989− jmgilman = {
5990− email = "joshuagilman@gmail.com";
5991− github = "jmgilman";
5992− githubId = 2308444;
5993− name = "Joshua Gilman";
5994− };
59955872 jo1gi = {
59965873 email = "joakimholm@protonmail.com";
59975874 github = "jo1gi";
@@ -6885,6 +6762,12 @@
68856762 githubId = 99639;
68866763 name = "Pawel Kruszewski";
68876764 };
6765+ ktosiek = {
6766+ email = "tomasz.kontusz@gmail.com";
6767+ github = "ktosiek";
6768+ githubId = 278013;
6769+ name = "Tomasz Kontusz";
6770+ };
68886771 kubukoz = {
68896772 email = "kubukoz@gmail.com";
68906773 github = "kubukoz";
@@ -7218,13 +7101,6 @@
72187101 githubId = 1769386;
72197102 name = "Liam Diprose";
72207103 };
7221− libjared = {
7222− email = "jared@perrycode.com";
7223− github = "libjared";
7224− githubId = 3746656;
7225− matrix = "@libjared:matrix.org";
7226− name = "Jared Perry";
7227− };
72287104 liff = {
72297105 email = "liff@iki.fi";
72307106 github = "liff";
@@ -7255,13 +7131,6 @@
72557131 githubId = 714;
72567132 name = "Lily Ballard";
72577133 };
7258− lilyinstarlight = {
7259− email = "lily@lily.flowers";
7260− matrix = "@lily:lily.flowers";
7261− github = "lilyinstarlight";
7262− githubId = 298109;
7263− name = "Lily Foster";
7264− };
72657134 limeytexan = {
72667135 email = "limeytexan@gmail.com";
72677136 github = "limeytexan";
@@ -7372,17 +7241,6 @@
73727241 githubId = 1267527;
73737242 name = "Daniel Firth";
73747243 };
7375− lockejan = {
7376− email = "git@smittie.de";
7377− matrix = "@jan:smittie.de";
7378− github = "lockejan";
7379− githubId = 25434434;
7380− name = "Jan Schmitt";
7381− keys = [{
7382− longkeyid = "dsa2048/0xA2BC3C6F14351991";
7383− fingerprint = "1763 9903 2D7C 5B82 5D5A 0EAD A2BC 3C6F 1435 1991";
7384− }];
7385− };
73867244 lodi = {
73877245 email = "anthony.lodi@gmail.com";
73887246 github = "lodi";
@@ -7390,7 +7248,7 @@
73907248 name = "Anthony Lodi";
73917249 };
73927250 loicreynier = {
7393− email = "loic@loicreynier.fr";
7251+ email = "loic@loireynier.fr";
73947252 github = "loicreynier";
73957253 githubId = 88983487;
73967254 name = "Loïc Reynier";
@@ -8181,12 +8039,6 @@
81818039 githubId = 20536514;
81828040 name = "Magdalena Haselsteiner";
81838041 };
8184− mh182 = {
8185− email = "mh182@chello.at";
8186− github = "mh182";
8187− githubId = 9980864;
8188− name = "Max Hofer";
8189− };
81908042 mic92 = {
81918043 email = "joerg@thalheim.io";
81928044 matrix = "@mic92:nixos.dev";
@@ -8360,17 +8212,6 @@
83608212 githubId = 1776903;
83618213 name = "Andrew Abbott";
83628214 };
8363− misterio77 = {
8364− email = "eu@misterio.me";
8365− github = "misterio77";
8366− githubId = 5727578;
8367− matrix = "@misterio:matrix.org";
8368− name = "Gabriel Fontes";
8369− keys = [{
8370− longkeyid = "rsa3072/0x245CAB70B4C225E9";
8371− fingerprint = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
8372− }];
8373− };
83748215 mitchmindtree = {
83758216 email = "mail@mitchellnordine.com";
83768217 github = "mitchmindtree";
@@ -8668,7 +8509,7 @@
86688509 };
86698510 msfjarvis = {
86708511 github = "msfjarvis";
8671− githubId = 13348378;
8512+ githubId = 3348378;
86728513 name = "Harsh Shandilya";
86738514 email = "nixos@msfjarvis.dev";
86748515 keys = [{
@@ -8922,12 +8763,6 @@
89228763 githubId = 3747396;
89238764 name = "Nathan Isom";
89248765 };
8925− neilmayhew = {
8926− email = "nix@neil.mayhew.name";
8927− github = "neilmayhew";
8928− githubId = 166791;
8929− name = "Neil Mayhew";
8930− };
89318766 nelsonjeppesen = {
89328767 email = "nix@jeppesen.io";
89338768 github = "NelsonJeppesen";
@@ -10035,12 +9870,6 @@
100359870 fingerprint = "2CD2 B030 BD22 32EF DF5A 008A 3618 20A4 5DB4 1E9A";
100369871 }];
100379872 };
10038− podocarp = {
10039− email = "xdjiaxd@gmail.com";
10040− github = "podocarp";
10041− githubId = 10473184;
10042− name = "Jia Xiaodong";
10043− };
100449873 polendri = {
100459874 email = "paul@ijj.li";
100469875 github = "polendri";
@@ -10081,12 +9910,6 @@
100819910 fingerprint = "48AD DE10 F27B AFB4 7BB0 CCAF 2D25 95A0 0D08 ACE0";
100829911 }];
100839912 };
10084− ppenguin = {
10085− name = "Jeroen Versteeg";
10086− email = "hieronymusv@gmail.com";
10087− github = "ppenguin";
10088− githubId = 17690377;
10089− };
100909913 ppom = {
100919914 name = "Paco Pompeani";
100929915 email = "paco@ecomail.io";
@@ -10300,12 +10123,6 @@
1030010123 githubId = 115877;
1030110124 name = "Kenny Shen";
1030210125 };
10303− quag = {
10304− email = "quaggy@gmail.com";
10305− github = "quag";
10306− githubId = 35086;
10307− name = "Jonathan Wright";
10308− };
1030910126 queezle = {
1031010127 email = "git@queezle.net";
1031110128 github = "qzle";
@@ -10449,16 +10266,6 @@
1044910266 githubId = 16487165;
1045010267 name = "Rafael Basso";
1045110268 };
10452− rbreslow = {
10453− name = "Rocky Breslow";
10454− email = "1774125+rbreslow@users.noreply.github.com";
10455− github = "rbreslow";
10456− githubId = 1774125;
10457− keys = [{
10458− longkeyid = "ed25519/0xA0D32ACCA38B88ED";
10459− fingerprint = "B5B7 BCA0 EE6F F31E 263A 69E3 A0D3 2ACC A38B 88ED";
10460− }];
10461− };
1046210269 rbrewer = {
1046310270 email = "rwb123@gmail.com";
1046410271 github = "rbrewer123";
@@ -10591,12 +10398,6 @@
1059110398 githubId = 811827;
1059210399 name = "Gabriel Lievano";
1059310400 };
10594− rgrinberg = {
10595− name = "Rudi Grinberg";
10596− email = "me@rgrinberg.com";
10597− github = "rgrinberg";
10598− githubId = 139003;
10599− };
1060010401 rgrunbla = {
1060110402 email = "remy@grunblatt.org";
1060210403 github = "rgrunbla";
@@ -11126,22 +10927,28 @@
1112610927 githubId = 132835;
1112710928 name = "Samuel Dionne-Riel";
1112810929 };
10930+ samuelgrf = {
10931+ email = "s@muel.gr";
10932+ github = "samuelgrf";
10933+ githubId = 67663538;
10934+ name = "Samuel Gräfenstein";
10935+ keys = [
10936+ {
10937+ longkeyid = "rsa4096/0xDE75F92E318123F0";
10938+ fingerprint = "6F2E 2A90 423C 8111 BFF2 895E DE75 F92E 3181 23F0";
10939+ }
10940+ {
10941+ longkeyid = "rsa4096/0xEF76A063F15C63C8";
10942+ fingerprint = "FF24 5832 8FAF 4660 18C6 186E EF76 A063 F15C 63C8";
10943+ }
10944+ ];
10945+ };
1112910946 samuelrivas = {
1113010947 email = "samuelrivas@gmail.com";
1113110948 github = "samuelrivas";
1113210949 githubId = 107703;
1113310950 name = "Samuel Rivas";
1113410951 };
11135− samyak = {
11136− name = "Samyak Sarnayak";
11137− email = "samyak201@gmail.com";
11138− github = "Samyak2";
11139− githubId = 34161949;
11140− keys = [{
11141− longkeyid = "rsa4096/0x365873F2F0C6153B";
11142− fingerprint = "155C F413 0129 C058 9A5F 5524 3658 73F2 F0C6 153B";
11143− }];
11144− };
1114510952 sander = {
1114610953 email = "s.vanderburg@tudelft.nl";
1114710954 github = "svanderburg";
@@ -11248,16 +11055,6 @@
1124811055 email = "schristopher@konputa.com";
1124911056 name = "Scott Christopher";
1125011057 };
11251− sciencentistguy = {
11252− email = "jamie@quigley.xyz";
11253− name = "Jamie Quigley";
11254− github = "Sciencentistguy";
11255− githubId = 4983935;
11256− keys = [{
11257− longkeyid = "rsa2048/0x8E8FF66E2AE8D970";
11258− fingerprint = "30BB FF3F AB0B BB3E 0435 F83C 8E8F F66E 2AE8 D970";
11259− }];
11260−};
1126111058 scode = {
1126211059 email = "peter.schuller@infidyne.com";
1126311060 github = "scode";
@@ -11368,12 +11165,6 @@
1136811165 githubId = 307899;
1136911166 name = "Gurkan Gur";
1137011167 };
11371− serge = {
11372− email = "sb@canva.com";
11373− github = "serge-belov";
11374− githubId = 38824235;
11375− name = "Serge Belov";
11376− };
1137711168 sersorrel = {
1137811169 email = "ash@sorrel.sh";
1137911170 github = "sersorrel";
@@ -11418,12 +11209,6 @@
1141811209 githubId = 1151264;
1141911210 name = "Sebastian Graf";
1142011211 };
11421− shadaj = {
11422− email = "shadaj@users.noreply.github.com";
11423− github = "shadaj";
11424− githubId = 543055;
11425− name = "Shadaj Laddad";
11426− };
1142711212 shahrukh330 = {
1142811213 email = "shahrukh330@gmail.com";
1142911214 github = "shahrukh330";
@@ -11464,12 +11249,6 @@
1146411249 githubId = 293035;
1146511250 name = "Shawn Dellysse";
1146611251 };
11467− shawn8901 = {
11468− email = "shawn8901@googlemail.com";
11469− github = "shawn8901";
11470− githubId = 12239057;
11471− name = "Shawn8901";
11472− };
1147311252 shazow = {
1147411253 email = "andrey.petrov@shazow.net";
1147511254 github = "shazow";
@@ -11620,12 +11399,6 @@
1162011399 githubId = 2770647;
1162111400 name = "Simon Vandel Sillesen";
1162211401 };
11623− sir4ur0n = {
11624− email = "sir4ur0n@users.noreply.github.com";
11625− github = "sir4ur0n";
11626− githubId = 1204125;
11627− name = "sir4ur0n";
11628− };
1162911402 siraben = {
1163011403 email = "bensiraphob@gmail.com";
1163111404 matrix = "@siraben:matrix.org";
@@ -12063,12 +11836,6 @@
1206311836 githubId = 1694705;
1206411837 name = "Sam Stites";
1206511838 };
12066− strager = {
12067− email = "strager.nds@gmail.com";
12068− github = "strager";
12069− githubId = 48666;
12070− name = "Matthew \"strager\" Glazar";
12071− };
1207211839 stumoss = {
1207311840 email = "samoss@gmail.com";
1207411841 github = "stumoss";
@@ -12561,12 +12328,6 @@
1256112328 githubId = 844343;
1256212329 name = "Thiago K. Okada";
1256312330 };
12564− thibaultlemaire = {
12565− email = "thibault.lemaire@protonmail.com";
12566− github = "ThibaultLemaire";
12567− githubId = 21345269;
12568− name = "Thibault Lemaire";
12569− };
1257012331 thibautmarty = {
1257112332 email = "github@thibautmarty.fr";
1257212333 matrix = "@thibaut:thibautmarty.fr";
@@ -12813,13 +12574,6 @@
1281312574 githubId = 90456;
1281412575 name = "Rebecca (Bex) Kelly";
1281512576 };
12816− tpw_rules = {
12817− name = "Thomas Watson";
12818− email = "twatson52@icloud.com";
12819− matrix = "@tpw_rules:matrix.org";
12820− github = "tpwrules";
12821− githubId = 208010;
12822− };
1282312577 travisbhartwell = {
1282412578 email = "nafai@travishartwell.net";
1282512579 github = "travisbhartwell";
@@ -12988,12 +12742,6 @@
1298812742 githubId = 1983821;
1298912743 name = "Eric Wolf";
1299012744 };
12991− uakci = {
12992− name = "uakci";
12993− email = "uakci@uakci.pl";
12994− github = "uakci";
12995− githubId = 6961268;
12996− };
1299712745 udono = {
1299812746 email = "udono@virtual-things.biz";
1299912747 github = "udono";
@@ -13294,12 +13042,6 @@
1329413042 githubId = 1771332;
1329513043 name = "László Vaskó";
1329613044 };
13297− vlinkz = {
13298− email = "vmfuentes64@gmail.com";
13299− github = "vlinkz";
13300− githubId = 20145996;
13301− name = "Victor Fuentes";
13302− };
1330313045 vlstill = {
1330413046 email = "xstill@fi.muni.cz";
1330513047 github = "vlstill";
@@ -13427,12 +13169,6 @@
1342713169 githubId = 34962284;
1342813170 name = "wchresta";
1342913171 };
13430− wdavidw = {
13431− name = "David Worms";
13432− email = "david@adaltas.com";
13433− github = "wdavidw";
13434− githubId = 46896;
13435− };
1343613172 wedens = {
1343713173 email = "kirill.wedens@gmail.com";
1343813174 name = "wedens";
@@ -13592,7 +13328,7 @@
1359213328 name = "Andrei Pampu";
1359313329 };
1359413330 wolfangaukang = {
13595− email = "clone.gleeful135+nixpkgs@anonaddy.me";
13331+ email = "liquid.query960@4wrd.cc";
1359613332 github = "wolfangaukang";
1359713333 githubId = 8378365;
1359813334 name = "P. R. d. O.";
@@ -13645,13 +13381,6 @@
1364513381 github = "wunderbrick";
1364613382 githubId = 52174714;
1364713383 };
13648− wyndon = {
13649− email = "72203260+wyndon@users.noreply.github.com";
13650− matrix = "@wyndon:envs.net";
13651− github = "wyndon";
13652− githubId = 72203260;
13653− name = "wyndon";
13654− };
1365513384 wyvie = {
1365613385 email = "elijahrum@gmail.com";
1365713386 github = "wyvie";
@@ -14211,12 +13940,6 @@
1421113940 github = "deifactor";
1421213941 githubId = 30192992;
1421313942 };
14214− deinferno = {
14215− name = "deinferno";
14216− email = "14363193+deinferno@users.noreply.github.com";
14217− github = "deinferno";
14218− githubId = 14363193;
14219− };
1422013943 fzakaria = {
1422113944 name = "Farid Zakaria";
1422213945 email = "farid.m.zakaria@gmail.com";
@@ -14340,12 +14063,6 @@
1434014063 github = "zbioe";
1434114064 githubId = 7332055;
1434214065 };
14343− zendo = {
14344− name = "zendo";
14345− email = "linzway@qq.com";
14346− github = "zendo";
14347− githubId = 348013;
14348− };
1434914066 zenithal = {
1435014067 name = "zenithal";
1435114068 email = "i@zenithal.me";
@@ -14454,28 +14171,4 @@
1445414171 github = "nigelgbanks";
1445514172 githubId = 487373;
1445614173 };
14457− zanculmarktum = {
14458− name = "Azure Zanculmarktum";
14459− email = "zanculmarktum@gmail.com";
14460− github = "zanculmarktum";
14461− githubId = 16958511;
14462− };
14463− kuwii = {
14464− name = "kuwii";
14465− email = "kuwii.someone@gmail.com";
14466− github = "kuwii";
14467− githubId = 10705175;
14468− };
14469− melias122 = {
14470− name = "Martin Elias";
14471− email = "martin+nixpkgs@elias.sx";
14472− github = "melias122";
14473− githubId = 1027766;
14474− };
14475− bryanhonof = {
14476− name = "Bryan Honof";
14477− email = "bryanhonof@gmail.com";
14478− github = "bryanhonof";
14479− githubId = 5932804;
14480− };
1448114174}
maintainers/scripts/dep-licenses.sh+1−1
@@ -9,7 +9,7 @@ tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
99exitHandler() {
1010 exitCode=$?
1111 rm -rf "$tmp"
12− return $exitCode
12+ exit $exitCode
1313}
1414
1515trap "exitHandler" EXIT
maintainers/scripts/feature-freeze-teams.pldeleted−98
@@ -1,98 +0,0 @@
1−#!/usr/bin/env nix-shell
2−#!nix-shell -i perl -p perl -p perlPackages.JSON perlPackages.LWPUserAgent perlPackages.LWPProtocolHttps perlPackages.TermReadKey
3−
4−# This script generates a list of teams to ping for the Feature Freeze announcement on Discourse.
5−# It's intended to be used by Release Managers before creating such posts.
6−#
7−# The script interactively reads a GitHub username and a corresponding GitHub Personal Access token.
8−# This is required to access the GitHub Teams API so the token needs at least the read:org privilege.
9−
10−## no critic (InputOutput::RequireCheckedSyscalls, InputOutput::ProhibitBacktickOperators)
11−use strict;
12−use warnings;
13−use Carp;
14−use Cwd 'abs_path';
15−use File::Basename;
16−use JSON qw(decode_json);
17−use LWP::UserAgent;
18−use Term::ReadKey qw(ReadLine ReadMode);
19−
20−sub github_team_members {
21− my ($team_name, $username, $token) = @_;
22− my @ret;
23−
24− my $req = HTTP::Request->new('GET', "https://api.github.com/orgs/NixOS/teams/$team_name/members", [ 'Accept' => 'application/vnd.github.v3+json' ]);
25− $req->authorization_basic($username, $token);
26− my $response = LWP::UserAgent->new->request($req);
27−
28− if ($response->is_success) {
29− my $content = decode_json($response->decoded_content);
30− foreach (@{$content}) {
31− push @ret, $_->{'login'};
32− }
33− } else {
34− print {*STDERR} "!! Requesting members of GitHub Team '$team_name' failed: $response->status_line";
35− }
36−
37− return \@ret;
38−}
39−
40−# Read GitHub credentials
41−print {*STDERR} 'GitHub username: ';
42−my $github_user = ReadLine(0);
43−ReadMode('noecho');
44−print {*STDERR} 'GitHub personal access token (no echo): ';
45−my $github_token = ReadLine(0);
46−ReadMode('restore');
47−print {*STDERR} "\n";
48−chomp $github_user;
49−chomp $github_token;
50−
51−# Read nix output
52−my $nix_version = `nix --version`;
53−my $out;
54−my $lib_path = abs_path(dirname(__FILE__)) . '../../../lib';
55−if ($nix_version =~ m/2[.]3[.]/msx) {
56− $out = `nix eval --json '(import $lib_path).teams'` || croak 'nix eval failed';
57−} else {
58− $out = `nix --extra-experimental-features nix-command eval --json --impure --expr '(import $lib_path).teams'` || croak('nix eval failed');
59−}
60−my $data = decode_json($out);
61−
62−# Process teams
63−print {*STDERR} "\n";
64−while (my ($team_nix_key, $team_config) = each %{$data}) {
65− # Ignore teams that don't want to be or can't be pinged
66− if (not defined $team_config->{enableFeatureFreezePing} or not $team_config->{enableFeatureFreezePing}) {
67− next;
68− }
69− if (not defined $team_config->{shortName}) {
70− print {*STDERR} "!! The team with the nix key '$team_nix_key' has no shortName set - ignoring";
71− next;
72− }
73− # Team name
74− print {*STDERR} "$team_config->{shortName}:";
75− # GitHub Teams
76− my @github_members;
77− if (defined $team_config->{githubTeams}) {
78− foreach (@{$team_config->{githubTeams}}) {
79− print {*STDERR} " \@NixOS/${_}";
80− push @github_members, @{github_team_members($_, $github_user, $github_token)};
81− }
82− }
83− my %github_members = map { $_ => 1 } @github_members;
84− # Members
85− if (defined $team_config->{members}) {
86− foreach (@{$team_config->{members}}) {
87− my %user = %{$_};
88− my $github_handle = $user{'github'};
89− # Ensure we don't ping team members twice (as team member and directly)
90− if (defined $github_members{$github_handle}) {
91− next;
92− }
93− print {*STDERR} " \@$github_handle";
94− }
95− }
96−
97− print {*STDERR} "\n";
98−}
maintainers/scripts/haskell/maintained-broken-pkgs.nixdeleted−22
@@ -1,22 +0,0 @@
1−let
2− nixpkgs = import ../../..;
3− inherit (nixpkgs {}) haskellPackages lib;
4− maintainedPkgs = lib.filterAttrs (
5− _: v: builtins.length (v.meta.maintainers or []) > 0
6− ) haskellPackages;
7− brokenPkgs = lib.filterAttrs (_: v: v.meta.broken) maintainedPkgs;
8− transitiveBrokenPkgs = lib.filterAttrs
9− (_: v: !(builtins.tryEval (v.outPath or null)).success && !v.meta.broken)
10− maintainedPkgs;
11− infoList = pkgs: lib.concatStringsSep "\n" (lib.mapAttrsToList (name: drv: "${name} ${(builtins.elemAt drv.meta.maintainers 0).github}") pkgs);
12−in {
13− report = ''
14− BROKEN:
15− ${infoList brokenPkgs}
16−
17− TRANSITIVE BROKEN:
18− ${infoList transitiveBrokenPkgs}
19− '';
20− transitiveErrors =
21− builtins.attrValues transitiveBrokenPkgs;
22−}
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\`.
9999
100100This 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).
101101
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.
103103
104104### haskellPackages Workflow Summary
105105
maintainers/scripts/haskell/update-stackage.sh+12−25
@@ -1,38 +1,26 @@
11#! /usr/bin/env nix-shell
22#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused gnugrep -I nixpkgs=.
3−# shellcheck shell=bash
43
54set -eu -o pipefail
65
7−# Stackage solver to use, LTS or Nightly
8−# (should be capitalized like the display name)
9−SOLVER=LTS
10−TMP_TEMPLATE=update-stackage.XXXXXXX
11−readonly SOLVER
12−readonly TMP_TEMPLATE
13−
14−toLower() {
15− printf "%s" "$1" | tr '[:upper:]' '[:lower:]'
16−}
17−
18−tmpfile=$(mktemp "$TMP_TEMPLATE")
19−tmpfile_new=$(mktemp "$TMP_TEMPLATE")
6+tmpfile=$(mktemp "update-stackage.XXXXXXX")
7+# shellcheck disable=SC2064
208
219stackage_config="pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml"
2210
23−trap 'rm "${tmpfile}" "${tmpfile_new}"' 0
24−touch "$tmpfile" "$tmpfile_new" # Creating files here so that trap creates no errors.
11+trap "rm ${tmpfile} ${tmpfile}.new" 0
12+touch "$tmpfile" "$tmpfile.new" # Creating files here so that trap creates no errors.
2513
26−curl -L -s "https://stackage.org/$(toLower "$SOLVER")/cabal.config" >"$tmpfile"
27−old_version=$(grep '^# Stackage' $stackage_config | sed -e 's/.\+ \([A-Za-z]\+ [0-9.-]\+\)$/\1/g')
28−version="$SOLVER $(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.$(toLower "$SOLVER")-//p" "$tmpfile")"
14+curl -L -s "https://stackage.org/lts/cabal.config" >"$tmpfile"
15+old_version=$(grep "# Stackage" $stackage_config | sed -E 's/.*([0-9]{2}\.[0-9]+)/\1/')
16+version=$(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.lts-//p" "$tmpfile")
2917
3018if [[ "$old_version" == "$version" ]]; then
3119 echo "No new stackage version"
3220 exit 0 # Nothing to do
3321fi
3422
35−echo "Updating Stackage from $old_version to $version."
23+echo "Updating Stackage LTS from $old_version to $version."
3624
3725# Create a simple yaml version of the file.
3826sed -r \
@@ -42,10 +30,10 @@ sed -r \
4230 -e 's|,$||' \
4331 -e '/installed$/d' \
4432 -e '/^$/d' \
45− < "${tmpfile}" | sort --ignore-case >"${tmpfile_new}"
33+ < "${tmpfile}" | sort --ignore-case >"${tmpfile}.new"
4634
4735cat > $stackage_config << EOF
48−# Stackage $version
36+# Stackage LTS $version
4937# This file is auto-generated by
5038# maintainers/scripts/haskell/update-stackage.sh
5139default-package-overrides:
@@ -57,13 +45,12 @@ sed -r \
5745 -e '/ distribution-nixpkgs /d' \
5846 -e '/ jailbreak-cabal /d' \
5947 -e '/ language-nix /d' \
60− -e '/ cabal-install /d' \
61− < "${tmpfile_new}" >> $stackage_config
48+ < "${tmpfile}.new" >> $stackage_config
6249
6350if [[ "${1:-}" == "--do-commit" ]]; then
6451git add $stackage_config
6552git commit -F - << EOF
66−haskellPackages: stackage $old_version -> $version
53+haskellPackages: stackage-lts $old_version -> $version
6754
6855This commit has been generated by maintainers/scripts/haskell/update-stackage.sh
6956EOF
maintainers/scripts/luarocks-packages.csv+2−3
@@ -52,7 +52,7 @@ luadbi-postgresql,,,,,,
5252luadbi-sqlite3,,,,,,
5353luaepnf,,,,,,
5454luaevent,,,,,,
55−luaexpat,,,,1.4.1-1,,arobyn flosse
55+luaexpat,,,,1.3.0-1,,arobyn flosse
5656luaffi,,,http://luarocks.org/dev,,,
5757luafilesystem,,,,1.7.0-2,,flosse
5858lualogging,,,,,,
@@ -64,7 +64,6 @@ luasocket,,,,,,
6464luasql-sqlite3,,,,,,vyp
6565luassert,,,,,,
6666luasystem,,,,,,
67−luaunbound,,,,,
6867luautf8,,,,,,pstn
6968luazip,,,,,,
7069lua-yajl,,,,,,pstn
@@ -82,6 +81,6 @@ rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
8281readline,,,,,,
8382say,https://github.com/Olivine-Labs/say.git,,,,,
8483std._debug,https://github.com/lua-stdlib/_debug.git,,,,,
85−std.normalize,https://github.com/lua-stdlib/normalize.git,,,,,
84+std.normalize,git://github.com/lua-stdlib/normalize.git,,,,,
8685stdlib,,,,41.2.2,,vyp
8786vstruct,https://github.com/ToxicFrog/vstruct.git,,,,,
maintainers/scripts/pluginupdate.py+108−135
@@ -8,7 +8,6 @@
88# $ nix run nixpkgs.python3Packages.flake8 -c flake8 --ignore E501,E265 update.py
99
1010import argparse
11−import csv
1211import functools
1312import http
1413import json
@@ -29,7 +28,7 @@ from pathlib import Path
2928from typing import Dict, List, Optional, Tuple, Union, Any, Callable
3029from urllib.parse import urljoin, urlparse
3130from tempfile import NamedTemporaryFile
32−from dataclasses import dataclass, asdict
31+from dataclasses import dataclass
3332
3433import git
3534
@@ -86,31 +85,21 @@ def make_request(url: str, token=None) -> urllib.request.Request:
8685 headers["Authorization"] = f"token {token}"
8786 return urllib.request.Request(url, headers=headers)
8887
89−
90−# a dictionary of plugins and their new repositories
91−Redirects = Dict['PluginDesc', 'Repo']
92−
9388class Repo:
9489 def __init__(
95− self, uri: str, branch: str
90+ self, uri: str, branch: str, alias: Optional[str]
9691 ) -> None:
9792 self.uri = uri
9893 '''Url to the repo'''
99− self._branch = branch
100− # Redirect is the new Repo to use
101− self.redirect: Optional['Repo'] = None
94+ self.branch = branch
95+ self.alias = alias
96+ self.redirect: Dict[str, str] = {}
10297 self.token = "dummy_token"
10398
10499 @property
105100 def name(self):
106101 return self.uri.split('/')[-1]
107102
108− @property
109− def branch(self):
110− return self._branch or "HEAD"
111−
112− def __str__(self) -> str:
113− return f"{self.uri}"
114103 def __repr__(self) -> str:
115104 return f"Repo({self.name}, {self.uri})"
116105
@@ -120,7 +109,6 @@ class Repo:
120109
121110 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
122111 def latest_commit(self) -> Tuple[str, datetime]:
123− log.debug("Latest commit")
124112 loaded = self._prefetch(None)
125113 updated = datetime.strptime(loaded['date'], "%Y-%m-%dT%H:%M:%S%z")
126114
@@ -136,7 +124,6 @@ class Repo:
136124 return loaded
137125
138126 def prefetch(self, ref: Optional[str]) -> str:
139− print("Prefetching")
140127 loaded = self._prefetch(ref)
141128 return loaded["sha256"]
142129
@@ -150,22 +137,21 @@ class Repo:
150137
151138class RepoGitHub(Repo):
152139 def __init__(
153− self, owner: str, repo: str, branch: str
140+ self, owner: str, repo: str, branch: str, alias: Optional[str]
154141 ) -> None:
155142 self.owner = owner
156143 self.repo = repo
157144 self.token = None
158145 '''Url to the repo'''
159− super().__init__(self.url(""), branch)
160− log.debug("Instantiating github repo owner=%s and repo=%s", self.owner, self.repo)
146+ super().__init__(self.url(""), branch, alias)
147+ log.debug("Instantiating github repo %s/%s", self.owner, self.repo)
161148
162149 @property
163150 def name(self):
164151 return self.repo
165152
166153 def url(self, path: str) -> str:
167− res = urljoin(f"https://github.com/{self.owner}/{self.repo}/", path)
168− return res
154+ return urljoin(f"https://github.com/{self.owner}/{self.name}/", path)
169155
170156 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
171157 def has_submodules(self) -> bool:
@@ -182,7 +168,6 @@ class RepoGitHub(Repo):
182168 @retry(urllib.error.URLError, tries=4, delay=3, backoff=2)
183169 def latest_commit(self) -> Tuple[str, datetime]:
184170 commit_url = self.url(f"commits/{self.branch}.atom")
185− log.debug("Sending request to %s", commit_url)
186171 commit_req = make_request(commit_url, self.token)
187172 with urllib.request.urlopen(commit_req, timeout=10) as req:
188173 self._check_for_redirect(commit_url, req)
@@ -206,9 +191,12 @@ class RepoGitHub(Repo):
206191 new_owner, new_name = (
207192 urllib.parse.urlsplit(response_url).path.strip("/").split("/")[:2]
208193 )
194+ end_line = "\n" if self.alias is None else f" as {self.alias}\n"
195+ plugin_line = "{owner}/{name}" + end_line
209196
210− new_repo = RepoGitHub(owner=new_owner, repo=new_name, branch=self.branch)
211− self.redirect = new_repo
197+ old_plugin = plugin_line.format(owner=self.owner, name=self.name)
198+ new_plugin = plugin_line.format(owner=new_owner, name=new_name)
199+ self.redirect[old_plugin] = new_plugin
212200
213201
214202 def prefetch(self, commit: str) -> str:
@@ -219,9 +207,9 @@ class RepoGitHub(Repo):
219207 return sha256
220208
221209 def prefetch_github(self, ref: str) -> str:
222− cmd = ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
223− log.debug("Running %s", cmd)
224− data = subprocess.check_output(cmd)
210+ data = subprocess.check_output(
211+ ["nix-prefetch-url", "--unpack", self.url(f"archive/{ref}.tar.gz")]
212+ )
225213 return data.strip().decode("utf-8")
226214
227215 def as_nix(self, plugin: "Plugin") -> str:
@@ -238,7 +226,7 @@ class RepoGitHub(Repo):
238226 }}'''
239227
240228
241−@dataclass(frozen=True)
229+@dataclass
242230class PluginDesc:
243231 repo: Repo
244232 branch: str
@@ -251,38 +239,21 @@ class PluginDesc:
251239 else:
252240 return self.alias
253241
254− def __lt__(self, other):
255− return self.repo.name < other.repo.name
256−
257− @staticmethod
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"])
263−
264−
265− @staticmethod
266− def load_from_string(config: FetchConfig, line: str) -> 'PluginDesc':
267− branch = "HEAD"
268− alias = None
269− uri = line
270− if " as " in uri:
271− uri, alias = uri.split(" as ")
272− alias = alias.strip()
273− if "@" in uri:
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)
278242
279−@dataclass
280243class Plugin:
281− name: str
282− commit: str
283− has_submodules: bool
284− sha256: str
285− date: Optional[datetime] = None
244+ def __init__(
245+ self,
246+ name: str,
247+ commit: str,
248+ has_submodules: bool,
249+ sha256: str,
250+ date: Optional[datetime] = None,
251+ ) -> None:
252+ self.name = name
253+ self.commit = commit
254+ self.has_submodules = has_submodules
255+ self.sha256 = sha256
256+ self.date = date
286257
287258 @property
288259 def normalized_name(self) -> str:
@@ -299,27 +270,6 @@ class Plugin:
299270 return copy
300271
301272
302−def load_plugins_from_csv(config: FetchConfig, input_file: Path,) -> List[PluginDesc]:
303− log.debug("Load plugins from csv %s", input_file)
304− plugins = []
305− with open(input_file, newline='') as csvfile:
306− log.debug("Writing into %s", input_file)
307− reader = csv.DictReader(csvfile,)
308− for line in reader:
309− plugin = PluginDesc.load_from_csv(config, line)
310− plugins.append(plugin)
311−
312− return plugins
313−
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)
321− return data
322−
323273
324274class Editor:
325275 """The configuration of the update script."""
@@ -343,19 +293,19 @@ class Editor:
343293 self.deprecated = deprecated or root.joinpath("deprecated.json")
344294 self.cache_file = cache_file or f"{name}-plugin-cache.json"
345295
346− def get_current_plugins(self) -> List[Plugin]:
296+ def get_current_plugins(self):
347297 """To fill the cache"""
348− data = run_nix_expr(self.get_plugins)
349− plugins = []
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"])
353− plugins.append(p)
354− return plugins
298+ return get_current_plugins(self)
355299
356300 def load_plugin_spec(self, config: FetchConfig, plugin_file) -> List[PluginDesc]:
357− '''CSV spec'''
358− return load_plugins_from_csv(config, plugin_file)
301+ plugins = []
302+ with open(plugin_file) as f:
303+ for line in f:
304+ if line.startswith("#"):
305+ continue
306+ plugin = parse_plugin_line(config, line)
307+ plugins.append(plugin)
308+ return plugins
359309
360310 def generate_nix(self, plugins, outfile: str):
361311 '''Returns nothing for now, writes directly to outfile'''
@@ -366,11 +316,11 @@ class Editor:
366316 _prefetch = functools.partial(prefetch, cache=cache)
367317
368318 def update() -> dict:
369− plugins = self.load_plugin_spec(config, input_file)
319+ plugin_names = self.load_plugin_spec(config, input_file)
370320
371321 try:
372322 pool = Pool(processes=config.proc)
373− results = pool.map(_prefetch, plugins)
323+ results = pool.map(_prefetch, plugin_names)
374324 finally:
375325 cache.store()
376326
@@ -465,10 +415,23 @@ class CleanEnvironment(object):
465415 self.empty_config.close()
466416
467417
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)
424+ plugins = []
425+ for name, attr in data.items():
426+ p = Plugin(name, attr["rev"], attr["submodules"], attr["sha256"])
427+ plugins.append(p)
428+ return plugins
429+
430+
468431def prefetch_plugin(
469432 p: PluginDesc,
470433 cache: "Optional[Cache]" = None,
471−) -> Tuple[Plugin, Optional[Repo]]:
434+) -> Tuple[Plugin, Dict[str, str]]:
472435 repo, branch, alias = p.repo, p.branch, p.alias
473436 name = alias or p.repo.name
474437 commit = None
@@ -482,7 +445,7 @@ def prefetch_plugin(
482445 return cached_plugin, repo.redirect
483446
484447 has_submodules = repo.has_submodules()
485− log.debug(f"prefetch {name}")
448+ print(f"prefetch {name}")
486449 sha256 = repo.prefetch(commit)
487450
488451 return (
@@ -491,7 +454,12 @@ def prefetch_plugin(
491454 )
492455
493456
494−def print_download_error(plugin: PluginDesc, ex: Exception):
457+def fetch_plugin_from_pluginline(config: FetchConfig, plugin_line: str) -> Plugin:
458+ plugin, _ = prefetch_plugin(parse_plugin_line(config, plugin_line))
459+ return plugin
460+
461+
462+def print_download_error(plugin: str, ex: Exception):
495463 print(f"{plugin}: {ex}", file=sys.stderr)
496464 ex_traceback = ex.__traceback__
497465 tb_lines = [
@@ -500,22 +468,20 @@ def print_download_error(plugin: PluginDesc, ex: Exception):
500468 ]
501469 print("\n".join(tb_lines))
502470
471+
503472def check_results(
504− results: List[Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]]
505−) -> Tuple[List[Tuple[PluginDesc, Plugin]], Redirects]:
473+ results: List[Tuple[PluginDesc, Union[Exception, Plugin], Dict[str, str]]]
474+) -> Tuple[List[Tuple[PluginDesc, Plugin]], Dict[str, str]]:
506475 ''' '''
507− failures: List[Tuple[PluginDesc, Exception]] = []
476+ failures: List[Tuple[str, Exception]] = []
508477 plugins = []
509− redirects: Redirects = {}
478+ redirects: Dict[str, str] = {}
510479 for (pdesc, result, redirect) in results:
511480 if isinstance(result, Exception):
512− failures.append((pdesc, result))
481+ failures.append((pdesc.name, result))
513482 else:
514− new_pdesc = pdesc
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)
519485
520486 print(f"{len(results) - len(failures)} plugins were checked", end="")
521487 if len(failures) == 0:
@@ -529,17 +495,31 @@ def check_results(
529495
530496 sys.exit(1)
531497
532−def make_repo(uri: str, branch) -> Repo:
498+def make_repo(uri, branch, alias) -> Repo:
533499 '''Instantiate a Repo with the correct specialization depending on server (gitub spec)'''
534500 # dumb check to see if it's of the form owner/repo (=> github) or https://...
535− res = urlparse(uri)
536− if res.netloc in [ "github.com", ""]:
537− res = res.path.strip('/').split('/')
538− repo = RepoGitHub(res[0], res[1], branch)
501+ res = uri.split('/')
502+ if len(res) <= 2:
503+ repo = RepoGitHub(res[0], res[1], branch, alias)
539504 else:
540− repo = Repo(uri.strip(), branch)
505+ repo = Repo(uri.strip(), branch, alias)
541506 return repo
542507
508+def parse_plugin_line(config: FetchConfig, line: str) -> PluginDesc:
509+ branch = "HEAD"
510+ alias = None
511+ uri = line
512+ if " as " in uri:
513+ uri, alias = uri.split(" as ")
514+ alias = alias.strip()
515+ if "@" in uri:
516+ uri, branch = uri.split("@")
517+
518+ repo = make_repo(uri.strip(), branch.strip(), alias)
519+ repo.token = config.github_token
520+
521+ return PluginDesc(repo, branch.strip(), alias)
522+
543523
544524def get_cache_path(cache_file_name: str) -> Optional[Path]:
545525 xdg_cache = os.environ.get("XDG_CACHE_HOME", None)
@@ -596,37 +576,36 @@ class Cache:
596576
597577def prefetch(
598578 pluginDesc: PluginDesc, cache: Cache
599−) -> Tuple[PluginDesc, Union[Exception, Plugin], Optional[Repo]]:
579+) -> Tuple[PluginDesc, Union[Exception, Plugin], dict]:
600580 try:
601581 plugin, redirect = prefetch_plugin(pluginDesc, cache)
602582 cache[plugin.commit] = plugin
603583 return (pluginDesc, plugin, redirect)
604584 except Exception as e:
605− return (pluginDesc, e, None)
606−
585+ return (pluginDesc, e, {})
607586
608587
609588def rewrite_input(
610589 config: FetchConfig,
611590 input_file: Path,
612591 deprecated: Path,
613− # old pluginDesc and the new
614− redirects: Redirects = {},
615− append: List[PluginDesc] = [],
592+ redirects: Dict[str, str] = None,
593+ append: Tuple = (),
616594):
617− plugins = load_plugins_from_csv(config, input_file,)
595+ with open(input_file, "r") as f:
596+ lines = f.readlines()
618597
619− plugins.extend(append)
598+ lines.extend(append)
620599
621600 if redirects:
601+ lines = [redirects.get(line, line) for line in lines]
622602
623603 cur_date_iso = datetime.now().strftime("%Y-%m-%d")
624604 with open(deprecated, "r") as f:
625605 deprecations = json.load(f)
626− for pdesc, new_repo in redirects.items():
627− new_pdesc = PluginDesc(new_repo, pdesc.branch, pdesc.alias)
628− old_plugin, _ = prefetch_plugin(pdesc)
629− new_plugin, _ = prefetch_plugin(new_pdesc)
606+ for old, new in redirects.items():
607+ old_plugin = fetch_plugin_from_pluginline(config, old)
608+ new_plugin = fetch_plugin_from_pluginline(config, new)
630609 if old_plugin.normalized_name != new_plugin.normalized_name:
631610 deprecations[old_plugin.normalized_name] = {
632611 "new": new_plugin.normalized_name,
@@ -636,14 +615,10 @@ def rewrite_input(
636615 json.dump(deprecations, f, indent=4, sort_keys=True)
637616 f.write("\n")
638617
618+ lines = sorted(lines, key=str.casefold)
619+
639620 with open(input_file, "w") as f:
640− log.debug("Writing into %s", input_file)
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))
621+ f.writelines(lines)
647622
648623
649624def commit(repo: git.Repo, message: str, files: List[Path]) -> None:
@@ -685,11 +660,9 @@ def update_plugins(editor: Editor, args):
685660 )
686661
687662 for plugin_line in args.add_plugins:
688− pdesc = PluginDesc.load_from_string(fetch_config, plugin_line)
689− append = [ pdesc ]
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",))
691664 update()
692− plugin, _ = prefetch_plugin(pdesc, )
665+ plugin = fetch_plugin_from_pluginline(fetch_config, plugin_line)
693666 if autocommit:
694667 commit(
695668 nixpkgs_repo,
maintainers/scripts/remove-old-aliases.py+6−15
@@ -28,11 +28,6 @@ def process_args() -> argparse.Namespace:
2828 default=1,
2929 help="operate on aliases older than $year-$month",
3030 )
31− arg_parser.add_argument(
32− "--only-throws",
33− action="store_true",
34− help="only operate on throws. e.g remove throws older than $date",
35− )
3631 arg_parser.add_argument("--file", required=True, type=Path, help="alias file")
3732 arg_parser.add_argument(
3833 "--dry-run", action="store_true", help="don't modify files, only print results"
@@ -41,7 +36,7 @@ def process_args() -> argparse.Namespace:
4136
4237
4338def get_date_lists(
44− txt: list[str], cutoffdate: datetimedate, only_throws: bool
39+ txt: list[str], cutoffdate: datetimedate
4540) -> tuple[list[str], list[str], list[str]]:
4641 """get a list of lines in which the date is older than $cutoffdate"""
4742 date_older_list: list[str] = []
@@ -62,11 +57,7 @@ def get_date_lists(
6257 except ValueError:
6358 continue
6459
65− if (
66− my_date is None
67− or my_date > cutoffdate
68− or "preserve, reason:" in line.lower()
69− ):
60+ if my_date is None or my_date > cutoffdate:
7061 continue
7162
7263 if "=" not in line:
@@ -76,7 +67,7 @@ def get_date_lists(
7667 print(f"RESOLVE MANUALLY {line}")
7768 elif "throw" in line:
7869 date_older_throw_list.append(line)
79− elif not only_throws:
70+ else:
8071 date_older_list.append(line)
8172
8273 return (
@@ -169,7 +160,6 @@ def main() -> None:
169160 """main"""
170161 args = process_args()
171162
172− only_throws = args.only_throws
173163 aliasfile = Path(args.file).absolute()
174164 cutoffdate = (datetime.strptime(f"{args.year}-{args.month}-01", "%Y-%m-%d")).date()
175165
@@ -180,12 +170,13 @@ def main() -> None:
180170 date_older_throw_list: list[str] = []
181171
182172 date_older_list, date_sep_line_list, date_older_throw_list = get_date_lists(
183− txt, cutoffdate, only_throws
173+ txt, cutoffdate
184174 )
185175
186176 converted_to_throw: list[tuple[str, str]] = []
177+ converted_to_throw = convert_to_throw(date_older_list)
178+
187179 if date_older_list:
188− converted_to_throw = convert_to_throw(date_older_list)
189180 print(" Will be converted to throws. ".center(100, "-"))
190181 for l_n in date_older_list:
191182 print(l_n)
maintainers/team-list.nix−359
@@ -3,19 +3,12 @@
33 # Required
44 members = [ maintainer1 maintainer2 ];
55 scope = "Maintain foo packages.";
6− shortName = "foo";
7− # Optional
8− enableFeatureFreezePing = true;
9− githubTeams = [ "my-subsystem" ];
106 };
117
128 where
139
1410 - `members` is the list of maintainers belonging to the group,
1511 - `scope` describes the scope of the group.
16− - `shortName` short human-readable name
17− - `enableFeatureFreezePing` will ping this team during the Feature Freeze announcements on releases
18− - `githubTeams` will ping specified GitHub teams as well
1912
2013 More fields may be added in the future.
2114
@@ -34,7 +27,6 @@ with lib.maintainers; {
3427 m1cr0man
3528 ];
3629 scope = "Maintain ACME-related packages and modules.";
37− shortName = "ACME";
3830 };
3931
4032 bazel = {
@@ -49,8 +41,6 @@ with lib.maintainers; {
4941 ylecornec
5042 ];
5143 scope = "Bazel build tool & related tools https://bazel.build/";
52− shortName = "Bazel";
53− enableFeatureFreezePing = true;
5444 };
5545
5646 beam = {
@@ -63,32 +53,7 @@ with lib.maintainers; {
6353 minijackson
6454 yurrriq
6555 ];
66− githubTeams = [
67− "beam"
68− ];
6956 scope = "Maintain BEAM-related packages and modules.";
70− shortName = "BEAM";
71− enableFeatureFreezePing = true;
72− };
73−
74− blockchains = {
75− members = [
76− mmahut
77− RaghavSood
78− ];
79− scope = "Maintain Blockchain packages and modules.";
80− shortName = "Blockchains";
81− enableFeatureFreezePing = true;
82− };
83−
84− c = {
85− members = [
86− matthewbauer
87− mic92
88− ];
89− scope = "Maintain C libraries and tooling.";
90− shortName = "C";
91− enableFeatureFreezePing = true;
9257 };
9358
9459 cinnamon = {
@@ -96,8 +61,6 @@ with lib.maintainers; {
9661 mkg20001
9762 ];
9863 scope = "Maintain Cinnamon desktop environment and applications made by the LinuxMint team.";
99− shortName = "Cinnamon";
100− enableFeatureFreezePing = true;
10164 };
10265
10366 chia = {
@@ -105,40 +68,6 @@ with lib.maintainers; {
10568 lourkeur
10669 ];
10770 scope = "Maintain the Chia blockchain and its dependencies";
108− shortName = "Chia Blockchain";
109− };
110−
111− coq = {
112− members = [
113− cohencyril
114− Zimmi48
115− # gares has no entry in the maintainers list
116− siraben
117− vbgl
118− ];
119− scope = "Maintain the Coq theorem prover and related packages.";
120− shortName = "Coq";
121− enableFeatureFreezePing = true;
122− };
123−
124− darwin = {
125− members = [
126− toonn
127− ];
128− githubTeams = [
129− "darwin-maintainers"
130− ];
131− scope = "Maintain Darwin compatibility of packages and Darwin-only packages.";
132− shortName = "Darwin";
133− enableFeatureFreezePing = true;
134− };
135−
136− cosmopolitan = {
137− members = [
138− lourkeur
139− tomberek
140− ];
141− scope = "Maintain the Cosmopolitan LibC and related programs.";
14271 };
14372
14473 deshaw = {
@@ -147,7 +76,6 @@ with lib.maintainers; {
14776 limeytexan
14877 ];
14978 scope = "Group registration for D. E. Shaw employees who collectively maintain packages.";
150− shortName = "Shaw employees";
15179 };
15280
15381 determinatesystems = {
@@ -157,75 +85,11 @@ with lib.maintainers; {
15785 grahamc
15886 ];
15987 scope = "Group registration for packages maintained by Determinate Systems.";
160− shortName = "Determinate Systems employees";
161− };
162−
163− dhall = {
164− members = [
165− Gabriel439
166− ehmry
167− ];
168− scope = "Maintain Dhall and related packages.";
169− shortName = "Dhall";
170− enableFeatureFreezePing = true;
171− };
172−
173− docker = {
174− members = [
175− roberth
176− utdemir
177− ];
178− scope = "Maintain Docker and related tools.";
179− shortName = "DockerTools";
180− enableFeatureFreezePing = true;
181− };
182−
183− docs = {
184− members = [
185− ryantm
186− ];
187− scope = "Maintain nixpkgs/NixOS documentation and tools for building it.";
188− shortName = "Docs";
189− enableFeatureFreezePing = true;
190− };
191−
192− emacs = {
193− members = [
194− adisbladis
195− ];
196− scope = "Maintain the Emacs editor and packages.";
197− shortName = "Emacs";
198− enableFeatureFreezePing = true;
199− };
200−
201− enlightenment = {
202− members = [
203− romildo
204− ];
205− githubTeams = [
206− "enlightenment"
207− ];
208− scope = "Maintain Enlightenment desktop environment and related packages.";
209− shortName = "Enlightenment";
210− enableFeatureFreezePing = true;
211− };
212−
213− # Dummy group for the "everyone else" section
214− feature-freeze-everyone-else = {
215− members = [ ];
216− githubTeams = [
217− "nixpkgs-committers"
218− "release-engineers"
219− ];
220− scope = "Dummy team for the #everyone else' section during feture freezes, not to be used as package maintainers!";
221− shortName = "Everyone else";
222− enableFeatureFreezePing = true;
22388 };
22489
22590 freedesktop = {
22691 members = [ jtojnar ];
22792 scope = "Maintain Freedesktop.org packages for graphical desktop.";
228− shortName = "freedesktop.org packaging";
22993 };
23094
23195 gcc = {
@@ -235,7 +99,6 @@ with lib.maintainers; {
23599 ericson2314
236100 ];
237101 scope = "Maintain GCC (GNU Compiler Collection) compilers";
238− shortName = "GCC";
239102 };
240103
241104 golang = {
@@ -250,24 +113,16 @@ with lib.maintainers; {
250113 zowoq
251114 ];
252115 scope = "Maintain Golang compilers.";
253− shortName = "Go";
254− enableFeatureFreezePing = true;
255116 };
256117
257118 gnome = {
258119 members = [
259− bobby285271
260120 hedning
261121 jtojnar
262122 dasj19
263123 maxeaubrey
264124 ];
265− githubTeams = [
266− "gnome"
267− ];
268125 scope = "Maintain GNOME desktop environment and platform.";
269− shortName = "GNOME";
270− enableFeatureFreezePing = true;
271126 };
272127
273128 haskell = {
@@ -277,12 +132,7 @@ with lib.maintainers; {
277132 maralorn
278133 sternenseemann
279134 ];
280− githubTeams = [
281− "haskell"
282− ];
283135 scope = "Maintain Haskell packages and infrastructure.";
284− shortName = "Haskell";
285− enableFeatureFreezePing = true;
286136 };
287137
288138 home-assistant = {
@@ -293,7 +143,6 @@ with lib.maintainers; {
293143 mic92
294144 ];
295145 scope = "Maintain the Home Assistant ecosystem";
296− shortName = "Home Assistant";
297146 };
298147
299148 iog = {
@@ -305,7 +154,6 @@ with lib.maintainers; {
305154 nrdxp
306155 ];
307156 scope = "Input-Output Global employees, which maintain critical software";
308− shortName = "Input-Output Global employees";
309157 };
310158
311159 jitsi = {
@@ -316,7 +164,6 @@ with lib.maintainers; {
316164 yuka
317165 ];
318166 scope = "Maintain Jitsi.";
319− shortName = "Jitsi";
320167 };
321168
322169 kubernetes = {
@@ -328,7 +175,6 @@ with lib.maintainers; {
328175 zowoq
329176 ];
330177 scope = "Maintain the Kubernetes package and module";
331− shortName = "Kubernetes";
332178 };
333179
334180 kodi = {
@@ -341,7 +187,6 @@ with lib.maintainers; {
341187 sephalon
342188 ];
343189 scope = "Maintain Kodi and related packages.";
344− shortName = "Kodi";
345190 };
346191
347192 linux-kernel = {
@@ -352,41 +197,6 @@ with lib.maintainers; {
352197 qyliss
353198 ];
354199 scope = "Maintain the Linux kernel.";
355− shortName = "Linux Kernel";
356− };
357−
358− lumina = {
359− members = [
360− romildo
361− ];
362− githubTeams = [
363− "lumina"
364− ];
365− scope = "Maintain lumina desktop environment and related packages.";
366− shortName = "Lumina";
367− enableFeatureFreezePing = true;
368− };
369−
370− lxqt = {
371− members = [
372− romildo
373− ];
374− githubTeams = [
375− "lxqt"
376− ];
377− scope = "Maintain LXQt desktop environment and related packages.";
378− shortName = "LXQt";
379− enableFeatureFreezePing = true;
380− };
381−
382− marketing = {
383− members = [
384− garbas
385− tomberek
386− ];
387− scope = "Marketing of Nix/NixOS/nixpkgs.";
388− shortName = "Marketing";
389− enableFeatureFreezePing = true;
390200 };
391201
392202 mate = {
@@ -395,7 +205,6 @@ with lib.maintainers; {
395205 romildo
396206 ];
397207 scope = "Maintain Mate desktop environment and related packages.";
398− shortName = "MATE";
399208 };
400209
401210 matrix = {
@@ -409,40 +218,6 @@ with lib.maintainers; {
409218 sumnerevans
410219 ];
411220 scope = "Maintain the ecosystem around Matrix, a decentralized messenger.";
412− shortName = "Matrix";
413− };
414−
415− mobile = {
416− members = [
417− samueldr
418− ];
419− scope = "Maintain Mobile NixOS.";
420− shortName = "Mobile";
421− enableFeatureFreezePing = true;
422− };
423−
424− nix = {
425− members = [
426− Profpatsch
427− eelco
428− grahamc
429− pierron
430− ];
431− scope = "Maintain the Nix package manager.";
432− shortName = "Nix/nix-cli ecosystem";
433− enableFeatureFreezePing = true;
434− };
435−
436− nixos-modules = {
437− members = [
438− ericson2314
439− infinisil
440− qyliss
441− roberth
442− ];
443− scope = "Maintain nixpkgs module system internals.";
444− shortName = "NixOS Modules / internals";
445− enableFeatureFreezePing = true;
446221 };
447222
448223 openstack = {
@@ -451,7 +226,6 @@ with lib.maintainers; {
451226 SuperSandro2000
452227 ];
453228 scope = "Maintain the ecosystem around OpenStack";
454− shortName = "OpenStack";
455229 };
456230
457231 pantheon = {
@@ -459,21 +233,7 @@ with lib.maintainers; {
459233 davidak
460234 bobby285271
461235 ];
462− githubTeams = [
463− "pantheon"
464− ];
465236 scope = "Maintain Pantheon desktop environment and platform.";
466− shortName = "Pantheon";
467− enableFeatureFreezePing = true;
468− };
469−
470− perl = {
471− members = [
472− sgo
473− ];
474− scope = "Maintain the Perl interpreter and Perl packages.";
475− shortName = "Perl";
476− enableFeatureFreezePing = true;
477237 };
478238
479239 php = {
@@ -485,12 +245,7 @@ with lib.maintainers; {
485245 ma27
486246 talyz
487247 ];
488− githubTeams = [
489− "php"
490− ];
491248 scope = "Maintain PHP related packages and extensions.";
492− shortName = "PHP";
493− enableFeatureFreezePing = true;
494249 };
495250
496251 podman = {
@@ -500,54 +255,7 @@ with lib.maintainers; {
500255 vdemeester
501256 zowoq
502257 ];
503− githubTeams = [
504− "podman"
505− ];
506258 scope = "Maintain Podman and CRI-O related packages and modules.";
507− shortName = "Podman";
508− enableFeatureFreezePing = true;
509− };
510−
511− postgres = {
512− members = [
513− thoughtpolice
514− ];
515− scope = "Maintain the PostgreSQL package and plugins along with the NixOS module.";
516− shortName = "PostgreSQL";
517− enableFeatureFreezePing = true;
518− };
519−
520− python = {
521− members = [
522− fridh
523− hexa
524− jonringer
525− ];
526− scope = "Maintain the Python interpreter and related packages.";
527− shortName = "Python";
528− enableFeatureFreezePing = true;
529− };
530−
531− qt-kde = {
532− members = [
533− ttuegel
534− ];
535− githubTeams = [
536− "qt-kde"
537− ];
538− scope = "Maintain the KDE desktop environment and Qt.";
539− shortName = "Qt / KDE";
540− enableFeatureFreezePing = true;
541− };
542−
543− r = {
544− members = [
545− bcdarwin
546− jbedo
547− ];
548− scope = "Maintain the R programming language and related packages.";
549− shortName = "R";
550− enableFeatureFreezePing = true;
551259 };
552260
553261 redcodelabs = {
@@ -557,38 +265,6 @@ with lib.maintainers; {
557265 wintrmvte
558266 ];
559267 scope = "Maintain Red Code Labs related packages and modules.";
560− shortName = "Red Code Labs";
561− };
562−
563− release = {
564− members = [ ];
565− githubTeams = [
566− "nixos-release-managers"
567− ];
568− scope = "Manage the current nixpkgs/NixOS release.";
569− shortName = "Release";
570− enableFeatureFreezePing = true;
571− };
572−
573− ruby = {
574− members = [
575− marsam
576− ];
577− scope = "Maintain the Ruby interpreter and related packages.";
578− shortName = "Ruby";
579− enableFeatureFreezePing = true;
580− };
581−
582− rust = {
583− members = [
584− andir
585− lnl7
586− mic92
587− zowoq
588− ];
589− scope = "Maintain the Rust compiler toolchain and nixpkgs integration.";
590− shortName = "Rust";
591− enableFeatureFreezePing = true;
592268 };
593269
594270 sage = {
@@ -599,7 +275,6 @@ with lib.maintainers; {
599275 collares
600276 ];
601277 scope = "Maintain SageMath and the dependencies that are likely to break it.";
602− shortName = "SageMath";
603278 };
604279
605280 sphinx = {
@@ -607,7 +282,6 @@ with lib.maintainers; {
607282 SuperSandro2000
608283 ];
609284 scope = "Maintain Sphinx related packages.";
610− shortName = "Sphinx";
611285 };
612286
613287 serokell = {
@@ -617,26 +291,6 @@ with lib.maintainers; {
617291 mkaito
618292 ];
619293 scope = "Group registration for Serokell employees who collectively maintain packages.";
620− shortName = "Serokell employees";
621− };
622−
623− systemd = {
624− members = [ ];
625− githubTeams = [
626− "systemd"
627− ];
628− scope = "Maintain systemd for NixOS.";
629− shortName = "systemd";
630− enableFeatureFreezePing = true;
631− };
632−
633− tests = {
634− members = [
635− tfc
636− ];
637− scope = "Maintain the NixOS VM test runner.";
638− shortName = "NixOS tests";
639− enableFeatureFreezePing = true;
640294 };
641295
642296 tts = {
@@ -645,18 +299,6 @@ with lib.maintainers; {
645299 mic92
646300 ];
647301 scope = "coqui-ai TTS (formerly Mozilla TTS) and leaf packages";
648− shortName = "coqui-ai TTS";
649− };
650−
651− vim = {
652− members = [
653− jonringer
654− softinio
655− teto
656− ];
657− scope = "Maintain the vim and neovim text editors and related packages.";
658− shortName = "Vim/Neovim";
659− enableFeatureFreezePing = true;
660302 };
661303
662304 xfce = {
@@ -664,6 +306,5 @@ with lib.maintainers; {
664306 romildo
665307 ];
666308 scope = "Maintain Xfce desktop environment and related packages.";
667− shortName = "Xfce";
668309 };
669310}
nixos/doc/manual/administration/declarative-containers.section.md+1−1
@@ -40,7 +40,7 @@ section for details on container networking.)
4040To disable the container, just remove it from `configuration.nix` and
4141run `nixos-rebuild
4242 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
4444the imperative method: `nixos-container destroy foo`.
4545
4646Declarative 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:
1010# nixos-container create foo
1111```
1212
13−This creates the container's root directory in `/var/lib/nixos-containers/foo`
14−and a small configuration file in `/etc/nixos-containers/foo.conf`. It also
13+This creates the container's root directory in `/var/lib/containers/foo`
14+and a small configuration file in `/etc/containers/foo.conf`. It also
1515builds the container's initial system configuration and stores it in
1616`/nix/var/nix/profiles/per-container/foo/system`. You can modify the
1717initial configuration of the container on the command line. For
nixos/doc/manual/default.nix−4
@@ -14,10 +14,6 @@ with pkgs;
1414let
1515 lib = pkgs.lib;
1616
17− docbook_xsl_ns = pkgs.docbook-xsl-ns.override {
18− withManOptDedupPatch = true;
19− };
20−
2117 # We need to strip references to /nix/store/* from options,
2218 # including any `extraSources` if some modules came from elsewhere,
2319 # 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:
3030# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
3131```
3232
33−## Additional drivers or firmware {#sec-building-image-drivers}
34−
35−If you need additional (non-distributable) drivers or firmware in the
36−installer, you might want to extend these configurations.
37−
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`:
41−
42−```nix
43−{ config, ... }:
44−
45−{
46− imports = [ ./installation-cd-graphical-gnome.nix ];
47−
48− boot.initrd.kernelModules = [ "wl" ];
49−
50− boot.kernelModules = [ "kvm-intel" "wl" ];
51− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
52−}
53−```
54−
55−Then build it like in the example above:
56−
57−```ShellSession
58−$ git clone https://github.com/NixOS/nixpkgs.git
59−$ cd nixpkgs/nixos
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
62−```
63−
6433## Technical Notes {#sec-building-image-tech-notes}
6534
6635The config value enforcement is implemented via `mkImageMediaOverride = mkOverride 60;`
nixos/doc/manual/development/development.xml+1
@@ -14,6 +14,7 @@
1414 <xi:include href="../from_md/development/building-parts.chapter.xml" />
1515 <xi:include href="../from_md/development/what-happens-during-a-system-switch.chapter.xml" />
1616 <xi:include href="../from_md/development/writing-documentation.chapter.xml" />
17+ <xi:include href="../from_md/development/building-nixos.chapter.xml" />
1718 <xi:include href="../from_md/development/nixos-tests.chapter.xml" />
1819 <xi:include href="../from_md/development/testing-installer.chapter.xml" />
1920</part>
nixos/doc/manual/development/option-declarations.section.md+2−2
@@ -120,14 +120,14 @@ lib.mkOption {
120120```nix
121121lib.mkPackageOption pkgs "GHC" {
122122 default = [ "ghc" ];
123− example = "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
123+ example = "pkgs.haskell.package.ghc921.ghc.withPackages (hkgs: [ hkgs.primes ])";
124124}
125125# is like
126126lib.mkOption {
127127 type = lib.types.package;
128128 default = pkgs.ghc;
129129 defaultText = lib.literalExpression "pkgs.ghc";
130− example = lib.literalExpression "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
130+ example = lib.literalExpression "pkgs.haskell.package.ghc921.ghc.withPackages (hkgs: [ hkgs.primes ])";
131131 description = "The GHC package to use.";
132132}
133133```
nixos/doc/manual/development/settings-options.section.md−14
@@ -32,20 +32,6 @@ type of this option should represent the format. The most common formats
3232have a predefined type and string generator already declared under
3333`pkgs.formats`:
3434
35−`pkgs.formats.javaProperties` { *`comment`* ? `"Generated with Nix"` }
36−
37−: A function taking an attribute set with values
38−
39− `comment`
40−
41− : A string to put at the start of the
42− file in a comment. It can have multiple
43− lines.
44−
45− It returns the `type`: `attrsOf str` and a function
46− `generate` to build a Java `.properties` file, taking
47− care of the correct escaping, etc.
48−
4935`pkgs.formats.json` { }
5036
5137: A function taking an empty attribute set (for future extensibility)
nixos/doc/manual/development/writing-nixos-tests.section.md+36−52
@@ -5,9 +5,15 @@ A NixOS test is a Nix expression that has the following structure:
55```nix
66import ./make-test-python.nix {
77
8− # One or more machines:
8+ # Either the configuration of a single machine:
9+ machine =
10+ { config, pkgs, ... }:
11+ { configuration…
12+ };
13+
14+ # Or a set of machines:
915 nodes =
10− { machine =
16+ { machine1 =
1117 { config, pkgs, ... }: { … };
1218 machine2 =
1319 { config, pkgs, ... }: { … };
@@ -23,16 +29,17 @@ import ./make-test-python.nix {
2329
2430The attribute `testScript` is a bit of Python code that executes the
2531test (described below). During the test, it will start one or more
26−virtual machines, the configuration of which is described by
27−the attribute `nodes`.
28−
29−An example of a single-node test is
30−[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix).
31−It only needs a single machine to test whether users can log in
32+virtual machines, the configuration of which is described by the
33+attribute `machine` (if you need only one machine in your test) or by
34+the attribute `nodes` (if you need multiple machines). For instance,
35+[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix)
36+only needs a single machine to test whether users can log in
3237on the virtual console, whether device ownership is correctly maintained
33−when switching between consoles, and so on. An interesting multi-node test is
34−[`nfs/simple.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix).
35−It uses two client nodes to test correct locking across server crashes.
38+when switching between consoles, and so on. On the other hand,
39+[`nfs/simple.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix),
40+which tests NFS client and server functionality in the
41+Linux kernel (including whether locks are maintained across server
42+crashes), requires three machines: a server and two clients.
3643
3744There are a few special NixOS configuration options for test VMs:
3845
@@ -60,7 +67,8 @@ The test script is a sequence of Python statements that perform various
6067actions, such as starting VMs, executing commands in the VMs, and so on.
6168Each virtual machine is represented as an object stored in the variable
6269`name` if this is also the identifier of the machine in the declarative
63−config. If you specified a node `nodes.machine`, the following example starts the
70+config. If you didn\'t specify multiple machines using the `nodes`
71+attribute, it is just `machine`. The following example starts the
6472machine, waits until it has finished booting, then executes a command
6573and checks that the output is more-or-less correct:
6674
@@ -71,7 +79,7 @@ if not "Linux" in machine.succeed("uname"):
7179 raise Exception("Wrong OS")
7280```
7381
74−The first line is technically unnecessary; machines are implicitly started
82+The first line is actually unnecessary; machines are implicitly started
7583when you first execute an action on them (such as `wait_for_unit` or
7684`succeed`). If you have multiple machines, you can speed up the test by
7785starting them in parallel:
@@ -150,51 +158,37 @@ The following methods are available on machine objects:
150158 e.g., `send_chars("foobar\n")` will type the string `foobar`
151159 followed by the Enter key.
152160
153−`send_console`
154−
155−: Send keys to the kernel console. This allows interaction with the systemd
156− emergency mode, for example. Takes a string that is sent, e.g.,
157− `send_console("\n\nsystemctl default\n")`.
158−
159161`execute`
160162
161163: Execute a shell command, returning a list `(status, stdout)`.
162−
163− Commands are run with `set -euo pipefail` set:
164−
165− - If several commands are separated by `;` and one fails, the
166− command as a whole will fail.
167−
168− - For pipelines, the last non-zero exit status will be returned
169− (if there is one; otherwise zero will be returned).
170−
171− - Dereferencing unset variables fails the command.
172−
173− - It will wait for stdout to be closed.
174−
175164 If the command detaches, it must close stdout, as `execute` will wait
176165 for this to consume all output reliably. This can be achieved by
177166 redirecting stdout to stderr `>&2`, to `/dev/console`, `/dev/null` or
178167 a file. Examples of detaching commands are `sleep 365d &`, where the
179168 shell forks a new process that can write to stdout and `xclip -i`, where
180169 the `xclip` command itself forks without closing stdout.
181−
182170 Takes an optional parameter `check_return` that defaults to `True`.
183171 Setting this parameter to `False` will not check for the return code
184172 and return -1 instead. This can be used for commands that shut down
185173 the VM and would therefore break the pipe that would be used for
186174 retrieving the return code.
187175
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.
191−
192176`succeed`
193177
194178: Execute a shell command, raising an exception if the exit status is
195− not zero, otherwise returning the standard output. Similar to `execute`,
196− except that the timeout is `None` by default. See `execute` for details on
197− command execution.
179+ not zero, otherwise returning the standard output. Commands are run
180+ with `set -euo pipefail` set:
181+
182+ - If several commands are separated by `;` and one fails, the
183+ command as a whole will fail.
184+
185+ - For pipelines, the last non-zero exit status will be returned
186+ (if there is one, zero will be returned otherwise).
187+
188+ - Dereferencing unset variables fail the command.
189+
190+ - It will wait for stdout to be closed. See `execute` for the
191+ implications.
198192
199193`fail`
200194
@@ -204,13 +198,10 @@ The following methods are available on machine objects:
204198`wait_until_succeeds`
205199
206200: 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
209− command execution.
210201
211202`wait_until_fails`
212203
213−: Like `wait_until_succeeds`, but repeating the command until it fails.
204+: Repeat a shell command with 1-second intervals until it fails.
214205
215206`wait_for_unit`
216207
@@ -281,13 +272,6 @@ The following methods are available on machine objects:
281272 Killing the interactive session with `Ctrl-d` or `Ctrl-c` also ends
282273 the guest session.
283274
284−`console_interact`
285−
286−: Allows you to directly interact with QEMU's stdin. This should
287− only be used during test development, not in production tests.
288− Output from QEMU is only read line-wise. `Ctrl-c` kills QEMU and
289− `Ctrl-d` closes console and returns to the test runner.
290−
291275To test user units declared by `systemd.user.services` the optional
292276`user` argument can be used:
293277
@@ -306,7 +290,7 @@ For faster dev cycles it\'s also possible to disable the code-linters
306290```nix
307291import ./make-test-python.nix {
308292 skipLint = true;
309− nodes.machine =
293+ machine =
310294 { config, pkgs, ... }:
311295 { configuration…
312296 };
nixos/doc/manual/from_md/administration/declarative-containers.section.xml+2−2
@@ -48,8 +48,8 @@ containers.database = {
4848 <literal>configuration.nix</literal> and run
4949 <literal>nixos-rebuild switch</literal>. Note that this will not
5050 delete the root directory of the container in
51− <literal>/var/lib/nixos-containers</literal>. Containers can be
52− destroyed using the imperative method:
51+ <literal>/var/lib/containers</literal>. Containers can be destroyed
52+ using the imperative method:
5353 <literal>nixos-container destroy foo</literal>.
5454 </para>
5555 <para>
nixos/doc/manual/from_md/administration/imperative-containers.section.xml+2−3
@@ -14,9 +14,8 @@
1414</programlisting>
1515 <para>
1616 This creates the container’s root directory in
17− <literal>/var/lib/nixos-containers/foo</literal> and a small
18− configuration file in
19− <literal>/etc/nixos-containers/foo.conf</literal>. It also builds
17+ <literal>/var/lib/containers/foo</literal> and a small configuration
18+ file in <literal>/etc/containers/foo.conf</literal>. It also builds
2019 the container’s initial system configuration and stores it in
2120 <literal>/nix/var/nix/profiles/per-container/foo/system</literal>.
2221 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
4343 </para>
4444 <programlisting>
4545# mount -o loop -t iso9660 ./result/iso/cd.iso /mnt/iso
46−</programlisting>
47− </section>
48− <section xml:id="sec-building-image-drivers">
49− <title>Additional drivers or firmware</title>
50− <para>
51− If you need additional (non-distributable) drivers or firmware in
52− the installer, you might want to extend these configurations.
53− </para>
54− <para>
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>:
59− </para>
60− <programlisting language="bash">
61−{ config, ... }:
62−
63−{
64− imports = [ ./installation-cd-graphical-gnome.nix ];
65−
66− boot.initrd.kernelModules = [ "wl" ];
67−
68− boot.kernelModules = [ "kvm-intel" "wl" ];
69− boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
70−}
71−</programlisting>
72− <para>
73− Then build it like in the example above:
74− </para>
75− <programlisting>
76−$ git clone https://github.com/NixOS/nixpkgs.git
77−$ cd nixpkgs/nixos
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
8046</programlisting>
8147 </section>
8248 <section xml:id="sec-building-image-tech-notes">
nixos/doc/manual/from_md/development/option-declarations.section.xml+2−2
@@ -183,14 +183,14 @@ lib.mkOption {
183183 <programlisting language="bash">
184184lib.mkPackageOption pkgs "GHC" {
185185 default = [ "ghc" ];
186− example = "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
186+ example = "pkgs.haskell.package.ghc921.ghc.withPackages (hkgs: [ hkgs.primes ])";
187187}
188188# is like
189189lib.mkOption {
190190 type = lib.types.package;
191191 default = pkgs.ghc;
192192 defaultText = lib.literalExpression "pkgs.ghc";
193− example = lib.literalExpression "pkgs.haskell.package.ghc922.ghc.withPackages (hkgs: [ hkgs.primes ])";
193+ example = lib.literalExpression "pkgs.haskell.package.ghc921.ghc.withPackages (hkgs: [ hkgs.primes ])";
194194 description = "The GHC package to use.";
195195}
196196</programlisting>
nixos/doc/manual/from_md/development/settings-options.section.xml−32
@@ -53,38 +53,6 @@
5353 <literal>pkgs.formats</literal>:
5454 </para>
5555 <variablelist>
56− <varlistentry>
57− <term>
58− <literal>pkgs.formats.javaProperties</literal> {
59− <emphasis><literal>comment</literal></emphasis> ?
60− <literal>"Generated with Nix"</literal> }
61− </term>
62− <listitem>
63− <para>
64− A function taking an attribute set with values
65− </para>
66− <variablelist>
67− <varlistentry>
68− <term>
69− <literal>comment</literal>
70− </term>
71− <listitem>
72− <para>
73− A string to put at the start of the file in a comment.
74− It can have multiple lines.
75− </para>
76− </listitem>
77− </varlistentry>
78− </variablelist>
79− <para>
80− It returns the <literal>type</literal>:
81− <literal>attrsOf str</literal> and a function
82− <literal>generate</literal> to build a Java
83− <literal>.properties</literal> file, taking care of the
84− correct escaping, etc.
85− </para>
86− </listitem>
87− </varlistentry>
8856 <varlistentry>
8957 <term>
9058 <literal>pkgs.formats.json</literal> { }
nixos/doc/manual/from_md/development/writing-nixos-tests.section.xml+56−95
@@ -6,9 +6,15 @@
66 <programlisting language="bash">
77import ./make-test-python.nix {
88
9− # One or more machines:
9+ # Either the configuration of a single machine:
10+ machine =
11+ { config, pkgs, ... }:
12+ { configuration…
13+ };
14+
15+ # Or a set of machines:
1016 nodes =
11− { machine =
17+ { machine1 =
1218 { config, pkgs, ... }: { … };
1319 machine2 =
1420 { config, pkgs, ... }: { … };
@@ -25,18 +31,18 @@ import ./make-test-python.nix {
2531 The attribute <literal>testScript</literal> is a bit of Python code
2632 that executes the test (described below). During the test, it will
2733 start one or more virtual machines, the configuration of which is
28− described by the attribute <literal>nodes</literal>.
29− </para>
30− <para>
31− An example of a single-node test is
32− <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix"><literal>login.nix</literal></link>.
33− It only needs a single machine to test whether users can log in on
34− the virtual console, whether device ownership is correctly
35− maintained when switching between consoles, and so on. An
36− interesting multi-node test is
37− <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix"><literal>nfs/simple.nix</literal></link>.
38− It uses two client nodes to test correct locking across server
39− crashes.
34+ described by the attribute <literal>machine</literal> (if you need
35+ only one machine in your test) or by the attribute
36+ <literal>nodes</literal> (if you need multiple machines). For
37+ instance,
38+ <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix"><literal>login.nix</literal></link>
39+ only needs a single machine to test whether users can log in on the
40+ virtual console, whether device ownership is correctly maintained
41+ when switching between consoles, and so on. On the other hand,
42+ <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nfs/simple.nix"><literal>nfs/simple.nix</literal></link>,
43+ which tests NFS client and server functionality in the Linux kernel
44+ (including whether locks are maintained across server crashes),
45+ requires three machines: a server and two clients.
4046 </para>
4147 <para>
4248 There are a few special NixOS configuration options for test VMs:
@@ -88,8 +94,9 @@ import ./make-test-python.nix {
8894 various actions, such as starting VMs, executing commands in the
8995 VMs, and so on. Each virtual machine is represented as an object
9096 stored in the variable <literal>name</literal> if this is also the
91− identifier of the machine in the declarative config. If you
92− specified a node <literal>nodes.machine</literal>, the following
97+ identifier of the machine in the declarative config. If you didn't
98+ specify multiple machines using the <literal>nodes</literal>
99+ attribute, it is just <literal>machine</literal>. The following
93100 example starts the machine, waits until it has finished booting,
94101 then executes a command and checks that the output is more-or-less
95102 correct:
@@ -101,7 +108,7 @@ if not "Linux" in machine.succeed("uname"):
101108 raise Exception("Wrong OS")
102109</programlisting>
103110 <para>
104− The first line is technically unnecessary; machines are implicitly
111+ The first line is actually unnecessary; machines are implicitly
105112 started when you first execute an action on them (such as
106113 <literal>wait_for_unit</literal> or <literal>succeed</literal>). If
107114 you have multiple machines, you can speed up the test by starting
@@ -256,27 +263,40 @@ start_all()
256263 </varlistentry>
257264 <varlistentry>
258265 <term>
259− <literal>send_console</literal>
266+ <literal>execute</literal>
260267 </term>
261268 <listitem>
262269 <para>
263− Send keys to the kernel console. This allows interaction
264− with the systemd emergency mode, for example. Takes a string
265− that is sent, e.g.,
266− <literal>send_console("\n\nsystemctl default\n")</literal>.
270+ Execute a shell command, returning a list
271+ <literal>(status, stdout)</literal>. If the command
272+ detaches, it must close stdout, as
273+ <literal>execute</literal> will wait for this to consume all
274+ output reliably. This can be achieved by redirecting stdout
275+ to stderr <literal>>&2</literal>, to
276+ <literal>/dev/console</literal>,
277+ <literal>/dev/null</literal> or a file. Examples of
278+ detaching commands are <literal>sleep 365d &</literal>,
279+ where the shell forks a new process that can write to stdout
280+ and <literal>xclip -i</literal>, where the
281+ <literal>xclip</literal> command itself forks without
282+ closing stdout. Takes an optional parameter
283+ <literal>check_return</literal> that defaults to
284+ <literal>True</literal>. Setting this parameter to
285+ <literal>False</literal> will not check for the return code
286+ and return -1 instead. This can be used for commands that
287+ shut down the VM and would therefore break the pipe that
288+ would be used for retrieving the return code.
267289 </para>
268290 </listitem>
269291 </varlistentry>
270292 <varlistentry>
271293 <term>
272− <literal>execute</literal>
294+ <literal>succeed</literal>
273295 </term>
274296 <listitem>
275297 <para>
276− Execute a shell command, returning a list
277− <literal>(status, stdout)</literal>.
278− </para>
279− <para>
298+ Execute a shell command, raising an exception if the exit
299+ status is not zero, otherwise returning the standard output.
280300 Commands are run with <literal>set -euo pipefail</literal>
281301 set:
282302 </para>
@@ -291,63 +311,22 @@ start_all()
291311 <listitem>
292312 <para>
293313 For pipelines, the last non-zero exit status will be
294− returned (if there is one; otherwise zero will be
295− returned).
314+ returned (if there is one, zero will be returned
315+ otherwise).
296316 </para>
297317 </listitem>
298318 <listitem>
299319 <para>
300− Dereferencing unset variables fails the command.
320+ Dereferencing unset variables fail the command.
301321 </para>
302322 </listitem>
303323 <listitem>
304324 <para>
305− It will wait for stdout to be closed.
325+ It will wait for stdout to be closed. See
326+ <literal>execute</literal> for the implications.
306327 </para>
307328 </listitem>
308329 </itemizedlist>
309− <para>
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
320− closing stdout.
321− </para>
322− <para>
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.
329− </para>
330− <para>
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
335− is 900 seconds.
336− </para>
337− </listitem>
338− </varlistentry>
339− <varlistentry>
340− <term>
341− <literal>succeed</literal>
342− </term>
343− <listitem>
344− <para>
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.
350− </para>
351330 </listitem>
352331 </varlistentry>
353332 <varlistentry>
@@ -368,10 +347,7 @@ start_all()
368347 <listitem>
369348 <para>
370349 Repeat a shell command with 1-second intervals until it
371− succeeds. Has a default timeout of 900 seconds which can be
372− modified, e.g.
373− <literal>wait_until_succeeds(cmd, timeout=10)</literal>. See
374− <literal>execute</literal> for details on command execution.
350+ succeeds.
375351 </para>
376352 </listitem>
377353 </varlistentry>
@@ -381,8 +357,8 @@ start_all()
381357 </term>
382358 <listitem>
383359 <para>
384− Like <literal>wait_until_succeeds</literal>, but repeating
385− the command until it fails.
360+ Repeat a shell command with 1-second intervals until it
361+ fails.
386362 </para>
387363 </listitem>
388364 </varlistentry>
@@ -526,21 +502,6 @@ machine.systemctl("list-jobs --no-pager", "any-user") # spaw
526502 </para>
527503 </listitem>
528504 </varlistentry>
529− <varlistentry>
530− <term>
531− <literal>console_interact</literal>
532− </term>
533− <listitem>
534− <para>
535− Allows you to directly interact with QEMU’s stdin. This
536− should only be used during test development, not in
537− production tests. Output from QEMU is only read line-wise.
538− <literal>Ctrl-c</literal> kills QEMU and
539− <literal>Ctrl-d</literal> closes console and returns to the
540− test runner.
541− </para>
542− </listitem>
543− </varlistentry>
544505 </variablelist>
545506 <para>
546507 To test user units declared by
@@ -565,7 +526,7 @@ machine.wait_for_unit("xautolock.service", "x-session-user")
565526 <programlisting language="bash">
566527import ./make-test-python.nix {
567528 skipLint = true;
568− nodes.machine =
529+ machine =
569530 { config, pkgs, ... }:
570531 { configuration…
571532 };
nixos/doc/manual/from_md/installation/installing-usb.section.xml+1−1
@@ -17,7 +17,7 @@ $ diskutil list
1717[..]
1818$ diskutil unmountDisk diskN
1919Unmount of all volumes on diskN was successful
20−$ sudo dd if=nix.iso of=/dev/rdiskN bs=1M
20+$ sudo dd if=nix.iso of=/dev/rdiskN
2121</programlisting>
2222 <para>
2323 Using the 'raw' <literal>rdiskN</literal> device instead of
nixos/doc/manual/from_md/installation/installing.chapter.xml+7−7
@@ -411,13 +411,6 @@ OK
411411 specify on which disk the GRUB boot loader is to be
412412 installed. Without it, NixOS cannot boot.
413413 </para>
414− <para>
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.
420− </para>
421414 </listitem>
422415 </varlistentry>
423416 <varlistentry>
@@ -443,6 +436,13 @@ OK
443436 </listitem>
444437 </varlistentry>
445438 </variablelist>
439+ <para>
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
444+ the grub menu.
445+ </para>
446446 <para>
447447 If you need to configure networking for your machine the
448448 configuration options are described in
nixos/doc/manual/from_md/release-notes/rl-1803.section.xml−8
@@ -866,14 +866,6 @@
866866 package.
867867 </para>
868868 </listitem>
869− <listitem>
870− <para>
871− The vim/kakoune plugin updater now reads from a CSV file:
872− check
873− <literal>pkgs/applications/editors/vim/plugins/vim-plugin-names</literal>
874− out to see the new format
875− </para>
876− </listitem>
877869 </itemizedlist>
878870 </section>
879871</section>
nixos/doc/manual/from_md/release-notes/rl-2205.section.xml+10−834
@@ -15,14 +15,6 @@
1515 <section xml:id="sec-release-22.05-highlights">
1616 <title>Highlights</title>
1717 <itemizedlist>
18− <listitem>
19− <para>
20− The <literal>firefox</literal> browser on
21− <literal>x86_64-linux</literal> is now making use of
22− profile-guided optimization resulting in a much more
23− responsive browsing experience.
24− </para>
25− </listitem>
2618 <listitem>
2719 <para>
2820 <literal>security.acme.defaults</literal> has been added to
@@ -33,43 +25,6 @@
3325 <literal>services.nginx.virtualHosts.*.enableACME</literal>).
3426 </para>
3527 </listitem>
36− <listitem>
37− <para>
38− GNOME has been upgraded to 42. Please take a look at their
39− <link xlink:href="https://release.gnome.org/42/">Release
40− Notes</link> for details. Notably, it replaces gedit with
41− GNOME Text Editor, GNOME Terminal with GNOME Console (formerly
42− King’s Cross), and GNOME Screenshot with a tool built into the
43− Shell.
44− </para>
45− </listitem>
46− <listitem>
47− <para>
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.
57− </para>
58− <para>
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>.
63− </para>
64− <para>
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
70− error.
71− </para>
72− </listitem>
7328 <listitem>
7429 <para>
7530 PHP 8.1 is now available
@@ -95,34 +50,6 @@
9550 granular distinction between reloads and restarts.
9651 </para>
9752 </listitem>
98− <listitem>
99− <para>
100− Systemd has been upgraded to the version 250.
101− </para>
102− </listitem>
103− <listitem>
104− <para>
105− Pulseaudio has been upgraded to version 15.0 and now
106− optionally
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
116− have been removed.
117− </para>
118− </listitem>
119− <listitem>
120− <para>
121− The new
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.
124− </para>
125− </listitem>
12653 <listitem>
12754 <para>
12855 <link xlink:href="https://kops.sigs.k8s.io"><literal>kops</literal></link>
@@ -143,22 +70,6 @@
14370 and their users.
14471 </para>
14572 </listitem>
146− <listitem>
147− <para>
148− The default GHC version has been updated from 8.10.7 to 9.0.2.
149− <literal>pkgs.haskellPackages</literal> and
150− <literal>pkgs.ghc</literal> will now use this version by
151− default.
152− </para>
153− </listitem>
154− <listitem>
155− <para>
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.
160− </para>
161− </listitem>
16273 </itemizedlist>
16374 </section>
16475 <section xml:id="sec-release-22.05-new-services">
@@ -188,13 +99,6 @@
18899 <link xlink:href="option.html#opt-services.matrix-conduit.enable">services.matrix-conduit</link>.
189100 </para>
190101 </listitem>
191− <listitem>
192− <para>
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>.
196− </para>
197− </listitem>
198102 <listitem>
199103 <para>
200104 <link xlink:href="https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html">filebeat</link>,
@@ -213,7 +117,7 @@
213117 <para>
214118 <link xlink:href="https://frrouting.org/">FRRouting</link>, a
215119 popular suite of Internet routing protocol daemons (BGP, BFD,
216− OSPF, IS-IS, VRRP and others). Available as
120+ OSPF, IS-IS, VVRP and others). Available as
217121 <link linkend="opt-services.frr.babel.enable">services.frr</link>
218122 </para>
219123 </listitem>
@@ -284,15 +188,6 @@
284188 to be able to access the device.
285189 </para>
286190 </listitem>
287− <listitem>
288− <para>
289− <link xlink:href="https://github.com/mozilla-mobile/mozilla-vpn-client">mozillavpn</link>,
290− the client for the
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>.
294− </para>
295− </listitem>
296191 <listitem>
297192 <para>
298193 <link xlink:href="https://github.com/mgumz/mtr-exporter">mtr-exporter</link>,
@@ -308,13 +203,6 @@
308203 <link xlink:href="options.html#opt-services.prometheus.exporters.pve">services.prometheus.exporters.pve</link>.
309204 </para>
310205 </listitem>
311− <listitem>
312− <para>
313− <link xlink:href="https://github.com/netbox-community/netbox">netbox</link>,
314− infrastructure resource modeling (IRM) tool. Available as
315− <link xlink:href="options.html#opt-services.netbox.enable">services.netbox</link>.
316− </para>
317− </listitem>
318206 <listitem>
319207 <para>
320208 <link xlink:href="https://tetrd.app">tetrd</link>, share your
@@ -426,14 +314,6 @@
426314 <link xlink:href="options.html#opt-services.headscale.enable">services.headscale</link>
427315 </para>
428316 </listitem>
429− <listitem>
430− <para>
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>.
435− </para>
436− </listitem>
437317 <listitem>
438318 <para>
439319 <link xlink:href="https://0xerr0r.github.io/blocky/">blocky</link>,
@@ -447,14 +327,6 @@
447327 cluster resource manager
448328 </para>
449329 </listitem>
450− <listitem>
451− <para>
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>.
456− </para>
457− </listitem>
458330 </itemizedlist>
459331 </section>
460332 <section xml:id="sec-release-22.05-incompatibilities">
@@ -522,85 +394,6 @@
522394 new versions will release.
523395 </para>
524396 </listitem>
525− <listitem>
526− <para>
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>.
533− </para>
534− <para>
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
538− yourself.
539− </para>
540− <para>
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>.
545− </para>
546− </listitem>
547− <listitem>
548− <para>
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>.
558− </para>
559− </listitem>
560− <listitem>
561− <para>
562− <literal>security.klogd</literal> was removed. Logging of
563− kernel messages is handled by systemd since Linux 3.5.
564− </para>
565− </listitem>
566− <listitem>
567− <para>
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:
575− </para>
576− <programlisting language="bash">
577−{
578− # Original ssmtp configuration:
579− services.ssmtp = {
580− enable = true;
581− useTLS = true;
582− useSTARTTLS = true;
583− hostName = "smtp.example:587";
584− authUser = "someone";
585− authPassFile = "/secrets/password.txt";
586− };
587−
588− # Equivalent msmtp configuration:
589− programs.msmtp = {
590− enable = true;
591− accounts.default = {
592− tls = true;
593− tls_starttls = true;
594− auth = true;
595− host = "smtp.example";
596− port = 587;
597− user = "someone";
598− passwordeval = "cat /secrets/password.txt";
599− };
600− };
601−}
602−</programlisting>
603− </listitem>
604397 <listitem>
605398 <para>
606399 <literal>services.kubernetes.addons.dashboard</literal> was
@@ -618,53 +411,6 @@
618411 relying on the insecure behaviour before upgrading.
619412 </para>
620413 </listitem>
621− <listitem>
622− <para>
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
627− by default will:
628− </para>
629− <itemizedlist spacing="compact">
630− <listitem>
631− <para>
632− listen on (and allows connections from) both IPv4 and IPv6
633− addresses
634− (<literal>services.pdns-recursor.dns.address</literal>,
635− <literal>services.pdns-recursor.dns.allowFrom</literal>);
636− </para>
637− </listitem>
638− <listitem>
639− <para>
640− allow only local connections to the REST API server
641− (<literal>services.pdns-recursor.api.allowFrom</literal>).
642− </para>
643− </listitem>
644− </itemizedlist>
645− </listitem>
646− <listitem>
647− <para>
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>).
651− </para>
652− </listitem>
653− <listitem>
654− <para>
655− <literal>openssh</literal> has been update to 8.9p1, changing
656− the FIDO security key middleware interface.
657− </para>
658− </listitem>
659− <listitem>
660− <para>
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>.
666− </para>
667− </listitem>
668414 <listitem>
669415 <para>
670416 <literal>services.k3s.enable</literal> no longer implies
@@ -697,13 +443,6 @@
697443}
698444</programlisting>
699445 </listitem>
700− <listitem>
701− <para>
702− <literal>services.prometheus.alertManagerTimeout</literal> has
703− been removed as it has been deprecated upstream and has no
704− effect.
705− </para>
706− </listitem>
707446 <listitem>
708447 <para>
709448 The DHCP server (<literal>services.dhcpd4</literal>,
@@ -728,33 +467,6 @@
728467 its reliance on python2.
729468 </para>
730469 </listitem>
731− <listitem>
732− <para>
733− <literal>services.ipfs.extraFlags</literal> is now escaped
734− with <literal>utils.escapeSystemdExecArgs</literal>. If you
735− rely on systemd interpolating <literal>extraFlags</literal> in
736− the service <literal>ExecStart</literal>, this will no longer
737− work.
738− </para>
739− </listitem>
740− <listitem>
741− <para>
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.
745− </para>
746− </listitem>
747− <listitem>
748− <para>
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>.
756− </para>
757− </listitem>
758470 <listitem>
759471 <para>
760472 The <literal>matrix-synapse</literal> service
@@ -877,136 +589,6 @@
877589 to the new location if the <literal>stateVersion</literal> is
878590 updated.
879591 </para>
880− <para>
881− As of Synapse 1.58.0, the old groups/communities feature has
882− been disabled by default. It will be completely removed with
883− Synapse 1.61.0.
884− </para>
885− </listitem>
886− <listitem>
887− <para>
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:
894− </para>
895− <itemizedlist>
896− <listitem>
897− <para>
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
913− anymore.
914− </para>
915− </listitem>
916− <listitem>
917− <para>
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>
922− instead. See the
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
930− clients.
931− </para>
932− </listitem>
933− <listitem>
934− <para>
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>.
945− </para>
946− <para>
947− The new names are as follows:
948− </para>
949− <itemizedlist spacing="compact">
950− <listitem>
951− <para>
952− <literal>bindAddress</literal>:
953− <link linkend="opt-services.keycloak.settings.http-host"><literal>services.keycloak.settings.http-host</literal></link>
954− </para>
955− </listitem>
956− <listitem>
957− <para>
958− <literal>forceBackendUrlToFrontendUrl</literal>:
959− <link linkend="opt-services.keycloak.settings.hostname-strict-backchannel"><literal>services.keycloak.settings.hostname-strict-backchannel</literal></link>
960− </para>
961− </listitem>
962− <listitem>
963− <para>
964− <literal>httpPort</literal>:
965− <link linkend="opt-services.keycloak.settings.http-port"><literal>services.keycloak.settings.http-port</literal></link>
966− </para>
967− </listitem>
968− <listitem>
969− <para>
970− <literal>httpsPort</literal>:
971− <link linkend="opt-services.keycloak.settings.https-port"><literal>services.keycloak.settings.https-port</literal></link>
972− </para>
973− </listitem>
974− </itemizedlist>
975− </listitem>
976− </itemizedlist>
977− <para>
978− For example, when using a reverse proxy the migration could
979− look like this:
980− </para>
981− <para>
982− Before:
983− </para>
984− <programlisting language="bash">
985− services.keycloak = {
986− enable = true;
987− httpPort = "8080";
988− frontendUrl = "https://keycloak.example.com/auth";
989− database.passwordFile = "/run/keys/db_password";
990− extraConfig = {
991− "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true;
992− };
993− };
994−</programlisting>
995− <para>
996− After:
997− </para>
998− <programlisting language="bash">
999− services.keycloak = {
1000− enable = true;
1001− settings = {
1002− http-port = 8080;
1003− hostname = "keycloak.example.com";
1004− http-relative-path = "/auth";
1005− proxy = "edge";
1006− };
1007− database.passwordFile = "/run/keys/db_password";
1008− };
1009−</programlisting>
1010592 </listitem>
1011593 <listitem>
1012594 <para>
@@ -1079,23 +661,6 @@
1079661 6.x</link> and renamed to <literal>gnome-secrets</literal>.
1080662 </para>
1081663 </listitem>
1082− <listitem>
1083− <para>
1084− <literal>services.gnome.experimental-features.realtime-scheduling</literal>
1085− option has been removed, as GNOME Shell now
1086− <link xlink:href="https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2060">uses
1087− rtkit</link>. Use
1088− <literal>security.rtkit.enable = true;</literal> instead. As
1089− before, you will need to have it enabled using GSettings.
1090− </para>
1091− </listitem>
1092− <listitem>
1093− <para>
1094− <literal>services.telepathy</literal> will no longer be
1095− enabled by default for GNOME desktops, one should enable it in
1096− their configs if using Empathy or Polari.
1097− </para>
1098− </listitem>
1099664 <listitem>
1100665 <para>
1101666 If you previously used
@@ -1142,14 +707,6 @@
1142707 <literal>admin</literal> and <literal>password</literal>.
1143708 </para>
1144709 </listitem>
1145− <listitem>
1146− <para>
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>.
1151− </para>
1152− </listitem>
1153710 <listitem>
1154711 <para>
1155712 The <literal>autorestic</literal> package has been upgraded
@@ -1237,54 +794,6 @@
1237794 LGPL3+ and BSD3 with optional unfree unRAR licensed code
1238795 </para>
1239796 </listitem>
1240− <listitem>
1241− <para>
1242− The <literal>vim.customize</literal> function produced by
1243− <literal>vimUtils.makeCustomizable</literal> now has a
1244− slightly different interface:
1245− </para>
1246− <itemizedlist spacing="compact">
1247− <listitem>
1248− <para>
1249− The wrapper now includes everything in the given Vim
1250− derivation if <literal>name</literal> is
1251− <literal>"vim"</literal> (the default). This
1252− makes the <literal>wrapManual</literal> argument obsolete,
1253− but this behavior can be overriden by setting the
1254− <literal>standalone</literal> argument.
1255− </para>
1256− </listitem>
1257− <listitem>
1258− <para>
1259− All the executables present in the given derivation (or,
1260− in <literal>standalone</literal> mode, only the
1261− <literal>*vim</literal> ones) are wrapped. This makes the
1262− <literal>wrapGui</literal> argument obsolete.
1263− </para>
1264− </listitem>
1265− <listitem>
1266− <para>
1267− The <literal>vimExecutableName</literal> and
1268− <literal>gvimExecutableName</literal> arguments were
1269− replaced by a single <literal>executableName</literal>
1270− argument in which the shell variable
1271− <literal>$exe</literal> can be used to refer to the
1272− wrapped executable’s name.
1273− </para>
1274− </listitem>
1275− </itemizedlist>
1276− <para>
1277− See the comments in
1278− <literal>pkgs/applications/editors/vim/plugins/vim-utils.nix</literal>
1279− for more details.
1280− </para>
1281− <para>
1282− <literal>vimUtils.vimWithRC</literal> was removed. You should
1283− instead use <literal>customize</literal> on a Vim derivation,
1284− which now accepts <literal>vimrcFile</literal> and
1285− <literal>gvimrcFile</literal> arguments.
1286− </para>
1287− </listitem>
1288797 <listitem>
1289798 <para>
1290799 <literal>tilp2</literal> was removed together with its module
@@ -1317,16 +826,6 @@
1317826 <literal>true</literal>.
1318827 </para>
1319828 </listitem>
1320− <listitem>
1321− <para>
1322− The <literal>miller</literal> package has been upgraded from
1323− 5.10.3 to
1324− <link xlink:href="https://github.com/johnkerl/miller/releases/tag/v6.2.0">6.2.0</link>.
1325− See
1326− <link xlink:href="https://miller.readthedocs.io/en/latest/new-in-miller-6">What’s
1327− new in Miller 6</link>.
1328− </para>
1329− </listitem>
1330829 <listitem>
1331830 <para>
1332831 MultiMC has been replaced with the fork PolyMC due to upstream
@@ -1352,14 +851,6 @@
1352851 <literal>systemd.nspawn.<name>.execConfig.PrivateUsers = false</literal>
1353852 </para>
1354853 </listitem>
1355− <listitem>
1356− <para>
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>.
1361− </para>
1362− </listitem>
1363854 <listitem>
1364855 <para>
1365856 The Tor SOCKS proxy is now actually disabled if
@@ -1370,15 +861,6 @@
1370861 <literal>true</literal>.
1371862 </para>
1372863 </listitem>
1373− <listitem>
1374− <para>
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
1379− devices.
1380− </para>
1381− </listitem>
1382864 <listitem>
1383865 <para>
1384866 The terraform 0.12 compatibility has been removed and the
@@ -1423,21 +905,11 @@
1423905 <literal>otelcorecol</literal> and enjoy a 7x smaller binary.
1424906 </para>
1425907 </listitem>
1426− <listitem>
1427− <para>
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.
1434− </para>
1435− </listitem>
1436908 <listitem>
1437909 <para>
1438910 <literal>pkgs.pgadmin</literal> now refers to
1439− <literal>pkgs.pgadmin4</literal>. <literal>pgadmin3</literal>
1440− has been removed.
911+ <literal>pkgs.pgadmin4</literal>. If you still need pgadmin3,
912+ use <literal>pkgs.pgadmin3</literal>.
1441913 </para>
1442914 </listitem>
1443915 <listitem>
@@ -1679,51 +1151,6 @@
16791151 example.
16801152 </para>
16811153 </listitem>
1682− <listitem>
1683− <para>
1684− Existing <literal>resholve*</literal> functions have been
1685− renamed and nested under <literal>pkgs.resholve</literal>.
1686− Update uses to:
1687− </para>
1688− <itemizedlist spacing="compact">
1689− <listitem>
1690− <para>
1691− <literal>resholvePackage</literal> ->
1692− <literal>resholve.mkDerivation</literal>
1693− </para>
1694− </listitem>
1695− <listitem>
1696− <para>
1697− <literal>resholveScript</literal> ->
1698− <literal>resholve.writeScript</literal>
1699− </para>
1700− </listitem>
1701− <listitem>
1702− <para>
1703− <literal>resholveScriptBin</literal> ->
1704− <literal>resholve.writeScriptBin</literal>
1705− </para>
1706− </listitem>
1707− </itemizedlist>
1708− </listitem>
1709− <listitem>
1710− <para>
1711− <literal>pkgs.cosmopolitan</literal> no longer provides the
1712− <literal>cosmoc</literal> command. It has been moved to
1713− <literal>pkgs.cosmoc</literal>.
1714− </para>
1715− </listitem>
1716− <listitem>
1717− <para>
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
1724− what you need.
1725− </para>
1726− </listitem>
17271154 </itemizedlist>
17281155 </section>
17291156 <section xml:id="sec-release-22.05-notable-changes">
@@ -1837,14 +1264,6 @@
18371264 </listitem>
18381265 </itemizedlist>
18391266 </listitem>
1840− <listitem>
1841− <para>
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.
1846− </para>
1847− </listitem>
18481267 <listitem>
18491268 <para>
18501269 If you are using Wayland you can choose to use the Ozone
@@ -1858,35 +1277,6 @@
18581277 versions.
18591278 </para>
18601279 </listitem>
1861− <listitem>
1862− <para>
1863− A new option group
1864− <literal>systemd.network.wait-online</literal> was added, with
1865− options to configure
1866− <literal>systemd-networkd-wait-online.service</literal>:
1867− </para>
1868− <itemizedlist spacing="compact">
1869− <listitem>
1870− <para>
1871− <literal>anyInterface</literal> allows specifying that the
1872− network should be considered online when <emphasis>at
1873− least one</emphasis> interface is online (useful on
1874− laptops)
1875− </para>
1876− </listitem>
1877− <listitem>
1878− <para>
1879− <literal>timeout</literal> defines how long to wait for
1880− the network to come online
1881− </para>
1882− </listitem>
1883− <listitem>
1884− <para>
1885− <literal>extraArgs</literal> for everything else
1886− </para>
1887− </listitem>
1888− </itemizedlist>
1889− </listitem>
18901280 <listitem>
18911281 <para>
18921282 The <literal>influxdb2</literal> package was split into
@@ -1911,15 +1301,6 @@
19111301 takes a list of strings instead of a string.
19121302 </para>
19131303 </listitem>
1914− <listitem>
1915− <para>
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.
1921− </para>
1922− </listitem>
19231304 <listitem>
19241305 <para>
19251306 The <literal>services.unifi.openPorts</literal> option default
@@ -1928,15 +1309,6 @@
19281309 using this default will print a warning when rebuilt.
19291310 </para>
19301311 </listitem>
1931− <listitem>
1932− <para>
1933− The <literal>services.unifi-video.openPorts</literal> option
1934− default value of <literal>true</literal> is now deprecated and
1935− will be changed to <literal>false</literal> in 22.11.
1936− Configurations using this default will print a warning when
1937− rebuilt.
1938− </para>
1939− </listitem>
19401312 <listitem>
19411313 <para>
19421314 <literal>security.acme</literal> certificates will now
@@ -1978,11 +1350,9 @@
19781350 <para>
19791351 <link linkend="opt-programs.ssh.knownHosts">programs.ssh.knownHosts</link>
19801352 has gained an <literal>extraHostNames</literal> option to
1981− augment <literal>hostNames</literal>. It is now possible to
1982− use the attribute name of a <literal>knownHosts</literal>
1983− entry as the primary host name and specify secondary host
1984− names using <literal>extraHostNames</literal> without having
1985− to duplicate the primary host name.
1353+ replace <literal>hostNames</literal>.
1354+ <literal>hostNames</literal> is deprecated, but still
1355+ available for now.
19861356 </para>
19871357 </listitem>
19881358 <listitem>
@@ -1993,36 +1363,6 @@
19931363 configuration.
19941364 </para>
19951365 </listitem>
1996− <listitem>
1997− <para>
1998− The option
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.
2003− </para>
2004− </listitem>
2005− <listitem>
2006− <para>
2007− When setting
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.
2017− </para>
2018− </listitem>
2019− <listitem>
2020− <para>
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>.
2024− </para>
2025− </listitem>
20261366 <listitem>
20271367 <para>
20281368 The option <literal>services.duplicati.dataDir</literal> has
@@ -2047,51 +1387,10 @@
20471387 </listitem>
20481388 <listitem>
20491389 <para>
2050− ORY Kratos was updated to version 0.9.0-alpha.3, which
1390+ ORY Kratos was updated to version 0.8.3-alpha.1.pre.0, which
20511391 introduces some breaking changes:
20521392 </para>
20531393 <itemizedlist spacing="compact">
2054− <listitem>
2055− <para>
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
2059− exposed at
2060− <literal>https://kratos:4434/admin/identities</literal>
2061− </para>
2062− </listitem>
2063− <listitem>
2064− <para>
2065− Configuration key
2066− <literal>selfservice.whitelisted_return_urls</literal> has
2067− been renamed to <literal>allowed_return_urls</literal>
2068− </para>
2069− </listitem>
2070− <listitem>
2071− <para>
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.
2076− </para>
2077− </listitem>
2078− <listitem>
2079− <para>
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.
2085− </para>
2086− </listitem>
2087− <listitem>
2088− <para>
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
2092− the default page.
2093− </para>
2094− </listitem>
20951394 <listitem>
20961395 <para>
20971396 If you are relying on the SQLite images, update your
@@ -2128,18 +1427,6 @@
21281427 Notes for v0.8.2-alpha-1</link>
21291428 </para>
21301429 </listitem>
2131− <listitem>
2132− <para>
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>
2135− </para>
2136− </listitem>
2137− <listitem>
2138− <para>
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>
2141− </para>
2142− </listitem>
21431430 </itemizedlist>
21441431 </listitem>
21451432 </itemizedlist>
@@ -2153,13 +1440,6 @@
21531440 <literal>true</literal>.
21541441 </para>
21551442 </listitem>
2156− <listitem>
2157− <para>
2158− A module for declarative configuration of openconnect VPN
2159− profiles was added under
2160− <literal>networking.openconnect</literal>.
2161− </para>
2162− </listitem>
21631443 <listitem>
21641444 <para>
21651445 The <literal>element-desktop</literal> package now has an
@@ -2242,35 +1522,9 @@
22421522 </listitem>
22431523 <listitem>
22441524 <para>
2245− <link linkend="opt-services.logrotate.enable">services.logrotate.enable</link>
2246− now defaults to true if any rotate path has been defined, and
2247− some paths have been added by default.
2248− </para>
2249− </listitem>
2250− <listitem>
2251− <para>
2252− The logrotate module also has been updated to freeform syntax:
2253− <link linkend="opt-services.logrotate.paths">services.logrotate.paths</link>
2254− and
2255− <link linkend="opt-services.logrotate.extraConfig">services.logrotate.extraConfig</link>
2256− will work, but issue deprecation warnings and
2257− <link linkend="opt-services.logrotate.settings">services.logrotate.settings</link>
2258− should now be used instead.
2259− </para>
2260− </listitem>
2261− <listitem>
2262− <para>
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,
2266− using
2267− <link xlink:href="https://github.com/uber/pam-ussh">pam-ussh</link>.
2268− </para>
2269− </listitem>
2270− <listitem>
2271− <para>
2272− The <literal>vscode-extensions.ionide.ionide-fsharp</literal>
2273− package has been updated to 6.0.0 and now requires .NET 6.0.
1525+ <literal>services.logrotate.enable</literal> now defaults to
1526+ true if any rotate path has been defined, and some paths have
1527+ been added by default.
22741528 </para>
22751529 </listitem>
22761530 <listitem>
@@ -2298,24 +1552,6 @@
22981552 </listitem>
22991553 </itemizedlist>
23001554 </listitem>
2301− <listitem>
2302− <para>
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.
2307− </para>
2308− <itemizedlist spacing="compact">
2309− <listitem>
2310− <para>
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).
2315− </para>
2316− </listitem>
2317− </itemizedlist>
2318− </listitem>
23191555 <listitem>
23201556 <para>
23211557 Renamed option
@@ -2327,12 +1563,6 @@
23271563 warning.
23281564 </para>
23291565 </listitem>
2330− <listitem>
2331− <para>
2332− <literal>services.autorandr</literal> now allows for adding
2333− hooks and profiles declaratively.
2334− </para>
2335− </listitem>
23361566 <listitem>
23371567 <para>
23381568 The <literal>pomerium-cli</literal> command has been moved out
@@ -2371,27 +1601,6 @@
23711601 desktop environments as needed.
23721602 </para>
23731603 </listitem>
2374− <listitem>
2375− <para>
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>.
2383− </para>
2384− </listitem>
2385− <listitem>
2386− <para>
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>.
2393− </para>
2394− </listitem>
23951604 <listitem>
23961605 <para>
23971606 The <literal>hadoop</literal> package has added support for
@@ -2407,24 +1616,6 @@
24071616 (<link xlink:href="https://github.com/NixOS/nixpkgs/pull/158992">#158992</link>).
24081617 </para>
24091618 </listitem>
2410− <listitem>
2411− <para>
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>.
2418− </para>
2419− </listitem>
2420− <listitem>
2421− <para>
2422− The Nextcloud module now supports to create a Mysql database
2423− automatically with
2424− <literal>services.nextcloud.database.createLocally</literal>
2425− enabled.
2426− </para>
2427− </listitem>
24281619 <listitem>
24291620 <para>
24301621 The <literal>spark3</literal> package has been updated from
@@ -2450,21 +1641,6 @@
24501641 </listitem>
24511642 </itemizedlist>
24521643 </listitem>
2453− <listitem>
2454− <para>
2455− The <literal>programs.nncp</literal> options were added for
2456− generating host-global NNCP configuration.
2457− </para>
2458− </listitem>
2459− <listitem>
2460− <para>
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
2465− hosts.
2466− </para>
2467− </listitem>
24681644 </itemizedlist>
24691645 </section>
24701646</section>
nixos/doc/manual/installation/installation.xml−1
@@ -14,5 +14,4 @@
1414 <xi:include href="../from_md/installation/installing.chapter.xml" />
1515 <xi:include href="../from_md/installation/changing-config.chapter.xml" />
1616 <xi:include href="../from_md/installation/upgrading.chapter.xml" />
17− <xi:include href="../from_md/installation/building-nixos.chapter.xml" />
1817</part>
nixos/doc/manual/installation/installing-usb.section.md+1−1
@@ -18,7 +18,7 @@ $ diskutil list
1818[..]
1919$ diskutil unmountDisk diskN
2020Unmount of all volumes on diskN was successful
21−$ sudo dd if=nix.iso of=/dev/rdiskN bs=1M
21+$ sudo dd if=nix.iso of=/dev/rdiskN
2222```
2323
2424Using the \'raw\' `rdiskN` device instead of `diskN` completes in
nixos/doc/manual/installation/installing.chapter.md+5−5
@@ -296,11 +296,6 @@ Use the following commands:
296296 specify on which disk the GRUB boot loader is to be installed.
297297 Without it, NixOS cannot boot.
298298
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
302− menu.
303−
304299 UEFI systems
305300
306301 : You *must* set the option [](#opt-boot.loader.systemd-boot.enable)
@@ -312,6 +307,11 @@ Use the following commands:
312307 [`boot.loader.systemd-boot`](#opt-boot.loader.systemd-boot.enable)
313308 as well.
314309
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
313+ menu.
314+
315315 If you need to configure networking for your machine the
316316 configuration options are described in [](#sec-networking). In
317317 particular, while wifi is supported on the installation image, it is
nixos/doc/manual/man-nixos-rebuild.xml−26
@@ -91,10 +91,6 @@
9191 <option>--flake</option> <replaceable>flake-uri</replaceable>
9292 </arg>
9393
94− <arg>
95− <option>--no-flake</option>
96− </arg>
97−
9894 <arg>
9995 <option>--override-input</option> <replaceable>input-name</replaceable> <replaceable>flake-uri</replaceable>
10096 </arg>
@@ -548,14 +544,6 @@
548544 (<replaceable>user@host</replaceable>). You can also set ssh options by
549545 defining the <envar>NIX_SSHOPTS</envar> environment variable.
550546 </para>
551−
552− <para>
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.
558− </para>
559547 </listitem>
560548 </varlistentry>
561549
@@ -606,20 +594,6 @@
606594 </listitem>
607595 </varlistentry>
608596
609− <varlistentry>
610− <term>
611− <option>--no-flake</option>
612− </term>
613− <listitem>
614− <para>
615− Do not imply <option>--flake</option> if
616− <filename>/etc/nixos/flake.nix</filename> exists. With this
617− option, it is possible to build non-flake NixOS configurations
618− even if the current NixOS systems uses flakes.
619− </para>
620− </listitem>
621− </varlistentry>
622−
623597 </variablelist>
624598
625599 <para>
nixos/doc/manual/man-pages.xml+2−7
@@ -3,15 +3,10 @@
33 xmlns:xi="http://www.w3.org/2001/XInclude">
44 <title>NixOS Reference Pages</title>
55 <info>
6− <author>
7− <personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
6+ <author><personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
87 <contrib>Author</contrib>
98 </author>
10− <author>
11− <personname><othername>The Nixpkgs/NixOS contributors</othername></personname>
12− <contrib>Author</contrib>
13− </author>
14− <copyright><year>2007-2022</year><holder>Eelco Dolstra and the Nixpkgs/NixOS contributors</holder>
9+ <copyright><year>2007-2020</year><holder>Eelco Dolstra</holder>
1510 </copyright>
1611 </info>
1712 <xi:include href="man-configuration.xml" />
nixos/doc/manual/md-to-db.sh+1−1
@@ -1,5 +1,5 @@
11#! /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
33
44# This script is temporarily needed while we transition the manual to
55# 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
282282- 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.
283283
284284- 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.
285−
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+6−298
@@ -6,32 +6,11 @@ In addition to numerous new and upgraded packages, this release has the followin
66
77## Highlights {#sec-release-22.05-highlights}
88
9−- The `firefox` browser on `x86_64-linux` is now making use of
10− profile-guided optimization resulting in a much more responsive
11− browsing experience.
12−
139- `security.acme.defaults` has been added to simplify configuring
1410 settings for many certificates at once. This also opens up the
1511 the option to use DNS-01 validation when using `enableACME` on
1612 web server virtual hosts (e.g. `services.nginx.virtualHosts.*.enableACME`).
1713
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.
19−
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.
25−
26− Additionally, `passthru` can now reference `finalAttrs.finalPackage` containing
27− the final package, including attributes such as the output paths and
28− `overrideAttrs`.
29−
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.
34−
3514- PHP 8.1 is now available
3615
3716- 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 +19,10 @@ In addition to numerous new and upgraded packages, this release has the followin
4019
4120- systemd services can now set [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services) instead of `reloadIfChanged` for a more granular distinction between reloads and restarts.
4221
43−- Systemd has been upgraded to the version 250.
44−
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.
47−
48−- The new [`postgresqlTestHook`](https://nixos.org/manual/nixpkgs/stable/#sec-postgresqlTestHook) runs a PostgreSQL server for the duration of package checks.
49−
5022- [`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.
5123
5224- Module authors can use `mkRenamedOptionModuleWith` to automate the deprecation cycle without annoying out-of-tree module authors and their users.
5325
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.
55−
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.
57−
5826## New Services {#sec-release-22.05-new-services}
5927
6028- [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,13 +31,11 @@ In addition to numerous new and upgraded packages, this release has the followin
6331
6432- [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).
6533
66−- [nethoscope](https://github.com/vvilhonen/nethoscope), listen to your network traffic. Available as [programs.nethoscope](#opt-programs.nethoscope.enable).
67−
6834- [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).
6935
7036- [apfs](https://github.com/linux-apfs/linux-apfs-rw), a kernel module for mounting the Apple File System (APFS).
7137
72−- [FRRouting](https://frrouting.org/), a popular suite of Internet routing protocol daemons (BGP, BFD, OSPF, IS-IS, VRRP and others). Available as [services.frr](#opt-services.frr.babel.enable)
38+- [FRRouting](https://frrouting.org/), a popular suite of Internet routing protocol daemons (BGP, BFD, OSPF, IS-IS, VVRP and others). Available as [services.frr](#opt-services.frr.babel.enable)
7339
7440- [heisenbridge](https://github.com/hifi/heisenbridge), a bouncer-style Matrix IRC bridge. Available as [services.heisenbridge](options.html#opt-services.heisenbridge.enable).
7541
@@ -89,14 +55,10 @@ In addition to numerous new and upgraded packages, this release has the followin
8955
9056- [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.
9157
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).
93−
9458- [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).
9559
9660- [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).
9761
98−- [netbox](https://github.com/netbox-community/netbox), infrastructure resource modeling (IRM) tool. Available as [services.netbox](options.html#opt-services.netbox.enable).
99−
10062- [tetrd](https://tetrd.app), share your internet connection from your device to your PC and vice versa through a USB cable. Available at [services.tetrd](#opt-services.tetrd.enable).
10163
10264- [agate](https://github.com/mbrubeck/agate), a very simple server for the Gemini hypertext protocol. Available as [services.agate](options.html#opt-services.agate.enable).
@@ -127,14 +89,10 @@ In addition to numerous new and upgraded packages, this release has the followin
12789
12890- [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)
12991
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).
131−
13292- [blocky](https://0xerr0r.github.io/blocky/), fast and lightweight DNS proxy as ad-blocker for local network with many features.
13393
13494- [pacemaker](https://clusterlabs.org/pacemaker/) cluster resource manager
13595
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).
137−
13896<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
13997
14098## Backward Incompatibilities {#sec-release-22.05-incompatibilities}
@@ -171,71 +129,10 @@ In addition to numerous new and upgraded packages, this release has the followin
171129 org-contrib, refer to the ones in `pkgs.emacsPackages.elpaPackages` and
172130 `pkgs.emacsPackages.nongnuPackages` where the new versions will release.
173131
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`.
177−
178− If you are changing `system.stateVersion` to `"22.05"` manually on an existing
179− system you are responsible for migrating these directories yourself.
180−
181− This is to improve compatibility with `libcontainer` based software such as Podman and Skopeo
182− which assumes they have ownership over `/etc/containers`.
183−
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".
186−
187−- `security.klogd` was removed. Logging of kernel messages is handled
188− by systemd since Linux 3.5.
189−
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:
194−
195− ```nix
196− {
197− # Original ssmtp configuration:
198− services.ssmtp = {
199− enable = true;
200− useTLS = true;
201− useSTARTTLS = true;
202− hostName = "smtp.example:587";
203− authUser = "someone";
204− authPassFile = "/secrets/password.txt";
205− };
206−
207− # Equivalent msmtp configuration:
208− programs.msmtp = {
209− enable = true;
210− accounts.default = {
211− tls = true;
212− tls_starttls = true;
213− auth = true;
214− host = "smtp.example";
215− port = 587;
216− user = "someone";
217− passwordeval = "cat /secrets/password.txt";
218− };
219− };
220− }
221− ```
222−
223132- `services.kubernetes.addons.dashboard` was removed due to it being an outdated version.
224133
225134- `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.
226135
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`).
232−
233−- In the ncdns module, the default value of `services.ncdns.address` has been changed to the IPv6 loopback address (`::1`).
234−
235−- `openssh` has been update to 8.9p1, changing the FIDO security key middleware interface.
236−
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`.
238−
239136- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
240137 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.
241138 The previous behavior may be retained by explicitly setting `systemd.enableUnifiedCgroupHierarchy = false` in your configuration.
@@ -253,8 +150,6 @@ In addition to numerous new and upgraded packages, this release has the followin
253150 }
254151 ```
255152
256−- `services.prometheus.alertManagerTimeout` has been removed as it has been deprecated upstream and has no effect.
257−
258153- The DHCP server (`services.dhcpd4`, `services.dhcpd6`) has been hardened.
259154 The service is now using the systemd's `DynamicUser` mechanism to run as an unprivileged dynamically-allocated user with limited capabilities.
260155 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.
@@ -262,12 +157,6 @@ In addition to numerous new and upgraded packages, this release has the followin
262157
263158- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
264159
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.
266−
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.
268−
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`.
270−
271160- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
272161 This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
273162 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
@@ -362,83 +251,6 @@ In addition to numerous new and upgraded packages, this release has the followin
362251 `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
363252 location if the `stateVersion` is updated.
364253
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.
366−
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
371− in a few ways:
372−
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
380− Configuration
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.
386−
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.
397−
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
404− `str` to `port`.
405−
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)
411−
412− For example, when using a reverse proxy the migration could look
413− like this:
414−
415− Before:
416− ```nix
417− services.keycloak = {
418− enable = true;
419− httpPort = "8080";
420− frontendUrl = "https://keycloak.example.com/auth";
421− database.passwordFile = "/run/keys/db_password";
422− extraConfig = {
423− "subsystem=undertow"."server=default-server"."http-listener=default".proxy-address-forwarding = true;
424− };
425− };
426− ```
427−
428− After:
429− ```nix
430− services.keycloak = {
431− enable = true;
432− settings = {
433− http-port = 8080;
434− hostname = "keycloak.example.com";
435− http-relative-path = "/auth";
436− proxy = "edge";
437− };
438− database.passwordFile = "/run/keys/db_password";
439− };
440− ```
441−
442254- The MoinMoin wiki engine (`services.moinmoin`) has been removed, because Python 2 is being retired from nixpkgs.
443255
444256- Services in the `hadoop` module previously set `openFirewall` to true by default.
@@ -461,10 +273,6 @@ In addition to numerous new and upgraded packages, this release has the followin
461273
462274- The `gnome-passwordsafe` package updated to [version 6.x](https://gitlab.gnome.org/World/secrets/-/tags/6.0) and renamed to `gnome-secrets`.
463275
464−- `services.gnome.experimental-features.realtime-scheduling` option has been removed, as GNOME Shell now [uses rtkit](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2060). Use `security.rtkit.enable = true;` instead. As before, you will need to have it enabled using GSettings.
465−
466−- `services.telepathy` will no longer be enabled by default for GNOME desktops, one should enable it in their configs if using Empathy or Polari.
467−
468276- If you previously used `/etc/docker/daemon.json`, you need to incorporate the changes into the new option `virtualisation.docker.daemon.settings`.
469277
470278- Ntopng (`services.ntopng`) is updated to 5.2.1 and uses a separate Redis instance if `system.stateVersion` is at least `22.05`. Existing setups shouldn't be affected.
@@ -480,10 +288,6 @@ In addition to numerous new and upgraded packages, this release has the followin
480288
481289- `services.miniflux.adminCredentialFiles` is now required, instead of defaulting to `admin` and `password`.
482290
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`.
486−
487291- 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.
488292
489293- For `pkgs.python3.pkgs.ipython`, its direct dependency `pkgs.python3.pkgs.matplotlib-inline`
@@ -511,15 +315,6 @@ In addition to numerous new and upgraded packages, this release has the followin
511315
512316- `pkgs._7zz` is now correctly licensed as LGPL3+ and BSD3 with optional unfree unRAR licensed code
513317
514−- The `vim.customize` function produced by `vimUtils.makeCustomizable` now has a slightly different interface:
515− * The wrapper now includes everything in the given Vim derivation if `name` is `"vim"` (the default). This makes the `wrapManual` argument obsolete, but this behavior can be overriden by setting the `standalone` argument.
516− * All the executables present in the given derivation (or, in `standalone` mode, only the `*vim` ones) are wrapped. This makes the `wrapGui` argument obsolete.
517− * The `vimExecutableName` and `gvimExecutableName` arguments were replaced by a single `executableName` argument in which the shell variable `$exe` can be used to refer to the wrapped executable's name.
518−
519− See the comments in `pkgs/applications/editors/vim/plugins/vim-utils.nix` for more details.
520−
521− `vimUtils.vimWithRC` was removed. You should instead use `customize` on a Vim derivation, which now accepts `vimrcFile` and `gvimrcFile` arguments.
522−
523318- `tilp2` was removed together with its module
524319
525320- The F-PROT antivirus (`fprot` package) and its service module were removed because it
@@ -529,20 +324,12 @@ In addition to numerous new and upgraded packages, this release has the followin
529324
530325- The options `networking.interfaces.<name>.ipv4.routes` and `networking.interfaces.<name>.ipv6.routes` are no longer ignored when using networkd instead of the default scripted network backend by setting `networking.useNetworkd` to `true`.
531326
532−- The `miller` package has been upgraded from 5.10.3 to [6.2.0](https://github.com/johnkerl/miller/releases/tag/v6.2.0). See [What's new in Miller 6](https://miller.readthedocs.io/en/latest/new-in-miller-6).
533−
534327- MultiMC has been replaced with the fork PolyMC due to upstream developers being hostile to 3rd party package maintainers. PolyMC removes all MultiMC branding and is aimed at providing proper 3rd party packages like the one contained in Nixpkgs. This change affects the data folder where game instances and other save and configuration files are stored. Users with existing installations should rename `~/.local/share/multimc` to `~/.local/share/polymc`. The main config file's path has also moved from `~/.local/share/multimc/multimc.cfg` to `~/.local/share/polymc/polymc.cfg`.
535328
536329- `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`
537330
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`.
539−
540331- 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`.
541332
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.
545−
546333- 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
547334`$out/libexec/terraform-providers/<registry>/<owner>/<name>/<version>/<os>_<arch>/terraform-provider-<name>_v<version>` (which mkProvider does).
548335
@@ -563,11 +350,8 @@ In addition to numerous new and upgraded packages, this release has the followin
563350 you should change the package you refer to. If you don't need them update your
564351 commands from `otelcontribcol` to `otelcorecol` and enjoy a 7x smaller binary.
565352
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.
569−
570−- `pkgs.pgadmin` now refers to `pkgs.pgadmin4`. `pgadmin3` has been removed.
353+- `pkgs.pgadmin` now refers to `pkgs.pgadmin4`.
354+ If you still need pgadmin3, use `pkgs.pgadmin3`.
571355
572356- `pkgs.noto-fonts-cjk` is now deprecated in favor of `pkgs.noto-fonts-cjk-sans`
573357 and `pkgs.noto-fonts-cjk-serif` because they each have different release
@@ -637,15 +421,6 @@ In addition to numerous new and upgraded packages, this release has the followin
637421
638422 See the `vscode` package for a more detailed example.
639423
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`
644−
645−- `pkgs.cosmopolitan` no longer provides the `cosmoc` command. It has been moved to `pkgs.cosmoc`.
646−
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.
648−
649424<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
650425
651426## Other Notable Changes {#sec-release-22.05-notable-changes}
@@ -687,10 +462,6 @@ In addition to numerous new and upgraded packages, this release has the followin
687462 - Support for older versions of hadoop have been added to the module
688463 - Overriding and extending site XML files has been made easier
689464
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.
693−
694465- If you are using Wayland you can choose to use the Ozone Wayland support
695466 in Chrome and several Electron apps by setting the environment variable
696467 `NIXOS_OZONE_WL=1` (for example via
@@ -699,11 +470,6 @@ In addition to numerous new and upgraded packages, this release has the followin
699470 still under heavy development and behavior is not always flawless.
700471 Furthermore, not all Electron apps use the latest Electron versions.
701472
702−- A new option group `systemd.network.wait-online` was added, with options to configure `systemd-networkd-wait-online.service`:
703− - `anyInterface` allows specifying that the network should be considered online when *at least one* interface is online (useful on laptops)
704− - `timeout` defines how long to wait for the network to come online
705− - `extraArgs` for everything else
706−
707473- The `influxdb2` package was split into `influxdb2-server` and
708474 `influxdb2-cli`, matching the split that took place upstream. A
709475 combined `influxdb2` package is still provided in this release for
@@ -714,14 +480,9 @@ In addition to numerous new and upgraded packages, this release has the followin
714480
715481- `programs.zsh.autosuggestions.strategy` now takes a list of strings instead of a string.
716482
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.
718−
719483- The `services.unifi.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
720484 Configurations using this default will print a warning when rebuilt.
721485
722−- The `services.unifi-video.openPorts` option default value of `true` is now deprecated and will be changed to `false` in 22.11.
723− Configurations using this default will print a warning when rebuilt.
724−
725486- `security.acme` certificates will now correctly check for CA
726487 revokation before reaching their minimum age.
727488
@@ -740,53 +501,28 @@ In addition to numerous new and upgraded packages, this release has the followin
740501 e.g. Wayland.
741502
742503- [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`
744− entry as the primary host name and specify secondary host names using `extraHostNames` without
745− having to duplicate the primary host name.
504+ option to replace `hostNames`. `hostNames` is deprecated, but still available for now.
746505
747506- The `services.stubby` module was converted to a [settings-style](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md) configuration.
748507
749−- The option
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.
753−
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.
759−
760−- A new module was added for the Envoy reverse proxy, providing the options `services.envoy.enable` and `services.envoy.settings`.
761−
762508- The option `services.duplicati.dataDir` has been added to allow changing the location of duplicati's files.
763509
764510- 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.
765511
766512- `nixos-generate-config` now puts the dhcp configuration in `hardware-configuration.nix` instead of `configuration.nix`.
767513
768−- ORY Kratos was updated to version 0.9.0-alpha.3, 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.
514+- ORY Kratos was updated to version 0.8.3-alpha.1.pre.0, which introduces some breaking changes:
774515 - If you are relying on the SQLite images, update your Docker Pull commands as follows:
775516 - `docker pull oryd/kratos:{version}`
776517 - Additionally, all passwords now have to be at least 8 characters long.
777518 - For more details, see:
778519 - [Release Notes for v0.8.1-alpha-1](https://github.com/ory/kratos/releases/tag/v0.8.1-alpha.1)
779520 - [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)
782−
783521
784522- `fetchFromSourcehut` now allows fetching repositories recursively
785523 using `fetchgit` or `fetchhg` if the argument `fetchSubmodules`
786524 is set to `true`.
787525
788−- A module for declarative configuration of openconnect VPN profiles was added under `networking.openconnect`.
789−
790526- The `element-desktop` package now has an `useKeytar` option (defaults to `true`),
791527 which allows disabling `keytar` and in turn `libsecret` usage
792528 (which binds to native credential managers / keychain libraries).
@@ -811,30 +547,18 @@ In addition to numerous new and upgraded packages, this release has the followin
811547- `services.mattermost.plugins` has been added to allow the declarative installation of Mattermost plugins.
812548 Plugins are automatically repackaged using autoPatchelf.
813549
814−- [services.logrotate.enable](#opt-services.logrotate.enable) now defaults to true if any rotate path has
550+- `services.logrotate.enable` now defaults to true if any rotate path has
815551 been defined, and some paths have been added by default.
816−- The logrotate module also has been updated to freeform syntax: [services.logrotate.paths](#opt-services.logrotate.paths)
817− 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.
819−
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).
821−
822−- The `vscode-extensions.ionide.ionide-fsharp` package has been updated to 6.0.0 and now requires .NET 6.0.
823552
824553- The `zrepl` package has been updated from 0.4.0 to 0.5:
825554
826555 - The RPC protocol version was bumped; all zrepl daemons in a setup must be updated and restarted before replication can resume.
827556 - 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.
828557
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).
831−
832558- Renamed option `services.openssh.challengeResponseAuthentication` to `services.openssh.kbdInteractiveAuthentication`.
833559 Reason is that the old name has been deprecated upstream.
834560 Using the old option name will still work, but produce a warning.
835561
836−- `services.autorandr` now allows for adding hooks and profiles declaratively.
837−
838562- The `pomerium-cli` command has been moved out of the `pomerium` package into
839563 the `pomerium-cli` package, following upstream's repository split. If you are
840564 using the `pomerium-cli` command, you should now install the `pomerium-cli`
@@ -850,29 +574,13 @@ In addition to numerous new and upgraded packages, this release has the followin
850574
851575- 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.
852576
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`.
855−
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).
857−
858577- 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)).
859578
860579- The `R` package now builds again on `aarch64-darwin` ([#158992](https://github.com/NixOS/nixpkgs/pull/158992)).
861580
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`.
863−
864−- The Nextcloud module now supports to create a Mysql database automatically
865− with `services.nextcloud.database.createLocally` enabled.
866−
867581- The `spark3` package has been updated from 3.1.2 to 3.2.1 ([#160075](https://github.com/NixOS/nixpkgs/pull/160075)):
868582
869583 - Testing has been enabled for `aarch64-linux` in addition to `x86_64-linux`.
870584 - The `spark3` package is now usable on `aarch64-darwin` as a result of [#158613](https://github.com/NixOS/nixpkgs/pull/158613) and [#158992](https://github.com/NixOS/nixpkgs/pull/158992).
871585
872−- The `programs.nncp` options were added for generating host-global NNCP configuration.
873−
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.
877−
878586<!-- 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
170170 config.system.build.nixos-install
171171 config.system.build.nixos-enter
172172 nix
173− systemdMinimal
174173 ] ++ stdenv.initialPath);
175174
176175 # 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')))
4848
4949# fix up declaration paths in lazy options, since we don't eval them from a full nixpkgs dir
5050for (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']))
5452
5553# merge both descriptions
5654for (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.
3−#
4−# The result of this builder is a single disk image, partitioned like this:
5−#
6−# * partition #1: a very small, 1MiB partition to leave room for Grub.
7−#
8−# * partition #2: boot, a partition formatted with FAT to be used for /boot.
9−# FAT is chosen to support EFI.
10−#
11−# * partition #3: nixos, a partition dedicated to a zpool.
12−#
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`.
16−{ lib
17−, pkgs
18−, # The NixOS configuration to be installed onto the disk image.
19− config
20−
21−, # size of the FAT partition, in megabytes.
22− bootSize ? 1024
23−
24−, # The size of the root partition, in megabytes.
25− rootSize ? 2048
26−
27−, # The name of the ZFS pool
28− rootPoolName ? "tank"
29−
30−, # zpool properties
31− rootPoolProperties ? {
32− autoexpand = "on";
33− }
34−, # pool-wide filesystem properties
35− rootPoolFilesystemProperties ? {
36− acltype = "posixacl";
37− atime = "off";
38− compression = "on";
39− mountpoint = "legacy";
40− xattr = "sa";
41− }
42−
43−, # datasets, with per-attribute options:
44− # mount: (optional) mount point in the VM
45− # properties: (optional) ZFS properties on the dataset, like filesystemProperties
46− # Notes:
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 `/`
49− datasets ? { }
50−
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'.
55− contents ? [ ]
56−
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.
60− configFile ? null
61−
62−, # Shell code executed after the VM has finished.
63− postVM ? ""
64−
65−, name ? "nixos-disk-image"
66−
67−, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
68− format ? "raw"
69−
70−, # Include a copy of Nixpkgs in the disk image
71− includeChannel ? true
72−}:
73−let
74− formatOpt = if format == "qcow2-compressed" then "qcow2" else format;
75−
76− compress = lib.optionalString (format == "qcow2-compressed") "-c";
77−
78− filenameSuffix = "." + {
79− qcow2 = "qcow2";
80− vdi = "vdi";
81− vpc = "vhd";
82− raw = "img";
83− }.${formatOpt} or formatOpt;
84− rootFilename = "nixos.root${filenameSuffix}";
85−
86− # FIXME: merge with channel.nix / make-channel.nix.
87− channelSources =
88− let
89− nixpkgs = lib.cleanSource pkgs.path;
90− in
91− pkgs.runCommand "nixos-${config.system.nixos.version}" { } ''
92− mkdir -p $out
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
97− fi
98− rm -rf $out/nixos/.git
99− echo -n ${config.system.nixos.versionSuffix} > $out/nixos/.version-suffix
100− '';
101−
102− closureInfo = pkgs.closureInfo {
103− rootPaths = [ config.system.build.toplevel ]
104− ++ (lib.optional includeChannel channelSources);
105− };
106−
107− modulesTree = pkgs.aggregateModules
108− (with config.boot.kernelPackages; [ kernel zfs ]);
109−
110− tools = lib.makeBinPath (
111− with pkgs; [
112− config.system.build.nixos-enter
113− config.system.build.nixos-install
114− dosfstools
115− e2fsprogs
116− gptfdisk
117− nix
118− parted
119− utillinux
120− zfs
121− ]
122− );
123−
124− hasDefinedMount = disk: ((disk.mount or null) != null);
125−
126− stringifyProperties = prefix: properties: lib.concatStringsSep " \\\n" (
127− lib.mapAttrsToList
128− (
129− property: value: "${prefix} ${lib.escapeShellArg property}=${lib.escapeShellArg value}"
130− )
131− properties
132− );
133−
134− featuresToProperties = features:
135− lib.listToAttrs
136− (builtins.map
137− (feature: {
138− name = "feature@${feature}";
139− value = "enabled";
140− })
141− features);
142−
143− createDatasets =
144− let
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 }:
148− let
149− properties = stringifyProperties "-o" (value.properties or { });
150− in
151− "zfs create -p ${properties} ${name}";
152− in
153− lib.concatMapStringsSep "\n" cmd sorted;
154−
155− mountDatasets =
156− let
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 }:
161− ''
162− mkdir -p /mnt${lib.escapeShellArg value.mount}
163− mount -t zfs ${name} /mnt${lib.escapeShellArg value.mount}
164− '';
165− in
166− lib.concatMapStringsSep "\n" cmd sorted;
167−
168− unmountDatasets =
169− let
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 }:
174− ''
175− umount /mnt${lib.escapeShellArg value.mount}
176− '';
177− in
178− lib.concatMapStringsSep "\n" cmd sorted;
179−
180−
181− fileSystemsCfgFile =
182− let
183− mountable = lib.filterAttrs (_: value: hasDefinedMount value) datasets;
184− in
185− pkgs.runCommand "filesystem-config.nix"
186− {
187− buildInputs = with pkgs; [ jq nixpkgs-fmt ];
188− filesystems = builtins.toJSON {
189− fileSystems = lib.mapAttrs'
190− (
191− dataset: attrs:
192− {
193− name = attrs.mount;
194− value = {
195− fsType = "zfs";
196− device = "${dataset}";
197− };
198− }
199− )
200− mountable;
201− };
202− passAsFile = [ "filesystems" ];
203− } ''
204− (
205− echo "builtins.fromJSON '''"
206− jq . < "$filesystemsPath"
207− echo "'''"
208− ) > $out
209−
210− nixpkgs-fmt $out
211− '';
212−
213− mergedConfig =
214− if configFile == null
215− then fileSystemsCfgFile
216− else
217− pkgs.runCommand "configuration.nix"
218− {
219− buildInputs = with pkgs; [ nixpkgs-fmt ];
220− }
221− ''
222− (
223− echo '{ imports = ['
224− printf "(%s)\n" "$(cat ${fileSystemsCfgFile})";
225− printf "(%s)\n" "$(cat ${configFile})";
226− echo ']; }'
227− ) > $out
228−
229− nixpkgs-fmt $out
230− '';
231−
232− image = (
233− pkgs.vmTools.override {
234− rootModules =
235− [ "zfs" "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++
236− (pkgs.lib.optional pkgs.stdenv.hostPlatform.isx86 "rtc_cmos");
237− kernel = modulesTree;
238− }
239− ).runInLinuxVM (
240− pkgs.runCommand name
241− {
242− memSize = 1024;
243− QEMU_OPTS = "-drive file=$rootDiskImage,if=virtio,cache=unsafe,werror=report";
244− preVM = ''
245− PATH=$PATH:${pkgs.qemu_kvm}/bin
246− mkdir $out
247−
248− rootDiskImage=root.raw
249− qemu-img create -f raw $rootDiskImage ${toString (bootSize + rootSize)}M
250− '';
251−
252− postVM = ''
253− ${if formatOpt == "raw" then ''
254− mv $rootDiskImage $out/${rootFilename}
255− '' else ''
256− ${pkgs.qemu}/bin/qemu-img convert -f raw -O ${formatOpt} ${compress} $rootDiskImage $out/${rootFilename}
257− ''}
258− rootDiskImage=$out/${rootFilename}
259− set -x
260− ${postVM}
261− '';
262− } ''
263− export PATH=${tools}:$PATH
264− set -x
265−
266− cp -sv /dev/vda /dev/sda
267− cp -sv /dev/vda /dev/xvda
268−
269− parted --script /dev/vda -- \
270− mklabel gpt \
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 \
278− print
279−
280− sfdisk --dump /dev/vda
281−
282−
283− zpool create \
284− ${stringifyProperties " -o" rootPoolProperties} \
285− ${stringifyProperties " -O" rootPoolFilesystemProperties} \
286− ${rootPoolName} /dev/vda3
287− parted --script /dev/vda -- print
288−
289− ${createDatasets}
290− ${mountDatasets}
291−
292− mkdir -p /mnt/boot
293− mkfs.vfat -n ESP /dev/vda2
294− mount /dev/vda2 /mnt/boot
295−
296− mount
297−
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
302−
303− export NIX_STATE_DIR=$TMPDIR/state
304− nix-store --load-db < ${closureInfo}/registration
305−
306− nixos-install \
307− --root /mnt \
308− --no-root-passwd \
309− --system ${config.system.build.toplevel} \
310− --substituters "" \
311− ${lib.optionalString includeChannel ''--channel ${channelSources}''}
312−
313− df -h
314−
315− umount /mnt/boot
316− ${unmountDatasets}
317−
318− zpool export ${rootPoolName}
319− ''
320− );
321−in
322−image
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 {
2323
2424 qemuBinary = qemuPkg: {
2525 x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
26− armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -machine virt,accel=kvm:tcg -cpu max";
27− aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=max,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 -enable-kvm -machine virt,gic-version=host -cpu host";
2828 powerpc64le-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
2929 powerpc64-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
3030 x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
nixos/lib/systemd-lib.nix+54−40
@@ -23,9 +23,8 @@ in rec {
2323 inherit (unit) text;
2424 }
2525 ''
26− name=${shellEscape name}
27− mkdir -p "$out/$(dirname "$name")"
28− echo -n "$text" > "$out/$name"
26+ mkdir -p $out
27+ echo -n "$text" > $out/${shellEscape name}
2928 ''
3029 else
3130 pkgs.runCommand "unit-${mkPathSafeName name}-disabled"
@@ -33,9 +32,8 @@ in rec {
3332 allowSubstitutes = false;
3433 }
3534 ''
36− name=${shellEscape name}
37− mkdir -p "$out/$(dirname "$name")"
38− ln -s /dev/null "$out/$name"
35+ mkdir -p $out
36+ ln -s /dev/null $out/${shellEscape name}
3937 '';
4038
4139 boolValues = [true false "yes" "no"];
@@ -122,15 +120,10 @@ in rec {
122120 (if isList value then value else [value]))
123121 as));
124122
125− generateUnits = { allowCollisions ? true, type, units, upstreamUnits, upstreamWants, packages ? cfg.packages, package ? cfg.package }:
126− let
127− typeDir = ({
128− system = "system";
129− initrd = "system";
130− user = "user";
131− nspawn = "nspawn";
132− }).${type};
133− in pkgs.runCommand "${type}-units"
123+ generateUnits = generateUnits' true;
124+
125+ generateUnits' = allowCollisions: type: units: upstreamUnits: upstreamWants:
126+ pkgs.runCommand "${type}-units"
134127 { preferLocalBuild = true;
135128 allowSubstitutes = false;
136129 } ''
@@ -138,7 +131,7 @@ in rec {
138131
139132 # Copy the upstream systemd units we're interested in.
140133 for i in ${toString upstreamUnits}; do
141− fn=${package}/example/systemd/${typeDir}/$i
134+ fn=${cfg.package}/example/systemd/${type}/$i
142135 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
143136 if [ -L $fn ]; then
144137 target="$(readlink "$fn")"
@@ -155,7 +148,7 @@ in rec {
155148 # Copy .wants links, but only those that point to units that
156149 # we're interested in.
157150 for i in ${toString upstreamWants}; do
158− fn=${package}/example/systemd/${typeDir}/$i
151+ fn=${cfg.package}/example/systemd/${type}/$i
159152 if ! [ -e $fn ]; then echo "missing $fn"; false; fi
160153 x=$out/$(basename $fn)
161154 mkdir $x
@@ -167,14 +160,14 @@ in rec {
167160 done
168161
169162 # Symlink all units provided listed in systemd.packages.
170− packages="${toString packages}"
163+ packages="${toString cfg.packages}"
171164
172165 # Filter duplicate directories
173166 declare -A unique_packages
174167 for k in $packages ; do unique_packages[$k]=1 ; done
175168
176169 for i in ''${!unique_packages[@]}; do
177− for fn in $i/etc/systemd/${typeDir}/* $i/lib/systemd/${typeDir}/*; do
170+ for fn in $i/etc/systemd/${type}/* $i/lib/systemd/${type}/*; do
178171 if ! [[ "$fn" =~ .wants$ ]]; then
179172 if [[ -d "$fn" ]]; then
180173 targetDir="$out/$(basename "$fn")"
@@ -275,9 +268,9 @@ in rec {
275268 { Conflicts = toString config.conflicts; }
276269 // optionalAttrs (config.requisite != [])
277270 { Requisite = toString config.requisite; }
278− // optionalAttrs (config ? restartTriggers && config.restartTriggers != [])
271+ // optionalAttrs (config.restartTriggers != [])
279272 { X-Restart-Triggers = toString config.restartTriggers; }
280− // optionalAttrs (config ? reloadTriggers && config.reloadTriggers != [])
273+ // optionalAttrs (config.reloadTriggers != [])
281274 { X-Reload-Triggers = toString config.reloadTriggers; }
282275 // optionalAttrs (config.description != "") {
283276 Description = config.description; }
@@ -293,24 +286,45 @@ in rec {
293286 };
294287 };
295288
296− serviceConfig = { config, ... }: {
297− config.environment.PATH = mkIf (config.path != []) "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
298− };
299−
300− stage2ServiceConfig = {
301− imports = [ serviceConfig ];
302− # Default path for systemd services. Should be quite minimal.
303− config.path = mkAfter [
304− pkgs.coreutils
305− pkgs.findutils
306− pkgs.gnugrep
307− pkgs.gnused
308− systemd
309− ];
289+ serviceConfig = { name, config, ... }: {
290+ config = mkMerge
291+ [ { # Default path for systemd services. Should be quite minimal.
292+ path = mkAfter
293+ [ pkgs.coreutils
294+ pkgs.findutils
295+ pkgs.gnugrep
296+ pkgs.gnused
297+ systemd
298+ ];
299+ environment.PATH = "${makeBinPath config.path}:${makeSearchPathOutput "bin" "sbin" config.path}";
300+ }
301+ (mkIf (config.preStart != "")
302+ { serviceConfig.ExecStartPre =
303+ [ (makeJobScript "${name}-pre-start" config.preStart) ];
304+ })
305+ (mkIf (config.script != "")
306+ { serviceConfig.ExecStart =
307+ makeJobScript "${name}-start" config.script + " " + config.scriptArgs;
308+ })
309+ (mkIf (config.postStart != "")
310+ { serviceConfig.ExecStartPost =
311+ [ (makeJobScript "${name}-post-start" config.postStart) ];
312+ })
313+ (mkIf (config.reload != "")
314+ { serviceConfig.ExecReload =
315+ makeJobScript "${name}-reload" config.reload;
316+ })
317+ (mkIf (config.preStop != "")
318+ { serviceConfig.ExecStop =
319+ makeJobScript "${name}-pre-stop" config.preStop;
320+ })
321+ (mkIf (config.postStop != "")
322+ { serviceConfig.ExecStopPost =
323+ makeJobScript "${name}-post-stop" config.postStop;
324+ })
325+ ];
310326 };
311327
312− stage1ServiceConfig = serviceConfig;
313−
314328 mountConfig = { config, ... }: {
315329 config = {
316330 mountConfig =
@@ -358,12 +372,12 @@ in rec {
358372 # systemd max line length is now 1MiB
359373 # https://github.com/systemd/systemd/commit/e6dde451a51dc5aaa7f4d98d39b8fe735f73d2af
360374 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 ''
375+ ${if def.reloadIfChanged then ''
362376 X-ReloadIfChanged=true
363− '' else if (def ? restartIfChanged && !def.restartIfChanged) then ''
377+ '' else if !def.restartIfChanged then ''
364378 X-RestartIfChanged=false
365379 '' else ""}
366− ${optionalString (def ? stopIfChanged && !def.stopIfChanged) "X-StopIfChanged=false"}
380+ ${optionalString (!def.stopIfChanged) "X-StopIfChanged=false"}
367381 ${attrsToSection def.serviceConfig}
368382 '';
369383 };
nixos/lib/systemd-types.nixdeleted−69
@@ -1,69 +0,0 @@
1−{ lib, systemdUtils, pkgs }:
2−
3−with systemdUtils.lib;
4−with systemdUtils.unitOptions;
5−with lib;
6−
7−rec {
8− units = with types;
9− attrsOf (submodule ({ name, config, ... }: {
10− options = concreteUnitOptions;
11− config = { unit = mkDefault (systemdUtils.lib.makeUnit name config); };
12− }));
13−
14− services = with types; attrsOf (submodule [ stage2ServiceOptions unitConfig stage2ServiceConfig ]);
15− initrdServices = with types; attrsOf (submodule [ stage1ServiceOptions unitConfig stage1ServiceConfig ]);
16−
17− targets = with types; attrsOf (submodule [ stage2CommonUnitOptions unitConfig ]);
18− initrdTargets = with types; attrsOf (submodule [ stage1CommonUnitOptions unitConfig ]);
19−
20− sockets = with types; attrsOf (submodule [ stage2SocketOptions unitConfig ]);
21− initrdSockets = with types; attrsOf (submodule [ stage1SocketOptions unitConfig ]);
22−
23− timers = with types; attrsOf (submodule [ stage2TimerOptions unitConfig ]);
24− initrdTimers = with types; attrsOf (submodule [ stage1TimerOptions unitConfig ]);
25−
26− paths = with types; attrsOf (submodule [ stage2PathOptions unitConfig ]);
27− initrdPaths = with types; attrsOf (submodule [ stage1PathOptions unitConfig ]);
28−
29− slices = with types; attrsOf (submodule [ stage2SliceOptions unitConfig ]);
30− initrdSlices = with types; attrsOf (submodule [ stage1SliceOptions unitConfig ]);
31−
32− mounts = with types; listOf (submodule [ stage2MountOptions unitConfig mountConfig ]);
33− initrdMounts = with types; listOf (submodule [ stage1MountOptions unitConfig mountConfig ]);
34−
35− automounts = with types; listOf (submodule [ stage2AutomountOptions unitConfig automountConfig ]);
36− initrdAutomounts = with types; attrsOf (submodule [ stage1AutomountOptions unitConfig automountConfig ]);
37−
38− initrdContents = types.attrsOf (types.submodule ({ config, options, name, ... }: {
39− options = {
40− enable = mkEnableOption "copying of this file and symlinking it" // { default = true; };
41−
42− target = mkOption {
43− type = types.path;
44− description = ''
45− Path of the symlink.
46− '';
47− default = name;
48− };
49−
50− text = mkOption {
51− default = null;
52− type = types.nullOr types.lines;
53− description = "Text of the file.";
54− };
55−
56− source = mkOption {
57− type = types.path;
58− description = "Path of the source file.";
59− };
60− };
61−
62− config = {
63− source = mkIf (config.text != null) (
64− let name' = "initrd-" + baseNameOf name;
65− in mkDerivedConfig options.text (pkgs.writeText name')
66− );
67− };
68− }));
69−}
nixos/lib/systemd-unit-options.nix+401−560
@@ -94,618 +94,459 @@ in rec {
9494
9595 };
9696
97− commonUnitOptions = {
98− options = sharedOptions // {
99−
100− description = mkOption {
101− default = "";
102− type = types.singleLineStr;
103− description = "Description of this unit used in systemd messages and progress indicators.";
104− };
105−
106− documentation = mkOption {
107− default = [];
108− type = types.listOf types.str;
109− description = "A list of URIs referencing documentation for this unit or its configuration.";
110− };
111−
112− requires = mkOption {
113− default = [];
114− type = types.listOf unitNameType;
115− description = ''
116− Start the specified units when this unit is started, and stop
117− this unit when the specified units are stopped or fail.
118− '';
119− };
120−
121− wants = mkOption {
122− default = [];
123− type = types.listOf unitNameType;
124− description = ''
125− Start the specified units when this unit is started.
126− '';
127− };
128−
129− after = mkOption {
130− default = [];
131− type = types.listOf unitNameType;
132− description = ''
133− If the specified units are started at the same time as
134− this unit, delay this unit until they have started.
135− '';
136− };
137−
138− before = mkOption {
139− default = [];
140− type = types.listOf unitNameType;
141− description = ''
142− If the specified units are started at the same time as
143− this unit, delay them until this unit has started.
144− '';
145− };
146−
147− bindsTo = mkOption {
148− default = [];
149− type = types.listOf unitNameType;
150− description = ''
151− Like ‘requires’, but in addition, if the specified units
152− unexpectedly disappear, this unit will be stopped as well.
153− '';
154− };
155−
156− partOf = mkOption {
157− default = [];
158− type = types.listOf unitNameType;
159− description = ''
160− If the specified units are stopped or restarted, then this
161− unit is stopped or restarted as well.
162− '';
163− };
164−
165− conflicts = mkOption {
166− default = [];
167− type = types.listOf unitNameType;
168− description = ''
169− If the specified units are started, then this unit is stopped
170− and vice versa.
171− '';
172− };
173−
174− requisite = mkOption {
175− default = [];
176− type = types.listOf unitNameType;
177− description = ''
178− Similar to requires. However if the units listed are not started,
179− they will not be started and the transaction will fail.
180− '';
181− };
182−
183− unitConfig = mkOption {
184− default = {};
185− example = { RequiresMountsFor = "/data"; };
186− type = types.attrsOf unitOption;
187− description = ''
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.
192− '';
193− };
194−
195− onFailure = mkOption {
196− default = [];
197− type = types.listOf unitNameType;
198− description = ''
199− A list of one or more units that are activated when
200− this unit enters the "failed" state.
201− '';
202− };
203−
204− startLimitBurst = mkOption {
205− type = types.int;
206− description = ''
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.
210− '';
211− };
212−
213− startLimitIntervalSec = mkOption {
214− type = types.int;
215− description = ''
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.
219− '';
220− };
97+ commonUnitOptions = sharedOptions // {
22198
99+ description = mkOption {
100+ default = "";
101+ type = types.singleLineStr;
102+ description = "Description of this unit used in systemd messages and progress indicators.";
222103 };
223− };
224104
225− stage2CommonUnitOptions = {
226− imports = [
227− commonUnitOptions
228− ];
229−
230− options = {
231− restartTriggers = mkOption {
232− default = [];
233− type = types.listOf types.unspecified;
234− description = ''
235− An arbitrary list of items such as derivations. If any item
236− in the list changes between reconfigurations, the service will
237− be restarted.
238− '';
239− };
240−
241− reloadTriggers = mkOption {
242− default = [];
243− type = types.listOf unitOption;
244− description = ''
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.
249− '';
250− };
105+ documentation = mkOption {
106+ default = [];
107+ type = types.listOf types.str;
108+ description = "A list of URIs referencing documentation for this unit or its configuration.";
251109 };
252− };
253− stage1CommonUnitOptions = commonUnitOptions;
254−
255− serviceOptions = { name, config, ... }: {
256− options = {
257−
258− environment = mkOption {
259− default = {};
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.";
263− };
264−
265− path = mkOption {
266− default = [];
267− type = with types; listOf (oneOf [ package str ]);
268− description = ''
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
272− package are added.
273− '';
274− };
275−
276− serviceConfig = mkOption {
277− default = {};
278− example =
279− { RestartSec = 5;
280− };
281− type = types.addCheck (types.attrsOf unitOption) checkService;
282− description = ''
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.
287− '';
288− };
289−
290− script = mkOption {
291− type = types.lines;
292− default = "";
293− description = "Shell commands executed as the service's main process.";
294− };
295−
296− scriptArgs = mkOption {
297− type = types.str;
298− default = "";
299− description = "Arguments passed to the main process script.";
300− };
301−
302− preStart = mkOption {
303− type = types.lines;
304− default = "";
305− description = ''
306− Shell commands executed before the service's main process
307− is started.
308− '';
309− };
310−
311− postStart = mkOption {
312− type = types.lines;
313− default = "";
314− description = ''
315− Shell commands executed after the service's main process
316− is started.
317− '';
318− };
319−
320− reload = mkOption {
321− type = types.lines;
322− default = "";
323− description = ''
324− Shell commands executed when the service's main process
325− is reloaded.
326− '';
327− };
328−
329− preStop = mkOption {
330− type = types.lines;
331− default = "";
332− description = ''
333− Shell commands executed to stop the service.
334− '';
335− };
336−
337− postStop = mkOption {
338− type = types.lines;
339− default = "";
340− description = ''
341− Shell commands executed after the service's main process
342− has exited.
343− '';
344− };
345−
346− jobScripts = mkOption {
347− type = with types; coercedTo path singleton (listOf path);
348− internal = true;
349− description = "A list of all job script derivations of this unit.";
350− default = [];
351− };
352−
353− };
354−
355− config = mkMerge [
356− (mkIf (config.preStart != "") rec {
357− jobScripts = makeJobScript "${name}-pre-start" config.preStart;
358− serviceConfig.ExecStartPre = [ jobScripts ];
359− })
360− (mkIf (config.script != "") rec {
361− jobScripts = makeJobScript "${name}-start" config.script;
362− serviceConfig.ExecStart = jobScripts + " " + config.scriptArgs;
363− })
364− (mkIf (config.postStart != "") rec {
365− jobScripts = (makeJobScript "${name}-post-start" config.postStart);
366− serviceConfig.ExecStartPost = [ jobScripts ];
367− })
368− (mkIf (config.reload != "") rec {
369− jobScripts = makeJobScript "${name}-reload" config.reload;
370− serviceConfig.ExecReload = jobScripts;
371− })
372− (mkIf (config.preStop != "") rec {
373− jobScripts = makeJobScript "${name}-pre-stop" config.preStop;
374− serviceConfig.ExecStop = jobScripts;
375− })
376− (mkIf (config.postStop != "") rec {
377− jobScripts = makeJobScript "${name}-post-stop" config.postStop;
378− serviceConfig.ExecStopPost = jobScripts;
379− })
380− ];
381110
382− };
111+ requires = mkOption {
112+ default = [];
113+ type = types.listOf unitNameType;
114+ description = ''
115+ Start the specified units when this unit is started, and stop
116+ this unit when the specified units are stopped or fail.
117+ '';
118+ };
383119
384− stage2ServiceOptions = {
385− imports = [
386− stage2CommonUnitOptions
387− serviceOptions
388− ];
389−
390− options = {
391− restartIfChanged = mkOption {
392− type = types.bool;
393− default = true;
394− description = ''
395− Whether the service should be restarted during a NixOS
396− configuration switch if its definition has changed.
397− '';
398− };
399−
400− reloadIfChanged = mkOption {
401− type = types.bool;
402− default = false;
403− description = ''
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
407− ignored.
408−
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
412− is restarted.
413− '';
414− };
415−
416− stopIfChanged = mkOption {
417− type = types.bool;
418− default = true;
419− description = ''
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
427− configuration.
428− '';
429− };
430−
431− startAt = mkOption {
432− type = with types; either str (listOf str);
433− default = [];
434− example = "Sun 14:00:00";
435− description = ''
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.
442− '';
443− apply = v: if isList v then v else [ v ];
444− };
120+ wants = mkOption {
121+ default = [];
122+ type = types.listOf unitNameType;
123+ description = ''
124+ Start the specified units when this unit is started.
125+ '';
445126 };
446− };
447127
448− stage1ServiceOptions = {
449− imports = [
450− stage1CommonUnitOptions
451− serviceOptions
452− ];
453− };
128+ after = mkOption {
129+ default = [];
130+ type = types.listOf unitNameType;
131+ description = ''
132+ If the specified units are started at the same time as
133+ this unit, delay this unit until they have started.
134+ '';
135+ };
454136
137+ before = mkOption {
138+ default = [];
139+ type = types.listOf unitNameType;
140+ description = ''
141+ If the specified units are started at the same time as
142+ this unit, delay them until this unit has started.
143+ '';
144+ };
455145
456− socketOptions = {
457− options = {
458−
459− listenStreams = mkOption {
460− default = [];
461− type = types.listOf types.str;
462− example = [ "0.0.0.0:993" "/run/my-socket" ];
463− description = ''
464− For each item in this list, a <literal>ListenStream</literal>
465− option in the <literal>[Socket]</literal> section will be created.
466− '';
467− };
468−
469− listenDatagrams = mkOption {
470− default = [];
471− type = types.listOf types.str;
472− example = [ "0.0.0.0:993" "/run/my-socket" ];
473− description = ''
474− For each item in this list, a <literal>ListenDatagram</literal>
475− option in the <literal>[Socket]</literal> section will be created.
476− '';
477− };
478−
479− socketConfig = mkOption {
480− default = {};
481− example = { ListenStream = "/run/my-socket"; };
482− type = types.attrsOf unitOption;
483− description = ''
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.
488− '';
489− };
146+ bindsTo = mkOption {
147+ default = [];
148+ type = types.listOf unitNameType;
149+ description = ''
150+ Like ‘requires’, but in addition, if the specified units
151+ unexpectedly disappear, this unit will be stopped as well.
152+ '';
490153 };
491154
492− };
155+ partOf = mkOption {
156+ default = [];
157+ type = types.listOf unitNameType;
158+ description = ''
159+ If the specified units are stopped or restarted, then this
160+ unit is stopped or restarted as well.
161+ '';
162+ };
493163
494− stage2SocketOptions = {
495− imports = [
496− stage2CommonUnitOptions
497− socketOptions
498− ];
499− };
164+ conflicts = mkOption {
165+ default = [];
166+ type = types.listOf unitNameType;
167+ description = ''
168+ If the specified units are started, then this unit is stopped
169+ and vice versa.
170+ '';
171+ };
500172
501− stage1SocketOptions = {
502− imports = [
503− stage1CommonUnitOptions
504− socketOptions
505− ];
506− };
173+ requisite = mkOption {
174+ default = [];
175+ type = types.listOf unitNameType;
176+ description = ''
177+ Similar to requires. However if the units listed are not started,
178+ they will not be started and the transaction will fail.
179+ '';
180+ };
507181
182+ unitConfig = mkOption {
183+ default = {};
184+ example = { RequiresMountsFor = "/data"; };
185+ type = types.attrsOf unitOption;
186+ description = ''
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.
191+ '';
192+ };
508193
509− timerOptions = {
510− options = {
194+ restartTriggers = mkOption {
195+ default = [];
196+ type = types.listOf types.unspecified;
197+ description = ''
198+ An arbitrary list of items such as derivations. If any item
199+ in the list changes between reconfigurations, the service will
200+ be restarted.
201+ '';
202+ };
511203
512− timerConfig = mkOption {
513− default = {};
514− example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
515− type = types.attrsOf unitOption;
516− description = ''
517− Each attribute in this set specifies an option in the
518− <literal>[Timer]</literal> section of the unit. See
519− <citerefentry><refentrytitle>systemd.timer</refentrytitle>
520− <manvolnum>5</manvolnum></citerefentry> and
521− <citerefentry><refentrytitle>systemd.time</refentrytitle>
522− <manvolnum>7</manvolnum></citerefentry> for details.
523− '';
524− };
204+ reloadTriggers = mkOption {
205+ default = [];
206+ type = types.listOf unitOption;
207+ description = ''
208+ An arbitrary list of items such as derivations. If any item
209+ in the list changes between reconfigurations, the service will
210+ be reloaded. If anything but a reload trigger changes in the
211+ unit file, the unit will be restarted instead.
212+ '';
213+ };
525214
215+ onFailure = mkOption {
216+ default = [];
217+ type = types.listOf unitNameType;
218+ description = ''
219+ A list of one or more units that are activated when
220+ this unit enters the "failed" state.
221+ '';
526222 };
527− };
528223
529− stage2TimerOptions = {
530− imports = [
531− stage2CommonUnitOptions
532− timerOptions
533− ];
534− };
224+ startLimitBurst = mkOption {
225+ type = types.int;
226+ description = ''
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.
230+ '';
231+ };
232+
233+ startLimitIntervalSec = mkOption {
234+ type = types.int;
235+ description = ''
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.
239+ '';
240+ };
535241
536− stage1TimerOptions = {
537− imports = [
538− stage1CommonUnitOptions
539− timerOptions
540− ];
541242 };
542243
543244
544− pathOptions = {
545− options = {
245+ serviceOptions = commonUnitOptions // {
546246
547− pathConfig = mkOption {
548− default = {};
549− example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
550− type = types.attrsOf unitOption;
551− description = ''
552− Each attribute in this set specifies an option in the
553− <literal>[Path]</literal> section of the unit. See
554− <citerefentry><refentrytitle>systemd.path</refentrytitle>
555− <manvolnum>5</manvolnum></citerefentry> for details.
556− '';
557− };
247+ environment = mkOption {
248+ default = {};
249+ type = with types; attrsOf (nullOr (oneOf [ str path package ]));
250+ example = { PATH = "/foo/bar/bin"; LANG = "nl_NL.UTF-8"; };
251+ description = "Environment variables passed to the service's processes.";
252+ };
558253
254+ path = mkOption {
255+ default = [];
256+ type = with types; listOf (oneOf [ package str ]);
257+ description = ''
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
261+ package are added.
262+ '';
559263 };
560− };
561264
562− stage2PathOptions = {
563− imports = [
564− stage2CommonUnitOptions
565− pathOptions
566− ];
567− };
265+ serviceConfig = mkOption {
266+ default = {};
267+ example =
268+ { RestartSec = 5;
269+ };
270+ type = types.addCheck (types.attrsOf unitOption) checkService;
271+ description = ''
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.
276+ '';
277+ };
568278
569− stage1PathOptions = {
570− imports = [
571− stage1CommonUnitOptions
572− pathOptions
573− ];
574− };
279+ script = mkOption {
280+ type = types.lines;
281+ default = "";
282+ description = "Shell commands executed as the service's main process.";
283+ };
575284
285+ scriptArgs = mkOption {
286+ type = types.str;
287+ default = "";
288+ description = "Arguments passed to the main process script.";
289+ };
576290
577− mountOptions = {
578− options = {
579−
580− what = mkOption {
581− example = "/dev/sda1";
582− type = types.str;
583− description = "Absolute path of device node, file or other resource. (Mandatory)";
584− };
585−
586− where = mkOption {
587− example = "/mnt";
588− type = types.str;
589− description = ''
590− Absolute path of a directory of the mount point.
591− Will be created if it doesn't exist. (Mandatory)
592− '';
593− };
594−
595− type = mkOption {
596− default = "";
597− example = "ext4";
598− type = types.str;
599− description = "File system type.";
600− };
601−
602− options = mkOption {
603− default = "";
604− example = "noatime";
605− type = types.commas;
606− description = "Options used to mount the file system.";
607− };
608−
609− mountConfig = mkOption {
610− default = {};
611− example = { DirectoryMode = "0775"; };
612− type = types.attrsOf unitOption;
613− description = ''
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.
618− '';
619− };
291+ preStart = mkOption {
292+ type = types.lines;
293+ default = "";
294+ description = ''
295+ Shell commands executed before the service's main process
296+ is started.
297+ '';
298+ };
620299
300+ postStart = mkOption {
301+ type = types.lines;
302+ default = "";
303+ description = ''
304+ Shell commands executed after the service's main process
305+ is started.
306+ '';
621307 };
622− };
623308
624− stage2MountOptions = {
625− imports = [
626− stage2CommonUnitOptions
627− mountOptions
628− ];
629− };
309+ reload = mkOption {
310+ type = types.lines;
311+ default = "";
312+ description = ''
313+ Shell commands executed when the service's main process
314+ is reloaded.
315+ '';
316+ };
317+
318+ preStop = mkOption {
319+ type = types.lines;
320+ default = "";
321+ description = ''
322+ Shell commands executed to stop the service.
323+ '';
324+ };
325+
326+ postStop = mkOption {
327+ type = types.lines;
328+ default = "";
329+ description = ''
330+ Shell commands executed after the service's main process
331+ has exited.
332+ '';
333+ };
334+
335+ restartIfChanged = mkOption {
336+ type = types.bool;
337+ default = true;
338+ description = ''
339+ Whether the service should be restarted during a NixOS
340+ configuration switch if its definition has changed.
341+ '';
342+ };
343+
344+ reloadIfChanged = mkOption {
345+ type = types.bool;
346+ default = false;
347+ description = ''
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
351+ ignored.
352+
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
356+ is restarted.
357+ '';
358+ };
359+
360+ stopIfChanged = mkOption {
361+ type = types.bool;
362+ default = true;
363+ description = ''
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
371+ configuration.
372+ '';
373+ };
374+
375+ startAt = mkOption {
376+ type = with types; either str (listOf str);
377+ default = [];
378+ example = "Sun 14:00:00";
379+ description = ''
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.
386+ '';
387+ apply = v: if isList v then v else [ v ];
388+ };
630389
631− stage1MountOptions = {
632− imports = [
633− stage1CommonUnitOptions
634− mountOptions
635− ];
636390 };
637391
638− automountOptions = {
639− options = {
640−
641− where = mkOption {
642− example = "/mnt";
643− type = types.str;
644− description = ''
645− Absolute path of a directory of the mount point.
646− Will be created if it doesn't exist. (Mandatory)
647− '';
648− };
649−
650− automountConfig = mkOption {
651− default = {};
652− example = { DirectoryMode = "0775"; };
653− type = types.attrsOf unitOption;
654− description = ''
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.
659− '';
660− };
661392
393+ socketOptions = commonUnitOptions // {
394+
395+ listenStreams = mkOption {
396+ default = [];
397+ type = types.listOf types.str;
398+ example = [ "0.0.0.0:993" "/run/my-socket" ];
399+ description = ''
400+ For each item in this list, a <literal>ListenStream</literal>
401+ option in the <literal>[Socket]</literal> section will be created.
402+ '';
403+ };
404+
405+ listenDatagrams = mkOption {
406+ default = [];
407+ type = types.listOf types.str;
408+ example = [ "0.0.0.0:993" "/run/my-socket" ];
409+ description = ''
410+ For each item in this list, a <literal>ListenDatagram</literal>
411+ option in the <literal>[Socket]</literal> section will be created.
412+ '';
662413 };
414+
415+ socketConfig = mkOption {
416+ default = {};
417+ example = { ListenStream = "/run/my-socket"; };
418+ type = types.attrsOf unitOption;
419+ description = ''
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.
424+ '';
425+ };
426+
663427 };
664428
665− stage2AutomountOptions = {
666− imports = [
667− stage2CommonUnitOptions
668− automountOptions
669− ];
429+
430+ timerOptions = commonUnitOptions // {
431+
432+ timerConfig = mkOption {
433+ default = {};
434+ example = { OnCalendar = "Sun 14:00:00"; Unit = "foo.service"; };
435+ type = types.attrsOf unitOption;
436+ description = ''
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.
443+ '';
444+ };
445+
670446 };
671447
672− stage1AutomountOptions = {
673− imports = [
674− stage1CommonUnitOptions
675− automountOptions
676− ];
448+
449+ pathOptions = commonUnitOptions // {
450+
451+ pathConfig = mkOption {
452+ default = {};
453+ example = { PathChanged = "/some/path"; Unit = "changedpath.service"; };
454+ type = types.attrsOf unitOption;
455+ description = ''
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.
460+ '';
461+ };
462+
677463 };
678464
679− sliceOptions = {
680− options = {
681465
682− sliceConfig = mkOption {
683− default = {};
684− example = { MemoryMax = "2G"; };
685− type = types.attrsOf unitOption;
686− description = ''
687− Each attribute in this set specifies an option in the
688− <literal>[Slice]</literal> section of the unit. See
689− <citerefentry><refentrytitle>systemd.slice</refentrytitle>
690− <manvolnum>5</manvolnum></citerefentry> for details.
691− '';
692− };
466+ mountOptions = commonUnitOptions // {
467+
468+ what = mkOption {
469+ example = "/dev/sda1";
470+ type = types.str;
471+ description = "Absolute path of device node, file or other resource. (Mandatory)";
472+ };
473+
474+ where = mkOption {
475+ example = "/mnt";
476+ type = types.str;
477+ description = ''
478+ Absolute path of a directory of the mount point.
479+ Will be created if it doesn't exist. (Mandatory)
480+ '';
481+ };
482+
483+ type = mkOption {
484+ default = "";
485+ example = "ext4";
486+ type = types.str;
487+ description = "File system type.";
488+ };
489+
490+ options = mkOption {
491+ default = "";
492+ example = "noatime";
493+ type = types.commas;
494+ description = "Options used to mount the file system.";
495+ };
693496
497+ mountConfig = mkOption {
498+ default = {};
499+ example = { DirectoryMode = "0775"; };
500+ type = types.attrsOf unitOption;
501+ description = ''
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.
506+ '';
694507 };
695508 };
696509
697− stage2SliceOptions = {
698− imports = [
699− stage2CommonUnitOptions
700− sliceOptions
701− ];
510+ automountOptions = commonUnitOptions // {
511+
512+ where = mkOption {
513+ example = "/mnt";
514+ type = types.str;
515+ description = ''
516+ Absolute path of a directory of the mount point.
517+ Will be created if it doesn't exist. (Mandatory)
518+ '';
519+ };
520+
521+ automountConfig = mkOption {
522+ default = {};
523+ example = { DirectoryMode = "0775"; };
524+ type = types.attrsOf unitOption;
525+ description = ''
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.
530+ '';
531+ };
702532 };
703533
704− stage1SliceOptions = {
705− imports = [
706− stage1CommonUnitOptions
707− sliceOptions
708− ];
534+ targetOptions = commonUnitOptions;
535+
536+ sliceOptions = commonUnitOptions // {
537+
538+ sliceConfig = mkOption {
539+ default = {};
540+ example = { MemoryMax = "2G"; };
541+ type = types.attrsOf unitOption;
542+ description = ''
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.
547+ '';
548+ };
549+
709550 };
710551
711552}
nixos/lib/test-driver/test_driver/driver.py+1−2
@@ -55,7 +55,6 @@ class Driver:
5555 tmp_dir = get_tmp_dir()
5656
5757 with rootlog.nested("start all VLans"):
58− vlans = list(set(vlans))
5958 self.vlans = [VLan(nr, tmp_dir) for nr in vlans]
6059
6160 def cmd(scripts: List[str]) -> Iterator[NixStartScript]:
@@ -86,7 +85,7 @@ class Driver:
8685
8786 def subtest(self, name: str) -> Iterator[None]:
8887 """Group logs under a given test name"""
89− with rootlog.nested("subtest: " + name):
88+ with rootlog.nested(name):
9089 try:
9190 yield
9291 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
22from contextlib import contextmanager
33from typing import Any, Dict, Iterator
44from queue import Queue, Empty
@@ -81,11 +81,7 @@ class Logger:
8181
8282 @contextmanager
8383 def nested(self, message: str, attributes: Dict[str, str] = {}) -> Iterator[None]:
84− self._eprint(
85− self.maybe_prefix(
86− Style.BRIGHT + Fore.GREEN + message + Style.RESET_ALL, attributes
87− )
88− )
84+ self._eprint(self.maybe_prefix(message, attributes))
8985
9086 self.xml.startElement("nest", attrs={})
9187 self.xml.startElement("head", attributes)
nixos/lib/test-driver/test_driver/machine.py+3−38
@@ -198,7 +198,7 @@ class StartCommand:
198198 ) -> subprocess.Popen:
199199 return subprocess.Popen(
200200 self.cmd(monitor_socket_path, shell_socket_path),
201− stdin=subprocess.PIPE,
201+ stdin=subprocess.DEVNULL,
202202 stdout=subprocess.PIPE,
203203 stderr=subprocess.STDOUT,
204204 shell=True,
@@ -526,17 +526,10 @@ class Machine:
526526 self.run_callbacks()
527527 self.connect()
528528
529− # Always run command with shell opts
530− command = f"set -euo pipefail; {command}"
531−
532− timeout_str = ""
533529 if timeout is not None:
534− timeout_str = f"timeout {timeout}"
535−
536− out_command = (
537− f"{timeout_str} sh -c {shlex.quote(command)} | (base64 --wrap 0; echo)\n"
538− )
530+ command = "timeout {} sh -c {}".format(timeout, shlex.quote(command))
539531
532+ out_command = f"( set -euo pipefail; {command} ) | (base64 --wrap 0; echo)\n"
540533 assert self.shell
541534 self.shell.send(out_command.encode())
542535
@@ -565,28 +558,6 @@ class Machine:
565558 pass_fds=[self.shell.fileno()],
566559 )
567560
568− def console_interact(self) -> None:
569− """Allows you to interact with QEMU's stdin
570−
571− The shell can be exited with Ctrl+D. Note that Ctrl+C is not allowed to be used.
572− QEMU's stdout is read line-wise.
573−
574− Should only be used during test development, not in the production test."""
575− self.log("Terminal is ready (there is no prompt):")
576−
577− assert self.process
578− assert self.process.stdin
579−
580− while True:
581− try:
582− char = sys.stdin.buffer.read(1)
583− except KeyboardInterrupt:
584− break
585− if char == b"": # ctrl+d
586− self.log("Closing connection to the console")
587− break
588− self.send_console(char.decode())
589−
590561 def succeed(self, *commands: str, timeout: Optional[int] = None) -> str:
591562 """Execute each command and check that it succeeds."""
592563 output = ""
@@ -863,12 +834,6 @@ class Machine:
863834 self.send_monitor_command("sendkey {}".format(key))
864835 time.sleep(0.01)
865836
866− def send_console(self, chars: str) -> None:
867− assert self.process
868− assert self.process.stdin
869− self.process.stdin.write(chars.encode())
870− self.process.stdin.flush()
871−
872837 def start(self) -> None:
873838 if self.booted:
874839 return
nixos/lib/testing-python.nix+16−15
@@ -146,28 +146,26 @@ rec {
146146
147147 # Make a full-blown test
148148 makeTest =
149− { machine ? null
150− , nodes ? {}
151− , testScript
149+ { testScript
152150 , enableOCR ? false
153151 , name ? "unnamed"
154152 # Skip linting (mainly intended for faster dev cycles)
155153 , skipLint ? false
156154 , passthru ? {}
157− , meta ? {}
158155 , # For meta.position
159156 pos ? # position used in error messages and for meta.position
160− (if meta.description or null != null
161− then builtins.unsafeGetAttrPos "description" meta
157+ (if t.meta.description or null != null
158+ then builtins.unsafeGetAttrPos "description" t.meta
162159 else builtins.unsafeGetAttrPos "testScript" t)
160+ , ...
163161 } @ t:
164162 let
165− mkNodes = qemu_pkg:
163+ nodes = qemu_pkg:
166164 let
167165 testScript' =
168166 # Call the test script with the computed nodes.
169167 if lib.isFunction testScript
170− then testScript { nodes = mkNodes qemu_pkg; }
168+ then testScript { nodes = nodes qemu_pkg; }
171169 else testScript;
172170
173171 build-vms = import ./build-vms.nix {
@@ -206,31 +204,34 @@ rec {
206204 )];
207205 };
208206 in
209− lib.warnIf (t?machine) "In test `${name}': The `machine' attribute in NixOS tests (pkgs.nixosTest / make-test-pyton.nix / testing-python.nix / makeTest) is deprecated. Please use the equivalent `nodes.machine'."
210207 build-vms.buildVirtualNetwork (
211− nodes // lib.optionalAttrs (machine != null) { inherit machine; }
208+ t.nodes or (if t ? machine then { machine = t.machine; } else { })
212209 );
213210
214211 driver = setupDriverForTest {
215212 inherit testScript enableOCR skipLint passthru;
216213 testName = name;
217214 qemu_pkg = pkgs.qemu_test;
218− nodes = mkNodes pkgs.qemu_test;
215+ nodes = nodes pkgs.qemu_test;
219216 };
220217 driverInteractive = setupDriverForTest {
221218 inherit testScript enableOCR skipLint passthru;
222219 testName = name;
223220 qemu_pkg = pkgs.qemu;
224− nodes = mkNodes pkgs.qemu;
221+ nodes = nodes pkgs.qemu;
225222 interactive = true;
226223 };
227224
228− test = lib.addMetaAttrs meta (runTests { inherit driver pos driverInteractive; });
225+ test =
226+ let
227+ passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
228+ meta = (drv.meta or { }) // t.meta;
229+ };
230+ in passMeta (runTests { inherit driver pos driverInteractive; });
229231
230232 in
231233 test // {
232− inherit test driver driverInteractive;
233− inherit (driver) nodes;
234+ inherit test driver driverInteractive nodes;
234235 };
235236
236237 abortForFunction = functionName: abort ''The ${functionName} function was
nixos/lib/utils.nix−17
@@ -194,25 +194,8 @@ rec {
194194 (( ! $inherit_errexit_enabled )) && shopt -u inherit_errexit
195195 '';
196196
197− /* Remove packages of packagesToRemove from packages, based on their names.
198− Relies on package names and has quadratic complexity so use with caution!
199−
200− Type:
201− removePackagesByName :: [package] -> [package] -> [package]
202−
203− Example:
204− removePackagesByName [ nautilus file-roller ] [ file-roller totem ]
205− => [ nautilus ]
206− */
207− removePackagesByName = packages: packagesToRemove:
208− let
209− namesToRemove = map lib.getName packagesToRemove;
210− in
211− lib.filter (x: !(builtins.elem (lib.getName x) namesToRemove)) packages;
212−
213197 systemdUtils = {
214198 lib = import ./systemd-lib.nix { inherit lib config pkgs; };
215199 unitOptions = import ./systemd-unit-options.nix { inherit lib systemdUtils; };
216− types = import ./systemd-types.nix { inherit lib systemdUtils pkgs; };
217200 };
218201}
nixos/maintainers/scripts/ec2/amazon-image.nix+1−1
@@ -73,7 +73,7 @@ in {
7373 }
7474 '';
7575
76− zfsBuilder = import ../../../lib/make-multi-disk-zfs-image.nix {
76+ zfsBuilder = import ../../../lib/make-zfs-image.nix {
7777 inherit lib config configFile;
7878 inherit (cfg) contents format name;
7979 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;
2727 networking.useDHCP = false;
2828 networking.interfaces.eth0.useDHCP = true;
2929
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
3131 documentation.enable = true;
3232 documentation.nixos.enable = true;
3333 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 ]; }"
2−
3−{ config, lib, pkgs, ... }:
4−let
5− inherit (lib) mkOption types;
6− copyChannel = true;
7− cfg = config.openstackImage;
8− imageBootMode = if config.openstack.efi then "uefi" else "legacy-bios";
9−in
10−{
11− imports = [
12− ../../../modules/virtualisation/openstack-config.nix
13− ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix);
14−
15−
16− options.openstackImage = {
17− name = mkOption {
18− type = types.str;
19− description = "The name of the generated derivation";
20− default = "nixos-openstack-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
21− };
22−
23− sizeMB = mkOption {
24− type = types.int;
25− default = 8192;
26− description = "The size in MB of the image";
27− };
28−
29− format = mkOption {
30− type = types.enum [ "raw" "qcow2" ];
31− default = "qcow2";
32− description = "The image format to output";
33− };
34− };
35−
36− config = {
37− documentation.enable = copyChannel;
38− openstack = {
39− efi = true;
40− zfs = {
41− enable = true;
42− datasets = {
43− "tank/system/root".mount = "/";
44− "tank/system/var".mount = "/var";
45− "tank/local/nix".mount = "/nix";
46− "tank/user/home".mount = "/home";
47− };
48− };
49− };
50−
51− system.build.openstackImage = import ../../../lib/make-single-disk-zfs-image.nix {
52− inherit lib config;
53− inherit (cfg) contents format name;
54− pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
55−
56− configFile = pkgs.writeText "configuration.nix"
57− ''
58− { modulesPath, ... }: {
59− imports = [ "''${modulesPath}/virtualisation/openstack-config.nix" ];
60− openstack.zfs.enable = true;
61− }
62− '';
63−
64− includeChannel = copyChannel;
65−
66− bootSize = 1000;
67−
68− rootSize = cfg.sizeMB;
69− rootPoolProperties = {
70− ashift = 12;
71− autoexpand = "on";
72− };
73−
74− datasets = config.openstack.zfs.datasets;
75−
76− postVM = ''
77− extension=''${rootDiskImage##*.}
78− friendlyName=$out/${cfg.name}
79− rootDisk="$friendlyName.root.$extension"
80− mv "$rootDiskImage" "$rootDisk"
81−
82− mkdir -p $out/nix-support
83− echo "file ${cfg.format} $rootDisk" >> $out/nix-support/hydra-build-products
84−
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" \
91− '{}
92− | .label = $system_label
93− | .boot_mode = $boot_mode
94− | .system = $system
95− | .disks.root.logical_bytes = $root_logical_bytes
96− | .disks.root.file = $root
97− ' > $out/nix-support/image-info.json
98− '';
99− };
100− };
101−}
nixos/maintainers/scripts/openstack/openstack-image.nix+8−9
@@ -1,18 +1,17 @@
11# nix-build '<nixpkgs/nixos>' -A config.system.build.openstackImage --arg configuration "{ imports = [ ./nixos/maintainers/scripts/openstack/openstack-image.nix ]; }"
22
33{ config, lib, pkgs, ... }:
4−let
5− copyChannel = true;
6−in
7−{
8− imports = [
9− ../../../modules/virtualisation/openstack-config.nix
10− ] ++ (lib.optional copyChannel ../../../modules/installer/cd-dvd/channel.nix);
114
12− documentation.enable = copyChannel;
5+with lib;
6+
7+{
8+ imports =
9+ [ ../../../modules/installer/cd-dvd/channel.nix
10+ ../../../modules/virtualisation/openstack-config.nix
11+ ];
1312
1413 system.build.openstackImage = import ../../../lib/make-disk-image.nix {
15− inherit lib config copyChannel;
14+ inherit lib config;
1615 additionalSpace = "1024M";
1716 pkgs = import ../../../.. { inherit (pkgs) system; }; # ensure we use the regular qemu-kvm package
1817 format = "qcow2";
nixos/modules/config/console.nix+9−23
@@ -12,7 +12,7 @@ let
1212
1313 optimizedKeymap = pkgs.runCommand "keymap" {
1414 nativeBuildInputs = [ pkgs.buildPackages.kbd ];
15− LOADKEYS_KEYMAP_PATH = "${consoleEnv pkgs.kbd}/share/keymaps/**";
15+ LOADKEYS_KEYMAP_PATH = "${consoleEnv}/share/keymaps/**";
1616 preferLocalBuild = true;
1717 } ''
1818 loadkeys -b ${optionalString isUnicode "-u"} "${cfg.keyMap}" > $out
@@ -24,9 +24,9 @@ let
2424 FONT=${cfg.font}
2525 '';
2626
27− consoleEnv = kbd: pkgs.buildEnv {
27+ consoleEnv = pkgs.buildEnv {
2828 name = "console-env";
29− paths = [ kbd ] ++ cfg.packages;
29+ paths = [ pkgs.kbd ] ++ cfg.packages;
3030 pathsToLink = [
3131 "/share/consolefonts"
3232 "/share/consoletrans"
@@ -136,9 +136,9 @@ in
136136 # virtual consoles.
137137 environment.etc."vconsole.conf".source = vconsoleConf;
138138 # Provide kbd with additional packages.
139− environment.etc.kbd.source = "${consoleEnv pkgs.kbd}/share";
139+ environment.etc.kbd.source = "${consoleEnv}/share";
140140
141− boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) (mkBefore ''
141+ boot.initrd.preLVMCommands = mkBefore ''
142142 kbd_mode ${if isUnicode then "-u" else "-a"} -C /dev/console
143143 printf "\033%%${if isUnicode then "G" else "@"}" >> /dev/console
144144 loadkmap < ${optimizedKeymap}
@@ -146,26 +146,12 @@ in
146146 ${optionalString cfg.earlySetup ''
147147 setfont -C /dev/console $extraUtils/share/consolefonts/font.psf
148148 ''}
149− '');
150−
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"; };
157− };
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
163− ];
149+ '';
164150
165151 systemd.services.reload-systemd-vconsole-setup =
166152 { description = "Reset console on configuration changes";
167153 wantedBy = [ "multi-user.target" ];
168− restartTriggers = [ vconsoleConf (consoleEnv pkgs.kbd) ];
154+ restartTriggers = [ vconsoleConf consoleEnv ];
169155 reloadIfChanged = true;
170156 serviceConfig =
171157 { RemainAfterExit = true;
@@ -183,13 +169,13 @@ in
183169 ];
184170 })
185171
186− (mkIf (cfg.earlySetup && !config.boot.initrd.systemd.enable) {
172+ (mkIf cfg.earlySetup {
187173 boot.initrd.extraUtilsCommands = ''
188174 mkdir -p $out/share/consolefonts
189175 ${if substring 0 1 cfg.font == "/" then ''
190176 font="${cfg.font}"
191177 '' else ''
192− font="$(echo ${consoleEnv pkgs.kbd}/share/consolefonts/${cfg.font}.*)"
178+ font="$(echo ${consoleEnv}/share/consolefonts/${cfg.font}.*)"
193179 ''}
194180 if [[ $font == *.gz ]]; then
195181 gzip -cd $font > $out/share/consolefonts/font.psf
nixos/modules/config/nsswitch.nix+4−7
@@ -95,14 +95,11 @@ with lib;
9595 config = {
9696 assertions = [
9797 {
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 [].
98101 assertion = config.system.nssModules.path != "" -> config.services.nscd.enable;
99− message = ''
100− Loading NSS modules from system.nssModules (${config.system.nssModules.path}),
101− requires services.nscd.enable being set to true.
102−
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.
105− '';
102+ message = "Loading NSS modules from system.nssModules (${config.system.nssModules.path}), requires services.nscd.enable being set to true.";
106103 }
107104 ];
108105
nixos/modules/config/resolvconf.nix+4−2
@@ -47,8 +47,8 @@ in
4747
4848 enable = mkOption {
4949 type = types.bool;
50− default = !(config.environment.etc ? "resolv.conf");
51− defaultText = literalExpression ''!(config.environment.etc ? "resolv.conf")'';
50+ default = false;
51+ internal = true;
5252 description = ''
5353 DNS configuration is managed by resolvconf.
5454 '';
@@ -110,6 +110,8 @@ in
110110
111111 config = mkMerge [
112112 {
113+ networking.resolvconf.enable = !(config.environment.etc ? "resolv.conf");
114+
113115 environment.etc."resolvconf.conf".text =
114116 if !cfg.enable then
115117 # Force-stop any attempts to use resolvconf
nixos/modules/config/terminfo.nix+1−25
@@ -1,33 +1,9 @@
11# This module manages the terminfo database
22# and its integration in the system.
3−{ config, lib, pkgs, ... }:
4−
5−with lib;
6−
3+{ config, ... }:
74{
8−
9− options.environment.enableAllTerminfo = with lib; mkOption {
10− default = false;
11− type = types.bool;
12− description = ''
13− Whether to install all terminfo outputs
14− '';
15− };
16−
175 config = {
186
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; [
21− alacritty
22− foot
23− kitty
24− mtm
25− rxvt-unicode-unwrapped
26− rxvt-unicode-unwrapped-emoji
27− termite
28− wezterm
29− ]));
30−
317 environment.pathsToLink = [
328 "/share/terminfo"
339 ];
nixos/modules/hardware/all-firmware.nix+3−7
@@ -27,8 +27,7 @@ in {
2727 };
2828
2929 hardware.enableRedistributableFirmware = mkOption {
30− default = config.hardware.enableAllFirmware;
31− defaultText = lib.literalExpression "config.hardware.enableAllFirmware";
30+ default = false;
3231 type = types.bool;
3332 description = ''
3433 Turn on this option if you want to enable all the firmware with a license allowing redistribution.
@@ -72,7 +71,7 @@ in {
7271 })
7372 (mkIf cfg.enableAllFirmware {
7473 assertions = [{
75− assertion = !cfg.enableAllFirmware || config.nixpkgs.config.allowUnfree;
74+ assertion = !cfg.enableAllFirmware || (config.nixpkgs.config.allowUnfree or false);
7675 message = ''
7776 the list of hardware.enableAllFirmware contains non-redistributable licensed firmware files.
7877 This requires nixpkgs.config.allowUnfree to be true.
@@ -85,10 +84,7 @@ in {
8584 b43Firmware_6_30_163_46
8685 b43FirmwareCutter
8786 xow_dongle-firmware
88− ] ++ optionals pkgs.stdenv.hostPlatform.isx86 [
89− facetimehd-calibration
90− facetimehd-firmware
91− ];
87+ ] ++ optional pkgs.stdenv.hostPlatform.isx86 facetimehd-firmware;
9288 })
9389 (mkIf cfg.wirelessRegulatoryDatabase {
9490 hardware.firmware = [ pkgs.wireless-regdb ];
nixos/modules/hardware/raid/hpsa.nix+1−4
@@ -8,10 +8,7 @@ let
88 version = "2.40-13.0";
99
1010 src = pkgs.fetchurl {
11− urls = [
12− "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"
14− ];
11+ url = "https://downloads.linux.hpe.com/SDR/downloads/MCP/Ubuntu/pool/non-free/${pname}-${version}_amd64.deb";
1512 sha256 = "11w7fwk93lmfw0yya4jpjwdmgjimqxx6412sqa166g1pz4jil4sw";
1613 };
1714
nixos/modules/hardware/video/amdgpu-pro.nix+1−2
@@ -51,10 +51,9 @@ in
5151 (isYes "KALLSYMS_ALL")
5252 ];
5353
54− boot.initrd.extraUdevRulesCommands = mkIf (!config.boot.initrd.systemd.enable) ''
54+ boot.initrd.extraUdevRulesCommands = ''
5555 cp -v ${package}/etc/udev/rules.d/*.rules $out/
5656 '';
57− boot.initrd.services.udev.packages = [ package ];
5857
5958 environment.systemPackages =
6059 [ package.vulkan ] ++
nixos/modules/hardware/video/nvidia.nix+7−9
@@ -24,7 +24,6 @@ let
2424 primeEnabled = syncCfg.enable || offloadCfg.enable;
2525 nvidiaPersistencedEnabled = cfg.nvidiaPersistenced;
2626 nvidiaSettings = cfg.nvidiaSettings;
27− busIDType = types.strMatching "([[:print:]]+\:[0-9]{1,3}\:[0-9]{1,2}\:[0-9])?";
2827in
2928
3029{
@@ -69,7 +68,7 @@ in
6968 };
7069
7170 hardware.nvidia.prime.nvidiaBusId = mkOption {
72− type = busIDType;
71+ type = types.str;
7372 default = "";
7473 example = "PCI:1:0:0";
7574 description = ''
@@ -79,7 +78,7 @@ in
7978 };
8079
8180 hardware.nvidia.prime.intelBusId = mkOption {
82− type = busIDType;
81+ type = types.str;
8382 default = "";
8483 example = "PCI:0:2:0";
8584 description = ''
@@ -89,7 +88,7 @@ in
8988 };
9089
9190 hardware.nvidia.prime.amdgpuBusId = mkOption {
92− type = busIDType;
91+ type = types.str;
9392 default = "";
9493 example = "PCI:4:0:0";
9594 description = ''
@@ -361,12 +360,11 @@ in
361360 services.udev.extraRules =
362361 ''
363362 # 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'"
365− KERNEL=="nvidia_modeset", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidia-modeset c 195 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}"
363+ KERNEL=="nvidia", RUN+="${pkgs.runtimeShell} -c 'mknod -m 666 /dev/nvidiactl c $$(grep nvidia-frontend /proc/devices | cut -d \ -f 1) 255'"
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'"
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'"
368366 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'"
370368 '' + optionalString cfg.powerManagement.finegrained ''
371369 # Remove NVIDIA USB xHCI Host Controller devices, if present
372370 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
1414
1515 options.hardware.facetimehd.enable = mkEnableOption "facetimehd kernel module";
1616
17− options.hardware.facetimehd.withCalibration = mkOption {
18− default = false;
19− example = true;
20− type = types.bool;
21− description = ''
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"/>
25− for details.
26− '';
27− };
28−
2917 config = mkIf cfg.enable {
3018
19+ assertions = singleton {
20+ assertion = versionAtLeast kernelPackages.kernel.version "3.19";
21+ message = "facetimehd is not supported for kernels older than 3.19";
22+ };
23+
3124 boot.kernelModules = [ "facetimehd" ];
3225
3326 boot.blacklistedKernelModules = [ "bdc_pci" ];
3427
3528 boot.extraModulePackages = [ kernelPackages.facetimehd ];
3629
37− hardware.firmware = [ pkgs.facetimehd-firmware ]
38− ++ optional cfg.withCalibration pkgs.facetimehd-calibration;
30+ hardware.firmware = [ pkgs.facetimehd-firmware ];
3931
4032 # unload module during suspend/hibernate as it crashes the whole system
4133 powerManagement.powerDownCommands = ''
nixos/modules/i18n/input-method/fcitx5.nix+11−20
@@ -5,9 +5,7 @@ with lib;
55let
66 im = config.i18n.inputMethod;
77 cfg = im.fcitx5;
8− addons = cfg.addons ++ optional cfg.enableRimeData pkgs.rime-data;
9− fcitx5Package = pkgs.fcitx5-with-addons.override { inherit addons; };
10− whetherRimeDataDir = any (p: p.pname == "fcitx5-rime") cfg.addons;
8+ fcitx5Package = pkgs.fcitx5-with-addons.override { inherit (cfg) addons; };
119in {
1210 options = {
1311 i18n.inputMethod.fcitx5 = {
@@ -19,29 +17,22 @@ in {
1917 Enabled Fcitx5 addons.
2018 '';
2119 };
22−
23− enableRimeData = mkEnableOption "default rime-data with fcitx5-rime";
2420 };
2521 };
2622
2723 config = mkIf (im.enabled == "fcitx5") {
2824 i18n.inputMethod.package = fcitx5Package;
2925
30− environment = mkMerge [{
31− variables = {
32− GTK_IM_MODULE = "fcitx";
33− QT_IM_MODULE = "fcitx";
34− XMODIFIERS = "@im=fcitx";
35− };
36− }
37− (mkIf whetherRimeDataDir {
38− pathsToLink = [
39− "/share/rime-data"
40− ];
26+ environment.variables = {
27+ GTK_IM_MODULE = "fcitx";
28+ QT_IM_MODULE = "fcitx";
29+ XMODIFIERS = "@im=fcitx";
30+ };
4131
42− variables = {
43− NIX_RIME_DATA_DIR = "/run/current-system/sw/share/rime-data";
44− };
45− })];
32+ systemd.user.services.fcitx5-daemon = {
33+ enable = true;
34+ script = "${fcitx5Package}/bin/fcitx5";
35+ wantedBy = [ "graphical-session.target" ];
36+ };
4637 };
4738}
nixos/modules/installer/cd-dvd/channel.nix+1−2
@@ -39,8 +39,7 @@ in
3939 echo "unpacking the NixOS/Nixpkgs sources..."
4040 mkdir -p /nix/var/nix/profiles/per-user/root
4141 ${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 \
43− ${optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root
42+ -i ${channelSources} --quiet --option build-use-substitutes false
4443 mkdir -m 0700 -p /root/.nix-defexpr
4544 ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
4645 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;
3535 # Enable sound in graphical iso's.
3636 hardware.pulseaudio.enable = true;
3737
38− # Spice guest additions
39− services.spice-vdagentd.enable = true;
40−
41− # Enable plymouth
42− boot.plymouth.enable = true;
43−
44− environment.defaultPackages = with pkgs; [
38+ environment.systemPackages = [
4539 # Include gparted for partitioning disks.
46− gparted
40+ pkgs.gparted
4741
4842 # Include some editors.
49− vim
50− nano
43+ pkgs.vim
44+ pkgs.bvi # binary editor
45+ pkgs.joe
5146
5247 # Include some version control tools.
53− git
54− rsync
48+ pkgs.git
5549
5650 # Firefox for reading the manual.
57− firefox
51+ pkgs.firefox
5852
59− glxinfo
53+ pkgs.glxinfo
6054 ];
6155
6256}
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.
2−
3−{ pkgs, ... }:
4−
5−{
6− imports = [ ./installation-cd-graphical-calamares.nix ];
7−
8− isoImage.edition = "gnome";
9−
10− services.xserver.desktopManager.gnome = {
11− # Add Firefox and other tools useful for installation to the launcher
12− favoriteAppsOverride = ''
13− [org.gnome.shell]
14− favorite-apps=[ 'firefox.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop', 'io.calamares.calamares.desktop' ]
15− '';
16−
17− # Override GNOME defaults to disable GNOME tour and disable suspend
18− extraGSettingsOverrides = ''
19− [org.gnome.shell]
20− welcome-dialog-last-shown-version='9999999999'
21−
22− [org.gnome.settings-daemon.plugins.power]
23− sleep-inactive-ac-type='nothing'
24− sleep-inactive-battery-type='nothing'
25− '';
26−
27− extraGSettingsOverridePackages = [ pkgs.gnome.gnome-settings-daemon ];
28−
29− enable = true;
30− };
31−
32− # Theme calamares with GNOME theme
33− qt5 = {
34− enable = true;
35− platformTheme = "gnome";
36− };
37−
38− # Fix scaling for calamares on wayland
39− environment.variables = {
40− QT_QPA_PLATFORM = "$([[ $XDG_SESSION_TYPE = \"wayland\" ]] && echo \"wayland\")";
41− };
42−
43− services.xserver.displayManager = {
44− gdm = {
45− enable = true;
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.
49− # See:
50− # * https://github.com/NixOS/nixpkgs/pull/63790
51− # * https://gitlab.gnome.org/GNOME/gnome-control-center/issues/22
52− autoSuspend = false;
53− };
54− autoLogin = {
55− enable = true;
56− user = "nixos";
57− };
58− };
59−}
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
2−# Plasma 5.
3−
4−{ pkgs, ... }:
5−
6−{
7− imports = [ ./installation-cd-graphical-calamares.nix ];
8−
9− isoImage.edition = "plasma5";
10−
11− services.xserver = {
12− desktopManager.plasma5 = {
13− enable = true;
14− };
15−
16− # Automatically login as nixos.
17− displayManager = {
18− sddm.enable = true;
19− autoLogin = {
20− enable = true;
21− user = "nixos";
22− };
23− };
24− };
25−
26− environment.systemPackages = with pkgs; [
27− # Graphical text editor
28− kate
29− ];
30−
31− system.activationScripts.installerDesktop = let
32−
33− # Comes from documentation.nix when xserver and nixos.enable are true.
34− manualDesktopFile = "/run/current-system/sw/share/applications/nixos-manual.desktop";
35−
36− homeDir = "/home/nixos/";
37− desktopDir = homeDir + "Desktop/";
38−
39− in ''
40− mkdir -p ${desktopDir}
41− chown nixos ${homeDir} ${desktopDir}
42−
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"}
47− '';
48−
49−}
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
2−# installation CD.
3−
4−{ pkgs, ... }:
5−let
6− calamares-nixos-autostart = pkgs.makeAutostartItem { name = "io.calamares.calamares"; package = pkgs.calamares-nixos; };
7−in
8−{
9− imports = [ ./installation-cd-graphical-base.nix ];
10−
11− environment.systemPackages = with pkgs; [
12− # Calamares for graphical installation
13− libsForQt5.kpmcore
14− calamares-nixos
15− calamares-nixos-autostart
16− calamares-nixos-extensions
17− # Needed for calamares QML module packagechooserq
18− libsForQt5.full
19− ];
20−}
nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix+3−1
@@ -1,6 +1,8 @@
11# This module defines a NixOS installation CD that contains GNOME.
22
3−{ ... }:
3+{ lib, ... }:
4+
5+with lib;
46
57{
68 imports = [ ./installation-cd-graphical-base.nix ];
nixos/modules/installer/cd-dvd/installation-cd-graphical-plasma5.nix+3−1
@@ -1,7 +1,9 @@
11# This module defines a NixOS installation CD that contains X11 and
22# Plasma 5.
33
4−{ pkgs, ... }:
4+{ config, lib, pkgs, ... }:
5+
6+with lib;
57
68{
79 imports = [ ./installation-cd-graphical-base.nix ];
nixos/modules/installer/cd-dvd/iso-image.nix+22−33
@@ -91,9 +91,29 @@ let
9191 SERIAL 0 115200
9292 TIMEOUT ${builtins.toString syslinuxTimeout}
9393 UI vesamenu.c32
94+ MENU TITLE NixOS
9495 MENU BACKGROUND /isolinux/background.png
95−
96− ${config.isoImage.syslinuxTheme}
96+ MENU RESOLUTION 800 600
97+ MENU CLEAR
98+ MENU ROWS 6
99+ MENU CMDLINEROW -4
100+ MENU TIMEOUTROW -3
101+ MENU TABMSGROW -2
102+ MENU HELPMSGROW -1
103+ MENU HELPMSGENDROW -1
104+ MENU MARGIN 0
105+
106+ # FG:AARRGGBB BG:AARRGGBB shadow
107+ MENU COLOR BORDER 30;44 #00000000 #00000000 none
108+ MENU COLOR SCREEN 37;40 #FF000000 #00E2E8FF none
109+ MENU COLOR TABMSG 31;40 #80000000 #00000000 none
110+ MENU COLOR TIMEOUT 1;37;40 #FF000000 #00000000 none
111+ MENU COLOR TIMEOUT_MSG 37;40 #FF000000 #00000000 none
112+ MENU COLOR CMDMARK 1;36;40 #FF000000 #00000000 none
113+ MENU COLOR CMDLINE 37;40 #FF000000 #00000000 none
114+ MENU COLOR TITLE 1;36;44 #00000000 #00000000 none
115+ MENU COLOR UNSEL 37;44 #FF000000 #00000000 none
116+ MENU COLOR SEL 7;37;40 #FFFFFFFF #FF5277C3 std
97117
98118 DEFAULT boot
99119
@@ -581,37 +601,6 @@ in
581601 '';
582602 };
583603
584− isoImage.syslinuxTheme = mkOption {
585− default = ''
586− MENU TITLE NixOS
587− MENU RESOLUTION 800 600
588− MENU CLEAR
589− MENU ROWS 6
590− MENU CMDLINEROW -4
591− MENU TIMEOUTROW -3
592− MENU TABMSGROW -2
593− MENU HELPMSGROW -1
594− MENU HELPMSGENDROW -1
595− MENU MARGIN 0
596−
597− # FG:AARRGGBB BG:AARRGGBB shadow
598− MENU COLOR BORDER 30;44 #00000000 #00000000 none
599− MENU COLOR SCREEN 37;40 #FF000000 #00E2E8FF none
600− MENU COLOR TABMSG 31;40 #80000000 #00000000 none
601− MENU COLOR TIMEOUT 1;37;40 #FF000000 #00000000 none
602− MENU COLOR TIMEOUT_MSG 37;40 #FF000000 #00000000 none
603− MENU COLOR CMDMARK 1;36;40 #FF000000 #00000000 none
604− MENU COLOR CMDLINE 37;40 #FF000000 #00000000 none
605− MENU COLOR TITLE 1;36;44 #00000000 #00000000 none
606− MENU COLOR UNSEL 37;44 #FF000000 #00000000 none
607− MENU COLOR SEL 7;37;40 #FFFFFFFF #FF5277C3 std
608− '';
609− type = types.str;
610− description = ''
611− The syslinux theme used for BIOS boot.
612− '';
613− };
614−
615604 isoImage.appendToMenuLabel = mkOption {
616605 default = " Installer";
617606 example = " Live System";
nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix+3−3
@@ -87,19 +87,19 @@ in
8787 boot.initrd.availableKernelModules =
8888 [ "mvsdio" "reiserfs" "ext3" "ums-cypress" "rtc_mv" "ext4" ];
8989
90− boot.postBootCommands = lib.mkIf (!boot.initrd.systemd.enable)
90+ boot.postBootCommands =
9191 ''
9292 mkdir -p /mnt
9393
9494 cp ${dummyConfiguration} /etc/nixos/configuration.nix
9595 '';
9696
97− boot.initrd.extraUtilsCommands = lib.mkIf (!boot.initrd.systemd.enable)
97+ boot.initrd.extraUtilsCommands =
9898 ''
9999 copy_bin_and_libs ${pkgs.util-linux}/sbin/hwclock
100100 '';
101101
102− boot.initrd.postDeviceCommands = lib.mkIf (!boot.initrd.systemd.enable)
102+ boot.initrd.postDeviceCommands =
103103 ''
104104 hwclock -s
105105 '';
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.
4−
5−# It's meant to be scp'ed to a machine with working ssh and kexec binary
6−# installed.
7−
8−# This is useful for (cloud) providers where you can't boot a custom image, but
9−# get some Debian or Ubuntu installation.
10−
11−{ pkgs
12−, modulesPath
13−, config
14−, ...
15−}:
16−{
17− imports = [
18− (modulesPath + "/installer/netboot/netboot-minimal.nix")
19− ];
20−
21− config = {
22− system.build.kexecBoot =
23− let
24− kexecScript = pkgs.writeScript "kexec-boot" ''
25− #!/usr/bin/env bash
26− if ! kexec -v >/dev/null 2>&1; then
27− echo "kexec not found: please install kexec-tools" 2>&1
28− exit 1
29− fi
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}"
34− kexec -e
35− ''; in
36− pkgs.linkFarm "kexec-tree" [
37− {
38− name = "initrd.gz";
39− path = "${config.system.build.netbootRamdisk}/initrd";
40− }
41− {
42− name = "bzImage";
43− path = "${config.system.build.kernel}/${config.system.boot.loader.kernelFile}";
44− }
45− {
46− name = "kexec-boot";
47− path = kexecScript;
48− }
49− ];
50− };
51−}
nixos/modules/installer/sd-card/sd-image-aarch64.nix−9
@@ -39,12 +39,6 @@
3939 # Supported in newer board revisions
4040 arm_boost=1
4141
42− [cm4]
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.
46− otg_mode=1
47−
4842 [all]
4943 # Boot in 64-bit mode.
5044 arm_64bit=1
@@ -71,9 +65,6 @@
7165 cp ${pkgs.ubootRaspberryPi4_64bit}/u-boot.bin firmware/u-boot-rpi4.bin
7266 cp ${pkgs.raspberrypi-armstubs}/armstub8-gic.bin firmware/armstub8-gic.bin
7367 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/
7768 '';
7869 populateRootCommands = ''
7970 mkdir -p ./files/boot
nixos/modules/installer/tools/nix-fallback-paths.nix+5−5
@@ -1,7 +1,7 @@
11{
2− x86_64-linux = "/nix/store/yx36yzxpw1hn4fz8iyf1rfyd56jg3yf4-nix-2.8.0";
3− i686-linux = "/nix/store/c0hg806zvwg800qbszzj8ff4a224kjgf-nix-2.8.0";
4− aarch64-linux = "/nix/store/wic2832ll53q392r2wks4xr2nrk7p8p5-nix-2.8.0";
5− x86_64-darwin = "/nix/store/5yqdvnkmkrhl36xh0qy31pymdphjimdd-nix-2.8.0";
6− aarch64-darwin = "/nix/store/izc9592szrnpv8n86hr88bhpyc9g6b4s-nix-2.8.0";
2+ x86_64-linux = "/nix/store/0n2wfvi1i3fg97cjc54wslvk0804y0sn-nix-2.7.0";
3+ i686-linux = "/nix/store/4p27c1k9z99pli6x8cxfph20yfyzn9nh-nix-2.7.0";
4+ aarch64-linux = "/nix/store/r9yr8ijsb0gi9r7y92y3yzyld59yp0kj-nix-2.7.0";
5+ x86_64-darwin = "/nix/store/hyfj5imsd0c4amlcjpf8l6w4q2draaj3-nix-2.7.0";
6+ aarch64-darwin = "/nix/store/9l96qllhbb6xrsjaai76dn74ap7rq92n-nix-2.7.0";
77}
nixos/modules/installer/tools/nixos-generate-config.pl+1−8
@@ -51,9 +51,7 @@ for (my $n = 0; $n < scalar @ARGV; $n++) {
5151 $n++;
5252 $rootDir = $ARGV[$n];
5353 die "$0: ‘--root’ requires an argument\n" unless defined $rootDir;
54− die "$0: no need to specify `/` with `--root`, it is the default\n" if $rootDir eq "/";
5554 $rootDir =~ s/\/*$//; # remove trailing slashes
56− $rootDir = File::Spec->rel2abs($rootDir); # resolve absolute path
5755 }
5856 elsif ($arg eq "--force") {
5957 $force = 1;
@@ -618,12 +616,7 @@ EOF
618616if ($showHardwareConfig) {
619617 print STDOUT $hwConfig;
620618} else {
621− if ($outDir eq "/etc/nixos") {
622− $outDir = "$rootDir$outDir";
623− } else {
624− $outDir = File::Spec->rel2abs($outDir);
625− $outDir =~ s/\/*$//; # remove trailing slashes
626− }
619+ $outDir = "$rootDir$outDir";
627620
628621 my $fn = "$outDir/hardware-configuration.nix";
629622 print STDERR "writing $fn...\n";
nixos/modules/installer/tools/tools.nix+1−6
@@ -117,7 +117,7 @@ in
117117 '';
118118 };
119119
120− config = lib.mkIf (config.nix.enable && !config.system.disableInstallerTools) {
120+ config = lib.mkIf (!config.system.disableInstallerTools) {
121121
122122 system.nixos-generate-config.configuration = mkDefault ''
123123 # Edit this configuration file to define what should be installed on
@@ -206,11 +206,6 @@ in
206206 # Or disable the firewall altogether.
207207 # networking.firewall.enable = false;
208208
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;
213−
214209 # This value determines the NixOS release from which the default
215210 # settings for stateful data, like file locations and database versions
216211 # 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
6464 filter =
6565 builtins.filterSource
6666 (n: t:
67− cleanSourceFilter n t
68− && (t == "directory" -> baseNameOf n != "tests")
67+ (t == "directory" -> baseNameOf n != "tests")
6968 && (t == "file" -> hasSuffix ".nix" n)
7069 );
7170 in
nixos/modules/misc/locate.nix+1−1
@@ -27,7 +27,7 @@ in
2727
2828 locate = mkOption {
2929 type = package;
30− default = pkgs.findutils.locate;
30+ default = pkgs.findutils;
3131 defaultText = literalExpression "pkgs.findutils";
3232 example = literalExpression "pkgs.mlocate";
3333 description = ''
nixos/modules/misc/version.nix+14−26
@@ -15,26 +15,6 @@ let
1515 mapAttrsToList (n: v: ''${n}=${escapeIfNeccessary (toString v)}'') attrs
1616 );
1717
18− osReleaseContents = {
19− NAME = "NixOS";
20− ID = "nixos";
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";
31− };
32−
33− initrdReleaseContents = osReleaseContents // {
34− PRETTY_NAME = "${osReleaseContents.PRETTY_NAME} (Initrd)";
35− };
36− initrdRelease = pkgs.writeText "initrd-release" (attrsToText initrdReleaseContents);
37−
3818in
3919{
4020 imports = [
@@ -139,12 +119,20 @@ in
139119 DISTRIB_DESCRIPTION = "NixOS ${cfg.release} (${cfg.codeName})";
140120 };
141121
142− "os-release".text = attrsToText osReleaseContents;
143− };
144−
145− boot.initrd.systemd.contents = {
146− "/etc/os-release".source = initrdRelease;
147− "/etc/initrd-release".source = initrdRelease;
122+ "os-release".text = attrsToText {
123+ NAME = "NixOS";
124+ ID = "nixos";
125+ VERSION = "${cfg.release} (${cfg.codeName})";
126+ VERSION_CODENAME = toLower cfg.codeName;
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";
135+ };
148136 };
149137 };
150138
nixos/modules/module-list.nix+3−23
@@ -118,8 +118,6 @@
118118 ./misc/version.nix
119119 ./misc/wordlist.nix
120120 ./misc/nixops-autoluks.nix
121− ./programs/_1password.nix
122− ./programs/_1password-gui.nix
123121 ./programs/adb.nix
124122 ./programs/appgate-sdp.nix
125123 ./programs/atop.nix
@@ -172,7 +170,6 @@
172170 ./programs/java.nix
173171 ./programs/k40-whisperer.nix
174172 ./programs/kclock.nix
175− ./programs/k3b.nix
176173 ./programs/kdeconnect.nix
177174 ./programs/kbdlight.nix
178175 ./programs/less.nix
@@ -186,9 +183,7 @@
186183 ./programs/nbd.nix
187184 ./programs/nix-ld.nix
188185 ./programs/neovim.nix
189− ./programs/nethoscope.nix
190186 ./programs/nm-applet.nix
191− ./programs/nncp.nix
192187 ./programs/npm.nix
193188 ./programs/noisetorch.nix
194189 ./programs/oblogout.nix
@@ -206,6 +201,7 @@
206201 ./programs/spacefm.nix
207202 ./programs/singularity.nix
208203 ./programs/ssh.nix
204+ ./programs/ssmtp.nix
209205 ./programs/sysdig.nix
210206 ./programs/systemtap.nix
211207 ./programs/starship.nix
@@ -410,7 +406,6 @@
410406 ./services/display-managers/greetd.nix
411407 ./services/editors/emacs.nix
412408 ./services/editors/infinoted.nix
413− ./services/editors/haste.nix
414409 ./services/finance/odoo.nix
415410 ./services/games/asf.nix
416411 ./services/games/crossfire-server.nix
@@ -460,7 +455,6 @@
460455 ./services/hardware/udisks2.nix
461456 ./services/hardware/upower.nix
462457 ./services/hardware/usbmuxd.nix
463− ./services/hardware/usbrelayd.nix
464458 ./services/hardware/thermald.nix
465459 ./services/hardware/undervolt.nix
466460 ./services/hardware/vdr.nix
@@ -599,7 +593,7 @@
599593 ./services/misc/osrm.nix
600594 ./services/misc/owncast.nix
601595 ./services/misc/packagekit.nix
602− ./services/misc/paperless.nix
596+ ./services/misc/paperless-ng.nix
603597 ./services/misc/parsoid.nix
604598 ./services/misc/plex.nix
605599 ./services/misc/plikd.nix
@@ -663,7 +657,6 @@
663657 ./services/monitoring/longview.nix
664658 ./services/monitoring/mackerel-agent.nix
665659 ./services/monitoring/metricbeat.nix
666− ./services/monitoring/mimir.nix
667660 ./services/monitoring/monit.nix
668661 ./services/monitoring/munin.nix
669662 ./services/monitoring/nagios.nix
@@ -737,14 +730,12 @@
737730 ./services/networking/blocky.nix
738731 ./services/networking/charybdis.nix
739732 ./services/networking/cjdns.nix
740− ./services/networking/cloudflare-dyndns.nix
741733 ./services/networking/cntlm.nix
742734 ./services/networking/connman.nix
743735 ./services/networking/consul.nix
744736 ./services/networking/coredns.nix
745737 ./services/networking/corerad.nix
746738 ./services/networking/coturn.nix
747− ./services/networking/create_ap.nix
748739 ./services/networking/croc.nix
749740 ./services/networking/dante.nix
750741 ./services/networking/ddclient.nix
@@ -759,7 +750,6 @@
759750 ./services/networking/ncdns.nix
760751 ./services/networking/nomad.nix
761752 ./services/networking/ejabberd.nix
762− ./services/networking/envoy.nix
763753 ./services/networking/epmd.nix
764754 ./services/networking/ergo.nix
765755 ./services/networking/ergochat.nix
@@ -787,7 +777,6 @@
787777 ./services/networking/headscale.nix
788778 ./services/networking/hostapd.nix
789779 ./services/networking/htpdate.nix
790− ./services/networking/https-dns-proxy.nix
791780 ./services/networking/hylafax/default.nix
792781 ./services/networking/i2pd.nix
793782 ./services/networking/i2p.nix
@@ -822,7 +811,6 @@
822811 ./services/networking/mosquitto.nix
823812 ./services/networking/monero.nix
824813 ./services/networking/morty.nix
825− ./services/networking/mozillavpn.nix
826814 ./services/networking/miredo.nix
827815 ./services/networking/mstpd.nix
828816 ./services/networking/mtprotoproxy.nix
@@ -858,7 +846,7 @@
858846 ./services/networking/ofono.nix
859847 ./services/networking/oidentd.nix
860848 ./services/networking/onedrive.nix
861− ./services/networking/openconnect.nix
849+ ./services/networking/openfire.nix
862850 ./services/networking/openvpn.nix
863851 ./services/networking/ostinato.nix
864852 ./services/networking/owamp.nix
@@ -985,7 +973,6 @@
985973 ./services/security/shibboleth-sp.nix
986974 ./services/security/sks.nix
987975 ./services/security/sshguard.nix
988− ./services/security/sslmate-agent.nix
989976 ./services/security/step-ca.nix
990977 ./services/security/tor.nix
991978 ./services/security/torify.nix
@@ -1057,10 +1044,8 @@
10571044 ./services/web-apps/mediawiki.nix
10581045 ./services/web-apps/miniflux.nix
10591046 ./services/web-apps/moodle.nix
1060− ./services/web-apps/netbox.nix
10611047 ./services/web-apps/nextcloud.nix
10621048 ./services/web-apps/nexus.nix
1063− ./services/web-apps/nifi.nix
10641049 ./services/web-apps/node-red.nix
10651050 ./services/web-apps/pict-rs.nix
10661051 ./services/web-apps/peertube.nix
@@ -1185,12 +1170,9 @@
11851170 ./system/boot/stage-2.nix
11861171 ./system/boot/systemd.nix
11871172 ./system/boot/systemd/coredump.nix
1188− ./system/boot/systemd/initrd-secrets.nix
1189− ./system/boot/systemd/initrd.nix
11901173 ./system/boot/systemd/journald.nix
11911174 ./system/boot/systemd/logind.nix
11921175 ./system/boot/systemd/nspawn.nix
1193− ./system/boot/systemd/shutdown.nix
11941176 ./system/boot/systemd/tmpfiles.nix
11951177 ./system/boot/systemd/user.nix
11961178 ./system/boot/timesyncd.nix
@@ -1246,7 +1228,6 @@
12461228 ./virtualisation/amazon-options.nix
12471229 ./virtualisation/hyperv-guest.nix
12481230 ./virtualisation/kvmgt.nix
1249− ./virtualisation/openstack-options.nix
12501231 ./virtualisation/openvswitch.nix
12511232 ./virtualisation/parallels-guest.nix
12521233 ./virtualisation/podman/default.nix
@@ -1256,7 +1237,6 @@
12561237 ./virtualisation/virtualbox-guest.nix
12571238 ./virtualisation/virtualbox-host.nix
12581239 ./virtualisation/vmware-guest.nix
1259− ./virtualisation/vmware-host.nix
12601240 ./virtualisation/waydroid.nix
12611241 ./virtualisation/xen-dom0.nix
12621242 ./virtualisation/xe-guest-utilities.nix
nixos/modules/profiles/all-hardware.nix−3
@@ -40,9 +40,6 @@ in
4040 # SD cards.
4141 "sdhci_pci"
4242
43− # NVMe drives
44− "nvme"
45−
4643 # Firewire support. Not tested.
4744 "ohci1394" "sbp2"
4845
nixos/modules/profiles/installation-device.nix−4
@@ -99,10 +99,6 @@ with lib;
9999 stdenvNoCC # for runCommand
100100 busybox
101101 jq # for closureInfo
102− # For boot.initrd.systemd
103− makeInitrdNGTool
104− systemdStage1
105− systemdStage1Network
106102 ];
107103
108104 # 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 @@
11# Common configuration for virtual machines running under QEMU (using
22# virtio).
33
4−{ config, lib, ... }:
4+{ ... }:
55
66{
77 boot.initrd.availableKernelModules = [ "virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "9p" "9pnet_virtio" ];
88 boot.initrd.kernelModules = [ "virtio_balloon" "virtio_console" "virtio_rng" ];
99
10− boot.initrd.postDeviceCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
10+ boot.initrd.postDeviceCommands =
1111 ''
1212 # Set the system time from the hardware clock to work around a
1313 # bug in qemu-kvm > 1.5.2 (where the VM clock is initialised
nixos/modules/programs/_1password-gui.nixdeleted−68
@@ -1,68 +0,0 @@
1−{ config, pkgs, lib, ... }:
2−
3−with lib;
4−
5−let
6−
7− cfg = config.programs._1password-gui;
8−
9−in
10−{
11− options = {
12− programs._1password-gui = {
13− enable = mkEnableOption "the 1Password GUI application";
14−
15− gid = mkOption {
16− type = types.addCheck types.int (x: x >= 1000);
17− example = literalExpression "5000";
18− description = ''
19− The gid to assign to the onepassword group, which is needed for browser integration.
20− It must be 1000 or greater.
21− '';
22− };
23−
24− polkitPolicyOwners = mkOption {
25− type = types.listOf types.str;
26− default = [ ];
27− example = literalExpression ''["user1" "user2" "user3"]'';
28− description = ''
29− A list of users who should be able to integrate 1Password with polkit-based authentication mechanisms.
30− '';
31− };
32−
33− package = mkPackageOption pkgs "1Password GUI" {
34− default = [ "_1password-gui" ];
35− };
36− };
37− };
38−
39− config =
40− let
41− package = cfg.package.override {
42− polkitPolicyOwners = cfg.polkitPolicyOwners;
43− };
44− in
45− mkIf cfg.enable {
46− environment.systemPackages = [ package ];
47− users.groups.onepassword.gid = cfg.gid;
48−
49− security.wrappers = {
50− "1Password-BrowserSupport" = {
51− source = "${package}/share/1password/1Password-BrowserSupport";
52− owner = "root";
53− group = "onepassword";
54− setuid = false;
55− setgid = true;
56− };
57−
58− "1Password-KeyringHelper" = {
59− source = "${package}/share/1password/1Password-KeyringHelper";
60− owner = "root";
61− group = "onepassword";
62− setuid = true;
63− setgid = true;
64− };
65− };
66−
67− };
68−}
nixos/modules/programs/_1password.nixdeleted−44
@@ -1,44 +0,0 @@
1−{ config, pkgs, lib, ... }:
2−
3−with lib;
4−
5−let
6−
7− cfg = config.programs._1password;
8−
9−in
10−{
11− options = {
12− programs._1password = {
13− enable = mkEnableOption "the 1Password CLI tool";
14−
15− gid = mkOption {
16− type = types.addCheck types.int (x: x >= 1000);
17− example = literalExpression "5001";
18− description = ''
19− The gid to assign to the onepassword-cli group, which is needed for integration with the 1Password GUI.
20− It must be 1000 or greater.
21− '';
22− };
23−
24− package = mkPackageOption pkgs "1Password CLI" {
25− default = [ "_1password" ];
26− };
27− };
28− };
29−
30− config = mkIf cfg.enable {
31− environment.systemPackages = [ cfg.package ];
32− users.groups.onepassword-cli.gid = cfg.gid;
33−
34− security.wrappers = {
35− "op" = {
36− source = "${cfg.package}/bin/op";
37− owner = "root";
38− group = "onepassword-cli";
39− setuid = false;
40− setgid = true;
41− };
42− };
43− };
44−}
nixos/modules/programs/adb.nix+2−1
@@ -23,7 +23,8 @@ with lib;
2323 ###### implementation
2424 config = mkIf config.programs.adb.enable {
2525 services.udev.packages = [ pkgs.android-udev-rules ];
26− environment.systemPackages = [ pkgs.android-tools ];
26+ # Give platform-tools lower priority so mke2fs+friends are taken from other packages first
27+ environment.systemPackages = [ (lowPrio pkgs.androidenv.androidPkgs_9_0.platform-tools) ];
2728 users.groups.adbusers = {};
2829 };
2930}
nixos/modules/programs/chromium.nix−3
@@ -108,8 +108,5 @@ in
108108 # for google-chrome https://www.chromium.org/administrators/linux-quick-start
109109 environment.etc."opt/chrome/policies/managed/default.json".text = builtins.toJSON defaultProfile;
110110 environment.etc."opt/chrome/policies/managed/extra.json".text = builtins.toJSON cfg.extraOpts;
111− # for brave
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;
114111 };
115112}
nixos/modules/programs/k3b.nixdeleted−52
@@ -1,52 +0,0 @@
1−{ config, pkgs, lib, ... }:
2−
3−with lib;
4−
5−{
6− # interface
7− options.programs.k3b = {
8− enable = mkOption {
9− type = types.bool;
10− default = false;
11− description = ''
12− Whether to enable k3b, the KDE disk burning application.
13−
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.
20− '';
21− };
22− };
23−
24− # implementation
25− config = mkIf config.programs.k3b.enable {
26−
27− environment.systemPackages = with pkgs; [
28− k3b
29− dvdplusrwtools
30− cdrdao
31− cdrkit
32− ];
33−
34− security.wrappers = {
35− cdrdao = {
36− setuid = true;
37− owner = "root";
38− group = "cdrom";
39− permissions = "u+wrx,g+x";
40− source = "${pkgs.cdrdao}/bin/cdrdao";
41− };
42− cdrecord = {
43− setuid = true;
44− owner = "root";
45− group = "cdrom";
46− permissions = "u+wrx,g+x";
47− source = "${pkgs.cdrkit}/bin/cdrecord";
48− };
49− };
50−
51− };
52−}
nixos/modules/programs/mininet.nix+2−2
@@ -23,8 +23,8 @@ let
2323 ln -s ${pyEnv}/bin/mn $out/bin/mn
2424
2525 # mn errors out without a telnet binary
26− # pkgs.inetutils brings an undesired ifconfig into PATH see #43105
27− ln -s ${pkgs.inetutils}/bin/telnet $out/bin/telnet
26+ # pkgs.telnet brings an undesired ifconfig into PATH see #43105
27+ ln -s ${pkgs.telnet}/bin/telnet $out/bin/telnet
2828 '';
2929in
3030{
nixos/modules/programs/nethoscope.nixdeleted−30
@@ -1,30 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−
5−let cfg = config.programs.nethoscope;
6−in
7−{
8− meta.maintainers = with maintainers; [ _0x4A6F ];
9−
10− options = {
11− programs.nethoscope = {
12− enable = mkOption {
13− type = types.bool;
14− default = false;
15− description = ''
16− Whether to add nethoscope to the global environment and configure a
17− setcap wrapper for it.
18− '';
19− };
20− };
21− };
22−
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";
28− };
29− };
30−}
nixos/modules/programs/nncp.nixdeleted−101
@@ -1,101 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−let
5− nncpCfgFile = "/run/nncp.hjson";
6− programCfg = config.programs.nncp;
7− settingsFormat = pkgs.formats.json { };
8− jsonCfgFile = settingsFormat.generate "nncp.json" programCfg.settings;
9− pkg = programCfg.package;
10−in {
11− options.programs.nncp = {
12−
13− enable =
14− mkEnableOption "NNCP (Node to Node copy) utilities and configuration";
15−
16− group = mkOption {
17− type = types.str;
18− default = "uucp";
19− description = ''
20− The group under which NNCP files shall be owned.
21− Any member of this group may access the secret keys
22− of this NNCP node.
23− '';
24− };
25−
26− package = mkOption {
27− type = types.package;
28− default = pkgs.nncp;
29− defaultText = literalExpression "pkgs.nncp";
30− description = "The NNCP package to use system-wide.";
31− };
32−
33− secrets = mkOption {
34− type = with types; listOf str;
35− example = [ "/run/keys/nncp.hjson" ];
36− description = ''
37− A list of paths to NNCP configuration files that should not be
38− in the Nix store. These files are layered on top of the values at
39− <xref linkend="opt-programs.nncp.settings"/>.
40− '';
41− };
42−
43− settings = mkOption {
44− type = settingsFormat.type;
45− description = ''
46− NNCP configuration, see
47− <link xlink:href="http://www.nncpgo.org/Configuration.html"/>.
48− At runtime these settings will be overlayed by the contents of
49− <xref linkend="opt-programs.nncp.secrets"/> into the file
50− <literal>${nncpCfgFile}</literal>. Node keypairs go in
51− <literal>secrets</literal>, do not specify them in
52− <literal>settings</literal> as they will be leaked into
53− <literal>/nix/store</literal>!
54− '';
55− default = { };
56− };
57−
58− };
59−
60− config = mkIf programCfg.enable {
61−
62− environment = {
63− systemPackages = [ pkg ];
64− etc."nncp.hjson".source = nncpCfgFile;
65− };
66−
67− programs.nncp.settings = {
68− spool = mkDefault "/var/spool/nncp";
69− log = mkDefault "/var/spool/nncp/log";
70− };
71−
72− systemd.tmpfiles.rules = [
73− "d ${programCfg.settings.spool} 0770 root ${programCfg.group}"
74− "f ${programCfg.settings.log} 0770 root ${programCfg.group}"
75− ];
76−
77− systemd.services.nncp-config = {
78− path = [ pkg ];
79− description = "Generate NNCP configuration";
80− wantedBy = [ "basic.target" ];
81− serviceConfig.Type = "oneshot";
82− script = ''
83− umask u=rw
84− nncpCfgDir=$(mktemp --directory nncp.XXX)
85− for f in ${jsonCfgFile} ${toString config.programs.nncp.secrets}; do
86− tmpdir=$(mktemp --directory nncp.XXX)
87− nncp-cfgdir -cfg $f -dump $tmpdir
88− find $tmpdir -size 1c -delete
89− cp -a $tmpdir/* $nncpCfgDir/
90− rm -rf $tmpdir
91− done
92− nncp-cfgdir -load $nncpCfgDir > ${nncpCfgFile}
93− rm -rf $nncpCfgDir
94− chgrp ${programCfg.group} ${nncpCfgFile}
95− chmod g+r ${nncpCfgFile}
96− '';
97− };
98− };
99−
100− meta.maintainers = with lib.maintainers; [ ehmry ];
101−}
nixos/modules/programs/ssh.nix+7−18
@@ -157,13 +157,9 @@ in
157157 default = [ name ] ++ config.extraHostNames;
158158 defaultText = literalExpression "[ ${name} ] ++ config.${options.extraHostNames}";
159159 description = ''
160+ DEPRECATED, please use <literal>extraHostNames</literal>.
160161 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− 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.
162+ the host's ssh service.
167163 '';
168164 };
169165 extraHostNames = mkOption {
@@ -171,8 +167,7 @@ in
171167 default = [];
172168 description = ''
173169 A list of additional host names and/or IP numbers used for
174− accessing the host's ssh service. This list is ignored if
175− <literal>hostNames</literal> is set explicitly.
170+ accessing the host's ssh service.
176171 '';
177172 };
178173 publicKey = mkOption {
@@ -203,12 +198,7 @@ in
203198 };
204199 }));
205200 description = ''
206− The set of system-wide known SSH hosts. To make simple setups more
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.
201+ The set of system-wide known SSH hosts.
212202 '';
213203 example = literalExpression ''
214204 {
@@ -217,10 +207,6 @@ in
217207 publicKeyFile = ./pubkeys/myhost_ssh_host_dsa_key.pub;
218208 };
219209 "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;
223− };
224210 }
225211 '';
226212 };
@@ -293,6 +279,9 @@ in
293279 message = "knownHost ${name} must contain either a publicKey or publicKeyFile";
294280 });
295281
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);
284+
296285 # SSH configuration. Slight duplication of the sshd_config
297286 # generation in the sshd service.
298287 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.
5+
6+{ config, lib, pkgs, ... }:
7+
8+with lib;
9+
10+let
11+ cfg = config.services.ssmtp;
12+
13+in
14+{
15+
16+ imports = [
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" ])
26+
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")
29+ ];
30+
31+ options = {
32+
33+ services.ssmtp = {
34+
35+ enable = mkOption {
36+ type = types.bool;
37+ default = false;
38+ description = ''
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
44+ set the option
45+ <option>services.ssmtp.hostName</option> to the
46+ host name of your preferred mail server.
47+ '';
48+ };
49+
50+ settings = mkOption {
51+ type = with types; attrsOf (oneOf [ bool str ]);
52+ default = {};
53+ description = ''
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.
56+ '';
57+ example = literalExpression ''
58+ {
59+ Debug = true;
60+ FromLineOverride = false;
61+ }
62+ '';
63+ };
64+
65+ hostName = mkOption {
66+ type = types.str;
67+ example = "mail.example.org";
68+ description = ''
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.
72+ '';
73+ };
74+
75+ root = mkOption {
76+ type = types.str;
77+ default = "";
78+ example = "root@example.org";
79+ description = ''
80+ The e-mail to which mail for users with UID < 1000 is forwarded.
81+ '';
82+ };
83+
84+ domain = mkOption {
85+ type = types.str;
86+ default = "";
87+ example = "example.org";
88+ description = ''
89+ The domain from which mail will appear to be sent.
90+ '';
91+ };
92+
93+ useTLS = mkOption {
94+ type = types.bool;
95+ default = false;
96+ description = ''
97+ Whether TLS should be used to connect to the default mail
98+ server.
99+ '';
100+ };
101+
102+ useSTARTTLS = mkOption {
103+ type = types.bool;
104+ default = false;
105+ description = ''
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.)
109+ '';
110+ };
111+
112+ authUser = mkOption {
113+ type = types.str;
114+ default = "";
115+ example = "foo@example.org";
116+ description = ''
117+ Username used for SMTP auth. Leave blank to disable.
118+ '';
119+ };
120+
121+ authPassFile = mkOption {
122+ type = types.nullOr types.str;
123+ default = null;
124+ example = "/run/keys/ssmtp-authpass";
125+ description = ''
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.
130+ '';
131+ };
132+
133+ setSendmail = mkOption {
134+ type = types.bool;
135+ default = true;
136+ description = "Whether to set the system sendmail to ssmtp's.";
137+ };
138+
139+ };
140+
141+ };
142+
143+
144+ config = mkIf cfg.enable {
145+
146+ assertions = [
147+ {
148+ assertion = cfg.useSTARTTLS -> cfg.useTLS;
149+ message = "services.ssmtp.useSTARTTLS has no effect without services.ssmtp.useTLS";
150+ }
151+ ];
152+
153+ services.ssmtp.settings = mkMerge [
154+ ({
155+ MailHub = cfg.hostName;
156+ FromLineOverride = mkDefault true;
157+ UseTLS = cfg.useTLS;
158+ UseSTARTTLS = cfg.useSTARTTLS;
159+ })
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; })
164+ ];
165+
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
173+ ;
174+ } "=";
175+ } cfg.settings;
176+
177+ environment.systemPackages = [pkgs.ssmtp];
178+
179+ services.mail.sendmailSetuidWrapper = mkIf cfg.setSendmail {
180+ program = "sendmail";
181+ source = "${pkgs.ssmtp}/bin/sendmail";
182+ setuid = false;
183+ setgid = false;
184+ owner = "root";
185+ group = "root";
186+ };
187+
188+ };
189+
190+}
nixos/modules/programs/thefuck.nix+6−7
@@ -6,12 +6,9 @@ let
66 prg = config.programs;
77 cfg = prg.thefuck;
88
9− bashAndZshInitScript = ''
9+ initScript = ''
1010 eval $(${pkgs.thefuck}/bin/thefuck --alias ${cfg.alias})
1111 '';
12− fishInitScript = ''
13− ${pkgs.thefuck}/bin/thefuck --alias ${cfg.alias} | source
14− '';
1512in
1613 {
1714 options = {
@@ -33,8 +30,10 @@ in
3330 config = mkIf cfg.enable {
3431 environment.systemPackages = with pkgs; [ thefuck ];
3532
36− programs.bash.interactiveShellInit = bashAndZshInitScript;
37− programs.zsh.interactiveShellInit = mkIf prg.zsh.enable bashAndZshInitScript;
38− programs.fish.interactiveShellInit = mkIf prg.fish.enable fishInitScript;
33+ programs.bash.interactiveShellInit = initScript;
34+ programs.zsh.interactiveShellInit = mkIf prg.zsh.enable initScript;
35+ programs.fish.interactiveShellInit = mkIf prg.fish.enable ''
36+ ${pkgs.thefuck}/bin/thefuck --alias | source
37+ '';
3938 };
4039 }
nixos/modules/rename.nix−6
@@ -69,11 +69,6 @@ with lib;
6969 '')
7070 (mkRemovedOptionModule [ "services" "quagga" ] "the corresponding package has been removed from nixpkgs")
7171 (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
75− used instead.
76− '')
7772 (mkRemovedOptionModule [ "services" "venus" ] "The corresponding package was removed from nixpkgs.")
7873 (mkRemovedOptionModule [ "services" "wakeonlan"] "This module was removed in favor of enabling it with networking.interfaces.<name>.wakeOnLan")
7974 (mkRemovedOptionModule [ "services" "winstone" ] "The corresponding package was removed from nixpkgs.")
@@ -96,7 +91,6 @@ with lib;
9691 (mkRemovedOptionModule [ "services" "shellinabox" ] "The corresponding package was removed from nixpkgs.")
9792 (mkRemovedOptionModule [ "services" "gogoclient" ] "The corresponding package was removed from nixpkgs.")
9893 (mkRemovedOptionModule [ "services" "virtuoso" ] "The corresponding package was removed from nixpkgs.")
99− (mkRemovedOptionModule [ "services" "openfire" ] "The corresponding package was removed from nixpkgs.")
10094
10195 # Do NOT add any option renames here, see top of the file
10296 ];
nixos/modules/security/pam.nix+3−113
@@ -61,19 +61,6 @@ let
6161 '';
6262 };
6363
64− usshAuth = mkOption {
65− default = false;
66− type = types.bool;
67− description = ''
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.
71−
72− Note that the <option>security.pam.ussh.enable</option> must also be
73− set for this option to take effect.
74− '';
75− };
76−
7764 yubicoAuth = mkOption {
7865 default = config.security.pam.yubico.enable;
7966 defaultText = literalExpression "config.security.pam.yubico.enable";
@@ -488,11 +475,8 @@ let
488475 optionalString cfg.usbAuth ''
489476 auth sufficient ${pkgs.pam_usb}/lib/security/pam_usb.so
490477 '' +
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}"}
493− '') +
494478 (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}
496480 '') +
497481 (let yubi = config.security.pam.yubico; in optionalString cfg.yubicoAuth ''
498482 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
610594 session optional ${pkgs.ecryptfs}/lib/security/pam_ecryptfs.so
611595 '' +
612596 optionalString cfg.pamMount ''
613− session [success=1 default=ignore] ${pkgs.pam}/lib/security/pam_succeed_if.so service = systemd-user quiet
614597 session optional ${pkgs.pam_mount}/lib/security/pam_mount.so disable_interactive
615598 '' +
616599 optionalString use_ldap ''
@@ -943,96 +926,6 @@ in
943926 };
944927 };
945928
946− security.pam.ussh = {
947− enable = mkOption {
948− default = false;
949− type = types.bool;
950− description = ''
951− Enables Uber's USSH PAM (<literal>pam-ussh</literal>) module.
952−
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
955− instead.
956−
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>).
959−
960− More information can be found <link
961− xlink:href="https://github.com/uber/pam-ussh">here</link>.
962− '';
963− };
964−
965− caFile = mkOption {
966− default = null;
967− type = with types; nullOr path;
968− description = ''
969− By default <literal>pam-ussh</literal> reads the trusted user CA keys
970− from <filename>/etc/ssh/trusted_user_ca</filename>.
971−
972− This should be set the same as your <literal>TrustedUserCAKeys</literal>
973− option for sshd.
974− '';
975− };
976−
977− authorizedPrincipals = mkOption {
978− default = null;
979− type = with types; nullOr commas;
980− description = ''
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
983− authorized.
984−
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.
988−
989− Mutually exclusive with <literal>authorizedPrincipalsFile</literal>.
990− '';
991− };
992−
993− authorizedPrincipalsFile = mkOption {
994− default = null;
995− type = with types; nullOr path;
996− description = ''
997− Path to a list of principals; if the user presents a certificate with
998− one of these principals, then they will be authorized.
999−
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.
1003−
1004− Mutually exclusive with <literal>authorizedPrincipals</literal>.
1005− '';
1006− };
1007−
1008− group = mkOption {
1009− default = null;
1010− type = with types; nullOr str;
1011− description = ''
1012− If set, then the authenticating user must be a member of this group
1013− to use this module.
1014− '';
1015− };
1016−
1017− control = mkOption {
1018− default = "sufficient";
1019− type = types.enum [ "required" "requisite" "sufficient" "optional" ];
1020− description = ''
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,
1024− use "sufficient".
1025−
1026− Read
1027− <citerefentry>
1028− <refentrytitle>pam.conf</refentrytitle>
1029− <manvolnum>5</manvolnum>
1030− </citerefentry>
1031− for better understanding of this option.
1032− '';
1033− };
1034− };
1035−
1036929 security.pam.yubico = {
1037930 enable = mkOption {
1038931 default = false;
@@ -1131,7 +1024,7 @@ in
11311024 ++ optional config.services.sssd.enable pkgs.sssd
11321025 ++ optionals config.krb5.enable [pam_krb5 pam_ccreds]
11331026 ++ 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 ]
11351028 ++ optionals config.security.pam.p11.enable [ pkgs.pam_p11 ]
11361029 ++ optionals config.security.pam.u2f.enable [ pkgs.pam_u2f ];
11371030
@@ -1217,11 +1110,8 @@ in
12171110 optionalString (isEnabled (cfg: cfg.usbAuth)) ''
12181111 mr ${pkgs.pam_usb}/lib/security/pam_usb.so,
12191112 '' +
1220− optionalString (isEnabled (cfg: cfg.usshAuth)) ''
1221− mr ${pkgs.pam_ussh}/lib/security/pam_ussh.so,
1222− '' +
12231113 optionalString (isEnabled (cfg: cfg.oathAuth)) ''
1224− "mr ${pkgs.oath-toolkit}/lib/security/pam_oath.so,
1114+ "mr ${pkgs.oathToolkit}/lib/security/pam_oath.so,
12251115 '' +
12261116 optionalString (isEnabled (cfg: cfg.yubicoAuth)) ''
12271117 mr ${pkgs.yubico-pam}/lib/security/pam_yubico.so,
nixos/modules/security/pam_mount.nix+6−78
@@ -5,14 +5,6 @@ with lib;
55let
66 cfg = config.security.pam.mount;
77
8− oflRequired = cfg.logoutHup || cfg.logoutTerm || cfg.logoutKill;
9−
10− fake_ofl = pkgs.writeShellScriptBin "fake_ofl" ''
11− SIGNAL=$1
12− MNTPT=$2
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
14− '';
15−
168 anyPamMount = any (attrByPath ["pamMount"] false) (attrValues config.security.pam.services);
179in
1810
@@ -59,71 +51,6 @@ in
5951 You can define volume-specific options in the volume definitions.
6052 '';
6153 };
62−
63− debugLevel = mkOption {
64− type = types.int;
65− default = 0;
66− example = 1;
67− description = ''
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" />.
72− '';
73− };
74−
75− logoutWait = mkOption {
76− type = types.int;
77− default = 0;
78− description = ''
79− Amount of microseconds to wait until killing remaining processes after
80− final logout.
81− For more information, visit <link
82− xlink:href="http://pam-mount.sourceforge.net/pam_mount.conf.5.html" />.
83− '';
84− };
85−
86− logoutHup = mkOption {
87− type = types.bool;
88− default = false;
89− description = ''
90− Kill remaining processes after logout by sending a SIGHUP.
91− '';
92− };
93−
94− logoutTerm = mkOption {
95− type = types.bool;
96− default = false;
97− description = ''
98− Kill remaining processes after logout by sending a SIGTERM.
99− '';
100− };
101−
102− logoutKill = mkOption {
103− type = types.bool;
104− default = false;
105− description = ''
106− Kill remaining processes after logout by sending a SIGKILL.
107− '';
108− };
109−
110− createMountPoints = mkOption {
111− type = types.bool;
112− default = true;
113− description = ''
114− Create mountpoints for volumes if they do not exist.
115− '';
116− };
117−
118− removeCreatedMountPoints = mkOption {
119− type = types.bool;
120− default = true;
121− description = ''
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.
125− '';
126− };
12754 };
12855
12956 };
@@ -150,20 +77,21 @@ in
15077 <!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
15178 <!-- auto generated from Nixos: modules/config/users-groups.nix -->
15279 <pam_mount>
153− <debug enable="${toString cfg.debugLevel}" />
80+ <debug enable="0" />
81+
15482 <!-- 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" />
15684 <!-- set PATH variable for pam_mount module -->
15785 <path>${makeBinPath ([ pkgs.util-linux ] ++ cfg.additionalSearchPaths)}</path>
15886 <!-- 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" />
88+
16089 <!-- specify the binaries to be called -->
16190 <fusemount>${pkgs.fuse}/bin/mount.fuse %(VOLUME) %(MNTPT) -o ${concatStringsSep "," (cfg.fuseMountOptions ++ [ "%(OPTIONS)" ])}</fusemount>
162− <fuseumount>${pkgs.fuse}/bin/fusermount -u %(MNTPT)</fuseumount>
16391 <cryptmount>${pkgs.pam_mount}/bin/mount.crypt %(VOLUME) %(MNTPT)</cryptmount>
16492 <cryptumount>${pkgs.pam_mount}/bin/umount.crypt %(MNTPT)</cryptumount>
16593 <pmvarrun>${pkgs.pam_mount}/bin/pmvarrun -u %(USER) -o %(OPERATION)</pmvarrun>
166− ${optionalString oflRequired "<ofl>${fake_ofl}/bin/fake_ofl %(SIGNAL) %(MNTPT)</ofl>"}
94+
16795 ${concatStrings (map userVolumeEntry (attrValues extraUserVolumes))}
16896 ${concatStringsSep "\n" cfg.extraVolumes}
16997 </pam_mount>
nixos/modules/security/sudo.nix+1−1
@@ -245,7 +245,7 @@ in
245245
246246 environment.systemPackages = [ sudo ];
247247
248− security.pam.services.sudo = { sshAgentAuth = true; usshAuth = true; };
248+ security.pam.services.sudo = { sshAgentAuth = true; };
249249
250250 environment.etc.sudoers =
251251 { source =
nixos/modules/services/audio/snapserver.nix+7−15
@@ -1,4 +1,4 @@
1−{ config, options, lib, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
@@ -101,8 +101,6 @@ in {
101101
102102 openFirewall = mkOption {
103103 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.
106104 default = true;
107105 description = ''
108106 Whether to automatically open the specified ports in the firewall.
@@ -275,16 +273,10 @@ in {
275273
276274 config = mkIf cfg.enable {
277275
278− warnings =
279− # 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 ''
281− services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
282− '' 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.
287− '';
276+ # https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85
277+ warnings = filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then ''
278+ services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
279+ '' else "") cfg.streams);
288280
289281 systemd.services.snapserver = {
290282 after = [ "network.target" ];
@@ -312,8 +304,8 @@ in {
312304
313305 networking.firewall.allowedTCPPorts =
314306 optionals cfg.openFirewall [ cfg.port ]
315− ++ optional (cfg.openFirewall && cfg.tcp.enable) cfg.tcp.port
316− ++ optional (cfg.openFirewall && cfg.http.enable) cfg.http.port;
307+ ++ optional cfg.tcp.enable cfg.tcp.port
308+ ++ optional cfg.http.enable cfg.http.port;
317309 };
318310
319311 meta = {
nixos/modules/services/backup/zrepl.nix−3
@@ -38,9 +38,6 @@ in
3838 environment.etc."zrepl/zrepl.yml".source = configFile;
3939
4040 systemd.packages = [ pkgs.zrepl ];
41−
42− # Note that pkgs.zrepl copies and adapts the upstream systemd unit, and
43− # the fields defined here only override certain fields from that unit.
4441 systemd.services.zrepl = {
4542 requires = [ "local-fs.target" ];
4643 wantedBy = [ "zfs.target" ];
nixos/modules/services/continuous-integration/buildbot/master.nix+2−2
@@ -64,7 +64,7 @@ in {
6464 description = "Factory Steps";
6565 default = [];
6666 example = [
67− "steps.Git(repourl='https://github.com/buildbot/pyflakes.git', mode='incremental')"
67+ "steps.Git(repourl='git://github.com/buildbot/pyflakes.git', mode='incremental')"
6868 "steps.ShellCommand(command=['trial', 'pyflakes'])"
6969 ];
7070 };
@@ -74,7 +74,7 @@ in {
7474 description = "List of Change Sources.";
7575 default = [];
7676 example = [
77− "changes.GitPoller('https://github.com/buildbot/pyflakes.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)"
77+ "changes.GitPoller('git://github.com/buildbot/pyflakes.git', workdir='gitpoller-workdir', branch='master', pollinterval=300)"
7878 ];
7979 };
8080
nixos/modules/services/continuous-integration/github-runner.nix−10
@@ -299,16 +299,6 @@ in
299299 RestrictRealtime = true;
300300 RestrictSUIDSGID = true;
301301 UMask = "0066";
302− ProtectProc = "invisible";
303− ProcSubset = "pid";
304− SystemCallFilter = [
305− "~@debug"
306− "~@mount"
307− "~@privileged"
308− "~@cpu-emulation"
309− "~@obsolete"
310− ];
311− RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" "AF_NETLINK" ];
312302
313303 # Needs network access
314304 PrivateNetwork = false;
nixos/modules/services/continuous-integration/gitlab-runner.nix+2−9
@@ -36,12 +36,12 @@ let
3636
3737 # register new services
3838 ${concatStringsSep "\n" (mapAttrsToList (name: service: ''
39− if echo "$NEW_SERVICES" | grep -xq "${name}"; then
39+ if echo "$NEW_SERVICES" | grep -xq ${name}; then
4040 bash -c ${escapeShellArg (concatStringsSep " \\\n " ([
4141 "set -a && source ${service.registrationConfigFile} &&"
4242 "gitlab-runner register"
4343 "--non-interactive"
44− (if service.description != null then "--description \"${service.description}\"" else "--name '${name}'")
44+ "--name ${name}"
4545 "--executor ${service.executor}"
4646 "--limit ${toString service.limit}"
4747 "--request-concurrency ${toString service.requestConcurrency}"
@@ -365,13 +365,6 @@ in
365365 with <literal>RUNNER_ENV</literal> variable set.
366366 '';
367367 };
368− description = mkOption {
369− type = types.nullOr types.str;
370− default = null;
371− description = ''
372− Name/description of the runner.
373− '';
374− };
375368 executor = mkOption {
376369 type = types.str;
377370 default = "docker";
nixos/modules/services/continuous-integration/jenkins/slave.nix+1−15
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, ... }:
1+{ config, lib, ... }:
22with lib;
33let
44 cfg = config.services.jenkinsSlave;
@@ -46,15 +46,6 @@ in {
4646 this is the home of the "jenkins" user.
4747 '';
4848 };
49−
50− javaPackage = mkOption {
51− default = pkgs.jdk;
52− defaultText = literalExpression "pkgs.jdk";
53− description = ''
54− Java package to install.
55− '';
56− type = types.package;
57− };
5849 };
5950 };
6051
@@ -73,10 +64,5 @@ in {
7364 uid = config.ids.uids.jenkins;
7465 };
7566 };
76−
77− programs.java = {
78− enable = true;
79− package = cfg.javaPackage;
80− };
8167 };
8268}
nixos/modules/services/databases/cockroachdb.nix+29−37
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
@@ -6,44 +6,46 @@ let
66 cfg = config.services.cockroachdb;
77 crdb = cfg.package;
88
9− startupCommand = utils.escapeSystemdExecArgs
10− ([
11− # Basic startup
12− "${crdb}/bin/cockroach"
13− "start"
9+ escape = builtins.replaceStrings ["%"] ["%%"];
10+ ifNotNull = v: s: optionalString (v != null) s;
11+
12+ startupCommand = lib.concatStringsSep " "
13+ [ # Basic startup
14+ "${crdb}/bin/cockroach start"
1415 "--logtostderr"
1516 "--store=/var/lib/cockroachdb"
17+ (ifNotNull cfg.locality "--locality='${cfg.locality}'")
1618
1719 # WebUI settings
18− "--http-addr=${cfg.http.address}:${toString cfg.http.port}"
20+ "--http-addr='${cfg.http.address}:${toString cfg.http.port}'"
1921
2022 # Cluster listen address
21− "--listen-addr=${cfg.listen.address}:${toString cfg.listen.port}"
23+ "--listen-addr='${cfg.listen.address}:${toString cfg.listen.port}'"
24+
25+ # Cluster configuration
26+ (ifNotNull cfg.join "--join=${cfg.join}")
2227
23− # Cache and memory settings.
24− "--cache=${cfg.cache}"
25− "--max-sql-memory=${cfg.maxSqlMemory}"
28+ # Cache and memory settings. Must be escaped.
29+ "--cache='${escape cfg.cache}'"
30+ "--max-sql-memory='${escape cfg.maxSqlMemory}'"
2631
2732 # Certificate/security settings.
2833 (if cfg.insecure then "--insecure" else "--certs-dir=${cfg.certsDir}")
29− ]
30− ++ lib.optional (cfg.join != null) "--join=${cfg.join}"
31− ++ lib.optional (cfg.locality != null) "--locality=${cfg.locality}"
32− ++ cfg.extraArgs);
33−
34− addressOption = descr: defaultPort: {
35− address = mkOption {
36− type = types.str;
37− default = "localhost";
38− description = "Address to bind to for ${descr}";
39− };
34+ ];
35+
36+ addressOption = descr: defaultPort: {
37+ address = mkOption {
38+ type = types.str;
39+ default = "localhost";
40+ description = "Address to bind to for ${descr}";
41+ };
4042
41− port = mkOption {
42− type = types.port;
43− default = defaultPort;
44− description = "Port to bind to for ${descr}";
43+ port = mkOption {
44+ type = types.port;
45+ default = defaultPort;
46+ description = "Port to bind to for ${descr}";
47+ };
4548 };
46− };
4749in
4850
4951{
@@ -157,16 +159,6 @@ in
157159 only contain open source features and open source code).
158160 '';
159161 };
160−
161− extraArgs = mkOption {
162− type = types.listOf types.str;
163− default = [];
164− example = [ "--advertise-addr" "[fe80::f6f2:::]" ];
165− description = ''
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"/>
168− '';
169− };
170162 };
171163 };
172164
nixos/modules/services/databases/couchdb.nix−6
@@ -193,11 +193,6 @@ in {
193193
194194 preStart = ''
195195 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
200− fi
201196 '';
202197
203198 environment = {
@@ -209,7 +204,6 @@ in {
209204 ERL_FLAGS= ''-couch_ini ${cfg.package}/etc/default.ini ${configFile} ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} ${cfg.configFile}'';
210205 # 5. the vm.args file
211206 COUCHDB_ARGS_FILE=''${cfg.argsFile}'';
212− HOME =''${cfg.databaseDir}'';
213207 };
214208
215209 serviceConfig = {
nixos/modules/services/desktops/pipewire/daemon/pipewire-pulse.conf.json+8−9
@@ -29,7 +29,14 @@
2929 },
3030 {
3131 "name": "libpipewire-module-protocol-pulse",
32− "args": {}
32+ "args": {
33+ "server.address": [
34+ "unix:native"
35+ ],
36+ "vm.overrides": {
37+ "pulse.min.quantum": "1024/48000"
38+ }
39+ }
3340 }
3441 ],
3542 "context.exec": [
@@ -39,14 +46,6 @@
3946 }
4047 ],
4148 "stream.properties": {},
42− "pulse.properties": {
43− "server.address": [
44− "unix:native"
45− ],
46− "vm.overrides": {
47− "pulse.min.quantum": "1024/48000"
48− }
49− },
5049 "pulse.rules": [
5150 {
5251 "matches": [
nixos/modules/services/desktops/pipewire/pipewire-media-session.nix+4−9
@@ -58,7 +58,7 @@ in {
5858 Configuration for the media session core. For details see
5959 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/media-session.conf
6060 '';
61− default = defaults.media-session;
61+ default = {};
6262 };
6363
6464 alsa-monitor = mkOption {
@@ -67,7 +67,7 @@ in {
6767 Configuration for the alsa monitor. For details see
6868 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/alsa-monitor.conf
6969 '';
70− default = defaults.alsa-monitor;
70+ default = {};
7171 };
7272
7373 bluez-monitor = mkOption {
@@ -76,7 +76,7 @@ in {
7676 Configuration for the bluez5 monitor. For details see
7777 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/bluez-monitor.conf
7878 '';
79− default = defaults.bluez-monitor;
79+ default = {};
8080 };
8181
8282 v4l2-monitor = mkOption {
@@ -85,7 +85,7 @@ in {
8585 Configuration for the V4L2 monitor. For details see
8686 https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/v4l2-monitor.conf
8787 '';
88− default = defaults.v4l2-monitor;
88+ default = {};
8989 };
9090 };
9191 };
@@ -110,11 +110,6 @@ in {
110110 source = json.generate "v4l2-monitor.conf" configs.v4l2-monitor;
111111 };
112112
113− environment.etc."pipewire/media-session.d/with-audio" =
114− mkIf config.services.pipewire.audio.enable {
115− text = "";
116− };
117−
118113 environment.etc."pipewire/media-session.d/with-alsa" =
119114 mkIf config.services.pipewire.alsa.enable {
120115 text = "";
nixos/modules/services/desktops/pipewire/pipewire.nix+2−17
@@ -116,16 +116,6 @@ in {
116116 };
117117 };
118118
119− audio = {
120− enable = lib.mkOption {
121− type = lib.types.bool;
122− # this is for backwards compatibility
123− default = cfg.alsa.enable || cfg.jack.enable || cfg.pulse.enable;
124− defaultText = lib.literalExpression "config.services.pipewire.alsa.enable || config.services.pipewire.jack.enable || config.services.pipewire.pulse.enable";
125− description = "Whether to use PipeWire as the primary sound server";
126− };
127− };
128−
129119 alsa = {
130120 enable = mkEnableOption "ALSA support";
131121 support32Bit = mkEnableOption "32-bit ALSA support on 64-bit systems";
@@ -162,18 +152,13 @@ in {
162152 config = mkIf cfg.enable {
163153 assertions = [
164154 {
165− assertion = cfg.audio.enable -> !config.hardware.pulseaudio.enable;
166− message = "Using PipeWire as the sound server conflicts with PulseAudio. This option requires `hardware.pulseaudio.enable` to be set to false";
155+ assertion = cfg.pulse.enable -> !config.hardware.pulseaudio.enable;
156+ message = "PipeWire based PulseAudio server emulation replaces PulseAudio. This option requires `hardware.pulseaudio.enable` to be set to false";
167157 }
168158 {
169159 assertion = cfg.jack.enable -> !config.services.jack.jackd.enable;
170160 message = "PipeWire based JACK emulation doesn't use the JACK service. This option requires `services.jack.jackd.enable` to be set to false";
171161 }
172− {
173− # JACK intentionally not checked, as PW-on-JACK setups are a thing that some people may want
174− assertion = (cfg.alsa.enable || cfg.pulse.enable) -> cfg.audio.enable;
175− message = "Using PipeWire's ALSA/PulseAudio compatibility layers requires running PipeWire as the sound server. Set `services.pipewire.audio.enable` to true.";
176− }
177162 ];
178163
179164 environment.systemPackages = [ cfg.package ]
nixos/modules/services/desktops/pipewire/wireplumber.nix+1−11
@@ -1,9 +1,7 @@
11{ config, lib, pkgs, ... }:
22
33let
4− pwCfg = config.services.pipewire;
5− cfg = pwCfg.wireplumber;
6− pwUsedForAudio = pwCfg.audio.enable;
4+ cfg = config.services.pipewire.wireplumber;
75in
86{
97 meta.maintainers = [ lib.maintainers.k900 ];
@@ -35,14 +33,6 @@ in
3533 ];
3634
3735 environment.systemPackages = [ cfg.package ];
38−
39− environment.etc."wireplumber/main.lua.d/80-nixos.lua" = lib.mkIf (!pwUsedForAudio) {
40− text = ''
41− -- Pipewire is not used for audio, so prevent it from grabbing audio devices
42− alsa_monitor.enable = function() end
43− '';
44− };
45−
4636 systemd.packages = [ cfg.package ];
4737
4838 systemd.services.wireplumber.enable = config.services.pipewire.systemWide;
nixos/modules/services/development/jupyter/default.nix−1
@@ -194,7 +194,6 @@ in {
194194 extraGroups = [ cfg.group ];
195195 home = "/var/lib/jupyter";
196196 createHome = true;
197− isSystemUser = true;
198197 useDefaultShell = true; # needed so that the user can start a terminal.
199198 };
200199 })
nixos/modules/services/editors/haste.nixdeleted−86
@@ -1,86 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−
5−let
6− pkg = pkgs.haste-server;
7− cfg = config.services.haste-server;
8−
9− format = pkgs.formats.json {};
10−in
11−{
12− options.services.haste-server = {
13− enable = mkEnableOption "haste-server";
14− openFirewall = mkEnableOption "firewall passthrough for haste-server";
15−
16− settings = mkOption {
17− description = ''
18− Configuration for haste-server.
19− For documentation see <link xlink:href="https://github.com/toptal/haste-server#settings">project readme</link>
20− '';
21− type = format.type;
22− };
23− };
24−
25− config = mkIf (cfg.enable) {
26− networking.firewall.allowedTCPPorts = mkIf (cfg.openFirewall) [ cfg.settings.port ];
27−
28− services.haste-server = {
29− settings = {
30− host = mkDefault "::";
31− port = mkDefault 7777;
32−
33− keyLength = mkDefault 10;
34− maxLength = mkDefault 400000;
35−
36− staticMaxAge = mkDefault 86400;
37− recompressStaticAssets = mkDefault false;
38−
39− logging = mkDefault [
40− {
41− level = "verbose";
42− type = "Console";
43− colorize = true;
44− }
45− ];
46−
47− keyGenerator = mkDefault {
48− type = "phonetic";
49− };
50−
51− rateLimits = {
52− categories = {
53− normal = {
54− totalRequests = mkDefault 500;
55− every = mkDefault 60000;
56− };
57− };
58− };
59−
60− storage = mkDefault {
61− type = "file";
62− };
63−
64− documents = {
65− about = mkDefault "${pkg}/share/haste-server/about.md";
66− };
67− };
68− };
69−
70− systemd.services.haste-server = {
71− wantedBy = [ "multi-user.target" ];
72− requires = [ "network.target" ];
73− after = [ "network.target" ];
74−
75− serviceConfig = {
76− User = "haste-server";
77− DynamicUser = true;
78− StateDirectory = "haste-server";
79− WorkingDirectory = "/var/lib/haste-server";
80− ExecStart = "${pkg}/bin/haste-server ${format.generate "config.json" cfg.settings}";
81− };
82−
83− path = with pkgs; [ pkg coreutils ];
84− };
85− };
86−}
nixos/modules/services/games/factorio.nix−9
@@ -53,14 +53,6 @@ in
5353 '';
5454 };
5555
56− bind = mkOption {
57− type = types.str;
58− default = "0.0.0.0";
59− description = ''
60− The address to which the service should bind.
61− '';
62− };
63−
6456 admins = mkOption {
6557 type = types.listOf types.str;
6658 default = [];
@@ -249,7 +241,6 @@ in
249241 "${cfg.package}/bin/factorio"
250242 "--config=${cfg.configFile}"
251243 "--port=${toString cfg.port}"
252− "--bind=${cfg.bind}"
253244 "--start-server=${mkSavePath cfg.saveName}"
254245 "--server-settings=${serverSettingsFile}"
255246 (optionalString (cfg.mods != []) "--mod-directory=${modDir}")
nixos/modules/services/games/minecraft-server.nix+1−1
@@ -153,7 +153,7 @@ in {
153153 type = types.separatedString " ";
154154 default = "-Xmx2048M -Xms2048M";
155155 # Example options from https://minecraft.gamepedia.com/Tutorials/Server_startup_script
156− example = "-Xms4092M -Xmx4092M -XX:+UseG1GC -XX:+CMSIncrementalPacing "
156+ example = "-Xmx2048M -Xms4092M -XX:+UseG1GC -XX:+CMSIncrementalPacing "
157157 + "-XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=2 "
158158 + "-XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10";
159159 description = "JVM options for the Minecraft server.";
nixos/modules/services/hardware/joycond.nix+6−2
@@ -22,9 +22,13 @@ with lib;
2222 };
2323
2424 config = mkIf cfg.enable {
25− environment.systemPackages = [ cfg.package ];
25+ environment.systemPackages = [
26+ kernelPackages.hid-nintendo
27+ cfg.package
28+ ];
2629
27− boot.extraModulePackages = optional (versionOlder kernelPackages.kernel.version "5.16") kernelPackages.hid-nintendo;
30+ boot.extraModulePackages = [ kernelPackages.hid-nintendo ];
31+ boot.kernelModules = [ "hid_nintendo" ];
2832
2933 services.udev.packages = [ cfg.package ];
3034
nixos/modules/services/hardware/udev.nix+23−125
@@ -8,24 +8,6 @@ let
88
99 cfg = config.services.udev;
1010
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
15− done
16− '';
17−
18−
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
21− # network daemons.
22− # TODO move this into the initrd-network module when it exists
23− initrdLinkUnits = pkgs.runCommand "initrd-link-units" {} ''
24− mkdir -p $out
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))}
27− '';
28−
2911 extraUdevRules = pkgs.writeTextFile {
3012 name = "extra-udev-rules";
3113 text = cfg.extraRules;
@@ -41,16 +23,17 @@ let
4123 nixosRules = ''
4224 # Miscellaneous devices.
4325 KERNEL=="kvm", MODE="0666"
26+ KERNEL=="kqemu", MODE="0666"
4427
4528 # Needed for gpm.
4629 SUBSYSTEM=="input", KERNEL=="mice", TAG+="systemd"
4730 '';
4831
4932 # 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"
5134 { preferLocalBuild = true;
5235 allowSubstitutes = false;
53− packages = unique (map toString udevPackages);
36+ packages = unique (map toString cfg.packages);
5437 }
5538 ''
5639 mkdir -p $out
@@ -78,9 +61,6 @@ let
7861 --replace \"/bin/mount \"${pkgs.util-linux}/bin/mount \
7962 --replace /usr/bin/readlink ${pkgs.coreutils}/bin/readlink \
8063 --replace /usr/bin/basename ${pkgs.coreutils}/bin/basename
81− ${optionalString (initrdBin != null) ''
82− substituteInPlace $i --replace '/run/current-system/systemd' "${removeSuffix "/bin" initrdBin}"
83− ''}
8464 done
8565
8666 echo -n "Checking that all programs called by relative paths in udev rules exist in ${udev}/lib/udev... "
@@ -105,9 +85,8 @@ let
10585 for i in $import_progs $run_progs; do
10686 # if the path refers to /run/current-system/systemd, replace with config.systemd.package
10787 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/}"
10989 fi
110−
11190 if [[ ! -x $i ]]; then
11291 echo "FAIL"
11392 echo "$i is called in udev rules but is not executable or does not exist"
@@ -124,7 +103,7 @@ let
124103 echo "Consider fixing the following udev rules:"
125104 echo "$filesToFixup" | while read localFile; do
126105 remoteFile="origin unknown"
127− for i in ${toString binPackages}; do
106+ for i in ${toString cfg.packages}; do
128107 for j in "$i"/*/udev/rules.d/*; do
129108 [ -e "$out/$(basename "$j")" ] || continue
130109 [ "$(basename "$j")" = "$(basename "$localFile")" ] || continue
@@ -147,7 +126,7 @@ let
147126 ${optionalString (!config.boot.hardwareScan) ''
148127 ln -s /dev/null $out/80-drivers.rules
149128 ''}
150− '';
129+ ''; # */
151130
152131 hwdbBin = pkgs.runCommand "hwdb.bin"
153132 { preferLocalBuild = true;
@@ -223,6 +202,20 @@ in
223202 '';
224203 };
225204
205+ initrdRules = mkOption {
206+ default = "";
207+ example = ''
208+ SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1D:60:B9:6D:4F", KERNEL=="eth*", NAME="my_fast_network_card"
209+ '';
210+ type = types.lines;
211+ description = ''
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.
216+ '';
217+ };
218+
226219 extraRules = mkOption {
227220 default = "";
228221 example = ''
@@ -290,52 +283,6 @@ in
290283 '';
291284 };
292285
293− boot.initrd.services.udev = {
294−
295− packages = mkOption {
296− type = types.listOf types.path;
297− default = [];
298− visible = false;
299− description = ''
300− <emphasis>This will only be used when systemd is used in stage 1.</emphasis>
301−
302− List of packages containing <command>udev</command> rules that will be copied to stage 1.
303− All files found in
304− <filename><replaceable>pkg</replaceable>/etc/udev/rules.d</filename> and
305− <filename><replaceable>pkg</replaceable>/lib/udev/rules.d</filename>
306− will be included.
307− '';
308− };
309−
310− binPackages = mkOption {
311− type = types.listOf types.path;
312− default = [];
313− visible = false;
314− description = ''
315− <emphasis>This will only be used when systemd is used in stage 1.</emphasis>
316−
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.
319− '';
320− apply = map getBin;
321− };
322−
323− rules = mkOption {
324− default = "";
325− example = ''
326− SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1D:60:B9:6D:4F", KERNEL=="eth*", NAME="my_fast_network_card"
327− '';
328− type = types.lines;
329− description = ''
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.
334− '';
335− };
336−
337− };
338−
339286 };
340287
341288
@@ -351,61 +298,16 @@ in
351298
352299 boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ];
353300
354− boot.initrd.extraUdevRulesCommands = optionalString (!config.boot.initrd.systemd.enable && config.boot.initrd.services.udev.rules != "")
301+ boot.initrd.extraUdevRulesCommands = optionalString (cfg.initrdRules != "")
355302 ''
356303 cat <<'EOF' > $out/99-local.rules
357− ${config.boot.initrd.services.udev.rules}
304+ ${cfg.initrdRules}
358305 EOF
359306 '';
360307
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"
368− ];
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;
376−
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 ];
387− };
388− "/etc/systemd/network".source = initrdLinkUnits;
389− };
390− # Insert initrd rules
391− boot.initrd.services.udev.packages = [
392− initrdUdevRules
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;
397− }))
398− ];
399−
400308 environment.etc =
401309 {
402− "udev/rules.d".source = udevRulesFor {
403− name = "udev-rules";
404− udevPackages = cfg.packages;
405− systemd = config.systemd.package;
406− binPackages = cfg.packages;
407− inherit udevPath udev;
408− };
310+ "udev/rules.d".source = udevRules;
409311 "udev/hwdb.bin".source = hwdbBin;
410312 };
411313
@@ -436,8 +338,4 @@ in
436338 };
437339
438340 };
439−
440− imports = [
441− (mkRenamedOptionModule [ "services" "udev" "initrdRules" ] [ "boot" "initrd" "services" "udev" "rules" ])
442− ];
443341}
nixos/modules/services/hardware/udisks2.nix−39
@@ -4,13 +4,6 @@
44
55with lib;
66
7−let
8− settingsFormat = pkgs.formats.ini {
9− listToValue = concatMapStringsSep "," (generators.mkValueStringDefault {});
10− };
11− configFiles = mapAttrs (name: value: (settingsFormat.generate name value)) (mapAttrs' (name: value: nameValuePair name value ) config.services.udisks2.settings);
12−in
13−
147{
158
169 ###### interface
@@ -28,36 +21,6 @@ in
2821 '';
2922 };
3023
31− settings = mkOption rec {
32− type = types.attrsOf settingsFormat.type;
33− apply = recursiveUpdate default;
34− default = {
35− "udisks2.conf" = {
36− udisks2 = {
37− modules = [ "*" ];
38− modules_load_preference = "ondemand";
39− };
40− defaults = {
41− encryption = "luks2";
42− };
43− };
44− };
45− example = literalExpression ''
46− {
47− "WDC-WD10EZEX-60M2NA0-WD-WCC3F3SJ0698.conf" = {
48− ATA = {
49− StandbyTimeout = 50;
50− };
51− };
52− };
53− '';
54− description = ''
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.
58− '';
59− };
60−
6124 };
6225
6326 };
@@ -69,8 +32,6 @@ in
6932
7033 environment.systemPackages = [ pkgs.udisks2 ];
7134
72− environment.etc = mapAttrs' (name: value: nameValuePair "udisks2/${name}" { source = value; } ) configFiles;
73−
7435 security.polkit.enable = true;
7536
7637 services.dbus.packages = [ pkgs.udisks2 ];
nixos/modules/services/hardware/usbrelayd.nixdeleted−44
@@ -1,44 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−with lib;
3−let
4− cfg = config.services.usbrelayd;
5−in
6−{
7− options.services.usbrelayd = with types; {
8− enable = mkEnableOption "USB Relay MQTT daemon";
9−
10− broker = mkOption {
11− type = str;
12− description = "Hostname or IP address of your MQTT Broker.";
13− default = "127.0.0.1";
14− example = [
15− "mqtt"
16− "192.168.1.1"
17− ];
18− };
19−
20− clientName = mkOption {
21− type = str;
22− description = "Name, your client connects as.";
23− default = "MyUSBRelay";
24− };
25− };
26−
27− config = mkIf cfg.enable {
28−
29− # TODO: Rename to .conf in upcomming release
30− environment.etc."usbrelayd.ini".text = ''
31− [MQTT]
32− BROKER = ${cfg.broker}
33− CLIENTNAME = ${cfg.clientName}
34− '';
35−
36− services.udev.packages = [ pkgs.usbrelayd ];
37− systemd.packages = [ pkgs.usbrelayd ];
38− users.users.usbrelay = {
39− isSystemUser = true;
40− group = "usbrelay";
41− };
42− users.groups.usbrelay = { };
43− };
44−}
nixos/modules/services/logging/graylog.nix+1−1
@@ -132,7 +132,7 @@ in
132132 description = "Graylog server daemon user";
133133 };
134134 };
135− users.groups = mkIf (cfg.user == "graylog") { graylog = {}; };
135+ users.groups = mkIf (cfg.user == "graylog") {};
136136
137137 systemd.tmpfiles.rules = [
138138 "d '${cfg.messageJournalDir}' - ${cfg.user} - - -"
nixos/modules/services/logging/klogd.nix+35−6
@@ -1,9 +1,38 @@
1−{ lib, ... }:
1+{ config, lib, pkgs, ... }:
2+
3+with lib;
24
35{
4− imports = [
5− (lib.mkRemovedOptionModule [ "security" "klogd" "enable" ] ''
6− Logging of kernel messages is now handled by systemd.
7− '')
8− ];
6+ ###### interface
7+
8+ options = {
9+
10+ services.klogd.enable = mkOption {
11+ type = types.bool;
12+ default = versionOlder (getVersion config.boot.kernelPackages.kernel) "3.5";
13+ defaultText = literalExpression ''versionOlder (getVersion config.boot.kernelPackages.kernel) "3.5"'';
14+ description = ''
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
18+ older kernel.
19+ '';
20+ };
21+
22+ };
23+
24+
25+ ###### implementation
26+
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";
33+ script =
34+ "klogd -c 1 -2 -n " +
35+ "-k $(dirname $(readlink -f /run/booted-system/kernel))/System.map";
36+ };
37+ };
938}
nixos/modules/services/logging/logrotate.nix+27−251
@@ -5,10 +5,7 @@ with lib;
55let
66 cfg = config.services.logrotate;
77
8− # deprecated legacy compat settings
9− # these options will be removed before 22.11 in the following PR:
10− # https://github.com/NixOS/nixpkgs/pull/164169
11− pathOpts = { name, ... }: {
8+ pathOpts = { name, ... }: {
129 options = {
1310 enable = mkOption {
1411 type = types.bool;
@@ -89,113 +86,23 @@ let
8986 config.name = name;
9087 };
9188
92− generateLine = n: v:
93− if builtins.elem n [ "files" "priority" "enable" "global" ] || v == null then null
94− else if builtins.elem n [ "extraConfig" "frequency" ] then "${v}\n"
95− else if builtins.elem n [ "firstaction" "lastaction" "prerotate" "postrotate" "preremove" ]
96− then "${n}\n ${v}\n endscript\n"
97− else if isInt v then "${n} ${toString v}\n"
98− else if v == true then "${n}\n"
99− else if v == false then "no${n}\n"
100− else "${n} ${v}\n";
101− generateSection = indent: settings: concatStringsSep (fixedWidthString indent " " "") (
102− filter (x: x != null) (mapAttrsToList generateLine settings)
89+ mkConf = pathOpts: ''
90+ # generated by NixOS using the `services.logrotate.paths.${pathOpts.name}` attribute set
91+ ${concatMapStringsSep " " (path: ''"${path}"'') (toList pathOpts.path)} {
92+ ${optionalString (pathOpts.user != null || pathOpts.group != null) "su ${pathOpts.user} ${pathOpts.group}"}
93+ ${pathOpts.frequency}
94+ rotate ${toString pathOpts.keep}
95+ ${pathOpts.extraConfig}
96+ }
97+ '';
98+
99+ paths = sortProperties (attrValues (filterAttrs (_: pathOpts: pathOpts.enable) cfg.paths));
100+ configFile = pkgs.writeText "logrotate.conf" (
101+ concatStringsSep "\n" (
102+ [ "missingok" "notifempty" cfg.extraConfig ] ++ (map mkConf paths)
103+ )
103104 );
104105
105− # generateSection includes a final newline hence weird closing brace
106− mkConf = settings:
107− if settings.global or false then generateSection 0 settings
108− else ''
109− ${concatMapStringsSep "\n" (files: ''"${files}"'') (toList settings.files)} {
110− ${generateSection 2 settings}}
111− '';
112−
113− # below two mapPaths are compat functions
114− mapPathOptToSetting = n: v:
115− if n == "keep" then nameValuePair "rotate" v
116− else if n == "path" then nameValuePair "files" v
117− else nameValuePair n v;
118−
119− mapPathsToSettings = path: pathOpts:
120− nameValuePair path (
121− filterAttrs (n: v: ! builtins.elem n [ "user" "group" "name" ] && v != "") (
122− (mapAttrs' mapPathOptToSetting pathOpts) //
123− {
124− su =
125− if pathOpts.user != null
126− then "${pathOpts.user} ${pathOpts.group}"
127− else null;
128− }
129− )
130− );
131−
132− settings = sortProperties (attrValues (filterAttrs (_: settings: settings.enable) (
133− foldAttrs recursiveUpdate { } [
134− {
135− header = {
136− enable = true;
137− missingok = true;
138− notifempty = true;
139− frequency = "weekly";
140− rotate = 4;
141− };
142− # compat section
143− extraConfig = {
144− enable = (cfg.extraConfig != "");
145− global = true;
146− extraConfig = cfg.extraConfig;
147− priority = 101;
148− };
149− }
150− (mapAttrs' mapPathsToSettings cfg.paths)
151− cfg.settings
152− { header = { global = true; priority = 100; }; }
153− ]
154− )));
155− configFile = pkgs.writeTextFile {
156− name = "logrotate.conf";
157− text = concatStringsSep "\n" (
158− map mkConf settings
159− );
160− checkPhase = optionalString cfg.checkConfig ''
161− # logrotate --debug also checks that users specified in config
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.
164− # files required to exist also won't be present, so missingok is forced.
165− user=$(${pkgs.buildPackages.coreutils}/bin/id -un)
166− group=$(${pkgs.buildPackages.coreutils}/bin/id -gn)
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/" \
169− -e "1imissingok" -e "s/\bnomissingok\b//" \
170− $out > /tmp/logrotate.conf
171− # Since this makes for very verbose builds only show real error.
172− # There is no way to control log level, but logrotate hardcodes
173− # 'error:' at common log level, so we can use grep, taking care
174− # to keep error codes
175− set -o pipefail
176− if ! ${pkgs.buildPackages.logrotate}/sbin/logrotate --debug /tmp/logrotate.conf 2>&1 \
177− | ( ! grep "error:" ) > /tmp/logrotate-error; then
178− echo "Logrotate configuration check failed."
179− echo "The failing configuration (after adjustments to pass tests in sandbox) was:"
180− printf "%s\n" "-------"
181− cat /tmp/logrotate.conf
182− printf "%s\n" "-------"
183− echo "The error reported by logrotate was as follow:"
184− printf "%s\n" "-------"
185− cat /tmp/logrotate-error
186− printf "%s\n" "-------"
187− echo "You can disable this check with services.logrotate.checkConfig = false,"
188− echo "but if you think it should work please report this failure along with"
189− echo "the config file being tested!"
190− false
191− fi
192− '';
193− };
194−
195− mailOption =
196− if foldr (n: a: a || n ? mail) false (attrValues cfg.settings)
197− then "--mail=${pkgs.mailutils}/bin/mail"
198− else "";
199106in
200107{
201108 imports = [
@@ -205,121 +112,17 @@ in
205112 options = {
206113 services.logrotate = {
207114 enable = mkEnableOption "the logrotate systemd service" // {
208− default = foldr (n: a: a || n.enable) false (attrValues cfg.settings);
209− defaultText = literalExpression "cfg.settings != {}";
210− };
211−
212− settings = mkOption {
213− default = { };
214− description = ''
215− logrotate freeform settings: each attribute here will define its own section,
216− ordered by priority, which can either define files to rotate with their settings
217− or settings common to all further files settings.
218− Refer to <link xlink:href="https://linux.die.net/man/8/logrotate"/> for details.
219− '';
220− type = types.attrsOf (types.submodule ({ name, ... }: {
221− freeformType = with types; attrsOf (nullOr (oneOf [ int bool str ]));
222−
223− options = {
224− enable = mkEnableOption "setting individual kill switch" // {
225− default = true;
226− };
227−
228− global = mkOption {
229− type = types.bool;
230− default = false;
231− description = ''
232− Whether this setting is a global option or not: set to have these
233− settings apply to all files settings with a higher priority.
234− '';
235− };
236− files = mkOption {
237− type = with types; either str (listOf str);
238− default = name;
239− defaultText = ''
240− The attrset name if not specified
241− '';
242− description = ''
243− Single or list of files for which rules are defined.
244− The files are quoted with double-quotes in logrotate configuration,
245− so globs and spaces are supported.
246− Note this setting is ignored if globals is true.
247− '';
248− };
249−
250− frequency = mkOption {
251− type = types.nullOr types.str;
252− default = null;
253− description = ''
254− How often to rotate the logs. Defaults to previously set global setting,
255− which itself defauts to weekly.
256− '';
257− };
258−
259− priority = mkOption {
260− type = types.int;
261− default = 1000;
262− description = ''
263− Order of this logrotate block in relation to the others. The semantics are
264− the same as with `lib.mkOrder`. Smaller values are inserted first.
265− '';
266− };
267− };
268−
269− }));
270− };
271−
272− configFile = mkOption {
273− type = types.path;
274− default = configFile;
275− defaultText = ''
276− A configuration file automatically generated by NixOS.
277− '';
278− description = ''
279− Override the configuration file used by MySQL. By default,
280− NixOS generates one automatically from <xref linkend="opt-services.logrotate.settings"/>.
281− '';
282− example = literalExpression ''
283− pkgs.writeText "logrotate.conf" '''
284− missingok
285− "/var/log/*.log" {
286− rotate 4
287− weekly
288− }
289− ''';
290− '';
115+ default = foldr (n: a: a || n.enable) false (attrValues cfg.paths);
116+ defaultText = literalExpression "cfg.paths != {}";
291117 };
292118
293− checkConfig = mkOption {
294− type = types.bool;
295− default = true;
296− description = ''
297− Whether the config should be checked at build time.
298−
299− Some options are not checkable at build time because of the build sandbox:
300− for example, the test does not know about existing files and system users are
301− not known.
302− These limitations mean we must adjust the file for tests (missingok is forced
303− and users are replaced by dummy users), so tests are complemented by a
304− logrotate-checkconf service that is enabled by default.
305− This extra check can be disabled by disabling it at the systemd level with the
306− <option>services.systemd.services.logrotate-checkconf.enable</option> option.
307−
308− Conversely there are still things that might make this check fail incorrectly
309− (e.g. a file path where we don't have access to intermediate directories):
310− in this case you can disable the failing check with this option.
311− '';
312− };
313−
314− # deprecated legacy compat settings
315119 paths = mkOption {
316120 type = with types; attrsOf (submodule pathOpts);
317− default = { };
121+ default = {};
318122 description = ''
319123 Attribute set of paths to rotate. The order each block appears in the generated configuration file
320124 can be controlled by the <link linkend="opt-services.logrotate.paths._name_.priority">priority</link> option
321125 using the same semantics as `lib.mkOrder`. Smaller values have a greater priority.
322− This setting has been deprecated in favor of <link linkend="opt-services.logrotate.settings">logrotate settings</link>.
323126 '';
324127 example = literalExpression ''
325128 {
@@ -348,37 +151,19 @@ in
348151 description = ''
349152 Extra contents to append to the logrotate configuration file. Refer to
350153 <link xlink:href="https://linux.die.net/man/8/logrotate"/> for details.
351− This setting has been deprecated in favor of
352− <link linkend="opt-services.logrotate.settings">logrotate settings</link>.
353154 '';
354155 };
355156 };
356157 };
357158
358159 config = mkIf cfg.enable {
359− assertions =
360− mapAttrsToList
361− (name: pathOpts:
362− {
363− assertion = (pathOpts.user != null) == (pathOpts.group != null);
364− message = ''
365− If either of `services.logrotate.paths.${name}.user` or `services.logrotate.paths.${name}.group` are specified then *both* must be specified.
366− '';
367− })
368− cfg.paths;
369−
370− warnings =
371− (mapAttrsToList
372− (name: pathOpts: ''
373− Using config.services.logrotate.paths.${name} is deprecated and will become unsupported in a future release.
374− Please use services.logrotate.settings instead.
375− '')
376− cfg.paths
377− ) ++
378− (optional (cfg.extraConfig != "") ''
379− Using config.services.logrotate.extraConfig is deprecated and will become unsupported in a future release.
380− Please use services.logrotate.settings with globals=true instead.
381− '');
160+ assertions = mapAttrsToList (name: pathOpts:
161+ { assertion = (pathOpts.user != null) == (pathOpts.group != null);
162+ message = ''
163+ If either of `services.logrotate.paths.${name}.user` or `services.logrotate.paths.${name}.group` are specified then *both* must be specified.
164+ '';
165+ }
166+ ) cfg.paths;
382167
383168 systemd.services.logrotate = {
384169 description = "Logrotate Service";
@@ -387,16 +172,7 @@ in
387172 serviceConfig = {
388173 Restart = "no";
389174 User = "root";
390− ExecStart = "${pkgs.logrotate}/sbin/logrotate ${mailOption} ${cfg.configFile}";
391− };
392− };
393− systemd.services.logrotate-checkconf = {
394− description = "Logrotate configuration check";
395− wantedBy = [ "multi-user.target" ];
396− serviceConfig = {
397− Type = "oneshot";
398− RemainAfterExit = true;
399− ExecStart = "${pkgs.logrotate}/sbin/logrotate --debug ${cfg.configFile}";
175+ ExecStart = "${pkgs.logrotate}/sbin/logrotate ${configFile}";
400176 };
401177 };
402178 };
nixos/modules/services/mail/mailman.nix+7−14
@@ -192,6 +192,7 @@ in {
192192 log_dir = "/var/log/mailman";
193193 lock_dir = "$var_dir/lock";
194194 etc_dir = "/etc";
195+ ext_dir = "$etc_dir/mailman.d";
195196 pid_file = "/run/mailman/master.pid";
196197 };
197198
@@ -224,14 +225,7 @@ in {
224225 See <https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html>.
225226 '';
226227 };
227− in [
228− { assertion = cfg.webHosts != [];
229− message = ''
230− services.mailman.serve.enable requires there to be at least one entry
231− in services.mailman.webHosts.
232− '';
233− }
234− ] ++ (lib.optionals cfg.enablePostfix [
228+ in (lib.optionals cfg.enablePostfix [
235229 { assertion = postfix.enable;
236230 message = ''
237231 Mailman's default NixOS configuration requires Postfix to be enabled.
@@ -281,14 +275,15 @@ in {
281275 globals().update(json.load(f))
282276 '';
283277
284− services.nginx = mkIf (cfg.serve.enable && cfg.webHosts != []) {
278+ services.nginx = mkIf cfg.serve.enable {
285279 enable = mkDefault true;
286− virtualHosts = lib.genAttrs cfg.webHosts (webHost: {
280+ virtualHosts."${lib.head cfg.webHosts}" = {
281+ serverAliases = cfg.webHosts;
287282 locations = {
288283 "/".extraConfig = "uwsgi_pass unix:/run/mailman-web.socket;";
289284 "/static/".alias = webSettings.STATIC_ROOT + "/";
290285 };
291− });
286+ };
292287 };
293288
294289 environment.systemPackages = [ (pkgs.buildEnv {
@@ -318,9 +313,7 @@ in {
318313 systemd.services = {
319314 mailman = {
320315 description = "GNU Mailman Master Process";
321− before = lib.optional cfg.enablePostfix "postfix.service";
322− after = [ "network.target" ]
323− ++ lib.optional cfg.enablePostfix "postfix-setup.service";
316+ after = [ "network.target" ];
324317 restartTriggers = [ config.environment.etc."mailman.cfg".source ];
325318 wantedBy = [ "multi-user.target" ];
326319 serviceConfig = {
nixos/modules/services/mail/postfix.nix+17−22
@@ -723,10 +723,23 @@ in
723723 { ${setgidGroup}.gid = config.ids.gids.postdrop;
724724 };
725725
726− systemd.services.postfix-setup =
727− { description = "Setup for Postfix mail server";
728− serviceConfig.Type = "oneshot";
729− script = ''
726+ systemd.services.postfix =
727+ { description = "Postfix mail server";
728+
729+ wantedBy = [ "multi-user.target" ];
730+ after = [ "network.target" ];
731+ path = [ pkgs.postfix ];
732+
733+ serviceConfig = {
734+ Type = "forking";
735+ Restart = "always";
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";
740+ };
741+
742+ preStart = ''
730743 # Backwards compatibility
731744 if [ ! -d /var/lib/postfix ] && [ -d /var/postfix ]; then
732745 mkdir -p /var/lib
@@ -764,24 +777,6 @@ in
764777 '';
765778 };
766779
767− systemd.services.postfix =
768− { description = "Postfix mail server";
769−
770− wantedBy = [ "multi-user.target" ];
771− after = [ "network.target" "postfix-setup.service" ];
772− requires = [ "postfix-setup.service" ];
773− path = [ pkgs.postfix ];
774−
775− serviceConfig = {
776− Type = "forking";
777− Restart = "always";
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";
782− };
783− };
784−
785780 services.postfix.config = (mapAttrs (_: v: mkDefault v) {
786781 compatibility_level = pkgs.postfix.version;
787782 mail_owner = cfg.user;
nixos/modules/services/matrix/matrix-synapse.nix+2−2
@@ -81,7 +81,7 @@ in {
8181 (mkRemovedOptionModule [ "services" "matrix-synapse" "verbose" ] "Use a log config instead." )
8282
8383 # 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" )
8585 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_args" ] "Use settings.database.args instead" )
8686 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_name" ] "Use settings.database.args.database instead" )
8787 (mkRemovedOptionModule [ "services" "matrix-synapse" "database_type" ] "Use settings.database.name instead" )
@@ -141,7 +141,7 @@ in {
141141 enable = mkEnableOption "matrix.org synapse";
142142
143143 configFile = mkOption {
144− type = types.path;
144+ type = types.str;
145145 readOnly = true;
146146 description = ''
147147 Path to the configuration file on the target system. Useful to configure e.g. workers
nixos/modules/services/misc/autorandr.nix+2−308
@@ -5,243 +5,6 @@ with lib;
55let
66
77 cfg = config.services.autorandr;
8− hookType = types.lines;
9−
10− matrixOf = n: m: elemType:
11− mkOptionType rec {
12− name = "matrixOf";
13− description =
14− "${toString n}×${toString m} matrix of ${elemType.description}s";
15− check = xss:
16− let listOfSize = l: xs: isList xs && length xs == l;
17− in listOfSize n xss
18− && all (xs: listOfSize m xs && all elemType.check xs) xss;
19− merge = mergeOneOption;
20− getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "*" "*" ]);
21− getSubModules = elemType.getSubModules;
22− substSubModules = mod: matrixOf n m (elemType.substSubModules mod);
23− functor = (defaultFunctor name) // { wrapped = elemType; };
24− };
25−
26− profileModule = types.submodule {
27− options = {
28− fingerprint = mkOption {
29− type = types.attrsOf types.str;
30− description = ''
31− Output name to EDID mapping.
32− Use <code>autorandr --fingerprint</code> to get current setup values.
33− '';
34− default = { };
35− };
36−
37− config = mkOption {
38− type = types.attrsOf configModule;
39− description = "Per output profile configuration.";
40− default = { };
41− };
42−
43− hooks = mkOption {
44− type = hooksModule;
45− description = "Profile hook scripts.";
46− default = { };
47− };
48− };
49− };
50−
51− configModule = types.submodule {
52− options = {
53− enable = mkOption {
54− type = types.bool;
55− description = "Whether to enable the output.";
56− default = true;
57− };
58−
59− crtc = mkOption {
60− type = types.nullOr types.ints.unsigned;
61− description = "Output video display controller.";
62− default = null;
63− example = 0;
64− };
65−
66− primary = mkOption {
67− type = types.bool;
68− description = "Whether output should be marked as primary";
69− default = false;
70− };
71−
72− position = mkOption {
73− type = types.str;
74− description = "Output position";
75− default = "";
76− example = "5760x0";
77− };
78−
79− mode = mkOption {
80− type = types.str;
81− description = "Output resolution.";
82− default = "";
83− example = "3840x2160";
84− };
85−
86− rate = mkOption {
87− type = types.str;
88− description = "Output framerate.";
89− default = "";
90− example = "60.00";
91− };
92−
93− gamma = mkOption {
94− type = types.str;
95− description = "Output gamma configuration.";
96− default = "";
97− example = "1.0:0.909:0.833";
98− };
99−
100− rotate = mkOption {
101− type = types.nullOr (types.enum [ "normal" "left" "right" "inverted" ]);
102− description = "Output rotate configuration.";
103− default = null;
104− example = "left";
105− };
106−
107− transform = mkOption {
108− type = types.nullOr (matrixOf 3 3 types.float);
109− default = null;
110− example = literalExpression ''
111− [
112− [ 0.6 0.0 0.0 ]
113− [ 0.0 0.6 0.0 ]
114− [ 0.0 0.0 1.0 ]
115− ]
116− '';
117− description = ''
118− Refer to
119− <citerefentry>
120− <refentrytitle>xrandr</refentrytitle>
121− <manvolnum>1</manvolnum>
122− </citerefentry>
123− for the documentation of the transform matrix.
124− '';
125− };
126−
127− dpi = mkOption {
128− type = types.nullOr types.ints.positive;
129− description = "Output DPI configuration.";
130− default = null;
131− example = 96;
132− };
133−
134− scale = mkOption {
135− type = types.nullOr (types.submodule {
136− options = {
137− method = mkOption {
138− type = types.enum [ "factor" "pixel" ];
139− description = "Output scaling method.";
140− default = "factor";
141− example = "pixel";
142− };
143−
144− x = mkOption {
145− type = types.either types.float types.ints.positive;
146− description = "Horizontal scaling factor/pixels.";
147− };
148−
149− y = mkOption {
150− type = types.either types.float types.ints.positive;
151− description = "Vertical scaling factor/pixels.";
152− };
153− };
154− });
155− description = ''
156− Output scale configuration.
157− </para><para>
158− Either configure by pixels or a scaling factor. When using pixel method the
159− <citerefentry>
160− <refentrytitle>xrandr</refentrytitle>
161− <manvolnum>1</manvolnum>
162− </citerefentry>
163− option
164− <parameter class="command">--scale-from</parameter>
165− will be used; when using factor method the option
166− <parameter class="command">--scale</parameter>
167− will be used.
168− </para><para>
169− This option is a shortcut version of the transform option and they are mutually
170− exclusive.
171− '';
172− default = null;
173− example = literalExpression ''
174− {
175− x = 1.25;
176− y = 1.25;
177− }
178− '';
179− };
180− };
181− };
182−
183− hooksModule = types.submodule {
184− options = {
185− postswitch = mkOption {
186− type = types.attrsOf hookType;
187− description = "Postswitch hook executed after mode switch.";
188− default = { };
189− };
190−
191− preswitch = mkOption {
192− type = types.attrsOf hookType;
193− description = "Preswitch hook executed before mode switch.";
194− default = { };
195− };
196−
197− predetect = mkOption {
198− type = types.attrsOf hookType;
199− description = ''
200− Predetect hook executed before autorandr attempts to run xrandr.
201− '';
202− default = { };
203− };
204− };
205− };
206−
207− hookToFile = folder: name: hook:
208− nameValuePair "xdg/autorandr/${folder}/${name}" {
209− source = "${pkgs.writeShellScriptBin "hook" hook}/bin/hook";
210− };
211− profileToFiles = name: profile:
212− with profile;
213− mkMerge ([
214− {
215− "xdg/autorandr/${name}/setup".text = concatStringsSep "\n"
216− (mapAttrsToList fingerprintToString fingerprint);
217− "xdg/autorandr/${name}/config".text =
218− concatStringsSep "\n" (mapAttrsToList configToString profile.config);
219− }
220− (mapAttrs' (hookToFile "${name}/postswitch.d") hooks.postswitch)
221− (mapAttrs' (hookToFile "${name}/preswitch.d") hooks.preswitch)
222− (mapAttrs' (hookToFile "${name}/predetect.d") hooks.predetect)
223− ]);
224− fingerprintToString = name: edid: "${name} ${edid}";
225− configToString = name: config:
226− if config.enable then
227− concatStringsSep "\n" ([ "output ${name}" ]
228− ++ optional (config.position != "") "pos ${config.position}"
229− ++ optional (config.crtc != null) "crtc ${toString config.crtc}"
230− ++ optional config.primary "primary"
231− ++ optional (config.dpi != null) "dpi ${toString config.dpi}"
232− ++ optional (config.gamma != "") "gamma ${config.gamma}"
233− ++ optional (config.mode != "") "mode ${config.mode}"
234− ++ optional (config.rate != "") "rate ${config.rate}"
235− ++ optional (config.rotate != null) "rotate ${config.rotate}"
236− ++ optional (config.transform != null) ("transform "
237− + concatMapStringsSep "," toString (flatten config.transform))
238− ++ optional (config.scale != null)
239− ((if config.scale.method == "factor" then "scale" else "scale-from")
240− + " ${toString config.scale.x}x${toString config.scale.y}"))
241− else ''
242− output ${name}
243− off
244− '';
2458
2469in {
24710
@@ -259,67 +22,6 @@ in {
25922 for further reference.
26023 '';
26124 };
262−
263− hooks = mkOption {
264− type = hooksModule;
265− description = "Global hook scripts";
266− default = { };
267− example = ''
268− {
269− postswitch = {
270− "notify-i3" = "''${pkgs.i3}/bin/i3-msg restart";
271− "change-background" = readFile ./change-background.sh;
272− "change-dpi" = '''
273− case "$AUTORANDR_CURRENT_PROFILE" in
274− default)
275− DPI=120
276− ;;
277− home)
278− DPI=192
279− ;;
280− work)
281− DPI=144
282− ;;
283− *)
284− echo "Unknown profle: $AUTORANDR_CURRENT_PROFILE"
285− exit 1
286− esac
287− echo "Xft.dpi: $DPI" | ''${pkgs.xorg.xrdb}/bin/xrdb -merge
288− '''
289− };
290− }
291− '';
292− };
293− profiles = mkOption {
294− type = types.attrsOf profileModule;
295− description = "Autorandr profiles specification.";
296− default = { };
297− example = literalExpression ''
298− {
299− "work" = {
300− fingerprint = {
301− eDP1 = "<EDID>";
302− DP1 = "<EDID>";
303− };
304− config = {
305− eDP1.enable = false;
306− DP1 = {
307− enable = true;
308− crtc = 0;
309− primary = true;
310− position = "0x0";
311− mode = "3840x2160";
312− gamma = "1.0:0.909:0.833";
313− rate = "60.00";
314− rotate = "left";
315− };
316− };
317− hooks.postswitch = readFile ./work-postswitch.sh;
318− };
319− }
320− '';
321− };
322−
32325 };
32426
32527 };
@@ -328,15 +30,7 @@ in {
32830
32931 services.udev.packages = [ pkgs.autorandr ];
33032
331− environment = {
332− systemPackages = [ pkgs.autorandr ];
333− etc = mkMerge ([
334− (mapAttrs' (hookToFile "postswitch.d") cfg.hooks.postswitch)
335− (mapAttrs' (hookToFile "preswitch.d") cfg.hooks.preswitch)
336− (mapAttrs' (hookToFile "predetect.d") cfg.hooks.predetect)
337− (mkMerge (mapAttrsToList profileToFiles cfg.profiles))
338− ]);
339− };
33+ environment.systemPackages = [ pkgs.autorandr ];
34034
34135 systemd.services.autorandr = {
34236 wantedBy = [ "sleep.target" ];
@@ -355,5 +49,5 @@ in {
35549
35650 };
35751
358− meta.maintainers = with maintainers; [ alexnortung ];
52+ meta.maintainers = with maintainers; [ ];
35953}
nixos/modules/services/misc/dendrite.nix+8−6
@@ -247,13 +247,15 @@ in
247247 WorkingDirectory = workingDir;
248248 RuntimeDirectory = "dendrite";
249249 RuntimeDirectoryMode = "0700";
250− LimitNOFILE = 65535;
251250 EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
252− ExecStartPre = ''
253− ${pkgs.envsubst}/bin/envsubst \
254− -i ${configurationYaml} \
255− -o /run/dendrite/dendrite.yaml
256− '';
251+ ExecStartPre =
252+ if (cfg.environmentFile != null) then ''
253+ ${pkgs.envsubst}/bin/envsubst \
254+ -i ${configurationYaml} \
255+ -o /run/dendrite/dendrite.yaml
256+ '' else ''
257+ ${pkgs.coreutils}/bin/cp ${configurationYaml} /run/dendrite/dendrite.yaml
258+ '';
257259 ExecStart = lib.strings.concatStringsSep " " ([
258260 "${pkgs.dendrite}/bin/dendrite-monolith-server"
259261 "--config /run/dendrite/dendrite.yaml"
nixos/modules/services/misc/etebase-server.nix+1−1
@@ -166,7 +166,7 @@ in
166166 } ''
167167 makeWrapper ${pythonEnv}/bin/etebase-server \
168168 $out/bin/etebase-server \
169− --chdir ${escapeShellArg cfg.dataDir} \
169+ --run "cd ${cfg.dataDir}" \
170170 --prefix ETEBASE_EASY_CONFIG_PATH : "${configIni}"
171171 '')
172172 ];
nixos/modules/services/misc/ethminer.nix+4−4
@@ -22,7 +22,7 @@ in
2222 };
2323
2424 recheckInterval = mkOption {
25− type = types.ints.unsigned;
25+ type = types.int;
2626 default = 2000;
2727 description = "Interval in milliseconds between farm rechecks.";
2828 };
@@ -70,7 +70,7 @@ in
7070 };
7171
7272 maxPower = mkOption {
73− type = types.ints.unsigned;
73+ type = types.int;
7474 default = 113;
7575 description = "Miner max watt usage.";
7676 };
@@ -85,7 +85,7 @@ in
8585 config = mkIf cfg.enable {
8686
8787 systemd.services.ethminer = {
88− path = optional (cfg.toolkit == "cuda") [ pkgs.cudaPackages.cudatoolkit ];
88+ path = [ pkgs.cudatoolkit ];
8989 description = "ethminer ethereum mining service";
9090 wantedBy = [ "multi-user.target" ];
9191 after = [ "network.target" ];
@@ -97,7 +97,7 @@ in
9797 Restart = "always";
9898 };
9999
100− environment = mkIf (cfg.toolkit == "cuda") {
100+ environment = {
101101 LD_LIBRARY_PATH = "${config.boot.kernelPackages.nvidia_x11}/lib";
102102 };
103103
nixos/modules/services/misc/gitea.nix+16−11
@@ -499,7 +499,6 @@ in
499499 oldLfsJwtSecret = "${cfg.stateDir}/custom/conf/jwt_secret"; # old file for LFS_JWT_SECRET
500500 lfsJwtSecret = "${cfg.stateDir}/custom/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
501501 internalToken = "${cfg.stateDir}/custom/conf/internal_token";
502− replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
503502 in ''
504503 # copy custom configuration and generate a random secret key if needed
505504 ${optionalString (cfg.useWizard == false) ''
@@ -527,17 +526,23 @@ in
527526 ${gitea}/bin/gitea generate secret INTERNAL_TOKEN > ${internalToken}
528527 fi
529528
530− chmod u+w '${runConfig}'
531− ${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
532− ${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
533− ${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
534− ${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
535− ${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
536−
537− ${lib.optionalString (cfg.mailerPasswordFile != null) ''
538− ${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
529+ SECRETKEY="$(head -n1 ${secretKey})"
530+ DBPASS="$(head -n1 ${cfg.database.passwordFile})"
531+ OAUTH2JWTSECRET="$(head -n1 ${oauth2JwtSecret})"
532+ LFSJWTSECRET="$(head -n1 ${lfsJwtSecret})"
533+ INTERNALTOKEN="$(head -n1 ${internalToken})"
534+ ${if (cfg.mailerPasswordFile == null) then ''
535+ MAILERPASSWORD="#mailerpass#"
536+ '' else ''
537+ MAILERPASSWORD="$(head -n1 ${cfg.mailerPasswordFile} || :)"
539538 ''}
540− chmod u-w '${runConfig}'
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" \
545+ -i ${runConfig}
541546 }
542547 (umask 027; gitea_setup)
543548 ''}
nixos/modules/services/misc/gitit.nix+1−1
@@ -10,7 +10,7 @@ let
1010
1111 toYesNo = b: if b then "yes" else "no";
1212
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;
1414
1515 gititWithPkgs = hsPkgs: extras: hsPkgs.ghcWithPackages (self: with self; [ gitit ] ++ (extras self));
1616
nixos/modules/services/misc/gitlab.nix+11−9
@@ -179,7 +179,7 @@ let
179179 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
180180 --set PATH '${lib.makeBinPath [ pkgs.nodejs pkgs.gzip pkgs.git pkgs.gnutar postgresqlPackage pkgs.coreutils pkgs.procps ]}:$PATH' \
181181 --set RAKEOPT '-f ${cfg.packages.gitlab}/share/gitlab/Rakefile' \
182− --chdir '${cfg.packages.gitlab}/share/gitlab'
182+ --run 'cd ${cfg.packages.gitlab}/share/gitlab'
183183 '';
184184 };
185185
@@ -193,7 +193,7 @@ let
193193 makeWrapper ${cfg.packages.gitlab.rubyEnv}/bin/rails $out/bin/gitlab-rails \
194194 ${concatStrings (mapAttrsToList (name: value: "--set ${name} '${value}' ") gitlabEnv)} \
195195 --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'
197197 '';
198198 };
199199
@@ -848,7 +848,10 @@ in {
848848
849849 extraConfig = mkOption {
850850 type = types.lines;
851− default = "";
851+ default = ''
852+ copytruncate
853+ compress
854+ '';
852855 description = ''
853856 Extra logrotate config options for this path. Refer to
854857 <link xlink:href="https://linux.die.net/man/8/logrotate"/> for details.
@@ -974,14 +977,13 @@ in {
974977 # Enable rotation of log files
975978 services.logrotate = {
976979 enable = cfg.logrotate.enable;
977− settings = {
980+ paths = {
978981 gitlab = {
979− files = "${cfg.statePath}/log/*.log";
980− su = "${cfg.user} ${cfg.group}";
982+ path = "${cfg.statePath}/log/*.log";
983+ user = cfg.user;
984+ group = cfg.group;
981985 frequency = cfg.logrotate.frequency;
982− rotate = cfg.logrotate.keep;
983− copytruncate = true;
984− compress = true;
986+ keep = cfg.logrotate.keep;
985987 extraConfig = cfg.logrotate.extraConfig;
986988 };
987989 };
nixos/modules/services/misc/moonraker.nix−40
@@ -79,19 +79,6 @@ in {
7979 for supported values.
8080 '';
8181 };
82−
83− allowSystemControl = mkOption {
84− type = types.bool;
85− default = false;
86− description = ''
87− Whether to allow Moonraker to perform system-level operations.
88−
89− Moonraker exposes APIs to perform system-level operations, such as
90− reboot, shutdown, and management of systemd units. See the
91− <link xlink:href="https://moonraker.readthedocs.io/en/latest/web_api/#machine-commands">documentation</link>
92− for details on what clients are able to do.
93− '';
94− };
9582 };
9683 };
9784
@@ -99,13 +86,6 @@ in {
9986 warnings = optional (cfg.settings ? update_manager)
10087 ''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.'';
10188
102− assertions = [
103− {
104− assertion = cfg.allowSystemControl -> config.security.polkit.enable;
105− message = "services.moonraker.allowSystemControl requires polkit to be enabled (security.polkit.enable).";
106− }
107− ];
108−
10989 users.users = optionalAttrs (cfg.user == "moonraker") {
11090 moonraker = {
11191 group = cfg.group;
@@ -148,31 +128,11 @@ in {
148128 exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg
149129 '';
150130
151− # Needs `ip` command
152− path = [ pkgs.iproute2 ];
153−
154131 serviceConfig = {
155132 WorkingDirectory = cfg.stateDir;
156133 Group = cfg.group;
157134 User = cfg.user;
158135 };
159136 };
160−
161− security.polkit.extraConfig = lib.optionalString cfg.allowSystemControl ''
162− // nixos/moonraker: Allow Moonraker to perform system-level operations
163− //
164− // This was enabled via services.moonraker.allowSystemControl.
165− polkit.addRule(function(action, subject) {
166− if ((action.id == "org.freedesktop.systemd1.manage-units" ||
167− action.id == "org.freedesktop.login1.power-off" ||
168− action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
169− action.id == "org.freedesktop.login1.reboot" ||
170− action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
171− action.id.startsWith("org.freedesktop.packagekit.")) &&
172− subject.user == "${cfg.user}") {
173− return polkit.Result.YES;
174− }
175− });
176− '';
177137 };
178138}
nixos/modules/services/misc/nix-daemon.nix+2−10
@@ -409,14 +409,14 @@ in
409409 to = mkOption {
410410 type = referenceAttrs;
411411 example = { type = "github"; owner = "my-org"; repo = "my-nixpkgs"; };
412− description = "The flake reference <option>from</option> is rewritten to.";
412+ description = "The flake reference <option>from></option> is rewritten to.";
413413 };
414414 flake = mkOption {
415415 type = types.nullOr types.attrs;
416416 default = null;
417417 example = literalExpression "nixpkgs";
418418 description = ''
419− The flake input <option>from</option> is rewritten to.
419+ The flake input <option>from></option> is rewritten to.
420420 '';
421421 };
422422 exact = mkOption {
@@ -708,14 +708,6 @@ in
708708
709709 systemd.packages = [ nixPackage ];
710710
711− # Will only work once https://github.com/NixOS/nix/pull/6285 is merged
712− # systemd.tmpfiles.packages = [ nixPackage ];
713−
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 - -"
717− ];
718−
719711 systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
720712
721713 systemd.services.nix-daemon =
nixos/modules/services/misc/nix-gc.nix+3−9
@@ -39,7 +39,7 @@ in
3939 type = types.str;
4040 example = "45min";
4141 description = ''
42− Add a randomized delay before each garbage collection.
42+ Add a randomized delay before each automatic upgrade.
4343 The delay will be chosen between zero and this value.
4444 This value must be a time span in the format specified by
4545 <citerefentry><refentrytitle>systemd.time</refentrytitle>
@@ -81,14 +81,8 @@ in
8181 ###### implementation
8282
8383 config = {
84− assertions = [
85− {
86− assertion = cfg.automatic -> config.nix.enable;
87− message = ''nix.gc.automatic requires nix.enable'';
88− }
89− ];
90−
91− systemd.services.nix-gc = lib.mkIf config.nix.enable {
84+
85+ systemd.services.nix-gc = {
9286 description = "Nix Garbage Collector";
9387 script = "exec ${config.nix.package.out}/bin/nix-collect-garbage ${cfg.options}";
9488 startAt = optional cfg.automatic cfg.dates;
nixos/modules/services/misc/nix-optimise.nix+2−8
@@ -37,14 +37,8 @@ in
3737 ###### implementation
3838
3939 config = {
40− assertions = [
41− {
42− assertion = cfg.automatic -> config.nix.enable;
43− message = ''nix.optimise.automatic requires nix.enable'';
44− }
45− ];
46−
47− systemd.services.nix-optimise = lib.mkIf config.nix.enable
40+
41+ systemd.services.nix-optimise =
4842 { description = "Nix Store Optimiser";
4943 # No point this if the nix daemon (and thus the nix store) is outside
5044 unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket";
nixos/modules/services/misc/paperless.nix → nixos/modules/services/misc/paperless-ng.nixrenamed+53−51
@@ -2,13 +2,11 @@
22
33with lib;
44let
5− cfg = config.services.paperless;
5+ cfg = config.services.paperless-ng;
66
77 defaultUser = "paperless";
88
9− # Don't start a redis instance if the user sets a custom redis connection
10− enableRedis = !hasAttr "PAPERLESS_REDIS" cfg.extraConfig;
11− redisServer = config.services.redis.servers.paperless;
9+ hasCustomRedis = hasAttr "PAPERLESS_REDIS" cfg.extraConfig;
1210
1311 env = {
1412 PAPERLESS_DATA_DIR = cfg.dataDir;
@@ -17,15 +15,15 @@ let
1715 GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
1816 } // (
1917 lib.mapAttrs (_: toString) cfg.extraConfig
20− ) // (optionalAttrs enableRedis {
21− PAPERLESS_REDIS = "unix://${redisServer.unixSocket}";
18+ ) // (optionalAttrs (!hasCustomRedis) {
19+ PAPERLESS_REDIS = "unix://${config.services.redis.servers.paperless-ng.unixSocket}";
2220 });
2321
2422 manage = let
2523 setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
2624 in pkgs.writeShellScript "manage" ''
2725 ${setupEnv}
28− exec ${cfg.package}/bin/paperless-ngx "$@"
26+ exec ${cfg.package}/bin/paperless-ng "$@"
2927 '';
3028
3129 # Secure the services
@@ -38,7 +36,7 @@ let
3836 "-/etc/hosts"
3937 "-/etc/localtime"
4038 "-/run/postgresql"
41− ] ++ (optional enableRedis redisServer.unixSocket);
39+ ] ++ (optional (!hasCustomRedis) config.services.redis.servers.paperless-ng.unixSocket);
4240 BindPaths = [
4341 cfg.consumptionDir
4442 cfg.dataDir
@@ -55,6 +53,7 @@ let
5553 PrivateNetwork = true;
5654 PrivateTmp = true;
5755 PrivateUsers = true;
56+ ProcSubset = "pid";
5857 ProtectClock = true;
5958 # Breaks if the home dir of the user is in /home
6059 # Also does not add much value in combination with the TemporaryFileSystem.
@@ -67,15 +66,11 @@ let
6766 ProtectKernelModules = true;
6867 ProtectKernelTunables = true;
6968 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";
7469 RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
7570 RestrictNamespaces = true;
7671 RestrictRealtime = true;
7772 RestrictSUIDSGID = true;
78− SupplementaryGroups = optional enableRedis redisServer.user;
73+ SupplementaryGroups = optional (!hasCustomRedis) config.services.redis.servers.paperless-ng.user;
7974 SystemCallArchitectures = "native";
8075 SystemCallFilter = [ "@system-service" "~@privileged @resources @setuid @keyring" ];
8176 # Does not work well with the temporary root
@@ -86,22 +81,26 @@ in
8681 meta.maintainers = with maintainers; [ earvstedt Flakebi ];
8782
8883 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.
88+ '')
9089 ];
9190
92− options.services.paperless = {
91+ options.services.paperless-ng = {
9392 enable = mkOption {
9493 type = lib.types.bool;
9594 default = false;
9695 description = ''
97− Enable Paperless.
96+ Enable Paperless-ng.
9897
9998 When started, the Paperless database is automatically created if it doesn't
10099 exist and updated if the Paperless package has changed.
101100 Both tasks are achieved by running a Django migration.
102101
103102 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>.
105104 '';
106105 };
107106
@@ -134,13 +133,13 @@ in
134133 passwordFile = mkOption {
135134 type = types.nullOr types.path;
136135 default = null;
137− example = "/run/keys/paperless-password";
136+ example = "/run/keys/paperless-ng-password";
138137 description = ''
139138 A file containing the superuser password.
140139
141140 A superuser is required to access the web interface.
142141 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>.
144143
145144 The default superuser name is <literal>admin</literal>. To change it, set
146145 option <option>extraConfig.PAPERLESS_ADMIN_USER</option>.
@@ -169,9 +168,9 @@ in
169168 type = types.attrs;
170169 default = {};
171170 description = ''
172− Extra paperless config options.
171+ Extra paperless-ng config options.
173172
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>
175174 for available options.
176175 '';
177176 example = literalExpression ''
@@ -189,14 +188,15 @@ in
189188
190189 package = mkOption {
191190 type = types.package;
192− default = pkgs.paperless-ngx;
193− defaultText = literalExpression "pkgs.paperless-ngx";
191+ default = pkgs.paperless-ng;
192+ defaultText = literalExpression "pkgs.paperless-ng";
194193 description = "The Paperless package to use.";
195194 };
196195 };
197196
198197 config = mkIf cfg.enable {
199− services.redis.servers.paperless.enable = mkIf enableRedis true;
198+ # Enable redis if no special url is set
199+ services.redis.servers.paperless-ng.enable = mkIf (!hasCustomRedis) true;
200200
201201 systemd.tmpfiles.rules = [
202202 "d '${cfg.dataDir}' - ${cfg.user} ${config.users.users.${cfg.user}.group} - -"
@@ -208,28 +208,26 @@ in
208208 )
209209 ];
210210
211− systemd.services.paperless-scheduler = {
212− description = "Paperless scheduler";
211+ systemd.services.paperless-ng-server = {
212+ description = "Paperless document server";
213213 serviceConfig = defaultServiceConfig // {
214214 User = cfg.user;
215− ExecStart = "${cfg.package}/bin/paperless-ngx qcluster";
215+ ExecStart = "${cfg.package}/bin/paperless-ng qcluster";
216216 Restart = "on-failure";
217217 # The `mbind` syscall is needed for running the classifier.
218218 SystemCallFilter = defaultServiceConfig.SystemCallFilter ++ [ "mbind" ];
219− # Needs to talk to mail server for automated import rules
220− PrivateNetwork = false;
221219 };
222220 environment = env;
223221 wantedBy = [ "multi-user.target" ];
224− wants = [ "paperless-consumer.service" "paperless-web.service" ];
222+ wants = [ "paperless-ng-consumer.service" "paperless-ng-web.service" ];
225223
226224 preStart = ''
227− ln -sf ${manage} ${cfg.dataDir}/paperless-manage
225+ ln -sf ${manage} ${cfg.dataDir}/paperless-ng-manage
228226
229227 # Auto-migrate on first run or if the package has changed
230228 versionFile="${cfg.dataDir}/src-version"
231229 if [[ $(cat "$versionFile" 2>/dev/null) != ${cfg.package} ]]; then
232− ${cfg.package}/bin/paperless-ngx migrate
230+ ${cfg.package}/bin/paperless-ng migrate
233231 echo ${cfg.package} > "$versionFile"
234232 fi
235233 ''
@@ -240,48 +238,52 @@ in
240238 superuserStateFile="${cfg.dataDir}/superuser-state"
241239
242240 if [[ $(cat "$superuserStateFile" 2>/dev/null) != $superuserState ]]; then
243− ${cfg.package}/bin/paperless-ngx manage_superuser
241+ ${cfg.package}/bin/paperless-ng manage_superuser
244242 echo "$superuserState" > "$superuserStateFile"
245243 fi
246244 '';
247− } // optionalAttrs enableRedis {
248− after = [ "redis-paperless.service" ];
245+ } // optionalAttrs (!hasCustomRedis) {
246+ after = [ "redis-paperless-ng.service" ];
249247 };
250248
251− # Reading the user-provided password file requires root access
252− systemd.services.paperless-copy-password = mkIf (cfg.passwordFile != null) {
253− requiredBy = [ "paperless-scheduler.service" ];
254− before = [ "paperless-scheduler.service" ];
249+ # Password copying can't be implemented as a privileged preStart script
250+ # in 'paperless-ng-server' because 'defaultServiceConfig' limits the filesystem
251+ # paths accessible by the service.
252+ systemd.services.paperless-ng-copy-password = mkIf (cfg.passwordFile != null) {
253+ requiredBy = [ "paperless-ng-server.service" ];
254+ before = [ "paperless-ng-server.service" ];
255255 serviceConfig = {
256256 ExecStart = ''
257257 ${pkgs.coreutils}/bin/install --mode 600 --owner '${cfg.user}' --compare \
258258 '${cfg.passwordFile}' '${cfg.dataDir}/superuser-password'
259259 '';
260260 Type = "oneshot";
261+ # Needs to talk to mail server for automated import rules
262+ PrivateNetwork = false;
261263 };
262264 };
263265
264− systemd.services.paperless-consumer = {
266+ systemd.services.paperless-ng-consumer = {
265267 description = "Paperless document consumer";
266268 serviceConfig = defaultServiceConfig // {
267269 User = cfg.user;
268− ExecStart = "${cfg.package}/bin/paperless-ngx document_consumer";
270+ ExecStart = "${cfg.package}/bin/paperless-ng document_consumer";
269271 Restart = "on-failure";
270272 };
271273 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
273275 # during migrations
274− bindsTo = [ "paperless-scheduler.service" ];
275− after = [ "paperless-scheduler.service" ];
276+ bindsTo = [ "paperless-ng-server.service" ];
277+ after = [ "paperless-ng-server.service" ];
276278 };
277279
278− systemd.services.paperless-web = {
280+ systemd.services.paperless-ng-web = {
279281 description = "Paperless web server";
280282 serviceConfig = defaultServiceConfig // {
281283 User = cfg.user;
282284 ExecStart = ''
283285 ${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
285287 '';
286288 Restart = "on-failure";
287289
@@ -294,15 +296,15 @@ in
294296 };
295297 environment = env // {
296298 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";
298300 };
299301 # Allow the web interface to access the private /tmp directory of the server.
300302 # This is required to support uploading files via the web interface.
301− unitConfig.JoinsNamespaceOf = "paperless-scheduler.service";
302− # Bind to `paperless-scheduler` so that the web server never runs
303+ unitConfig.JoinsNamespaceOf = "paperless-ng-server.service";
304+ # Bind to `paperless-ng-server` so that the web server never runs
303305 # during migrations
304− bindsTo = [ "paperless-scheduler.service" ];
305− after = [ "paperless-scheduler.service" ];
306+ bindsTo = [ "paperless-ng-server.service" ];
307+ after = [ "paperless-ng-server.service" ];
306308 };
307309
308310 users = optionalAttrs (cfg.user == defaultUser) {
nixos/modules/services/misc/sourcehut/default.nix+1−1
@@ -1018,7 +1018,7 @@ in
10181018 inherit configIniOfService;
10191019 mainService = mkMerge [ baseService {
10201020 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 ''
10221022 # Fix Git hooks of repositories pre-dating https://github.com/NixOS/nixpkgs/pull/133984
10231023 (
10241024 set +f
nixos/modules/services/misc/taskserver/default.nix+6−10
@@ -106,7 +106,7 @@ let
106106
107107 certtool = "${pkgs.gnutls.bin}/bin/certtool";
108108
109− nixos-taskserver = with pkgs.python3.pkgs; buildPythonApplication {
109+ nixos-taskserver = with pkgs.python2.pkgs; buildPythonApplication {
110110 name = "nixos-taskserver";
111111
112112 src = pkgs.runCommand "nixos-taskserver-src" { preferLocalBuild = true; } ''
@@ -277,6 +277,10 @@ in {
277277 example = "::";
278278 description = ''
279279 The address (IPv4, IPv6 or DNS) to listen on.
280+
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>.
280284 '';
281285 };
282286
@@ -288,14 +292,6 @@ in {
288292 '';
289293 };
290294
291− openFirewall = mkOption {
292− type = types.bool;
293− default = false;
294− description = ''
295− Whether to open the firewall for the specified Taskserver port.
296− '';
297− };
298−
299295 fqdn = mkOption {
300296 type = types.str;
301297 default = "localhost";
@@ -564,7 +560,7 @@ in {
564560 '';
565561 };
566562 })
567− (mkIf (cfg.enable && cfg.openFirewall) {
563+ (mkIf (cfg.enable && cfg.listenHost != "localhost") {
568564 networking.firewall.allowedTCPPorts = [ cfg.listenPort ];
569565 })
570566 ];
nixos/modules/services/misc/taskserver/helper-tool.py+5−5
@@ -90,7 +90,7 @@ def certtool_cmd(*args, **kwargs):
9090 """
9191 return subprocess.check_output(
9292 [CERTTOOL_COMMAND] + list(args),
93− preexec_fn=lambda: os.umask(0o077),
93+ preexec_fn=lambda: os.umask(0077),
9494 stderr=subprocess.STDOUT,
9595 **kwargs
9696 )
@@ -164,7 +164,7 @@ def generate_key(org, user):
164164 pubcert = os.path.join(basedir, "public.cert")
165165
166166 try:
167− os.makedirs(basedir, mode=0o700)
167+ os.makedirs(basedir, mode=0700)
168168
169169 certtool_cmd("-p", "--bits", CERT_BITS, "--outfile", privkey)
170170
@@ -301,7 +301,7 @@ class Organisation(object):
301301 return None
302302 if name not in self.users.keys():
303303 output = taskd_cmd("add", "user", self.name, name,
304− capture_stdout=True, encoding='utf-8')
304+ capture_stdout=True)
305305 key = RE_USERKEY.search(output)
306306 if key is None:
307307 msg = "Unable to find key while creating user {}."
@@ -412,9 +412,9 @@ class Manager(object):
412412 if org is not None:
413413 if self.ignore_imperative and is_imperative(name):
414414 return
415− for user in list(org.users.keys()):
415+ for user in org.users.keys():
416416 org.del_user(user)
417− for group in list(org.groups.keys()):
417+ for group in org.groups.keys():
418418 org.del_group(group)
419419 taskd_cmd("remove", "org", name)
420420 del self._lazy_orgs[name]
nixos/modules/services/misc/zookeeper.nix+1−8
@@ -114,13 +114,6 @@ in {
114114 type = types.package;
115115 };
116116
117− jre = mkOption {
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;
123− };
124117 };
125118
126119
@@ -138,7 +131,7 @@ in {
138131 after = [ "network.target" ];
139132 serviceConfig = {
140133 ExecStart = ''
141− ${cfg.jre}/bin/java \
134+ ${pkgs.jre}/bin/java \
142135 -cp "${cfg.package}/lib/*:${configDir}" \
143136 ${escapeShellArgs cfg.extraCmdLineOptions} \
144137 -Dzookeeper.datadir.autocreate=false \
nixos/modules/services/monitoring/collectd.nix+26−30
@@ -5,15 +5,36 @@ with lib;
55let
66 cfg = config.services.collectd;
77
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}"
12+
13+ LoadPlugin syslog
14+ <Plugin "syslog">
15+ LogLevel "info"
16+ NotifyLevel "OKAY"
17+ </Plugin>
18+
19+ ${concatStrings (mapAttrsToList (plugin: pluginConfig: ''
20+ LoadPlugin ${plugin}
21+ <Plugin "${plugin}">
22+ ${pluginConfig}
23+ </Plugin>
24+ '') cfg.plugins)}
25+
26+ ${concatMapStrings (f: ''
27+ Include "${f}"
28+ '') cfg.include}
29+
30+ ${cfg.extraConfig}
31+ '';
1032
1133 conf = if cfg.validateConfig then
1234 pkgs.runCommand "collectd.conf" {} ''
1335 echo testing ${unvalidated_conf}
14− cp ${unvalidated_conf} collectd.conf
1536 # 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
1738 ${package}/bin/collectd -t -C collectd.conf
1839 cp ${unvalidated_conf} $out
1940 '' else unvalidated_conf;
@@ -102,8 +123,7 @@ in {
102123 extraConfig = mkOption {
103124 default = "";
104125 description = ''
105− Extra configuration for collectd. Use mkBefore to add lines before the
106− default config, and mkAfter to add them below.
126+ Extra configuration for collectd.
107127 '';
108128 type = lines;
109129 };
@@ -111,30 +131,6 @@ in {
111131 };
112132
113133 config = mkIf cfg.enable {
114− # 1200 is after the default (1000) but before mkAfter (1500).
115− services.collectd.extraConfig = lib.mkOrder 1200 ''
116− ${baseDirLine}
117− AutoLoadPlugin ${boolToString cfg.autoLoadPlugin}
118− Hostname "${config.networking.hostName}"
119−
120− LoadPlugin syslog
121− <Plugin "syslog">
122− LogLevel "info"
123− NotifyLevel "OKAY"
124− </Plugin>
125−
126− ${concatStrings (mapAttrsToList (plugin: pluginConfig: ''
127− LoadPlugin ${plugin}
128− <Plugin "${plugin}">
129− ${pluginConfig}
130− </Plugin>
131− '') cfg.plugins)}
132−
133− ${concatMapStrings (f: ''
134− Include "${f}"
135− '') cfg.include}
136− '';
137−
138134 systemd.tmpfiles.rules = [
139135 "d '${cfg.dataDir}' - ${cfg.user} - - -"
140136 ];
nixos/modules/services/monitoring/grafana.nix−5
@@ -214,11 +214,6 @@ let
214214 type = types.path;
215215 description = "Path grafana will watch for dashboards.";
216216 };
217− foldersFromFilesStructure = mkOption {
218− type = types.bool;
219− default = false;
220− description = "Use folder names from filesystem to create folders in Grafana.";
221− };
222217 };
223218 };
224219 };
nixos/modules/services/monitoring/mimir.nixdeleted−63
@@ -1,63 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−let
4− inherit (lib) escapeShellArgs mkEnableOption mkIf mkOption types;
5−
6− cfg = config.services.mimir;
7−
8− settingsFormat = pkgs.formats.yaml {};
9−in {
10− options.services.mimir = {
11− enable = mkEnableOption "mimir";
12−
13− configuration = mkOption {
14− type = (pkgs.formats.json {}).type;
15− default = {};
16− description = ''
17− Specify the configuration for Mimir in Nix.
18− '';
19− };
20−
21− configFile = mkOption {
22− type = types.nullOr types.path;
23− default = null;
24− description = ''
25− Specify a configuration file that Mimir should use.
26− '';
27− };
28− };
29−
30− config = mkIf cfg.enable {
31− assertions = [{
32− assertion = (
33− (cfg.configuration == {} -> cfg.configFile != null) &&
34− (cfg.configFile != null -> cfg.configuration == {})
35− );
36− message = ''
37− Please specify either
38− 'services.mimir.configuration' or
39− 'services.mimir.configFile'.
40− '';
41− }];
42−
43− systemd.services.mimir = {
44− description = "mimir Service Daemon";
45− wantedBy = [ "multi-user.target" ];
46−
47− serviceConfig = let
48− conf = if cfg.configFile == null
49− then settingsFormat.generate "config.yaml" cfg.configuration
50− else cfg.configFile;
51− in
52− {
53− ExecStart = "${pkgs.grafana-mimir}/bin/mimir --config.file=${conf}";
54− DynamicUser = true;
55− Restart = "always";
56− ProtectSystem = "full";
57− DevicePolicy = "closed";
58− NoNewPrivileges = true;
59− StateDirectory = "mimir";
60− };
61− };
62− };
63−}
nixos/modules/services/monitoring/nagios.nix+2−2
@@ -102,8 +102,8 @@ in
102102
103103 plugins = mkOption {
104104 type = types.listOf types.package;
105− default = with pkgs; [ monitoring-plugins msmtp mailutils ];
106− defaultText = literalExpression "[pkgs.monitoring-plugins pkgs.msmtp pkgs.mailutils]";
105+ default = with pkgs; [ monitoring-plugins ssmtp mailutils ];
106+ defaultText = literalExpression "[pkgs.monitoring-plugins pkgs.ssmtp pkgs.mailutils]";
107107 description = "
108108 Packages to be added to the Nagios <envar>PATH</envar>.
109109 Typically used to add plugins, but can be anything.
nixos/modules/services/monitoring/prometheus/default.nix+9−2
@@ -74,6 +74,7 @@ let
7474 }"
7575 "--web.listen-address=${cfg.listenAddress}:${builtins.toString cfg.port}"
7676 "--alertmanager.notification-queue-capacity=${toString cfg.alertmanagerNotificationQueueCapacity}"
77+ "--alertmanager.timeout=${toString cfg.alertmanagerTimeout}s"
7778 ] ++ optional (cfg.webExternalUrl != null) "--web.external-url=${cfg.webExternalUrl}"
7879 ++ optional (cfg.retentionTime != null) "--storage.tsdb.retention.time=${cfg.retentionTime}";
7980
@@ -1562,8 +1563,6 @@ in
15621563 (mkRenamedOptionModule [ "services" "prometheus2" ] [ "services" "prometheus" ])
15631564 (mkRemovedOptionModule [ "services" "prometheus" "environmentFile" ]
15641565 "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")
15671566 ];
15681567
15691568 options.services.prometheus = {
@@ -1720,6 +1719,14 @@ in
17201719 '';
17211720 };
17221721
1722+ alertmanagerTimeout = mkOption {
1723+ type = types.int;
1724+ default = 10;
1725+ description = ''
1726+ Alert manager HTTP API timeout (in seconds).
1727+ '';
1728+ };
1729+
17231730 webExternalUrl = mkOption {
17241731 type = types.nullOr types.str;
17251732 default = null;
nixos/modules/services/monitoring/prometheus/exporters.xml−21
@@ -19,7 +19,6 @@
1919<programlisting>
2020 services.prometheus.exporters.node = {
2121 enable = true;
22− port = 9100;
2322 enabledCollectors = [
2423 "logind"
2524 "systemd"
@@ -43,26 +42,6 @@
4342 <link xlink:href="https://nixos.org/nixos/options.html#prometheus.exporters">available
4443 options</link>.
4544 </para>
46−
47− <para>
48− Prometheus can now be configured to consume the metrics produced by the exporter:
49− <programlisting>
50− services.prometheus = {
51− # ...
52−
53− scrapeConfigs = [
54− {
55− job_name = "node";
56− static_configs = [{
57− targets = [ "localhost:${toString config.services.prometheus.exporters.node.port}" ];
58− }];
59− }
60− ];
61−
62− # ...
63− }
64− </programlisting>
65− </para>
6645 </section>
6746 <section xml:id="module-services-prometheus-exporters-new-exporter">
6847 <title>Adding a new exporter</title>
nixos/modules/services/monitoring/prometheus/exporters/bird.nix+1−1
@@ -17,7 +17,7 @@ in
1717 };
1818 birdSocket = mkOption {
1919 type = types.path;
20− default = "/run/bird/bird.ctl";
20+ default = "/var/run/bird.ctl";
2121 description = ''
2222 Path to BIRD2 (or BIRD1 v4) socket.
2323 '';
nixos/modules/services/monitoring/prometheus/exporters/kea.nix−4
@@ -25,10 +25,6 @@ in {
2525 };
2626 };
2727 serviceOpts = {
28− after = [
29− "kea-dhcp4-server.service"
30− "kea-dhcp6-server.service"
31− ];
3228 serviceConfig = {
3329 User = "kea";
3430 ExecStart = ''
nixos/modules/services/monitoring/prometheus/exporters/varnish.nix+2−3
@@ -45,8 +45,7 @@ in
4545 };
4646 instance = mkOption {
4747 type = types.nullOr types.str;
48− default = config.services.varnish.stateDir;
49− defaultText = lib.literalExpression "config.services.varnish.stateDir";
48+ default = null;
5049 description = ''
5150 varnishstat -n value.
5251 '';
@@ -67,7 +66,7 @@ in
6766 };
6867 };
6968 serviceOpts = {
70− path = [ config.services.varnish.package ];
69+ path = [ pkgs.varnish ];
7170 serviceConfig = {
7271 RestartSec = mkDefault 1;
7372 DynamicUser = false;
nixos/modules/services/network-filesystems/ipfs.nix+18−30
@@ -1,16 +1,16 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, options, ... }:
22with lib;
33let
44 cfg = config.services.ipfs;
5+ opt = options.services.ipfs;
56
6− ipfsFlags = utils.escapeSystemdExecArgs (
7− optional cfg.autoMount "--mount" ++
8− optional cfg.enableGC "--enable-gc" ++
9− optional (cfg.serviceFdlimit != null) "--manage-fdlimit=false" ++
10− optional (cfg.defaultMode == "offline") "--offline" ++
11− optional (cfg.defaultMode == "norouting") "--routing=none" ++
12− cfg.extraFlags
13− );
7+ ipfsFlags = toString ([
8+ (optionalString cfg.autoMount "--mount")
9+ (optionalString cfg.enableGC "--enable-gc")
10+ (optionalString (cfg.serviceFdlimit != null) "--manage-fdlimit=false")
11+ (optionalString (cfg.defaultMode == "offline") "--offline")
12+ (optionalString (cfg.defaultMode == "norouting") "--routing=none")
13+ ] ++ cfg.extraFlags);
1414
1515 profile =
1616 if cfg.localDiscovery
@@ -239,10 +239,7 @@ in
239239 "d '${cfg.ipnsMountDir}' - ${cfg.user} ${cfg.group} - -"
240240 ];
241241
242− # The hardened systemd unit breaks the fuse-mount function according to documentation in the unit file itself
243− systemd.packages = if cfg.autoMount
244− then [ cfg.package.systemd_unit ]
245− else [ cfg.package.systemd_unit_hardened ];
242+ systemd.packages = [ cfg.package ];
246243
247244 systemd.services.ipfs = {
248245 path = [ "/run/wrappers" cfg.package ];
@@ -254,27 +251,23 @@ in
254251 else
255252 # 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.
256253 rm -vf "$IPFS_PATH/api"
257− '' + optionalString cfg.autoMigrate ''
258− ${pkgs.ipfs-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
259− '' + ''
254+
260255 ipfs --offline config profile apply ${profile}
261256 fi
262257 '' + optionalString cfg.autoMount ''
263258 ipfs --offline config Mounts.FuseAllowOther --json true
264259 ipfs --offline config Mounts.IPFS ${cfg.ipfsMountDir}
265260 ipfs --offline config Mounts.IPNS ${cfg.ipnsMountDir}
261+ '' + optionalString cfg.autoMigrate ''
262+ ${pkgs.ipfs-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
266263 '' + ''
267264 ipfs --offline config show \
268265 | ${pkgs.jq}/bin/jq '. * $extraConfig' --argjson extraConfig ${
269− escapeShellArg (builtins.toJSON (
270− recursiveUpdate
271− {
272− Addresses.API = cfg.apiAddress;
273− Addresses.Gateway = cfg.gatewayAddress;
274− Addresses.Swarm = cfg.swarmAddress;
275− }
276− cfg.extraConfig
277− ))
266+ escapeShellArg (builtins.toJSON ({
267+ Addresses.API = cfg.apiAddress;
268+ Addresses.Gateway = cfg.gatewayAddress;
269+ Addresses.Swarm = cfg.swarmAddress;
270+ } // cfg.extraConfig))
278271 } \
279272 | ipfs --offline config replace -
280273 '';
@@ -282,8 +275,6 @@ in
282275 ExecStart = [ "" "${cfg.package}/bin/ipfs daemon ${ipfsFlags}" ];
283276 User = cfg.user;
284277 Group = cfg.group;
285− StateDirectory = "";
286− ReadWritePaths = [ "" cfg.dataDir ];
287278 } // optionalAttrs (cfg.serviceFdlimit != null) { LimitNOFILE = cfg.serviceFdlimit; };
288279 } // optionalAttrs (!cfg.startWhenNeeded) {
289280 wantedBy = [ "default.target" ];
@@ -315,9 +306,6 @@ in
315306 in
316307 [ "" "%t/ipfs.sock" ] ++ lib.optional (fromCfg != null) fromCfg;
317308 };
318− };
319309
320− meta = {
321− maintainers = with lib.maintainers; [ Luflosi ];
322310 };
323311}
nixos/modules/services/networking/asterisk.nix+43−11
@@ -14,9 +14,28 @@ let
1414
1515 # Add filecontents from files of useTheseDefaultConfFiles to confFiles, do not override
1616 defaultConfFiles = subtractLists (attrNames cfg.confFiles) cfg.useTheseDefaultConfFiles;
17− allConfFiles = {
17+ allConfFiles =
18+ cfg.confFiles //
19+ builtins.listToAttrs (map (x: { name = x;
20+ value = builtins.readFile (cfg.package + "/etc/asterisk/" + x); })
21+ defaultConfFiles);
22+
23+ asteriskEtc = pkgs.stdenv.mkDerivation
24+ ((mapAttrs' (name: value: nameValuePair
25+ # Fudge the names to make bash happy
26+ ((replaceChars ["."] ["_"] name) + "_")
27+ (value)
28+ ) allConfFiles) //
29+ {
30+ confFilesString = concatStringsSep " " (
31+ attrNames allConfFiles
32+ );
33+
34+ name = "asterisk-etc";
35+
1836 # Default asterisk.conf file
19− "asterisk.conf".text = ''
37+ # (Notice that astetcdir will be set to the path of this derivation)
38+ asteriskConf = ''
2039 [directories]
2140 astetcdir => /etc/asterisk
2241 astmoddir => ${cfg.package}/lib/asterisk/modules
@@ -29,28 +48,43 @@ let
2948 astrundir => /run/asterisk
3049 astlogdir => /var/log/asterisk
3150 astsbindir => ${cfg.package}/sbin
32− ${cfg.extraConfig}
3351 '';
52+ extraConf = cfg.extraConfig;
3453
3554 # Loading all modules by default is considered sensible by the authors of
3655 # "Asterisk: The Definitive Guide". Secure sites will likely want to
3756 # specify their own "modules.conf" in the confFiles option.
38− "modules.conf".text = ''
57+ modulesConf = ''
3958 [modules]
4059 autoload=yes
4160 '';
4261
4362 # Use syslog for logging so logs can be viewed with journalctl
44− "logger.conf".text = ''
63+ loggerConf = ''
4564 [general]
4665
4766 [logfiles]
4867 syslog.local0 => notice,warning,error
4968 '';
50− } //
51− mapAttrs (name: text: { inherit text; }) cfg.confFiles //
52− listToAttrs (map (x: nameValuePair x { source = cfg.package + "/etc/asterisk/" + x; }) defaultConfFiles);
5369
70+ buildCommand = ''
71+ mkdir -p "$out"
72+
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
76+
77+ echo "$modulesConf" > "$out"/modules.conf
78+
79+ echo "$loggerConf" > "$out"/logger.conf
80+
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"
85+ done
86+ '';
87+ });
5488in
5589
5690{
@@ -175,9 +209,7 @@ in
175209 config = mkIf cfg.enable {
176210 environment.systemPackages = [ cfg.package ];
177211
178− environment.etc = mapAttrs' (name: value:
179− nameValuePair "asterisk/${name}" value
180− ) allConfFiles;
212+ environment.etc.asterisk.source = asteriskEtc;
181213
182214 users.users.asterisk =
183215 { name = asteriskUser;
nixos/modules/services/networking/bird.nix+2−1
@@ -68,7 +68,8 @@ in
6868 systemd.services.bird2 = {
6969 description = "BIRD Internet Routing Daemon";
7070 wantedBy = [ "multi-user.target" ];
71− reloadTriggers = [ config.environment.etc."bird/bird2.conf".source ];
71+ reloadIfChanged = true;
72+ restartTriggers = [ config.environment.etc."bird/bird2.conf".source ];
7273 serviceConfig = {
7374 Type = "forking";
7475 Restart = "on-failure";
nixos/modules/services/networking/cloudflare-dyndns.nixdeleted−93
@@ -1,93 +0,0 @@
1−{ config, pkgs, lib, ... }:
2−
3−with lib;
4−
5−let
6− cfg = config.services.cloudflare-dyndns;
7−in
8−{
9− options = {
10− services.cloudflare-dyndns = {
11− enable = mkEnableOption "Cloudflare Dynamic DNS Client";
12−
13− apiTokenFile = mkOption {
14− type = types.nullOr types.str;
15− default = null;
16− description = ''
17− The path to a file containing the CloudFlare API token.
18−
19− The file must have the form `CLOUDFLARE_API_TOKEN=...`
20− '';
21− };
22−
23− domains = mkOption {
24− type = types.listOf types.str;
25− default = [ ];
26− description = ''
27− List of domain names to update records for.
28− '';
29− };
30−
31− proxied = mkOption {
32− type = types.bool;
33− default = false;
34− description = ''
35− Whether this is a DNS-only record, or also being proxied through CloudFlare.
36− '';
37− };
38−
39− ipv4 = mkOption {
40− type = types.bool;
41− default = true;
42− description = ''
43− Whether to enable setting IPv4 A records.
44− '';
45− };
46−
47− ipv6 = mkOption {
48− type = types.bool;
49− default = false;
50− description = ''
51− Whether to enable setting IPv6 AAAA records.
52− '';
53− };
54−
55− deleteMissing = mkOption {
56− type = types.bool;
57− default = false;
58− description = ''
59− Whether to delete the record when no IP address is found.
60− '';
61− };
62− };
63− };
64−
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" ];
70− startAt = "*:0/5";
71−
72− environment = {
73− CLOUDFLARE_DOMAINS = toString cfg.domains;
74− };
75−
76− serviceConfig = {
77− Type = "simple";
78− DynamicUser = true;
79− StateDirectory = "cloudflare-dyndns";
80− EnvironmentFile = cfg.apiTokenFile;
81− ExecStart =
82− let
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";
88− in
89− "${pkgs.cloudflare-dyndns}/bin/cloudflare-dyndns ${toString args}";
90− };
91− };
92− };
93−}
nixos/modules/services/networking/consul.nix+6−32
@@ -80,21 +80,13 @@ in
8080 The name of the interface to pull the bind_addr from.
8181 '';
8282 };
83− };
8483
85− forceAddrFamily = mkOption {
86− type = types.enum [ "any" "ipv4" "ipv6" ];
87− default = "any";
88− description = ''
89− Whether to bind ipv4/ipv6 or both kind of addresses.
90− '';
9184 };
9285
9386 forceIpv4 = mkOption {
94− type = types.nullOr types.bool;
95− default = null;
87+ type = types.bool;
88+ default = false;
9689 description = ''
97− Deprecated: Use consul.forceAddrFamily instead.
9890 Whether we should force the interfaces to only pull ipv4 addresses.
9991 '';
10092 };
@@ -183,13 +175,6 @@ in
183175 systemPackages = [ cfg.package ];
184176 };
185177
186− warnings = lib.flatten [
187− (lib.optional (cfg.forceIpv4 != null) ''
188− The option consul.forceIpv4 is deprecated, please use
189− consul.forceAddrFamily instead.
190− '')
191− ];
192−
193178 systemd.services.consul = {
194179 wantedBy = [ "multi-user.target" ];
195180 after = [ "network.target" ] ++ systemdDevices;
@@ -211,21 +196,15 @@ in
211196 });
212197
213198 path = with pkgs; [ iproute2 gnugrep gawk consul ];
214− preStart = let
215− family = if cfg.forceAddrFamily == "ipv6" then
216− "-6"
217− else if cfg.forceAddrFamily == "ipv4" then
218− "-4"
219− else
220− "";
221− in ''
199+ preStart = ''
222200 mkdir -m 0700 -p ${dataDir}
223201 chown -R consul ${dataDir}
224202
225203 # Determine interface addresses
226204 getAddrOnce () {
227− ip ${family} addr show dev "$1" scope global \
228− | awk -F '[ /\t]*' '/inet/ {print $3}' | head -n 1
205+ ip addr show dev "$1" \
206+ | grep 'inet${optionalString (cfg.forceIpv4) " "}.*scope global' \
207+ | awk -F '[ /\t]*' '{print $3}' | head -n 1
229208 }
230209 getAddr () {
231210 ADDR="$(getAddrOnce $1)"
@@ -255,11 +234,6 @@ in
255234 };
256235 }
257236
258− # deprecated
259− (mkIf (cfg.forceIpv4 != null && cfg.forceIpv4) {
260− services.consul.forceAddrFamily = "ipv4";
261− })
262−
263237 (mkIf (cfg.alerts.enable) {
264238 systemd.services.consul-alerts = {
265239 wantedBy = [ "multi-user.target" ];
nixos/modules/services/networking/create_ap.nixdeleted−50
@@ -1,50 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−
5−let
6− cfg = config.services.create_ap;
7− configFile = pkgs.writeText "create_ap.conf" (generators.toKeyValue { } cfg.settings);
8−in {
9− options = {
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 ]);
14− default = {};
15− description = ''
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.
19− '';
20− example = {
21− INTERNET_IFACE = "eth0";
22− WIFI_IFACE = "wlan0";
23− SSID = "My Wifi Hotspot";
24− PASSPHRASE = "12345678";
25− };
26− };
27− };
28− };
29−
30− config = mkIf cfg.enable {
31−
32− systemd = {
33− services.create_ap = {
34− wantedBy = [ "multi-user.target" ];
35− description = "Create AP Service";
36− after = [ "network.target" ];
37− restartTriggers = [ configFile ];
38− serviceConfig = {
39− ExecStart = "${pkgs.linux-wifi-hotspot}/bin/create_ap --config ${configFile}";
40− KillSignal = "SIGINT";
41− Restart = "on-failure";
42− };
43− };
44− };
45−
46− };
47−
48− meta.maintainers = with lib.maintainers; [ onny ];
49−
50−}
nixos/modules/services/networking/dhcpd.nix+3−5
@@ -7,7 +7,7 @@ let
77 cfg4 = config.services.dhcpd4;
88 cfg6 = config.services.dhcpd6;
99
10− writeConfig = postfix: cfg: pkgs.writeText "dhcpd.conf"
10+ writeConfig = cfg: pkgs.writeText "dhcpd.conf"
1111 ''
1212 default-lease-time 600;
1313 max-lease-time 7200;
@@ -21,9 +21,7 @@ let
2121 (machine: ''
2222 host ${machine.hostName} {
2323 hardware ethernet ${machine.ethernetAddress};
24− fixed-address${
25− optionalString (postfix == "6") postfix
26− } ${machine.ipAddress};
24+ fixed-address ${machine.ipAddress};
2725 }
2826 '')
2927 cfg.machines
@@ -35,7 +33,7 @@ let
3533 configFile =
3634 if cfg.configFile != null
3735 then cfg.configFile
38− else writeConfig postfix cfg;
36+ else writeConfig cfg;
3937 leaseFile = "/var/lib/dhcpd${postfix}/dhcpd.leases";
4038 args = [
4139 "@${pkgs.dhcp}/sbin/dhcpd" "dhcpd${postfix}" "-${postfix}"
nixos/modules/services/networking/envoy.nixdeleted−84
@@ -1,84 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−
5−let
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}"
12− cp "${file}" "$out"
13− '';
14−
15−in
16−
17−{
18− options.services.envoy = {
19− enable = mkEnableOption "Envoy reverse proxy";
20−
21− settings = mkOption {
22− type = format.type;
23− default = { };
24− example = literalExpression ''
25− {
26− admin = {
27− access_log_path = "/dev/null";
28− address = {
29− socket_address = {
30− protocol = "TCP";
31− address = "127.0.0.1";
32− port_value = 9901;
33− };
34− };
35− };
36− static_resources = {
37− listeners = [];
38− clusters = [];
39− };
40− }
41− '';
42− description = ''
43− Specify the configuration for Envoy in Nix.
44− '';
45− };
46− };
47−
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" ];
55− serviceConfig = {
56− ExecStart = "${pkgs.envoy}/bin/envoy -c ${validateConfig conf}";
57− DynamicUser = true;
58− Restart = "no";
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;
70− ProtectClock = true;
71− ProtectControlGroups = true;
72− ProtectHome = true;
73− ProtectKernelLogs = true;
74− ProtectKernelModules = true;
75− ProtectKernelTunables = true;
76− ProtectProc = "ptraceable";
77− ProtectHostname = true;
78− ProtectSystem = "strict";
79− UMask = "0066";
80− SystemCallFilter = "~@clock @module @mount @reboot @swap @obsolete @cpu-emulation";
81− };
82− };
83− };
84−}
nixos/modules/services/networking/headscale.nix+1−1
@@ -479,7 +479,7 @@ in
479479 NoNewPrivileges = true;
480480 LockPersonality = true;
481481 RestrictRealtime = true;
482− SystemCallFilter = [ "@system-service" "~@privileged" "@chown" ];
482+ SystemCallFilter = [ "@system-service" "~@priviledged" "@chown" ];
483483 SystemCallArchitectures = "native";
484484 RestrictAddressFamilies = "AF_INET AF_INET6 AF_UNIX";
485485 };
nixos/modules/services/networking/https-dns-proxy.nixdeleted−128
@@ -1,128 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−let
4− inherit (lib)
5− concatStringsSep
6− mkEnableOption mkIf mkOption types;
7−
8− cfg = config.services.https-dns-proxy;
9−
10− providers = {
11− cloudflare = {
12− ips = [ "1.1.1.1" "1.0.0.1" ];
13− url = "https://cloudflare-dns.com/dns-query";
14− };
15− google = {
16− ips = [ "8.8.8.8" "8.8.4.4" ];
17− url = "https://dns.google/dns-query";
18− };
19− quad9 = {
20− ips = [ "9.9.9.9" "149.112.112.112" ];
21− url = "https://dns.quad9.net/dns-query";
22− };
23− };
24−
25− defaultProvider = "quad9";
26−
27− providerCfg =
28− let
29− isCustom = cfg.provider.kind == "custom";
30− in
31− lib.concatStringsSep " " [
32− "-b"
33− (concatStringsSep "," (if isCustom then cfg.provider.ips else providers."${cfg.provider.kind}".ips))
34− "-r"
35− (if isCustom then cfg.provider.url else providers."${cfg.provider.kind}".url)
36− ];
37−
38−in
39−{
40− meta.maintainers = with lib.maintainers; [ peterhoeg ];
41−
42− ###### interface
43−
44− options.services.https-dns-proxy = {
45− enable = mkEnableOption "https-dns-proxy daemon";
46−
47− address = mkOption {
48− description = "The address on which to listen";
49− type = types.str;
50− default = "127.0.0.1";
51− };
52−
53− port = mkOption {
54− description = "The port on which to listen";
55− type = types.port;
56− default = 5053;
57− };
58−
59− provider = {
60− kind = mkOption {
61− description = ''
62− The upstream provider to use or custom in case you do not trust any of
63− the predefined providers or just want to use your own.
64−
65− The default is ${defaultProvider} and there are privacy and security trade-offs
66− when using any upstream provider. Please consider that before using any
67− of them.
68−
69− If you pick a custom provider, you will need to provide the bootstrap
70− IP addresses as well as the resolver https URL.
71− '';
72− type = types.enum ((builtins.attrNames providers) ++ [ "custom" ]);
73− default = defaultProvider;
74− };
75−
76− ips = mkOption {
77− description = "The custom provider IPs";
78− type = types.listOf types.str;
79− };
80−
81− url = mkOption {
82− description = "The custom provider URL";
83− type = types.str;
84− };
85− };
86−
87− preferIPv4 = mkOption {
88− description = ''
89− https_dns_proxy will by default use IPv6 and fail if it is not available.
90− To play it safe, we choose IPv4.
91− '';
92− type = types.bool;
93− default = true;
94− };
95−
96− extraArgs = mkOption {
97− description = "Additional arguments to pass to the process.";
98− type = types.listOf types.str;
99− default = [ "-v" ];
100− };
101− };
102−
103− ###### implementation
104−
105− config = lib.mkIf cfg.enable {
106− systemd.services.https-dns-proxy = {
107− description = "DNS to DNS over HTTPS (DoH) proxy";
108− after = [ "network.target" ];
109− wantedBy = [ "multi-user.target" ];
110− serviceConfig = rec {
111− Type = "exec";
112− DynamicUser = true;
113− ExecStart = lib.concatStringsSep " " (
114− [
115− "${pkgs.https-dns-proxy}/bin/https_dns_proxy"
116− "-a ${toString cfg.address}"
117− "-p ${toString cfg.port}"
118− "-l -"
119− providerCfg
120− ]
121− ++ lib.optional cfg.preferIPv4 "-4"
122− ++ cfg.extraArgs
123− );
124− Restart = "on-failure";
125− };
126− };
127− };
128−}
nixos/modules/services/networking/iwd.nix+6−15
@@ -1,21 +1,12 @@
11{ config, lib, pkgs, ... }:
22
3−let
4− inherit (lib)
5− mkEnableOption mkIf mkOption types
6− recursiveUpdate;
3+with lib;
74
5+let
86 cfg = config.networking.wireless.iwd;
97 ini = pkgs.formats.ini { };
10− defaults = {
11− # without UseDefaultInterface, sometimes wlan0 simply goes AWOL with NetworkManager
12− # https://iwd.wiki.kernel.org/interface_lifecycle#interface_management_in_iwd
13− General.UseDefaultInterface = with config.networking.networkmanager; (enable && (wifi.backend == "iwd"));
14− };
15− configFile = ini.generate "main.conf" (recursiveUpdate defaults cfg.settings);
16−
17−in
18−{
8+ configFile = ini.generate "main.conf" cfg.settings;
9+in {
1910 options.networking.wireless.iwd = {
2011 enable = mkEnableOption "iwd";
2112
@@ -47,10 +38,10 @@ in
4738 '';
4839 }];
4940
50− environment.etc."iwd/${configFile.name}".source = configFile;
41+ environment.etc."iwd/main.conf".source = configFile;
5142
5243 # for iwctl
53− environment.systemPackages = [ pkgs.iwd ];
44+ environment.systemPackages = [ pkgs.iwd ];
5445
5546 services.dbus.packages = [ pkgs.iwd ];
5647
nixos/modules/services/networking/kea.nix+8−74
@@ -9,26 +9,20 @@ with lib;
99let
1010 cfg = config.services.kea;
1111
12− xor = x: y: (!x && y) || (x && !y);
1312 format = pkgs.formats.json {};
1413
15− chooseNotNull = x: y: if x != null then x else y;
16−
17− ctrlAgentConfig = chooseNotNull cfg.ctrl-agent.configFile (format.generate "kea-ctrl-agent.conf" {
14+ ctrlAgentConfig = format.generate "kea-ctrl-agent.conf" {
1815 Control-agent = cfg.ctrl-agent.settings;
19− });
20−
21− dhcp4Config = chooseNotNull cfg.dhcp4.configFile (format.generate "kea-dhcp4.conf" {
16+ };
17+ dhcp4Config = format.generate "kea-dhcp4.conf" {
2218 Dhcp4 = cfg.dhcp4.settings;
23− });
24−
25− dhcp6Config = chooseNotNull cfg.dhcp6.configFile (format.generate "kea-dhcp6.conf" {
19+ };
20+ dhcp6Config = format.generate "kea-dhcp6.conf" {
2621 Dhcp6 = cfg.dhcp6.settings;
27− });
28−
29− dhcpDdnsConfig = chooseNotNull cfg.dhcp-ddns.configFile (format.generate "kea-dhcp-ddns.conf" {
22+ };
23+ dhcpDdnsConfig = format.generate "kea-dhcp-ddns.conf" {
3024 DhcpDdns = cfg.dhcp-ddns.settings;
31− });
25+ };
3226
3327 package = pkgs.kea;
3428in
@@ -51,17 +45,6 @@ in
5145 '';
5246 };
5347
54− configFile = mkOption {
55− type = nullOr path;
56− default = null;
57− description = ''
58− Kea Control Agent configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/agent.html"/>.
59−
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.
62− '';
63− };
64−
6548 settings = mkOption {
6649 type = format.type;
6750 default = null;
@@ -90,17 +73,6 @@ in
9073 '';
9174 };
9275
93− configFile = mkOption {
94− type = nullOr path;
95− default = null;
96− description = ''
97− Kea DHCP4 configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/dhcp4-srv.html"/>.
98−
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.
101− '';
102− };
103−
10476 settings = mkOption {
10577 type = format.type;
10678 default = null;
@@ -150,17 +122,6 @@ in
150122 '';
151123 };
152124
153− configFile = mkOption {
154− type = nullOr path;
155− default = null;
156− description = ''
157− Kea DHCP6 configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/dhcp6-srv.html"/>.
158−
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.
161− '';
162− };
163−
164125 settings = mkOption {
165126 type = format.type;
166127 default = null;
@@ -211,17 +172,6 @@ in
211172 '';
212173 };
213174
214− configFile = mkOption {
215− type = nullOr path;
216− default = null;
217− description = ''
218− Kea DHCP-DDNS configuration as a path, see <link xlink:href="https://kea.readthedocs.io/en/kea-${package.version}/arm/ddns.html"/>.
219−
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.
222− '';
223− };
224−
225175 settings = mkOption {
226176 type = format.type;
227177 default = null;
@@ -264,10 +214,6 @@ in
264214 }
265215
266216 (mkIf cfg.ctrl-agent.enable {
267− assertions = [{
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.";
270− }];
271217
272218 environment.etc."kea/ctrl-agent.conf".source = ctrlAgentConfig;
273219
@@ -306,10 +252,6 @@ in
306252 })
307253
308254 (mkIf cfg.dhcp4.enable {
309− assertions = [{
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.";
312− }];
313255
314256 environment.etc."kea/dhcp4-server.conf".source = dhcp4Config;
315257
@@ -353,10 +295,6 @@ in
353295 })
354296
355297 (mkIf cfg.dhcp6.enable {
356− assertions = [{
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.";
359− }];
360298
361299 environment.etc."kea/dhcp6-server.conf".source = dhcp6Config;
362300
@@ -398,10 +336,6 @@ in
398336 })
399337
400338 (mkIf cfg.dhcp-ddns.enable {
401− assertions = [{
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.";
404− }];
405339
406340 environment.etc."kea/dhcp-ddns.conf".source = dhcpDdnsConfig;
407341
nixos/modules/services/networking/lxd-image-server.nix+11−7
@@ -51,14 +51,18 @@ in
5151
5252 environment.etc."lxd-image-server/config.toml".source = format.generate "config.toml" cfg.settings;
5353
54− services.logrotate.settings.lxd-image-server = {
55− files = "/var/log/lxd-image-server/lxd-image-server.log";
54+ services.logrotate.paths.lxd-image-server = {
55+ path = "/var/log/lxd-image-server/lxd-image-server.log";
5656 frequency = "daily";
57− rotate = 21;
58− create = "755 lxd-image-server ${cfg.group}";
59− compress = true;
60− delaycompress = true;
61− copytruncate = true;
57+ keep = 21;
58+ extraConfig = ''
59+ create 755 lxd-image-server ${cfg.group}
60+ missingok
61+ compress
62+ delaycompress
63+ copytruncate
64+ notifempty
65+ '';
6266 };
6367
6468 systemd.tmpfiles.rules = [
nixos/modules/services/networking/mozillavpn.nixdeleted−19
@@ -1,19 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−{
4− options.services.mozillavpn.enable = lib.mkOption {
5− type = lib.types.bool;
6− default = false;
7− description = ''
8− Enable the Mozilla VPN daemon.
9− '';
10− };
11−
12− config = lib.mkIf config.services.mozillavpn.enable {
13− environment.systemPackages = [ pkgs.mozillavpn ];
14− services.dbus.packages = [ pkgs.mozillavpn ];
15− systemd.packages = [ pkgs.mozillavpn ];
16− };
17−
18− meta.maintainers = with lib.maintainers; [ andersk ];
19−}
nixos/modules/services/networking/nbd.nix+15−28
@@ -4,34 +4,28 @@ with lib;
44
55let
66 cfg = config.services.nbd;
7+ configFormat = pkgs.formats.ini { };
78 iniFields = with types; attrsOf (oneOf [ bool int float str ]);
8− # The `[generic]` section must come before all the others in the
9− # config file. This means we can't just dump an attrset to INI
10− # because that sorts the sections by name. Instead, we serialize it
11− # on its own first.
12− genericSection = {
13− generic = (cfg.server.extraOptions // {
14− user = "root";
15− group = "root";
16− port = cfg.server.listenPort;
17− } // (optionalAttrs (cfg.server.listenAddress != null) {
18− listenaddr = cfg.server.listenAddress;
19− }));
20− };
21− exportSections =
22− mapAttrs
9+ serverConfig = configFormat.generate "nbd-server-config"
10+ ({
11+ generic =
12+ (cfg.server.extraOptions // {
13+ user = "root";
14+ group = "root";
15+ port = cfg.server.listenPort;
16+ } // (optionalAttrs (cfg.server.listenAddress != null) {
17+ listenaddr = cfg.server.listenAddress;
18+ }));
19+ }
20+ // (mapAttrs
2321 (_: { path, allowAddresses, extraOptions }:
2422 extraOptions // {
2523 exportname = path;
2624 } // (optionalAttrs (allowAddresses != null) {
2725 authfile = pkgs.writeText "authfile" (concatStringsSep "\n" allowAddresses);
2826 }))
29− cfg.server.exports;
30− serverConfig =
31− pkgs.writeText "nbd-server-config" ''
32− ${lib.generators.toINI {} genericSection}
33− ${lib.generators.toINI {} exportSections}
34− '';
27+ cfg.server.exports)
28+ );
3529 splitLists =
3630 partition
3731 (path: hasPrefix "/dev/" path)
@@ -109,13 +103,6 @@ in
109103 };
110104
111105 config = mkIf cfg.server.enable {
112− assertions = [
113− {
114− assertion = !(cfg.server.exports ? "generic");
115− message = "services.nbd.server exports must not be named 'generic'";
116− }
117− ];
118−
119106 boot.kernelModules = [ "nbd" ];
120107
121108 systemd.services.nbd-server = {
nixos/modules/services/networking/ncdns.nix+2−2
@@ -58,7 +58,7 @@ in
5858
5959 address = mkOption {
6060 type = types.str;
61− default = "[::1]";
61+ default = "127.0.0.1";
6262 description = ''
6363 The IP address the ncdns resolver will bind to. Leave this unchanged
6464 if you do not wish to directly expose the resolver.
@@ -202,7 +202,7 @@ in
202202 config = mkIf cfg.enable {
203203
204204 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}";
206206 luaConfig =
207207 if cfg.dnssec.enable
208208 then ''readTrustAnchorsFromFile("${cfg.dnssec.keys.public}")''
nixos/modules/services/networking/networkmanager.nix+53−56
@@ -5,6 +5,18 @@ with lib;
55let
66 cfg = config.networking.networkmanager;
77
8+ basePackages = with pkgs; [
9+ modemmanager
10+ networkmanager
11+ networkmanager-fortisslvpn
12+ networkmanager-iodine
13+ networkmanager-l2tp
14+ networkmanager-openconnect
15+ networkmanager-openvpn
16+ networkmanager-vpnc
17+ networkmanager-sstp
18+ ] ++ optional (!delegateWireless && !enableIwd) wpa_supplicant;
19+
820 delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [];
921
1022 enableIwd = cfg.wifi.backend == "iwd";
@@ -133,15 +145,6 @@ let
133145 '';
134146 };
135147
136− packages = [
137− pkgs.modemmanager
138− pkgs.networkmanager
139− ]
140− ++ cfg.plugins
141− ++ lib.optionals (!delegateWireless && !enableIwd) [
142− pkgs.wpa_supplicant
143− ];
144−
145148in {
146149
147150 meta = {
@@ -224,33 +227,17 @@ in {
224227 '';
225228 };
226229
227− plugins = mkOption {
228− type =
229− let
230− networkManagerPluginPackage = types.package // {
231− description = "NetworkManager plug-in";
232− check =
233− p:
234− lib.assertMsg
235− (types.package.check p
236− && p ? networkManagerPlugin
237− && lib.isString p.networkManagerPlugin)
238− ''
239− Package ‘${p.name}’, is not a NetworkManager plug-in.
240− Those need to have a ‘networkManagerPlugin’ attribute.
241− '';
242− };
243− in
244− types.listOf networkManagerPluginPackage;
230+ packages = mkOption {
231+ type = types.listOf types.package;
245232 default = [ ];
246233 description = ''
247− List of NetworkManager plug-ins to enable.
248− Some plug-ins are enabled by the NetworkManager module by default.
234+ Extra packages that provide NetworkManager plugins.
249235 '';
236+ apply = list: basePackages ++ list;
250237 };
251238
252239 dhcp = mkOption {
253− type = types.enum [ "dhcpcd" "internal" ];
240+ type = types.enum [ "dhclient" "dhcpcd" "internal" ];
254241 default = "internal";
255242 description = ''
256243 Which program (or internal library) should be used for DHCP.
@@ -393,7 +380,7 @@ in {
393380 </para><para>
394381 If you enable this option the
395382 <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
397384 so you don't need to to that yourself.
398385 '';
399386 };
@@ -412,9 +399,6 @@ in {
412399 };
413400
414401 imports = [
415− (mkRenamedOptionModule
416− [ "networking" "networkmanager" "packages" ]
417− [ "networking" "networkmanager" "plugins" ])
418402 (mkRenamedOptionModule [ "networking" "networkmanager" "useDnsmasq" ] [ "networking" "networkmanager" "dns" ])
419403 (mkRemovedOptionModule ["networking" "networkmanager" "dynamicHosts"] ''
420404 This option was removed because allowing (multiple) regular users to
@@ -442,12 +426,31 @@ in {
442426
443427 hardware.wirelessRegulatoryDatabase = true;
444428
445− environment.etc = {
446− "NetworkManager/NetworkManager.conf".source = configFile;
429+ environment.etc = with pkgs; {
430+ "NetworkManager/NetworkManager.conf".source = configFile;
431+
432+ "NetworkManager/VPN/nm-openvpn-service.name".source =
433+ "${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name";
434+
435+ "NetworkManager/VPN/nm-vpnc-service.name".source =
436+ "${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name";
437+
438+ "NetworkManager/VPN/nm-openconnect-service.name".source =
439+ "${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name";
440+
441+ "NetworkManager/VPN/nm-fortisslvpn-service.name".source =
442+ "${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name";
443+
444+ "NetworkManager/VPN/nm-l2tp-service.name".source =
445+ "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
446+
447+ "NetworkManager/VPN/nm-iodine-service.name".source =
448+ "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
449+
450+ "NetworkManager/VPN/nm-sstp-service.name".source =
451+ "${networkmanager-sstp}/lib/NetworkManager/VPN/nm-sstp-service.name";
452+
447453 }
448− // builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
449− source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}";
450− }) cfg.plugins)
451454 // optionalAttrs cfg.enableFccUnlock
452455 {
453456 "ModemManager/fcc-unlock.d".source =
@@ -457,13 +460,18 @@ in {
457460 {
458461 "NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
459462 }
463+ // optionalAttrs cfg.enableStrongSwan
464+ {
465+ "NetworkManager/VPN/nm-strongswan-service.name".source =
466+ "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
467+ }
460468 // listToAttrs (lib.imap1 (i: s:
461469 {
462470 name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
463471 value = { mode = "0544"; inherit (s) source; };
464472 }) cfg.dispatcherScripts);
465473
466− environment.systemPackages = packages;
474+ environment.systemPackages = cfg.packages;
467475
468476 users.groups = {
469477 networkmanager.gid = config.ids.gids.networkmanager;
@@ -482,13 +490,14 @@ in {
482490 };
483491 };
484492
485− systemd.packages = packages;
493+ systemd.packages = cfg.packages;
486494
487495 systemd.tmpfiles.rules = [
488496 "d /etc/NetworkManager/system-connections 0700 root root -"
489497 "d /etc/ipsec.d 0700 root root -"
490498 "d /var/lib/NetworkManager-fortisslvpn 0700 root root -"
491499
500+ "d /var/lib/dhclient 0755 root root -"
492501 "d /var/lib/misc 0755 root root -" # for dnsmasq.leases
493502 ];
494503
@@ -525,20 +534,8 @@ in {
525534 useDHCP = false;
526535 })
527536
528− {
529− networkmanager.plugins = with pkgs; [
530− networkmanager-fortisslvpn
531− networkmanager-iodine
532− networkmanager-l2tp
533− networkmanager-openconnect
534− networkmanager-openvpn
535− networkmanager-vpnc
536− networkmanager-sstp
537− ];
538− }
539−
540537 (mkIf cfg.enableStrongSwan {
541− networkmanager.plugins = [ pkgs.networkmanager_strongswan ];
538+ networkmanager.packages = [ pkgs.networkmanager_strongswan ];
542539 })
543540
544541 (mkIf enableIwd {
@@ -562,10 +559,10 @@ in {
562559 security.polkit.enable = true;
563560 security.polkit.extraConfig = polkitConf;
564561
565− services.dbus.packages = packages
562+ services.dbus.packages = cfg.packages
566563 ++ optional cfg.enableStrongSwan pkgs.strongswanNM
567564 ++ optional (cfg.dns == "dnsmasq") pkgs.dnsmasq;
568565
569− services.udev.packages = packages;
566+ services.udev.packages = cfg.packages;
570567 };
571568}
nixos/modules/services/networking/openconnect.nixdeleted−137
@@ -1,137 +0,0 @@
1−{ config, lib, options, pkgs, ... }:
2−with lib;
3−let
4− cfg = config.networking.openconnect;
5− openconnect = cfg.package;
6− pkcs11 = types.strMatching "pkcs11:.+" // {
7− name = "pkcs11";
8− description = "PKCS#11 URI";
9− };
10− interfaceOptions = {
11− options = {
12− gateway = mkOption {
13− description = "Gateway server to connect to.";
14− example = "gateway.example.com";
15− type = types.str;
16− };
17−
18− protocol = mkOption {
19− description = "Protocol to use.";
20− example = "anyconnect";
21− type =
22− types.enum [ "anyconnect" "array" "nc" "pulse" "gp" "f5" "fortinet" ];
23− };
24−
25− user = mkOption {
26− description = "Username to authenticate with.";
27− example = "example-user";
28− type = types.nullOr types.str;
29− };
30−
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 {
35− description = ''
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.
39− '';
40− default = null;
41− example = "/var/lib/secrets/openconnect-passwd";
42− type = types.nullOr types.path;
43− };
44−
45− certificate = mkOption {
46− description = "Certificate to authenticate with.";
47− default = null;
48− example = "/var/lib/secrets/openconnect_certificate.pem";
49− type = with types; nullOr (either path pkcs11);
50− };
51−
52− privateKey = mkOption {
53− description = "Private key to authenticate with.";
54− example = "/var/lib/secrets/openconnect_private_key.pem";
55− default = null;
56− type = with types; nullOr (either path pkcs11);
57− };
58−
59− extraOptions = mkOption {
60− description = ''
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>.
67− '';
68− default = { };
69− example = {
70− compression = "stateless";
71−
72− no-http-keepalive = true;
73− no-dtls = true;
74− };
75− type = with types; attrsOf (either str bool);
76− };
77− };
78− };
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" ''
85− interface=${name}
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}"}
91−
92− ${generateExtraConfig icfg.extraOptions}
93− '';
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" ];
99−
100− serviceConfig = {
101− Type = "simple";
102− ExecStart = "${openconnect}/bin/openconnect --config=${
103− generateConfig name icfg
104− } ${icfg.gateway}";
105− StandardInput = "file:${icfg.passwordFile}";
106−
107− ProtectHome = true;
108− };
109− };
110−in {
111− options.networking.openconnect = {
112− package = mkPackageOption pkgs "openconnect" { };
113−
114− interfaces = mkOption {
115− description = "OpenConnect interfaces.";
116− default = { };
117− example = {
118− openconnect0 = {
119− gateway = "gateway.example.com";
120− protocol = "anyconnect";
121− user = "example-user";
122− passwordFile = "/var/lib/secrets/openconnect-passwd";
123− };
124− };
125− type = with types; attrsOf (submodule interfaceOptions);
126− };
127− };
128−
129− config = {
130− systemd.services = mapAttrs' (name: value: {
131− name = "openconnect-${name}";
132− value = generateUnit name value;
133− }) cfg.interfaces;
134− };
135−
136− meta.maintainers = with maintainers; [ alyaeanyx ];
137−}
nixos/modules/services/networking/openfire.nixnew file+56
@@ -0,0 +1,56 @@
1+{ config, lib, pkgs, ... }:
2+
3+with lib;
4+
5+{
6+ ###### interface
7+
8+ options = {
9+
10+ services.openfire = {
11+
12+ enable = mkEnableOption "OpenFire XMPP server";
13+
14+ usePostgreSQL = mkOption {
15+ type = types.bool;
16+ default = true;
17+ description = "
18+ Whether you use PostgreSQL service for your storage back-end.
19+ ";
20+ };
21+
22+ };
23+
24+ };
25+
26+
27+ ###### implementation
28+
29+ config = mkIf config.services.openfire.enable {
30+
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.";
34+ };
35+
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 ];
42+ script = ''
43+ export HOME=/tmp
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
48+ cp $i /etc/openfire/
49+ fi
50+ done
51+ openfire start
52+ ''; # */
53+ };
54+ };
55+
56+}
nixos/modules/services/networking/pdns-recursor.nix+7−12
@@ -30,10 +30,10 @@ in {
3030 enable = mkEnableOption "PowerDNS Recursor, a recursive DNS server";
3131
3232 dns.address = mkOption {
33− type = oneOrMore types.str;
34− default = [ "::" "0.0.0.0" ];
33+ type = types.str;
34+ default = "0.0.0.0";
3535 description = ''
36− IP addresses Recursor DNS server will bind to.
36+ IP address Recursor DNS server will bind to.
3737 '';
3838 };
3939
@@ -47,12 +47,8 @@ in {
4747
4848 dns.allowFrom = mkOption {
4949 type = types.listOf types.str;
50− default = [
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"
54− ];
55− example = [ "0.0.0.0/0" "::/0" ];
50+ default = [ "10.0.0.0/8" "172.16.0.0/12" "192.168.0.0/16" ];
51+ example = [ "0.0.0.0/0" ];
5652 description = ''
5753 IP address ranges of clients allowed to make DNS queries.
5854 '';
@@ -76,8 +72,7 @@ in {
7672
7773 api.allowFrom = mkOption {
7874 type = types.listOf types.str;
79− default = [ "127.0.0.1" "::1" ];
80− example = [ "0.0.0.0/0" "::/0" ];
75+ default = [ "0.0.0.0/0" ];
8176 description = ''
8277 IP address ranges of clients allowed to make API requests.
8378 '';
@@ -101,7 +96,7 @@ in {
10196
10297 forwardZonesRecurse = mkOption {
10398 type = types.attrs;
104− example = { eth = "[::1]:5353"; };
99+ example = { eth = "127.0.0.1:5353"; };
105100 default = {};
106101 description = ''
107102 DNS zones to be forwarded to other recursive servers.
nixos/modules/services/networking/powerdns.nix+2−2
@@ -24,14 +24,14 @@ in {
2424
2525 config = mkIf cfg.enable {
2626
27− systemd.packages = [ pkgs.pdns ];
27+ systemd.packages = [ pkgs.powerdns ];
2828
2929 systemd.services.pdns = {
3030 wantedBy = [ "multi-user.target" ];
3131 after = [ "network.target" "mysql.service" "postgresql.service" "openldap.service" ];
3232
3333 serviceConfig = {
34− ExecStart = [ "" "${pkgs.pdns}/bin/pdns_server --config-dir=${configDir} --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no" ];
34+ ExecStart = [ "" "${pkgs.powerdns}/bin/pdns_server --config-dir=${configDir} --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no" ];
3535 };
3636 };
3737
nixos/modules/services/networking/prosody.nix−1
@@ -820,7 +820,6 @@ in
820820 '') cfg.muc}
821821
822822 ${ lib.optionalString (cfg.uploadHttp != null) ''
823− -- TODO: think about migrating this to mod-http_file_share instead.
824823 Component ${toLua cfg.uploadHttp.domain} "http_upload"
825824 http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
826825 http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
nixos/modules/services/networking/shellhub-agent.nix+17−26
@@ -1,37 +1,31 @@
11{ config, lib, pkgs, ... }:
22
33with lib;
4−
54let
65 cfg = config.services.shellhub-agent;
7−in
8−{
6+in {
7+
98 ###### interface
109
1110 options = {
1211
1312 services.shellhub-agent = {
1413
15− enable = mkEnableOption "ShellHub Agent daemon";
16−
17− package = mkPackageOption pkgs "shellhub-agent" { };
18−
19− preferredHostname = mkOption {
20− type = types.str;
21− default = "";
14+ enable = mkOption {
15+ type = types.bool;
16+ default = false;
2217 description = ''
23− Set the device preferred hostname. This provides a hint to
24− the server to use this as hostname if it is available.
18+ Whether to enable the ShellHub Agent daemon, which allows
19+ secure remote logins.
2520 '';
2621 };
2722
28− keepAliveInterval = mkOption {
29− type = types.int;
30− default = 30;
23+ package = mkOption {
24+ type = types.package;
25+ default = pkgs.shellhub-agent;
26+ defaultText = literalExpression "pkgs.shellhub-agent";
3127 description = ''
32− Determine the interval to send the keep alive message to
33− the server. This has a direct impact of the bandwidth
34− used by the device.
28+ Which ShellHub Agent package to use.
3529 '';
3630 };
3731
@@ -80,13 +74,9 @@ in
8074 "time-sync.target"
8175 ];
8276
83− environment = {
84− SHELLHUB_SERVER_ADDRESS = cfg.server;
85− SHELLHUB_PRIVATE_KEY = cfg.privateKey;
86− SHELLHUB_TENANT_ID = cfg.tenantId;
87− SHELLHUB_KEEPALIVE_INTERVAL = toString cfg.keepAliveInterval;
88− SHELLHUB_PREFERRED_HOSTNAME = cfg.preferredHostname;
89− };
77+ environment.SERVER_ADDRESS = cfg.server;
78+ environment.PRIVATE_KEY = cfg.privateKey;
79+ environment.TENANT_ID = cfg.tenantId;
9080
9181 serviceConfig = {
9282 # The service starts sessions for different users.
@@ -95,6 +85,7 @@ in
9585 ExecStart = "${cfg.package}/bin/agent";
9686 };
9787 };
88+
89+ environment.systemPackages = [ cfg.package ];
9890 };
9991}
100−
nixos/modules/services/networking/squid.nix+3−14
@@ -111,13 +111,6 @@ in
111111 description = "Whether to run squid web proxy.";
112112 };
113113
114− package = mkOption {
115− default = pkgs.squid;
116− defaultText = literalExpression "pkgs.squid";
117− type = types.package;
118− description = "Squid package to use.";
119− };
120−
121114 proxyAddress = mkOption {
122115 type = types.nullOr types.str;
123116 default = null;
@@ -164,21 +157,17 @@ in
164157 users.groups.squid = {};
165158
166159 systemd.services.squid = {
167− description = "Squid caching proxy";
168− documentation = [ "man:squid(8)" ];
160+ description = "Squid caching web proxy";
169161 after = [ "network.target" "nss-lookup.target" ];
170162 wantedBy = [ "multi-user.target"];
171163 preStart = ''
172164 mkdir -p "/var/log/squid"
173165 chown squid:squid "/var/log/squid"
174− ${cfg.package}/bin/squid --foreground -z -f ${squidConfig}
175166 '';
176167 serviceConfig = {
168+ Type="forking";
177169 PIDFile="/run/squid.pid";
178− ExecStart = "${cfg.package}/bin/squid --foreground -YCs -f ${squidConfig}";
179− ExecReload="kill -HUP $MAINPID";
180− KillMode="mixed";
181− NotifyAccess="all";
170+ ExecStart = "${pkgs.squid}/bin/squid -YCs -f ${squidConfig}";
182171 };
183172 };
184173
nixos/modules/services/networking/ssh/sshd.nix−1
@@ -441,7 +441,6 @@ in
441441
442442 ${flip concatMapStrings cfg.hostKeys (k: ''
443443 if ! [ -s "${k.path}" ]; then
444− rm -f "${k.path}"
445444 ssh-keygen \
446445 -t "${k.type}" \
447446 ${if k ? bits then "-b ${toString k.bits}" else ""} \
nixos/modules/services/networking/supplicant.nix+1−1
@@ -43,7 +43,7 @@ let
4343 path = [ pkgs.coreutils ];
4444
4545 preStart = ''
46− ${optionalString (suppl.configFile.path!=null && suppl.configFile.writable) ''
46+ ${optionalString (suppl.configFile.path!=null) ''
4747 (umask 077 && touch -a "${suppl.configFile.path}")
4848 ''}
4949 ${optionalString suppl.userControlled.enable ''
nixos/modules/services/networking/syncplay.nix+1−17
@@ -61,15 +61,6 @@ in
6161 Group to use when running Syncplay.
6262 '';
6363 };
64−
65− passwordFile = mkOption {
66− type = types.nullOr types.path;
67− default = null;
68− description = ''
69− Path to the file that contains the server password. If
70− <literal>null</literal>, the server doesn't require a password.
71− '';
72− };
7364 };
7465 };
7566
@@ -80,17 +71,10 @@ in
8071 after = [ "network-online.target" ];
8172
8273 serviceConfig = {
74+ ExecStart = "${pkgs.syncplay}/bin/syncplay-server ${escapeShellArgs cmdArgs}";
8375 User = cfg.user;
8476 Group = cfg.group;
85− LoadCredential = lib.mkIf (cfg.passwordFile != null) "password:${cfg.passwordFile}";
8677 };
87−
88− script = ''
89− ${lib.optionalString (cfg.passwordFile != null) ''
90− export SYNCPLAY_PASSWORD=$(cat "''${CREDENTIALS_DIRECTORY}/password")
91− ''}
92− exec ${pkgs.syncplay-nogui}/bin/syncplay-server ${escapeShellArgs cmdArgs}
93− '';
9478 };
9579 };
9680}
nixos/modules/services/networking/tailscale.nix+1−9
@@ -21,12 +21,6 @@ in {
2121 description = ''The interface name for tunnel traffic. Use "userspace-networking" (beta) to not use TUN.'';
2222 };
2323
24− permitCertUid = mkOption {
25− type = types.nullOr types.nonEmptyStr;
26− default = null;
27− description = "Username or user ID of the user allowed to to fetch Tailscale TLS certificates for the node.";
28− };
29−
3024 package = mkOption {
3125 type = types.package;
3226 default = pkgs.tailscale;
@@ -44,9 +38,7 @@ in {
4438 serviceConfig.Environment = [
4539 "PORT=${toString cfg.port}"
4640 ''"FLAGS=--tun ${lib.escapeShellArg cfg.interfaceName}"''
47− ] ++ (lib.optionals (cfg.permitCertUid != null) [
48− "TS_PERMIT_CERT_UID=${cfg.permitCertUid}"
49− ]);
41+ ];
5042 };
5143 };
5244}
nixos/modules/services/networking/wg-quick.nix+1−8
@@ -17,13 +17,6 @@ let
1717 description = "The IP addresses of the interface.";
1818 };
1919
20− autostart = mkOption {
21− description = "Whether to bring up this interface automatically during boot.";
22− default = true;
23− example = false;
24− type = types.bool;
25− };
26−
2720 dns = mkOption {
2821 example = [ "192.168.2.2" ];
2922 default = [];
@@ -254,7 +247,7 @@ let
254247 description = "wg-quick WireGuard Tunnel - ${name}";
255248 requires = [ "network-online.target" ];
256249 after = [ "network.target" "network-online.target" ];
257− wantedBy = optional values.autostart "multi-user.target";
250+ wantedBy = [ "multi-user.target" ];
258251 environment.DEVICE = name;
259252 path = [ pkgs.kmod pkgs.wireguard-tools ];
260253
nixos/modules/services/networking/zeronet.nix+1−1
@@ -90,5 +90,5 @@ in with lib; {
9090 (mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
9191 ];
9292
93− meta.maintainers = with maintainers; [ Madouura ];
93+ meta.maintainers = with maintainers; [ chiiruno ];
9494}
nixos/modules/services/security/oauth2_proxy.nix−3
@@ -571,11 +571,8 @@ in
571571 users.users.oauth2_proxy = {
572572 description = "OAuth2 Proxy";
573573 isSystemUser = true;
574− group = "oauth2_proxy";
575574 };
576575
577− users.groups.oauth2_proxy = {};
578−
579576 systemd.services.oauth2_proxy = {
580577 description = "OAuth2 Proxy";
581578 path = [ cfg.package ];
nixos/modules/services/security/sslmate-agent.nixdeleted−32
@@ -1,32 +0,0 @@
1−{ config, lib, pkgs, ... }:
2−
3−with lib;
4−
5−let
6− cfg = config.services.sslmate-agent;
7−
8−in {
9− meta.maintainers = with maintainers; [ wolfangaukang ];
10−
11− options = {
12− services.sslmate-agent = {
13− enable = mkEnableOption "sslmate-agent, a daemon for managing SSL/TLS certificates on a server";
14− };
15− };
16−
17− config = mkIf cfg.enable {
18− environment.systemPackages = with pkgs; [ sslmate-agent ];
19−
20− systemd = {
21− packages = [ pkgs.sslmate-agent ];
22− services.sslmate-agent = {
23− wantedBy = [ "multi-user.target" ];
24− serviceConfig = {
25− ConfigurationDirectory = "sslmate-agent";
26− LogsDirectory = "sslmate-agent";
27− StateDirectory = "sslmate-agent";
28− };
29− };
30− };
31− };
32−}
nixos/modules/services/system/earlyoom.nix+21−77
@@ -5,8 +5,8 @@ let
55
66 inherit (lib)
77 mkDefault mkEnableOption mkIf mkOption types
8− mkRemovedOptionModule literalExpression
9− escapeShellArg concatStringsSep optional optionalString;
8+ mkRemovedOptionModule
9+ concatStringsSep optional;
1010
1111in
1212{
@@ -17,26 +17,10 @@ in
1717 type = types.ints.between 1 100;
1818 default = 10;
1919 description = ''
20− Minimum available memory (in percent).
21−
22− If the available memory falls below this threshold (and the analog is true for
23− <option>freeSwapThreshold</option>) the killing begins.
24− SIGTERM is sent first to the process that uses the most memory; then, if the available
25− memory falls below <option>freeMemKillThreshold</option> (and the analog is true for
26− <option>freeSwapKillThreshold</option>), SIGKILL is sent.
27−
28− See <link xlink:href="https://github.com/rfjakob/earlyoom#command-line-options">README</link> for details.
29− '';
30− };
31−
32− freeMemKillThreshold = mkOption {
33− type = types.nullOr (types.ints.between 1 100);
34− default = null;
35− description = ''
36− Minimum available memory (in percent) before sending SIGKILL.
37− If unset, this defaults to half of <option>freeMemThreshold</option>.
38−
39− See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
20+ Minimum of availabe memory (in percent).
21+ If the free memory falls below this threshold and the analog is true for
22+ <option>services.earlyoom.freeSwapThreshold</option>
23+ the killing begins.
4024 '';
4125 };
4226
@@ -44,20 +28,19 @@ in
4428 type = types.ints.between 1 100;
4529 default = 10;
4630 description = ''
47− Minimum free swap space (in percent) before sending SIGTERM.
48−
49− See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
31+ Minimum of availabe swap space (in percent).
32+ If the available swap space falls below this threshold and the analog
33+ is true for <option>services.earlyoom.freeMemThreshold</option>
34+ the killing begins.
5035 '';
5136 };
5237
53− freeSwapKillThreshold = mkOption {
54− type = types.nullOr (types.ints.between 1 100);
55− default = null;
38+ # TODO: remove or warn after 1.7 (https://github.com/rfjakob/earlyoom/commit/7ebc4554)
39+ ignoreOOMScoreAdjust = mkOption {
40+ type = types.bool;
41+ default = false;
5642 description = ''
57− Minimum free swap space (in percent) before sending SIGKILL.
58− If unset, this defaults to half of <option>freeSwapThreshold</option>.
59−
60− See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
43+ Ignore oom_score_adjust values of processes.
6144 '';
6245 };
6346
@@ -80,43 +63,12 @@ in
8063 local user to DoS your session by spamming notifications.
8164
8265 To actually see the notifications in your GUI session, you need to have
83− <literal>systembus-notify</literal> running as your user, which this
84− option handles by enabling <option>services.systembus-notify</option>.
66+ <literal>systembus-notify</literal> running as your user which this
67+ option handles.
8568
8669 See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details.
8770 '';
8871 };
89−
90− killHook = mkOption {
91− type = types.nullOr types.path;
92− default = null;
93− example = literalExpression ''
94− pkgs.writeShellScript "earlyoom-kill-hook" '''
95− echo "Process $EARLYOOM_NAME ($EARLYOOM_PID) was killed" >> /path/to/log
96− '''
97− '';
98− description = ''
99− An absolute path to an executable to be run for each process killed.
100− Some environment variables are available, see
101− <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> and
102− <link xlink:href="https://github.com/rfjakob/earlyoom/blob/master/MANPAGE.md#-n-pathtoscript">the man page</link>
103− for details.
104− '';
105− };
106−
107− reportInterval = mkOption {
108− type = types.int;
109− default = 3600;
110− example = 0;
111− description = "Interval (in seconds) at which a memory report is printed (set to 0 to disable).";
112− };
113−
114− extraArgs = mkOption {
115− type = types.listOf types.str;
116− default = [];
117− example = [ "-g" "--prefer '(^|/)(java|chromium)$'" ];
118− description = "Extra command-line arguments to be passed to earlyoom.";
119− };
12072 };
12173
12274 imports = [
@@ -124,11 +76,7 @@ in
12476 This option is deprecated and ignored by earlyoom since 1.2.
12577 '')
12678 (mkRemovedOptionModule [ "services" "earlyoom" "notificationsCommand" ] ''
127− This option was removed in earlyoom 1.6, but was reimplemented in 1.7
128− and is available as the new option `services.earlyoom.killHook`.
129− '')
130− (mkRemovedOptionModule [ "services" "earlyoom" "ignoreOOMScoreAdjust" ] ''
131− This option is deprecated and ignored by earlyoom since 1.7.
79+ This option is deprecated and ignored by earlyoom since 1.6.
13280 '')
13381 ];
13482
@@ -143,16 +91,12 @@ in
14391 StandardError = "journal";
14492 ExecStart = concatStringsSep " " ([
14593 "${pkgs.earlyoom}/bin/earlyoom"
146− ("-m ${toString cfg.freeMemThreshold}"
147− + optionalString (cfg.freeMemKillThreshold != null) ",${toString cfg.freeMemKillThreshold}")
148− ("-s ${toString cfg.freeSwapThreshold}"
149− + optionalString (cfg.freeSwapKillThreshold != null) ",${toString cfg.freeSwapKillThreshold}")
150− "-r ${toString cfg.reportInterval}"
94+ "-m ${toString cfg.freeMemThreshold}"
95+ "-s ${toString cfg.freeSwapThreshold}"
15196 ]
97+ ++ optional cfg.ignoreOOMScoreAdjust "-i"
15298 ++ optional cfg.enableDebugInfo "-d"
15399 ++ optional cfg.enableNotifications "-n"
154− ++ optional (cfg.killHook != null) "-N ${escapeShellArg cfg.killHook}"
155− ++ cfg.extraArgs
156100 );
157101 };
158102 };
nixos/modules/services/system/nscd.nix+8−17
@@ -7,6 +7,10 @@ let
77 nssModulesPath = config.system.nssModules.path;
88 cfg = config.services.nscd;
99
10+ nscd = if pkgs.stdenv.hostPlatform.libc == "glibc"
11+ then pkgs.stdenv.cc.libc.bin
12+ else pkgs.glibc.bin;
13+
1014in
1115
1216{
@@ -33,19 +37,6 @@ in
3337 description = "Configuration to use for Name Service Cache Daemon.";
3438 };
3539
36− package = mkOption {
37− type = types.package;
38− default = if pkgs.stdenv.hostPlatform.libc == "glibc"
39− then pkgs.stdenv.cc.libc.bin
40− else pkgs.glibc.bin;
41− defaultText = lib.literalExpression ''
42− if pkgs.stdenv.hostPlatform.libc == "glibc"
43− then pkgs.stdenv.cc.libc.bin
44− else pkgs.glibc.bin;
45− '';
46− description = "package containing the nscd binary to be used by the service";
47− };
48−
4940 };
5041
5142 };
@@ -78,16 +69,16 @@ in
7869 # files. So prefix the ExecStart command with "!" to prevent systemd
7970 # from dropping privileges early. See ExecStart in systemd.service(5).
8071 serviceConfig =
81− { ExecStart = "!@${cfg.package}/bin/nscd nscd";
72+ { ExecStart = "!@${nscd}/sbin/nscd nscd";
8273 Type = "forking";
8374 DynamicUser = true;
8475 RuntimeDirectory = "nscd";
8576 PIDFile = "/run/nscd/nscd.pid";
8677 Restart = "always";
8778 ExecReload =
88− [ "${cfg.package}/bin/nscd --invalidate passwd"
89− "${cfg.package}/bin/nscd --invalidate group"
90− "${cfg.package}/bin/nscd --invalidate hosts"
79+ [ "${nscd}/sbin/nscd --invalidate passwd"
80+ "${nscd}/sbin/nscd --invalidate group"
81+ "${nscd}/sbin/nscd --invalidate hosts"
9182 ];
9283 };
9384 };
nixos/modules/services/ttys/kmscon.nix+5−24
@@ -1,6 +1,6 @@
11{ config, pkgs, lib, ... }:
22let
3− inherit (lib) mapAttrs mkIf mkOption optional optionals types;
3+ inherit (lib) mkOption types mkIf;
44
55 cfg = config.services.kmscon;
66
@@ -28,19 +28,6 @@ in {
2828 default = false;
2929 };
3030
31− fonts = mkOption {
32− description = "Fonts used by kmscon, in order of priority.";
33− default = null;
34− example = lib.literalExpression ''[ { name = "Source Code Pro"; package = pkgs.source-code-pro; } ]'';
35− type = with types;
36− let fontType = submodule {
37− options = {
38− name = mkOption { type = str; description = "Font name, as used by fontconfig."; };
39− package = mkOption { type = package; description = "Package providing the font."; };
40− };
41− }; in nullOr (nonEmptyListOf fontType);
42− };
43−
4431 extraConfig = mkOption {
4532 description = "Extra contents of the kmscon.conf file.";
4633 type = types.lines;
@@ -100,17 +87,11 @@ in {
10087
10188 systemd.services.systemd-vconsole-setup.enable = false;
10289
103− services.kmscon.extraConfig =
104− let
105− render = optionals cfg.hwRender [ "drm" "hwaccel" ];
106− fonts = optional (cfg.fonts != null) "font-name=${lib.concatMapStringsSep ", " (f: f.name) cfg.fonts}";
107− in lib.concatStringsSep "\n" (render ++ fonts);
90+ services.kmscon.extraConfig = mkIf cfg.hwRender ''
91+ drm
92+ hwaccel
93+ '';
10894
10995 hardware.opengl.enable = mkIf cfg.hwRender true;
110−
111− fonts = mkIf (cfg.fonts != null) {
112− fontconfig.enable = true;
113− fonts = map (f: f.package) cfg.fonts;
114− };
11596 };
11697}
nixos/modules/services/video/unifi-video.nix+82−86
@@ -16,7 +16,7 @@ let
1616 -pidfile ${cfg.pidFile} \
1717 -procname unifi-video \
1818 -Djava.security.egd=file:/dev/./urandom \
19− -Xmx${toString cfg.maximumJavaHeapSize}M \
19+ -Xmx${cfg.maximumJavaHeapSize}M \
2020 -Xss512K \
2121 -XX:+UseG1GC \
2222 -XX:+UseStringDeduplication \
@@ -91,102 +91,98 @@ let
9191 stateDir = "/var/lib/unifi-video";
9292
9393in
94−{
95−
96− options.services.unifi-video = {
97−
98− enable = mkOption {
99− type = types.bool;
100− default = false;
101− description = ''
102− Whether or not to enable the unifi-video service.
103− '';
104− };
105−
106− jrePackage = mkOption {
107− type = types.package;
108− default = pkgs.jre8;
109− defaultText = literalExpression "pkgs.jre8";
110− description = ''
111− The JRE package to use. Check the release notes to ensure it is supported.
112− '';
113− };
114−
115− unifiVideoPackage = mkOption {
116− type = types.package;
117− default = pkgs.unifi-video;
118− defaultText = literalExpression "pkgs.unifi-video";
119− description = ''
120− The unifi-video package to use.
121− '';
122− };
94+ {
95+
96+ options.services.unifi-video = {
97+ enable = mkOption {
98+ type = types.bool;
99+ default = false;
100+ description = ''
101+ Whether or not to enable the unifi-video service.
102+ '';
103+ };
123104
124− mongodbPackage = mkOption {
125− type = types.package;
126− default = pkgs.mongodb-4_0;
127− defaultText = literalExpression "pkgs.mongodb";
128− description = ''
129− The mongodb package to use.
130− '';
131− };
105+ jrePackage = mkOption {
106+ type = types.package;
107+ default = pkgs.jre8;
108+ defaultText = literalExpression "pkgs.jre8";
109+ description = ''
110+ The JRE package to use. Check the release notes to ensure it is supported.
111+ '';
112+ };
132113
133− logDir = mkOption {
134− type = types.str;
135− default = "${stateDir}/logs";
136− description = ''
137− Where to store the logs.
138− '';
139− };
114+ unifiVideoPackage = mkOption {
115+ type = types.package;
116+ default = pkgs.unifi-video;
117+ defaultText = literalExpression "pkgs.unifi-video";
118+ description = ''
119+ The unifi-video package to use.
120+ '';
121+ };
140122
141− dataDir = mkOption {
142− type = types.str;
143− default = "${stateDir}/data";
144− description = ''
145− Where to store the database and other data.
146− '';
147− };
123+ mongodbPackage = mkOption {
124+ type = types.package;
125+ default = pkgs.mongodb-4_0;
126+ defaultText = literalExpression "pkgs.mongodb";
127+ description = ''
128+ The mongodb package to use.
129+ '';
130+ };
148131
149− openFirewall = mkOption {
150− type = types.bool;
151− default = true;
152− description = ''
153− Whether or not to open the required ports on the firewall.
154− '';
155− };
132+ logDir = mkOption {
133+ type = types.str;
134+ default = "${stateDir}/logs";
135+ description = ''
136+ Where to store the logs.
137+ '';
138+ };
156139
157− maximumJavaHeapSize = mkOption {
158− type = types.nullOr types.int;
159− default = 1024;
160− example = 4096;
161− description = ''
162− Set the maximimum heap size for the JVM in MB.
163− '';
164− };
140+ dataDir = mkOption {
141+ type = types.str;
142+ default = "${stateDir}/data";
143+ description = ''
144+ Where to store the database and other data.
145+ '';
146+ };
165147
166− pidFile = mkOption {
167− type = types.path;
168− default = "${cfg.dataDir}/unifi-video.pid";
169− defaultText = literalExpression ''"''${config.${opt.dataDir}}/unifi-video.pid"'';
170− description = "Location of unifi-video pid file.";
171− };
148+ openPorts = mkOption {
149+ type = types.bool;
150+ default = true;
151+ description = ''
152+ Whether or not to open the required ports on the firewall.
153+ '';
154+ };
172155
173− };
156+ maximumJavaHeapSize = mkOption {
157+ type = types.nullOr types.int;
158+ default = 1024;
159+ example = 4096;
160+ description = ''
161+ Set the maximimum heap size for the JVM in MB.
162+ '';
163+ };
174164
175− config = mkIf cfg.enable {
165+ pidFile = mkOption {
166+ type = types.path;
167+ default = "${cfg.dataDir}/unifi-video.pid";
168+ defaultText = literalExpression ''"''${config.${opt.dataDir}}/unifi-video.pid"'';
169+ description = "Location of unifi-video pid file.";
170+ };
176171
177− warnings = optional
178− (options.services.unifi-video.openFirewall.highestPrio >= (mkOptionDefault null).priority)
179− "The current services.unifi-video.openFirewall = true default is deprecated and will change to false in 22.11. Set it explicitly to silence this warning.";
172+};
180173
181− users.users.unifi-video = {
174+config = mkIf cfg.enable {
175+ users = {
176+ users.unifi-video = {
182177 description = "UniFi Video controller daemon user";
183178 home = stateDir;
184179 group = "unifi-video";
185180 isSystemUser = true;
186181 };
187− users.groups.unifi-video = {};
182+ groups.unifi-video = {};
183+ };
188184
189− networking.firewall = mkIf cfg.openFirewall {
185+ networking.firewall = mkIf cfg.openPorts {
190186 # https://help.ui.com/hc/en-us/articles/217875218-UniFi-Video-Ports-Used
191187 allowedTCPPorts = [
192188 7080 # HTTP portal
@@ -241,6 +237,7 @@ in
241237 "L+ '${stateDir}/conf/server.xml' 0700 unifi-video unifi-video - ${pkgs.unifi-video}/lib/unifi-video/conf/server.xml"
242238 "L+ '${stateDir}/conf/tomcat-users.xml' 0700 unifi-video unifi-video - ${pkgs.unifi-video}/lib/unifi-video/conf/tomcat-users.xml"
243239 "L+ '${stateDir}/conf/web.xml' 0700 unifi-video unifi-video - ${pkgs.unifi-video}/lib/unifi-video/conf/web.xml"
240+
244241 ];
245242
246243 systemd.services.unifi-video = {
@@ -261,11 +258,10 @@ in
261258 WorkingDirectory = "${stateDir}";
262259 };
263260 };
264− };
265261
266− imports = [
267− (mkRenamedOptionModule [ "services" "unifi-video" "openPorts" ] [ "services" "unifi-video" "openFirewall" ])
268− ];
262+ };
269263
270− meta.maintainers = with lib.maintainers; [ rsynnest ];
264+ meta = {
265+ maintainers = with lib.maintainers; [ rsynnest ];
266+ };
271267}
nixos/modules/services/web-apps/atlassian/jira.nix−1
@@ -151,7 +151,6 @@ in
151151 users.users.${cfg.user} = {
152152 isSystemUser = true;
153153 group = cfg.group;
154− home = cfg.home;
155154 };
156155
157156 users.groups.${cfg.group} = {};
nixos/modules/services/web-apps/discourse.nix+3−9
@@ -609,7 +609,6 @@ in
609609 connection_reaper_interval = 30;
610610 relative_url_root = null;
611611 message_bus_max_backlog_size = 100;
612− message_bus_clear_every = 50;
613612 secret_key_base = cfg.secretKeyBaseFile;
614613 fallback_assets_path = null;
615614
@@ -656,12 +655,7 @@ in
656655 long_polling_interval = null;
657656 };
658657
659− services.redis.servers.discourse =
660− lib.mkIf (lib.elem cfg.redis.host [ "localhost" "127.0.0.1" ]) {
661− enable = true;
662− bind = cfg.redis.host;
663− port = cfg.backendSettings.redis_port;
664− };
658+ services.redis.enable = lib.mkDefault (cfg.redis.host == "localhost");
665659
666660 services.postgresql = lib.mkIf databaseActuallyCreateLocally {
667661 enable = true;
@@ -702,12 +696,12 @@ in
702696 systemd.services.discourse = {
703697 wantedBy = [ "multi-user.target" ];
704698 after = [
705− "redis-discourse.service"
699+ "redis.service"
706700 "postgresql.service"
707701 "discourse-postgresql.service"
708702 ];
709703 bindsTo = [
710− "redis-discourse.service"
704+ "redis.service"
711705 ] ++ lib.optionals (cfg.database.host == null) [
712706 "postgresql.service"
713707 "discourse-postgresql.service"
nixos/modules/services/web-apps/galene.nix−29
@@ -164,35 +164,6 @@ in
164164 optional (cfg.dataDir == defaultdataDir) "galene/data" ++
165165 optional (cfg.groupsDir == defaultgroupsDir) "galene/groups" ++
166166 optional (cfg.recordingsDir == defaultrecordingsDir) "galene/recordings";
167−
168− # Hardening
169− CapabilityBoundingSet = [ "" ];
170− DeviceAllow = [ "" ];
171− LockPersonality = true;
172− MemoryDenyWriteExecute = true;
173− NoNewPrivileges = true;
174− PrivateDevices = true;
175− PrivateTmp = true;
176− PrivateUsers = true;
177− ProcSubset = "pid";
178− ProtectClock = true;
179− ProtectControlGroups = true;
180− ProtectHome = true;
181− ProtectHostname = true;
182− ProtectKernelLogs = true;
183− ProtectKernelModules = true;
184− ProtectKernelTunables = true;
185− ProtectProc = "invisible";
186− ProtectSystem = "strict";
187− ReadWritePaths = cfg.recordingsDir;
188− RemoveIPC = true;
189− RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
190− RestrictNamespaces = true;
191− RestrictRealtime = true;
192− RestrictSUIDSGID = true;
193− SystemCallArchitectures = "native";
194− SystemCallFilter = [ "@system-service" "~@privileged" "~@resources" ];
195− UMask = "0077";
196167 }
197168 ];
198169 };
nixos/modules/services/web-apps/jitsi-meet.nix+1−1
@@ -159,7 +159,7 @@ in
159159 '';
160160 };
161161
162− caddy.enable = mkEnableOption "Whether to enable caddy reverse proxy to expose jitsi-meet";
162+ caddy.enable = mkEnableOption "Whether to enablle caddy reverse proxy to expose jitsi-meet";
163163
164164 prosody.enable = mkOption {
165165 type = bool;
nixos/modules/services/web-apps/keycloak.nix+498−362
@@ -4,94 +4,20 @@ let
44 cfg = config.services.keycloak;
55 opt = options.services.keycloak;
66
7− inherit (lib)
8− types
9− mkMerge
10− mkOption
11− mkChangedOptionModule
12− mkRenamedOptionModule
13− mkRemovedOptionModule
14− concatStringsSep
15− mapAttrsToList
16− escapeShellArg
17− mkIf
18− optionalString
19− optionals
20− mkDefault
21− literalExpression
22− isAttrs
23− literalDocBook
24− maintainers
25− catAttrs
26− collect
27− splitString
28− ;
29−
30− inherit (builtins)
31− elem
32− typeOf
33− isInt
34− isString
35− hashString
36− isPath
37− ;
38−
39− prefixUnlessEmpty = prefix: string: optionalString (string != "") "${prefix}${string}";
7+ inherit (lib) types mkOption concatStringsSep mapAttrsToList
8+ escapeShellArg recursiveUpdate optionalAttrs boolToString mkOrder
9+ sort filterAttrs concatMapStringsSep concatStrings mkIf
10+ optionalString optionals mkDefault literalExpression hasSuffix
11+ foldl' isAttrs filter attrNames elem literalDocBook
12+ maintainers;
13+
14+ inherit (builtins) match typeOf;
4015in
4116{
42− imports =
43− [
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" ]
53− (config:
54− builtins.fromJSON config.services.keycloak.httpPort))
55− (mkChangedOptionModule
56− [ "services" "keycloak" "httpsPort" ]
57− [ "services" "keycloak" "settings" "https-port" ]
58− (config:
59− builtins.fromJSON config.services.keycloak.httpsPort))
60− (mkRemovedOptionModule
61− [ "services" "keycloak" "frontendUrl" ]
62− ''
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.
66− '')
67− (mkRemovedOptionModule
68− [ "services" "keycloak" "extraConfig" ]
69− "Use `services.keycloak.settings' instead.")
70− ];
71−
7217 options.services.keycloak =
7318 let
74− inherit (types)
75− bool
76− str
77− int
78− nullOr
79− attrsOf
80− oneOf
81− path
82− enum
83− package
84− port;
85−
86− assertStringPath = optionName: value:
87− if isPath value then
88− throw ''
89− services.keycloak.${optionName}:
90− ${toString value}
91− is a Nix path, but should be a string, since Nix
92− paths are copied into the world-readable Nix store.
93− ''
94− else value;
19+ inherit (types) bool str nullOr attrsOf path enum anything
20+ package port;
9521 in
9622 {
9723 enable = mkOption {
@@ -104,14 +30,89 @@ in
10430 '';
10531 };
10632
33+ bindAddress = mkOption {
34+ type = str;
35+ default = "\${jboss.bind.address:0.0.0.0}";
36+ example = "127.0.0.1";
37+ description = ''
38+ On which address Keycloak should accept new connections.
39+
40+ A special syntax can be used to allow command line Java system
41+ properties to override the value: ''${property.name:value}
42+ '';
43+ };
44+
45+ httpPort = mkOption {
46+ type = str;
47+ default = "\${jboss.http.port:80}";
48+ example = "8080";
49+ description = ''
50+ On which port Keycloak should listen for new HTTP connections.
51+
52+ A special syntax can be used to allow command line Java system
53+ properties to override the value: ''${property.name:value}
54+ '';
55+ };
56+
57+ httpsPort = mkOption {
58+ type = str;
59+ default = "\${jboss.https.port:443}";
60+ example = "8443";
61+ description = ''
62+ On which port Keycloak should listen for new HTTPS connections.
63+
64+ A special syntax can be used to allow command line Java system
65+ properties to override the value: ''${property.name:value}
66+ '';
67+ };
68+
69+ frontendUrl = mkOption {
70+ type = str;
71+ apply = x:
72+ if x == "" || hasSuffix "/" x then
73+ x
74+ else
75+ x + "/";
76+ example = "keycloak.example.com/auth";
77+ description = ''
78+ The public URL used as base for all frontend requests. Should
79+ normally include a trailing <literal>/auth</literal>.
80+
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.
84+ '';
85+ };
86+
87+ forceBackendUrlToFrontendUrl = mkOption {
88+ type = bool;
89+ default = false;
90+ example = true;
91+ description = ''
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.
98+
99+ See <link
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.
103+ '';
104+ };
105+
107106 sslCertificate = mkOption {
108107 type = nullOr path;
109108 default = null;
110109 example = "/run/keys/ssl_cert";
111− apply = assertStringPath "sslCertificate";
112110 description = ''
113111 The path to a PEM formatted certificate to use for TLS/SSL
114112 connections.
113+
114+ This should be a string, not a Nix path, since Nix paths are
115+ copied into the world-readable Nix store.
115116 '';
116117 };
117118
@@ -119,28 +120,20 @@ in
119120 type = nullOr path;
120121 default = null;
121122 example = "/run/keys/ssl_key";
122− apply = assertStringPath "sslCertificateKey";
123123 description = ''
124124 The path to a PEM formatted private key to use for TLS/SSL
125125 connections.
126− '';
127− };
128126
129− plugins = lib.mkOption {
130− type = lib.types.listOf lib.types.path;
131− default = [ ];
132− description = ''
133− Keycloak plugin jar, ear files or derivations containing
134− them. Packaged plugins are available through
135− <literal>pkgs.keycloak.plugins</literal>.
127+ This should be a string, not a Nix path, since Nix paths are
128+ copied into the world-readable Nix store.
136129 '';
137130 };
138131
139132 database = {
140133 type = mkOption {
141− type = enum [ "mysql" "mariadb" "postgresql" ];
134+ type = enum [ "mysql" "postgresql" ];
142135 default = "postgresql";
143− example = "mariadb";
136+ example = "mysql";
144137 description = ''
145138 The type of database Keycloak should connect to.
146139 '';
@@ -158,7 +151,6 @@ in
158151 let
159152 dbPorts = {
160153 postgresql = 5432;
161− mariadb = 3306;
162154 mysql = 3306;
163155 };
164156 in
@@ -207,21 +199,6 @@ in
207199 '';
208200 };
209201
210− name = mkOption {
211− type = str;
212− default = "keycloak";
213− description = ''
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.
217−
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
221− manually.
222− '';
223− };
224−
225202 username = mkOption {
226203 type = str;
227204 default = "keycloak";
@@ -233,16 +210,19 @@ in
233210 To use this with a local database, set <xref
234211 linkend="opt-services.keycloak.database.createLocally" /> to
235212 <literal>false</literal> and create the database and user
236− manually.
213+ manually. The database should be called
214+ <literal>keycloak</literal>.
237215 '';
238216 };
239217
240218 passwordFile = mkOption {
241219 type = path;
242220 example = "/run/keys/db_password";
243− apply = assertStringPath "passwordFile";
244221 description = ''
245− The path to a file containing the database password.
222+ File containing the database password.
223+
224+ This should be a string, not a Nix path, since Nix paths are
225+ copied into the world-readable Nix store.
246226 '';
247227 };
248228 };
@@ -280,181 +260,67 @@ in
280260 '';
281261 };
282262
283− settings = mkOption {
284− type = lib.types.submodule {
285− freeformType = attrsOf (nullOr (oneOf [ str int bool (attrsOf path) ]));
286−
287− options = {
288− http-host = mkOption {
289− type = str;
290− default = "0.0.0.0";
291− example = "127.0.0.1";
292− description = ''
293− On which address Keycloak should accept new connections.
294− '';
295− };
296−
297− http-port = mkOption {
298− type = port;
299− default = 80;
300− example = 8080;
301− description = ''
302− On which port Keycloak should listen for new HTTP connections.
303− '';
304− };
305−
306− https-port = mkOption {
307− type = port;
308− default = 443;
309− example = 8443;
310− description = ''
311− On which port Keycloak should listen for new HTTPS connections.
312− '';
313− };
314−
315− http-relative-path = mkOption {
316− type = str;
317− default = "";
318− example = "/auth";
319− description = ''
320− The path relative to <literal>/</literal> for serving
321− resources.
322−
323− <note>
324− <para>
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.
331−
332− See <link
333− xlink:href="https://www.keycloak.org/migration/migrating-to-quarkus"
334− /> for more information on migrating from Wildfly
335− to Quarkus.
336− </para>
337− </note>
338− '';
339− };
340−
341− hostname = mkOption {
342− type = str;
343− example = "keycloak.example.com";
344− description = ''
345− The hostname part of the public URL used as base for
346− all frontend requests.
347−
348− See <link xlink:href="https://www.keycloak.org/server/hostname" />
349− for more information about hostname configuration.
350− '';
351− };
352−
353− hostname-strict-backchannel = mkOption {
354− type = bool;
355− default = false;
356− example = true;
357− description = ''
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.
363−
364− See <link xlink:href="https://www.keycloak.org/server/hostname" />
365− for more information about hostname configuration.
366− '';
367− };
368−
369− proxy = mkOption {
370− type = enum [ "edge" "reencrypt" "passthrough" "none" ];
371− default = "none";
372− example = "edge";
373− description = ''
374− The proxy address forwarding mode if the server is
375− behind a reverse proxy.
376−
377− <variablelist>
378− <varlistentry>
379− <term>edge</term>
380− <listitem>
381− <para>
382− Enables communication through HTTP between the
383− proxy and Keycloak.
384− </para>
385− </listitem>
386− </varlistentry>
387− <varlistentry>
388− <term>reencrypt</term>
389− <listitem>
390− <para>
391− Requires communication through HTTPS between the
392− proxy and Keycloak.
393− </para>
394− </listitem>
395− </varlistentry>
396− <varlistentry>
397− <term>passthrough</term>
398− <listitem>
399− <para>
400− Enables communication through HTTP or HTTPS between
401− the proxy and Keycloak.
402− </para>
403− </listitem>
404− </varlistentry>
405− </variablelist>
406−
407− See <link
408− xlink:href="https://www.keycloak.org/server/reverseproxy"
409− /> for more information.
410− '';
411− };
412− };
413− };
414−
263+ extraConfig = mkOption {
264+ type = attrsOf anything;
265+ default = { };
415266 example = literalExpression ''
416267 {
417− hostname = "keycloak.example.com";
418− proxy = "reencrypt";
419− https-key-store-file = "/path/to/file";
420− https-key-store-password = { _secret = "/run/keys/store_password"; };
268+ "subsystem=keycloak-server" = {
269+ "spi=hostname" = {
270+ "provider=default" = null;
271+ "provider=fixed" = {
272+ enabled = true;
273+ properties.hostname = "keycloak.example.com";
274+ };
275+ default-provider = "fixed";
276+ };
277+ };
421278 }
422279 '';
423−
424280 description = ''
425− Configuration options corresponding to parameters set in
426− <filename>conf/keycloak.conf</filename>.
427−
428− Most available options are documented at <link
429− xlink:href="https://www.keycloak.org/server/all-config" />.
430−
431− Options containing secret data should be set to an attribute
432− set containing the attribute <literal>_secret</literal> - a
433− string pointing to a file containing the value the option
434− should be set to. See the example to get a better picture of
435− this: in the resulting
436− <filename>conf/keycloak.conf</filename> file, the
437− <literal>https-key-store-password</literal> key will be set
438− to the contents of the
439− <filename>/run/keys/store_password</filename> file.
281+ Additional Keycloak configuration options to set in
282+ <literal>standalone.xml</literal>.
283+
284+ Options are expressed as a Nix attribute set which matches the
285+ structure of the jboss-cli configuration. The configuration is
286+ effectively overlayed on top of the default configuration
287+ shipped with Keycloak. To remove existing nodes and undefine
288+ attributes from the default configuration, set them to
289+ <literal>null</literal>.
290+
291+ The example configuration does the equivalent of the following
292+ script, which removes the hostname provider
293+ <literal>default</literal>, adds the deprecated hostname
294+ provider <literal>fixed</literal> and defines it the default:
295+
296+ <programlisting>
297+ /subsystem=keycloak-server/spi=hostname/provider=default:remove()
298+ /subsystem=keycloak-server/spi=hostname/provider=fixed:add(enabled = true, properties = { hostname = "keycloak.example.com" })
299+ /subsystem=keycloak-server/spi=hostname:write-attribute(name=default-provider, value="fixed")
300+ </programlisting>
301+
302+ You can discover available options by using the <link
303+ xlink:href="http://docs.wildfly.org/21/Admin_Guide.html#Command_Line_Interface">jboss-cli.sh</link>
304+ program and by referring to the <link
305+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/index.html">Keycloak
306+ Server Installation and Configuration Guide</link>.
440307 '';
441308 };
309+
442310 };
443311
444312 config =
445313 let
446− # We only want to create a database if we're actually going to
447− # connect to it.
314+ # We only want to create a database if we're actually going to connect to it.
448315 databaseActuallyCreateLocally = cfg.database.createLocally && cfg.database.host == "localhost";
449316 createLocalPostgreSQL = databaseActuallyCreateLocally && cfg.database.type == "postgresql";
450− createLocalMySQL = databaseActuallyCreateLocally && elem cfg.database.type [ "mysql" "mariadb" ];
317+ createLocalMySQL = databaseActuallyCreateLocally && cfg.database.type == "mysql";
451318
452319 mySqlCaKeystore = pkgs.runCommand "mysql-ca-keystore" { } ''
453320 ${pkgs.jre}/bin/keytool -importcert -trustcacerts -alias MySQLCACert -file ${cfg.database.caCert} -keystore $out -storepass notsosecretpassword -noprompt
454321 '';
455322
456− # Both theme and theme type directories need to be actual
457− # directories in one hierarchy to pass Keycloak checks.
323+ # Both theme and theme type directories need to be actual directories in one hierarchy to pass Keycloak checks.
458324 themesBundle = pkgs.runCommand "keycloak-themes" { } ''
459325 linkTheme() {
460326 theme="$1"
@@ -473,7 +339,7 @@ in
473339 }
474340
475341 mkdir -p "$out"
476− for theme in ${keycloakBuild}/themes/*; do
342+ for theme in ${cfg.package}/themes/*; do
477343 if [ -d "$theme" ]; then
478344 linkTheme "$theme" "$(basename "$theme")"
479345 fi
@@ -482,25 +348,329 @@ in
482348 ${concatStringsSep "\n" (mapAttrsToList (name: theme: "linkTheme ${theme} ${escapeShellArg name}") cfg.themes)}
483349 '';
484350
485− keycloakConfig = lib.generators.toKeyValue {
486− mkKeyValue = lib.flip lib.generators.mkKeyValueDefault "=" {
487− mkValueString = v: with builtins;
488− if isInt v then toString v
489− else if isString v then v
490− else if true == v then "true"
491− else if false == v then "false"
492− else if isSecret v then hashString "sha256" v._secret
493− else throw "unsupported type ${typeOf v}: ${(lib.generators.toPretty {}) v}";
494− };
495− };
351+ keycloakConfig' = foldl' recursiveUpdate
352+ {
353+ "interface=public".inet-address = cfg.bindAddress;
354+ "socket-binding-group=standard-sockets"."socket-binding=http".port = cfg.httpPort;
355+ "subsystem=keycloak-server" = {
356+ "spi=hostname"."provider=default" = {
357+ enabled = true;
358+ properties = {
359+ inherit (cfg) frontendUrl forceBackendUrlToFrontendUrl;
360+ };
361+ };
362+ "theme=defaults".dir = toString themesBundle;
363+ };
364+ "subsystem=datasources"."data-source=KeycloakDS" = {
365+ max-pool-size = "20";
366+ user-name = if databaseActuallyCreateLocally then "keycloak" else cfg.database.username;
367+ password = "@db-password@";
368+ };
369+ } [
370+ (optionalAttrs (cfg.database.type == "postgresql") {
371+ "subsystem=datasources" = {
372+ "jdbc-driver=postgresql" = {
373+ driver-module-name = "org.postgresql";
374+ driver-name = "postgresql";
375+ driver-xa-datasource-class-name = "org.postgresql.xa.PGXADataSource";
376+ };
377+ "data-source=KeycloakDS" = {
378+ connection-url = "jdbc:postgresql://${cfg.database.host}:${toString cfg.database.port}/keycloak";
379+ driver-name = "postgresql";
380+ "connection-properties=ssl".value = boolToString cfg.database.useSSL;
381+ } // (optionalAttrs (cfg.database.caCert != null) {
382+ "connection-properties=sslrootcert".value = cfg.database.caCert;
383+ "connection-properties=sslmode".value = "verify-ca";
384+ });
385+ };
386+ })
387+ (optionalAttrs (cfg.database.type == "mysql") {
388+ "subsystem=datasources" = {
389+ "jdbc-driver=mysql" = {
390+ driver-module-name = "com.mysql";
391+ driver-name = "mysql";
392+ driver-class-name = "com.mysql.jdbc.Driver";
393+ };
394+ "data-source=KeycloakDS" = {
395+ connection-url = "jdbc:mysql://${cfg.database.host}:${toString cfg.database.port}/keycloak";
396+ driver-name = "mysql";
397+ "connection-properties=useSSL".value = boolToString cfg.database.useSSL;
398+ "connection-properties=requireSSL".value = boolToString cfg.database.useSSL;
399+ "connection-properties=verifyServerCertificate".value = boolToString cfg.database.useSSL;
400+ "connection-properties=characterEncoding".value = "UTF-8";
401+ valid-connection-checker-class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker";
402+ validate-on-match = true;
403+ exception-sorter-class-name = "org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter";
404+ } // (optionalAttrs (cfg.database.caCert != null) {
405+ "connection-properties=trustCertificateKeyStoreUrl".value = "file:${mySqlCaKeystore}";
406+ "connection-properties=trustCertificateKeyStorePassword".value = "notsosecretpassword";
407+ });
408+ };
409+ })
410+ (optionalAttrs (cfg.sslCertificate != null && cfg.sslCertificateKey != null) {
411+ "socket-binding-group=standard-sockets"."socket-binding=https".port = cfg.httpsPort;
412+ "subsystem=elytron" = mkOrder 900 {
413+ "key-store=httpsKS" = mkOrder 900 {
414+ path = "/run/keycloak/ssl/certificate_private_key_bundle.p12";
415+ credential-reference.clear-text = "notsosecretpassword";
416+ type = "JKS";
417+ };
418+ "key-manager=httpsKM" = mkOrder 901 {
419+ key-store = "httpsKS";
420+ credential-reference.clear-text = "notsosecretpassword";
421+ };
422+ "server-ssl-context=httpsSSC" = mkOrder 902 {
423+ key-manager = "httpsKM";
424+ };
425+ };
426+ "subsystem=undertow" = mkOrder 901 {
427+ "server=default-server"."https-listener=https".ssl-context = "httpsSSC";
428+ };
429+ })
430+ cfg.extraConfig
431+ ];
432+
433+
434+ /* Produces a JBoss CLI script that creates paths and sets
435+ attributes matching those described by `attrs`. When the
436+ script is run, the existing settings are effectively overlayed
437+ by those from `attrs`. Existing attributes can be unset by
438+ defining them `null`.
439+
440+ JBoss paths and attributes / maps are distinguished by their
441+ name, where paths follow a `key=value` scheme.
442+
443+ Example:
444+ mkJbossScript {
445+ "subsystem=keycloak-server"."spi=hostname" = {
446+ "provider=fixed" = null;
447+ "provider=default" = {
448+ enabled = true;
449+ properties = {
450+ inherit frontendUrl;
451+ forceBackendUrlToFrontendUrl = false;
452+ };
453+ };
454+ };
455+ }
456+ => ''
457+ if (outcome != success) of /:read-resource()
458+ /:add()
459+ end-if
460+ if (outcome != success) of /subsystem=keycloak-server:read-resource()
461+ /subsystem=keycloak-server:add()
462+ end-if
463+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname:read-resource()
464+ /subsystem=keycloak-server/spi=hostname:add()
465+ end-if
466+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname/provider=default:read-resource()
467+ /subsystem=keycloak-server/spi=hostname/provider=default:add(enabled = true, properties = { forceBackendUrlToFrontendUrl = false, frontendUrl = "https://keycloak.example.com/auth" })
468+ end-if
469+ if (result != true) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="enabled")
470+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=enabled, value=true)
471+ end-if
472+ if (result != false) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.forceBackendUrlToFrontendUrl")
473+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.forceBackendUrlToFrontendUrl, value=false)
474+ end-if
475+ if (result != "https://keycloak.example.com/auth") of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.frontendUrl")
476+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.frontendUrl, value="https://keycloak.example.com/auth")
477+ end-if
478+ if (outcome != success) of /subsystem=keycloak-server/spi=hostname/provider=fixed:read-resource()
479+ /subsystem=keycloak-server/spi=hostname/provider=fixed:remove()
480+ end-if
481+ ''
482+ */
483+ mkJbossScript = attrs:
484+ let
485+ /* From a JBoss path and an attrset, produces a JBoss CLI
486+ snippet that writes the corresponding attributes starting
487+ at `path`. Recurses down into subattrsets as necessary,
488+ producing the variable name from its full path in the
489+ attrset.
490+
491+ Example:
492+ writeAttributes "/subsystem=keycloak-server/spi=hostname/provider=default" {
493+ enabled = true;
494+ properties = {
495+ forceBackendUrlToFrontendUrl = false;
496+ frontendUrl = "https://keycloak.example.com/auth";
497+ };
498+ }
499+ => ''
500+ if (result != true) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="enabled")
501+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=enabled, value=true)
502+ end-if
503+ if (result != false) of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.forceBackendUrlToFrontendUrl")
504+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.forceBackendUrlToFrontendUrl, value=false)
505+ end-if
506+ if (result != "https://keycloak.example.com/auth") of /subsystem=keycloak-server/spi=hostname/provider=default:read-attribute(name="properties.frontendUrl")
507+ /subsystem=keycloak-server/spi=hostname/provider=default:write-attribute(name=properties.frontendUrl, value="https://keycloak.example.com/auth")
508+ end-if
509+ ''
510+ */
511+ writeAttributes = path: set:
512+ let
513+ # JBoss expressions like `${var}` need to be prefixed
514+ # with `expression` to evaluate.
515+ prefixExpression = string:
516+ let
517+ matchResult = match ''"\$\{.*}"'' string;
518+ in
519+ if matchResult != null then
520+ "expression " + string
521+ else
522+ string;
523+
524+ writeAttribute = attribute: value:
525+ let
526+ type = typeOf value;
527+ in
528+ if type == "set" then
529+ let
530+ names = attrNames value;
531+ in
532+ foldl' (text: name: text + (writeAttribute "${attribute}.${name}" value.${name})) "" names
533+ else if value == null then ''
534+ if (outcome == success) of ${path}:read-attribute(name="${attribute}")
535+ ${path}:undefine-attribute(name="${attribute}")
536+ end-if
537+ ''
538+ else if elem type [ "string" "path" "bool" ] then
539+ let
540+ value' = if type == "bool" then boolToString value else ''"${value}"'';
541+ in
542+ ''
543+ if (result != ${prefixExpression value'}) of ${path}:read-attribute(name="${attribute}")
544+ ${path}:write-attribute(name=${attribute}, value=${value'})
545+ end-if
546+ ''
547+ else throw "Unsupported type '${type}' for path '${path}'!";
548+ in
549+ concatStrings
550+ (mapAttrsToList
551+ (attribute: value: (writeAttribute attribute value))
552+ set);
553+
554+
555+ /* Produces an argument list for the JBoss `add()` function,
556+ which adds a JBoss path and takes as its arguments the
557+ required subpaths and attributes.
558+
559+ Example:
560+ makeArgList {
561+ enabled = true;
562+ properties = {
563+ forceBackendUrlToFrontendUrl = false;
564+ frontendUrl = "https://keycloak.example.com/auth";
565+ };
566+ }
567+ => ''
568+ enabled = true, properties = { forceBackendUrlToFrontendUrl = false, frontendUrl = "https://keycloak.example.com/auth" }
569+ ''
570+ */
571+ makeArgList = set:
572+ let
573+ makeArg = attribute: value:
574+ let
575+ type = typeOf value;
576+ in
577+ if type == "set" then
578+ "${attribute} = { " + (makeArgList value) + " }"
579+ else if elem type [ "string" "path" "bool" ] then
580+ "${attribute} = ${if type == "bool" then boolToString value else ''"${value}"''}"
581+ else if value == null then
582+ ""
583+ else
584+ throw "Unsupported type '${type}' for attribute '${attribute}'!";
585+
586+ in
587+ concatStringsSep ", " (mapAttrsToList makeArg set);
588+
589+
590+ /* Recurses into the `nodeValue` attrset. Only subattrsets that
591+ are JBoss paths, i.e. follows the `key=value` format, are recursed
592+ into - the rest are considered JBoss attributes / maps.
593+ */
594+ recurse = nodePath: nodeValue:
595+ let
596+ nodeContent =
597+ if isAttrs nodeValue && nodeValue._type or "" == "order" then
598+ nodeValue.content
599+ else
600+ nodeValue;
601+ isPath = name:
602+ let
603+ value = nodeContent.${name};
604+ in
605+ if (match ".*([=]).*" name) == [ "=" ] then
606+ if isAttrs value || value == null then
607+ true
608+ else
609+ throw "Parsing path '${concatStringsSep "." (nodePath ++ [ name ])}' failed: JBoss attributes cannot contain '='!"
610+ else
611+ false;
612+ jbossPath = "/" + concatStringsSep "/" nodePath;
613+ children = if !isAttrs nodeContent then { } else nodeContent;
614+ subPaths = filter isPath (attrNames children);
615+ getPriority = name:
616+ let
617+ value = children.${name};
618+ in
619+ if value._type or "" == "order" then value.priority else 1000;
620+ orderedSubPaths = sort (a: b: getPriority a < getPriority b) subPaths;
621+ jbossAttrs = filterAttrs (name: _: !(isPath name)) children;
622+ text =
623+ if nodeContent != null then
624+ ''
625+ if (outcome != success) of ${jbossPath}:read-resource()
626+ ${jbossPath}:add(${makeArgList jbossAttrs})
627+ end-if
628+ '' + writeAttributes jbossPath jbossAttrs
629+ else
630+ ''
631+ if (outcome == success) of ${jbossPath}:read-resource()
632+ ${jbossPath}:remove()
633+ end-if
634+ '';
635+ in
636+ text + concatMapStringsSep "\n" (name: recurse (nodePath ++ [ name ]) children.${name}) orderedSubPaths;
637+ in
638+ recurse [ ] attrs;
639+
640+ jbossCliScript = pkgs.writeText "jboss-cli-script" (mkJbossScript keycloakConfig');
641+
642+ keycloakConfig = pkgs.runCommand "keycloak-config"
643+ {
644+ nativeBuildInputs = [ cfg.package ];
645+ }
646+ ''
647+ export JBOSS_BASE_DIR="$(pwd -P)";
648+ export JBOSS_MODULEPATH="${cfg.package}/modules";
649+ export JBOSS_LOG_DIR="$JBOSS_BASE_DIR/log";
650+
651+ cp -r ${cfg.package}/standalone/configuration .
652+ chmod -R u+rwX ./configuration
653+
654+ mkdir -p {deployments,ssl}
655+
656+ standalone.sh&
657+
658+ attempt=1
659+ max_attempts=30
660+ while ! jboss-cli.sh --connect ':read-attribute(name=server-state)'; do
661+ if [[ "$attempt" == "$max_attempts" ]]; then
662+ echo "ERROR: Could not connect to Keycloak after $attempt attempts! Failing.." >&2
663+ exit 1
664+ fi
665+ echo "Keycloak not fully started yet, retrying.. ($attempt/$max_attempts)"
666+ sleep 1
667+ (( attempt++ ))
668+ done
496669
497− isSecret = v: isAttrs v && v ? _secret && isString v._secret;
498− filteredConfig = lib.converge (lib.filterAttrsRecursive (_: v: ! elem v [{ } null])) cfg.settings;
499− confFile = pkgs.writeText "keycloak.conf" (keycloakConfig filteredConfig);
500− keycloakBuild = cfg.package.override {
501− inherit confFile;
502− plugins = cfg.package.enabledPlugins ++ cfg.plugins;
503− };
670+ jboss-cli.sh --connect --file=${jbossCliScript} --echo-command
671+
672+ cp configuration/standalone.xml $out
673+ '';
504674 in
505675 mkIf cfg.enable
506676 {
@@ -511,46 +681,7 @@ in
511681 }
512682 ];
513683
514− environment.systemPackages = [ keycloakBuild ];
515−
516− services.keycloak.settings =
517− let
518− postgresParams = concatStringsSep "&" (
519− optionals cfg.database.useSSL [
520− "ssl=true"
521− ] ++ optionals (cfg.database.caCert != null) [
522− "sslrootcert=${cfg.database.caCert}"
523− "sslmode=verify-ca"
524− ]
525− );
526− mariadbParams = concatStringsSep "&" ([
527− "characterEncoding=UTF-8"
528− ] ++ optionals cfg.database.useSSL [
529− "useSSL=true"
530− "requireSSL=true"
531− "verifyServerCertificate=true"
532− ] ++ optionals (cfg.database.caCert != null) [
533− "trustCertificateKeyStoreUrl=file:${mySqlCaKeystore}"
534− "trustCertificateKeyStorePassword=notsosecretpassword"
535− ]);
536− dbProps = if cfg.database.type == "postgresql" then postgresParams else mariadbParams;
537− in
538− mkMerge [
539− {
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;
547− db-url = null;
548− }
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";
552− })
553− ];
684+ environment.systemPackages = [ cfg.package ];
554685
555686 systemd.services.keycloakPostgreSQLInit = mkIf createLocalPostgreSQL {
556687 after = [ "postgresql.service" ];
@@ -613,37 +744,41 @@ in
613744 "mysql.service"
614745 ]
615746 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
619− '';
620− secretReplacements = lib.concatMapStrings mkSecretReplacement secretPaths;
621747 in
622748 {
623749 after = databaseServices;
624750 bindsTo = databaseServices;
625751 wantedBy = [ "multi-user.target" ];
626752 path = with pkgs; [
627− keycloakBuild
753+ cfg.package
628754 openssl
629755 replace-secret
630756 ];
631757 environment = {
632− KC_HOME_DIR = "/run/keycloak";
633− KC_CONF_DIR = "/run/keycloak/conf";
758+ JBOSS_LOG_DIR = "/var/log/keycloak";
759+ JBOSS_BASE_DIR = "/run/keycloak";
760+ JBOSS_MODULEPATH = "${cfg.package}/modules";
634761 };
635762 serviceConfig = {
636− LoadCredential =
637− map (p: "${baseNameOf p}:${p}") secretPaths
638− ++ optionals (cfg.sslCertificate != null && cfg.sslCertificateKey != null) [
639− "ssl_cert:${cfg.sslCertificate}"
640− "ssl_key:${cfg.sslCertificateKey}"
641− ];
763+ LoadCredential = [
764+ "db_password:${cfg.database.passwordFile}"
765+ ] ++ optionals (cfg.sslCertificate != null && cfg.sslCertificateKey != null) [
766+ "ssl_cert:${cfg.sslCertificate}"
767+ "ssl_key:${cfg.sslCertificateKey}"
768+ ];
642769 User = "keycloak";
643770 Group = "keycloak";
644771 DynamicUser = true;
645− RuntimeDirectory = "keycloak";
772+ RuntimeDirectory = map (p: "keycloak/" + p) [
773+ "configuration"
774+ "deployments"
775+ "data"
776+ "ssl"
777+ "log"
778+ "tmp"
779+ ];
646780 RuntimeDirectoryMode = 0700;
781+ LogsDirectory = "keycloak";
647782 AmbientCapabilities = "CAP_NET_BIND_SERVICE";
648783 };
649784 script = ''
@@ -652,30 +787,31 @@ in
652787
653788 umask u=rwx,g=,o=
654789
655− ln -s ${themesBundle} /run/keycloak/themes
656− ln -s ${keycloakBuild}/providers /run/keycloak/
790+ install -m 0600 ${cfg.package}/standalone/configuration/*.properties /run/keycloak/configuration
791+ install -T -m 0600 ${keycloakConfig} /run/keycloak/configuration/standalone.xml
657792
658− install -D -m 0600 ${confFile} /run/keycloak/conf/keycloak.conf
659−
660− ${secretReplacements}
793+ replace-secret '@db-password@' "$CREDENTIALS_DIRECTORY/db_password" /run/keycloak/configuration/standalone.xml
661794
795+ export JAVA_OPTS=-Djboss.server.config.user.dir=/run/keycloak/configuration
796+ add-user-keycloak.sh -u admin -p '${cfg.initialAdminPassword}'
662797 '' + optionalString (cfg.sslCertificate != null && cfg.sslCertificateKey != null) ''
663− mkdir -p /run/keycloak/ssl
664− cp $CREDENTIALS_DIRECTORY/ssl_{cert,key} /run/keycloak/ssl/
798+ pushd /run/keycloak/ssl/
799+ cat "$CREDENTIALS_DIRECTORY/ssl_cert" <(echo) \
800+ "$CREDENTIALS_DIRECTORY/ssl_key" <(echo) \
801+ /etc/ssl/certs/ca-certificates.crt \
802+ > allcerts.pem
803+ openssl pkcs12 -export -in "$CREDENTIALS_DIRECTORY/ssl_cert" -inkey "$CREDENTIALS_DIRECTORY/ssl_key" -chain \
804+ -name "${cfg.frontendUrl}" -out certificate_private_key_bundle.p12 \
805+ -CAfile allcerts.pem -passout pass:notsosecretpassword
806+ popd
665807 '' + ''
666− export KEYCLOAK_ADMIN=admin
667− export KEYCLOAK_ADMIN_PASSWORD=${cfg.initialAdminPassword}
668− kc.sh start
808+ ${cfg.package}/bin/standalone.sh
669809 '';
670810 };
671811
672812 services.postgresql.enable = mkDefault createLocalPostgreSQL;
673813 services.mysql.enable = mkDefault createLocalMySQL;
674− services.mysql.package =
675− let
676− dbPkg = if cfg.database.type == "mariadb" then pkgs.mariadb else pkgs.mysql80;
677− in
678− mkIf createLocalMySQL (mkDefault dbPkg);
814+ services.mysql.package = mkIf createLocalMySQL pkgs.mariadb;
679815 };
680816
681817 meta.doc = ./keycloak.xml;
nixos/modules/services/web-apps/keycloak.xml+81−61
@@ -27,10 +27,10 @@
2727
2828 <para>
2929 Refer to the <link
30− xlink:href="https://www.keycloak.org/docs/latest/server_admin/index.html">
31− Keycloak Server Administration Guide</link> for information on
32− how to administer your <productname>Keycloak</productname>
33− instance.
30+ xlink:href="https://www.keycloak.org/docs/latest/server_admin/index.html#admin-console">Admin
31+ Console section of the Keycloak Server Administration Guide</link> for
32+ information on how to administer your
33+ <productname>Keycloak</productname> instance.
3434 </para>
3535 </section>
3636
@@ -38,28 +38,27 @@
3838 <title>Database access</title>
3939 <para>
4040 <productname>Keycloak</productname> can be used with either
41− <productname>PostgreSQL</productname>,
42− <productname>MariaDB</productname> or
41+ <productname>PostgreSQL</productname> or
4342 <productname>MySQL</productname>. Which one is used can be
4443 configured in <xref
4544 linkend="opt-services.keycloak.database.type" />. The selected
4645 database will automatically be enabled and a database and role
4746 created unless <xref
48− linkend="opt-services.keycloak.database.host" /> is changed
49− from its default of <literal>localhost</literal> or <xref
50− linkend="opt-services.keycloak.database.createLocally" /> is
51− set to <literal>false</literal>.
47+ linkend="opt-services.keycloak.database.host" /> is changed from
48+ its default of <literal>localhost</literal> or <xref
49+ linkend="opt-services.keycloak.database.createLocally" /> is set
50+ to <literal>false</literal>.
5251 </para>
5352
5453 <para>
5554 External database access can also be configured by setting
5655 <xref linkend="opt-services.keycloak.database.host" />, <xref
57− linkend="opt-services.keycloak.database.name" />, <xref
5856 linkend="opt-services.keycloak.database.username" />, <xref
5957 linkend="opt-services.keycloak.database.useSSL" /> and <xref
6058 linkend="opt-services.keycloak.database.caCert" /> as
61− appropriate. Note that you need to manually create the database
62− and allow the configured database user full access to it.
59+ appropriate. Note that you need to manually create a database
60+ called <literal>keycloak</literal> and allow the configured
61+ database user full access to it.
6362 </para>
6463
6564 <para>
@@ -80,27 +79,22 @@
8079 </warning>
8180 </section>
8281
83− <section xml:id="module-services-keycloak-hostname">
84− <title>Hostname</title>
82+ <section xml:id="module-services-keycloak-frontendurl">
83+ <title>Frontend URL</title>
8584 <para>
86− The hostname is used to build the public URL used as base for
87− all frontend requests and must be configured through <xref
88− linkend="opt-services.keycloak.settings.hostname" />.
85+ The frontend URL is used as base for all frontend requests and
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>.
8994 </para>
9095
91− <note>
92− <para>
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
98− for more details.
99− </para>
100− </note>
101−
10296 <para>
103− <xref linkend="opt-services.keycloak.settings.hostname-strict-backchannel" />
97+ <xref linkend="opt-services.keycloak.forceBackendUrlToFrontendUrl" />
10498 determines whether Keycloak should force all requests to go
10599 through the frontend URL. By default,
106100 <productname>Keycloak</productname> allows backend requests to
@@ -110,10 +104,10 @@
110104 </para>
111105
112106 <para>
113− For more information on hostname configuration, see the <link
114− xlink:href="https://www.keycloak.org/server/hostname">Hostname
115− section of the Keycloak Server Installation and Configuration
116− Guide</link>.
107+ See the <link
108+ xlink:href="https://www.keycloak.org/docs/latest/server_installation/#_hostname">Hostname
109+ section of the Keycloak Server Installation and Configuration
110+ Guide</link> for more information.
117111 </para>
118112 </section>
119113
@@ -145,39 +139,67 @@
145139 <section xml:id="module-services-keycloak-themes">
146140 <title>Themes</title>
147141 <para>
148− You can package custom themes and make them visible to
149− Keycloak through <xref linkend="opt-services.keycloak.themes"
150− />. See the <link
151− xlink:href="https://www.keycloak.org/docs/latest/server_development/#_themes">
142+ You can package custom themes and make them visible to Keycloak via
143+ <xref linkend="opt-services.keycloak.themes" />
144+ option. See the <link xlink:href="https://www.keycloak.org/docs/latest/server_development/#_themes">
152145 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.
155147 </para>
156148 </section>
157149
158− <section xml:id="module-services-keycloak-settings">
159− <title>Configuration file settings</title>
150+ <section xml:id="module-services-keycloak-extra-config">
151+ <title>Additional configuration</title>
160152 <para>
161− Keycloak server configuration parameters can be set in <xref
162− linkend="opt-services.keycloak.settings" />. These correspond
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>.
153+ Additional Keycloak configuration options, for which no
154+ explicit <productname>NixOS</productname> options are provided,
155+ can be set in <xref linkend="opt-services.keycloak.extraConfig" />.
170156 </para>
171157
172158 <para>
173− Options containing secret data should be set to an attribute
174− set containing the attribute <literal>_secret</literal> - a
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.
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
164+ <literal>null</literal>.
178165 </para>
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
170+ default:
171+
172+<programlisting>
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")
176+</programlisting>
177+
178+ would be expressed as
180179
180+<programlisting>
181+services.keycloak.extraConfig = {
182+ "subsystem=keycloak-server" = {
183+ "spi=hostname" = {
184+ "provider=default" = null;
185+ "provider=fixed" = {
186+ enabled = true;
187+ properties.hostname = "keycloak.example.com";
188+ };
189+ default-provider = "fixed";
190+ };
191+ };
192+};
193+</programlisting>
194+ </para>
195+ <para>
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>.
201+ </para>
202+ </section>
181203
182204 <section xml:id="module-services-keycloak-example-config">
183205 <title>Example configuration</title>
@@ -186,11 +208,9 @@
186208<programlisting>
187209services.keycloak = {
188210 <link linkend="opt-services.keycloak.enable">enable</link> = true;
189− settings = {
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;
192− };
193211 <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;
194214 <link linkend="opt-services.keycloak.sslCertificate">sslCertificate</link> = "/run/keys/ssl_cert";
195215 <link linkend="opt-services.keycloak.sslCertificateKey">sslCertificateKey</link> = "/run/keys/ssl_key";
196216 <link linkend="opt-services.keycloak.database.passwordFile">database.passwordFile</link> = "/run/keys/db_password";
nixos/modules/services/web-apps/mastodon.nix+1−3
@@ -9,8 +9,6 @@ let
99 RAILS_ENV = "production";
1010 NODE_ENV = "production";
1111
12− LD_PRELOAD = "${pkgs.jemalloc}/lib/libjemalloc.so";
13−
1412 # mastodon-web concurrency.
1513 WEB_CONCURRENCY = toString cfg.webProcesses;
1614 MAX_THREADS = toString cfg.webThreads;
@@ -123,7 +121,7 @@ in {
123121
124122 Make sure that websockets are forwarded properly. You might want to set up caching
125123 of some requests. Take a look at mastodon's provided nginx configuration at
126− <code>https://github.com/mastodon/mastodon/blob/master/dist/nginx.conf</code>.
124+ <code>https://github.com/tootsuite/mastodon/blob/master/dist/nginx.conf</code>.
127125 '';
128126 type = lib.types.bool;
129127 default = false;
nixos/modules/services/web-apps/netbox.nixdeleted−265
@@ -1,265 +0,0 @@
1−{ config, lib, pkgs, buildEnv, ... }:
2−
3−with lib;
4−
5−let
6− cfg = config.services.netbox;
7− staticDir = cfg.dataDir + "/static";
8− configFile = pkgs.writeTextFile {
9− name = "configuration.py";
10− text = ''
11− STATIC_ROOT = '${staticDir}'
12− ALLOWED_HOSTS = ['*']
13− DATABASE = {
14− 'NAME': 'netbox',
15− 'USER': 'netbox',
16− 'HOST': '/run/postgresql',
17− }
18−
19− # Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate
20− # configuration exists for each. Full connection details are required in both sections, and it is strongly recommended
21− # to use two separate database IDs.
22− REDIS = {
23− 'tasks': {
24− 'URL': 'unix://${config.services.redis.servers.netbox.unixSocket}?db=0',
25− 'SSL': False,
26− },
27− 'caching': {
28− 'URL': 'unix://${config.services.redis.servers.netbox.unixSocket}?db=1',
29− 'SSL': False,
30− }
31− }
32−
33− with open("${cfg.secretKeyFile}", "r") as file:
34− SECRET_KEY = file.readline()
35−
36− ${optionalString cfg.enableLdap "REMOTE_AUTH_BACKEND = 'netbox.authentication.LDAPBackend'"}
37−
38− ${cfg.extraConfig}
39− '';
40− };
41− pkg = (pkgs.netbox.overrideAttrs (old: {
42− installPhase = old.installPhase + ''
43− ln -s ${configFile} $out/opt/netbox/netbox/netbox/configuration.py
44− '' + optionalString cfg.enableLdap ''
45− ln -s ${ldapConfigPath} $out/opt/netbox/netbox/netbox/ldap_config.py
46− '';
47− })).override {
48− plugins = ps: ((cfg.plugins ps)
49− ++ optional cfg.enableLdap [ ps.django-auth-ldap ]);
50− };
51− netboxManageScript = with pkgs; (writeScriptBin "netbox-manage" ''
52− #!${stdenv.shell}
53− export PYTHONPATH=${pkg.pythonPath}
54− sudo -u netbox ${pkg}/bin/netbox "$@"
55− '');
56−
57−in {
58− options.services.netbox = {
59− enable = mkOption {
60− type = lib.types.bool;
61− default = false;
62− description = ''
63− Enable Netbox.
64−
65− This module requires a reverse proxy that serves <literal>/static</literal> separately.
66− See this <link xlink:href="https://github.com/netbox-community/netbox/blob/develop/contrib/nginx.conf/">example</link> on how to configure this.
67− '';
68− };
69−
70− listenAddress = mkOption {
71− type = types.str;
72− default = "[::1]";
73− description = ''
74− Address the server will listen on.
75− '';
76− };
77−
78− port = mkOption {
79− type = types.port;
80− default = 8001;
81− description = ''
82− Port the server will listen on.
83− '';
84− };
85−
86− plugins = mkOption {
87− type = types.functionTo (types.listOf types.package);
88− default = _: [];
89− defaultText = literalExpression ''
90− python3Packages: with python3Packages; [];
91− '';
92− description = ''
93− List of plugin packages to install.
94− '';
95− };
96−
97− dataDir = mkOption {
98− type = types.str;
99− default = "/var/lib/netbox";
100− description = ''
101− Storage path of netbox.
102− '';
103− };
104−
105− secretKeyFile = mkOption {
106− type = types.path;
107− description = ''
108− Path to a file containing the secret key.
109− '';
110− };
111−
112− extraConfig = mkOption {
113− type = types.lines;
114− default = "";
115− description = ''
116− Additional lines of configuration appended to the <literal>configuration.py</literal>.
117− See the <link xlink:href="https://netbox.readthedocs.io/en/stable/configuration/optional-settings/">documentation</link> for more possible options.
118− '';
119− };
120−
121− enableLdap = mkOption {
122− type = types.bool;
123− default = false;
124− description = ''
125− Enable LDAP-Authentication for Netbox.
126−
127− This requires a configuration file being pass through <literal>ldapConfigPath</literal>.
128− '';
129− };
130−
131− ldapConfigPath = mkOption {
132− type = types.path;
133− default = "";
134− description = ''
135− Path to the Configuration-File for LDAP-Authentification, will be loaded as <literal>ldap_config.py</literal>.
136− See the <link xlink:href="https://netbox.readthedocs.io/en/stable/installation/6-ldap/#configuration">documentation</link> for possible options.
137− '';
138− };
139− };
140−
141− config = mkIf cfg.enable {
142− services.redis.servers.netbox.enable = true;
143−
144− services.postgresql = {
145− enable = true;
146− ensureDatabases = [ "netbox" ];
147− ensureUsers = [
148− {
149− name = "netbox";
150− ensurePermissions = {
151− "DATABASE netbox" = "ALL PRIVILEGES";
152− };
153− }
154− ];
155− };
156−
157− environment.systemPackages = [ netboxManageScript ];
158−
159− systemd.targets.netbox = {
160− description = "Target for all NetBox services";
161− wantedBy = [ "multi-user.target" ];
162− after = [ "network-online.target" "redis-netbox.service" ];
163− };
164−
165− systemd.services = let
166− defaultServiceConfig = {
167− WorkingDirectory = "${cfg.dataDir}";
168− User = "netbox";
169− Group = "netbox";
170− StateDirectory = "netbox";
171− StateDirectoryMode = "0750";
172− Restart = "on-failure";
173− };
174− in {
175− netbox-migration = {
176− description = "NetBox migrations";
177− wantedBy = [ "netbox.target" ];
178−
179− environment = {
180− PYTHONPATH = pkg.pythonPath;
181− };
182−
183− serviceConfig = defaultServiceConfig // {
184− Type = "oneshot";
185− ExecStart = ''
186− ${pkg}/bin/netbox migrate
187− '';
188− };
189− };
190−
191− netbox = {
192− description = "NetBox WSGI Service";
193− wantedBy = [ "netbox.target" ];
194− after = [ "netbox-migration.service" ];
195−
196− preStart = ''
197− ${pkg}/bin/netbox trace_paths --no-input
198− ${pkg}/bin/netbox collectstatic --no-input
199− ${pkg}/bin/netbox remove_stale_contenttypes --no-input
200− '';
201−
202− environment = {
203− PYTHONPATH = pkg.pythonPath;
204− };
205−
206− serviceConfig = defaultServiceConfig // {
207− ExecStart = ''
208− ${pkgs.python3Packages.gunicorn}/bin/gunicorn netbox.wsgi \
209− --bind ${cfg.listenAddress}:${toString cfg.port} \
210− --pythonpath ${pkg}/opt/netbox/netbox
211− '';
212− };
213− };
214−
215− netbox-rq = {
216− description = "NetBox Request Queue Worker";
217− wantedBy = [ "netbox.target" ];
218− after = [ "netbox.service" ];
219−
220− environment = {
221− PYTHONPATH = pkg.pythonPath;
222− };
223−
224− serviceConfig = defaultServiceConfig // {
225− ExecStart = ''
226− ${pkg}/bin/netbox rqworker high default low
227− '';
228− };
229− };
230−
231− netbox-housekeeping = {
232− description = "NetBox housekeeping job";
233− after = [ "netbox.service" ];
234−
235− environment = {
236− PYTHONPATH = pkg.pythonPath;
237− };
238−
239− serviceConfig = defaultServiceConfig // {
240− Type = "oneshot";
241− ExecStart = ''
242− ${pkg}/bin/netbox housekeeping
243− '';
244− };
245− };
246− };
247−
248− systemd.timers.netbox-housekeeping = {
249− description = "Run NetBox housekeeping job";
250− wantedBy = [ "timers.target" ];
251−
252− timerConfig = {
253− OnCalendar = "daily";
254− };
255− };
256−
257− users.users.netbox = {
258− home = "${cfg.dataDir}";
259− isSystemUser = true;
260− group = "netbox";
261− };
262− users.groups.netbox = {};
263− users.groups."${config.services.redis.servers.netbox.user}".members = [ "netbox" ];
264− };
265−}
nixos/modules/services/web-apps/nextcloud.nix−75
@@ -251,23 +251,6 @@ in {
251251 '';
252252 };
253253
254− database = {
255−
256− createLocally = mkOption {
257− type = types.bool;
258− default = false;
259− description = ''
260− Create the database and database user locally. Only available for
261− mysql database.
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.
265− '';
266− };
267−
268− };
269−
270−
271254 config = {
272255 dbtype = mkOption {
273256 type = types.enum [ "sqlite" "pgsql" "mysql" ];
@@ -522,29 +505,6 @@ in {
522505 The nextcloud-occ program preconfigured to target this Nextcloud instance.
523506 '';
524507 };
525− globalProfiles = mkEnableOption "global profiles" // {
526− description = ''
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.
531−
532− By default, the following properties are set to <quote>Show to everyone</quote>
533− if this flag is enabled:
534− <itemizedlist>
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>
543− </itemizedlist>
544−
545− Only has an effect in Nextcloud 23 and later.
546− '';
547− };
548508
549509 nginx.recommendedHttpHeaders = mkOption {
550510 type = types.bool;
@@ -623,12 +583,6 @@ in {
623583 else pkgs.php80;
624584 }
625585
626− { assertions = [
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.'';
629− }
630− ]; }
631−
632586 { systemd.timers.nextcloud-cron = {
633587 wantedBy = [ "timers.target" ];
634588 timerConfig.OnBootSec = "5m";
@@ -673,8 +627,6 @@ in {
673627 if x == null then "false"
674628 else boolToString x;
675629
676− nextcloudGreaterOrEqualThan = req: versionAtLeast cfg.package.version req;
677−
678630 overrideConfig = pkgs.writeText "nextcloud-config.php" ''
679631 <?php
680632 ${optionalString requiresReadSecretFunction ''
@@ -714,7 +666,6 @@ in {
714666 'trusted_domains' => ${writePhpArrary ([ cfg.hostName ] ++ c.extraTrustedDomains)},
715667 'trusted_proxies' => ${writePhpArrary (c.trustedProxies)},
716668 ${optionalString (c.defaultPhoneRegion != null) "'default_phone_region' => '${c.defaultPhoneRegion}',"}
717− ${optionalString (nextcloudGreaterOrEqualThan "23") "'profile.enabled' => ${boolToString cfg.globalProfiles}"}
718669 ${objectstoreConfig}
719670 ];
720671 '';
@@ -860,32 +811,6 @@ in {
860811
861812 environment.systemPackages = [ occ ];
862813
863− services.mysql = lib.mkIf cfg.database.createLocally {
864− enable = true;
865− package = lib.mkDefault pkgs.mariadb;
866− ensureDatabases = [ cfg.config.dbname ];
867− ensureUsers = [{
868− name = cfg.config.dbuser;
869− ensurePermissions = { "${cfg.config.dbname}.*" = "ALL PRIVILEGES"; };
870− }];
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
874− settings = {
875− mysqld = {
876− innodb_read_only_compressed = 0;
877− };
878− };
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 )}';
885− FLUSH privileges;
886− '';
887− };
888−
889814 services.nginx.enable = mkDefault true;
890815
891816 services.nginx.virtualHosts.${cfg.hostName} = {
nixos/modules/services/web-apps/nifi.nixdeleted−318
@@ -1,318 +0,0 @@
1−{ lib, pkgs, config, options, ... }:
2−
3−let
4− cfg = config.services.nifi;
5− opt = options.services.nifi;
6−
7− env = {
8− NIFI_OVERRIDE_NIFIENV = "true";
9− NIFI_HOME = "/var/lib/nifi";
10− NIFI_PID_DIR = "/run/nifi";
11− NIFI_LOG_DIR = "/var/log/nifi";
12− };
13−
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}\""
18− ] else []
19− ) env))));
20−
21− nifiEnv = pkgs.writeShellScriptBin "nifi-env" ''
22− set -a
23− source "${envFile}"
24− eval -- "\$@"
25− '';
26−
27−in {
28− options = {
29− services.nifi = {
30− enable = lib.mkEnableOption "Apache NiFi";
31−
32− package = lib.mkOption {
33− type = lib.types.package;
34− default = pkgs.nifi;
35− defaultText = lib.literalExpression "pkgs.nifi";
36− description = "Apache NiFi package to use.";
37− };
38−
39− user = lib.mkOption {
40− type = lib.types.str;
41− default = "nifi";
42− description = "User account where Apache NiFi runs.";
43− };
44−
45− group = lib.mkOption {
46− type = lib.types.str;
47− default = "nifi";
48− description = "Group account where Apache NiFi runs.";
49− };
50−
51− enableHTTPS = lib.mkOption {
52− type = lib.types.bool;
53− default = true;
54− description = "Enable HTTPS protocol. Don`t use in production.";
55− };
56−
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}
62− then "0.0.0.0"
63− else "127.0.0.1"
64− '';
65− description = "Bind to an ip for Apache NiFi web-ui.";
66− };
67−
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}
73− then "8443"
74− else "8000"
75− '';
76− description = "Bind to a port for Apache NiFi web-ui.";
77− };
78−
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}
84− then "0.0.0.0"
85− else null
86− '';
87− description = "Allow requests from a specific host.";
88− };
89−
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}
95− then "8443"
96− else null
97− '';
98− description = "Allow requests from a specific port.";
99− };
100−
101− initUser = lib.mkOption {
102− type = lib.types.nullOr lib.types.str;
103− default = null;
104− description = "Initial user account for Apache NiFi. Username must be at least 4 characters.";
105− };
106−
107− initPasswordFile = lib.mkOption {
108− type = lib.types.nullOr lib.types.path;
109− default = null;
110− example = "/run/keys/nifi/password-nifi";
111− description = "nitial password for Apache NiFi. Password must be at least 12 characters.";
112− };
113−
114− initJavaHeapSize = lib.mkOption {
115− type = lib.types.nullOr lib.types.int;
116− default = null;
117− example = 1024;
118− description = "Set the initial heap size for the JVM in MB.";
119− };
120−
121− maxJavaHeapSize = lib.mkOption {
122− type = lib.types.nullOr lib.types.int;
123− default = null;
124− example = 2048;
125− description = "Set the initial heap size for the JVM in MB.";
126− };
127− };
128− };
129−
130− config = lib.mkIf cfg.enable {
131− assertions = [
132− { assertion = cfg.initUser!=null || cfg.initPasswordFile==null;
133− message = ''
134− <option>services.nifi.initUser</option> needs to be set if <option>services.nifi.initPasswordFile</option> enabled.
135− '';
136− }
137− { assertion = cfg.initUser==null || cfg.initPasswordFile!=null;
138− message = ''
139− <option>services.nifi.initPasswordFile</option> needs to be set if <option>services.nifi.initUser</option> enabled.
140− '';
141− }
142− { assertion = cfg.proxyHost==null || cfg.proxyPort!=null;
143− message = ''
144− <option>services.nifi.proxyPort</option> needs to be set if <option>services.nifi.proxyHost</option> value specified.
145− '';
146− }
147− { assertion = cfg.proxyHost!=null || cfg.proxyPort==null;
148− message = ''
149− <option>services.nifi.proxyHost</option> needs to be set if <option>services.nifi.proxyPort</option> value specified.
150− '';
151− }
152− { assertion = cfg.initJavaHeapSize==null || cfg.maxJavaHeapSize!=null;
153− message = ''
154− <option>services.nifi.maxJavaHeapSize</option> needs to be set if <option>services.nifi.initJavaHeapSize</option> value specified.
155− '';
156− }
157− { assertion = cfg.initJavaHeapSize!=null || cfg.maxJavaHeapSize==null;
158− message = ''
159− <option>services.nifi.initJavaHeapSize</option> needs to be set if <option>services.nifi.maxJavaHeapSize</option> value specified.
160− '';
161− }
162− ];
163−
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.
166− '';
167−
168− systemd.tmpfiles.rules = [
169− "d '/var/lib/nifi/conf' 0750 ${cfg.user} ${cfg.group}"
170− "L+ '/var/lib/nifi/lib' - - - - ${cfg.package}/lib"
171− ];
172−
173−
174− systemd.services.nifi = {
175− description = "Apache NiFi";
176− after = [ "network.target" ];
177− wantedBy = [ "multi-user.target" ];
178−
179− environment = env;
180− path = [ pkgs.gawk ];
181−
182− serviceConfig = {
183− Type = "forking";
184− PIDFile = "/run/nifi/nifi.pid";
185− ExecStartPre = pkgs.writeScript "nifi-pre-start.sh" ''
186− #!/bin/sh
187− umask 077
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})
202− ''}
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|^|#|'
217− ''}
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|^#\+||'
232− ''}
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'
236− ''}
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'
240− ''}
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'
245− ''}
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'
250− ''}
251− '';
252− ExecStart = "${cfg.package}/bin/nifi.sh start";
253− ExecStop = "${cfg.package}/bin/nifi.sh stop";
254− # User and group
255− User = cfg.user;
256− Group = cfg.group;
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";
266− # Proc filesystem
267− ProcSubset = "pid";
268− ProtectProc = "invisible";
269− # Access write directories
270− ReadWritePaths = [ cfg.initPasswordFile ];
271− UMask = "0027";
272− # Capabilities
273− CapabilityBoundingSet = "";
274− # Security
275− NoNewPrivileges = true;
276− # Sandboxing
277− ProtectSystem = "strict";
278− ProtectHome = true;
279− PrivateTmp = true;
280− PrivateDevices = true;
281− PrivateIPC = 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;
295− RemoveIPC = true;
296− PrivateMounts = true;
297− # System Call Filtering
298− SystemCallArchitectures = "native";
299− SystemCallFilter = [ "~@cpu-emulation @debug @keyring @memlock @mount @obsolete @resources @privileged @setuid" "@chown" ];
300− };
301− };
302−
303− users.users = lib.mkMerge [
304− (lib.mkIf (cfg.user == "nifi") {
305− nifi = {
306− group = cfg.group;
307− isSystemUser = true;
308− home = cfg.package;
309− };
310− })
311− (lib.attrsets.setAttrByPath [ cfg.user "packages" ] [ cfg.package nifiEnv ])
312− ];
313−
314− users.groups = lib.optionalAttrs (cfg.group == "nifi") {
315− nifi = { };
316− };
317− };
318−}
nixos/modules/services/web-servers/apache-httpd/default.nix+13−8
@@ -710,15 +710,20 @@ in
710710
711711 services.logrotate = optionalAttrs (cfg.logFormat != "none") {
712712 enable = mkDefault true;
713− settings.httpd = {
714− files = "${cfg.logDir}/*.log";
715− su = "${cfg.user} ${cfg.group}";
713+ paths.httpd = {
714+ path = "${cfg.logDir}/*.log";
715+ user = cfg.user;
716+ group = cfg.group;
716717 frequency = "daily";
717− rotate = 28;
718− sharedscripts = true;
719− compress = true;
720− delaycompress = true;
721− postrotate = "systemctl reload httpd.service > /dev/null 2>/dev/null || true";
718+ keep = 28;
719+ extraConfig = ''
720+ sharedscripts
721+ compress
722+ delaycompress
723+ postrotate
724+ systemctl reload httpd.service > /dev/null 2>/dev/null || true
725+ endscript
726+ '';
722727 };
723728 };
724729
nixos/modules/services/web-servers/hydron.nix+1−1
@@ -161,5 +161,5 @@ in with lib; {
161161 (mkRenamedOptionModule [ "services" "hydron" "baseDir" ] [ "services" "hydron" "dataDir" ])
162162 ];
163163
164− meta.maintainers = with maintainers; [ Madouura ];
164+ meta.maintainers = with maintainers; [ chiiruno ];
165165}
nixos/modules/services/web-servers/nginx/default.nix+21−25
@@ -255,22 +255,20 @@ let
255255 else defaultListen;
256256
257257 listenString = { addr, port, ssl, extraParameters ? [], ... }:
258− (if ssl && vhost.http3 then "
259− # UDP listener for **QUIC+HTTP/3
260− listen ${addr}:${toString port} http3 "
261− + optionalString vhost.default "default_server "
262− + optionalString vhost.reuseport "reuseport "
263− + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
264− + ";" else "")
265− + "
266−
267− listen ${addr}:${toString port} "
268− + optionalString (ssl && vhost.http2) "http2 "
258+ "listen ${addr}:${toString port} "
269259 + optionalString ssl "ssl "
260+ + optionalString (ssl && vhost.http2) "http2 "
270261 + optionalString vhost.default "default_server "
271− + optionalString vhost.reuseport "reuseport "
272262 + optionalString (extraParameters != []) (concatStringsSep " " extraParameters)
273− + ";";
263+ + ";"
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;
271+ '' else "");
274272
275273 redirectListen = filter (x: !x.ssl) defaultListen;
276274
@@ -323,11 +321,6 @@ let
323321 ssl_conf_command Options KTLS;
324322 ''}
325323
326− ${optionalString (hasSSL && vhost.http3) ''
327− # Advertise that HTTP/3 is available
328− add_header Alt-Svc 'h3=":443"; ma=86400' always;
329− ''}
330−
331324 ${mkBasicAuth vhostName vhost}
332325
333326 ${mkLocations vhost.locations}
@@ -996,14 +989,17 @@ in
996989 nginx.gid = config.ids.gids.nginx;
997990 };
998991
999− services.logrotate.settings.nginx = mapAttrs (_: mkDefault) {
1000− files = "/var/log/nginx/*.log";
992+ services.logrotate.paths.nginx = mapAttrs (_: mkDefault) {
993+ path = "/var/log/nginx/*.log";
1001994 frequency = "weekly";
1002− su = "${cfg.user} ${cfg.group}";
1003− rotate = 26;
1004− compress = true;
1005− delaycompress = true;
1006− postrotate = "[ ! -f /var/run/nginx/nginx.pid ] || kill -USR1 `cat /var/run/nginx/nginx.pid`";
995+ keep = 26;
996+ extraConfig = ''
997+ compress
998+ delaycompress
999+ postrotate
1000+ [ ! -f /var/run/nginx/nginx.pid ] || kill -USR1 `cat /var/run/nginx/nginx.pid`
1001+ endscript
1002+ '';
10071003 };
10081004 };
10091005}
nixos/modules/services/web-servers/nginx/vhost-options.nix+3−12
@@ -20,7 +20,7 @@ with lib;
2020 serverAliases = mkOption {
2121 type = types.listOf types.str;
2222 default = [];
23− example = [ "www.example.org" "example.org" ];
23+ example = ["www.example.org" "example.org"];
2424 description = ''
2525 Additional names of virtual hosts served by this virtual host configuration.
2626 '';
@@ -31,11 +31,11 @@ with lib;
3131 addr = mkOption { type = str; description = "IP address."; };
3232 port = mkOption { type = int; description = "Port number."; default = 80; };
3333 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" ]; };
3535 }; });
3636 default = [];
3737 example = [
38− { addr = "195.154.1.1"; port = 443; ssl = true; }
38+ { addr = "195.154.1.1"; port = 443; ssl = true;}
3939 { addr = "192.154.1.1"; port = 80; }
4040 ];
4141 description = ''
@@ -207,15 +207,6 @@ with lib;
207207 '';
208208 };
209209
210− reuseport = mkOption {
211− type = types.bool;
212− default = false;
213− description = ''
214− Create an individual listening socket .
215− It is required to specify only once on one of the hosts.
216− '';
217− };
218−
219210 root = mkOption {
220211 type = types.nullOr types.path;
221212 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, ... }:
22
33with lib;
44
@@ -196,7 +196,7 @@ in
196196 programs.evince.enable = mkDefault true;
197197 programs.file-roller.enable = mkDefault true;
198198
199− environment.systemPackages = with pkgs // pkgs.gnome // pkgs.cinnamon; utils.removePackagesByName [
199+ environment.systemPackages = (with pkgs // pkgs.gnome // pkgs.cinnamon; pkgs.gnome.removePackagesByName [
200200 # cinnamon team apps
201201 bulky
202202 blueberry
@@ -212,7 +212,7 @@ in
212212 # external apps shipped with linux-mint
213213 hexchat
214214 gnome-calculator
215− ] config.environment.cinnamon.excludePackages;
215+ ] config.environment.cinnamon.excludePackages);
216216 })
217217 ];
218218}
nixos/modules/services/x11/desktop-managers/enlightenment.nix−5
@@ -16,10 +16,6 @@ let
1616in
1717
1818{
19− meta = {
20− maintainers = teams.enlightenment.members;
21− };
22−
2319 imports = [
2420 (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
2521 ];
@@ -96,7 +92,6 @@ in
9692
9793 services.udisks2.enable = true;
9894 services.upower.enable = config.powerManagement.enable;
99− services.xserver.libinput.enable = mkDefault true;
10095
10196 services.dbus.packages = [ e.efl ];
10297
nixos/modules/services/x11/desktop-managers/gnome.nix+69−43
@@ -1,4 +1,4 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
@@ -22,9 +22,6 @@ let
2222 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' ]
2323 '';
2424
25− nixos-background-ligtht = pkgs.nixos-artwork.wallpapers.simple-blue;
26− nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
27−
2825 nixos-gsettings-desktop-schemas = let
2926 defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
3027 in
@@ -45,11 +42,10 @@ let
4542 chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
4643 cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
4744 [org.gnome.desktop.background]
48− picture-uri='file://${nixos-background-ligtht.gnomeFilePath}'
49− picture-uri-dark='file://${nixos-background-dark.gnomeFilePath}'
45+ picture-uri='file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}'
5046
5147 [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}'
5349
5450 ${cfg.favoriteAppsOverride}
5551
@@ -59,26 +55,6 @@ let
5955 ${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
6056 '';
6157
62− nixos-background-info = pkgs.writeTextFile rec {
63− name = "nixos-background-info";
64− text = ''
65− <?xml version="1.0"?>
66− <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
67− <wallpapers>
68− <wallpaper deleted="false">
69− <name>Blobs</name>
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>
76− </wallpaper>
77− </wallpapers>
78− '';
79− destination = "/share/gnome-background-properties/nixos.xml";
80− };
81−
8258 flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
8359 flashbackWms = optional cfg.flashback.enableMetacity {
8460 wmName = "metacity";
@@ -156,10 +132,6 @@ in
156132 [ "environment" "gnome3" "excludePackages" ]
157133 [ "environment" "gnome" "excludePackages" ]
158134 )
159− (mkRemovedOptionModule
160− [ "services" "gnome" "experimental-features" "realtime-scheduling" ]
161− "Set `security.rtkit.enable = true;` to make realtime scheduling possible. (Still needs to be enabled using GSettings.)"
162− )
163135 ];
164136
165137 options = {
@@ -170,6 +142,38 @@ in
170142 core-utilities.enable = mkEnableOption "GNOME core utilities";
171143 core-developer-tools.enable = mkEnableOption "GNOME core developer tools";
172144 games.enable = mkEnableOption "GNOME games";
145+
146+ experimental-features = {
147+ realtime-scheduling = mkOption {
148+ type = types.bool;
149+ default = false;
150+ description = ''
151+ Makes mutter (which propagates to gnome-shell) request a low priority real-time
152+ scheduling which is only available on the wayland session.
153+ To enable this experimental feature it requires a restart of the compositor.
154+ Note that enabling this option only enables the <emphasis>capability</emphasis>
155+ for realtime-scheduling to be used. It doesn't automatically set the gsetting
156+ so that mutter actually uses realtime-scheduling. This would require adding <literal>
157+ rt-scheduler</literal> to <literal>/org/gnome/mutter/experimental-features</literal>
158+ with dconf-editor. You cannot use extraGSettingsOverrides because that will only
159+ change the default value of the setting.
160+
161+ Please be aware of these known issues with the feature in nixos:
162+ <itemizedlist>
163+ <listitem>
164+ <para>
165+ <link xlink:href="https://github.com/NixOS/nixpkgs/issues/90201">NixOS/nixpkgs#90201</link>
166+ </para>
167+ </listitem>
168+ <listitem>
169+ <para>
170+ <link xlink:href="https://github.com/NixOS/nixpkgs/issues/86730">NixOS/nixpkgs#86730</link>
171+ </para>
172+ </listitem>
173+ </itemizedlist>
174+ '';
175+ };
176+ };
173177 };
174178
175179 services.xserver.desktopManager.gnome = {
@@ -410,6 +414,7 @@ in
410414 services.gnome.rygel.enable = mkDefault true;
411415 services.gvfs.enable = true;
412416 services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
417+ services.telepathy.enable = mkDefault true;
413418
414419 systemd.packages = with pkgs.gnome; [
415420 gnome-session
@@ -454,7 +459,6 @@ in
454459 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-shell.bst
455460 environment.systemPackages = with pkgs.gnome; [
456461 adwaita-icon-theme
457− nixos-background-info
458462 gnome-backgrounds
459463 gnome-bluetooth
460464 gnome-color-manager
@@ -463,6 +467,8 @@ in
463467 gnome-shell-extensions
464468 gnome-themes-extra
465469 pkgs.gnome-tour # GNOME Shell detects the .desktop file on first log-in.
470+ pkgs.nixos-artwork.wallpapers.simple-dark-gray
471+ pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom
466472 pkgs.gnome-user-docs
467473 pkgs.orca
468474 pkgs.glib # for gsettings
@@ -474,28 +480,51 @@ in
474480 ];
475481 })
476482
483+ # Enable soft realtime scheduling, only supported on wayland
484+ (mkIf serviceCfg.experimental-features.realtime-scheduling {
485+ security.wrappers.".gnome-shell-wrapped" = {
486+ source = "${pkgs.gnome.gnome-shell}/bin/.gnome-shell-wrapped";
487+ owner = "root";
488+ group = "root";
489+ capabilities = "cap_sys_nice=ep";
490+ };
491+
492+ systemd.user.services.gnome-shell-wayland = let
493+ gnomeShellRT = with pkgs.gnome; pkgs.runCommand "gnome-shell-rt" {} ''
494+ mkdir -p $out/bin/
495+ cp ${gnome-shell}/bin/gnome-shell $out/bin
496+ sed -i "s@${gnome-shell}/bin/@${config.security.wrapperDir}/@" $out/bin/gnome-shell
497+ '';
498+ in {
499+ # Note we need to clear ExecStart before overriding it
500+ serviceConfig.ExecStart = ["" "${gnomeShellRT}/bin/gnome-shell"];
501+ # Do not use the default environment, it provides a broken PATH
502+ environment = mkForce {};
503+ };
504+ })
505+
477506 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-38/elements/core/meta-gnome-core-utilities.bst
478507 (mkIf serviceCfg.core-utilities.enable {
479508 environment.systemPackages =
480509 with pkgs.gnome;
481− utils.removePackagesByName
510+ removePackagesByName
482511 ([
483512 baobab
484513 cheese
485514 eog
486515 epiphany
487− pkgs.gnome-text-editor
516+ gedit
488517 gnome-calculator
489518 gnome-calendar
490519 gnome-characters
491520 gnome-clocks
492− pkgs.gnome-console
493521 gnome-contacts
494522 gnome-font-viewer
495523 gnome-logs
496524 gnome-maps
497525 gnome-music
498526 pkgs.gnome-photos
527+ gnome-screenshot
499528 gnome-system-monitor
500529 gnome-weather
501530 nautilus
@@ -518,13 +547,10 @@ in
518547 programs.file-roller.enable = notExcluded pkgs.gnome.file-roller;
519548 programs.geary.enable = notExcluded pkgs.gnome.geary;
520549 programs.gnome-disks.enable = notExcluded pkgs.gnome.gnome-disk-utility;
550+ programs.gnome-terminal.enable = notExcluded pkgs.gnome.gnome-terminal;
521551 programs.seahorse.enable = notExcluded pkgs.gnome.seahorse;
522552 services.gnome.sushi.enable = notExcluded pkgs.gnome.sushi;
523553
524− # VTE shell integration for gnome-console
525− programs.bash.vteIntegration = mkDefault true;
526− programs.zsh.vteIntegration = mkDefault true;
527−
528554 # Let nautilus find extensions
529555 # TODO: Create nautilus-with-extensions package
530556 environment.sessionVariables.NAUTILUS_EXTENSION_DIR = "${config.system.path}/lib/nautilus/extensions-3.0";
@@ -538,7 +564,7 @@ in
538564 })
539565
540566 (mkIf serviceCfg.games.enable {
541− environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
567+ environment.systemPackages = (with pkgs.gnome; removePackagesByName [
542568 aisleriot
543569 atomix
544570 five-or-more
@@ -559,12 +585,12 @@ in
559585 quadrapassel
560586 swell-foop
561587 tali
562− ] config.environment.gnome.excludePackages;
588+ ] config.environment.gnome.excludePackages);
563589 })
564590
565591 # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
566592 (mkIf serviceCfg.core-developer-tools.enable {
567− environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
593+ environment.systemPackages = (with pkgs.gnome; removePackagesByName [
568594 dconf-editor
569595 devhelp
570596 pkgs.gnome-builder
@@ -573,7 +599,7 @@ in
573599 # in default configurations.
574600 # https://github.com/NixOS/nixpkgs/issues/60908
575601 /* gnome-boxes */
576− ] config.environment.gnome.excludePackages;
602+ ] config.environment.gnome.excludePackages);
577603
578604 services.sysprof.enable = notExcluded pkgs.sysprof;
579605 })
nixos/modules/services/x11/desktop-managers/lumina.nix−4
@@ -10,10 +10,6 @@ let
1010in
1111
1212{
13− meta = {
14− maintainers = teams.lumina.members;
15− };
16−
1713 options = {
1814
1915 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, ... }:
22
33with lib;
44
@@ -9,10 +9,6 @@ let
99in
1010
1111{
12− meta = {
13− maintainers = teams.lxqt.members;
14− };
15−
1612 options = {
1713
1814 services.xserver.desktopManager.lxqt.enable = mkOption {
@@ -55,7 +51,7 @@ in
5551 environment.systemPackages =
5652 pkgs.lxqt.preRequisitePackages ++
5753 pkgs.lxqt.corePackages ++
58− (utils.removePackagesByName
54+ (pkgs.gnome.removePackagesByName
5955 pkgs.lxqt.optionalPackages
6056 config.environment.lxqt.excludePackages);
6157
@@ -66,11 +62,6 @@ in
6662 services.gvfs.enable = true;
6763
6864 services.upower.enable = config.powerManagement.enable;
69−
70− services.xserver.libinput.enable = mkDefault true;
71−
72− xdg.portal.enable = true;
73− xdg.portal.extraPortals = [ pkgs.lxqt.xdg-desktop-portal-lxqt ];
7465 };
7566
7667}
nixos/modules/services/x11/desktop-managers/mate.nix+32−5
@@ -1,9 +1,20 @@
1−{ config, lib, pkgs, utils, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
55let
66
7+ addToXDGDirs = p: ''
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}
10+ fi
11+
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
15+ fi
16+ '';
17+
718 xcfg = config.services.xserver;
819 cfg = xcfg.desktopManager.mate;
920
@@ -37,8 +48,24 @@ in
3748 pkgs.mate.mate-session-manager
3849 ];
3950
40− # Let caja find extensions
41− environment.sessionVariables.CAJA_EXTENSION_DIRS = [ "${config.system.path}/lib/caja/extensions-2.0" ];
51+ services.xserver.displayManager.sessionCommands = ''
52+ if test "$XDG_CURRENT_DESKTOP" = "MATE"; then
53+ export XDG_MENU_PREFIX=mate-
54+
55+ # Let caja find extensions
56+ export CAJA_EXTENSION_DIRS=$CAJA_EXTENSION_DIRS''${CAJA_EXTENSION_DIRS:+:}${config.system.path}/lib/caja/extensions-2.0
57+
58+ # Let caja extensions find gsettings schemas
59+ ${concatMapStrings (p: ''
60+ if [ -d "${p}/lib/caja/extensions-2.0" ]; then
61+ ${addToXDGDirs p}
62+ fi
63+ '') config.environment.systemPackages}
64+
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}
67+ fi
68+ '';
4269
4370 # Let mate-panel find applets
4471 environment.sessionVariables."MATE_PANEL_APPLETS_DIR" = "${config.system.path}/share/mate-panel/applets";
@@ -47,7 +74,7 @@ in
4774 # Debugging
4875 environment.sessionVariables.MATE_SESSION_DEBUG = mkIf cfg.debug "1";
4976
50− environment.systemPackages = utils.removePackagesByName
77+ environment.systemPackages = pkgs.gnome.removePackagesByName
5178 (pkgs.mate.basePackages ++
5279 pkgs.mate.extraPackages ++
5380 [
@@ -56,6 +83,7 @@ in
5683 pkgs.gtk3.out
5784 pkgs.shared-mime-info
5885 pkgs.xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
86+ pkgs.mate.mate-settings-daemon
5987 pkgs.yelp # for 'Contents' in 'Help' menus
6088 ])
6189 config.environment.mate.excludePackages;
@@ -73,7 +101,6 @@ in
73101 services.udev.packages = [ pkgs.mate.mate-settings-daemon ];
74102 services.gvfs.enable = true;
75103 services.upower.enable = config.powerManagement.enable;
76− services.xserver.libinput.enable = mkDefault true;
77104
78105 security.pam.services.mate-screensaver.unixAuth = true;
79106
nixos/modules/services/x11/desktop-managers/none.nix+5−44
@@ -1,46 +1,7 @@
1−{ config, lib, pkgs, ... }:
2−with lib;
3−let
4− runXdgAutostart = config.services.xserver.desktopManager.runXdgAutostartIfNone;
5−in
61{
7− options = {
8− services.xserver.desktopManager.runXdgAutostartIfNone = mkOption {
9− type = types.bool;
10− default = false;
11− description = ''
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.
15−
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.
21− '';
22− };
23− };
24−
25− config = mkMerge [
26− {
27− services.xserver.desktopManager.session = [
28− {
29− name = "none";
30− start = optionalString runXdgAutostart ''
31− /run/current-system/systemd/bin/systemctl --user start xdg-autostart-if-no-desktop-manager.target
32− '';
33− }
34− ];
35− }
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" ];
43− };
44− })
45− ];
2+ services.xserver.desktopManager.session =
3+ [ { name = "none";
4+ start = "";
5+ }
6+ ];
467}
nixos/modules/services/x11/desktop-managers/pantheon.nix+5−3
@@ -1,4 +1,4 @@
1−{ config, lib, utils, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
@@ -214,13 +214,15 @@ in
214214 elementary-settings-daemon
215215 pantheon-agent-geoclue2
216216 pantheon-agent-polkit
217− ]) ++ (utils.removePackagesByName [
217+ ]) ++ (gnome.removePackagesByName [
218218 gnome.gnome-font-viewer
219219 gnome.gnome-settings-daemon338
220220 ] config.environment.pantheon.excludePackages);
221221
222222 programs.evince.enable = mkDefault true;
223+ programs.evince.package = pkgs.pantheon.evince;
223224 programs.file-roller.enable = mkDefault true;
225+ programs.file-roller.package = pkgs.pantheon.file-roller;
224226
225227 # Settings from elementary-default-settings
226228 environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini";
@@ -272,7 +274,7 @@ in
272274 })
273275
274276 (mkIf serviceCfg.apps.enable {
275− environment.systemPackages = with pkgs.pantheon; utils.removePackagesByName ([
277+ environment.systemPackages = with pkgs.pantheon; pkgs.gnome.removePackagesByName ([
276278 elementary-calculator
277279 elementary-calendar
278280 elementary-camera
nixos/modules/services/x11/desktop-managers/pantheon.xml+3−3
@@ -3,7 +3,7 @@
33 xml:id="chap-pantheon">
44 <title>Pantheon Desktop</title>
55 <para>
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.
77 </para>
88 <section xml:id="sec-pantheon-enable">
99 <title>Enabling Pantheon</title>
@@ -89,9 +89,9 @@ switchboard-with-plugs.override {
8989 </para>
9090 </listitem>
9191 </varlistentry>
92− <varlistentry xml:id="sec-pantheon-faq-gnome-and-pantheon">
92+ <varlistentry xml:id="sec-pantheon-faq-gnome3-and-pantheon">
9393 <term>
94− I cannot enable both GNOME and Pantheon.
94+ I cannot enable both GNOME 3 and Pantheon.
9595 </term>
9696 <listitem>
9797 <para>
nixos/modules/services/x11/desktop-managers/plasma5.nix+2−2
@@ -519,7 +519,7 @@ in
519519 with plasma5; with kdeApplications; with kdeFrameworks;
520520 [
521521 # Basic packages without which Plasma Mobile fails to work properly.
522− plasma-mobile
522+ plasma-phone-components
523523 plasma-nano
524524 pkgs.maliit-framework
525525 pkgs.maliit-keyboard
@@ -573,7 +573,7 @@ in
573573 };
574574 };
575575
576− services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-mobile ];
576+ services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-phone-components ];
577577 })
578578 ];
579579}
nixos/modules/services/x11/desktop-managers/xfce.nix+1−8
@@ -66,12 +66,6 @@ in
6666 default = true;
6767 description = "Enable the XFWM (default) window manager.";
6868 };
69−
70− enableScreensaver = mkOption {
71− type = types.bool;
72− default = true;
73− description = "Enable the XFCE screensaver.";
74− };
7569 };
7670 };
7771
@@ -128,7 +122,7 @@ in
128122 ] ++ optionals (!cfg.noDesktop) [
129123 xfce4-panel
130124 xfdesktop
131− ] ++ optional cfg.enableScreensaver xfce4-screensaver;
125+ ];
132126
133127 environment.pathsToLink = [
134128 "/share/xfce4"
@@ -174,6 +168,5 @@ in
174168 xfce4-notifyd
175169 ];
176170
177− security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver;
178171 };
179172}
nixos/modules/services/x11/display-managers/gdm.nix+1−1
@@ -141,7 +141,7 @@ in
141141 GDM_X_SERVER_EXTRA_ARGS = toString
142142 (filter (arg: arg != "-terminate") cfg.xserverArgs);
143143 # GDM is needed for gnome-login.session
144− XDG_DATA_DIRS = "${gdm}/share:${cfg.sessionData.desktops}/share:${pkgs.gnome.gnome-control-center}/share";
144+ XDG_DATA_DIRS = "${gdm}/share:${cfg.sessionData.desktops}/share";
145145 } // optionalAttrs (xSessionWrapper != null) {
146146 # Make GDM use this wrapper before running the session, which runs the
147147 # configured setupCommands. This relies on a patched GDM which supports
nixos/modules/services/x11/window-managers/qtile.nix+4−11
@@ -7,26 +7,19 @@ let
77in
88
99{
10− options.services.xserver.windowManager.qtile = {
11− enable = mkEnableOption "qtile";
12−
13− package = mkPackageOption pkgs "qtile" { };
10+ options = {
11+ services.xserver.windowManager.qtile.enable = mkEnableOption "qtile";
1412 };
1513
1614 config = mkIf cfg.enable {
1715 services.xserver.windowManager.session = [{
1816 name = "qtile";
1917 start = ''
20− ${cfg.package}/bin/qtile start &
18+ ${pkgs.qtile}/bin/qtile start &
2119 waitPID=$!
2220 '';
2321 }];
2422
25− environment.systemPackages = [
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)
30− ];
23+ environment.systemPackages = [ pkgs.qtile ];
3124 };
3225}
nixos/modules/services/x11/xserver.nix+3−10
@@ -1,4 +1,4 @@
1−{ config, lib, utils, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
@@ -181,13 +181,6 @@ in
181181 '';
182182 };
183183
184− excludePackages = mkOption {
185− default = [];
186− example = literalExpression "[ pkgs.xterm ]";
187− type = types.listOf types.package;
188− description = "Which X11 packages to exclude from the default environment";
189− };
190−
191184 exportConfiguration = mkOption {
192185 type = types.bool;
193186 default = false;
@@ -662,7 +655,7 @@ in
662655 ${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath;
663656 });
664657
665− environment.systemPackages = utils.removePackagesByName
658+ environment.systemPackages =
666659 [ xorg.xorgserver.out
667660 xorg.xrandr
668661 xorg.xrdb
@@ -678,7 +671,7 @@ in
678671 pkgs.xdg-utils
679672 xorg.xf86inputevdev.out # get evdev.4 man page
680673 pkgs.nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more
681− ] config.services.xserver.excludePackages
674+ ]
682675 ++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh;
683676
684677 environment.pathsToLink = [ "/share/X11" ];
nixos/modules/system/activation/switch-to-configuration.pl−12
@@ -1,17 +1,5 @@
11#! @perl@/bin/perl
22
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
7−# as a shell script.
8−#
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
11−# and Bash.
12−printf "Perl script erroneously interpreted as shell script,\ndoes target platform match nixpkgs.crossSystem platform?\n" && exit 1
13− if 0;
14−
153use strict;
164use warnings;
175use Config::IniFiles;
nixos/modules/system/activation/top-level.nix+5−12
@@ -55,18 +55,11 @@ let
5555 substituteInPlace $out/dry-activate --subst-var out
5656 chmod u+x $out/activate $out/dry-activate
5757 unset activationScript dryActivationScript
58+ ${pkgs.stdenv.shellDryRun} $out/activate
59+ ${pkgs.stdenv.shellDryRun} $out/dry-activate
5860
59− ${if config.boot.initrd.systemd.enable then ''
60− cp ${config.system.build.bootStage2} $out/prepare-root
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
64− # system closure.
65− cp "$systemd/lib/systemd/systemd" $out/init
66− '' else ''
67− cp ${config.system.build.bootStage2} $out/init
68− substituteInPlace $out/init --subst-var-by systemConfig $out
69− ''}
61+ cp ${config.system.build.bootStage2} $out/init
62+ substituteInPlace $out/init --subst-var-by systemConfig $out
7063
7164 ln -s ${config.system.build.etc}/etc $out/etc
7265 ln -s ${config.system.path} $out/sw
@@ -163,7 +156,7 @@ in
163156
164157 specialisation = mkOption {
165158 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; }; }";
167160 description = ''
168161 Additional configurations to build. If
169162 <literal>inheritParentConfig</literal> is true, the system
nixos/modules/system/boot/kernel.nix+1−1
@@ -241,7 +241,7 @@ in
241241 "xhci_pci"
242242 "usbhid"
243243 "hid_generic" "hid_lenovo" "hid_apple" "hid_roccat"
244− "hid_logitech_hidpp" "hid_logitech_dj" "hid_microsoft" "hid_cherry"
244+ "hid_logitech_hidpp" "hid_logitech_dj" "hid_microsoft"
245245
246246 ] ++ optionals pkgs.stdenv.hostPlatform.isx86 [
247247 # Misc. x86 keyboard stuff.
nixos/modules/system/boot/loader/grub/grub.nix−26
@@ -44,8 +44,6 @@ let
4444 { splashImage = f cfg.splashImage;
4545 splashMode = f cfg.splashMode;
4646 backgroundColor = f cfg.backgroundColor;
47− entryOptions = f cfg.entryOptions;
48− subEntryOptions = f cfg.subEntryOptions;
4947 grub = f grub;
5048 grubTarget = f (grub.grubTarget or "");
5149 shell = "${pkgs.runtimeShell}";
@@ -450,30 +448,6 @@ in
450448 '';
451449 };
452450
453− entryOptions = mkOption {
454− default = "--class nixos --unrestricted";
455− type = types.nullOr types.str;
456− description = ''
457− Options applied to the primary NixOS menu entry.
458−
459− <note><para>
460− This options has no effect for GRUB 1.
461− </para></note>
462− '';
463− };
464−
465− subEntryOptions = mkOption {
466− default = "--class nixos";
467− type = types.nullOr types.str;
468− description = ''
469− Options applied to the secondary NixOS submenu entry.
470−
471− <note><para>
472− This options has no effect for GRUB 1.
473− </para></note>
474− '';
475− };
476−
477451 theme = mkOption {
478452 type = types.nullOr types.path;
479453 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");
6464my $extraEntriesBeforeNixOS = get("extraEntriesBeforeNixOS") eq "true";
6565my $splashImage = get("splashImage");
6666my $splashMode = get("splashMode");
67−my $entryOptions = get("entryOptions");
68−my $subEntryOptions = get("subEntryOptions");
6967my $backgroundColor = get("backgroundColor");
7068my $configurationLimit = int(get("configurationLimit"));
7169my $copyKernels = get("copyKernels") eq "true";
@@ -511,7 +509,7 @@ sub addEntry {
511509# Add default entries.
512510$conf .= "$extraEntries\n" if $extraEntriesBeforeNixOS;
513511
514−addEntry("NixOS - Default", $defaultConfig, $entryOptions);
512+addEntry("NixOS - Default", $defaultConfig, "--unrestricted");
515513
516514$conf .= "$extraEntries\n" unless $extraEntriesBeforeNixOS;
517515
@@ -548,7 +546,7 @@ sub addProfile {
548546 my ($profile, $description) = @_;
549547
550548 # 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;
552550
553551 sub nrFromGen { my ($x) = @_; $x =~ /\/\w+-(\d+)-link/; return $1; }
554552
@@ -568,7 +566,7 @@ sub addProfile {
568566 -e "$link/nixos-version"
569567 ? readFile("$link/nixos-version")
570568 : 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);
572570 }
573571
574572 $conf .= "}\n" if $grubVersion == 2;
nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix+1−1
@@ -33,7 +33,7 @@ let
3333 netbootxyz = if cfg.netbootxyz.enable then pkgs.netbootxyz-efi else "";
3434
3535 copyExtraFiles = pkgs.writeShellScript "copy-extra-files" ''
36− empty_file=$(${pkgs.coreutils}/bin/mktemp)
36+ empty_file=$(mktemp)
3737
3838 ${concatStrings (mapAttrsToList (n: v: ''
3939 ${pkgs.coreutils}/bin/install -Dp "${v}" "${efi.efiSysMountPoint}/"${escapeShellArg n}
nixos/modules/system/boot/luksroot.nix+7−74
@@ -1,11 +1,10 @@
1−{ config, options, lib, pkgs, ... }:
1+{ config, lib, pkgs, ... }:
22
33with lib;
44
55let
66 luks = config.boot.initrd.luks;
77 kernelPackages = config.boot.kernelPackages;
8− defaultPrio = (mkOptionDefault {}).priority;
98
109 commonFunctions = ''
1110 die() {
@@ -475,16 +474,6 @@ let
475474 preLVM = filterAttrs (n: v: v.preLVM) luks.devices;
476475 postLVM = filterAttrs (n: v: !v.preLVM) luks.devices;
477476
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}"
485− ;
486− in "${n} ${v.device} ${if v.keyFile == null then "-" else v.keyFile} ${lib.concatStringsSep "," opts}") luks.devices));
487−
488477in
489478{
490479 imports = [
@@ -813,18 +802,6 @@ in
813802 Commands that should be run right after we have mounted our LUKS device.
814803 '';
815804 };
816−
817− crypttabExtraOpts = mkOption {
818− type = with types; listOf singleLineStr;
819− default = [];
820− example = [ "_netdev" ];
821− visible = false;
822− description = ''
823− Only used with systemd stage 1.
824−
825− Extra options to append to the last column of the generated crypttab file.
826− '';
827− };
828805 };
829806 }));
830807 };
@@ -876,31 +853,6 @@ in
876853 -> versionAtLeast kernelPackages.kernel.version "5.9";
877854 message = "boot.initrd.luks.devices.<name>.bypassWorkqueues is not supported for kernels older than 5.9";
878855 }
879−
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.";
882− }
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.";
885− }
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.";
888− }
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.";
891− }
892− # TODO
893− { assertion = config.boot.initrd.systemd.enable -> !luks.gpgSupport;
894− message = "systemd stage 1 does not support GPG smartcards yet.";
895− }
896− # TODO
897− { assertion = config.boot.initrd.systemd.enable -> !luks.fido2Support;
898− message = "systemd stage 1 does not support FIDO2 yet.";
899− }
900− # TODO
901− { assertion = config.boot.initrd.systemd.enable -> !luks.yubikeySupport;
902− message = "systemd stage 1 does not support Yubikeys yet.";
903− }
904856 ];
905857
906858 # actually, sbp2 driver is the one enabling the DMA attack, but this needs to be tested
@@ -915,7 +867,7 @@ in
915867 ++ (if builtins.elem "xts" luks.cryptoModules then ["ecb"] else []);
916868
917869 # copy the cryptsetup binary and it's dependencies
918− boot.initrd.extraUtilsCommands = mkIf (!config.boot.initrd.systemd.enable) ''
870+ boot.initrd.extraUtilsCommands = ''
919871 copy_bin_and_libs ${pkgs.cryptsetup}/bin/cryptsetup
920872 copy_bin_and_libs ${askPass}/bin/cryptsetup-askpass
921873 sed -i s,/bin/sh,$out/bin/sh, $out/bin/cryptsetup-askpass
@@ -925,7 +877,7 @@ in
925877 copy_bin_and_libs ${pkgs.yubikey-personalization}/bin/ykinfo
926878 copy_bin_and_libs ${pkgs.openssl.bin}/bin/openssl
927879
928− cc -O3 -I${pkgs.openssl.dev}/include -L${lib.getLib pkgs.openssl}/lib ${./pbkdf2-sha512.c} -o pbkdf2-sha512 -lcrypto
880+ cc -O3 -I${pkgs.openssl.dev}/include -L${pkgs.openssl.out}/lib ${./pbkdf2-sha512.c} -o pbkdf2-sha512 -lcrypto
929881 strip -s pbkdf2-sha512
930882 copy_bin_and_libs pbkdf2-sha512
931883
@@ -963,7 +915,7 @@ in
963915 ''}
964916 '';
965917
966− boot.initrd.extraUtilsCommandsTest = mkIf (!config.boot.initrd.systemd.enable) ''
918+ boot.initrd.extraUtilsCommandsTest = ''
967919 $out/bin/cryptsetup --version
968920 ${optionalString luks.yubikeySupport ''
969921 $out/bin/ykchalresp -V
@@ -980,28 +932,9 @@ in
980932 ''}
981933 '';
982934
983− boot.initrd.systemd = {
984− contents."/etc/crypttab".source = stage1Crypttab;
985−
986− extraBin.systemd-cryptsetup = "${config.boot.initrd.systemd.package}/lib/systemd/systemd-cryptsetup";
987−
988− additionalUpstreamUnits = [
989− "cryptsetup-pre.target"
990− "cryptsetup.target"
991− "remote-cryptsetup.target"
992− ];
993− storePaths = [
994− "${config.boot.initrd.systemd.package}/lib/systemd/systemd-cryptsetup"
995− "${config.boot.initrd.systemd.package}/lib/systemd/system-generators/systemd-cryptsetup-generator"
996− ];
997−
998− };
999− # We do this because we need the udev rules from the package
1000− boot.initrd.services.lvm.enable = true;
1001−
1002− boot.initrd.preFailCommands = mkIf (!config.boot.initrd.systemd.enable) postCommands;
1003− boot.initrd.preLVMCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand preLVM) + postCommands);
1004− boot.initrd.postDeviceCommands = mkIf (!config.boot.initrd.systemd.enable) (commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand postLVM) + postCommands);
935+ boot.initrd.preFailCommands = postCommands;
936+ boot.initrd.preLVMCommands = commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand preLVM) + postCommands;
937+ boot.initrd.postDeviceCommands = commonFunctions + preCommands + concatStrings (mapAttrsToList openCommand postLVM) + postCommands;
1005938
1006939 environment.systemPackages = [ pkgs.cryptsetup ];
1007940 };
nixos/modules/system/boot/networkd.nix+2−191
@@ -10,36 +10,6 @@ let
1010
1111 check = {
1212
13− global = {
14− sectionNetwork = checkUnitConfig "Network" [
15− (assertOnlyFields [
16− "SpeedMeter"
17− "SpeedMeterIntervalSec"
18− "ManageForeignRoutingPolicyRules"
19− "ManageForeignRoutes"
20− "RouteTable"
21− ])
22− (assertValueOneOf "SpeedMeter" boolValues)
23− (assertInt "SpeedMeterIntervalSec")
24− (assertValueOneOf "ManageForeignRoutingPolicyRules" boolValues)
25− (assertValueOneOf "ManageForeignRoutes" boolValues)
26− ];
27−
28− sectionDHCPv4 = checkUnitConfig "DHCPv4" [
29− (assertOnlyFields [
30− "DUIDType"
31− "DUIDRawData"
32− ])
33− ];
34−
35− sectionDHCPv6 = checkUnitConfig "DHCPv6" [
36− (assertOnlyFields [
37− "DUIDType"
38− "DUIDRawData"
39− ])
40− ];
41− };
42−
4313 link = {
4414
4515 sectionLink = checkUnitConfig "Link" [
@@ -311,8 +281,6 @@ let
311281 "PrivateKeyFile"
312282 "ListenPort"
313283 "FirewallMark"
314− "RouteTable"
315− "RouteMetric"
316284 ])
317285 (assertInt "FirewallMark")
318286 (assertRange "FirewallMark" 1 4294967295)
@@ -328,8 +296,6 @@ let
328296 "AllowedIPs"
329297 "Endpoint"
330298 "PersistentKeepalive"
331− "RouteTable"
332− "RouteMetric"
333299 ])
334300 (assertInt "PersistentKeepalive")
335301 (assertRange "PersistentKeepalive" 0 65535)
@@ -901,44 +867,6 @@ let
901867 };
902868 };
903869
904− networkdOptions = {
905− networkConfig = mkOption {
906− default = {};
907− example = { SpeedMeter = true; ManageForeignRoutingPolicyRules = false; };
908− type = types.addCheck (types.attrsOf unitOption) check.global.sectionNetwork;
909− description = ''
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.
914− '';
915− };
916−
917− dhcpV4Config = mkOption {
918− default = {};
919− example = { DUIDType = "vendor"; };
920− type = types.addCheck (types.attrsOf unitOption) check.global.sectionDHCPv4;
921− description = ''
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.
926− '';
927− };
928−
929− dhcpV6Config = mkOption {
930− default = {};
931− example = { DUIDType = "vendor"; };
932− type = types.addCheck (types.attrsOf unitOption) check.global.sectionDHCPv6;
933− description = ''
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.
938− '';
939− };
940− };
941−
942870 linkOptions = commonNetworkOptions // {
943871 # overwrite enable option from above
944872 enable = mkOption {
@@ -1587,39 +1515,6 @@ let
15871515 };
15881516 };
15891517
1590− networkdConfig = { config, ... }: {
1591− options = {
1592− routeTables = mkOption {
1593− default = {};
1594− example = { foo = 27; };
1595− type = with types; attrsOf int;
1596− description = ''
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.
1600− '';
1601− };
1602−
1603− addRouteTablesToIPRoute2 = mkOption {
1604− default = true;
1605− example = false;
1606− type = types.bool;
1607− description = ''
1608− If true and routeTables are set, then the specified route tables
1609− will also be installed into /etc/iproute2/rt_tables.
1610− '';
1611− };
1612− };
1613−
1614− config = {
1615− networkConfig = optionalAttrs (config.routeTables != { }) {
1616− RouteTable = mapAttrsToList
1617− (name: number: "${name}:${toString number}")
1618− config.routeTables;
1619− };
1620− };
1621− };
1622−
16231518 commonMatchText = def: optionalString (def.matchConfig != { }) ''
16241519 [Match]
16251520 ${attrsToSection def.matchConfig}
@@ -1701,20 +1596,6 @@ let
17011596 + def.extraConfig;
17021597 };
17031598
1704− renderConfig = def:
1705− { text = ''
1706− [Network]
1707− ${attrsToSection def.networkConfig}
1708− ''
1709− + optionalString (def.dhcpV4Config != { }) ''
1710− [DHCPv4]
1711− ${attrsToSection def.dhcpV4Config}
1712− ''
1713− + optionalString (def.dhcpV6Config != { }) ''
1714− [DHCPv6]
1715− ${attrsToSection def.dhcpV6Config}
1716− ''; };
1717−
17181599 networkToUnit = name: def:
17191600 { inherit (def) enable;
17201601 text = commonMatchText def
@@ -1847,12 +1728,6 @@ in
18471728 description = "Definition of systemd networks.";
18481729 };
18491730
1850− systemd.network.config = mkOption {
1851− default = {};
1852− type = with types; submodule [ { options = networkdOptions; } networkdConfig ];
1853− description = "Definition of global systemd network config.";
1854− };
1855−
18561731 systemd.network.units = mkOption {
18571732 description = "Definition of networkd units.";
18581733 default = {};
@@ -1866,48 +1741,6 @@ in
18661741 }));
18671742 };
18681743
1869− systemd.network.wait-online = {
1870− anyInterface = mkOption {
1871− description = ''
1872− Whether to consider the network online when any interface is online, as opposed to all of them.
1873− This is useful on portable machines with a wired and a wireless interface, for example.
1874− '';
1875− type = types.bool;
1876− default = false;
1877− };
1878−
1879− ignoredInterfaces = mkOption {
1880− description = ''
1881− Network interfaces to be ignored when deciding if the system is online.
1882− '';
1883− type = with types; listOf str;
1884− default = [];
1885− example = [ "wg0" ];
1886− };
1887−
1888− timeout = mkOption {
1889− description = ''
1890− Time to wait for the network to come online, in seconds. Set to 0 to disable.
1891− '';
1892− type = types.ints.unsigned;
1893− default = 120;
1894− example = 0;
1895− };
1896−
1897− extraArgs = mkOption {
1898− description = ''
1899− Extra command-line arguments to pass to systemd-networkd-wait-online.
1900− These also affect per-interface <literal>systemd-network-wait-online@</literal> services.
1901−
1902− See <link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html">
1903− <citerefentry><refentrytitle>systemd-networkd-wait-online.service</refentrytitle><manvolnum>8</manvolnum>
1904− </citerefentry></link> for all available options.
1905− '';
1906− type = with types; listOf str;
1907− default = [];
1908− };
1909− };
1910−
19111744 };
19121745
19131746 config = mkMerge [
@@ -1916,11 +1749,6 @@ in
19161749 {
19171750 systemd.network.units = mapAttrs' (n: v: nameValuePair "${n}.link" (linkToUnit n v)) cfg.links;
19181751 environment.etc = unitFiles;
1919−
1920− systemd.network.wait-online.extraArgs =
1921− [ "--timeout=${toString cfg.wait-online.timeout}" ]
1922− ++ optional cfg.wait-online.anyInterface "--any"
1923− ++ map (i: "--ignore=${i}") cfg.wait-online.ignoredInterfaces;
19241752 }
19251753
19261754 (mkIf config.systemd.network.enable {
@@ -1944,17 +1772,11 @@ in
19441772 systemd.services.systemd-networkd = {
19451773 wantedBy = [ "multi-user.target" ];
19461774 aliases = [ "dbus-org.freedesktop.network1.service" ];
1947− restartTriggers = map (x: x.source) (attrValues unitFiles) ++ [
1948− config.environment.etc."systemd/networkd.conf".source
1949− ];
1775+ restartTriggers = map (x: x.source) (attrValues unitFiles);
19501776 };
19511777
19521778 systemd.services.systemd-networkd-wait-online = {
19531779 wantedBy = [ "network-online.target" ];
1954− serviceConfig.ExecStart = [
1955− ""
1956− "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online ${utils.escapeSystemdExecArgs cfg.wait-online.extraArgs}"
1957− ];
19581780 };
19591781
19601782 systemd.services."systemd-network-wait-online@" = {
@@ -1965,21 +1787,10 @@ in
19651787 serviceConfig = {
19661788 Type = "oneshot";
19671789 RemainAfterExit = true;
1968− ExecStart = "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online -i %I ${utils.escapeSystemdExecArgs cfg.wait-online.extraArgs}";
1790+ ExecStart = "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online -i %I";
19691791 };
19701792 };
19711793
1972− environment.etc."systemd/networkd.conf" = renderConfig cfg.config;
1973−
1974− networking.iproute2 = mkIf (cfg.config.addRouteTablesToIPRoute2 && cfg.config.routeTables != { }) {
1975− enable = mkDefault true;
1976− rttablesExtraConfig = ''
1977−
1978− # Extra tables defined in NixOS systemd.networkd.config.routeTables.
1979− ${concatStringsSep "\n" (mapAttrsToList (name: number: "${toString number} ${name}") cfg.config.routeTables)}
1980− '';
1981− };
1982−
19831794 services.resolved.enable = mkDefault true;
19841795 })
19851796 ];
nixos/modules/system/boot/stage-1-init.sh+6−3
@@ -232,8 +232,7 @@ done
232232mkdir -p /lib
233233ln -s @modulesClosure@/lib/modules /lib/modules
234234ln -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
237236for i in @kernelModules@; do
238237 info "loading module $(basename $i)..."
239238 modprobe $i
@@ -318,7 +317,11 @@ checkFS() {
318317
319318 echo "checking $device..."
320319
321− fsck -V -a "$device"
320+ fsckFlags=
321+ if test "$fsType" != "btrfs"; then
322+ fsckFlags="-V -a"
323+ fi
324+ fsck $fsckFlags "$device"
322325 fsckResult=$?
323326
324327 if test $(($fsckResult | 2)) = $fsckResult; then
nixos/modules/system/boot/stage-1.nix+14−33
@@ -131,26 +131,6 @@ let
131131 copy_bin_and_libs ${pkgs.kmod}/bin/kmod
132132 ln -sf kmod $out/bin/modprobe
133133
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.
144− #
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
148− #!$out/bin/ash
149− export LD_LIBRARY_PATH=$out/lib
150− exec $out/bin/modprobe "\$@"
151− EOF
152− chmod +x $out/bin/modprobe-kernel
153−
154134 # Copy resize2fs if any ext* filesystems are to be resized
155135 ${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) ''
156136 # We need mke2fs in the initrd.
@@ -355,7 +335,7 @@ let
355335 [ { object = bootStage1;
356336 symlink = "/init";
357337 }
358− { object = pkgs.writeText "mdadm.conf" config.boot.initrd.services.swraid.mdadmConf;
338+ { object = pkgs.writeText "mdadm.conf" config.boot.initrd.mdadmConf;
359339 symlink = "/etc/mdadm.conf";
360340 }
361341 { object = pkgs.runCommand "initrd-kmod-blacklist-ubuntu" {
@@ -420,7 +400,7 @@ let
420400 ${lib.optionalString (config.boot.initrd.secrets == {})
421401 "exit 0"}
422402
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
424404
425405 function cleanup {
426406 if [ -n "$tmp" -a -d "$tmp" ]; then
@@ -440,7 +420,7 @@ let
440420 ) config.boot.initrd.secrets)
441421 }
442422
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) | \
444424 ${compressorExe} ${lib.escapeShellArgs initialRamdisk.compressorArgs} >> "$1"
445425 '';
446426
@@ -505,6 +485,14 @@ in
505485 '';
506486 };
507487
488+ boot.initrd.mdadmConf = mkOption {
489+ default = "";
490+ type = types.lines;
491+ description = ''
492+ Contents of <filename>/etc/mdadm.conf</filename> in stage 1.
493+ '';
494+ };
495+
508496 boot.initrd.preLVMCommands = mkOption {
509497 default = "";
510498 type = types.lines;
@@ -715,12 +703,8 @@ in
715703 }
716704 ];
717705
718− system.build = mkMerge [
719− { inherit bootStage1 initialRamdiskSecretAppender extraUtils; }
720−
721− # generated in nixos/modules/system/boot/systemd/initrd.nix
722− (mkIf (!config.boot.initrd.systemd.enable) { inherit initialRamdisk; })
723− ];
706+ system.build =
707+ { inherit bootStage1 initialRamdisk initialRamdiskSecretAppender extraUtils; };
724708
725709 system.requiredKernelConfig = with config.lib.kernelConfig; [
726710 (isYes "TMPFS")
@@ -728,9 +712,6 @@ in
728712 ];
729713
730714 boot.initrd.supportedFilesystems = map (fs: fs.fsType) fileSystems;
731− };
732715
733− imports = [
734− (mkRenamedOptionModule [ "boot" "initrd" "mdadmConf" ] [ "boot" "initrd" "services" "swraid" "mdadmConf" ])
735− ];
716+ };
736717}
nixos/modules/system/boot/stage-2-init.sh+98−66
@@ -5,30 +5,32 @@ systemConfig=@systemConfig@
55export HOME=/root PATH="@path@"
66
77
8−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
9− # Process the kernel command line.
10− for o in $(</proc/cmdline); do
11− case $o in
12− boot.debugtrace)
13− # Show each command.
14− set -x
15− ;;
16− esac
17− done
18−
19−
20− # Print a greeting.
21− echo
22− echo -e "\e[1;32m<<< NixOS Stage 2 >>>\e[0m"
23− echo
24−
25−
26− # Normally, stage 1 mounts the root filesystem read/writable.
27− # However, in some environments, stage 2 is executed directly, and the
28− # root is read-only. So make it writable here.
29− if [ -z "$container" ]; then
30− mount -n -o remount,rw none /
31− fi
8+# Process the kernel command line.
9+for o in $(</proc/cmdline); do
10+ case $o in
11+ boot.debugtrace)
12+ # Show each command.
13+ set -x
14+ ;;
15+ resume=*)
16+ set -- $(IFS==; echo $o)
17+ resumeDevice=$2
18+ ;;
19+ esac
20+done
21+
22+
23+# Print a greeting.
24+echo
25+echo -e "\e[1;32m<<< NixOS Stage 2 >>>\e[0m"
26+echo
27+
28+
29+# Normally, stage 1 mounts the root filesystem read/writable.
30+# However, in some environments, stage 2 is executed directly, and the
31+# root is read-only. So make it writable here.
32+if [ -z "$container" ]; then
33+ mount -n -o remount,rw none /
3234fi
3335
3436
@@ -41,12 +43,6 @@ if [ ! -e /proc/1 ]; then
4143 local options="$3"
4244 local fsType="$4"
4345
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
47− return
48− fi
49−
5046 install -m 0755 -d "$mountPoint"
5147 mount -n -t "$fsType" -o "$options" "$device" "$mountPoint"
5248 }
@@ -54,11 +50,7 @@ if [ ! -e /proc/1 ]; then
5450fi
5551
5652
57−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" = true ]; then
58− echo "booting system configuration ${systemConfig}"
59−else
60− echo "booting system configuration $systemConfig" > /dev/kmsg
61−fi
53+echo "booting system configuration $systemConfig" > /dev/kmsg
6254
6355
6456# Make /nix/store a read-only bind mount to enforce immutability of
@@ -80,32 +72,59 @@ if [ -n "@readOnlyStore@" ]; then
8072fi
8173
8274
83−if [ "${IN_NIXOS_SYSTEMD_STAGE1:-}" != true ]; then
84− # Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
85− if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
86− resolvconf -m 1000 -a host </etc/resolv.conf
87− fi
75+# Provide a /etc/mtab.
76+install -m 0755 -d /etc
77+test -e /etc/fstab || touch /etc/fstab # to shut up mount
78+rm -f /etc/mtab* # not that we care about stale locks
79+ln -s /proc/mounts /etc/mtab
8880
8981
90− # Log the script output to /dev/kmsg or /run/log/stage-2-init.log.
91− # Only at this point are all the necessary prerequisites ready for these commands.
92− exec {logOutFd}>&1 {logErrFd}>&2
93− if test -w /dev/kmsg; then
94− exec > >(tee -i /proc/self/fd/"$logOutFd" | while read -r line; do
95− if test -n "$line"; then
96− echo "<7>stage-2-init: $line" > /dev/kmsg
97− fi
98− done) 2>&1
99− else
100− mkdir -p /run/log
101− exec > >(tee -i /run/log/stage-2-init.log) 2>&1
102− fi
82+# More special file systems, initialise required directories.
83+[ -e /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb # UML doesn't have USB by default
84+install -m 01777 -d /tmp
85+install -m 0755 -d /var/{log,lib,db} /nix/var /etc/nixos/ \
86+ /run/lock /home /bin # for the /bin/sh symlink
87+
88+
89+# Miscellaneous boot time cleanup.
90+rm -rf /var/run /var/lock
91+rm -f /etc/{group,passwd,shadow}.lock
92+
93+
94+# Also get rid of temporary GC roots.
95+rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots
96+
97+
98+# For backwards compatibility, symlink /var/run to /run, and /var/lock
99+# to /run/lock.
100+ln -s /run /var/run
101+ln -s /run/lock /var/lock
102+
103+
104+# Clear the resume device.
105+if test -n "$resumeDevice"; then
106+ mkswap "$resumeDevice" || echo 'Failed to clear saved image.'
103107fi
104108
105109
106−# Required by the activation script
107−install -m 0755 -d /etc /etc/nixos
108−install -m 01777 -d /tmp
110+# Use /etc/resolv.conf supplied by systemd-nspawn, if applicable.
111+if [ -n "@useHostResolvConf@" ] && [ -e /etc/resolv.conf ]; then
112+ resolvconf -m 1000 -a host </etc/resolv.conf
113+fi
114+
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
122+ fi
123+ done) 2>&1
124+else
125+ mkdir -p /run/log
126+ exec > >(tee -i /run/log/stage-2-init.log) 2>&1
127+fi
109128
110129
111130# Run the script that performs all configuration activation that does
@@ -114,9 +133,22 @@ echo "running activation script..."
114133$systemConfig/activate
115134
116135
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
140+ hwclock --hctosys
141+fi
142+
143+
117144# Record the boot configuration.
118145ln -sfn "$systemConfig" /run/booted-system
119146
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
151+
120152
121153# Run any user-specified commands.
122154@shell@ @postBootCommands@
@@ -130,15 +162,15 @@ ln -sfn "$systemConfig" /run/booted-system
130162: >> /etc/machine-id
131163
132164
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.
137− exec 1>&$logOutFd 2>&$logErrFd
138− exec {logOutFd}>&- {logErrFd}>&-
165+# Reset the logging file descriptors.
166+exec 1>&$logOutFd 2>&$logErrFd
167+exec {logOutFd}>&- {logErrFd}>&-
139168
140169
141− # Start systemd in a clean environment.
142− echo "starting systemd..."
143− exec @systemdExecutable@ "$@"
144−fi
170+# Start systemd.
171+echo "starting systemd..."
172+
173+PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \
174+ LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive @systemdUnitPathEnvVar@ \
175+ TZDIR=/etc/zoneinfo \
176+ exec @systemdExecutable@
nixos/modules/system/boot/stage-2.nix+39−2
@@ -19,6 +19,11 @@ let
1919 pkgs.coreutils
2020 pkgs.util-linux
2121 ] ++ lib.optional useHostResolvConf pkgs.openresolv);
22+ fsPackagesPath = lib.makeBinPath config.system.fsPackages;
23+ systemdUnitPathEnvVar = lib.optionalString (config.boot.extraSystemdUnitPaths != [])
24+ ("SYSTEMD_UNIT_PATH="
25+ + builtins.concatStringsSep ":" config.boot.extraSystemdUnitPaths
26+ + ":"); # If SYSTEMD_UNIT_PATH ends with an empty component (":"), the usual unit load path will be appended to the contents of the variable
2227 postBootCommands = pkgs.writeText "local-cmds"
2328 ''
2429 ${config.boot.postBootCommands}
@@ -42,11 +47,43 @@ in
4247 '';
4348 };
4449
50+ devSize = mkOption {
51+ default = "5%";
52+ example = "32m";
53+ type = types.str;
54+ description = ''
55+ Size limit for the /dev tmpfs. Look at mount(8), tmpfs size option,
56+ for the accepted syntax.
57+ '';
58+ };
59+
60+ devShmSize = mkOption {
61+ default = "50%";
62+ example = "256m";
63+ type = types.str;
64+ description = ''
65+ Size limit for the /dev/shm tmpfs. Look at mount(8), tmpfs size option,
66+ for the accepted syntax.
67+ '';
68+ };
69+
70+ runSize = mkOption {
71+ default = "25%";
72+ example = "256m";
73+ type = types.str;
74+ description = ''
75+ Size limit for the /run tmpfs. Look at mount(8), tmpfs size option,
76+ for the accepted syntax.
77+ '';
78+ };
79+
4580 systemdExecutable = mkOption {
46− default = "/run/current-system/systemd/lib/systemd/systemd";
81+ default = "systemd";
4782 type = types.str;
4883 description = ''
49− The program to execute to start systemd.
84+ The program to execute to start systemd. Typically
85+ <literal>systemd</literal>, which will find systemd in the
86+ PATH.
5087 '';
5188 };
5289
nixos/modules/system/boot/systemd.nix+44−48
@@ -11,7 +11,14 @@ let
1111 systemd = cfg.package;
1212
1313 inherit (systemdUtils.lib)
14+ makeUnit
1415 generateUnits
16+ makeJobScript
17+ unitConfig
18+ serviceConfig
19+ mountConfig
20+ automountConfig
21+ commonUnitText
1522 targetToUnit
1623 serviceToUnit
1724 socketToUnit
@@ -178,7 +185,13 @@ in
178185 systemd.units = mkOption {
179186 description = "Definition of systemd units.";
180187 default = {};
181− type = systemdUtils.types.units;
188+ type = with types; attrsOf (submodule (
189+ { name, config, ... }:
190+ { options = concreteUnitOptions;
191+ config = {
192+ unit = mkDefault (makeUnit name config);
193+ };
194+ }));
182195 };
183196
184197 systemd.packages = mkOption {
@@ -190,37 +203,37 @@ in
190203
191204 systemd.targets = mkOption {
192205 default = {};
193− type = systemdUtils.types.targets;
206+ type = with types; attrsOf (submodule [ { options = targetOptions; } unitConfig] );
194207 description = "Definition of systemd target units.";
195208 };
196209
197210 systemd.services = mkOption {
198211 default = {};
199− type = systemdUtils.types.services;
212+ type = with types; attrsOf (submodule [ { options = serviceOptions; } unitConfig serviceConfig ]);
200213 description = "Definition of systemd service units.";
201214 };
202215
203216 systemd.sockets = mkOption {
204217 default = {};
205− type = systemdUtils.types.sockets;
218+ type = with types; attrsOf (submodule [ { options = socketOptions; } unitConfig ]);
206219 description = "Definition of systemd socket units.";
207220 };
208221
209222 systemd.timers = mkOption {
210223 default = {};
211− type = systemdUtils.types.timers;
224+ type = with types; attrsOf (submodule [ { options = timerOptions; } unitConfig ]);
212225 description = "Definition of systemd timer units.";
213226 };
214227
215228 systemd.paths = mkOption {
216229 default = {};
217− type = systemdUtils.types.paths;
230+ type = with types; attrsOf (submodule [ { options = pathOptions; } unitConfig ]);
218231 description = "Definition of systemd path units.";
219232 };
220233
221234 systemd.mounts = mkOption {
222235 default = [];
223− type = systemdUtils.types.mounts;
236+ type = with types; listOf (submodule [ { options = mountOptions; } unitConfig mountConfig ]);
224237 description = ''
225238 Definition of systemd mount units.
226239 This is a list instead of an attrSet, because systemd mandates the names to be derived from
@@ -230,7 +243,7 @@ in
230243
231244 systemd.automounts = mkOption {
232245 default = [];
233− type = systemdUtils.types.automounts;
246+ type = with types; listOf (submodule [ { options = automountOptions; } unitConfig automountConfig ]);
234247 description = ''
235248 Definition of systemd automount units.
236249 This is a list instead of an attrSet, because systemd mandates the names to be derived from
@@ -240,7 +253,7 @@ in
240253
241254 systemd.slices = mkOption {
242255 default = {};
243− type = systemdUtils.types.slices;
256+ type = with types; attrsOf (submodule [ { options = sliceOptions; } unitConfig] );
244257 description = "Definition of slice configurations.";
245258 };
246259
@@ -289,16 +302,6 @@ in
289302 '';
290303 };
291304
292− systemd.managerEnvironment = mkOption {
293− type = with types; attrsOf (nullOr (oneOf [ str path package ]));
294− default = {};
295− example = { SYSTEMD_LOG_LEVEL = "debug"; };
296− description = ''
297− Environment variables of PID 1. These variables are
298− <emphasis>not</emphasis> passed to started units.
299− '';
300− };
301−
302305 systemd.enableCgroupAccounting = mkOption {
303306 default = true;
304307 type = types.bool;
@@ -349,11 +352,10 @@ in
349352 type = types.listOf types.str;
350353 example = [ "systemd-backlight@.service" ];
351354 description = ''
352− A list of units to skip when generating system systemd configuration directory. This has
355+ A list of units to suppress when generating system systemd configuration directory. This has
353356 priority over upstream units, <option>systemd.units</option>, and
354357 <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
356− by other NixOS modules.
358+ suppress a upstream systemd unit with any modifications made to it by other NixOS modules.
357359 '';
358360 };
359361
@@ -468,18 +470,11 @@ in
468470
469471 enabledUpstreamSystemUnits = filter (n: ! elem n cfg.suppressedSystemUnits) upstreamSystemUnits;
470472 enabledUnits = filterAttrs (n: v: ! elem n cfg.suppressedSystemUnits) cfg.units;
471−
472473 in ({
473− "systemd/system".source = generateUnits {
474− type = "system";
475− units = enabledUnits;
476− upstreamUnits = enabledUpstreamSystemUnits;
477− upstreamWants = upstreamSystemWants;
478− };
474+ "systemd/system".source = generateUnits "system" enabledUnits enabledUpstreamSystemUnits upstreamSystemWants;
479475
480476 "systemd/system.conf".text = ''
481477 [Manager]
482− ManagerEnvironment=${lib.concatStringsSep " " (lib.mapAttrsToList (n: v: "${n}=${lib.escapeShellArg v}") cfg.managerEnvironment)}
483478 ${optionalString config.systemd.enableCgroupAccounting ''
484479 DefaultCPUAccounting=yes
485480 DefaultIOAccounting=yes
@@ -547,17 +542,6 @@ in
547542 (v: let n = escapeSystemdPath v.where;
548543 in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts);
549544
550− # Environment of PID 1
551− systemd.managerEnvironment = {
552− # Doesn't contain systemd itself - everything works so it seems to use the compiled-in value for its tools
553− PATH = lib.makeBinPath config.system.fsPackages;
554− LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive";
555− TZDIR = "/etc/zoneinfo";
556− # If SYSTEMD_UNIT_PATH ends with an empty component (":"), the usual unit load path will be appended to the contents of the variable
557− SYSTEMD_UNIT_PATH = lib.mkIf (config.boot.extraSystemdUnitPaths != []) "${builtins.concatStringsSep ":" config.boot.extraSystemdUnitPaths}:";
558− };
559−
560−
561545 system.requiredKernelConfig = map config.lib.kernelConfig.isEnabled
562546 [ "DEVTMPFS" "CGROUPS" "INOTIFY_USER" "SIGNALFD" "TIMERFD" "EPOLL" "NET"
563547 "SYSFS" "PROC_FS" "FHANDLE" "CRYPTO_USER_API_HASH" "CRYPTO_HMAC"
@@ -573,6 +557,14 @@ in
573557 })
574558 (filterAttrs (name: service: service.enable && service.startAt != []) cfg.services);
575559
560+ # Generate timer units for all services that have a ‘startAt’ value.
561+ systemd.user.timers =
562+ mapAttrs (name: service:
563+ { wantedBy = [ "timers.target" ];
564+ timerConfig.OnCalendar = service.startAt;
565+ })
566+ (filterAttrs (name: service: service.startAt != []) cfg.user.services);
567+
576568 # Some overrides to upstream units.
577569 systemd.services."systemd-backlight@".restartIfChanged = false;
578570 systemd.services."systemd-fsck@".restartIfChanged = false;
@@ -597,18 +589,22 @@ in
597589
598590 boot.kernelParams = optional (!cfg.enableUnifiedCgroupHierarchy) "systemd.unified_cgroup_hierarchy=0";
599591
600− services.logrotate.settings = {
592+ services.logrotate.paths = {
601593 "/var/log/btmp" = mapAttrs (_: mkDefault) {
602594 frequency = "monthly";
603− rotate = 1;
604− create = "0660 root ${config.users.groups.utmp.name}";
605− minsize = "1M";
595+ keep = 1;
596+ extraConfig = ''
597+ create 0660 root ${config.users.groups.utmp.name}
598+ minsize 1M
599+ '';
606600 };
607601 "/var/log/wtmp" = mapAttrs (_: mkDefault) {
608602 frequency = "monthly";
609− rotate = 1;
610− create = "0664 root ${config.users.groups.utmp.name}";
611− minsize = "1M";
603+ keep = 1;
604+ extraConfig = ''
605+ create 0664 root ${config.users.groups.utmp.name}
606+ minsize 1M
607+ '';
612608 };
613609 };
614610 };
nixos/modules/system/boot/systemd/initrd-secrets.nixdeleted−36
@@ -1,36 +0,0 @@
1−{ config, pkgs, lib, ... }:
2−
3−{
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);
8−
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;
16−
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.
21− script = ''
22− for secret in $(cd /.initrd-secrets; find . -type f); do
23− mkdir -p "$(dirname "/$secret")"
24− cp "/.initrd-secrets/$secret" "/$secret"
25− done
26− '';
27−
28− unitConfig = {
29− Type = "oneshot";
30− RemainAfterExit = true;
31− };
32− };
33− # The script needs this
34− boot.initrd.systemd.extraBin.find = "${pkgs.findutils}/bin/find";
35− };
36−}
nixos/modules/system/boot/systemd/initrd.nixdeleted−502
@@ -1,502 +0,0 @@
1−{ lib, config, utils, pkgs, ... }:
2−
3−with lib;
4−
5−let
6− inherit (utils) systemdUtils escapeSystemdPath;
7− inherit (systemdUtils.lib)
8− generateUnits
9− pathToUnit
10− serviceToUnit
11− sliceToUnit
12− socketToUnit
13− targetToUnit
14− timerToUnit
15− mountToUnit
16− automountToUnit;
17−
18−
19− cfg = config.boot.initrd.systemd;
20−
21− # Copied from fedora
22− upstreamUnits = [
23− "basic.target"
24− "ctrl-alt-del.target"
25− "emergency.service"
26− "emergency.target"
27− "final.target"
28− "halt.target"
29− "initrd-cleanup.service"
30− "initrd-fs.target"
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"
36− "initrd.target"
37− "kexec.target"
38− "kmod-static-nodes.service"
39− "local-fs-pre.target"
40− "local-fs.target"
41− "multi-user.target"
42− "paths.target"
43− "poweroff.target"
44− "reboot.target"
45− "rescue.service"
46− "rescue.target"
47− "rpcbind.target"
48− "shutdown.target"
49− "sigpwr.target"
50− "slices.target"
51− "sockets.target"
52− "swap.target"
53− "sysinit.target"
54− "sys-kernel-config.mount"
55− "syslog.socket"
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"
72− "timers.target"
73− "umount.target"
74−
75− # TODO: Networking
76− # "network-online.target"
77− # "network-pre.target"
78− # "network.target"
79− # "nss-lookup.target"
80− # "nss-user-lookup.target"
81− # "remote-fs-pre.target"
82− # "remote-fs.target"
83− ] ++ cfg.additionalUpstreamUnits;
84−
85− upstreamWants = [
86− "sysinit.target.wants"
87− ];
88−
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));
92−
93− stage1Units = generateUnits {
94− type = "initrd";
95− units = enabledUnits;
96− upstreamUnits = enabledUpstreamUnits;
97− inherit upstreamWants;
98− inherit (cfg) packages package;
99− };
100−
101− fileSystems = filter utils.fsNeededForBoot config.system.build.fileSystems;
102−
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);
107−
108− needMakefs = lib.any (fs: fs.autoFormat) fileSystems;
109− needGrowfs = lib.any (fs: fs.autoResize) fileSystems;
110−
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;
120− };
121−
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);
127− };
128−
129− initialRamdisk = pkgs.makeInitrdNG {
130− name = "initrd-${kernel-name}";
131− inherit (config.boot.initrd) compressor compressorArgs prepend;
132−
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);
135− };
136−
137−in {
138− options.boot.initrd.systemd = {
139− enable = mkEnableOption ''systemd in initrd.
140−
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.
144− '';
145−
146− package = (mkPackageOption pkgs "systemd" {
147− default = "systemdStage1";
148− }) // {
149− visible = false;
150− };
151−
152− contents = mkOption {
153− description = "Set of files that have to be linked into the initrd";
154− example = literalExpression ''
155− {
156− "/etc/hostname".text = "mymachine";
157− }
158− '';
159− visible = false;
160− default = {};
161− type = utils.systemdUtils.types.initrdContents;
162− };
163−
164− storePaths = mkOption {
165− description = ''
166− Store paths to copy into the initrd as well.
167− '';
168− type = with types; listOf (oneOf [ singleLineStr package ]);
169− default = [];
170− };
171−
172− extraBin = mkOption {
173− description = ''
174− Tools to add to /bin
175− '';
176− example = literalExpression ''
177− {
178− umount = ''${pkgs.util-linux}/bin/umount;
179− }
180− '';
181− type = types.attrsOf types.path;
182− default = {};
183− };
184−
185− suppressedStorePaths = mkOption {
186− description = ''
187− Store paths specified in the storePaths option that
188− should not be copied.
189− '';
190− type = types.listOf types.singleLineStr;
191− default = [];
192− };
193−
194− emergencyAccess = mkOption {
195− type = with types; oneOf [ bool singleLineStr ];
196− visible = false;
197− description = ''
198− Set to true for unauthenticated emergency access, and false for
199− no emergency access.
200−
201− Can also be set to a hashed super user password to allow
202− authenticated access to the emergency mode.
203− '';
204− default = false;
205− };
206−
207− initrdBin = mkOption {
208− type = types.listOf types.package;
209− default = [];
210− visible = false;
211− description = ''
212− Packages to include in /bin for the stage 1 emergency shell.
213− '';
214− };
215−
216− additionalUpstreamUnits = mkOption {
217− default = [ ];
218− type = types.listOf types.str;
219− visible = false;
220− example = [ "debug-shell.service" "systemd-quotacheck.service" ];
221− description = ''
222− Additional units shipped with systemd that shall be enabled.
223− '';
224− };
225−
226− suppressedUnits = mkOption {
227− default = [ ];
228− type = types.listOf types.str;
229− example = [ "systemd-backlight@.service" ];
230− visible = false;
231− description = ''
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.
237− '';
238− };
239−
240− units = mkOption {
241− description = "Definition of systemd units.";
242− default = {};
243− visible = false;
244− type = systemdUtils.types.units;
245− };
246−
247− packages = mkOption {
248− default = [];
249− visible = false;
250− type = types.listOf types.package;
251− example = literalExpression "[ pkgs.systemd-cryptsetup-generator ]";
252− description = "Packages providing systemd units and hooks.";
253− };
254−
255− targets = mkOption {
256− default = {};
257− visible = false;
258− type = systemdUtils.types.initrdTargets;
259− description = "Definition of systemd target units.";
260− };
261−
262− services = mkOption {
263− default = {};
264− type = systemdUtils.types.initrdServices;
265− visible = false;
266− description = "Definition of systemd service units.";
267− };
268−
269− sockets = mkOption {
270− default = {};
271− type = systemdUtils.types.initrdSockets;
272− visible = false;
273− description = "Definition of systemd socket units.";
274− };
275−
276− timers = mkOption {
277− default = {};
278− type = systemdUtils.types.initrdTimers;
279− visible = false;
280− description = "Definition of systemd timer units.";
281− };
282−
283− paths = mkOption {
284− default = {};
285− type = systemdUtils.types.initrdPaths;
286− visible = false;
287− description = "Definition of systemd path units.";
288− };
289−
290− mounts = mkOption {
291− default = [];
292− type = systemdUtils.types.initrdMounts;
293− visible = false;
294− description = ''
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.
298− '';
299− };
300−
301− automounts = mkOption {
302− default = [];
303− type = systemdUtils.types.automounts;
304− visible = false;
305− description = ''
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.
309− '';
310− };
311−
312− slices = mkOption {
313− default = {};
314− type = systemdUtils.types.slices;
315− visible = false;
316− description = "Definition of slice configurations.";
317− };
318− };
319−
320− config = mkIf (config.boot.initrd.enable && cfg.enable) {
321− system.build = { inherit initialRamdisk; };
322−
323− boot.initrd.availableKernelModules = [ "autofs4" ]; # systemd needs this for some features
324−
325− boot.initrd.systemd = {
326− initrdBin = [pkgs.bash pkgs.coreutils cfg.package.kmod cfg.package] ++ config.system.fsPackages;
327− extraBin = {
328− less = "${pkgs.less}/bin/less";
329− mount = "${cfg.package.util-linux}/bin/mount";
330− umount = "${cfg.package.util-linux}/bin/umount";
331− };
332−
333− contents = {
334− "/init".source = "${cfg.package}/lib/systemd/systemd";
335− "/etc/systemd/system".source = stage1Units;
336−
337− "/etc/systemd/system.conf".text = ''
338− [Manager]
339− DefaultEnvironment=PATH=/bin:/sbin ${optionalString (isBool cfg.emergencyAccess && cfg.emergencyAccess) "SYSTEMD_SULOGIN_FORCE=1"}
340− '';
341−
342− "/etc/fstab".source = fstab;
343−
344− "/lib/modules".source = "${modulesClosure}/lib/modules";
345− "/lib/firmware".source = "${modulesClosure}/lib/firmware";
346−
347− "/etc/modules-load.d/nixos.conf".text = concatStringsSep "\n" config.boot.initrd.kernelModules;
348−
349− "/etc/passwd".source = "${pkgs.fakeNss}/etc/passwd";
350− "/etc/shadow".text = "root:${if isBool cfg.emergencyAccess then "!" else cfg.emergencyAccess}:::::::";
351−
352− "/bin".source = "${initrdBinEnv}/bin";
353− "/sbin".source = "${initrdBinEnv}/sbin";
354−
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
359− '';
360− "/etc/modprobe.d/debian.conf".source = pkgs.kmod-debian-aliases;
361−
362− };
363−
364− storePaths = [
365− # systemd tooling
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"
376−
377− # generators
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"
383−
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"
388−
389− # so NSS can look up usernames
390− "${pkgs.glibc}/lib/libnss_files.so.2"
391− ] ++ jobScripts;
392−
393− targets.initrd.aliases = ["default.target"];
394− units =
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
401− // listToAttrs (map
402− (v: let n = escapeSystemdPath v.where;
403− in nameValuePair "${n}.mount" (mountToUnit n v)) cfg.mounts)
404− // listToAttrs (map
405− (v: let n = escapeSystemdPath v.where;
406− in nameValuePair "${n}.automount" (automountToUnit n v)) cfg.automounts);
407−
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/
411− #
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
419− '')];
420− services."systemd-makefs@" = lib.mkIf needMakefs { unitConfig.IgnoreOnIsolate = true; };
421− services."systemd-growfs@" = lib.mkIf needGrowfs { unitConfig.IgnoreOnIsolate = true; };
422−
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";
429−
430− script = /* bash */ ''
431− set -uo pipefail
432− export PATH="/bin:${cfg.package.util-linux}/bin"
433−
434− # Figure out what closure to boot
435− closure=
436− for o in $(< /proc/cmdline); do
437− case $o in
438− init=*)
439− IFS== read -r -a initParam <<< "$o"
440− closure="$(dirname "''${initParam[1]}")"
441− ;;
442− esac
443− done
444−
445− # Sanity check
446− if [ -z "''${closure:-}" ]; then
447− echo 'No init= parameter on the kernel command line' >&2
448− exit 1
449− fi
450−
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"
456− exit 0
457− fi
458− echo 'NEW_INIT=' > /etc/switch-root.conf
459−
460−
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
465−
466− # Initialize the system
467− export IN_NIXOS_SYSTEMD_STAGE1=true
468− exec chroot /sysroot $closure/prepare-root
469− '';
470− };
471−
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";
478− ExecStart = [
479− ""
480− ''systemctl --no-block switch-root /sysroot "''${NEW_INIT}"''
481− ];
482− };
483−
484− services.panic-on-fail = {
485− wantedBy = ["emergency.target"];
486− unitConfig = {
487− DefaultDependencies = false;
488− ConditionKernelCommandLine = [
489− "|boot.panic_on_fail"
490− "|stage1panic"
491− ];
492− };
493− script = ''
494− echo c > /proc/sysrq-trigger
495− '';
496− serviceConfig.Type = "oneshot";
497− };
498− };
499−
500− boot.kernelParams = lib.mkIf (config.boot.resumeDevice != "") [ "resume=${config.boot.resumeDevice}" ];
501− };
502−}
nixos/modules/system/boot/systemd/nspawn.nix+1−7
@@ -116,13 +116,7 @@ in {
116116 in
117117 mkMerge [
118118 (mkIf (cfg != {}) {
119− environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits {
120− allowCollisions = false;
121− type = "nspawn";
122− inherit units;
123− upstreamUnits = [];
124− upstreamWants = [];
125− });
119+ environment.etc."systemd/nspawn".source = mkIf (cfg != {}) (generateUnits' false "nspawn" units [] []);
126120 })
127121 {
128122 systemd.targets.multi-user.wants = [ "machines.target" ];
nixos/modules/system/boot/systemd/shutdown.nixdeleted−58
This diff is too big to show here.
nixos/modules/system/boot/systemd/tmpfiles.nix−16
This diff is too big to show here.
nixos/modules/system/boot/systemd/user.nix+18−13
This diff is too big to show here.
nixos/modules/system/boot/timesyncd.nix+5−17
This diff is too big to show here.
nixos/modules/tasks/auto-upgrade.nix+8−33
This diff is too big to show here.
nixos/modules/tasks/bcache.nix+6−16
This diff is too big to show here.
nixos/modules/tasks/filesystems.nix+1−30
This diff is too big to show here.
nixos/modules/tasks/filesystems/btrfs.nix+3−3
This diff is too big to show here.
nixos/modules/tasks/filesystems/cifs.nix+1−1
This diff is too big to show here.
nixos/modules/tasks/filesystems/ext.nix+4−10
This diff is too big to show here.
nixos/modules/tasks/filesystems/f2fs.nix+1−1
This diff is too big to show here.
nixos/modules/tasks/filesystems/jfs.nix+1−1
This diff is too big to show here.
nixos/modules/tasks/filesystems/reiserfs.nix+1−1
This diff is too big to show here.
nixos/modules/tasks/filesystems/unionfs-fuse.nix+2−13
This diff is too big to show here.
nixos/modules/tasks/filesystems/vfat.nix+1−1
This diff is too big to show here.
nixos/modules/tasks/filesystems/xfs.nix+2−2
This diff is too big to show here.
nixos/modules/tasks/filesystems/zfs.nix+33−9
This diff is too big to show here.
nixos/modules/tasks/lvm.nix+6−55
This diff is too big to show here.
nixos/modules/tasks/network-interfaces-scripted.nix−2
This diff is too big to show here.
nixos/modules/tasks/network-interfaces-systemd.nix−2
This diff is too big to show here.
nixos/modules/tasks/network-interfaces.nix+11−23
This diff is too big to show here.
nixos/modules/tasks/swraid.nix+9−35
This diff is too big to show here.
nixos/modules/testing/test-instrumentation.nix+26−19
This diff is too big to show here.
nixos/modules/virtualisation/azure-agent.nix+9−5
This diff is too big to show here.
nixos/modules/virtualisation/azure-common.nix+1−5
This diff is too big to show here.
nixos/modules/virtualisation/libvirtd.nix−4
This diff is too big to show here.
nixos/modules/virtualisation/nixos-containers.nix+11−26
This diff is too big to show here.
nixos/modules/virtualisation/oci-containers.nix+5−1
This diff is too big to show here.
nixos/modules/virtualisation/openstack-config.nix+7−39
This diff is too big to show here.
nixos/modules/virtualisation/openstack-metadata-fetcher.nix+3−3
This diff is too big to show here.
nixos/modules/virtualisation/openstack-options.nixdeleted−71
This diff is too big to show here.
nixos/modules/virtualisation/podman/default.nix+1−4
This diff is too big to show here.
nixos/modules/virtualisation/qemu-vm.nix+7−43
This diff is too big to show here.
nixos/modules/virtualisation/vmware-host.nixdeleted−166
This diff is too big to show here.
nixos/modules/virtualisation/waydroid.nix+2−4
This diff is too big to show here.
nixos/release-combined.nix−2
This diff is too big to show here.
nixos/release.nix+2−2
This diff is too big to show here.
nixos/tests/aesmd.nix+1−1
This diff is too big to show here.
nixos/tests/agda.nix+1−1
This diff is too big to show here.
nixos/tests/airsonic.nix+1−1
This diff is too big to show here.
nixos/tests/all-terminfo.nixdeleted−31
This diff is too big to show here.
nixos/tests/all-tests.nix+4−29
This diff is too big to show here.
nixos/tests/amazon-init-shell.nix+1−1
This diff is too big to show here.
nixos/tests/apfs.nix+1−1
This diff is too big to show here.
nixos/tests/apparmor.nix+1−1
This diff is too big to show here.
nixos/tests/atd.nix+1−1
This diff is too big to show here.
nixos/tests/atop.nix+14−6
This diff is too big to show here.
nixos/tests/avahi.nix+1−1
This diff is too big to show here.
nixos/tests/bcachefs.nix+2−2
This diff is too big to show here.
nixos/tests/beanstalkd.nix+1−1
This diff is too big to show here.
nixos/tests/bees.nix+1−1
This diff is too big to show here.
nixos/tests/bind.nix+1−1
This diff is too big to show here.
nixos/tests/bitcoind.nix+1−1
This diff is too big to show here.
nixos/tests/blockbook-frontend.nix+1−1
This diff is too big to show here.
nixos/tests/boot-stage1.nix+1−1
This diff is too big to show here.
nixos/tests/boot.nix+1
This diff is too big to show here.
nixos/tests/botamusique.nix−4
This diff is too big to show here.
nixos/tests/bpf.nix+1−1
This diff is too big to show here.
nixos/tests/breitbandmessung.nix+1−1
This diff is too big to show here.
nixos/tests/brscan5.nix+1−1
This diff is too big to show here.
nixos/tests/buildkite-agents.nix+1−1
This diff is too big to show here.
nixos/tests/caddy.nix+3−3
This diff is too big to show here.
nixos/tests/cage.nix+1−1
This diff is too big to show here.
nixos/tests/cagebreak.nix+1−1
This diff is too big to show here.
nixos/tests/ceph-multi-node.nix+1−1
This diff is too big to show here.
nixos/tests/cfssl.nix+1−1
This diff is too big to show here.
nixos/tests/chromium.nix+18−20
This diff is too big to show here.
nixos/tests/clickhouse.nix+1−1
This diff is too big to show here.
nixos/tests/cloud-init.nix+1−1
This diff is too big to show here.
nixos/tests/cntr.nix+1−1
This diff is too big to show here.
nixos/tests/collectd.nix+2−7
This diff is too big to show here.
nixos/tests/common/lxd/config.yamldeleted−24
This diff is too big to show here.
nixos/tests/containers-bridge.nix+1−1
This diff is too big to show here.
nixos/tests/containers-custom-pkgs.nix+1−1
This diff is too big to show here.
nixos/tests/containers-ephemeral.nix+4−4
This diff is too big to show here.
nixos/tests/containers-extra_veth.nix+1−1
This diff is too big to show here.
nixos/tests/containers-hosts.nix+1−1
This diff is too big to show here.
nixos/tests/containers-imperative.nix+7−7
This diff is too big to show here.
nixos/tests/containers-ip.nix+1−1
This diff is too big to show here.
nixos/tests/containers-names.nix+1−1
This diff is too big to show here.
nixos/tests/containers-nested.nix+1−1
This diff is too big to show here.
nixos/tests/containers-portforward.nix+1−1
This diff is too big to show here.
nixos/tests/containers-tmpfs.nix+6−6
This diff is too big to show here.
nixos/tests/cri-o.nix+1−1
This diff is too big to show here.
nixos/tests/custom-ca.nix+90−104
This diff is too big to show here.
nixos/tests/disable-installer-tools.nix+1−1
This diff is too big to show here.
nixos/tests/dnsdist.nix+1−1
This diff is too big to show here.
nixos/tests/doas.nix+1−1
This diff is too big to show here.
nixos/tests/docker-tools-cross.nix+2−2
This diff is too big to show here.
nixos/tests/docker-tools.nix+1−1
This diff is too big to show here.
nixos/tests/documize.nix+1−1
This diff is too big to show here.
nixos/tests/domination.nix+1−1
This diff is too big to show here.
nixos/tests/dovecot.nix+1−1
This diff is too big to show here.
nixos/tests/earlyoom.nixdeleted−16
This diff is too big to show here.
nixos/tests/ecryptfs.nix+1−1
This diff is too big to show here.
nixos/tests/emacs-daemon.nix+2−2
This diff is too big to show here.
nixos/tests/enlightenment.nix+1−1
This diff is too big to show here.
nixos/tests/env.nix+1−1
This diff is too big to show here.
nixos/tests/envoy.nixdeleted−33
This diff is too big to show here.
nixos/tests/etebase-server.nix+1−1
This diff is too big to show here.
nixos/tests/etesync-dav.nix+1−1
This diff is too big to show here.
nixos/tests/fancontrol.nix+1−1
This diff is too big to show here.
nixos/tests/fcitx/default.nix+1−1
This diff is too big to show here.
nixos/tests/fenics.nix+1−1
This diff is too big to show here.
nixos/tests/firefox.nix+1−1
This diff is too big to show here.
nixos/tests/fish.nix+1−1
This diff is too big to show here.
nixos/tests/fluentd.nix+1−1
This diff is too big to show here.
nixos/tests/fontconfig-default-fonts.nix+1−1
This diff is too big to show here.
nixos/tests/fsck.nix+1−1
This diff is too big to show here.
nixos/tests/ft2-clone.nix+1−1
This diff is too big to show here.
nixos/tests/geth.nix+1−1
This diff is too big to show here.
nixos/tests/gitlab.nix+21−300
This diff is too big to show here.
nixos/tests/gitolite-fcgiwrap.nix+1−1
This diff is too big to show here.
nixos/tests/gnome-xorg.nix+1−2
This diff is too big to show here.
nixos/tests/gnome.nix+1−2
This diff is too big to show here.
nixos/tests/gotify-server.nix+1−1
This diff is too big to show here.
nixos/tests/graylog.nix+1−1
This diff is too big to show here.
nixos/tests/grocy.nix+1−1
This diff is too big to show here.
nixos/tests/grub.nix+1−1
This diff is too big to show here.
nixos/tests/hardened.nix+1−1
This diff is too big to show here.
nixos/tests/haste-server.nixdeleted−23
This diff is too big to show here.
nixos/tests/hbase.nixdeleted−30
This diff is too big to show here.
nixos/tests/herbstluftwm.nix+1−1
This diff is too big to show here.
nixos/tests/hibernate.nix−11
This diff is too big to show here.
nixos/tests/hitch/default.nix+1−1
This diff is too big to show here.
nixos/tests/hocker-fetchdocker/default.nix+1−1
This diff is too big to show here.
nixos/tests/hockeypuck.nix+1−1
This diff is too big to show here.
nixos/tests/hostname.nix+1−1
This diff is too big to show here.
nixos/tests/hound.nix+1−1
This diff is too big to show here.
nixos/tests/hydra/default.nix+1−1
This diff is too big to show here.
nixos/tests/i3wm.nix+1−1
This diff is too big to show here.
nixos/tests/ihatemoney/default.nix+1−1
This diff is too big to show here.
nixos/tests/incron.nix+1−1
This diff is too big to show here.
nixos/tests/initrd-network.nix+1−1
This diff is too big to show here.
nixos/tests/initrd-secrets.nix+1−1
This diff is too big to show here.
nixos/tests/input-remapper.nix+1−1
This diff is too big to show here.
nixos/tests/installed-tests/default.nix+1−1
This diff is too big to show here.
nixos/tests/installed-tests/gjs.nix−6
This diff is too big to show here.
nixos/tests/installer-systemd-stage-1.nixdeleted−33
This diff is too big to show here.
nixos/tests/installer.nix+2−16
This diff is too big to show here.
nixos/tests/invidious.nix+1−1
This diff is too big to show here.
nixos/tests/ipfs.nix−5
This diff is too big to show here.
nixos/tests/isso.nix+1−1
This diff is too big to show here.
nixos/tests/jellyfin.nix+1−1
This diff is too big to show here.
nixos/tests/jenkins.nix−2
This diff is too big to show here.
nixos/tests/jibri.nix+1−1
This diff is too big to show here.
nixos/tests/jitsi-meet.nix+2−2
This diff is too big to show here.
nixos/tests/k3s-single-node-docker.nix+1−1
This diff is too big to show here.
nixos/tests/k3s-single-node.nix+1−1
This diff is too big to show here.
nixos/tests/kbd-setfont-decompress.nix+1−1
This diff is too big to show here.
nixos/tests/kbd-update-search-paths-patch.nix+1−1
This diff is too big to show here.
nixos/tests/keepassxc.nix+1−1
This diff is too big to show here.
nixos/tests/kerberos/heimdal.nix+1−1
This diff is too big to show here.
nixos/tests/kerberos/mit.nix+1−1
This diff is too big to show here.
nixos/tests/kernel-generic.nix+1−1
This diff is too big to show here.
nixos/tests/kernel-latest-ath-user-regd.nix+1−1
This diff is too big to show here.
nixos/tests/kexec.nix+16−44
This diff is too big to show here.
nixos/tests/keycloak.nix+12−32
This diff is too big to show here.
nixos/tests/krb5/deprecated-config.nix+1−1
This diff is too big to show here.
nixos/tests/krb5/example-config.nix+1−1
This diff is too big to show here.
nixos/tests/ksm.nix+1−1
This diff is too big to show here.
nixos/tests/libinput.nix+1−1
This diff is too big to show here.
nixos/tests/libresprite.nix+1−1
This diff is too big to show here.
nixos/tests/lightdm.nix+1−1
This diff is too big to show here.
nixos/tests/limesurvey.nix+1−1
This diff is too big to show here.
nixos/tests/litestream.nix+1−1
This diff is too big to show here.
nixos/tests/login.nix+1−1
This diff is too big to show here.
nixos/tests/logrotate.nix+10−125
This diff is too big to show here.
nixos/tests/loki.nix+1−1
This diff is too big to show here.
nixos/tests/lorri/default.nix+1−1
This diff is too big to show here.
nixos/tests/lvm2/default.nixdeleted−45
This diff is too big to show here.
nixos/tests/lvm2/systemd-stage-1.nixdeleted−104
This diff is too big to show here.
nixos/tests/lvm2/thinpool.nixdeleted−32
This diff is too big to show here.
nixos/tests/lvm2/vdo.nixdeleted−27
This diff is too big to show here.
nixos/tests/lxd-image-server.nix+49−16
This diff is too big to show here.
nixos/tests/lxd-image.nixnew file+89
This diff is too big to show here.
nixos/tests/lxd-nftables.nix+1−1
This diff is too big to show here.
nixos/tests/lxd.nix+64−41
This diff is too big to show here.
nixos/tests/maestral.nixdeleted−72
This diff is too big to show here.
nixos/tests/magnetico.nix+1−1
This diff is too big to show here.
nixos/tests/mailcatcher.nix+3−8
This diff is too big to show here.
nixos/tests/mailhog.nix+1−1
This diff is too big to show here.
nixos/tests/matomo.nix+1−1
This diff is too big to show here.
nixos/tests/matrix-appservice-irc.nix−3
This diff is too big to show here.
nixos/tests/matrix/pantalaimon.nix+1−1
This diff is too big to show here.
nixos/tests/mediawiki.nix+1−1
This diff is too big to show here.
nixos/tests/meilisearch.nix+1−1
This diff is too big to show here.
nixos/tests/memcached.nix+1−1
This diff is too big to show here.
nixos/tests/misc.nix+4−4
This diff is too big to show here.
nixos/tests/mod_perl.nix+1−1
This diff is too big to show here.
nixos/tests/mongodb.nix−4
This diff is too big to show here.
nixos/tests/moodle.nix+1−1
This diff is too big to show here.
nixos/tests/moonraker.nixdeleted−45
This diff is too big to show here.
nixos/tests/mtp.nixdeleted−109
This diff is too big to show here.
nixos/tests/musescore.nix+1−1
This diff is too big to show here.
nixos/tests/mysql/mysql-autobackup.nix+1−1
This diff is too big to show here.
nixos/tests/nagios.nix+1−1
This diff is too big to show here.
nixos/tests/nar-serve.nix+1−1
This diff is too big to show here.
nixos/tests/navidrome.nix+1−1
This diff is too big to show here.
nixos/tests/nbd.nix−16
This diff is too big to show here.
nixos/tests/ncdns.nix+9−6
This diff is too big to show here.
nixos/tests/networking.nix+5−17
This diff is too big to show here.
nixos/tests/nextcloud/with-mysql-and-memcached.nix+22−1
This diff is too big to show here.
nixos/tests/nginx-modsecurity.nix+1−1
This diff is too big to show here.
nixos/tests/nginx-pubhtml.nix+1−1
This diff is too big to show here.
nixos/tests/nginx-sandbox.nix+1−1
This diff is too big to show here.
nixos/tests/nginx-sso.nix+1−1
This diff is too big to show here.
nixos/tests/nginx-variants.nix+1−1
This diff is too big to show here.
nixos/tests/nix-serve.nix+1−1
This diff is too big to show here.
nixos/tests/nixops/default.nix+1−1
This diff is too big to show here.
nixos/tests/nixos-generate-config.nix+1−1
This diff is too big to show here.
nixos/tests/noto-fonts.nix+1−1
This diff is too big to show here.
nixos/tests/novacomd.nix+1−1
This diff is too big to show here.
nixos/tests/oh-my-zsh.nix+1−1
This diff is too big to show here.
nixos/tests/openldap.nix+3−3
This diff is too big to show here.
nixos/tests/openssh.nix+6−12
This diff is too big to show here.
nixos/tests/opentabletdriver.nix+1−1
This diff is too big to show here.
nixos/tests/os-prober.nix+1−1
This diff is too big to show here.
nixos/tests/osrm-backend.nix+1−1
This diff is too big to show here.
nixos/tests/overlayfs.nix+1−1
This diff is too big to show here.
nixos/tests/packagekit.nix+1−1
This diff is too big to show here.
nixos/tests/pam/pam-oath-login.nix+2−2
This diff is too big to show here.
nixos/tests/pam/pam-u2f.nix+1−1
This diff is too big to show here.
nixos/tests/pam/pam-ussh.nixdeleted−70
This diff is too big to show here.
nixos/tests/pantheon.nix+1−1
This diff is too big to show here.
nixos/tests/paperless.nix → nixos/tests/paperless-ng.nixrenamed+12−11
This diff is too big to show here.
nixos/tests/pdns-recursor.nix+1−4
This diff is too big to show here.
nixos/tests/pgadmin4.nix+47−37
This diff is too big to show here.
nixos/tests/php/fpm.nix+1−1
This diff is too big to show here.
nixos/tests/php/httpd.nix+1−1
This diff is too big to show here.
nixos/tests/php/pcre.nix+1−1
This diff is too big to show here.
nixos/tests/pict-rs.nix+1−1
This diff is too big to show here.
nixos/tests/plasma5-systemd-start.nix+1−1
This diff is too big to show here.
nixos/tests/plasma5.nix+1−1
This diff is too big to show here.
nixos/tests/plausible.nix+1−1
This diff is too big to show here.
nixos/tests/plikd.nix+1−1
This diff is too big to show here.
nixos/tests/plotinus.nix+1−1
This diff is too big to show here.
nixos/tests/postfix-raise-smtpd-tls-security-level.nix+1−1
This diff is too big to show here.
nixos/tests/postfix.nix+1−1
This diff is too big to show here.
nixos/tests/postgresql-wal-receiver.nix+1−1
This diff is too big to show here.
nixos/tests/postgresql.nix+1−1
This diff is too big to show here.
nixos/tests/power-profiles-daemon.nix+1−1
This diff is too big to show here.
nixos/tests/powerdns.nix−1
This diff is too big to show here.
nixos/tests/predictable-interface-names.nix+1−1
This diff is too big to show here.
nixos/tests/privacyidea.nix+1−1
This diff is too big to show here.
nixos/tests/privoxy.nix+1−1
This diff is too big to show here.
nixos/tests/pt2-clone.nix+1−1
This diff is too big to show here.
nixos/tests/pulseaudio.nix+1−1
This diff is too big to show here.
nixos/tests/qboot.nix+1−1
This diff is too big to show here.
nixos/tests/rabbitmq.nix+1−1
This diff is too big to show here.
nixos/tests/radicale.nix+1−1
This diff is too big to show here.
nixos/tests/rasdaemon.nix+1−1
This diff is too big to show here.
nixos/tests/redmine.nix+1−1
This diff is too big to show here.
nixos/tests/restart-by-activation-script.nix+1−1
This diff is too big to show here.
nixos/tests/retroarch.nix+1−1
This diff is too big to show here.
nixos/tests/riak.nix+1−1
This diff is too big to show here.
nixos/tests/rspamd.nix+5−5
This diff is too big to show here.
nixos/tests/rstudio-server.nix+6
This diff is too big to show here.
nixos/tests/rsyslogd.nix+2−2
This diff is too big to show here.
nixos/tests/sabnzbd.nix+1−1
This diff is too big to show here.
nixos/tests/sddm.nix+2−2
This diff is too big to show here.
nixos/tests/sfxr-qt.nixdeleted−32
This diff is too big to show here.
nixos/tests/shattered-pixel-dungeon.nix+1−1
This diff is too big to show here.
nixos/tests/shiori.nix+1−1
This diff is too big to show here.
nixos/tests/signal-desktop.nix+1−1
This diff is too big to show here.
nixos/tests/simple.nix+1−1
This diff is too big to show here.
nixos/tests/snapcast.nix−1
This diff is too big to show here.
nixos/tests/snapper.nix+1−1
This diff is too big to show here.
nixos/tests/soapui.nix+1−1
This diff is too big to show here.
nixos/tests/solr.nix+1−1
This diff is too big to show here.
nixos/tests/sourcehut.nix+1−1
This diff is too big to show here.
nixos/tests/sssd-ldap.nix+1−1
This diff is too big to show here.
nixos/tests/sssd.nix+1−1
This diff is too big to show here.
nixos/tests/starship.nix+1−1
This diff is too big to show here.
nixos/tests/step-ca.nix+2−3
This diff is too big to show here.
nixos/tests/sway.nix+1−1
This diff is too big to show here.
nixos/tests/sympa.nix+1−1
This diff is too big to show here.
nixos/tests/syncthing-init.nix+1−1
This diff is too big to show here.
nixos/tests/syncthing-relay.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-analyze.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-binfmt.nix+3−3
This diff is too big to show here.
nixos/tests/systemd-boot.nix+9−9
This diff is too big to show here.
nixos/tests/systemd-confinement.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-cryptenroll.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-escaping.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-initrd-btrfs-raid.nixdeleted−45
This diff is too big to show here.
nixos/tests/systemd-initrd-luks-keyfile.nixdeleted−53
This diff is too big to show here.
nixos/tests/systemd-initrd-luks-password.nixdeleted−48
This diff is too big to show here.
nixos/tests/systemd-initrd-simple.nixdeleted−44
This diff is too big to show here.
nixos/tests/systemd-initrd-swraid.nixdeleted−50
This diff is too big to show here.
nixos/tests/systemd-journal.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-machinectl.nix+1−1
This diff is too big to show here.
nixos/tests/systemd-networkd.nix−10
This diff is too big to show here.
nixos/tests/systemd-shutdown.nixdeleted−26
This diff is too big to show here.
nixos/tests/systemd-misc.nix → nixos/tests/systemd-unit-path.nixrenamed+2−17
This diff is too big to show here.
nixos/tests/systemd.nix+1−5
This diff is too big to show here.
nixos/tests/taskserver.nix−1
This diff is too big to show here.
nixos/tests/telegraf.nix+1−1
This diff is too big to show here.
nixos/tests/terminal-emulators.nix+1−1
This diff is too big to show here.
nixos/tests/tinywl.nix+1−1
This diff is too big to show here.
nixos/tests/tomcat.nix+1−1
This diff is too big to show here.
nixos/tests/tor.nix+15−10
This diff is too big to show here.
nixos/tests/transmission.nix+1−1
This diff is too big to show here.
nixos/tests/tsm-client-gui.nix+1−1
This diff is too big to show here.
nixos/tests/tuptime.nix+1−1
This diff is too big to show here.
nixos/tests/turbovnc-headless-server.nix+1−1
This diff is too big to show here.
nixos/tests/tuxguitar.nix+1−1
This diff is too big to show here.
nixos/tests/udisks2.nix+1−1
This diff is too big to show here.
nixos/tests/usbguard.nix+1−1
This diff is too big to show here.
nixos/tests/user-activation-scripts.nix+1−1
This diff is too big to show here.
nixos/tests/uwsgi.nix+1−1
This diff is too big to show here.
nixos/tests/v2ray.nix+1−1
This diff is too big to show here.
nixos/tests/vault-postgresql.nix+1−1
This diff is too big to show here.
nixos/tests/vault.nix+1−1
This diff is too big to show here.
nixos/tests/vaultwarden.nix+1
This diff is too big to show here.
nixos/tests/vector.nix+1−1
This diff is too big to show here.
nixos/tests/vengi-tools.nix+1−1
This diff is too big to show here.
nixos/tests/virtualbox.nix+1−1
This diff is too big to show here.
nixos/tests/web-apps/netbox.nixdeleted−30
This diff is too big to show here.
nixos/tests/web-apps/nifi.nixdeleted−30
This diff is too big to show here.
nixos/tests/web-apps/peertube.nix+2−3
This diff is too big to show here.
nixos/tests/web-servers/unit-php.nix+1−1
This diff is too big to show here.
nixos/tests/wiki-js.nix+1−1
This diff is too big to show here.
nixos/tests/wine.nix+1−1
This diff is too big to show here.
nixos/tests/without-nix.nix+6−15
This diff is too big to show here.
nixos/tests/wmderland.nix+1−1
This diff is too big to show here.
nixos/tests/wpa_supplicant.nix+1−1
This diff is too big to show here.
nixos/tests/xfce.nix+1−1
This diff is too big to show here.
nixos/tests/xmonad-xdg-autostart.nixdeleted−35
This diff is too big to show here.
nixos/tests/xmonad.nix+1−1
This diff is too big to show here.
nixos/tests/xmpp/xmpp-sendmessage.nix+4−1
This diff is too big to show here.
nixos/tests/xterm.nix+1−1
This diff is too big to show here.
nixos/tests/yabar.nix+1−1
This diff is too big to show here.
nixos/tests/zfs.nix+1−51
This diff is too big to show here.
nixos/tests/zigbee2mqtt.nix+1−1
This diff is too big to show here.
nixos/tests/zoneminder.nix+1−1
This diff is too big to show here.
nixos/tests/zrepl.nixdeleted−66
This diff is too big to show here.
pkgs/applications/accessibility/espeakup/default.nixdeleted−46
This diff is too big to show here.
pkgs/applications/accessibility/squeekboard/default.nix+1−2
This diff is too big to show here.
pkgs/applications/accessibility/wvkbd/default.nixdeleted−36
This diff is too big to show here.
pkgs/applications/audio/ChowPhaser/default.nixdeleted−76
This diff is too big to show here.
pkgs/applications/audio/LibreArp/default.nixdeleted−53
This diff is too big to show here.
pkgs/applications/audio/LibreArp/lv2.nixdeleted−53
This diff is too big to show here.
pkgs/applications/audio/airwave/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/aj-snapshot/default.nix+3−2
This diff is too big to show here.
pkgs/applications/audio/amberol/default.nixdeleted−75
This diff is too big to show here.
pkgs/applications/audio/ams/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/audacity/0001-Use-a-different-approach-to-estimate-the-disk-space-.patchnew file+355
This diff is too big to show here.
pkgs/applications/audio/audacity/default.nix+35−58
This diff is too big to show here.
pkgs/applications/audio/audio-recorder/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/bespokesynth/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/bitwig-studio/bitwig-studio4.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/blanket/default.nix+7−7
This diff is too big to show here.
pkgs/applications/audio/callaudiod/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/cardinal/default.nix+12−3
This diff is too big to show here.
pkgs/applications/audio/carla/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/caudec/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/cider/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/clementine/default.nix+10−3
This diff is too big to show here.
pkgs/applications/audio/cmt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/cmus/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/cmusfm/default.nix+10−16
This diff is too big to show here.
pkgs/applications/audio/deadbeef/default.nix+1
This diff is too big to show here.
pkgs/applications/audio/denemo/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/dragonfly-reverb/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/faust/faust2.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/faust/faustlive.nix+12−9
This diff is too big to show here.
pkgs/applications/audio/faustPhysicalModeling/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/flac/default.nix+10−2
This diff is too big to show here.
pkgs/applications/audio/fluidsynth/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/foo-yc20/default.nixnew file+29
This diff is too big to show here.
pkgs/applications/audio/ft2-clone/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/furnace/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/gnome-podcasts/default.nix−11
This diff is too big to show here.
pkgs/applications/audio/greg/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/gspeech/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/gtkpod/default.nix+4−5
This diff is too big to show here.
pkgs/applications/audio/guitarix/default.nix−2
This diff is too big to show here.
pkgs/applications/audio/helio-workstation/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/hivelytracker/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/hqplayer-desktop/default.nix−1
This diff is too big to show here.
pkgs/applications/audio/industrializer/default.nix+3−1
This diff is too big to show here.
pkgs/applications/audio/jacktrip/default.nixdeleted−61
This diff is too big to show here.
pkgs/applications/audio/jamesdsp/default.nix+5−40
This diff is too big to show here.
pkgs/applications/audio/jamin/default.nix+1−1
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/magnetophonDSP/faustCompressors/default.nix+1−1
This diff is too big to show here.
pkgs/applications/audio/mid2key/default.nix+4−7
This diff is too big to show here.
pkgs/applications/audio/midas/generic.nix+5−4
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/mopidy/youtube.nix+5−6
This diff is too big to show here.
pkgs/applications/audio/musescore/darwin.nix+1
This diff is too big to show here.
pkgs/applications/audio/musescore/default.nix+1
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+3−3
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/patchage/default.nix+11−33
This diff is too big to show here.
pkgs/applications/audio/pd-plugins/zexy/default.nix+1−2
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/qmidiarp/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/qmmp/default.nix+1
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/rhythmbox/default.nix−10
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+2−24
This diff is too big to show here.
pkgs/applications/audio/sfxr-qt/test-export-square-wave/default.nixdeleted−6
This diff is too big to show here.
pkgs/applications/audio/sfxr-qt/test-export-square-wave/input.sfxjdeleted−29
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/sisco.lv2/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/snd/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/sonic-pi/default.nix+41−59
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/sound-juicer/default.nix−10
This diff is too big to show here.
pkgs/applications/audio/soundkonverter/default.nix+1−1
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+5−5
This diff is too big to show here.
pkgs/applications/audio/strawberry/default.nix+2−5
This diff is too big to show here.
pkgs/applications/audio/synaesthesia/default.nixdeleted−33
This diff is too big to show here.
pkgs/applications/audio/timemachine/default.nix+2−2
This diff is too big to show here.
pkgs/applications/audio/tonelib-gfx/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/tonelib-jam/default.nix+3−3
This diff is too big to show here.
pkgs/applications/audio/tonelib-metal/default.nixdeleted−60
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/audio/xsynth-dssi/default.nix+1−2
This diff is too big to show here.
pkgs/applications/backup/pika-backup/default.nix−9
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-unlimited/default.nix+1−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/cgminer/default.nix+2−2
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/dogecoin/default.nix+1−1
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/go-ethereum/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/litecoin/default.nix+2−1
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+25−21
This diff is too big to show here.
pkgs/applications/blockchains/snarkos/default.nix+1−1
This diff is too big to show here.
pkgs/applications/blockchains/solana/default.nix+5−10
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/trezor-suite/default.nix+3−3
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/display-managers/lightdm-enso-os-greeter/default.nix+5−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/bless/default.nix+6−12
This diff is too big to show here.
pkgs/applications/editors/bluej/default.nix+10−37
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+66−160
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix+1−2
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/emacs2nix.nix+3−4
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/emacspeak/default.nix+1−2
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/melpa-packages.nix−8
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/nongnu-generated.nix+44−38
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/nongnu-packages.nix+1−2
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/plz/default.nix+4−12
This diff is too big to show here.
pkgs/applications/editors/emacs/elisp-packages/recipes-archive-melpa.json+2085−2742
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+18−8
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/hexdino/default.nix+6−6
This diff is too big to show here.
pkgs/applications/editors/jetbrains/darwin.nix+3−2
This diff is too big to show here.
pkgs/applications/editors/jetbrains/default.nix+50−53
This diff is too big to show here.
pkgs/applications/editors/jetbrains/linux.nix+13−12
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/jucipp/default.nix+2−1
This diff is too big to show here.
pkgs/applications/editors/jupyter-kernels/octave/default.nix+1−2
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/kodestudio/default.nix+1−1
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/micro/default.nix+1−3
This diff is too big to show here.
pkgs/applications/editors/micro/test-with-expect.nixdeleted−30
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+22−13
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/neovim-remote.nix+3−2
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+7−17
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/qxmledit/default.nix+1−1
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/sublime/3/common.nix+1−1
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/configurable.nix+34−7
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+1432−1553
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/overrides.nix+7−5
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+1003−1014
This diff is too big to show here.
pkgs/applications/editors/vim/plugins/vim-utils.nix+57−91
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-dotnettools-csharp/default.nix+1−1
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+5−12
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/wxhexeditor/default.nix+1−2
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/collapseos-cvm/default.nixdeleted−30
This diff is too big to show here.
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/fceux/default.nix+2−2
This diff is too big to show here.
pkgs/applications/emulators/flycast/default.nixdeleted−52
This diff is too big to show here.
pkgs/applications/emulators/goldberg-emu/default.nixdeleted−52
This diff is too big to show here.
pkgs/applications/emulators/goldberg-emu/dont-install-unsupported.patchdeleted−34
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/reicast/default.nixnew file+52
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/rpcs3/default.nix+4−4
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/wine/base.nix+4−4
This diff is too big to show here.
pkgs/applications/emulators/wine/packages.nix+3−3
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/cryptowatch/default.nixdeleted−57
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+37−11
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/6.x.nix+1−1
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+2−15
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/exrtools/default.nix+1−1
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/gnome-photos/default.nix+2−2
This diff is too big to show here.
pkgs/applications/graphics/gpicview/default.nix+1
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−4
This diff is too big to show here.
pkgs/applications/graphics/icon-library/default.nix+2−12
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−9
This diff is too big to show here.
pkgs/applications/graphics/inkscape/extensions.nix+2−2
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/mtpaint/default.nix+5−3
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/nomacs/default.nix+1
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/rnote/default.nix+3−5
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+21−29
This diff is too big to show here.
pkgs/applications/graphics/sane/config.nix+1−1
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-heaven/default.nixdeleted−107
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-superposition/default.nixdeleted−146
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/xfig/default.nix+2−13
This diff is too big to show here.
pkgs/applications/graphics/xournal/default.nix+3−3
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/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−4
This diff is too big to show here.
pkgs/applications/misc/1password/default.nix+29−46
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/HentaiAtHome/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/ablog/default.nixdeleted−36
This diff is too big to show here.
pkgs/applications/misc/almanah/default.nix+1−13
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/avrdudess/default.nix+4−5
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+36−8
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/electrum/default.nix+35−4
This diff is too big to show here.
pkgs/applications/misc/eos-installer/default.nix+2−2
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/freeplane/default.nix+15−20
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/fuzzel/default.nix−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.nixdeleted−80
This diff is too big to show here.
pkgs/applications/misc/gofu/default.nix+3−3
This diff is too big to show here.
pkgs/applications/misc/gosmore/default.nix+4−2
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/gpxsee/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/gsimplecal/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/gtk2fontsel/default.nix+1−1
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/koreader/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/logseq/default.nix+2−2
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/fhsenv.nix+1−1
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+13−12
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/mucommander/default.nix+4−4
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/mupdf/0001-Use-command-v-in-favor-of-which.patchdeleted−25
This diff is too big to show here.
pkgs/applications/misc/mupdf/0002-Add-Darwin-deps.patchdeleted−57
This diff is too big to show here.
pkgs/applications/misc/mupdf/1.17.nix+1
This diff is too big to show here.
pkgs/applications/misc/mupdf/default.nix+16−45
This diff is too big to show here.
pkgs/applications/misc/nix-tour/default.nix+19−35
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+1−2
This diff is too big to show here.
pkgs/applications/misc/obsidian/default.nix+37−27
This diff is too big to show here.
pkgs/applications/misc/octoprint/default.nix+205−8
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/orca/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/organicmaps/default.nixdeleted−86
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/p2pool/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/pcmanx-gtk2/default.nix+2−2
This diff is too big to show here.
pkgs/applications/misc/pdfdiff/default.nix+5−3
This diff is too big to show here.
pkgs/applications/misc/pdfpc/default.nix+4−3
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/phoc/default.nix+3−10
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/qmetro/default.nix+3−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/sleepyhead/default.nix+4−2
This diff is too big to show here.
pkgs/applications/misc/slic3r/default.nix+4−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/slmenu/default.nix+21−10
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/spicetify-cli/default.nix+3−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/stag/default.nix+1−1
This diff is too big to show here.
pkgs/applications/misc/stog/default.nix+1−1
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-tui/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/tpmmanager/default.nix+5−6
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/tuhi/default.nix+3−3
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/urlview/default.nix+5−5
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/xmr-stak/default.nix+1−1
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/yubioath-desktop/default.nix+1−1
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/misc/zscroll/default.nix+3−3
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/browser.nix+1−1
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/common.nix+13−24
This diff is too big to show here.
pkgs/applications/networking/browsers/chromium/default.nix+5−3
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/beta_sources.nix+393−393
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox-bin/default.nix+1−1
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+172−271
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox/librewolf/default.nix+2−2
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−5
This diff is too big to show here.
pkgs/applications/networking/browsers/firefox/wrapper.nix+17−14
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/browser.nixdeleted−191
This diff is too big to show here.
pkgs/applications/networking/browsers/microsoft-edge/default.nixdeleted−20
This diff is too big to show here.
pkgs/applications/networking/browsers/microsoft-edge/update.shdeleted−50
This diff is too big to show here.
pkgs/applications/networking/browsers/opera/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/browsers/palemoon/default.nix+25−38
This diff is too big to show here.
pkgs/applications/networking/browsers/palemoon/mozconfig+1−3
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+5−8
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/vieb/package.json+17−12
This diff is too big to show here.
pkgs/applications/networking/browsers/vieb/yarn.lock+1481−1276
This diff is too big to show here.
pkgs/applications/networking/browsers/vieb/yarn.nix+1546−1330
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/browsers/yandex-browser/default.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/cisco-packet-tracer/8.nix+2−3
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-rollouts/default.nix+3−3
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.nixdeleted−54
This diff is too big to show here.
pkgs/applications/networking/cluster/argocd/default.nix+32−16
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+3−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/fluxctl/default.nix+3−3
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+3−3
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/kontemplate/default.nix+1
This diff is too big to show here.
pkgs/applications/networking/cluster/kops/default.nix+7−7
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/krelay/default.nixdeleted−31
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/kubecolor/default.nix+1−3
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/kubent/default.nixdeleted−29
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.nixdeleted−32
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+51−35
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/pluto/default.nixdeleted−27
This diff is too big to show here.
pkgs/applications/networking/cluster/popeye/default.nix+4−3
This diff is too big to show here.
pkgs/applications/networking/cluster/rancher/default.nix+5−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+7−11
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+3−4
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+296−339
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/terragrunt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/tilt/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/cluster/vcluster/default.nix+2−2
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/newsboat/default.nix+3−3
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+4−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/bitlbee-steam/default.nix+2−2
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+4−6
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/deltachat-desktop/default.nix+23−27
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/deltachat-desktop/package.json+9−12
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/deltachat-desktop/update.sh+1−1
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+2−3
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/element/keytar/default.nix+1−4
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/element/seshat/default.nix+1−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/fractal/default.nix+1−12
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.nixdeleted−42
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/matrixcli/default.nix+5−5
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/nheko/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix+10−8
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix+8−6
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/pond/default.nix+8−8
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/profanity/default.nix+22−4
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/schildichat/schildichat-desktop.nix+3−4
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/schildichat/schildichat-web.nix+3−4
This diff is too big to show here.
pkgs/applications/networking/instant-messengers/session-desktop-appimage/default.nix+3−41
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/tensor/default.nix+4−5
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+10−18
This diff is too big to show here.
pkgs/applications/networking/irc/bip/default.nix+1−2
This diff is too big to show here.
pkgs/applications/networking/irc/communi/default.nix+4−5
This diff is too big to show here.
pkgs/applications/networking/irc/ircdog/default.nix+4−5
This diff is too big to show here.
pkgs/applications/networking/irc/irssi/fish/default.nix+2−2
This diff is too big to show here.
pkgs/applications/networking/irc/quassel/default.nix+1
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/irc/wraith/configure.patch+1−1
This diff is too big to show here.
pkgs/applications/networking/irc/wraith/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/juju/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/lieer/default.nix+1
This diff is too big to show here.
pkgs/applications/networking/linssid/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/maestral-qt/default.nix−3
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/alot/default.nix+7−1
This diff is too big to show here.
pkgs/development/python-modules/notmuch2/default.nix → pkgs/applications/networking/mailreaders/alot/notmuch.nixrenamed−6
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+4−11
This diff is too big to show here.
pkgs/applications/networking/mailreaders/mailspring/default.nix+4−9
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+3−8
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+4−6
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/default.nix+1−5
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/gemset.nix+1319−1093
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/package.json+11−15
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/source.json+5−5
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/update.nix−2
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/update.sh+2−2
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/yarn.lock+2008−936
This diff is too big to show here.
pkgs/applications/networking/misc/zammad/yarn.nix+1880−760
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/mullvad/default.nixdeleted−8
This diff is too big to show here.
pkgs/applications/networking/mullvad/libwg.nixdeleted−35
This diff is too big to show here.
pkgs/applications/networking/mullvad/mullvad.nixdeleted−107
This diff is too big to show here.
pkgs/applications/networking/mullvad/openvpn.nixdeleted−87
This diff is too big to show here.
pkgs/applications/networking/n8n/default.nix+1−7
This diff is too big to show here.
pkgs/applications/networking/n8n/node-packages.nix+859−751
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/owamp/default.nix+1−2
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/frostwire/default.nix+6−6
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/citrix-workspace/generic.nix+1−1
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+4−5
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+7−22
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/desync/default.nix+3−3
This diff is too big to show here.
pkgs/applications/networking/sync/lsyncd/default.nix+1−2
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/sync/wdt/default.nixdeleted−34
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+12−4
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/autokey/remove-requires-dbus-python.patchnew file+11
This diff is too big to show here.
pkgs/applications/office/banking/default.nix+9−20
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+25−48
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/hledger-check-fancyassertions/default.nix+9−4
This diff is too big to show here.
pkgs/applications/office/jameica/default.nix+7−7
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/default.nix+1−10
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/mmex/default.nix+29−26
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/pinpoint/default.nix+2−2
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/scribus/unstable.nix−30
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+3−3
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/freedv/default.nix−1
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+4−5
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/pothos/default.nix+2−2
This diff is too big to show here.
pkgs/applications/radio/rtl-ais/default.nix+1−2
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/sdrplay/default.nix+1−1
This diff is too big to show here.
pkgs/applications/radio/soapysdrplay/default.nix+2−2
This diff is too big to show here.
pkgs/applications/radio/soundmodem/default.nix+3−3
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/srsran/default.nixdeleted−49
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/gnuastro/default.nixdeleted−36
This diff is too big to show here.
pkgs/applications/science/astronomy/gprojector/default.nix+2−2
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+4−4
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/flywheel-cli/default.nixdeleted−49
This diff is too big to show here.
pkgs/applications/science/biology/kssd/default.nix+1−2
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/chemistry/marvin/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/caneda/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/gerbv/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/electronics/kicad/versions.nix+21−21
This diff is too big to show here.
pkgs/applications/science/electronics/magic-vlsi/0002-fix-format-security.patchnew file+19
This diff is too big to show here.
pkgs/applications/science/electronics/magic-vlsi/default.nix+3−2
This diff is too big to show here.
pkgs/applications/science/electronics/ngspice/default.nix+2−2
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/electronics/xcircuit/default.nix+8−4
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−15
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/components/default.nixdeleted−5
This diff is too big to show here.
pkgs/applications/science/logic/isabelle/components/isabelle-linter.nixdeleted−22
This diff is too big to show here.
pkgs/applications/science/logic/isabelle/components/mkBuild.nixdeleted−36
This diff is too big to show here.
pkgs/applications/science/logic/isabelle/default.nix+2−56
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/klee/default.nix+17−64
This diff is too big to show here.
pkgs/applications/science/logic/klee/klee-uclibc.nixdeleted−98
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/nuXmv/default.nix+4−12
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/why3/with-provers.nix+1−1
This diff is too big to show here.
pkgs/applications/science/logic/z3/4.4.0.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/cemu/default.nix+2−2
This diff is too big to show here.
pkgs/applications/science/math/cntk/default.nix+7−12
This diff is too big to show here.
pkgs/applications/science/math/fricas/default.nix+6−3
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/README.md+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/scilab-bin/default.nix+20−17
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+5−6
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/rink/default.nix+3−3
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/simgrid/default.nix+2−4
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/inav-configurator/default.nix+2−2
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/gnome-console/default.nixdeleted−69
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/kgx/default.nixnew file+79
This diff is too big to show here.
pkgs/applications/terminal-emulators/kitty/default.nix−5
This diff is too big to show here.
pkgs/applications/terminal-emulators/rxvt-unicode-plugins/urxvt-font-size/default.nix+1−1
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/termonad/default.nix+1−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/dvc/default.nix+11−25
This diff is too big to show here.
pkgs/applications/version-management/dvc/dvc-daemon.patch+1−1
This diff is too big to show here.
pkgs/applications/version-management/fnc/default.nixdeleted−40
This diff is too big to show here.
pkgs/applications/version-management/gerrit/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/bfg-repo-cleaner/default.nix+44−41
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/cgit/common.nixdeleted−77
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/cgit/default.nix+69−7
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/cgit/pink.nixdeleted−23
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/darcs-to-git/default.nix+4−5
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/gh/default.nix+3−3
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-remote-b2/default.nix+7−7
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-annex-utils/default.nix+1−3
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-branchless/default.nix+5−5
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-secret/default.nix+6−3
This diff is too big to show here.
pkgs/applications/version-management/git-and-tools/git-team/default.nixdeleted−31
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.nixdeleted−40
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+8−8
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+5−5
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+14−23
This diff is too big to show here.
pkgs/applications/version-management/gitlab/rubyEnv/Gemfile.lock+109−147
This diff is too big to show here.
pkgs/applications/version-management/gitlab/rubyEnv/gemset.nix+96−233
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/got/default.nix+4−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/smartgithg/default.nix+2−2
This diff is too big to show here.
pkgs/applications/version-management/subversion/default.nix+10−5
This diff is too big to show here.
pkgs/applications/version-management/verco/default.nix+3−3
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.nixdeleted−44
This diff is too big to show here.
pkgs/applications/video/byzanz/default.nix+1−1
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/corrscope/default.nix+12−4
This diff is too big to show here.
pkgs/applications/video/davinci-resolve/default.nixdeleted−179
This diff is too big to show here.
pkgs/applications/video/entangle/default.nix+6−14
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+3−3
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/filebot/default.nix+3−3
This diff is too big to show here.
pkgs/applications/video/gpu-screen-recorder/default.nixdeleted−50
This diff is too big to show here.
pkgs/applications/video/gpu-screen-recorder/fix-nvfbc-check.patchdeleted−38
This diff is too big to show here.
pkgs/applications/video/gpu-screen-recorder/gpu-screen-recorder-gtk.nixdeleted−46
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/natron/default.nix+2−3
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/p2pvc/default.nix+1−2
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+1−10
This diff is too big to show here.
pkgs/applications/video/qmplay2/default.nix+2−2
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/OVMF/default.nix+1−2
This diff is too big to show here.
pkgs/applications/virtualization/arion/default.nix+5−7
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/docker/default.nix+4−4
This diff is too big to show here.
pkgs/applications/virtualization/docker/gc.nix+3−3
This diff is too big to show here.
pkgs/applications/virtualization/docker/proxy.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/gvisor/containerd-shim.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/gvisor/default.nix+1−1
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+3−11
This diff is too big to show here.
pkgs/applications/virtualization/podman/default.nix+2−3
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+56−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/qemu/utils.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/runc/default.nix+2−2
This diff is too big to show here.
pkgs/applications/virtualization/spike/default.nix+14−9
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/virt-viewer/default.nix+3−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/btops/default.nix+5−5
This diff is too big to show here.
pkgs/applications/window-managers/clfswm/default.nixnew file+50
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/i3/wsr.nix+3−3
This diff is too big to show here.
pkgs/applications/window-managers/phosh/default.nix+5−4
This diff is too big to show here.
pkgs/applications/window-managers/qtile/default.nix+3−23
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/taffybar/default.nix+1−2
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/applications/window-managers/xmonad/wrapper.nix+1−2
This diff is too big to show here.
pkgs/build-support/build-fhs-userenv-bubblewrap/env.nix+9−15
This diff is too big to show here.
pkgs/build-support/build-fhs-userenv/env.nix+8−14
This diff is too big to show here.
pkgs/build-support/build-graalvm-native-image/default.nix+5−7
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/fetchipfs/default.nix+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/fetchpatch/default.nix+15−30
This diff is too big to show here.
pkgs/build-support/fetchpatch/tests.nix−16
This diff is too big to show here.
pkgs/build-support/fetchurl/default.nix+3−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-darwin-bundle/write-darwin-bundle.nix+5−3
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/nix-gitignore/default.nix+6
This diff is too big to show here.
pkgs/build-support/ocaml/dune.nix+5−8
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+16−62
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/gnome-user-docs/default.nix+2−2
This diff is too big to show here.
pkgs/data/documentation/man-pages/default.nix+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/documentation/std-man-pages/default.nix+3−4
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/dancing-script/default.nixdeleted−27
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/mplus-outline-fonts/default.nix+19−39
This diff is too big to show here.
pkgs/data/fonts/noto-fonts/default.nix+4−4
This diff is too big to show here.
pkgs/data/fonts/rictydiminished-with-firacode/default.nix+4−5
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/twitter-color-emoji/default.nix+2−2
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/faba-icon-theme/default.nix+3−2
This diff is too big to show here.
pkgs/data/icons/flat-remix-icon-theme/default.nix+5−6
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/humanity-icon-theme/default.nix+4−4
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/icons/tango-icon-theme/default.nix+2−3
This diff is too big to show here.
pkgs/data/icons/whitesur-icon-theme/default.nix+2−2
This diff is too big to show here.
pkgs/data/misc/brise/default.nix+1−2
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/ddccontrol-db/default.nix+2−1
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/miscfiles/default.nix+2−3
This diff is too big to show here.
pkgs/data/misc/mobile-broadband-provider-info/default.nix+2−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-desktop-ontologies/default.nix+2−3
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/v2ray-domain-list-community/default.nix+2−2
This diff is too big to show here.
pkgs/data/misc/v2ray-geoip/default.nix+3−3
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/soundfonts/generaluser/default.nixdeleted−25
This diff is too big to show here.
pkgs/data/themes/arc/default.nix+12−15
This diff is too big to show here.
pkgs/data/themes/dracula-theme/default.nix+1−1
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/graphite-gtk-theme/default.nix+4−7
This diff is too big to show here.
pkgs/data/themes/greybird/default.nix+3−16
This diff is too big to show here.
pkgs/data/themes/kwin-decorations/kde-rounded-corners/default.nix+3−3
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/file-roller/default.nix+16−4
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+13−22
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-books/default.nix+1−12
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-boxes/default.nix+2−9
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+36−20
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-calendar/gtk_image_reset_crash.patchnew file+17
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-characters/default.nix+19−19
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-clocks/default.nix+12−11
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-connections/default.nix+4−6
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-logs/default.nix+15−8
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-maps/default.nix+5−5
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-music/default.nix+18−8
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-notes/default.nix+1−12
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-sound-recorder/default.nix+7−8
This diff is too big to show here.
pkgs/desktops/gnome/apps/gnome-text-editor/default.nix+10−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/apps/gnome-weather/default.nix+9−7
This diff is too big to show here.
pkgs/desktops/gnome/apps/polari/default.nix+12−59
This diff is too big to show here.
pkgs/desktops/gnome/core/adwaita-icon-theme/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/baobab/default.nix+10−16
This diff is too big to show here.
pkgs/desktops/gnome/core/dconf-editor/default.nix−13
This diff is too big to show here.
pkgs/desktops/gnome/core/dconf-editor/schema-override-variable.patchdeleted−14
This diff is too big to show here.
pkgs/desktops/gnome/core/eog/default.nix+19−23
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+20−2
This diff is too big to show here.
pkgs/desktops/gnome/core/evince/default.nix+26−10
This diff is too big to show here.
pkgs/desktops/gnome/core/evolution-data-server/default.nix+14−82
This diff is too big to show here.
pkgs/desktops/gnome/core/gdm/default.nix+2−4
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-backgrounds/default.nix+8−23
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-bluetooth/1.0/default.nixdeleted−97
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-bluetooth/default.nix+15−12
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-calculator/default.nix+16−8
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-contacts/default.nix+25−14
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-control-center/default.nix+23−31
This diff is too big to show here.
pkgs/development/libraries/gnome-desktop/bubblewrap-paths.patch → pkgs/desktops/gnome/core/gnome-desktop/bubblewrap-paths.patchrenamed
The content is the same.
pkgs/development/libraries/gnome-desktop/default.nix → pkgs/desktops/gnome/core/gnome-desktop/default.nixrenamed+3−4
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-dictionary/default.nix+7−56
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-disk-utility/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-font-viewer/default.nix+8−36
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-initial-setup/default.nix+2−4
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-keyring/default.nix+3−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix+7−33
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-screenshot/default.nix+15−54
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-session/ctl.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-session/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-settings-daemon/3.38/default.nix−10
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-settings-daemon/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-shell-extensions/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-shell/default.nix+8−7
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-shell/wrap-services.patch+5−5
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-software/default.nix+6−8
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-system-monitor/default.nix+10−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-terminal/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-tour/default.nix+11−6
This diff is too big to show here.
pkgs/desktops/gnome/core/gnome-user-share/default.nix−5
This diff is too big to show here.
pkgs/desktops/gnome/core/gucharmap/default.nix+4−4
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+4−6
This diff is too big to show here.
pkgs/desktops/gnome/core/nautilus/default.nix+17−4
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/totem/default.nix+8−6
This diff is too big to show here.
pkgs/desktops/gnome/core/yelp-xsl/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/core/yelp/default.nix+2−4
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+19−5
This diff is too big to show here.
pkgs/desktops/gnome/devtools/devhelp/default.nix+1−12
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+1−42
This diff is too big to show here.
pkgs/desktops/gnome/extensions/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/extensions/extensionOverrides.nix−28
This diff is too big to show here.
pkgs/desktops/gnome/extensions/extensionRenames.nix+12−17
This diff is too big to show here.
pkgs/desktops/gnome/extensions/extensions.json+268−302
This diff is too big to show here.
pkgs/desktops/gnome/extensions/freon/default.nix+61
This diff is too big to show here.
pkgs/desktops/gnome/extensions/freon/fix_paths.patch+15−15
This diff is too big to show here.
pkgs/desktops/gnome/extensions/gsconnect/default.nix+4−4
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+2
This diff is too big to show here.
pkgs/desktops/gnome/extensions/night-theme-switcher/default.nix+35
This diff is too big to show here.
pkgs/desktops/gnome/extensions/pop-shell/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/gnome/extensions/sound-output-device-chooser/default.nix+3−5
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/aisleriot/default.nix+5−4
This diff is too big to show here.
pkgs/desktops/gnome/games/five-or-more/default.nix+6−31
This diff is too big to show here.
pkgs/desktops/gnome/games/gnome-2048/default.nix−10
This diff is too big to show here.
pkgs/desktops/gnome/games/gnome-chess/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/gnome/games/gnome-mahjongg/default.nix+6−38
This diff is too big to show here.
pkgs/desktops/gnome/games/gnome-sudoku/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/games/gnome-tetravex/default.nix+8−45
This diff is too big to show here.
pkgs/desktops/gnome/games/hitori/default.nix+5−4
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/gnome/misc/gitg/default.nix−10
This diff is too big to show here.
pkgs/desktops/gnome/misc/gnome-applets/default.nix+2−2
This diff is too big to show here.
pkgs/desktops/gnome/misc/gnome-flashback/default.nix+5−6
This diff is too big to show here.
pkgs/desktops/gnome/misc/gnome-panel/default.nix+3−14
This diff is too big to show here.
pkgs/desktops/gnome/misc/gnome-tweaks/default.nix+3−4
This diff is too big to show here.
pkgs/desktops/gnome/misc/gpaste/default.nix+4−9
This diff is too big to show here.
pkgs/desktops/gnome/misc/gpaste/fix-paths.patch+7−13
This diff is too big to show here.
pkgs/desktops/gnome/misc/metacity/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+5−10
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.nix−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.patch−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-backgrounds/default.nix+1−10
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.nix−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/elementary-dock/default.nix−8
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+12−10
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/desktop/gnome-bluetooth-contract/default.nix+2−4
This diff is too big to show here.
pkgs/desktops/pantheon/granite/7/default.nix−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+2−3
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/plasma-phone-components/default.nix+3−3
This diff is too big to show here.
pkgs/desktops/plasma-5/plasma-systemmonitor.nix−6
This diff is too big to show here.
pkgs/desktops/plasma-5/plasma-workspace/0001-startkde.patch+2−2
This diff is too big to show here.
pkgs/desktops/plasma-5/srcs.nix+220−212
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/orage/default.nix+40−35
This diff is too big to show here.
pkgs/desktops/xfce/applications/xfce4-screensaver/default.nix−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+6−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/chez-modules/chez-mit/default.nix+7−8
This diff is too big to show here.
pkgs/development/chez-modules/chez-scmutils/default.nix+7−8
This diff is too big to show here.
pkgs/development/chez-modules/chez-srfi/default.nix+4−5
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.nix−31
This diff is too big to show here.
pkgs/development/compilers/alan/default.nix−48
This diff is too big to show here.
pkgs/development/compilers/aldor/default.nix+53
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.nix+58
This diff is too big to show here.
pkgs/development/compilers/aliceml/make.patch+20
This diff is too big to show here.
pkgs/development/compilers/aliceml/seam.patch+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/carp/default.nix−6
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/ciao/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/coreclr/default.nix+100
This diff is too big to show here.
pkgs/development/compilers/crystal/build-package.nix+3−25
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.sh−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.nix+90
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/extension.nix−15
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/build-cuda-redist-package.nix−51
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/extension.nix−32
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.4.4.json−862
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.5.2.json−873
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/manifests/redistrib_11.6.2.json−873
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/redist/overrides.nix−72
This diff is too big to show here.
pkgs/development/compilers/cudatoolkit/versions.toml−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/ecl/16.1.2.nix+2−1
This diff is too big to show here.
pkgs/development/compilers/elm/default.nix−15
This diff is too big to show here.
pkgs/development/compilers/elm/packages/node-packages.nix+860−1122
This diff is too big to show here.
pkgs/development/compilers/emscripten/default.nix+2−2
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/fsharp/default.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/gambit/build.nix+2−2
This diff is too big to show here.
pkgs/development/compilers/gcc/10/default.nix+11−12
This diff is too big to show here.
pkgs/development/compilers/gcc/10/gcc10-asan-glibc-2.34.patch−70
This diff is too big to show here.
pkgs/development/compilers/gcc/11/default.nix+8−3
This diff is too big to show here.
pkgs/development/compilers/gcc/4.8/default.nix+9−4
This diff is too big to show here.
pkgs/development/compilers/gcc/4.9/default.nix+9−4
This diff is too big to show here.
pkgs/development/compilers/gcc/6/default.nix+8−5
This diff is too big to show here.
pkgs/development/compilers/gcc/6/gnat-glibc234.patch−30
This diff is too big to show here.
pkgs/development/compilers/gcc/7/default.nix+8−7
This diff is too big to show here.
pkgs/development/compilers/gcc/7/gcc8-asan-glibc-2.34.patch−70
This diff is too big to show here.
pkgs/development/compilers/gcc/8/default.nix+8−4
This diff is too big to show here.
pkgs/development/compilers/gcc/9/default.nix+9−10
This diff is too big to show here.
pkgs/development/compilers/gcc/9/gcc9-asan-glibc-2.34.patch−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−5
This diff is too big to show here.
pkgs/development/compilers/ghc/8.8.4.nix−4
This diff is too big to show here.
pkgs/development/compilers/ghc/9.0.2.nix+4−33
This diff is too big to show here.
pkgs/development/compilers/ghc/9.2.1.nix+10−17
This diff is too big to show here.
pkgs/development/compilers/ghc/head.nix+3−7
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/ghcjs/ghcjs-base.nix+4−5
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.nix+276
This diff is too big to show here.
pkgs/development/compilers/go/ssl-cert-file-2-dev.patch+54
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/default.nix+10−58
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/graalvm11-ce-sources.json−42
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/graalvm17-ce-sources.json−42
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/hashes.nix+57
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/mkGraal.nix+112−112
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/update.nix−225
This diff is too big to show here.
pkgs/development/compilers/graalvm/community-edition/update.sh+81
This diff is too big to show here.
pkgs/development/compilers/graalvm/enterprise-edition.nix+183
This diff is too big to show here.
pkgs/development/compilers/hare/config-template.mk−27
This diff is too big to show here.
pkgs/development/compilers/hare/hare.nix−93
This diff is too big to show here.
pkgs/development/compilers/hare/harec.nix−45
This diff is too big to show here.
pkgs/development/compilers/hhvm/default.nix+68
This diff is too big to show here.
pkgs/development/compilers/hhvm/flexible-array-members-gcc6.patch+20
This diff is too big to show here.
pkgs/development/compilers/hip/default.nix+6−7
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/ios-cross-compile/9.2.nix+1−2
This diff is too big to show here.
pkgs/development/compilers/jasmin-compiler/default.nix−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/ligo/default.nix+14−43
This diff is too big to show here.
pkgs/development/compilers/llvm/10/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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+3−3
This diff is too big to show here.
pkgs/development/compilers/llvm/14/lld/default.nix+1−1
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/14/openmp/default.nix+4−15
This diff is too big to show here.
pkgs/development/compilers/llvm/14/openmp/fix-find-tool.patch+54
This diff is too big to show here.
pkgs/development/compilers/llvm/14/openmp/gnu-install-dirs.patch+48−4
This diff is too big to show here.
pkgs/development/compilers/llvm/14/openmp/run-lit-directly.patch−12
This diff is too big to show here.
pkgs/development/compilers/llvm/5/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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/lld/default.nix+1−1
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/llvm/rocm/compiler-rt/68d5235cb58f988c71b403334cd9482d663841ab.patch+78
This diff is too big to show here.
pkgs/development/compilers/llvm/rocm/compiler-rt/compiler-rt-codesign.patch+33
This diff is too big to show here.
pkgs/development/compilers/llvm/rocm/compiler-rt/default.nix+6−3
This diff is too big to show here.
pkgs/development/compilers/llvm/rocm/default.nix+3−3
This diff is too big to show here.
pkgs/development/compilers/llvm/rocm/llvm/default.nix+1−3
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/muon/default.nix
This diff is too big to show here.
pkgs/development/compilers/nim/default.nix+4−4
This diff is too big to show here.
pkgs/development/compilers/obliv-c/default.nix+3−5
This diff is too big to show here.
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/4.14.nix+5−2
This diff is too big to show here.
pkgs/development/compilers/ocaml/Makefile.nixpkgs−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.patch−37
This diff is too big to show here.
pkgs/development/compilers/ocaml/metaocaml-3.09.nix+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/opendylan/default.nix+4−5
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+72−14
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.patch−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.nix+63
This diff is too big to show here.
pkgs/development/compilers/rust/1_60.nix−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.nix−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.patch−29
This diff is too big to show here.
pkgs/development/compilers/solc/default.nix+12−44
This diff is too big to show here.
pkgs/development/compilers/souffle/default.nix+27−8
This diff is too big to show here.
pkgs/development/compilers/squeak/default.nix+28−178
This diff is too big to show here.
pkgs/development/compilers/squeak/squeak-configure-version.patch−94
This diff is too big to show here.
pkgs/development/compilers/squeak/squeak-plugins-discovery.patch−34
This diff is too big to show here.
pkgs/development/compilers/squeak/squeak-squeaksh-nixpkgs.patch−40
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/urweb/default.nix+1−1
This diff is too big to show here.
pkgs/development/compilers/vala/default.nix+5−15
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/x11basic/default.nix+1−2
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/VST/default.nix−1
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/compcert/default.nix−5
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.nix−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.nix−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.nix−24
This diff is too big to show here.
pkgs/development/embedded/bossa/default.nix+6−7
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.nix+64
This diff is too big to show here.
pkgs/development/embedded/stm32/inav/default.nix+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/guile-modules/guile-ssh/default.nix+2−2
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+376−777
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-darwin.nix+9−11
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.10.x.nix+7−60
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.6.x.nix+3−6
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix+6−41
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-9.0.x.nix+52−23
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-ghc-9.2.x.nix+88−62
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+654−798
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/main.yaml+86−70
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml+810−957
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml+221−1121
This diff is too big to show here.
pkgs/development/haskell-modules/configuration-nix.nix+27−42
This diff is too big to show here.
pkgs/development/haskell-modules/generic-builder.nix+7−10
This diff is too big to show here.
pkgs/development/haskell-modules/hackage-packages.nix+12303−9071
This diff is too big to show here.
pkgs/development/haskell-modules/hoogle.nix−7
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/cryptonite-remove-argon2.patch−69
This diff is too big to show here.
pkgs/development/haskell-modules/patches/graphql-engine-mapkeys.patch+33
This diff is too big to show here.
pkgs/development/haskell-modules/patches/lambdabot-core-ghc9.patch−95
This diff is too big to show here.
pkgs/development/haskell-modules/patches/lambdabot-novelty-plugins-ghc9.patch−58
This diff is too big to show here.
pkgs/development/haskell-modules/patches/misfortune-ghc9.patch−70
This diff is too big to show here.
pkgs/development/haskell-modules/patches/regex-compat-tdfa-ghc-9.0.patch−19
This diff is too big to show here.
pkgs/development/haskell-modules/patches/xmonad-nix.patch+73
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/acl2/default.nix+3−3
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/ceptre/default.nix+4−6
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/jimtcl/default.nix+9−20
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/love/0.10.nix+2−2
This diff is too big to show here.
pkgs/development/interpreters/love/11.nix+2−2
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.nix−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/picoc/default.nix+1−3
This diff is too big to show here.
pkgs/development/interpreters/pixie/default.nix+93
This diff is too big to show here.
pkgs/development/interpreters/pixie/dust.nix+46
This diff is too big to show here.
pkgs/development/interpreters/pixie/load_paths.patch+25
This diff is too big to show here.
pkgs/development/interpreters/pixie/make-paths-configurable.patch+119
This diff is too big to show here.
pkgs/development/interpreters/pure/default.nix+46
This diff is too big to show here.
pkgs/development/interpreters/python-cosmopolitan/default.nix−39
This diff is too big to show here.
pkgs/development/interpreters/python-cosmopolitan/ioctl.patch−12
This diff is too big to show here.
pkgs/development/interpreters/python/cpython/3.11/python-3.x-distutils-C++.patch−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.nix+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.sh−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.patch−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+5−6
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/78.nix+2−1
This diff is too big to show here.
pkgs/development/interpreters/spidermonkey/91.nix+4−3
This diff is too big to show here.
pkgs/development/interpreters/starlark/default.nix−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.nix−33
This diff is too big to show here.
pkgs/development/interpreters/supercollider/supercollider-3.12.0-env-dirs.patch−65
This diff is too big to show here.
pkgs/development/interpreters/supercollider/wrapper.nix−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.nix−23
This diff is too big to show here.
pkgs/development/java-modules/liquibase_redshift_extension/default.nix−27
This diff is too big to show here.
pkgs/development/java-modules/maven-fod.nix−56
This diff is too big to show here.
pkgs/development/java-modules/redshift_jdbc/default.nix−28
This diff is too big to show here.
pkgs/development/libraries/CGAL/4.nix+8−4
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/LAStools/default.nix+2−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.patch−34
This diff is too big to show here.
pkgs/development/libraries/SDL2_sound/default.nix−48
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/allegro/5.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/allegro/default.nix+1−2
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/apr-util/default.nix+1−1
This diff is too big to show here.
pkgs/development/libraries/aqbanking/gwenhywfar.nix+1−1
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+19−37
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+8−31
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/cglm/default.nix+2−2
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/cosmopolitan/default.nix+54−19
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/crcpp/default.nix+8−8
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/draco/default.nix+3−20
This diff is too big to show here.
pkgs/development/libraries/dssi/default.nix+1−2
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/fastjson/default.nix+1−2
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-sixel/default.nix+37
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/3.4.nix+15
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/ffmpeg/generic.nix+4−7
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/flatpak/default.nix+2−2
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/folks/default.nix+2−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/gcr/default.nix+7−13
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/gdk-pixbuf/default.nix+6−7
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+4−3
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/givaro/3.7.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/givaro/3.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/givaro/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gjs/default.nix+4−4
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-networking/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/glib-testing/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/glib/default.nix+6−14
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/glib/link-with-coreservices.patch+11
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/gnet/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gnome-online-accounts/default.nix+2−2
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/gobject-introspection/absolute_shlib_path.patch+7−15
This diff is too big to show here.
pkgs/development/libraries/gobject-introspection/default.nix+12−4
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+5−11
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/3.x.nix+9−2
This diff is too big to show here.
pkgs/development/libraries/gtk/4.x.nix+9−8
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/gtkmm/4.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gtksourceview/4.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/gtksourceview/5.x.nix+3−14
This diff is too big to show here.
pkgs/development/libraries/gumbo/default.nix+1−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+6−6
This diff is too big to show here.
pkgs/development/libraries/harfbuzz/default.nix−11
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-gmmlib/default.nix+2−2
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/java/hydra-ant-logger/default.nix+4−5
This diff is too big to show here.
pkgs/development/libraries/java/jffi/default.nix−47
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/jsonrpc-glib/default.nix+6−35
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+4−5
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/keybinder/default.nix+2−2
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+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/frogdata.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/libfolia.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/mbt.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/ticcutils.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/timbl.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/timblserver.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/ucto.nix+3−3
This diff is too big to show here.
pkgs/development/libraries/languagemachines/uctodata.nix+3−3
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/libHX/default.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/libadwaita/default.nix+2−8
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+27−76
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/libass/default.nix+1
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/libbluray/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libcangjie/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/libcec/default.nix+1
This diff is too big to show here.
pkgs/development/libraries/libcec/platform.nix+1
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/libcrafter/default.nix+1−2
This diff is too big to show here.
pkgs/development/libraries/libdazzle/default.nix+6−39
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/libdnet/default.nix+1−2
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/1.5.nix+1
This diff is too big to show here.
pkgs/development/libraries/libgcrypt/default.nix+3−2
This diff is too big to show here.
pkgs/development/libraries/libgda/default.nix+6−6
This diff is too big to show here.
pkgs/development/libraries/libgnome-games-support/2.0.nix−59
This diff is too big to show here.
pkgs/development/libraries/libgnome-games-support/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/libgpg-error/default.nix−2
This diff is too big to show here.
pkgs/development/libraries/libgphoto2/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libgpod/default.nix+14−37
This diff is too big to show here.
pkgs/development/libraries/libgsf/default.nix+13−46
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/libgweather/default.nix+14−19
This diff is too big to show here.
pkgs/development/libraries/libgweather/fix-pkgconfig.patch−14
This diff is too big to show here.
pkgs/development/libraries/libhandy/0.x.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libhandy/default.nix+11−12
This diff is too big to show here.
pkgs/development/libraries/libical/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libidn/default.nix+1
This diff is too big to show here.
pkgs/development/libraries/libidn2/default.nix+1
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+1−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/libmx/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libnatpmp/default.nix+1−3
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/liboauth/default.nix+1
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+1−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/libpeas/default.nix+7−43
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/libportal/default.nix+2−2
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/libpwquality/default.nix+18−39
This diff is too big to show here.
pkgs/development/libraries/libpwquality/python-binding-prefix.patch−13
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/libqb/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/librest/1.0.nix−74
This diff is too big to show here.
pkgs/development/libraries/librest/default.nix−1
This diff is too big to show here.
pkgs/development/libraries/librsvg/default.nix+3−14
This diff is too big to show here.
pkgs/development/libraries/libsecret/default.nix+27−81
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/libsolv/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/libstroke/default.nix+1−2
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/libthreadar/default.nix+7−8
This diff is too big to show here.
pkgs/development/libraries/libtiff/default.nix−45
This diff is too big to show here.
pkgs/development/libraries/libtoxcore/default.nix+2−2
This diff is too big to show here.
pkgs/development/libraries/libudev-zero/default.nix+12−4
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/libusb-compat/0.1.nix+1
This diff is too big to show here.
pkgs/development/libraries/libusb1/default.nix+11−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+2−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/lief/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/live555/default.nix+2−2
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/malcontent/default.nix+2−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/matio/default.nix+2−2
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/neardal/default.nix+2−2
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/openldap/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/pango/default.nix+8−5
This diff is too big to show here.
pkgs/development/libraries/pcg-c/default.nix+1
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/pipewire/default.nix+2−8
This diff is too big to show here.
pkgs/development/libraries/pipewire/wireplumber.nix+13−2
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/poco/default.nix+2−2
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/poppler/default.nix+2−4
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/prometheus-cpp/default.nix+7−5
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/qscintilla/default.nix+2−2
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+6−10
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/6.nix+2−1
This diff is too big to show here.
pkgs/development/libraries/qwt/default.nix+11−12
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+11−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/stellarsolver/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.