Compare commits

..

734 Commits
19.03 ... 18.09

Author SHA1 Message Date
Samuel Dionne-Riel
6a3f5bcb06 nixos/doc: Updates release date for 18.09
(cherry picked from commit 82d1bf9691)
2018-10-05 18:33:19 -04:00
Samuel Dionne-Riel
1863faca75 README: 18.03 -> 18.09
(cherry picked from commit 29b479eb72)
2018-10-05 18:25:14 -04:00
Samuel Dionne-Riel
0ea9623aa4 Updates 18.09 release notes for release.
(cherry picked from commit 6487a47996)
2018-10-05 18:19:39 -04:00
Andreas Rammhold
b0b0a6cf3b Merge pull request #47925 from edef1c/git-2.18.1
git: 2.18.0 -> 2.18.1 (CVE-2018-17456)
2018-10-05 22:12:29 +02:00
edef
def2618c09 git: 2.18.0 -> 2.18.1 (CVE-2018-17456) 2018-10-05 18:41:59 +00:00
Graham Christensen
d916a0f9ce docs: Delete assert functions since they don't exist in 18.09 2018-10-05 13:18:04 -04:00
Graham Christensen
3bf2c2f2d1 Generate links to function definitions
Hydra passes the full revision in to the input, which we pass through.

If we don't get this ,we try to get it from other sources, or default to
master which should have the definition in a close-ish location.

All published docs should have theURL resolve properly, only local
hackers will have the link break.

(cherry picked from commit 5daee73ce4)
2018-10-05 13:14:11 -04:00
Graham Christensen
09b8ed042a version.nix: extract revision-fetching function
(cherry picked from commit 4312cfdbda)
2018-10-05 13:14:07 -04:00
Samuel Dionne-Riel
9d5f0ba8e3 Merge pull request #47898 from peterhoeg/f/activation_1809
nixos system-activation: support activation scripts run in a user context
2018-10-05 12:26:32 -04:00
Graham Christensen
131cb302ab nixpkgs: Start documenting library functions in XML
Covers assert functions and about half of the attrsets functions.

Some internal consistency around IDs could be improved.

(cherry picked from commit f835f77e02)
2018-10-05 10:20:39 -04:00
Notkea
4e73b76ede matrix-synapse: 0.33.5 -> 0.33.6
(cherry picked from commit 570b9bab25)
Backport of #47880
2018-10-05 10:33:18 +02:00
Peter Hoeg
c8b3a26aec plasma5: run kbuildsycoca5 in the user context
(cherry picked from commit 4dada63a17)
2018-10-05 11:27:17 +08:00
Peter Hoeg
092f82b803 switch-to-configuration.pl: activate the nixos-activation.service user service
(cherry picked from commit 8118d6eb2e)
2018-10-05 11:27:03 +08:00
Peter Hoeg
c5b97d47b8 system-activation: support script fragments to run in a user context
(cherry picked from commit 1353ba2678)
2018-10-05 11:26:22 +08:00
Alex Leferry 2
b4d7324678 GRV: Fix typos in description
(cherry picked from commit 1bb4b16b3b)
2018-10-04 23:27:50 +01:00
Vladimír Čunát
8dae912c28 Merge #47699: nixos on hyperv improvements 2018-10-05 00:11:57 +02:00
Michael Weiss
cb08cb4333 Merge pull request #47884 from primeos/security-backports-for-18.09
[18.09] gollum, jekyll (security backports)
2018-10-04 21:50:44 +02:00
Andreas Rammhold
7c3459b027 Merge pull request #47874 from andir/18.09/thunderbird
[18.09] thunderbird:  60.0 -> 60.2.1, thunderbird-bin: 60.0 -> 60.2.1
2018-10-04 21:43:55 +02:00
Michael Weiss
1f96d2f3e4 gollum: 4.1.3 -> 4.1.4 (security, CVE-2018-3740)
(cherry picked from commit 18b468ed81)
Reason: Security update: "Depend on new version of gollum-lib that
relies on a patched version of sanitize, which solves a vulnerability
(CVE-2018-3740). See https://github.com/gollum/gollum-lib/pull/296."
2018-10-04 21:15:38 +02:00
Michael Weiss
5ca268d7cf jekyll: 3.8.3 -> 3.8.4 (security)
(cherry picked from commit e8a35913e1)
Reason: Security update: "fix include bypass of EntryFilter#filter
symlink check".
2018-10-04 21:14:46 +02:00
Michael Weiss
69d32c2a33 gollum: 4.1.2 -> 4.1.3
(cherry picked from commit 265c5fc485)
Reason: Security update: "Solves a vulnerability in the File view and
All Pages view that would allow XSS."
2018-10-04 21:13:50 +02:00
zimbatm
5399898b86 elvish: provide the compiled version
Without this fix, `elvish -version` displays "unknown"

(cherry picked from commit 9d49cf1808)
2018-10-04 19:54:45 +01:00
taku0
20063233d6 thunderbird-bin: 60.0 -> 60.2.1
(cherry picked from commit d4de3b2d34)
2018-10-04 19:20:58 +02:00
taku0
5669552c91 thunderbird: 60.0 -> 60.2.1
(cherry picked from commit d802524def)
2018-10-04 19:20:29 +02:00
Vladimír Čunát
c78e3b7cfb nixos-option: fix #47722 when missing ~/.nix-defexpr/channels
The problem was that the non-fatal warning was not omitted
from the output when constructing a nix expression.
Now it seems OK for me.  When return code is OK,
the warnings don't get passed anywhere, but I expect
that won't matter for this utility.  Fatal errors are still shown.

(cherry picked from commit de93b32f90)
2018-10-04 17:22:05 +02:00
Florian Klink
c02f213dfa terraform-providers.matchbox: init at 0.2.2 (#47863)
(cherry picked from commit e4f4e9fd1d)
2018-10-04 16:15:49 +02:00
Jörg Thalheim
be38959376 Merge pull request #47407 from kalbasit/nixpkgs_add-terraform-provider-nixos
terraform: update all providers and move nixos provider under terraform.withPlugins
(cherry picked from commit 5547a8b6a5)
2018-10-04 11:40:57 +02:00
Vladimír Čunát
11ec1cd1a6 Merge branch 'staging-18.09' into release-18.09 2018-10-04 08:45:49 +02:00
Tim Steinbach
6cbd1ec4b0 linux: 4.18.11 -> 4.18.12
(cherry picked from commit 21db680d32522ece1cbb3999b8e468f2e8b57906)
2018-10-03 23:48:23 -04:00
Tim Steinbach
a4d4490254 linux: 4.14.73 -> 4.14.74
(cherry picked from commit 575c118a6469cd2148ed3092de90f0d8d3aaec53)
2018-10-03 23:48:16 -04:00
Tim Steinbach
e468090878 linux: 4.9.130 -> 4.9.131
(cherry picked from commit e6ff57b328e913ae656e038a819b12926eadd230)
2018-10-03 23:48:08 -04:00
Samuel Dionne-Riel
91c3bc1dfe doc: installing-usb: removes notes about unetbootin.
They are known to cause more issues than solving issues; futhermore
using `dd` should work everywhere without fail.

(cherry picked from commit 8467dc857b)
2018-10-03 22:57:04 -04:00
Samuel Dionne-Riel
9da278dc38 doc: Reviews partitioning instructions to use parted.
The tests in <nixos/tests/installer.nix> are using `parted`, so they are
bound to be better tested than `fdisk`.

This is brought on by a couple issues, plus reports on IRC that the
`fdisk` instructions didn't work as expected.

 * #39354
 * #46309
 * #39942
 * #45478

Care was taken so that the other documented steps did not need changes.

In all this kerfufle, a slight re-organization of the Chapter has been
made, allowing better deep linking.

(cherry picked from commit 6cfbf403ca)
2018-10-03 22:57:00 -04:00
Samuel Dionne-Riel
292d4fce90 nixos/doc: Adds sub-folder to input files.
(cherry picked from commit 2c0d56f007)
2018-10-03 22:56:54 -04:00
Samuel Dionne-Riel
59f5dea6bd doc: installing-usb make macOS note a note.
While it seemingly brings more attention to the macOS notes with the
default docbook template, it better represents which parts of the
section are about macOS, and which parts are simply in the flow of the
text; otherwise the last paragraph may be lost into the details for
macOS.

(cherry picked from commit 8192fcd0fd)
2018-10-03 22:56:33 -04:00
Graham Christensen
e13c208665 nixpkgs docs: format 2018-10-03 22:01:16 -04:00
Graham Christensen
4a0da7f3ac nixpkgs docs: Rebuild manual-full if nested XML docs change 2018-10-03 22:00:29 -04:00
Graham Christensen
ce5e6466b6 shell functions: rewrite as xml 2018-10-03 22:00:29 -04:00
Graham Christensen
5954454dd1 nixpkgs docs: move shell section to its own file 2018-10-03 22:00:28 -04:00
Graham Christensen
7413dce611 nixpkgs docs: move dockertool to its own file 2018-10-03 22:00:27 -04:00
Graham Christensen
191745989c nixpkgs docs: move fhs-environments to its own file 2018-10-03 21:58:37 -04:00
Graham Christensen
05519f21fc nixpkgs docs: move debug to its own file 2018-10-03 21:58:37 -04:00
Graham Christensen
b66df5c45d nixpkgs docs: move generators to its own file 2018-10-03 21:58:37 -04:00
Graham Christensen
3b739c0daf nixpkgs docs: move overrides to its own file 2018-10-03 21:57:26 -04:00
Jörg Thalheim
46069d481c Merge pull request #47709 from et4te/rustbuild-fix-staging
buildRustPackage: install binaries to bin and libraries to lib correctly
2018-10-04 00:03:15 +01:00
Jan Tojnar
d6ff529d05 Merge pull request #47515 from alexeymuranov/update-flatpak-on-18.09
[18.09] flatpak: 0.99.3 -> 1.0.2 (cherry-picked from master)
2018-10-03 21:05:19 +02:00
Matthew Bauer
c090089aad Merge pull request #47788 from prusnak/gcc-arm-embedded_update-18.09
gcc-arm-embedded: 6-2017-q2-update -> 7-2018-q2-update
2018-10-03 13:49:53 -05:00
Jörg Thalheim
e6a6523818 Merge pull request #47757 from nyanloutre/cherry-pick-jackett
[18.09] jackett: cherry-pick 0.10.250
2018-10-03 18:55:12 +01:00
Pavol Rusnak
9fc3dc917a gcc-arm-embedded: 6-2017-q2-update -> 7-2018-q2-update
+ update blackmagic to latest commit which includes gcc7 fixes

(cherry picked from commit b3531b9719)
2018-10-03 19:49:53 +02:00
Keshav Kini
536f6e86cf makeself: backport megastep/makeself#142
Currently, a self-extracting archive created by makeself will fail to
properly execute on NixOS because the boilerplate Bash code it uses to
clean up the temporary directory it extracted its contents into
assumes that the `rm` command is installed at `/bin/rm`, which is not
the case on NixOS.

This commit, a backport of a pull request I made to the upstream
repository at megastep/makeself#142, fixes the issue by causing the
boilerplate code to call `rm` without specifying an absolute path,
which allows the version of `rm` from one's current Nix environment to
be used instead.

(cherry picked from commit eb84586cad)
2018-10-03 18:38:48 +01:00
R. RyanTM
9a8c266656 libressl_2_8: 2.8.0 -> 2.8.1
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
https://repology.org/metapackage/libressl/versions

(cherry picked from commit 807d73c391)
Signed-off-by: Austin Seipp <aseipp@pobox.com>
2018-10-03 11:59:21 -05:00
nyanloutre
4507f60278 jackett: 0.10.198 -> 0.10.250 2018-10-03 15:24:37 +02:00
R. RyanTM
b8e9aff1d7 jackett: 0.10.160 -> 0.10.198
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
https://repology.org/metapackage/jackett/versions
2018-10-03 15:24:36 +02:00
Paul TREHIOU
5a725dcbd0 jackett: 0.9.41 -> 0.10.160 (#46114)
* jackett: update mono to 5.8

Jackett needs mono version >= 5.8

https://github.com/Jackett/Jackett/blob/master/README.md#supported-systems

* jackett: 0.9.41 -> 0.10.160
2018-10-03 15:24:36 +02:00
taku0
04675c8aaa thunderbird: 60.0 -> 60.2.1
(cherry picked from commit d802524def)
2018-10-03 14:54:36 +02:00
taku0
964489f201 thunderbird-bin: 60.0 -> 60.2.1
(cherry picked from commit d4de3b2d34)
2018-10-03 14:54:14 +02:00
Márton Boros
1ae800be28 Fix systemd timer unit documentation
Fixes #36210

(cherry picked from commit d8a555d819)
2018-10-03 08:46:40 -04:00
zimbatm
6e0c9ffbd4 google-compute-engine: 20180510 -> 20180905
The list of corresponding NixOS services are also updated

(cherry picked from commit 9fb79868ab)
2018-10-03 14:11:36 +02:00
Periklis Tsirakidis
f12ea6195e kubectx: 0.5.1 -> 0.6.1
Also provides shell completions for zsh, bash and fish

(cherry picked from commit b9f9b05c37)
Backport of #47731
2018-10-03 13:19:50 +02:00
Maximilian Bosch
6e93cdfe35 nixos/activation: fix systemd-user daemon-reload in auto-upgrade service (#47695)
The autoupgrade service defined in `system.autoUpgrade`
(`nixos/modules/installer/tools/auto-upgrade.nix`) doesn't have `su` in
its path and thus yields a warning during the `daemon-reload`.

Specifying the absolute path fixes the issue.

Fixes #47648

(cherry picked from commit 7297cc5501 and
resolved conflict)
2018-10-03 12:43:20 +02:00
R. RyanTM
b7bfb4180e wireguard-tools: 0.0.20180918 -> 0.0.20180925
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
https://repology.org/metapackage/wireguard-tools/versions

(cherry picked from commit 1491848406)
2018-10-03 11:34:38 +01:00
Andreas Rammhold
1e81ff3244 Merge pull request #47714 from andir/18.09/firefox
[18.09] firefox{-bin,}: 62.0.2 -> 62.0.3, firefox-esr-60: 60.2.1 -> 60.2.2
2018-10-03 11:24:01 +02:00
Andreas Rammhold
f4b24ac5e4 firefox-esr-60: 60.2.1 -> 60.2.2 [critical security fixes]
This update bumps the package to the latest stable version containing a
few security fixes:

- CVE-2018-12386: Type confusion in JavaScript
  A vulnerability in register allocation in JavaScript can lead to type
  confusion, allowing for an arbitrary read and write. This leads to
  remote code execution inside the sandboxed content process when
  triggered.

- CVE-2018-12387
  A vulnerability where the JavaScript JIT compiler inlines
  Array.prototype.push with multiple arguments that results in the stack
  pointer being off by 8 bytes after a bailout. This leaks a memory
  address to the calling function which can be used as part of an
  exploit inside the sandboxed content process.

Source: https://www.mozilla.org/en-US/security/advisories/mfsa2018-24/
(cherry picked from commit 246d2848ff)
2018-10-03 09:54:47 +02:00
Andreas Rammhold
22502e78be firefox: 62.0.2 -> 62.0.3 [critical security fixes]
This update bumps the package to the latest stable version containing a
few security fixes:

- CVE-2018-12386: Type confusion in JavaScript
  A vulnerability in register allocation in JavaScript can lead to type
  confusion, allowing for an arbitrary read and write. This leads to
  remote code execution inside the sandboxed content process when
  triggered.

- CVE-2018-12387
  A vulnerability where the JavaScript JIT compiler inlines
  Array.prototype.push with multiple arguments that results in the stack
  pointer being off by 8 bytes after a bailout. This leaks a memory
  address to the calling function which can be used as part of an
  exploit inside the sandboxed content process.

Source: https://www.mozilla.org/en-US/security/advisories/mfsa2018-24/
(cherry picked from commit e7785f1148)
2018-10-03 09:54:41 +02:00
Andreas Rammhold
4663251636 firefox-bin: 62.0.2 -> 62.0.3 [critical security fixes]
This update bumps the package to the latest stable version containing a
few security fixes:

- CVE-2018-12386: Type confusion in JavaScript
  A vulnerability in register allocation in JavaScript can lead to type
  confusion, allowing for an arbitrary read and write. This leads to
  remote code execution inside the sandboxed content process when
  triggered.

- CVE-2018-12387
  A vulnerability where the JavaScript JIT compiler inlines
  Array.prototype.push with multiple arguments that results in the stack
  pointer being off by 8 bytes after a bailout. This leaks a memory
  address to the calling function which can be used as part of an
  exploit inside the sandboxed content process.

Source: https://www.mozilla.org/en-US/security/advisories/mfsa2018-24/
(cherry picked from commit 64d02660cb)
2018-10-03 09:54:35 +02:00
Edward Tate
c3f8368f97 Shortened rmdir, improved regex to support shared libs with multiple integers at the end. 2018-10-03 09:25:53 +02:00
Edward Tate
f08cebd8d2 Use regex instead of -name in find with -print0 and xargs -0. 2018-10-03 09:25:53 +02:00
Edward Tate
6f37fa7c99 buildRustPackage now correctly installs binaries to bin and libraries to lib. 2018-10-03 09:25:53 +02:00
Peter Hoeg
9ffdaa1f19 nixos on hyperv: hot-add CPU
(cherry picked from commit 6e3e136f77)
2018-10-03 11:46:48 +08:00
Peter Hoeg
18ae457bc7 nixos-installer: use the hyperv module on hyperv
(cherry picked from commit ca6d41ae65)
2018-10-03 11:46:42 +08:00
Peter Hoeg
42968c07c5 nixos on hyperv: load modules and set video mode
(cherry picked from commit 3a76bc7a79)
2018-10-03 11:46:36 +08:00
R. RyanTM
7f70ebf30b matomo: 3.5.1 -> 3.6.0 (#46242)
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
matomo

(cherry picked from commit c45dd04946)

backported for security updates
2018-10-02 22:47:39 +02:00
Matthew Bauer
79bbe4d543 haskell: fix x509-system on mojave
darwin.security_tool is currently broken in Mojave. See issue #45042
for more info. Our security_tool stuff comes from 10.9 so I suspect
that it needs an update.

Here I am putting in a hack to get things working again. This uses the
system provided security binary at /usr/bin/security to avoid the
issue in Haskell’s x509-system package. Unfortunately, this will break
with the sandbox. I am also working on a proper fix, but this requires
updating lots of Apple stuff (and also copumpkin’s new CF). You can
follow the progress on this branch:

  https://github.com/matthewbauer/nixpkgs/tree/xcode-security

This commit should be backported to release-18.03 and release-18.09.

/cc @copumpkin @lnl7 @pikajude
2018-10-02 15:20:55 -05:00
Philipp Middendorf
9934f413da jetbrains: add libnotify to wrapper to enable notifications
(cherry picked from commit 0b2f2f3d96)
2018-10-02 20:12:05 +01:00
Philipp Middendorf
0f51003a5b jshint: depend on phantomjs2
(cherry picked from commit 22e9c0a6fa)
2018-10-02 19:34:35 +01:00
R. RyanTM
3e44d2f2b5 verilator: 3.926 -> 4.002
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
https://repology.org/metapackage/verilator/versions

(cherry picked from commit 609f9198f2)
2018-10-02 09:58:38 -05:00
Léo Gaspard
18749a72b7 jetbrains.idea-community: add IntelliJ keyword to the longDescription (#47650)
This should make it easier to find the package under the name
IntelliJ in eg. [1]

[1] https://nixos.org/nixos/packages.html#intellij

(cherry picked from commit 5f5905e30e)
2018-10-02 16:03:42 +02:00
Josef Kemetmüller
0d8c62c15c libcanberra: fix darwin build (#47634)
(cherry picked from commit aeee761aba)
2018-10-02 12:56:34 +02:00
Matthew Pickering
0a198954be gdal: 2.3.1 -> 2.3.2
(cherry picked from commit f80730d903)
Backport of #47565
2018-10-02 09:09:54 +02:00
WilliButz
b8ef448e95 nvtop: use version-independent libnvidia-ml.so symlink
(cherry picked from commit 781206217e)
2018-10-02 08:42:57 +02:00
John Ericson
3e55299b41 Merge pull request #47646 from obsidiansystems/ghc-8.2.2-change-patch
ghc-8.2.2: Oops, added adjacent patch the one I wanted
2018-10-02 01:46:39 -04:00
John Ericson
0ce0851442 Merge pull request #47645 from obsidiansystems/ghc-8.2-hsc2hs
ghc-8.2.2: Fix which hsc2hs is installed on cross for 18.09
2018-10-02 01:10:51 -04:00
Austin Seipp
7b05874c1b perlPackages.Mojolicious: 8.0 -> 8.01
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 5a179ffb01)
2018-10-01 23:26:47 -05:00
Austin Seipp
2e06ce8e98 perlPackages.MojoliciousPluginStatus: init at 1.0
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 37ce9316bf)
2018-10-01 23:26:47 -05:00
Austin Seipp
56f5ff8a3c perlPackages: init Sereal package family at 4.005
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 65923ede17)
2018-10-01 23:26:47 -05:00
Austin Seipp
029d9c8173 symbiyosys: 2018.07.26 -> 2018.09.12
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 919a3b7f9c)
2018-10-01 23:26:47 -05:00
Austin Seipp
bcad3bb1e8 yosys: 2018.08.08 -> 2018.09.30
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit d7393024d1)
2018-10-01 23:26:47 -05:00
Austin Seipp
8edbdae43d arachne-pnr: 2018.05.13 -> 2018.09.08
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 7b0b895053)
2018-10-01 23:26:47 -05:00
Austin Seipp
aa4177b408 icestorm: 2018.08.01 -> 2018.09.04
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 1e9e3adfb1)
2018-10-01 23:26:47 -05:00
Franz Pletz
66fd61163a nixos/clamav: fix freshclam service if db up to date
(cherry picked from commit 11ba2f270f)
2018-10-02 00:27:24 +02:00
Franz Pletz
5fc5a4fb21 nixos/clamav: fix daemon/updater services toggling
(cherry picked from commit f8d681a91f)
2018-10-02 00:27:23 +02:00
Franz Pletz
b3038ade6f shairport-sync: fix pulseaudio support & default arguments
(cherry picked from commit e7ca9af4cc)
2018-10-02 00:27:23 +02:00
Uli Baum
f2faf3299e Merge branch 'release-18.09' into staging-18.09 2018-10-02 00:17:52 +02:00
Will Dietz
1f1c8079b3 lz4: 1.8.2 -> 1.8.3 (#47547)
(cherry picked from commit 55b6cad537)
2018-10-02 00:16:26 +02:00
John Ericson
d296abb484 Merge pull request #47627 from obsidiansystems/ghc-cross-fixes
ghc: Misc cross fixes for 18.09
2018-10-01 17:19:34 -04:00
Sarah Brofeldt
a54dadb950 nixos/tests/nix-ssh-serve.nix: Use stable nix (#47584)
(cherry picked from commit 358a1c8a28)
2018-10-01 23:02:10 +02:00
xeji
10eec00131 linux kernel: increase build timeout from 1hr to 4 hrs (#47564)
We've recently seen a lot of kernel build timeouts on hydra,
so let's increase the timeout.

(cherry picked from commit 83fd9785f6 and
resolved conflict)
2018-10-01 17:45:27 +02:00
Jörg Thalheim
ec3497a084 Merge pull request #47592 from Mic92/alacritty-backport
alacritty: 2018-08-30 -> 0.2.0 (backport)
2018-10-01 12:23:10 +01:00
Jörg Thalheim
57a4034bd0 alacritty: spell darwin platform correctly
(cherry picked from commit 13b2903169)
2018-10-01 12:09:21 +01:00
Jörg Thalheim
44125457d4 alacritty: restrict platforms to x86_64-{linux,darwin}
(cherry picked from commit 350c79f983)
2018-10-01 12:03:31 +01:00
Jörg Thalheim
2d84895618 alacritty: 2018-08-30 -> 0.2.0
Based on popular demand I decided to upgraded alacritty from my own fork.
We currently also have a version in staging that works without but we
cannot easily backport this one because it relies on some changes in the rust
build infrastructure

(cherry picked from commit cb6ccb6a7e)
2018-10-01 12:03:28 +01:00
Sarah Brofeldt
ff37ba7028 dockerTools: Use nix instead of nixUnstable
(cherry picked from commit b256df4937)
2018-10-01 10:05:50 +02:00
Florian Klink
b550b7d9e3 pythonPackages.pystemd: init at 0.5.0 (#47517)
(cherry picked from commit 2be514d5c3)
2018-10-01 07:36:56 +01:00
Josef Kemetmüller
0f1911eea2 pythonPackages.py-cpuinfo: Fix darwin build (#47558)
(cherry picked from commit 49dcf7be62)
2018-09-30 21:19:24 +02:00
volth
a3e5e6e792 language_subtag_registry: fix hash (#47555)
(cherry picked from commit 61007c0e96)
2018-09-30 21:15:36 +02:00
Josef Kemetmüller
f2a1d990ec pythonPackages.python-mapnik: Fix build
There were two things to fix:
- Boost started shipping libboost_python.so as libboost_python{Major}{Minor}
- Make sure that mapnik and boost link to the correct version of python.

(cherry picked from commit be6451e020)
2018-09-30 21:13:26 +02:00
Josef Kemetmüller
8b3bff1de7 mapnik: 3.0.13 -> 3.0.20
(cherry picked from commit b1857daa25)
2018-09-30 21:13:25 +02:00
Graham Christensen
26537f5379 docs: format 2018-09-29 20:49:27 -04:00
Graham Christensen
4867086bc7 Revert "Revert "doc: Update section about imperative containers""
I fixed the problem.

This reverts commit 29624f6bb2.
2018-09-29 20:47:03 -04:00
Will Dietz
4c3a0ae445 nix-daemon: only add channels dir to NIX_PATH if exists
Per reviewer comment (thanks!).

(cherry picked from commit 243e28bc96)
2018-09-29 20:34:13 -04:00
Tuomas Tynkkynen
aa0c7bd5ed nixos/kexec: Replace meta.available checks
This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

[dezgeg: Also squash in the bugfix commit "nixos/kexec: Fix typo in meta.platforms" by aszlig]

(cherry picked from commit 599c4df46a)
(cherry picked from commit fd8bca45c9)
2018-09-30 03:09:46 +03:00
Tuomas Tynkkynen
5330abad53 ghc: Replace meta.available checks for enableIntegerSimple
This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

(cherry picked from commit f4dd2fed7f)
2018-09-30 02:13:48 +03:00
Tuomas Tynkkynen
ae63055af9 treewide: Replace meta.available checks in shouldUsePackages copypasta
This reverts commit 79d8353b5e.

This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

(cherry picked from commit 5e84926a66)
2018-09-30 02:13:48 +03:00
Tuomas Tynkkynen
2c3443e2d2 apparmor: Replace meta.available checks
This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

(cherry picked from commit 50d0360888)
2018-09-30 02:13:47 +03:00
Tuomas Tynkkynen
50da319891 nix: Replace meta.available checks
This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

(cherry picked from commit cdeafe7cdf)

Conflicts:
	pkgs/tools/package-management/nix/default.nix
2018-09-30 02:13:41 +03:00
Tuomas Tynkkynen
6b1ebeb5eb systemd: Replace meta.available checks
This sort of code breaks config.{allowBroken, allowUnsupportedSystem} =
true by making them do unpredictable things.

(cherry picked from commit fe7919f7a1)
2018-09-30 02:12:30 +03:00
Tuomas Tynkkynen
29624f6bb2 Revert "doc: Update section about imperative containers"
This reverts commit b72abcf861.

Breaks manual build:

https://nix-cache.s3.amazonaws.com/log/wnjcy6n5f871bpyy9nd06smiz1ggv99c-nixos-manual-combined.drv
2018-09-30 01:02:45 +03:00
Tim Steinbach
b7cab85b26 linux: 4.18.10 -> 4.18.11
(cherry picked from commit 5eefdebf49)
2018-09-29 17:55:08 -04:00
Tim Steinbach
99b696927a linux: 4.14.72 -> 4.14.73
(cherry picked from commit 00e57782bc)
2018-09-29 17:54:57 -04:00
Tim Steinbach
9bd9306c36 linux: 4.9.129 -> 4.9.130
(cherry picked from commit 74f56e14d9)
2018-09-29 17:54:46 -04:00
Tim Steinbach
c2e605e9d1 linux: 4.4.158 -> 4.4.159
(cherry picked from commit 7769fd6a80)
2018-09-29 17:54:36 -04:00
Tycho Grouwstra
1d5b7a7d42 gitkraken: 4.0.2 -> 4.0.5 (#47512)
Fixes #47498. Note that the releases have moved to a new URL; I'm not sure they still host the earlier versions.

(cherry picked from commit 9d727e0a91)

backported because previous source url returns 404.
2018-09-29 20:51:42 +02:00
Arian van Putten
b72abcf861 doc: Update section about imperative containers
Nix commands inside the container have been broken since 18.03,
and no fix is yet in sight.  Lets remove from the documentation
that this is a usecase that we support, as it doesn't seem
likely that this will be fixed before 18.09 either.

See #40355

(cherry picked from commit f309440ee3)
2018-09-29 19:18:54 +01:00
Jan Tojnar
0f9355abb2 flatpak-builder: add libyaml
(cherry picked from commit 7d2c8bbe9a)
2018-09-29 13:21:22 +02:00
Jan Tojnar
941941b151 xdg-dbus-proxy: init at 0.1.0
(cherry picked from commit 2d19ee6247)
2018-09-29 13:21:22 +02:00
Tor Hedin Brønner
7569e96508 ostree: 2018.6 -> 2018.8
(cherry picked from commit 87d11ae99c)
2018-09-29 13:21:22 +02:00
Tor Hedin Brønner
8063903183 xdg-desktop-portal-gtk: 0.99 -> 1.0.2
(cherry picked from commit b6c17cd46f)
2018-09-29 13:21:22 +02:00
Tor Hedin Brønner
3f0618a7ed flatpak: 0.99.3 -> 1.0.2
(cherry picked from commit 37a828ec27)
2018-09-29 13:21:22 +02:00
Tor Hedin Brønner
e80820d5b7 xdg-desktop-portal: 0.99 -> 1.0.2
(cherry picked from commit 0d994736a1)
2018-09-29 13:21:22 +02:00
Tor Hedin Brønner
727eb5ed78 pipewire: 0.1.9 -> 0.2.3
I also removed pipewire from mutter temporarily, since it is not compatible.

(cherry picked from commit c32b0409a9)
2018-09-29 13:21:21 +02:00
Vladimír Čunát
c5668bd183 Merge branch 'staging-18.09' into release-18.09 2018-09-29 11:09:27 +02:00
Vladimír Čunát
fe195c03ed Merge #45683: nvidia_x11: 390.77 -> 390.87
(cherry picked from commit d9f7d27ef5)
2018-09-29 11:09:16 +02:00
Tom Bereknyei
6c68068a52 gnuradio: 3.7.13.3 -> 3.7.13.4
(cherry picked from commit a054f269bf)
Backport of #47491
2018-09-29 10:57:01 +02:00
Wael M. Nasreddine
56591a244e browsh: 1.4.10 -> 1.4.13
(cherry picked from commit fa46ce3828)
Backport of #47501
2018-09-29 10:00:28 +02:00
symphorien
c922e20b5d exempi: patch CVE-2018-12648, enable tests on linux (#47496)
(cherry picked from commit e502c72773)
2018-09-29 00:16:18 +02:00
Daiderd Jordan
f5db056efd freedroidrpg: don't build on hydra
Similar to some other builds, sdl-config gets stuck and times out.

    checking for sdl-config... /nix/store/q2hm1ka0qxs2gv5bmrxj7j80lygk4b5z-SDL-1.2.15-dev/bin/sdl-config
    building of '/nix/store/m2d7v0n5hd2498vfxp18i37p7r1lf76p-freedroidrpg-0.16.1' timed out after 7200 seconds of silence

/cc ZHF #45961

(cherry picked from commit 9b99819283)
2018-09-28 22:33:32 +02:00
Daiderd Jordan
e087e20239 flpsed: mark linux only
Doesn't build on darwin and probably other platforms.

    GsWidget.H:26:3: error: 'Atom' does not name a type; did you mean 'tm'?
       Atom atoms[5];
       ^~~~
       tm
    GsWidget.cxx: In member function 'void GsWidget::setProps()':
    GsWidget.cxx:47:2: error: 'atoms' was not declared in this scope
      atoms[0] = XInternAtom(fl_display,"GHOSTVIEW" , false);
      ^~~~~

/cc ZHF #45961

(cherry picked from commit cd78d0cc3f)
2018-09-28 22:33:32 +02:00
Daiderd Jordan
c1f9ffc740 fox: mark broken on darwin
Undefined symbols for architecture x86_64:
      "_MPCreateSemaphore", referenced from:
          FX::FXSemaphore::FXSemaphore(int) in FXThread.o
          FX::FXSemaphore::FXSemaphore(int) in FXThread.o
      "_MPDeleteSemaphore", referenced from:
          FX::FXSemaphore::~FXSemaphore() in FXThread.o
          FX::FXSemaphore::~FXSemaphore() in FXThread.o
      "_MPSignalSemaphore", referenced from:
          FX::FXSemaphore::post() in FXThread.o
      "_MPWaitOnSemaphore", referenced from:
          FX::FXSemaphore::wait() in FXThread.o
          FX::FXSemaphore::trywait() in FXThread.o
    ld: symbol(s) not found for architecture x86_64

/cc ZHF #45961

(cherry picked from commit 6390b8b63e)
2018-09-28 22:33:31 +02:00
Brian Olsen
3108f741fe nixos/rspamd: Remove non-working socket activation
The socket activation I added to the rspamd module doesn't actually work
and can't be made to work without changes to rspamd.

See: #47421
See: rspamd/rspamd#2035
(cherry picked from commit 783a58f363)
2018-09-28 21:04:41 +02:00
John Ericson
aab182ebea Merge pull request #47488 from obsidiansystems/ghcjs-ghc-version
ghcjs-*: Expose the version of GHC used
2018-09-28 12:33:35 -04:00
Jörg Thalheim
1e9f50f156 systemd: don't restart user-runtime-dir@ on upgrades
Likewise logind we should not try to restart this service after upgrade,
the user's current session depends on it.

(cherry picked from commit aa69bb5743)
2018-09-28 12:10:36 +01:00
Orivej Desh
1e1821c166 retroshare: mark as broken (#47350)
Broken by libupnp: 1.6.21 -> 1.8.3 (#41684).

(cherry picked from commit eeac44c81a)
2018-09-28 11:57:57 +02:00
xeji
0c29a51467 linuxPackages.jool: 3.5.7 -> unstable-20180706 (#47284)
3.5.7 doesn't build with kernel 4.14.71.
Needs most recent upstream revision to build, which supports
kernels up to 4.17.

(cherry picked from commit f0e4b31eb2)
2018-09-28 11:55:12 +02:00
Tuomas Tynkkynen
a7fa8e1aa8 Add ssh backdoor to VM tests infrastructure.
Thanks to @dezgeg for prototype implementation, I've
cleaned it up and added documentation.

(cherry picked from commit d6e3db44cf)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-28 10:54:09 +01:00
Sarah Brofeldt
0e0cd2fc30 haskellPackages.term-rewriting: doJailbreak and dontCheck
(cherry picked from commit 5c45ca0943)
Backport of #47456
2018-09-28 10:48:19 +02:00
John Ericson
3768913cc9 Merge pull request #47445 from obsidiansystems/ghcjs-no-double-callPackage
ghcjs-{7.10, 8.0}: Improve overriding situation for 18.09
2018-09-27 19:11:52 -04:00
Brian Olsen
0f4e117054 nixos/rspamd: Preserve runtime directory when using socket activation
(cherry picked from commit 458bcc8f7a)
2018-09-27 14:09:54 +01:00
Jean-Philippe Cugnet
cdb33d1ddc erlangR19: 19.3.6.6 -> 19.3.6.11
(cherry picked from commit bf22712993)
Backport of #47367
2018-09-27 10:44:30 +02:00
Jean-Philippe Cugnet
d101614d71 erlangR20: 20.3.8 -> 20.3.8.9
(cherry picked from commit 6e5682ab41)
Backport #47369
2018-09-27 10:22:32 +02:00
Florian Klink
cf64adec53 golden-cheetah: add desktop item and icon
(cherry picked from commit bb51ba9bb8)
2018-09-27 09:54:37 +02:00
Austin Seipp
3c85e586b3 libiio: install python bindings
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit af48e5783a)
2018-09-26 19:40:41 -05:00
Corey O'Connor
d26e830997 vlc: 3.0.3 -> 3.0.4 (#47406)
(cherry picked from commit 26ce265258)

Didn't build, invalid url for vlc-qt5.11.patch.
2018-09-26 23:27:42 +02:00
John Ericson
8e2e8bb882 Merge remote-tracking branch 'upstream/release-18.09' into staging-18.09 2018-09-26 15:55:37 -04:00
John Ericson
3b5c708ac8 Merge pull request #47401 from obsidiansystems/paxctl-darwin-no-mass-rebuild
paxctl: Fix darwin and cross without mass-rebuild for 18.09
2018-09-26 15:52:44 -04:00
xeji
e5eabccb00 Merge pull request #47396 from rycee/backport/noti
Backport the noti package to 18.09
2018-09-26 19:31:44 +02:00
Mario Rodas
583a32148c noti: fix darwin build
(cherry picked from commit 4c56eb81e9)
2018-09-26 18:54:57 +02:00
stites
e835796a18 noti: init at 3.1.0
(cherry picked from commit f1c30cf772)
2018-09-26 18:54:56 +02:00
stites
e861f31344 add stites to maintainers list
(cherry picked from commit 82f980828d)
2018-09-26 18:54:56 +02:00
John Ericson
6bc58a9438 Merge branch 'release-18.09' into staging-18.09 2018-09-26 11:23:49 -04:00
John Ericson
e06de91855 Merge commit '607063f61be3b19a2da054776b360d9c5b03038a' into release-18.09
This gets the partial revert on the common ancestor of master and
release-18.09, easier further devlopment.
2018-09-26 11:22:28 -04:00
Tim Steinbach
a3b7cd1fa3 linux: 4.18.9 -> 4.18.10
(cherry picked from commit 24c31d43bb)
2018-09-26 08:02:35 -04:00
Tim Steinbach
74680cff73 linux: 4.14.71 -> 4.14.72
(cherry picked from commit 61452c82ae)
2018-09-26 08:02:29 -04:00
Tim Steinbach
1c7a4320e8 linux: 4.9.128 -> 4.9.129
(cherry picked from commit 8e4d980904)
2018-09-26 08:02:23 -04:00
Tim Steinbach
a4cedc0981 linux: 4.4.157 -> 4.4.158
(cherry picked from commit 656ca2296c)
2018-09-26 08:02:18 -04:00
Domen Kožar
29660a2085 postgresql: give postgres user a shell
(cherry picked from commit 82feb4b66e)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-26 12:12:29 +01:00
Matthew Bauer
f9c4075873 stdenv: partial revert of f2bb59e
/cc @Ericson2314

PR was https://github.com/NixOS/nixpkgs/pull/46857

This line broke MacOS cross compilation. paxctl cannot be built on
macOS. Maybe it can be fixed, but no reason to break things
unnecessarily.

Regardless, you definitely need to be more careful about backporting.
I think it’s fine to move fast and break things on master but
with release-18.09 we should be more careful. Something like more
automated testing for cross compilation would also be
helpful (hopefully even making it block).
2018-09-26 02:23:07 -05:00
Okina Matara
0b70148bd6 linux_testing_bcachefs: 4.18.2018.08.31 -> 4.18.2018.09.21
(cherry picked from commit d98b0805cc)
2018-09-26 08:49:53 +02:00
xeji
391bf82ca3 qboot: 20150603 -> 20170330, fix build (#47364)
Switch back to original upstream project which is more recent
than the fork we used.

(cherry picked from commit 4ad424fbd6)
2018-09-25 22:33:46 +02:00
John Ericson
372d0cc4f4 Merge pull request #47363 from obsidiansystems/ghc-sphinx
ghc: Sphinx is a build-time dependency
2018-09-25 16:31:27 -04:00
Luke Clifton
67e53e0c6d abduco: refactor (compile on darwin) (#47124)
(cherry picked from commit 3d8f6b6188)
2018-09-25 22:30:03 +02:00
Luke Clifton
b018ccca8f dvtm: refactor (fix on darwin) (#47103)
(cherry picked from commit 4eebe205fe)
2018-09-25 22:28:48 +02:00
Michael Roitzsch
0253b1e38f podofo: fix library linkage on Darwin (#47214)
* podofo: fix library linkage on Darwin

Because the library is not yet installed when the tools are build, it does not contain its final store path as its install name. Linking the tools picks up this incorrect install name and needs to be fixed after installing.

(cherry picked from commit 4b1ffa0b00)
2018-09-25 22:12:17 +02:00
gnidorah
f2210522d2 tdesktop: support opening urls under wayland
(cherry picked from commit e79ccc1100)
2018-09-25 21:10:33 +01:00
John Ericson
1d542e7e8f Merge pull request #47361 from obsidiansystems/python-format
python-*: Format `pythonPackages` bindings for 18.09
2018-09-25 15:40:01 -04:00
John Ericson
3252c48c29 Merge commit 'a70aeacbf770757212e1845b97ea7d561b5f7af4' into staging-18.09 2018-09-25 14:48:54 -04:00
John Ericson
a70aeacbf7 Merge remote-tracking branch 'upstream/release-18.09' 2018-09-25 14:48:31 -04:00
John Ericson
37a5fcb775 Merge pull request #47356 from obsidiansystems/numpy-fortran
numpy, scipy: Fix some nativeBuildInputs  for 18.09
2018-09-25 14:45:45 -04:00
John Ericson
b7dbd81c9c Merge remote-tracking branch 'upstream/release-18.09' into staging-18.09 2018-09-25 14:19:32 -04:00
zimbatm
35832681f1 firefox-bin: fix channel patching
The patchPhase wasn't being applied at all.

This patch re-enables that and also re-thinks the setting that we want
to have. Turning off the auto-update is more accurate and doesn't lose
information like it did before.

(cherry picked from commit 6060940c24)
2018-09-25 15:49:32 +01:00
Uli Baum
69514d78a6 herqq: mark broken
- build fails with qt511 and qt59
  (it used to build with qt510 which is not available anymore)
- no nixpkgs maintainer
- upstream repo looks inactive, last commit a year ago

(cherry picked from commit 9beaa6dcad)
2018-09-25 12:26:45 +02:00
Uli Baum
a7792ffa4f monodevelop: mark broken
build has failed since 2018-03-08
cc maintainer @obadz

(cherry picked from commit 6b4abb9fa7)
2018-09-25 12:26:45 +02:00
Uli Baum
da6b7f6d84 gtk-sharp-3_0: mark broken
build has failed since 2018-04-28
no maintainer

(cherry picked from commit 395a1528f0)
2018-09-25 12:26:45 +02:00
Uli Baum
294060d163 Revert "virtualization/qemu-vm: fix and improve virtio/scsi switching"
This reverts commit 174e19d1f6.

It broke nixos.ova and eval of some tests.
2018-09-25 11:05:31 +02:00
Notkea
52799425f8 matrix-synapse: 0.33.3.1 -> 0.33.5
Upgrade matrix-synapse to the latest version,
adding a new required dependency (treq)

(cherry picked from commit 4cd6502925)
2018-09-25 10:03:10 +01:00
Colin Rice
86406e24bb go: Remove pkg/obj directory from the build outputs.
This appears to be causing the go package to be roughly 900MB in size.

(cherry picked from commit cdeb26ee76)
2018-09-25 09:47:55 +01:00
Florian Klink
e2d0b3be8d pythonPackages.elasticsearch-dsl: 0.0.9 -> 6.2.1
(cherry picked from commit 18c7fbd78d)
2018-09-25 08:58:11 +01:00
William Casarin
3b175f5d2a clightning: 0.6.0 -> 0.6.1
Update to the latest release.

Highlights for c-lightning users
--------------------------------

  - Less stuck payments: Liveness ping test before locking up funds with peers.
  - Better routing: now considers size of channels.
  - Fewer spurious closes: fee estimate improvements, and new feerates command
  - Several annoying bugs fixed.

Highlights for the network
--------------------------

  - Gossipd now less spammy with channel_update.
  - option_data_loss_protect to protect peers against being out-of-date.
  - Payment errors now refer to the correct channel.

Internal Improvements
---------------------

  - Simplified client flow; after init message exchange by connectd, each is
    isolated in its own daemon.
  - JSON parameter handling vastly simplfied.
  - Python testing framework now uses proper fixtures, and split into separate
    files.
  - Many other cleanups and clarifications.
  - We keepachangelog.com!

Signed-off-by: William Casarin <jb55@jb55.com>

(cherry picked from commit 2aa0b85653)
Backport of #47286
2018-09-25 08:49:32 +02:00
Michael Raskin
2039adfb4c Merge pull request #47289 from 1000101/master
trezord: 2.0.14 -> 2.0.19 and nixos/trezord: revised and updated udev rules
(cherry picked from commit ce411911e8)
2018-09-25 08:38:34 +02:00
Matthew Bauer
633e7ee7fb emacsMacport: 7.1 → 7.2
Fixes a critical issue with macOS

[NEWS](https://bitbucket.org/mituharu/emacs-mac/raw/master/NEWS-mac)

* emacs-26.1-mac-7.2 (2018-09-09)

** Fixed bugs

*** Buffer contents are not displayed on macOS 10.14.
This is mainly because now NSViews are backed by Core Animation Layer
(layer-backed) by default and non-deferred drawing into views no
longer works.  Instead of switching to deferred drawing (i.e., draw
only inside -[NSView drawRect:]), we draw into our own backing bitmap
in a non-deferred way as before, and update the view contents with the
resulting image via -[NSView updateLayer].  This "application-side
double buffering" is also available on OS X 10.8 - macOS 10.13 if you
set the frame parameter `inhibit-double-buffering' to nil when
creating a frame.  Just like on macOS 10.14, such a frame does not do
LCD smoothing.

*** Screenshot grabbed via Services is displayed in wrong size when we
have display mirroring between Retina and non-Retina displays.

*** Cursor movement just after frame resize sometimes leaves garbage.

*** Crash by the Fall_threads call from the GUI thread at the select
emulation when there are multiple Lisp threads.

*** Info title has ASCII underline unlike other window systems.

*** Vertical scroll bar is created as horizontal if frame font height
is short.

** Improvements

*** macOS 10.14 adds property :appearance to (mac-application-state).
The value may be "NSAppearanceNameAqua" or "NSAppearanceNameDarkAqua".

*** Add new color format "mac:COLOR-LIST-NAME:COLOR-NAME" and
"mac:COLOR-NAME" (shorthand for "mac:System:COLOR-NAME").  The actual
color may be different depending on the global appearance setting on
macOS 10.14.  For example, "mac:textColor" is black on the Light Mode
but is white on the Dark Mode.

*** Default frame colors respect appearance setting on macOS 10.14.
Now the default frame foreground/background color is
"mac:textColor"/"mac:textBackgroundColor", respectively.  Changes of
the system setting of the global appearance are dynamically reflected.

*** New function `mac-color-list-alist' to get the available
combinations of COLOR-LIST-NAMEs and COLOR-NAMEs.  Note that this
value is dependent on user environment and OS version.  Also, some
combinations may represent image patterns rather than colors.  For the
former cases, `(color-values "mac:COLOR-LIST-NAME:COLOR-NAME")'
returns nil.
2018-09-24 21:40:01 -05:00
WilliButz
9684fc03bb nixos/gitlab: rebuild authorized_keys during preStart
This updates the path to the 'gitlab-shell' to the
correct store path when gitlab is restarted.

(cherry picked from commit 78ad8d4a62)
2018-09-25 03:54:51 +02:00
Robin Gloster
6c4993b4f6 gitlab module: workhorse may start before gitlab
(cherry picked from commit dc915565ba)
2018-09-25 03:54:50 +02:00
Robin Gloster
6fc98d4d98 gitlab: 11.2.3 -> 11.3.0
(cherry picked from commit ed85eb5433)
2018-09-25 03:54:50 +02:00
Robin Gloster
63e305ba8d gitaly: 0.117.2 -> 0.120.0
(cherry picked from commit cbc21b8b90)
2018-09-25 03:54:49 +02:00
Robin Gloster
7cd7f188bc gitlab-shell: 8.1.1 -> 8.3.3
(cherry picked from commit 545c07108f)
2018-09-25 03:54:49 +02:00
Robin Gloster
450f2f5e5b gitlab-workhorse: 6.0.0 -> 6.1.0
(cherry picked from commit 96c1765bac)
2018-09-25 03:54:49 +02:00
Kristoffer Thømt Ravneberg
2676927ffc nixos/gitlab: avoid creating recursive symlinks, add gitlab-rake deps
(cherry picked from commit f17f59ca8e)
2018-09-25 03:54:48 +02:00
Kristoffer Thømt Ravneberg
2b4a105b8d gitlab-ee: init at 11.2.3
(cherry picked from commit 6946d97ce4)
2018-09-25 03:54:48 +02:00
Kristoffer Thømt Ravneberg
b57d410e1b gitlab: 10.8.0 -> 11.2.3
(cherry picked from commit 51c1830147)
2018-09-25 03:54:47 +02:00
Kristoffer Thømt Ravneberg
c50434a505 gitlab-shell: 7.1.2 -> 8.1.1
(cherry picked from commit bfc8d80c6e)
2018-09-25 03:54:47 +02:00
Kristoffer Thømt Ravneberg
cdb7f84118 gitaly: 0.100.0 -> 0.117.2
(cherry picked from commit 949172f289)
2018-09-25 03:54:46 +02:00
Kristoffer Thømt Ravneberg
b3a1678ce4 gitlab-workhorse: 4.2.0 -> 6.0.0
(cherry picked from commit 45aa373fa9)
2018-09-25 03:54:46 +02:00
John Ericson
0cf38d9921 Merge pull request #47304 from obsidiansystems/haskell-no-rec-18.09
ghc, ghcjs: Get rid of extraneous alex, happy, and hscolour args for 18.09
2018-09-24 20:28:07 -04:00
John Ericson
d6e2a2c4da Merge remote-tracking branch 'upstream/release-18.09' into haskell-no-rec-18.09 2018-09-24 20:11:48 -04:00
John Ericson
5b6fc8f87d Merge remote-tracking branch 'upstream/release-18.09' into haskell-no-rec-18.09 2018-09-24 20:10:19 -04:00
John Ericson
da6e61fedd Merge pull request #47301 from obsidiansystems/haskell-no-rec
haskellPackages: Avoid outer `rec { .. }` for 18.09
2018-09-24 18:59:12 -04:00
Uli Baum
04b04e9745 Merge branch 'release-18.09' into staging-18.09 2018-09-25 00:07:47 +02:00
John Ericson
c896936cd1 Merge pull request #47299 from obsidiansystems/overrideScope-order
lib: Deprecate `overrideScope` in lieu of `overrideScope'` taking arguments in the conventional order for 18.09
2018-09-24 18:04:35 -04:00
Peter Simons
b719e29d95 ghc: add release version for 8.6.1
(cherry picked from commit 2ffcbeda13)
2018-09-24 18:03:16 -04:00
Austin Seipp
b0f8181432 nixos/chrony: clean up, rework to be a little closer to upstream
Most importantly, this sets PrivateTmp, ProtectHome, and ProtectSystem
so that Chrony flaws are mitigated, should they occur.

Moving to ProtectSystem=full however, requires moving the chrony key
files under /var/lib/chrony -- which should be fine, anyway.

This also ensures ConditionCapability=CAP_SYS_TIME is set, ensuring
that chronyd will only be launched in an environment where such a
capability can be granted.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 0ce90d58cc)
2018-09-24 15:43:23 -05:00
baracoder
f34ef9e746 dotnet-sdk: Reduce closure: Unpack to a subdirectory to prevent copying build files (#47269)
(cherry picked from commit 7f0865bac8)
2018-09-24 21:38:59 +01:00
Domen Kožar
31432d4b88 nixos tests: move common configuration into separate file
This allows tests outside nixos to use acme setup.

(cherry picked from commit 6eacc17157)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-24 20:09:32 +01:00
Andreas Rammhold
2373df6dcc Merge pull request #47277 from andir/18.09/firefox
[18.09] firefox, firefox-bin 61.0.2 -> 62.0.2, firefox-esr: 60.2.0esr -> 60.2.1esr [Moderate security fixes]
2018-09-24 20:46:38 +02:00
Lorenzo Manacorda
71fd97dd05 *: remove DappHub projects
DappHub maintains a separate overlay at
https://github.com/dapphub/dapptools/blob/master/overlay.nix

(cherry picked from commit 6017c6fa5b)
2018-09-24 18:49:45 +01:00
Maximilian Bosch
32af342e46 eztrace: 1.0.6 -> 1.1-7 (#47282)
See https://hydra.nixos.org/build/80721509
Addresses #45960

(cherry picked from commit 2babfb5a88)
2018-09-24 19:35:22 +02:00
Uli Baum
570ec19f39 nixos/tests/installer: stop udev queue before calling mdadm
In the swraid test, temporarily stop udev queue execution while
creating mdraid devices to prevent a race with udev, see
https://groups.google.com/forum/#!topic/scylladb-dev/u87yHgo3ylU

(cherry picked from commit 7dd6a5192d)
2018-09-24 19:00:29 +02:00
Uli Baum
c2ab695557 nixos/tests/installer: use flock for all parted calls
to further reduce risk of race with udev, like util-linux
recommends for sfdisk:
https://github.com/karelzak/util-linux/blob/v2.32/disk-utils/sfdisk.8#L71

(cherry picked from commit c46677fec2)
2018-09-24 19:00:29 +02:00
Uli Baum
dc74ab0eac nixos/tests/installer: prevent race between parted and udev
by combining all parted commands into a single parted call.
This eliminates one cause of non-deterministic failure.

(cherry picked from commit a5183762c5)
2018-09-24 19:00:29 +02:00
Andrew Dunham
35271fdb2f boost: limit concurrent jobs to the maximum supported number (#47255)
(cherry picked from commit ba278c3b87)
2018-09-24 18:23:05 +02:00
Stefan Junker
174e19d1f6 virtualization/qemu-vm: fix and improve virtio/scsi switching
(cherry picked from commit f777d2b719)
2018-09-24 18:05:15 +02:00
taku0
02429f790b firefox-esr: 60.1.0esr -> 60.2.1esr
(cherry picked from commit e5778a9991)
2018-09-24 17:41:00 +02:00
taku0
53dee62105 firefox: 61.0.2 -> 62.0.2
(cherry picked from commit da9823672f)
2018-09-24 17:40:04 +02:00
taku0
10db65e530 firefox-bin: 61.0.2 -> 62.0.2
(cherry picked from commit 5b79f81a39)
2018-09-24 17:39:05 +02:00
xeji
4f4807ae66 nixos/tests/hound: fix non-deterministic failure (#47152)
The test failed on Hydra in one instance because a request to the
server was sent before indexing was finished.
Retry the request until it succeeds (or times out).

(cherry picked from commit c525111133)
2018-09-24 17:32:51 +02:00
Bas van Dijk
afe328bb5e opencv: 3.4.2 -> 3.4.3
(cherry picked from commit 252c0d4c82)
2018-09-24 16:02:10 +02:00
Maximilian Bosch
32a5d08507 python3Packages.google-compute-engine: fix build (#47267)
The dependency `distro` was missing.
See https://hydra.nixos.org/build/81330387

Addresses #45960

(cherry picked from commit baa7e52fe0)
2018-09-24 15:52:47 +02:00
Daiderd Jordan
3cee0ce5b8 eiskaltdcpp: mark linux only
The darwin build fails and other platforms will probably run into
similar issues.

    Determining if the Q_WS_QWS exist failed with the following output:
    Change Dir: /tmp/nix-build-eiskaltdcpp-2.2.10.drv-0/source/build/CMakeFiles/CMakeTmp

    Run Build Command:"/nix/store/qfag24z6xsr6jkyi8gb4cv62rp945rbk-gnumake-4.2.1/bin/make" "cmTC_14e67/fast"
    /nix/store/qfag24z6xsr6jkyi8gb4cv62rp945rbk-gnumake-4.2.1/bin/make -f CMakeFiles/cmTC_14e67.dir/build.make CMakeFiles/cmTC_14e67.dir/build
    make[1]: Entering directory '/private/tmp/nix-build-eiskaltdcpp-2.2.10.drv-0/source/build/CMakeFiles/CMakeTmp'
    Building CXX object CMakeFiles/cmTC_14e67.dir/CheckSymbolExists.cxx.o
    /nix/store/2gdwhdzhy4iwkp7fh8v6gy6nxj1zi9pv-clang-wrapper-5.0.2/bin/clang++   -I/nix/store/8dzqilmdr0p3qmmrxh51xk7wli6grm0i-qt-4.8.7/include -F/nix/store/8dzqilmdr0p3qmmrxh51xk7wli6grm0i-qt-4.8.7/lib  -std=c++0x -pipe -Wformat -Werror=format-security  -arch x86_64   -o CMakeFiles/cmTC_14e67.dir/CheckSymbolExists.cxx.o -c /tmp/nix-build-eiskaltdcpp-2.2.10.drv-0/source/build/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx
    /tmp/nix-build-eiskaltdcpp-2.2.10.drv-0/source/build/CMakeFiles/CMakeTmp/CheckSymbolExists.cxx:8:19: error: use of undeclared identifier 'Q_WS_QWS'
      return ((int*)(&Q_WS_QWS))[argc];
                  ^

/cc ZHF #45961

(cherry picked from commit 52ad963b50)
2018-09-24 13:59:28 +01:00
Maximilian Bosch
20d144b58c python3Packages.py3exiv2: fix build
Recent boost versions name their `python3` shared objects
`boost_python3x` rather than `boost_python3`.

See https://hydra.nixos.org/build/80712295
Addresses #45960

(cherry picked from commit 50f23da8e6)
2018-09-24 13:53:14 +01:00
Jörg Thalheim
ea48d53c8c Merge pull request #47247 from danme/release-18.09
nvidia-x11: Fix vulkan VK_KHR_xcb_surface
2018-09-24 13:20:02 +01:00
Maximilian Bosch
34cafeee32 Revert "python: ldappool: 2.2.0 -> 2.3.0"
This reverts commit 29acc8339f.

(cherry picked from commit fbeb94dd46)
2018-09-24 13:17:54 +01:00
Florian Klink
7eb1fa2845 systemd: update to fix nspawn containers (#47264)
This fixes nspawn containers with older systemd inside currently failing
to start.

See:
https://github.com/NixOS/systemd/pull/23
https://github.com/systemd/systemd/pull/10104
https://github.com/NixOS/nixpkgs/issues/47253
(cherry picked from commit c3cc34f20a)
2018-09-24 10:03:16 +01:00
Eelco Dolstra
e4966591ef Revert "nixos: set nixos in nixPath"
This reverts commit 67c8c49177.

'nix run nixos.firefox' is *not* supposed to work - the Nix 2.x
interface attempts to standardize on nixpkgs.*, to get rid of the
nixos/nixpkgs confusion that existed with the channels interface. So
let's not bring that confusion back.

(cherry picked from commit 9c53116d49)
2018-09-24 10:44:47 +02:00
Will Dietz
ee582a32d2 NIX_PATH: don't prepend $HOME-based value in session variable, set later
environment.sessionVariables cannot refer to the values of env vars,
and as a result this has caused problems in a variety of scenarios.

One use for these is that they're injected into /etc/profile,
elewhere these are used to populate an 'envfile' for pam
(`pam 5 pam_env.conf`) which mentions use of HOME being
potentially problematic.

Anyway if the goal is to make things easier for users,
simply do the NIX_PATH modification as extraInit.

This fixes the annoying problems generated by the current approach
(#40165 and others) while hopefully serving the original goal.

One way to check if things are borked is to try:

$ sudo env | grep NIX_PATH

Which (before this change) prints NIX_PATH variable with
an unexpanded $HOME in the value.

-------

This does mean the following won't contain user channels for 'will':
$ sudo -u will nix-instantiate --eval -E builtins.nixPath

However AFAICT currently they won't be present either,
due to unescaped $HOME.  Unsure if similar situation for other users
of sessionVariables (not sudo) work with current situation
(if they exist they will regress after this change AFAIK).

(cherry picked from commit fa67ca1543)
2018-09-23 20:08:33 -05:00
Alexander V. Nikolaev
4307b37781 rmilter: deprecation notice
(cherry picked from commit 868040ee22)
2018-09-24 01:41:27 +01:00
Alexander V. Nikolaev
1a159fe86b rmilter: move rmilter.sock out of /run/rmilter
/run/rmilter is set by systemd, and have root:root ownership, which
prevent pid file to write.

This fix suggested to be promoted to 18.09 branch.
(Although rmilter itself is deprecated, and I plan to remove it, after
18.09 would be released)

(cherry picked from commit 08f266490b)
2018-09-24 01:41:26 +01:00
Bas van Dijk
fa3e193e27 haskellPackages.haddock-api: fix build
Also remove haddock-library == 1.4.4 since it's not needed anymore

(cherry picked from commit 77c73cc8eb29da2154d2e9087d7efd7fd9af10f9)
2018-09-24 01:58:08 +02:00
Bas van Dijk
aeb114f7c9 haskellPackages.yi-core: use overrideScope instead of override
(cherry picked from commit 2de9705b9fcaa3650ea85a9f5e2aee834948fc8f)
2018-09-24 01:58:01 +02:00
Bas van Dijk
d99f352d1d haskellPackages.safe-money-*: use overrideScope instead of override
(cherry picked from commit 2481b366f6ea964889d1010e4159055cef7b5b95)
2018-09-24 01:57:55 +02:00
Bas van Dijk
21808eca2b haskellPackages.Frames: use overrideScope instead of override
(cherry picked from commit f1f2c2d3fc74d52f445f08f0f0410d1be586532b)
2018-09-24 01:57:49 +02:00
Matthew Bauer
9b696718bb nixos: make firefox default browser
Without this the graphical installer has no way to open the manual.
You can fix it yourself by installing any HTML browser but this might
be unfamiliar to users new to NixOS and without any other way to open
the manual. The downside is it will also increase download sizes.

Fixes #46537
2018-09-23 18:49:09 -05:00
Matthew Bauer
cb52ea4f19 kde: add kdoctools to default environment
khelpcenter needs meinproc5 to work properly. Hopefully doesn’t effect
closure sizes too much - kdoctools is rather small.

Fixes #46539

/cc @ttuegel
2018-09-23 18:48:53 -05:00
Matthew Bauer
95f31078f5 nixos: set nixos in nixPath
This makes using the nixos channel work out of the box with the new
Nix commands. For example:

$ nix run nixos.firefox -c firefox

Fixes #46536
2018-09-23 18:48:40 -05:00
Andrew Dunham
18a7c1df64 hdf4: fix build on aarch64-linux (#47209)
Pull in the Debian patches for AArch64 support, and a bonus patch for
reproducible builds while we're at it.

(cherry picked from commit 104014c6ba)
2018-09-23 23:57:59 +02:00
Bas van Dijk
9b4d87cec5 haskellPackages.Euterpea: fix build by using PortMidi == 0.2
(cherry picked from commit 9b67908e67)
2018-09-23 22:50:45 +02:00
Maximilian Bosch
c49fa222a7 pythonPackages.pyftgl: fix build (#47232)
See https://hydra.nixos.org/build/80705583

Recent `boost` versions with `python` enabled have changed their naming
scheme for `boost_python` shared objects which causes issues with the
proper linking when building `pyftgl`.

Previously the library was named `boost_python3`, no it's named
`boost_python36` for current python (3.6.x).

The same issue applies for the `python2`.

Addresses #45960

(cherry picked from commit 5ad7aedf63)
2018-09-23 22:39:44 +02:00
danme
3ab740ad40 nvidia-x11: Fix vulkan VK_KHR_xcb_surface
Fixes the issue: https://github.com/NixOS/nixpkgs/issues/39149

Problem was that the Nvidia driver did not find the libxcb-glx at runtime.

(cherry picked from commit bda072cafc)
2018-09-23 22:18:17 +02:00
Bas van Dijk
ef9e8bd933 haskellPackages.Frames-beam: disable tests because it requires a running PostgreSQL server
(cherry picked from commit 73cf1c26d8)
2018-09-23 21:59:02 +02:00
Bas van Dijk
9e57b836ca haskellPackages.Frames: fix build by using vinyl-0.10.0
(cherry picked from commit ff6122c993)
2018-09-23 21:58:53 +02:00
Maximilian Bosch
19e8f7c977 tig: fix zsh completion
The ZSH completion script of `tig` basically imports the bash completion
script and uses it as completion approach. Unfortunately the script
takes several assumptions about the directory structure using
`$funcsourcetrace`[1] that don't apply on NixOS.

The easiest workaround is t opatch the completion script and import the
bash completion script from `$out`.

[1] http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#index-funcsourcetrace
2018-09-23 19:21:58 +01:00
John Ericson
8b60c7d088 doc: Don't mention top-level {build, host, target}Platform
For technical reasons, we cannot easily add a warning to top-level
definitions, so 2a6e4ae49a and
e51f736076 reverted the deprecation. But
we can still remove mention of the would-be deprecated definitions to
steer people towards using the preferred alternatives.

(cherry picked from commit e39a73cc55)
2018-09-23 13:29:08 -04:00
John Ericson
7ca9ae5c2b top-level: system should still come from the host platform
2a6e4ae49a and
e51f736076 reverted a bit too much, and I
initially missed this when reviewing. The release notes already still
mention this change, too.

(cherry picked from commit 359d00f8b0)
2018-09-23 13:29:06 -04:00
Bas van Dijk
e611a82197 Revert "libtensorflow: 1.9.0 -> 1.10.0"
This reverts commit 713991132e.

libtensorflow is only used by the Haskell tensorflow packages and they
don't work with tensorflow-1.10 yet. So the easiest solution is to
just revert this commit and add it back when they do gain support.

(cherry picked from commit 6e14b9fc2d)
2018-09-23 19:17:12 +02:00
Bas van Dijk
b2c49a7750 Revert "libtensorflow: fix hashes for darwin and cuda downloads"
This reverts commit 93ed13f86b.

libtensorflow is only used by the Haskell tensorflow packages and they
don't work with tensorflow-1.10 yet. So the easiest solution is to
just revert this commit and add it back when they do gain support.

(cherry picked from commit 39d35e77ee)
2018-09-23 19:17:05 +02:00
John Ericson
9f4d633d93 Merge commit '84c8e397d234bcdbd7ee4a41bf6b705d1250250c' into release-18.09 2018-09-23 13:06:12 -04:00
volth
8b20d98e82 alternative for iproute module (#41801)
(cherry picked from commit 0fa04d646d)

It is unfortunate to cherry-pick something with release notes to the
release staging branch so close to the release. But the change is to a
new service so no one comming from 18.03 would be surprised to a
last-minute change in behavior. Furthermore, the change is a month old
and it appears it only wasn't cherry-picked already by mistake.
2018-09-23 12:24:08 -04:00
John Ericson
afa89e9408 Merge remote-tracking branch 'upstream/release-18.09' into staging-18.09 2018-09-23 12:17:37 -04:00
Florian Klink
5bb85cd45c php: set mysql socket path if mysql[i] or pdo_mysql support is enabled
PHP tries to discover the mysql default socket path during configure
phase by probing the file system:
cf3b852109/ext/mysqli/config.m4 (L4)

This obviously fails to discover /run/mysqld/mysqld.sock, which is being
used (hardcoded) across all MySQL flavours.

This leads to PHP having no mysql socket path set for the mysql[i]
extensions, and `/tmp/mysql.sock` set for pdo_mysql,
meaning one currently has to manually configure and set it in php.ini.

Luckily, PHP supports setting that path via
`--with-mysql-sock=/run/mysqld/mysqld.sock` during configure phase,
so let's do this as soon as one of the three modules is enabled.

(cherry picked from commit baa04e4204)
2018-09-23 16:19:18 +01:00
John Ericson
a06d703851 Merge commit '45f40f5fe02d71f9863e54277a50fe7e1dc46afa' into release-18.09 2018-09-23 11:03:47 -04:00
Andrew Dunham
48625909dc erlangR18: apply upstream patches to fix nondeterministic build failures (#47202)
As per the following bug report, sometimes erts/start_scripts will fail
to compile because of a Makefile ordering issue. Apply the upstream
patches to fix this.
  https://bugs.erlang.org/browse/ERL-241

(cherry picked from commit c987ed0896)
2018-09-23 11:02:47 +02:00
xeji
2c83b339c6 nixos/tests/prosody: use sqlite database (#47185)
The test didn't catch an issue with luadbi because it used
internal storage only. Switch to sqlite to test sql access.

(cherry picked from commit 589b290b43)
2018-09-23 10:46:55 +02:00
Vladimír Čunát
317ce1b622 Merge: nixos/weechat backports
Close #46861 - it's exactly the same commits, just with -x annotations.
2018-09-23 10:41:01 +02:00
adisbladis
e44b6cd961 weechat: Add version and meta to buildEnv package
Currently the output from `nix search` and similar tools are lacking
important meta data

(cherry picked from commit 230fd49738)
2018-09-23 10:39:19 +02:00
Maximilian Bosch
a1c48b9ea6 weechatScripts.weechat-matrix-bridge: don't export `olm.lua' as script (#46582)
Loading olm.lua as weechat script with `/script load olm.lua' causes
errors like this:

```
/nix/store/43jbh7yxh8j4gjfzbvpd9clncah5dip1-weechat-matrix-bridge-2018-05-29/lib/ffi.so: undefined symbol: lua_tointeger
```

As `olm.lua' is loaded by `matrix.lua' it doesn't need to be included
manually by the weechat configuration.

(cherry picked from commit 61a9463498)
2018-09-23 10:37:51 +02:00
Maximilian Bosch
9ceff9e3e5 weechat: fix quoting for ${} syntax
In my previous PR I missed that ${sec.foobar} (syntax to retrieve
secrets in a weechat runtime) breaks the shell evaluation.

Furthermore `;` shall be used rather than `\n` to concat scripts and the
init config.

(cherry picked from commit e2b4644f9c)
2018-09-23 10:37:27 +02:00
Maximilian Bosch
79b38a9795 weechatScripts.wee-slack: init at 2.1.1
(cherry picked from commit f5becfb5b0)
2018-09-23 10:34:59 +02:00
Maximilian Bosch
d74a291ea6 nixos/weechat: cleanup module, add module documentation
This adds several improvements the previously introduced
`services.weechat` module:

* Dropped `services.weechat.init` as the initialization script can now
  be done on package-level since 2af41719bc using the `configure`
  function.

* Added `sessionName` option to explicitly configure a name for the
  `screen` session (by default: weechat-screen).

* Added `binary` option to configure the binary name (e.g.
  `weechat-headless`).

* Added docs regarding `screen` session and `weechat.service`.

(cherry picked from commit 18d419141d)
2018-09-23 10:34:24 +02:00
Maximilian Bosch
27c2215684 weechat: 2.1 -> 2.2; improve package configuration
This aims to make the `weechat` package even more configurable. It
allows to specify scripts and commands using the `configure` function
inside a `weechat.override` expression.

The package can be configured like this:

```
with import <nixpkgs> { };
weechat.override {
  plugins = { availablePlugins, ... }: {
    plugins = builtins.attrValues availablePlugins;

    init = ''
      /set foo bar
      /server add freenode chat.freenode.org
    '';

    scripts = [ "/path/to/script.py" ];
  };
}
```

All commands are passed to `weechat --run-command "/set foo bar;/server ..."`.

The `plugins' attribute is not necessarily required anymore, if it's
sufficient to add `init' commands, the `plugins' will be
`builtins.attrValues availablePlugins' by default.

Additionally the result contains `weechat` and `weechat-headless`
(introduced in WeeChat 2.1) now.

(cherry picked from commit a8efe61412)
2018-09-23 10:33:56 +02:00
Yegor Timoshenko
b4f299eddb weechat: add NixOS module
(cherry picked from commit b54987715b)
2018-09-23 10:33:09 +02:00
Samuel Dionne-Riel
7c7f9623dc qesteidutil: Fixes build from Qt upgrade. (#46083)
(cherry picked from commit ef2b217812)
2018-09-23 10:15:18 +02:00
Andrew Dunham
0d7c472fd7 pythonPackages.flask_assets: fix tests (#47203)
(cherry picked from commit e141f7cd2f)
2018-09-23 10:03:35 +02:00
Andrew Dunham
233328cde5 xsecurelock: 1.0 -> 1.1
(cherry picked from commit da18ffac6b)
Backport of #47190
2018-09-23 09:56:59 +02:00
Uli Baum
73ceb7742c nixos/iso-image: fix 32bit UEFI boot
UEFI iso image for i686 didn't boot because the
default boot file was incorrectly named bootx32.efi.
The correct name is bootia32.efi.

(cherry picked from commit 845ae983f6)
2018-09-23 00:47:29 -04:00
Daiderd Jordan
1cae9ef0fd ffmpeg: don't use gcc on darwin (#47189)
This isn't necessary and causes build failures for certain versions.

    CC      libavfilter/libmpcodecs/vf_eq2.o
    CC      libavfilter/libmpcodecs/vf_fil.o
    CC      libavfilter/libmpcodecs/vf_fspp.o
    libavfilter/libmpcodecs/vf_fspp.c:939:18: error: unknown token in expression
            movq %mm2, 0*8+(%rsp)

/cc ZHF #45961

(cherry picked from commit 52a1179b6c)
2018-09-22 23:13:40 +02:00
Jörg Thalheim
2de47a73c8 luaPackages.luadbi: 0.5 -> 0.6 (#47156)
Switch to maintained fork that is compatible with lua5.2/lua5.3.
This package was tested with prosody.

(cherry picked from commit a8413d816a)

Backported because prosody database access is broken without it.
2018-09-22 22:30:02 +02:00
Uli Baum
10a9c597ad Merge branch 'release-18.09' into staging-18.09 2018-09-22 21:53:17 +02:00
Elis Hirwing
11aa1784b1 php: Refactor so we can upgrade PHP per platform (#47162)
This way we don't need to disable flags etc by platform and can still
backport new versions to stable for linux even if there's a bug or
something in the darwin build.

(cherry picked from commit 0b82fbc3af)
2018-09-22 20:27:44 +02:00
Elis Hirwing
e7ffc978c7 php71: 7.1.21 -> 7.1.22
Changelog: https://secure.php.net/ChangeLog-7.php#7.1.22
(cherry picked from commit 89b7ad263e)
2018-09-22 20:27:26 +02:00
Elis Hirwing
922f74af6d php: 7.2.8 -> 7.2.10
Changelog 7.2.9: http://php.net/ChangeLog-7.php#7.2.9
Changelog 7.2.10: http://php.net/ChangeLog-7.php#7.2.10

(cherry picked from commit 5a868df967)
2018-09-22 20:27:16 +02:00
Joachim Fasting
2625469949 tor-browser-bundle-bin: 8.0 -> 8.0.1
(cherry picked from commit f2ba1a4284)
2018-09-22 20:19:23 +02:00
Andrew Dunham
ad9e8ea664 libsndfile: Add patch for CVE-2018-13139 (#47160)
(cherry picked from commit fcde178ed5)
2018-09-22 19:34:30 +02:00
Christian Kauhaus
b831700b8f lua: 5.2.3 -> 5.2.4 (#47126)
Lua 5.2.4 is the EOL point release of the 5.2 series.

(cherry picked from commit 6adb944cb6)
2018-09-22 19:11:47 +02:00
xeji
9e4916b84d devpi-client: 3.1.0 -> 4.1.0, fix tests (#47142)
(cherry picked from commit c770699524)
2018-09-22 18:08:37 +02:00
Jean-Paul Calderone
8342f255e1 nixos/tor: Correct "transparent" typo
(cherry picked from commit 57834da7fc)
2018-09-22 15:46:45 +02:00
Joachim Fasting
d25ed2c9f7 electrum: 3.1.3 -> 3.2.3
(cherry picked from commit 1e379f29f7)
2018-09-22 15:46:45 +02:00
Joachim Fasting
2cbfd84d80 tor-browser-bundle-bin: stdenv.shell -> runtimeShell in wrapper
(cherry picked from commit aacf68a635)
2018-09-22 15:46:44 +02:00
Joachim Fasting
f683eaaedc tor-browser-bundle-bin: parameterize icon theme
(cherry picked from commit 546e511edc)
2018-09-22 15:46:43 +02:00
Joachim Fasting
9a7d79c221 tor-browser-bundle-bin: add gsettings-schemas
See https://github.com/NixOS/nixpkgs/issues/46587

(cherry picked from commit 5710ee3bef)
2018-09-22 15:46:42 +02:00
Joachim Fasting
95258ee051 tor-browser-bundle-bin: 7.5.6 -> 8.0
(cherry picked from commit ed5283fcf5)
2018-09-22 15:46:41 +02:00
Joachim Fasting
26152dfaa1 tor: 0.3.3.9 -> 0.3.4.8
(cherry picked from commit 48abf865bc)
2018-09-22 15:46:36 +02:00
Leo R. Lundgren
1e46ead867 open-vm-tools: 10.1.10 -> 10.3.0
(cherry picked from commit bbb30c320e)
2018-09-22 20:19:04 +08:00
xeji
4a620decd3 zathura: 0.4.0 -> 0.4.1 (#47140)
This fixes the synctex-related build failure with texlive 2018
(currently on 18.09).

(cherry picked from commit 9e87b56dd1)
2018-09-22 14:18:09 +02:00
John Ericson
409fd48e64 Merge pull request #47146 from obsidiansystems/fetchzip-cross
fetchzip: Use unzip from buildPackages
2018-09-21 14:52:21 -04:00
John Ericson
2ef1d084c5 Merge pull request #47144 from obsidiansystems/windows-libusb
libusb1: Build everywhere, since MinGW works, for 18.09
2018-09-21 14:28:40 -04:00
Daiderd Jordan
5165dfe9de docker-proxy: mark linux only
Unlike docker (cli only) this probably won't work on darwin.

    github.com/docker/libnetwork/networkdb
    can't load package: package github.com/docker/libnetwork/ns: build constraints exclude all Go files in /private/tmp/nix-build-docker-proxy-7b2b1feb1de4817d522cc372af149ff48d25028e.drv-0/go/src/github.com/docker/libnetwork/ns

/cc ZHF #45961

(cherry picked from commit 33f818198b)
2018-09-21 20:15:55 +02:00
Daiderd Jordan
61ce290c2b dico: mark linux only.
Never built successfully.

    Undefined symbols for architecture x86_64:
      "_rpl_strerror", referenced from:
          _default_print_diag in libgrecs.a(diag.o)
          _grecs_symtab_strerror in libgrecs.a(symtab.o)
          _parse_inet in libgrecs.a(sockaddr.o)
    ld: symbol(s) not found for architecture x86_64

/cc ZHF #45961

(cherry picked from commit 709a828e71)
2018-09-21 20:15:53 +02:00
Daiderd Jordan
488a45d7a2 dolphinEmuMaster: mark broken on darwin
The default version isn't enabled on darwin either, however it did work
at some point.

    /tmp/nix-build-dolphin-emu-2018-08-17.drv-0/source/Source/Core/Core/NetPlayServer.cpp:1180:26: error: unknown type name 'lzo_uint32_t'; did you mean 'lzo_uint32'?
      std::vector<u8> wrkmem(LZO1X_1_MEM_COMPRESS);

/cc ZHF #45961

(cherry picked from commit f6bc086b21)
2018-09-21 20:15:52 +02:00
Bas van Dijk
93506c3a0b haskellPackages.mandrill: fix build for ghc843
(cherry picked from commit 73862bf812)
2018-09-21 19:12:50 +02:00
Christoph Hrdinka
fc3cfe3af5 libretro.mame: 2017-03-02 -> 2018-09-13
Fixes build of the MAME libretro core.

Closes #47137.

Signed-off-by: Christoph Hrdinka <c.github@hrdinka.at>
2018-09-21 18:55:26 +02:00
José Romildo Malaquias
c16b9dacb4 ephoto: add dependency on mesa_noglu.dev (#47136)
(cherry picked from commit e372ab4626)
2018-09-21 18:26:18 +02:00
Michael Raskin
fd6930685c acl2: 8.1.post.2018.09.20 -> 8.1; turns out there is a release
(cherry picked from commit 60b6d5f8a8)
2018-09-21 18:08:05 +02:00
José Romildo Malaquias
edf5020042 rage: add dependency on mesa_noglu.dev (#47132)
(cherry picked from commit 7ac0ecc12b)
2018-09-21 17:41:54 +02:00
Michael Raskin
d10c5b88de acl2: 8.0 -> 8.0.post.2018.09.20; fixes build with fresher SBCL
(cherry picked from commit de764e65f0)
2018-09-21 12:13:49 +02:00
Vladimír Čunát
7eec667f5b Merge branch 'staging-18.09' into release-18.09
The comparison seems very good on Hydra.
2018-09-21 12:02:35 +02:00
Uli Baum
793776b730 nixos/tests/ferm: disable dhcpcd
The test failed in one run on Hydra, logs look like
dhcpcd changed ipv6 routing at just the wrong time.
Disable dhcpcd. It's not needed, the test uses static IPs anyway.

(cherry picked from commit 5e7b7b805a)
2018-09-21 09:59:16 +01:00
Mario Rodas
c1328a1779 bat: install man page (#47099)
(cherry picked from commit ba33eac477)
2018-09-21 10:23:57 +02:00
Uli Baum
711ff4b687 nixos/tests/atd: wait for atd to start
The test failed non-deterministically when an at command was
issued before the atd daemon was running.

(cherry picked from commit 8ffd65b12e)
Backport to 18.09
2018-09-21 10:10:16 +02:00
John Ericson
ef450efb9d Merge pull request #47097 from obsidiansystems/fix-x509-system
haskellPackages.x509-system: Override based on the host, not target platform for 18.09
2018-09-20 21:55:29 -04:00
Graham Christensen
a84a302732 Clarfy the binary reproducibility problems of created=now with dockerTools.buildImage.
(cherry picked from commit 7736337916)
2018-09-20 20:31:52 -04:00
Graham Christensen
9eefd1e846 dockerTools.buildImage: test that created=now makes an unstable date
(cherry picked from commit aedc651903)
2018-09-20 20:31:52 -04:00
Graham Christensen
0fe015a70c dockerTools.buildImage: support impure dates
Because dates are an impurity, by default buildImage will use a static
date of one second past the UNIX Epoch. This can be a bit frustrating
when listing docker images in the CLI:

    $ docker image list
    REPOSITORY   TAG      IMAGE ID       CREATED        SIZE
    hello        latest   08c791c7846e   48 years ago   25.2MB

If you want to trade the purity for a better user experience, you can
set created to now.

    pkgs.dockerTools.buildImage {
      name = "hello";
      tag = "latest";
      created = "now";
      contents = pkgs.hello;

      config.Cmd = [ "/bin/hello" ];
    }

and now the Docker CLI will display a reasonable date and sort the
images as expected:

    $ docker image list
    REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
    hello        latest   de2bf4786de6   About a minute ago   25.2MB

(cherry picked from commit a32d7e0c74)
2018-09-20 20:31:51 -04:00
Austin Seipp
f40d13666e perlPackages.MojoIOLoopForkCall: 0.19 -> 0.20
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 0214f9e25e)
2018-09-20 18:40:58 -05:00
Austin Seipp
b59c61198a perlPackages.Mojolicious: 7.88 -> 8.0
Signed-off-by: Austin Seipp <aseipp@pobox.com>
(cherry picked from commit 08815b9af8)
2018-09-20 18:40:47 -05:00
Austin Seipp
e4b0c7bbd2 libiio: init at 0.15
(cherry picked from commit 0f2b10d1ac)

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2018-09-20 18:39:17 -05:00
Nathan van Doorn
70ecb51beb haskellPackages.sbv: fix location of z3 executable
A lot of the functionality of the z3 library depends on it being able to
find the z3 executable on $PATH. Hard-coding it here means it will never
be unable to find it and z3 doesn't need to pollute $PATH.

(cherry picked from commit c8598daad4)

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2018-09-20 18:32:04 -05:00
roconnor
40d22a78b7 bitcoin: 0.16.2 -> 0.16.3 (#46891)
(cherry picked from commit fab901ddd3)

security: fixes CVE-2018-17144
2018-09-21 00:36:12 +02:00
xeji
a31fc1ca57 liquidwar: fix build (#47064)
- add missing dependencies readline and libtool that used to be
  propagated by guile but aren't anymore
- build with guile 2.0 instead of 1.8

(cherry picked from commit 2c5ae2ae61)
2018-09-21 00:21:31 +02:00
xeji
abdbf1ccd6 pythonPackages.circus: fix build, add meta (#47066)
(cherry picked from commit 9c02914b42)
2018-09-21 00:21:31 +02:00
xeji
af334fe875 nixos/tests/gdk-pixbuf: fix test on i686 (#46916)
Test didn't run because it tried to create a VM with 4096M RAM
but qemu-system-i386 has a hard 2047M memory limit.
- reduce memory to 2047M on i686.
- increase timeout 300s -> 1800s because the tests are much slower
  on i686 and timed out.

(cherry picked from commit e40d850fd1)
2018-09-20 21:30:06 +02:00
Vincent Laporte
355a0377b1 ocaml ≤ 4.05: mark as broken on Aarch64 (#47010)
(cherry picked from commit ce03af969e)
2018-09-20 21:19:00 +02:00
Tim Steinbach
6ec64973bc linux: 4.18.8 -> 4.18.9
(cherry picked from commit 3e4377cf15fb153010ff8d49dcaf131f1dfe0af9)
2018-09-20 09:53:19 -04:00
Tim Steinbach
3f2aa18db8 linux: 4.14.70 -> 4.14.71
(cherry picked from commit 1c620c669655c1aa7a101a7fafba7327a60293c1)
2018-09-20 09:53:13 -04:00
Tim Steinbach
e8f3acd155 linux: 4.9.127 -> 4.9.128
(cherry picked from commit 172e43335443b15ba25989759eb4085bed55542a)
2018-09-20 09:53:02 -04:00
Tim Steinbach
672b375dfc linux: 4.4.156 -> 4.4.157
(cherry picked from commit 9d678ecf88ee0691cd85d348a790802239faaa10)
2018-09-20 09:52:55 -04:00
xeji
d5cbdecd3b nixos/tests/networking.virtual: prevent non-deterministic failure (#46949)
The test failed non-deterministically on Hydra because interfaces
sometimes weren't yet fully cleaned up when the result was checked.

(cherry picked from commit 05659962cd)
2018-09-20 13:21:24 +02:00
Uli Baum
43809bd8d4 gitlab: add missing meta.platforms
(cherry picked from commit 8cd90e40be)
2018-09-20 12:57:46 +02:00
Maximilian Bosch
b89050daac nixos/yabar: fix module & test (#46954)
The `pkgs.yabar` package is relatively old (2016-04) and contains
several issues fixed on master. `yabar-unstable` containsa recent master
build with several fixes and a lot of new features (I use
`yabar-unstable` for some time now and had no issues with it).

In the upstream bugtracker some bugs could be fixed on ArchLinux by
simply installing `yabar-git` (an AUR package which builds a recent
master).

To stabilize the module, the option `programs.yabar.package` now
defaults to `pkgs.yabar-unstable` and yields a warning with several
linked issues that are known on `pkgs.yabar`.

The test has been refactored as well to ensure that `yabar` actually
starts (and avoid non-deterministic random success) and takes a
screenshot of a very minimalistic configuration on IceWM.

Fixes #46899

(cherry picked from commit 8b58a7187c)
2018-09-20 12:48:21 +02:00
R. RyanTM
d4e9c35441 wireguard-tools: 0.0.20180904 -> 0.0.20180918
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
https://repology.org/metapackage/wireguard-tools/versions

(cherry picked from commit 03d8620098)
2018-09-20 08:33:56 +01:00
xeji
175d49256f pythonPackages.nilearn: disable still failing tests (#46918)
A previous attempt to fix tests failing on some machines (#46850)
was unsuccessful, they still failed on Hydra sometimes while
succeeding locally. Revert #46850 and disable these tests instead.

(cherry picked from commit f3a0c8a3aa)
2018-09-19 23:50:53 +02:00
xeji
08c39f8d47 arelle: fix build, use current python3 (#46862)
It was pinned to python34, build failed in dependency
python34Packages.pytest. Use python3(6) instead.

(cherry picked from commit a0c5dd8a09)
2018-09-19 22:19:17 +02:00
Domen Kožar
b8f71e3c79 datadog-agent: remove privateTmp=true
This allows postgres integration to connect to socket in /tmp

(cherry picked from commit 5715aa1951)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-19 18:56:25 +01:00
John Ericson
90e9b8d0f9 Merge pull request #46904 from obsidiansystems/zlib-ios
zlib: Fix iOS cross build for 18.09
2018-09-19 12:49:14 -04:00
Edmund Wu
d3905a3ddf lightdm: fix tmpfiles path (#46886)
(cherry picked from commit 1a15b10ae3)
2018-09-19 16:54:40 +02:00
xeji
3af2eb2072 exempi: fix i686 build (#46884)
failed with `unknown symbol __divmoddi4`.
Standard fix is to use gcc6.

(cherry picked from commit d57c9ec407)
2018-09-19 16:20:35 +02:00
xeji
d5d36e5d2c nixos/tests/hibernate: prevent non-deterministic failure (#46882)
... that occurred mostly on i686. Improve timing.
With this, the failures are no longer reproducible on my machine.

(cherry picked from commit beb8ca2887)
2018-09-19 16:20:35 +02:00
xeji
842b9054e8 nixos/tests/containers-imperative: fix on i686 (#46874)
Test failed on i686 in a sandbox because some packages required
to build the nixos manual for the container were missing. Add them.

(cherry picked from commit daf40ab165)
2018-09-19 16:20:34 +02:00
xeji
2c43ad2498 openxpki: fix build, use current python3Packages (#46860)
Build used python34Packages and failed because python34Packages.pytest
didn't build anymore. Use python3Packages instead.

(cherry picked from commit 012682222f)
2018-09-19 16:17:27 +02:00
xeji
1bc047d46e czmq: 4.0.2 -> 4.1.1 (#46855)
(cherry picked from commit c9969162ab)
2018-09-19 16:17:27 +02:00
xeji
fd0c124cd6 pythonPackages.nilearn: fix test_signal tests (#46850)
These tests failed on some machines, probably due to lower arithmetic
presicion. Reduce required precision from 13 to 8 decimal digits.

(cherry picked from commit 970393c34a)
2018-09-19 16:17:27 +02:00
Jörg Thalheim
09d8df5b21 python3.pkgs.typeguard: fix builds by applying utf-8 locales
ZHF #45960

(cherry picked from commit b224eef108)
2018-09-19 15:14:15 +01:00
Pascal Wittmann
86f9a958cf homebank: 5.1.8 -> 5.2.1 2018-09-19 15:06:55 +02:00
aszlig
d07dbd4490 python/hetzner: 0.8.0 -> 0.8.1
This is only a minor bugfix release and updates the fallback CA root
certificates. For NixOS this is usually not required as the probe paths
will match there, but for non-NixOS users it might be helpful.

Signed-off-by: aszlig <aszlig@nix.build>
(cherry picked from commit 48d1c50f7a)
Reason: This might be relevant for NixOps users on Mac OS X and the
        update won't break anything that wasn't broken before.
2018-09-19 14:32:20 +02:00
Jack Kelly
adb467eeaf dockerTools.pullImage: correct default arch
(cherry picked from commit af5eab6ea6)
2018-09-19 09:28:35 +02:00
John Ericson
b853e73d52 Merge pull request #46873 from obsidiansystems/cross-haskell-ar-flag
haskell infra: Also pass `--with-ar` in cross builds for 18.09
2018-09-18 19:14:17 -04:00
John Ericson
d29a153655 Merge remote-tracking branch 'upstream/release-18.09' into staging-18.09 2018-09-18 16:56:24 -04:00
John Ericson
5b053b4697 Merge pull request #46858 from obsidiansystems/darwin-to-linux-prep
misc pkgs: various cross fixes in preparation for darwin->linux for 18.09
2018-09-18 16:52:36 -04:00
Elis Hirwing
4c4aff3293 nixos/activation: Switch from bash to sh to avoid reading users bash config (#46851)
This fixes #46750. This should also work with non-POSIX shells like in #46042.

(cherry picked from commit 5664e64a01)
2018-09-18 21:48:02 +02:00
Domen Kožar
68c956914b datadog-integrtaions-core: 2018-05-27 -> 2018-09-18
(cherry picked from commit 943871a866)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-18 20:23:44 +01:00
xeji
bc7ec9b651 nixos/release.nix: disable tests.ec2-config (#46830)
This test doesn't work in a sandbox and never succeeded on Hydra.
It simulates an EC2 instance reconfiguring itself at runtime,
which needs network access.

(cherry picked from commit a83d61b708)
2018-09-18 19:27:57 +02:00
Graham Christensen
374d22d68d Merge pull request #46838 from grahamc/check-outputs-in-meta-18.09
stdenv: Validate meta.outputsToInstall
2018-09-18 12:45:01 -04:00
Uli Baum
3d949911c0 gtk-doc: don't build with dblatex by default
make it optional: withDblatex ? false
This removes the dependency of gtk-doc on texlive.

(cherry picked from commit d6ecbe1410)
2018-09-18 18:39:04 +02:00
Robin Gloster
69da311f79 texlive: fix missing synctex header
The automake file was patched but `automake` not run.
Also since the texk/web2c folder is not in autoconfig's
SUBDIRS the autoreconfHook has to be run in there.

Completely fixes #46376

(cherry picked from commit ce6e72a11c)
2018-09-18 18:34:54 +02:00
Graham Christensen
24ad8ada2e elf-header-real: fixup outputsToInstall
(cherry picked from commit 301109a2dd)
2018-09-18 12:28:23 -04:00
Graham Christensen
da5fd39d21 stdenv: Validate meta.outputsToInstall
If meta.outputsToInstall is set to include absent outputs, various
tools break including channel updates and nix-env.

    grahamc@Morbo> nix-env -i -f . -A elf-header-real
    installing 'elf-header'
    error: this derivation has bad 'meta.outputsToInstall'

This patch verifies each value in meta.outputsToInstall is a valid
output. It validates this condition only if checkMeta is true.

    grahamc@Morbo> nix-build . -A elf-header-real
    error: Package ‘elf-header’ in /home/grahamc/projects/nixpkgs/pkgs/development/libraries/elf-header/default.nix:36 has invalid meta.outputsToInstall, refusing to evaluate.

    The package elf-header has set meta.outputsToInstall to: bin

    however elf-header only has the outputs: out

    and is missing the following ouputs:

      - bin

    (use '--show-trace' to show detailed location information)

Note, now the nix-env experience is decidedly worse for users who have
checkMeta set to true:

    grahamc@Morbo> nix-env -i -f . -A elf-header-real; echo $?
    0

though since this is already an issue for unfree, broken, unsupported,
and insecure validity problems I'm not sure we should do something
different here.

(cherry picked from commit b80c9ce4a9)
2018-09-18 12:28:23 -04:00
WilliButz
6ffa699c86 prometheus-json-exporter: add patch to support bool parsing
(cherry picked from commit b59cd2bc17)
2018-09-18 18:22:47 +02:00
WilliButz
ef7921a342 prometheus-json-exporter: 2016-09-13 -> 2017-10-06
(cherry picked from commit b712736283)
2018-09-18 18:22:47 +02:00
Adam Finn Tulinius
81884ce1b4 OVMF: update homepage
Tianocore was apparently moved from SourceForge to GitHub.

(cherry picked from commit 8b8474b1b5)
2018-09-18 13:16:53 +01:00
Clemens Fruhwirth
f339ca57cc mpack: Invoke /run/wrappers/bin/sendmail via execvp
Calling /run/current-sw/bin/sendmail fails under postfix because
setgid bits are not set. Switching the hardcoded path to an invocation
via execvp should cover both cases, when the sendmail binary is
setgid-wrapped and when it is not.

(cherry picked from commit 6d97096d8b)
2018-09-18 10:01:56 +01:00
pacien
083237f061 exim: enable LMTP support
This makes the LMTP transport available by default.
No additional dependency is required.

(cherry picked from commit c3dd421a2e)
2018-09-18 09:51:28 +02:00
José Romildo Malaquias
e97e63bd63 efl: 1.21.0 -> 1.21.1
(cherry picked from commit 5f1c33efce)
2018-09-18 09:43:53 +02:00
John Ericson
4bd5b51c3a Merge pull request #46816 from obsidiansystems/darwin-android-ndk
androidndk: Add Darwin support for 18.09
2018-09-17 23:01:41 -04:00
Yegor Timoshenko
a001c45db2 Merge pull request #46803 from vaibhavsagar/bump-all-cabal-hashes-18.09
all-cabal-hashes: update snapshot to Hackage at 2018-09-12T08:26:27Z
2018-09-17 23:48:28 +00:00
Jörg Thalheim
0ad7d4feb7 heroku: fix homepage
(cherry picked from commit 11dcb770b9)
2018-09-17 22:39:50 +01:00
Bob van der Linden
4ba68be6d5 heroku: set HEROKU_DISABLE_AUTOUPDATE=1
(cherry picked from commit db571e9b78)
2018-09-17 22:39:50 +01:00
Bob van der Linden
c922f7b92a heroku: skip build phase
(cherry picked from commit 1f8dc21c94)
2018-09-17 22:39:49 +01:00
Bob van der Linden
1934cbb6a6 heroku: 5.6.32 -> 7.16.0
(cherry picked from commit 6ab1ee4951)
2018-09-17 22:39:49 +01:00
John Ericson
62dadfbd0e Merge pull request #46796 from obsidiansystems/late-bind-buildHaskellPackages
haskell infra: "late bind" `buildHaskellPackages` for 18.09
2018-09-17 16:21:01 -04:00
Peter Simons
fa90e003a3 all-cabal-hashes: update snapshot to Hackage at 2018-09-12T08:26:27Z
(cherry picked from commit ee6ecb0eaf)
2018-09-17 16:12:28 -04:00
Maximilian Bosch
ff791c8c1d pythonPackages.mahotas: skip test_moments.test_normalize and test_texture.test_haralick3d testcase (#46793)
As stated in #46368, this package seems to have issues with impure tests
(reported in https://github.com/luispedro/mahotas/issues/97).

Unfortunately the `release-18.09` job on Hydra fails at the attempt to
build this package since `test_moments.test_normalize1` and
`test_texture.test_haralick3d` breaks. Until
the root cause is identified, we skip the disabled tests to ensure that
the resulting package is not entirely broken (which can't be confirmed
with `doCheck = false`).

See https://hydra.nixos.org/job/nixos/release-18.09/nixpkgs.python27Packages.mahotas.x86_64-linux
See https://hydra.nixos.org/job/nixos/release-18.09/nixpkgs.python36Packages.mahotas.x86_64-linux
See https://logs.nix.ci/?key=nixos/nixpkgs.46793&attempt_id=b85a638d-dcb0-41d3-ab2a-9616a3bb0175

/cc @xeji @luispedro

(cherry picked from commit 5f2eacccf6)
2018-09-17 21:34:52 +02:00
Uli Baum
347723980a ipfs-migrator: update dependencies in deps.nix
Most dependencies are vendored in the upstream source anyway,
deps.nix just contains the few that are not.
Dependencies were updated manually because go2nix doesn't
work correctly for this package - it produces an empty deps.nix.

(cherry picked from commit f896867ae5)
2018-09-17 19:17:41 +02:00
Uli Baum
96859fd9eb ipfs-migrator: 6 -> 7
New version is required to migrate existing ipfs repos to repo v7.

(cherry picked from commit 6823fe9fb0)
2018-09-17 19:17:41 +02:00
Samuel Dionne-Riel
95b11f3cb9 nixos/tests/installer: grub1 needs /tmp to exist.
(cherry picked from commit b63c539bdc)
2018-09-17 19:13:49 +02:00
Samuel Dionne-Riel
7a811a3dbd grub: grub-0.97-patch-1.15 -> grub-0.97-73
Instead of using Gentoo's patchset, uses Debian's.

Gentoo's doesn't work anymore.

(cherry picked from commit 932c8f4c13)
2018-09-17 19:13:48 +02:00
Samuel Dionne-Riel
8174365dd1 grub: Use gcc6
GCC 7 wasn't kind to grub.

(cherry picked from commit ba09b05702)
2018-09-17 19:13:48 +02:00
aanderse
409abea609 php: add option to enable argon2
(cherry picked from commit e48811f83d)
2018-09-17 19:05:30 +02:00
Danylo Hlynskyi
9d77b35f68 zoom-us: 2.3.128305.0716 -> 2.4.129780.0915, QT downgrade (#46778)
Qt 5.11 was downgraded to 5.9 because of two issues:
- spawns errors like
```
qrc:/qml/SignInWaiting.qml:20:9: QML BusyIndicator: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:26:9: QML Text: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:20:9: QML BusyIndicator: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:26:9: QML Text: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:20:9: QML BusyIndicator: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:26:9: QML Text: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:20:9: QML BusyIndicator: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:26:9: QML Text: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:20:9: QML BusyIndicator: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
qrc:/qml/SignInWaiting.qml:26:9: QML Text: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
```
- Google login doesn't work. It just doesn't start embedded webbrowser

(cherry picked from commit 969a39bd09)
2018-09-17 16:10:10 +02:00
Vladimír Čunát
8b04b63c76 Merge branch 'staging-18.09' into release-18.09 2018-09-17 12:55:39 +02:00
worldofpeace
03f1f355ad nixos/lightdm: use systemd.tmpfiles (#46734)
This also makes logs appear at /var/log/lightdm

(cherry picked from commit 67e9571ba4)
2018-09-17 11:03:20 +02:00
Notkea
48bdc51a72 exim: add optional support for PAM (#46744)
(cherry picked from commit f607f45f33)
2018-09-17 10:50:38 +02:00
Uli Baum
39c585aab1 ostree: fix tests
- Workarounds for https://github.com/ostreedev/ostree/issues/1592
- Disable failing test-gpg-verify-result.test, see
  https://github.com/ostreedev/ostree/issues/1634

(cherry picked from commit d734328f5d)
2018-09-17 09:25:57 +02:00
Vladimír Čunát
1c9013dd34 Merge branch 'release-18.09' into staging-18.09 2018-09-17 09:10:38 +02:00
pacien
026d0c8ae5 exim: parametrise package
This allows the definition of a custom derivation of Exim,
which can be used to enable custom features such as LDAP and PAM support.

The default behaviour remains unchanged (defaulting to pkgs.exim).

(cherry picked from commit d73ed4264f)
2018-09-17 00:42:45 +01:00
Uli Baum
3e10c3705f pythonPackages.dendropy: fix build
Build failed after update to 4.4.0 because the tests are incorrectly
packages in the pypi version.
Switch to upstream github repo, fix tests, disable failing test cases

(cherry picked from commit a66c00d780)
2018-09-16 22:26:14 +01:00
Jörg Thalheim
92f867daae Merge pull request #46525 from Chiiruno/dev/zeronet
nixos/zeronet: Fix TOR permissions, add torAlways option
2018-09-16 22:20:55 +01:00
Matthew Bauer
a86020b885 Revert "Merge pull request #46108 from obsidiansystems/cross-patch-shebangs"
This reverts commit 6877b4c13e, reversing
changes made to 69b6db0ec5.
2018-09-16 15:29:50 -05:00
Pascal Wittmann
50fa8ebf70 tmsu: 0.7.0 -> 0.7.1
(cherry picked from commit c314092164)
2018-09-16 19:21:35 +02:00
Matt McHenry
3c670aad43 elm: patch to widen dependency after hackage update 1b1cb6305c
works around missing dependency 'language-glsl >=0.0.2 && <0.3'

patch from https://github.com/elm/compiler/pull/1784

(cherry picked from commit e78f60475b)
2018-09-16 13:02:43 +02:00
Matt McHenry
9c4e77d4e1 elm: pick up some recent minor updates to 0.19.0
(cherry picked from commit 04d8e267b7)
2018-09-16 13:02:43 +02:00
Bob van der Linden
91792592f0 go: skip flaky os/exec TestExtraFiles
This seems to only happen on i686 on go 1.11. It also happens on
Debian. For more information:

https://github.com/golang/go/issues/25628
(cherry picked from commit 0bf6b440d9)
2018-09-16 11:09:49 +01:00
Vincent Laporte
deebbe43fb ocaml ≤ 4.05: mark as broken on Aarch64
(cherry picked from commit 4f3868b72d)
2018-09-16 09:29:42 +01:00
Vincent Laporte
8a26f19782 pythonPackages.libnacl: fix build on darwin
(cherry picked from commit 5b8b9a08e7)
2018-09-16 09:26:45 +01:00
Peter Simons
bb78d66906 haskell-stm: update overrides that use version 2.4.5.0 to version 2.4.5.1
(cherry picked from commit 53d34305f6)
2018-09-15 21:02:05 -04:00
xeji
a0ba8bba23 pythonPackages.pyodbc: fix build (#46703)
Build with unixODBC instead of libiodbc, see discussion in
https://github.com/mkleehammer/pyodbc/issues/444

(cherry picked from commit 13c500ae16)
2018-09-15 23:14:23 +02:00
John Ericson
ce1cc9dd81 Merge pull request #46713 from obsidiansystems/ios-depoy
ios-depoy: Add missing rsync dep
2018-09-15 15:09:18 -04:00
worldofpeace
3ac0a6c74a rust.section.md: remove nixcrate reference
nixcrate is deprecated

(cherry picked from commit 6dae5de436)
2018-09-15 19:46:35 +01:00
Sarah Brofeldt
a55a1363c3 darcs: unpin ghc (use 8.4.x) version
(cherry picked from commit 0fe0f481c7)
2018-09-15 19:15:00 +02:00
Bob van der Linden
f829dbfaaa Deedle: 1.2.0 -> 1.2.5 (#46702)
(cherry picked from commit 76001b8509)
2018-09-15 16:18:47 +02:00
Bob van der Linden
4aea85a89f Paket: 1.18.2 -> 5.179.1 (#46701)
(cherry picked from commit 6a4b9dfa2f)
2018-09-15 16:03:48 +02:00
Tim Steinbach
0d5e4c9dba sbt: 1.2.1 -> 1.2.3
(cherry picked from commit 795488491c)
2018-09-15 09:57:55 -04:00
Tim Steinbach
53c8df749a linux: 4.18.7 -> 4.18.8
(cherry picked from commit 2193518801)
2018-09-15 09:48:16 -04:00
Tim Steinbach
ed197e7ceb linux: 4.14.69 -> 4.14.70
(cherry picked from commit 1a13067273)
2018-09-15 09:48:07 -04:00
Tim Steinbach
580831c518 linux: 4.9.126 -> 4.9.127
(cherry picked from commit c1d7826a8a)
2018-09-15 09:47:56 -04:00
Tim Steinbach
f071d81afb linux: 4.4.155 -> 4.4.156
(cherry picked from commit b9ca4ac95c)
2018-09-15 09:47:48 -04:00
Jesper Geertsen Jonsson
d36f38a38c Fixes the lldpd service failing to start
Backports a patch that will be included in later upstream versions.
The patch removes a call to /bin/mkdir.

(cherry picked from commit 8a03ec0a32)
2018-09-15 15:38:06 +02:00
volth
38710e66cd libguestfs-appliance: do not build on Hydra
(cherry picked from commit ac52817bd9)
2018-09-15 15:37:16 +02:00
Franz Pletz
2aaebeecdd matrique: init at 250
(cherry picked from commit d79e201851)
2018-09-15 15:28:33 +02:00
Franz Pletz
4010c783ca nheko: 0.4.3 -> 0.5.5
(cherry picked from commit ff8fc5c46c)
2018-09-15 15:16:00 +02:00
Franz Pletz
8ee65ee040 spdlog_1: init 1.1.0
(cherry picked from commit 4d11a37c69)
2018-09-15 15:16:00 +02:00
Franz Pletz
fdd5647264 mtxclient: init at 0.1.0
(cherry picked from commit 8473168bef)
2018-09-15 15:16:00 +02:00
Ben Challenor
ba90765578 jenkins: 2.121.2 -> 2.138.1
(cherry picked from commit 16ce28ed72)
2018-09-15 15:10:44 +02:00
Maximilian Bode
14ccf337ba salt: fix darwin build by specifying dependency on tornado 4
/cc ZHF #45961

(cherry picked from commit 2438ceb5b4)
2018-09-15 12:41:40 +02:00
Maximilian Bode
c96aee40b0 click: 0.3.1 -> 0.3.2
patch necessary to fix "error: the lock file needs to be updated but --frozen was passed to prevent this"

(cherry picked from commit 95c7d8300f)
2018-09-15 11:03:09 +01:00
Peter Simons
4e96a5fc5f cabal2nix: fix (and clean up)override for hpack dependency
(cherry picked from commit 1c5d7ad52e)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-15 10:33:30 +01:00
Peter Simons
52f36810cd haskell-Cabal: keep a copy of the 2.2.x version around in the package set
(cherry picked from commit 838b4fe552)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-15 10:33:29 +01:00
Peter Simons
1c02221724 haskell-cabal2nix: update override for hpack 0.31.0
* pkgs/development/haskell-modules/configuration-common.nix:

(cherry picked from commit e0c081c6ac)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-15 10:33:29 +01:00
Peter Simons
942e0be544 hackage-packages.nix: automatic Haskell package set update
This update was generated by hackage2nix v2.11-9-gb3613cb from Hackage revision
3869e8d541.

(cherry picked from commit 1b1cb6305c)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-15 10:33:29 +01:00
Peter Simons
84d9adf76c LTS Haskell 12.9
(cherry picked from commit 3c1af12544)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-15 10:33:11 +01:00
Will Dietz
373d615198 zsh: 5.6.1 -> 5.6.2
From upstream's NEWS:

> Changes from 5.6.1 to 5.6.2
> ---------------------------
>
> Fix another SIGTTOU case.
>
> Fix SIGWINCH being ignored when zsh is not in the foreground.
>
> The release tarballs are now compressed using xz(1), whereas previously
> both xz(1) and gzip(1) versions were available.  If this gets in your way,
> give us a shout.
>

(cherry picked from commit ef21db9bd3)
2018-09-15 10:54:38 +02:00
Will Dietz
420bfb1405 kmsxx: 2017-10-10 -> 2018-09-10
Various improvements -- if nothing else the 'kmstest'
utility now explains properly when permissions problem :).

(cherry picked from commit 4c1f27a4fc)
2018-09-15 10:53:23 +02:00
Will Dietz
b567484b16 kmscube: 2017-03-19 -> 2018-06-17 (and fix homepage!)
(cherry picked from commit 268d72ec5e)
2018-09-15 10:53:21 +02:00
John Ericson
d1593baffd Merge pull request #46684 from obsidiansystems/elf-header
elf-header: Init at <libc version> for 18.09
2018-09-15 02:01:01 -04:00
Bob van der Linden
b998319b6a Newtonsoft.Json: 6.0.8 -> 11.0.2 (#46679)
(cherry picked from commit fb11065050)
2018-09-15 01:50:27 +02:00
Clemens Fruhwirth
28f3ce334f spl/zfs: 0.7.10 -> 0.7.11
(cherry picked from commit 81082c6c60)
2018-09-15 01:24:43 +02:00
Uli Baum
47d922fc54 qt56.qtwebengine: mark as broken
- no successful build since 2018-04-25
- not used in nixpkgs anymore

(cherry picked from commit 83e5bbfb58)
2018-09-15 00:55:29 +02:00
Uli Baum
fc31a4b195 btanks: mark as broken
no successful hydra build since 2018-03-16, last upstream release 2009.

(cherry picked from commit ba757ffdc9)
2018-09-15 00:55:29 +02:00
Uli Baum
22e09e7007 leksah: mark as broken
no successful build since 2017-08-19

(cherry picked from commit ab5a8b69b0)
2018-09-15 00:55:29 +02:00
Uli Baum
1de40e2160 kippo: mark as broken
no successful hydra build since 2017-12-11

(cherry picked from commit 19d1daedd0)
2018-09-15 00:55:29 +02:00
Uli Baum
7d5f1dad42 frab: mark as broken
No successful hydra build since 2018-02-14.
The build fails in the ruby gem json-1.8.3, which we cannot
mark directly as broken in nixpkgs, so we mark this as broken.

(cherry picked from commit 15fedb51b3)
2018-09-15 00:55:28 +02:00
Uli Baum
380b44f4fe clasp-common-lisp: mark as broken
no successful hydra build since 2018-01-03

(cherry picked from commit 4c2388dee3)
2018-09-15 00:55:28 +02:00
Uli Baum
f04e126009 darwin.maloader: mark as broken
no successfull build in Hydra history back to 2017-08-21

(cherry picked from commit 4795c2a23a)
2018-09-15 00:55:28 +02:00
xeji
0da7a40fca geis: fix build (#46663)
disable format hardening, ignore some compiler warnings

(cherry picked from commit 57ee141696)
2018-09-14 23:59:32 +02:00
Maximilian Bode
b158a30bb1 gitAndTools.grv: fix darwin build by using go 1.9
cf. https://github.com/fsnotify/fsevents/issues/40

/cc ZHF #45961

(cherry picked from commit 6b7cefdc58)
2018-09-14 23:20:16 +02:00
brocking
9fa6a261fb scaleway-cli: 1.14 -> 1.17
(cherry picked from commit 10a6ab75a8)
2018-09-14 16:59:19 +01:00
Michael Raskin
7956bfb364 Merge pull request #46643 from taku0/flashplayer-31.0.0.108
flashplayer: 30.0.0.154 -> 31.0.0.108 [Important security fix]
(cherry picked from commit a9e50ec21a)
2018-09-14 14:34:53 +03:00
Uli Baum
5eb4258a9a pythonPackages.nilearn: fix tests
disable failing tests

(cherry picked from commit d9bdd64f04)
2018-09-14 10:58:22 +02:00
Uli Baum
297a082708 pythonPackages.wordfreq: 2.0 -> 2.2.0, fix build
Previous version didn't build (test failure).
Update to latest, tests use pytest now, disable failing tests.

(cherry picked from commit be12bb81aa)
2018-09-14 10:58:22 +02:00
Uli Baum
837e7c6925 pythonPackages.pytest-rerunfailures: fix build
some tests fail since pytest 3.7.2 -> 3.7.4 update, disable them

(cherry picked from commit 0bda601ee5)
2018-09-14 10:58:21 +02:00
Uli Baum
6678badb1b pythonPackages.flask-pymongo: fix build
add missing dependency: vcversioner

(cherry picked from commit 781eaa1377)
2018-09-14 10:58:21 +02:00
Uli Baum
25f3b47320 pythonPackages.eve: fix build, drop incorrect dependencies
Build failed because of dependency Flask-PyMongo, which actually
isn't a dependency of eve as they have their own flask_pymongo code.

- Drop incorrect dependency flask-pymongo
- Drop redunant dependencies already propageted by flask:
  itsdangerous, werkzeug, jinja2
- Drop dependency markupsafe, not required any more

(cherry picked from commit 9e4b0b795c)
2018-09-14 10:58:21 +02:00
Uli Baum
c2bb2fb269 pythonPackages.daphne: 2.1.0 -> 2.2.2
Update, re-enable all tests on linux, disable tests on darwin.
This fixes the build of pythonPackages.channels

(cherry picked from commit abe97e9446)
2018-09-14 10:58:21 +02:00
Daiderd Jordan
8a93d258cd cargo-web: mark broken on darwin
Looks CoreFoundation related.

    Undefined symbols for architecture x86_64:
      "_CFURLResourceIsReachable", referenced from:
          fsevent_sys::core_foundation::str_path_to_cfstring_ref::h0ea4bd94e2c613f2 in libfsevent_sys-ef30b6879660a6c1.rlib(fsevent_sys-ef30b6879660a6c1.fsevent_sys7-49ce33334334dd3a5c7883bf4070f954.rs.rcgu.o)
    ld: symbol(s) not found for architecture x86_64

/cc ZHF #45961

(cherry picked from commit 327edb4b1d)
2018-09-14 10:44:52 +02:00
Daiderd Jordan
3b0dddd940 csfml: mark linux only
While it's possible to build on darwin, we never had a successful build.

    Undefined symbols for architecture x86_64:
      "sf::microseconds(long long)", referenced from:
          _sfSleep in Sleep.cpp.o

/cc ZHF #45961

(cherry picked from commit 54b4000d54)
2018-09-14 10:44:51 +02:00
Daiderd Jordan
fffefe7901 cernlib: mark broken on darwin
Using gccStdenv makes the build go further, but then it fails with.

    kuipc /private/tmp/nix-build-cernlib-2006.drv-0/2006/src/packlib/kuip/code_kuip/kuipcdf.cdf kuipcdf.c
    Makefile:413: archive/kuipcdf.d: No such file or directory
    make[3]: *** [Makefile:473: kuipcdf.c] Abort trap: 6

/cc ZHF #45961

(cherry picked from commit 68f7e75517)
2018-09-14 10:44:51 +02:00
WilliButz
221ec615f8 prometheus-dovecot-exporter: 0.1.1 -> 0.1.3
(cherry picked from commit 21324ef0e4)
2018-09-14 03:59:38 +02:00
Daiderd Jordan
0b3e0cdab2 ceres-solver: fix darwin build (#46626)
The Basel BUILD file conflicts with the cmake build directory on
case-insensitive filesystems, eg. darwin.

/cc ZHF #45961

(cherry picked from commit 807b0105b4)
2018-09-13 23:44:27 +02:00
Daiderd Jordan
4199eb48fa calaos_installer: fix darwin install (#46629)
On darwin this builds an application instead of a binary.

/cc ZHF #45961

(cherry picked from commit 68956555c1)
2018-09-13 23:40:52 +02:00
Daiderd Jordan
ce1f20f43c cargo-update: fix darwin build (#46625)
On darwin libcurl is also needed.

/cc ZHF #45961

(cherry picked from commit d782c4eba5)
2018-09-13 23:36:54 +02:00
Daiderd Jordan
381c09b225 brlaser: cleanup and mark linux only (#46622)
The test binaries depend use open_memstream which isn't available on
darwin.

    error: use of undeclared identifier 'open_memstream'

/cc ZHF #45961

(cherry picked from commit 04cba83e7f)
2018-09-13 22:48:30 +02:00
R. RyanTM
4293f9f252 google-compute-engine: 20180129 -> 20180510 (#46278)
Semi-automatic update generated by
https://github.com/ryantm/nixpkgs-update tools. This update was made
based on information from
google-compute-engine

(cherry picked from commit 035b2f5250)
2018-09-13 20:09:47 +01:00
Simon Lackerbauer
8b5f311616 atlassian-jira: 7.12.0 -> 7.12.1
(cherry picked from commit a431f3e35d)
2018-09-13 19:59:24 +02:00
Simon Lackerbauer
8ade355e59 atlassian-crowd: 3.1.2 -> 3.2.5
(cherry picked from commit f05e51abed)
2018-09-13 19:59:24 +02:00
Simon Lackerbauer
00ba14dcb7 atlassian-confluence: 6.8.0 -> 6.11.1
(cherry picked from commit 4d962b6dcd)
2018-09-13 19:59:24 +02:00
WilliButz
214e4e57eb grafana: 5.2.3 -> 5.2.4
(cherry picked from commit 68b25008e2)
2018-09-13 19:56:54 +02:00
Eelco Dolstra
51b62e6a8c Revert "aliases: add nixos-rebuild"
This reverts commit 0b124c1e91. We
should really stop adding things that are not packages to
all-packages.nix. For example, having nixos-rebuild.nix in
all-packages.nix causes 'nix-env -qa' to evaluate a NixOS
configuration, which obviously is not good for performance. (We should
probably also remove the 'nixos' attribute from all-packages.nix, but
at least that's a function so nix-env will ignore it.)

(cherry picked from commit f1c978aca0)
2018-09-13 18:27:36 +01:00
Samuel Dionne-Riel
43a15a7f55 Merge pull request #46598 from srhb/kube-1.11-backport-1809
18.09: kubernetes: 1.10.5 -> 1.11.3
2018-09-13 13:06:22 -04:00
Uli Baum
77d9ad1f26 pythonPackages.zodb: fix tests
Tests failed after `persistent` was updated to 4.4.
Apply an upstream patch to fix them.

(cherry picked from commit b54677969b)
2018-09-13 17:02:31 +01:00
Matthew Bauer
d9f1e37ec7 aliases: add nixos-rebuild
Fixes #44135

(cherry picked from commit 0b124c1e91)
2018-09-13 14:46:30 +01:00
Maximilian Bosch
3625ce7a44 tamarin-prover: fix ghc 8.4 build (#46597)
See https://hydra.nixos.org/build/81125645

`tamarin-prover' upstream has a patch to fix GHC 8.4 compilation (and
uses stack lts-12.1 now), but it's not released yet:

a08f6e4007

The build is divided in several derivations, therefore the patch had to
be splitted and rebased for `lib/term', `lib/theory' and `lib/utils' to
ensure that the patch applies properly during the `patchPhase'.

Addresses #45960

(cherry picked from commit 2cfc0bb7ee)
2018-09-13 14:11:52 +02:00
Matthias C. M. Troffaes
755710dbf5 wolfssl: enable all features
(cherry picked from commit 66e6ee73d4)
2018-09-13 12:06:05 +01:00
Jaakko Luttinen
1851422f61 syncthing: 0.14.48 -> 0.14.50
(cherry picked from commit 6400d4b4aa)
2018-09-13 11:47:26 +01:00
xeji
17f538bd06 leo-editor: 5.6 -> 5.7.3, fix build (#46589)
Previous version depended on qt56.qtwebengine which was broken.

(cherry picked from commit eb88142c4b)
2018-09-13 12:18:31 +02:00
Uli Baum
ae181c387a pythonPackages.restview: fix tests
Failed after readme_renderer was updated. Apply an upstream patch.

(cherry picked from commit 6dc57134da)
2018-09-13 11:41:32 +02:00
Uli Baum
c8b1f54b89 pythonPackages.pyfakefs: fix darwin build
One test failed on darwin due to case-insensitive file system,
disable it.

(cherry picked from commit bd02a1931a)
2018-09-13 11:41:32 +02:00
Uli Baum
7e47d1a020 pythonPackages.pydub: fix aarch64 build
one test failed due to rounding errors, disable it

(cherry picked from commit bc036397a3)
2018-09-13 11:41:31 +02:00
Uli Baum
38f6951e38 pythonPackages.pydub: remove obsolete patch
(cherry picked from commit 40c469e56b)
2018-09-13 11:41:31 +02:00
Uli Baum
671205b3e5 pythonPackages.pydub: fix build and tests
- remove obsolete patch that caused build failure
- no tests were run because required data files were missing in pypi
  version; use github version instead

(cherry picked from commit 80ecef8e4b)
2018-09-13 11:41:31 +02:00
Uli Baum
a700d468ba pythonPackages.pyfakefs: 3.4.1 -> 3.4.3, fix build
Update and disable some failing test cases

(cherry picked from commit d2a885a3b5)
2018-09-13 11:41:31 +02:00
Uli Baum
27159aee90 pythonPackages.readme_renderer: fix build
Disable one test case that has failed since last bleach update.

(cherry picked from commit bb1f3422e0)
2018-09-13 11:41:31 +02:00
Uli Baum
2880ca71fa pythonPackages.us: fix build
Required jellyfish==0.5.6 but we have 0.6.1. Loosen requirements.

(cherry picked from commit a7166cdc35)
2018-09-13 11:41:31 +02:00
Johan Thomsen
0c84b5cab7 kubernetes: 1.10.5 -> 1.11.3
Fixed minor issue where kube-addon manager complaints about
/opt/namespace.yaml missing.

Added release notes with reference to Kubernetes 1.11 release notes.

closes #43882

(cherry picked from commit a49f56c3b1)
2018-09-13 11:30:34 +02:00
Domen Kožar
cedae2bbec nixos: datadog-agent: fix systemd support
(cherry picked from commit 595ae18797)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-13 09:12:44 +01:00
Domen Kožar
160eea3602 datadog: add live process monitoring
(cherry picked from commit bef541c569)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-13 09:12:37 +01:00
Domen Kožar
4fce4287ff nixos: remove unneeded api_key from config
(cherry picked from commit 049b3a6cc2)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-13 09:12:30 +01:00
Jörg Thalheim
29f4541a82 pythonPackage.backports-shutil-which: enable tests
(cherry picked from commit 8d4afa5f2e)
2018-09-12 22:08:30 -04:00
Jaakko Luttinen
ed0fc7dc1d pythonPackages.libagent: fix propagatedBuildInputs
(cherry picked from commit d0ce8834ae)
2018-09-12 22:08:30 -04:00
Jaakko Luttinen
91f488c3bf pythonPackage.backports-shutil-which: init at 3.5.1
(cherry picked from commit 80b64a2e04)
2018-09-12 22:08:30 -04:00
Jaakko Luttinen
825f91bdcc pythonPackage.pymsgbox: init at 1.0.6
(cherry picked from commit c9bf7f67b9)
2018-09-12 22:08:30 -04:00
Jaakko Luttinen
ff6e4d0369 pythonPackages.ledgerblue: fix build inputs
(cherry picked from commit 5c9db2f02f)
2018-09-12 22:08:29 -04:00
Jaakko Luttinen
f8c8a23389 pythonPackages.python-u2flib-host: init at 3.0.3
(cherry picked from commit 38e86a8f1e)
2018-09-12 22:08:29 -04:00
Jaakko Luttinen
832dcfdb11 pythonPackages.rlp: fix build
(cherry picked from commit f053daf36c)
2018-09-12 22:08:29 -04:00
Jaakko Luttinen
d72f81ed5a pythonPackages.eth-utils: init at 1.2.0
(cherry picked from commit 9f8e6148c5)
2018-09-12 22:08:29 -04:00
Jaakko Luttinen
923a6b22e6 pythonPackages.eth-typing: init at 1.1.0
(cherry picked from commit 541a13ca0a)
2018-09-12 22:08:29 -04:00
Jaakko Luttinen
735b1e10b4 pythonPackages.eth-hash: init at 0.1.14
(cherry picked from commit c44504410b)
2018-09-12 22:08:29 -04:00
xeji
3e31aa326e pythonPackages.BTrees: fix build (#46588)
a test case failed since the update to 4.5.1, disable it

(cherry picked from commit 68b7de9e2e)
2018-09-13 02:33:04 +02:00
Uli Baum
b55e3054b9 mitmproxy: 3.0.4 -> 4.0.4, fix tests
- add missing checkInputs
- apply upstream patch to fix some tests that failed due to
  expired test ssl certs
- re-enable a previously disabled test case

(cherry picked from commit d225a91b7c)
2018-09-13 02:19:56 +02:00
Daiderd Jordan
9c9c04f918 asymptote: mark broken on darwin
It only builds with gc-7.6.0 on darwin for some reason.

/cc ZHF #45961

(cherry picked from commit 9fc6f1123d)
2018-09-13 00:07:09 +02:00
Daiderd Jordan
642d69b527 aws-okta: mark broken on darwin
Could be caused by our older 10.10.5 CoreFoundation.

    # github.com/segmentio/aws-okta/vendor/github.com/keybase/go-keychain
    go/src/github.com/segmentio/aws-okta/vendor/github.com/keybase/go-keychain/corefoundation_go110.go:35:33: cannot use nil as type _Ctype_CFAllocatorRef in argument to _Cfunc_CFDataCreate
    go/src/github.com/segmentio/aws-okta/vendor/github.com/keybase/go-keychain/corefoundation_go110.go:61: cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal
    go/src/github.com/segmentio/aws-okta/vendor/github.com/keybase/go-keychain/corefoundation_go110.go:98:41: cannot use nil as type _Ctype_CFAllocatorRef in argument to _Cfunc_CFStringCreateWithBytes
    go/src/github.com/segmentio/aws-okta/vendor/github.com/keybase/go-keychain/corefoundation_go110.go:133: cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal

/cc ZHF #45961

(cherry picked from commit b814881394)
2018-09-13 00:07:05 +02:00
Daiderd Jordan
91da313b87 litecoin: add missing framework and mark broken on darwin
In file included from qt/bitcoin.cpp:9:
    ./qt/bitcoingui.h:14:10: fatal error: 'QLabel' file not found
    #include <QLabel>
             ^~~~~~~~
    1 error generated.

/cc ZHF #45961

(cherry picked from commit 0dff3d5c73)
2018-09-13 00:07:01 +02:00
Daiderd Jordan
70f2abee3d ethsign: mark broken on darwin
Could be caused by our older 10.10.5 CoreFoundation.

    go/src/github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:51:216:
    cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal
    go/src/github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:162:47:
    cannot use nil as type _Ctype_CFAllocatorRef in argument to
    _Cfunc_CFStringCreateWithCStringNoCopy
    go/src/github.com/ethereum/go-ethereum/vendor/github.com/rjeczalik/notify/watcher_fsevents_cgo.go:163:225:
    cannot use nil as type _Ctype_CFAllocatorRef in argument to func literal

/cc ZHF #45961

(cherry picked from commit e7ecf593e2)
2018-09-13 00:06:57 +02:00
Daiderd Jordan
3c2e66d746 bitcoin-xt: mark broken on darwin
/cc ZHF #45961

(cherry picked from commit 8f6ede967e)
2018-09-13 00:06:53 +02:00
Daiderd Jordan
72830db1a0 bitcoin-unlimited: mark broken on darwin
/cc ZHF #45961

(cherry picked from commit eaff0b74c0)
2018-09-13 00:06:49 +02:00
Daiderd Jordan
509e79eec5 bitcoin-classic: mark broken on darwin
Last successful build https://hydra.nixos.org/build/74552951.

/cc ZHF #45961

(cherry picked from commit d990bae6ef)
2018-09-13 00:06:44 +02:00
Daiderd Jordan
a95c041252 bitcoin-abc: mark broken on darwin
Last successful build https://hydra.nixos.org/build/74552872.

/cc ZHF #45961

(cherry picked from commit cf9d1a6d30)
2018-09-13 00:06:41 +02:00
Daiderd Jordan
7b82c4f182 atlas: mark broken on darwin
Started to fail since 3.10.3.

    /private/tmp/nix-build-atlas-3.10.3.drv-0/ATLAS/build/bin/ATLrun.sh: line 4: 31119 Segmentation fault: 11  $atldir/$*
    make[3]: *** [Makefile:1695: ssanity_test] Error 139

/cc ZHF #45961

(cherry picked from commit f1542f612b)
2018-09-13 00:06:37 +02:00
Daiderd Jordan
93f4bb6a62 asio: mark broken on darwin
Started to fail since 1.12.1.

    Undefined symbols for architecture x86_64:
      "boost::chrono::steady_clock::now()", referenced from:
          pinger::start_send() in ping.o
          asio::detail::timer_queue<asio::detail::chrono_time_traits<boost::chrono::steady_clock, asio::wait_traits<boost::chrono::steady_clock> > >::wait_duration_msec(long) const in ping.o
          asio::detail::timer_queue<asio::detail::chrono_time_traits<boost::chrono::steady_clock, asio::wait_traits<boost::chrono::steady_clock> > >::wait_duration_usec(long) const in ping.o
          asio::detail::timer_queue<asio::detail::chrono_time_traits<boost::chrono::steady_clock, asio::wait_traits<boost::chrono::steady_clock> > >::get_ready_timers(asio::detail::op_queue<asio::detail::scheduler_operation>&) in ping.o
          pinger::handle_receive(unsigned long) in p

/cc ZHF #45961

(cherry picked from commit 80a4e48e45)
2018-09-13 00:06:34 +02:00
Daiderd Jordan
5bf79832e6 alock: mark linux only
The darwin build fails and it's probably not particularly useful there.

    utils.c:33:19: error: use of undeclared identifier 'CLOCK_MONOTONIC'
        clock_gettime(CLOCK_MONOTONIC, &t);

/cc ZHF #45961

(cherry picked from commit 139eb11a6d)
2018-09-13 00:06:24 +02:00
Uli Baum
7d5b1d14c6 banshee: remove
- was broken since June 2016 because it depends on `boo`
- no visible attempts to fix in over 2 years

(cherry picked from commit 2953d4c994)
2018-09-12 23:26:23 +02:00
Uli Baum
e586eda60d nant: remove
- our version is from 2015
- it doesn't build
- upstream project is dead, last release 2012, last commit Oct 2016.
- used by only 1 nixpkgs package: `boo`, marked broken since 2016.

(cherry picked from commit dc84de59d1)
2018-09-12 23:26:23 +02:00
Uli Baum
18e9a5c8e4 boo: remove, broken since Jun 2016
marked broken in June 2016, no visible attempt to fix it,
so let's get rid of it

(cherry picked from commit 5a166ffd47)
2018-09-12 23:26:23 +02:00
zimbatm
770ee0b279 vault: 0.10.4 -> 0.11.1
changelog: https://github.com/hashicorp/vault/blob/v0.11.1/CHANGELOG.md
(cherry picked from commit 7880cd6752)
2018-09-12 23:12:34 +02:00
worldofpeace
362498c6fe eolie: 0.9.35 -> 0.9.36
(cherry picked from commit 508e353fd4)
2018-09-12 21:30:23 +01:00
Josef Kemetmüller
84361ab3e1 scs: Fix darwin build
Additionally we make the unit-test deterministic by specifying a seed
instead of using something random.

(cherry picked from commit d726c0ff1d)
2018-09-12 21:25:52 +02:00
Robin Gloster
088e1bdf7d grafana module: allow path for extraConfig vals
(cherry picked from commit 929f71d381)
2018-09-12 14:22:21 +02:00
Robin Gloster
1ffb47ad48 acme module: fix self-signed cert with openssl 1.1
(cherry picked from commit 515a7aa452)
2018-09-12 13:41:50 +02:00
Michael Raskin
32c008a946 lispPackages.quicklisp: 2018-04-30 -> 2018-08-31 ; regenerate packages
Added a wrapper package that creates symlinks to OpenSSL libraries with
the actual versions, because we have 1.0.2 with .so-suffix .1.0.0 and
cl-async-ssl is unhappy because of that.

I continue to dislike cl-postgres and simple-date upstream packaging.

This fixes cl-libuv and dependent packages.

Progress on #45960

(cherry picked from commit 5048b0d1f9)
2018-09-12 11:59:56 +03:00
Christoph Hrdinka
8e20e5ee35 zsh: 5.6 -> 5.6.1
Signed-off-by: Christoph Hrdinka <c.github@hrdinka.at>
2018-09-12 09:35:55 +02:00
Elis Hirwing
8468a4bfc7 nano: 2.9.8 -> 3.0
Changelog: http://lists.gnu.org/archive/html/info-nano/2018-09/msg00000.html

Also updated the nix highlighting for nano

(cherry picked from commit b47c5870f4)
2018-09-11 20:28:07 -04:00
Matthew Bauer
7bc168e4b5 Merge pull request #46518 from srhb/revert-build-host-target-platform-deprecation-1809
Revert build host target platform deprecation on release-18.09
2018-09-11 18:55:05 -05:00
Maximilian Bosch
f95ddad29f python3Packages.pyowm: fix python3 build (#46549)
See https://hydra.nixos.org/build/80714323

Version 2.9 requires `geojson==2.x'. To allow 2.4, the constraint
required some patching using `substituteInPlace'.

Addresses #45960

(cherry picked from commit a25dcb6607)
2018-09-12 01:24:15 +02:00
Daiderd Jordan
40e4aee577 aria2: fix darwin build (#46548)
Not released yet, see https://github.com/aria2/aria2/issues/1198

/cc ZHF #45961

(cherry picked from commit 2164e39eaa)
2018-09-12 00:11:53 +02:00
John Ericson
3ef52f02a9 Merge pull request #46546 from obsidiansystems/glibc-configureFlags-cleanup
glibc: Use lib.enableFeature and friends for 18.09
2018-09-11 17:51:08 -04:00
Maximilian Bosch
f0972029de pants: fix build (#46545)
See https://hydra.nixos.org/build/80727495

`pants' works with requests==2.19 to build successfully and `nixpkgs' currently uses `requests==2.19.1`.
Patching the version constraint in `setup.py' accordingly fixes the problem.

Addresses #45960

(cherry picked from commit 46d1166b80)
2018-09-11 23:22:50 +02:00
Florian Bruhin
23200f56e8 qutebrowser: Fix patching of standarddir.py
The original patch was broken since a85e19a5e1 because an `APPNAME` variable was introduced there.

(cherry picked from commit 84a0dc8191)
2018-09-11 23:09:56 +02:00
John Ericson
6877b4c13e Merge pull request #46108 from obsidiansystems/cross-patch-shebangs
patch-shebangs: respect cross compilation for 18.09
2018-09-11 16:41:04 -04:00
Matthew Bauer
e9b63007e5 patch-shebangs: respect cross compilation
This hopefully makes patchShebangs respect cross compilation. It
introduces the concept of the HOST_PATH. Nothing is ever executed on
it but instead used as a way to get the proper path using ‘command
-v’. Needs more testing.

/cc @ericson2314 @dtzwill

Fixes #33956
Fixes #21138

(Modified backport of f06942327a. See
previous commit to understand the differences between this and the
original.)
2018-09-11 16:16:09 -04:00
John Ericson
c72c865560 stdenv: Define HOST_PATH more loosely when strictDeps isn't set
This ensures this change is safe last minute for 18.09. Master won't
have this.
2018-09-11 16:15:19 -04:00
Daiderd Jordan
03c8cbe813 perl-TestRunCmdLine: disable tests on darwin
/cc ZHF #45961

(cherry picked from commit f61279e45b)
2018-09-11 22:05:25 +02:00
Mario Rodas
81969394b4 nodejs-6_x: 6.14.3 -> 6.14.4
(cherry picked from commit bfdfb73ff1)
2018-09-11 14:26:31 -04:00
Mario Rodas
ad5046d8b8 nodejs: use https for downloading
(cherry picked from commit 36b5ffa40b)
2018-09-11 14:26:31 -04:00
Samuel Dionne-Riel
fce2d40051 qt5.qtwebkit: Fixes modules src being subtly broken.
b785d4813e introduced breakage in Qt
modules for 5.6 and 5.9, especially visible is Qt Webkit.

This was manifested by having a non-sensical build log where it is using
the top-level `src` attribute as source instead of Qt Webkit's own
source.

Were it not for the `src` top-level attribute (which is a legit
package), the error would have been made obvious by passing `null` to
`src`.

This partily reverts newly introduced way `src` can be passed to a
qtModule, instead relying on extending the `srcs` attrset.

For ZHF #45960

(cherry picked from commit cb380983ed)
2018-09-11 11:05:16 -04:00
Okina Matara
3091eb6537 nixos/zeronet: Fix TOR permissions, add torAlways option
(cherry picked from commit 9c97f37761)
Reason: Fixing an important zeronet feature for a new release.
2018-09-11 09:27:05 -05:00
Daiderd Jordan
bd1c922388 perl-Mouse: fix darwin build
/cc ZHF #45961

(cherry picked from commit 5e8fd8792b)
2018-09-11 09:59:34 -04:00
Daiderd Jordan
676841e61d perl-Module-Build-XSUtil: fix darwin build
While building the tests LD gets called with -mmacosx-version-min=10.10
which is a CC flag, causing the build to fail with LD=ld.  This is
pretty common with perl packages.

/cc ZHF #45961

(cherry picked from commit dc6b36b994)
2018-09-11 09:59:31 -04:00
Sarah Brofeldt
bf7c2e35f1 nixos/doc: Add stable pre-release warning (#46473)
(cherry picked from commit 66f6105978)
2018-09-11 15:42:49 +02:00
Domen Kožar
1c852070e8 datadog-agent: 6.1.4 -> 6.4.2
(cherry picked from commit 2c18d48c0e)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-11 13:17:41 +01:00
Domen Kožar
d25939132f dep2nix: fix eval (no IFD)
(cherry picked from commit e8621a45a2)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-11 13:17:23 +01:00
Domen Kožar
b2fc0f0234 dep2nix: 0.0.1 -> 0.0.2
(cherry picked from commit 35df0f7f0c)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-11 13:17:10 +01:00
Sarah Brofeldt
ea4d36a2e5 Revert "top-level: Deprecate top-level {build,host,target}Platform"
This reverts commit e51f736076.
2018-09-11 12:07:22 +02:00
Erik Arvstedt
c1713a14db networking.hostId: fix cmd in description
1. Simplify the command by reading directly from /etc/machine-id which
is already a random, lower-case hex string
2. Previously, the command output could be too short because of missing
leading digits. This is now fixed.

(cherry picked from commit 7a42623c23)
2018-09-11 10:32:18 +01:00
Sarah Brofeldt
c36aedb1c8 Merge pull request #46503 from ento/aws-vault-4-3-0
aws-vault: 4.1.0 -> 4.3.0, pass linker flag for specifying app version
(cherry picked from commit 5984aae9a7)
2018-09-11 11:30:38 +02:00
Wael M. Nasreddine
f461c933a1 bazel: 0.16.0 -> 0.16.1
(cherry picked from commit d24f81b825)
2018-09-11 11:27:36 +02:00
xeji
dd13aedbdb pythonPackages.pytestflakes: fix build (#46500)
- disable a failing test case that looks broken
- remove pytestcache depencency that was dropped upstream

(cherry picked from commit f201f8c3fd)
2018-09-11 11:16:03 +02:00
Clemens Fruhwirth
766d15ddd9 spl/zfs: 0.7.9 -> 0.7.10
(cherry picked from commit 05f122c561)
2018-09-11 07:07:44 +02:00
José Romildo Malaquias
f02eb7d337 lxqt: mv contents of base, core and optional to parent directory (#46484)
(cherry picked from commit 2047e28c7f)

a noop change, backported for easier maintenance
2018-09-10 23:01:21 +02:00
Maximilian Bosch
7666310ebf pythonPackages.mahotas: fix build, move expression
See https://hydra.nixos.org/build/80828287

Moves `mahotas` out of `python-packages.nix` into its own file and fixes
broken test cases by skipping them using nosetest's `@nottest`
annotation.

These tests broke from time to time in a sandbox and are therefore
considered impure.

Addresses #45960

(cherry picked from commit ee897b64ff)
2018-09-10 22:59:10 +02:00
Maximilian Bosch
cde1edebd6 openbsm: fix linux build
See https://hydra.nixos.org/build/80705916

To fix the linux build the patch `bsm-add-audit_token_to_pid.patch`
mustn't be applied during Linux builds, only for Darwin as it's an
Apple-only fix.

The compiler failure occurred because `audit_token_t` is part of
`<mach/mach.h>` which is not available on Linux.

Addresses #45960

(cherry picked from commit 080b2fdd8c)
2018-09-10 22:58:46 +02:00
Michele Guerini Rocco
d164d7eb89 antimony: 0.9.3 -> 2018-10-17 (#46486)
(cherry picked from commit fd7e69be1c)
2018-09-10 22:17:36 +02:00
volth
1b0c262aad perlPackages: ZHF 18.09 (#46493)
(cherry picked from commit 50789a0b19)
2018-09-10 22:14:34 +02:00
Daiderd Jordan
a1f2a67850 bullet: fix darwin build
The examples fail with an opengl related issue:

    Undefined symbols for architecture x86_64:
      "SimpleOpenGL3App::SimpleOpenGL3App(char const*, int, int, bool)", referenced from:
          _main in main_opengl_single_example.o
      "_useShadowMap", referenced from:
          GL_ShapeDrawer::drawScene(btDiscreteDynamicsWorld const*, bool, int) in GL_ShapeDrawer.o
    ld: symbol(s) not found for architecture x86_64

And the tests need an extra dependencly, possibley related to
https://github.com/bulletphysics/bullet3/issues/819

    ld: library not found for -lBussIK

/cc ZHF #45961

(cherry picked from commit 939debc7a4)
2018-09-10 21:35:26 +02:00
zimbatm
57268a967f govendor: init at 1.0.9 (#46485)
(cherry picked from commit 404b224529)
2018-09-10 17:48:34 +01:00
Urban Skudnik
0be60455c8 hcloud: Add autocomplete support for bash and zsh
Currently one would need to manually run the command to generate
completion and insert it into `.bashrc`/`.zshrc` to get the
autocompletion to work. This patch will automatically generate
both docs and save them to correct position so it should continue
to work even if user changes the shell at a later stage.

(cherry picked from commit d23c357f1c)
2018-09-10 15:20:10 +01:00
Linus Heckemann
12703a0c06 earlyoom: fix version number (#46481)
earlyoom's Makefile attempts to detect the current version using git,
but we don't keep .git in its source, so this fails. We can however
set the VERSION environment variable to override this, as we now do.

(cherry picked from commit ac679e721f)
2018-09-10 13:23:28 +01:00
Arian van Putten
23bbe26bde safe-money: Fix dependencies for safe-money-*
They all depend on safe-money-0.7, but hackage2nix made them incorrectly
depend on safe-money-0.6

We should be able to remove this 'hack' as soon as the new Stackage LTS
comes out, as safe-money-0.7 will then be the default version.
2018-09-10 13:14:53 +01:00
Shea Levy
406e0a6dca Merge branch 'haskell-updates-18.09' into release-18.09 2018-09-10 07:48:30 -04:00
Maximilian Bosch
b7be61673c pythonmagick: fix build (#46469)
The original build broke with the following linker issue:

```
  CXXLD    _PythonMagick.la
/nix/store/h0lbngpv6ln56hjj59i6l77vxq25flbz-binutils-2.30/bin/ld: cannot find -l-L/nix/store/4gh6ynzsd5ndx37hmkl62xa8z30k43y1-imagemagick-6.9.9-34/lib
collect2: error: ld returned 1 exit status
```

This happens since `BOOST_PYTHON_LIB` wasn't set properly, however
`_PythonMagick.la` was linked with `-l$(BOOST_PYTHON_LIB)
$(MAGICK_LIBS)`. With an empty `BOOST_PYTHON_LIB` the linker got
confused.

To work around this, the `boost` library directory needs to be specified
explicitly. To ensure that the changes take effect, the original
`configure` script shipped with `$src` needs to be removed and recreated
using the `autoreconfHook`.

Additionally the `imagemagick` license (https://spdx.org/licenses/ImageMagick.html)
needs to be added to `lib/licenses.nix` to document the proper license
of `pythonmagick` in the meta section.

(cherry picked from commit 6d6cbd316d)
2018-09-10 12:00:38 +02:00
Amine Chikhaoui
ee22050f05 ZHF 18.09: fix crypsetup build with python enabled. (#46468)
Fixes https://hydra.nixos.org/build/81028247.

(cherry picked from commit 00064c21cc)
2018-09-10 11:54:23 +02:00
Eelco Dolstra
821c67d51b Merge pull request #46401 from matthewbauer/revert-nix-minver
[18.09] set min version back to 1.11
2018-09-10 09:50:17 +02:00
Will Dietz
93e78c721c busybox: 1.29.2 -> 1.29.3 (#46458)
(cherry picked from commit 30500d23bc)
2018-09-10 08:44:21 +02:00
Samuel Dionne-Riel
55c8b29523 dbeaver: 5.1.6 -> 5.2.0 (#46457)
(cherry picked from commit cf3795a25e)
2018-09-10 08:20:31 +02:00
Tim Steinbach
f7f88636a2 linux: 4.18.6 -> 4.18.7
(cherry picked from commit ea765b2e2b)
2018-09-09 19:35:03 -04:00
Tim Steinbach
caeb83bdd3 linux: 4.14.68 -> 4.14.69
(cherry picked from commit 276b2ab892)
2018-09-09 19:34:53 -04:00
Tim Steinbach
f4b248e4b0 linux: 4.9.125 -> 4.9.126
(cherry picked from commit d40f4159ed)
2018-09-09 19:34:41 -04:00
Tim Steinbach
db9849f1c3 linux: 4.4.154 -> 4.4.155
(cherry picked from commit 13728ed2b5)
2018-09-09 19:34:31 -04:00
Josef Kemetmüller
9cb6025551 pythonPackages.joblib: Disable flaky test (#46439)
The test `test_nested_parallelism_limit` fails on darwin.

(cherry picked from commit 6f891ff66e)
2018-09-09 22:42:34 +02:00
Josef Kemetmüller
3143d6bd2e pythonPackages.fiona: Fix darwin build (#46435)
(cherry picked from commit 5e0c468737)
2018-09-09 22:41:12 +02:00
Josef Kemetmüller
bbfa5d87dc pythonPackages.libusb1: Disable flaky test
(cherry picked from commit b633fc4fb4)
2018-09-09 22:25:31 +02:00
Josef Kemetmüller
43387f069a pythonPackages.libusb1: Fix darwin build
(cherry picked from commit 063aa389df)
2018-09-09 22:25:31 +02:00
Josef Kemetmüller
b682a408fd castxml: Fix build (#46442)
(cherry picked from commit 4ab5625c95)
2018-09-09 22:19:01 +02:00
Josef Kemetmüller
ff81358447 pythonPackages.flask_ldap_login: Disable on python3
(cherry picked from commit b667a76eac)
2018-09-09 22:01:40 +02:00
Josef Kemetmüller
6ef71d09b8 pythonPackages.flask_ldap_login: 0.3.0 -> 0.3.4
(cherry picked from commit 25f8753bf4)
2018-09-09 22:01:40 +02:00
Josef Kemetmüller
3925e7486f pythonPackages.flask_ldap_login: Fix build
(cherry picked from commit d4e89680d2)
2018-09-09 22:01:40 +02:00
Josef Kemetmüller
34059be473 pythonPackages.cozy: Disable on python2 (#46436)
Cozy does not support python2.

(cherry picked from commit a4b040e69f)
2018-09-09 21:34:20 +02:00
Janne Heß
a38d70855b treewide: Use http/https for homepages
(cherry picked from commit 9ef77854f7)
2018-09-09 15:51:08 +01:00
Tad Fisher
3dc8898536 vkquake: fix build
(cherry picked from commit b19cdc31c1)
2018-09-09 15:48:49 +01:00
Maximilian Bosch
5170f7219f pdf2htmlEX: mark as broken
See https://hydra.nixos.org/build/81003667

The build is currently broken on Hydra due to the following error:

```
CairoFontEngine.cc:681:17: error: 'void Object::free()' is private within this context
```

This issue is was also reported in AUR (https://aur.archlinux.org/packages/pdf2htmlex/)
and in the upstream issue tracker (https://github.com/coolwanglu/pdf2htmlEX/issues/753) with
no answer until now.

The current README.md states that the project is no longer under active
development and it seems as there are currently no active maintainers
who could fix this:

* 5d0a2239fc
* https://github.com/coolwanglu/pdf2htmlEX/issues/772

(cherry picked from commit de6544b50e)
2018-09-09 15:46:54 +01:00
José Romildo Malaquias
fa3cc6bf23 xsettingsd: git-2015-06-14 -> 1.0.0
- Update to version 1.0.0
- Install man pages
- Fix license
- Add maintainer

(cherry picked from commit 68102e793d)
2018-09-09 14:17:35 +01:00
Jörg Thalheim
7490ec9ed3 doc/vim: improve plugin documentation
(cherry picked from commit 97acac9a81)
2018-09-09 14:15:52 +01:00
zimbatm
6142a2ef4b strongswan: set the right dir for TLS CA cert
This fixes an issue where the strongswan NM client is not able to
connect to a VPN. By default it tries to load the trust CA from
/usr/share/ca-certificates which doesn't exist in NixOS and most modern
distros.

See debian-related issue:
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835095

(cherry picked from commit 71e6dfdaea)
2018-09-09 14:14:29 +01:00
Sarah Brofeldt
0a46d6f6b9 Merge pull request #46419 from srhb/backport-nix21-perl-bindings
nix.perl-bindings: Fix build in 18.09
2018-09-09 14:59:23 +02:00
Daniël de Kok
7d404b9103 cgit: use full path of groff in man2html
groff may not be installed system-wide or may be outside cgit's path
(e.g. when running cgit using uwsgi). As a result, the man2html filter
fails. Replace groff by its full path in man2html.

(cherry picked from commit bbcf5eb130)
2018-09-09 13:56:44 +01:00
Daiderd Jordan
b68bfbceab altcoins.btc1: fix darwin build (#46398)
Only hexdump was needed from utillinux which is also available on darwin
through the unixtools meta package.

(cherry picked from commit 4e282e295f)
2018-09-09 14:54:42 +02:00
Eelco Dolstra
ddd3d98ccc nix.perl-bindings: Fix build
(cherry picked from commit b06ad6199f)
2018-09-09 14:52:35 +02:00
Maximilian Bode
32a4cbc756 pythonPackages.tifffile: fix python 2 build (#46415)
(cherry picked from commit c020a59ccd)
2018-09-09 12:14:04 +02:00
Maximilian Bode
50bc216165 pythonPackages.CDDB: fix darwin build (#46412)
(cherry picked from commit 5b1b4adb2a)
2018-09-09 12:11:13 +02:00
Jan Malakhovski
69b6db0ec5 gpgme: use default texinfo
(cherry picked from commit 53c9efe9e5)
2018-09-09 12:05:37 +02:00
Jan Malakhovski
4ce4c247db git: use default texinfo
(cherry picked from commit 7705c76c49)
2018-09-09 12:05:37 +02:00
Samuel Dionne-Riel
97916acf08 texlive: Adds patch for missing synctex header. (#46376)
This seems like a known issue as other distributions (ArchLinux here)
have patches fixing the issue.

This hopefully fixes more than one dependant builds for ZHF 18.09.

(cherry picked from commit 1ac912bf1b)
2018-09-09 11:39:43 +02:00
Uli Baum
33e2a6dc9f Merge branch 'release-18.09' into staging-18.09 2018-09-09 11:39:09 +02:00
Maximilian Bode
17456d8082 pythonPackages.django-raster: fix build (#46413)
(cherry picked from commit dfcf07d9d3)
2018-09-09 11:35:29 +02:00
Yannik Sander
546fe710b1 build with pythonPackages
(cherry picked from commit 1245621497)
2018-09-08 18:18:31 -04:00
Matthew Bauer
d3a113eb3f rpcbind: remove placeholder 2018-09-08 17:03:49 -05:00
Matthew Bauer
ed948341ce Revert "Merge pull request #37693 from jtojnar/min-nix-two"
This reverts commit 4caab41c1b, reversing
changes made to 11dab7bd4a.
2018-09-08 17:02:10 -05:00
Matthew Bauer
f4bfc63727 Revert "nfs-utils: simplify code using placeholders"
This reverts commit 037d27ed00.
2018-09-08 17:00:33 -05:00
Matthew Bauer
02bb97e5bb Revert "nixos docs: add release notes for nix 2.0 requiremnt bump"
This reverts commit 18f9539655.
2018-09-08 16:57:46 -05:00
Matthew Bauer
891b025fc2 Revert "Nix minimal version: 1.11 -> 2.0"
This reverts commit 7d1968c0e3.
2018-09-08 16:56:57 -05:00
Matthew Bauer
01f75ae0fd xdg/mime.nix: ensure $out/share/mime/packages exists
For update-mime-database to work, you must have to have some mime
packages installed. In some DEs like XFCE this is not guaranteed to
happen. In that case just skip the update-mime-database call.

Fixes #46162
2018-09-08 16:55:48 -05:00
xeji
3ecacb1cb6 pythonPackages.persistent: fix build (#46364)
Documentation-related tests failed, the docs didn't build correctly
because of missing dependencies sphinx and manuel. Add them.

(cherry picked from commit 113f4d7b44)
2018-09-08 21:35:58 +02:00
Maximilian Bode
52a9286bcb pythonPackages.confluent-kafka: fix build (#46380)
cc #45960

(cherry picked from commit 73e75a7d16)
2018-09-08 21:32:36 +02:00
xeji
0817f94f76 cryptsetup: enable and fix tests (#46346)
Some tests use O_DIRECT which is filesystem dependent and fails in a
sandbox as well as on some filesystems without sandboxing.
Patch out O_DIRECT and disable the 4 test cases that still fail in a
sandbox. See discussion in #46151.

(cherry picked from commit 8c6cf3de3d)
2018-09-08 21:24:50 +02:00
Michael Raskin
f890192b9c Merge #46348: chromium: 68.0.3440.106 -> 69.0.3497.81
(cherry picked from commit 7c69ae6259)
2018-09-08 20:10:59 +02:00
Maximilian Bosch
a05c49a22f jbake: fix sandbox build (#46363)
See https://hydra.nixos.org/build/80999410

Without a sandbox the `checkPhase` breaks with the following error:

```
/nix/store/i6vl5lwlz5jbkg4r6p340dwmj6fha3xq-stdenv-linux/setup: bin/jbake: /usr/bin/env: bad interpreter: No such file or directory
jbake did not return correct version
```

Running `patchShebangs` before fixes the issue.

Addresses #45960

(cherry picked from commit 6960a96a0c)
2018-09-08 15:21:30 +02:00
Graham Christensen
07cfc2fa56 Merge pull request #46343 from obsidiansystems/fix-46320
nixpkgs module: Fix defaulting of `localSystem` and `system` for 18.09
2018-09-08 09:16:56 -04:00
Tad Fisher
43c9869dc5 nixos/networkmanager: fix VPN plugin service definition targets (#46201)
(cherry picked from commit 56b3c5b2dd)
2018-09-08 14:36:35 +02:00
Maximilian Bosch
3be4b8afc3 chessx: fix build (#46359)
See https://hydra.nixos.org/build/80998335.

Upstream doesn't support QT 5.11 ATM which broke compilation:

```
src/dialogs/savedialog.cpp: In constructor ‘SaveDialog::SaveDialog(QWidget*, Qt::WindowFlags)’:
src/dialogs/savedialog.cpp:37:34: error: invalid use of incomplete type ‘class QButtonGroup’
     group = new QButtonGroup(this);
```

The Arch community recommends to use an older QT version to fix
this (https://aur.archlinux.org/packages/chessx/).

Furthermore the `QT_PLUGIN_PATH` wasn't set properly which broke the
runtime since QT coudln't find the `xcb` plugin:

```
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in ""
This application failed to start because no Qt platform plugin could be initialized.
Reinstalling the application may fix this problem.
```

Finally, some minor style fixes were made for consistent indentation.

Addresses #45960

(cherry picked from commit 37032db583)
2018-09-08 14:20:01 +02:00
Samuel Dionne-Riel
5fa7404db9 yabause: 0.9.14 -> 0.9.15 (#46353)
+ fixes for Qt 5.11 build.

(cherry picked from commit 2c751dcdc9)
2018-09-08 13:59:29 +02:00
Maximilian Bosch
4eaa7ef159 pythonPackages.pycaption: fix build (#46356)
The `beaitufulsoup4` package distributed by `nixpkgs` is now at `4.6.3`.

Additionally it fixes `gnomecaption` which depends on the broken
`pycaption` package.

See https://hydra.nixos.org/build/81000247
See https://hydra.nixos.org/build/80723223

Addresses #45960

(cherry picked from commit a02002deba)
2018-09-08 12:10:47 +02:00
worldofpeace
26d65faa62 mono-addins: fix build (#46354)
(cherry picked from commit 2031c0ebfe)
2018-09-08 10:07:44 +02:00
Bastian Köcher
0df87918e5 kdecoration-viewer: Fixes build (#46339)
(cherry picked from commit 0f8c58afd2)
2018-09-08 01:40:05 +02:00
Maximilian Bosch
0842915312 pythonPackages.trio: fix build (#46342)
Fixes the build for `python3Packages.trio' for the next ZHF iteration.
Please refer to the Hydra build for further reference: https://hydra.nixos.org/build/80617356

`python3Packages.sniffio` is needed for the build, otherwise the build
aborts with an error like this:

```
  Could not find a version that satisfies the requirement sniffio (from trio==0.6.0) (from versions: )
No matching distribution found for sniffio (from trio==0.6.0)
```

See #45960

(cherry picked from commit 218ac50fd4)
2018-09-08 01:05:14 +02:00
Timo Kaufmann
cc05d938f9 youtube-dl: fix youtube video download
(cherry picked from commit 8ef940a038)
2018-09-07 21:24:07 +02:00
Timo Kaufmann
441226d374 youtube-dl: 2018.08.28 -> 2018.09.01
(cherry picked from commit fa76f75c7b)
2018-09-07 21:24:05 +02:00
Timo Kaufmann
97577f0057 sage: fix numpy and scipy integration
(cherry picked from commit 7521f2863d)
2018-09-07 18:56:17 +02:00
Chris Ostrouchov
17e17700e2 pythonPackages.ncclient: refactor
adding selectors2 as dependency of ncclient. Added recently 20 days
ago in August. 8ef20f2828

(cherry picked from commit a726956b42)
2018-09-07 17:34:52 +02:00
Chris Ostrouchov
010fc6b762 pythonPackages.selectors2: init at 2.0.1
Added package becuase now dependency of ncclient.

(cherry picked from commit 11c3fe2258)
2018-09-07 17:34:52 +02:00
Michael Raskin
4a62ef0800 julia: readd julia_06 name, make julia an alias that selects a version, as we usually do for incompatible versions
(cherry picked from commit 0e4197b34b)
2018-09-07 15:57:32 +01:00
Daniël de Kok
4f475fee74 python2Packages.spacy_models: update all models to version 2.0.0 (#46182)
Update the model list to those models that are compatibly with the
latest spaCy version:

https://github.com/explosion/spacy-models/blob/master/compatibility.json

The updated model file evaluates to the following packages:

python2Packages.spacy_models.de_core_news_sm
python2Packages.spacy_models.en_core_web_lg
python2Packages.spacy_models.en_core_web_md
python2Packages.spacy_models.en_core_web_sm
python2Packages.spacy_models.en_vectors_web_lg
python2Packages.spacy_models.es_core_news_md
python2Packages.spacy_models.es_core_news_sm
python2Packages.spacy_models.fr_core_news_md
python2Packages.spacy_models.fr_core_news_sm
python2Packages.spacy_models.it_core_news_sm
python2Packages.spacy_models.nl_core_news_sm
python2Packages.spacy_models.pt_core_news_sm
python2Packages.spacy_models.xx_ent_wiki_sm
python3Packages.spacy_models.de_core_news_sm
python3Packages.spacy_models.en_core_web_lg
python3Packages.spacy_models.en_core_web_md
python3Packages.spacy_models.en_core_web_sm
python3Packages.spacy_models.en_vectors_web_lg
python3Packages.spacy_models.es_core_news_md
python3Packages.spacy_models.es_core_news_sm
python3Packages.spacy_models.fr_core_news_md
python3Packages.spacy_models.fr_core_news_sm
python3Packages.spacy_models.it_core_news_sm
python3Packages.spacy_models.nl_core_news_sm
python3Packages.spacy_models.pt_core_news_sm
python3Packages.spacy_models.xx_ent_wiki_sm

(cherry picked from commit d261df5fc1)
2018-09-07 13:00:14 +02:00
Christopher Ostrouchov
5974311abe pythonPackages.kubernetes: add missing dependency (#46179)
fix build issue from missing dependency `adal`. This is due to `adal`
being added as a dependency in July
23rd. 9afec55f4a (diff-b4ef698db8ca845e5845c4618278f29a)

(cherry picked from commit 66e1288962)
2018-09-07 11:26:36 +02:00
Christopher Ostrouchov
a16ba12a82 pythonPackages.ordered-set: add missing dependency (#46183)
missing dependency for doing tests (pytestrunner) added three months
ago June c0b9308988.

(cherry picked from commit 427e4910ec)
2018-09-07 09:29:43 +02:00
Christopher Ostrouchov
53b906236e pythonPackages.phonopy: refactor (#46161)
Fixing phonopy not building. Tests were moved on Jul 30.

(cherry picked from commit 6586765a8f)
2018-09-07 08:41:50 +02:00
Christopher Ostrouchov
1857e03ed4 pythonPackages.locustio: 0.8.1 -> 0.9.0 (#46191)
Fixing build issue. Additionally fetching from github becuase pypi
packge does not come with README which is a buildtime dependency.

(cherry picked from commit b5b48c0a91)
2018-09-07 08:39:17 +02:00
Christopher Ostrouchov
796c736318 pythonPackages.pyslurm: 20180604 -> 20180811 (#46187)
Update version to support latest version of slurm. Fixes since
previously did not build.

(cherry picked from commit b1d6d159aa)
2018-09-07 08:29:11 +02:00
Bas van Dijk
415b1be6b6 Merge pull request #46212 from vaibhavsagar/bump-all-cabal-hashes-18.09
all-cabal-hashes: update snapshot to Hackage at 2018-09-04T11:59:40Z
2018-09-07 01:19:29 +02:00
Vladimír Čunát
ef96e79597 Merge branch 'staging-18.09' into release-18.09 2018-09-07 00:50:42 +02:00
Vaibhav Sagar
a55b95691b all-cabal-hashes: update snapshot to Hackage at 2018-09-04T11:59:40Z
(cherry picked from commit d376ceb6ff)
2018-09-06 17:27:30 -04:00
Graham Christensen
3d83234c08 Merge pull request #46192 from grahamc/nix-2.1-on-18.09
Nix 2.1 on 18.09
2018-09-06 15:44:49 -04:00
Graham Christensen
16188edaff Revert "Revert "nix-plugins: 4.0.5 -> 5.0.0.""
This reverts commit 5acc35215f.
2018-09-06 15:31:15 -04:00
Graham Christensen
e52cd2e27f Revert "Revert "nix: 2.1 -> 2.1.1""
This reverts commit 1e2124583d.
2018-09-06 15:31:14 -04:00
Graham Christensen
a385819d8f Revert "Revert "nix: 2.0.4 -> 2.1""
This reverts commit 7fba61a49c.
2018-09-06 15:31:12 -04:00
Graham Christensen
7fba61a49c Revert "nix: 2.0.4 -> 2.1"
This reverts commit 95a907b72b.

Premature, doesn't evaluate.
2018-09-06 15:30:05 -04:00
Graham Christensen
1e2124583d Revert "nix: 2.1 -> 2.1.1"
This reverts commit 4d33c0eea8.

Premature, doesn't evaluate.
2018-09-06 15:29:51 -04:00
Graham Christensen
5acc35215f Revert "nix-plugins: 4.0.5 -> 5.0.0."
This reverts commit 91e057d1b7.

Premature. Doesn't evaluate.
2018-09-06 15:29:45 -04:00
Shea Levy
91e057d1b7 nix-plugins: 4.0.5 -> 5.0.0.
Fixes build against nix 2.1.

(cherry picked from commit 56a605c8b9)
2018-09-06 15:27:27 -04:00
Eelco Dolstra
4d33c0eea8 nix: 2.1 -> 2.1.1
(cherry picked from commit 1510f324a3)
2018-09-06 15:26:14 -04:00
Eelco Dolstra
95a907b72b nix: 2.0.4 -> 2.1
(cherry picked from commit 347638ccfe)
2018-09-06 15:26:10 -04:00
Christopher Ostrouchov
b871c68e4d pythonPackages.jupyterlab_launcher: refactor (#46178)
jupyterlab_launcher does not support python version < 3.5. Disabled
for older versions

(cherry picked from commit 7bcc2870c7)
2018-09-06 20:41:14 +02:00
Jan Malakhovski
23da995a02 nixos/shells: fix indent everywhere
to comply with `doc/coding-conventions.xml`

(cherry picked from commit 8952375b48)
2018-09-06 20:32:40 +02:00
Tor Hedin Brønner
0cf3e0ba00 nixos/shells: avoid overriding the environment for child shells
A shared exported guard `__NIXOS_SET_ENVIRONMENT_DONE` is introduced that can
be used to prevent child shells from sourcing `system.build.setEnvironment`
the second time.

This fixes e.g. `nix run derivation` when run from e.g. ZSH through the console or
ssh. Before this Bash would resource the common environment resetting the `PATH`
environment variable.

We also export `system.build.setEnvironment` to `/etc/set-environment` making it
easy to reset the common environment with `. /etc/set-environment` when
needed and to grep for environment variables in `/etc` (which was the
motivation of #30418).

This reverts changes made in b00a3fc6fd
(the original #30418).

(cherry picked from commit d273db48c6)
2018-09-06 20:32:40 +02:00
John Ericson
e981546ab7 doc: Add release notes for top-level {build,host,target}Platform deprecation
I forgot to do this in e51f736076.

(cherry picked from commit f66257cfce)
2018-09-06 14:28:26 -04:00
Matthieu Coudron
efa7ab7f7f python3Packages.genanki: init at 0.6.0
Library to generate anki flashcards.

(cherry picked from commit 13050ccc0b)
2018-09-06 18:52:43 +02:00
Chris Ostrouchov
8167419324 pythonPackages.geopandas: 0.3.0 -> 0.4.0
Additionally fix issue with tests failing for 18.09 release.

Tests required url fetch. Disabled with "not web".

(cherry picked from commit 1d6fd65957)
2018-09-06 18:50:46 +02:00
Shea Levy
7f345622bc haskell.compiler.ghc861: Apply fix to abi-hash with backpack.
See https://phabricator.haskell.org/D5123.

(cherry picked from commit 06a3db6e54)
2018-09-06 11:40:57 -04:00
Shea Levy
328fc49235 ghc: Apply fix to abi-hash with backpack.
See https://phabricator.haskell.org/D5123.

(cherry picked from commit cbf194384f)
2018-09-06 11:40:47 -04:00
Alexander Biehl
f3ced683ba More conservative SCC tagging for Haskell libraries
`all-functions` corresponds to `-fprof-auto` which places an SCC on every binding. It is well known that SCCs hinder GHC from doing its optimization magic and really slows down profiled code to a point where the profiling reports are completely skewed towards things that were completely optimized away in production settings. Concretely this shows up with things like lenses which do not carry runtime overhead when properly simplified.

`exported-functions` corresponds to GHCs `-fprof-auto-exported` which doesn't put SCCs on `INLINE`d code and in turn doesn't influence simplification of this basic but important stuff.

(cherry picked from commit 3c70c4c6af)
2018-09-06 11:40:31 -04:00
Alex Biehl
f071c8b135 Haskell builder: Use $abi/$libname as --libsubdir
(cherry picked from commit a7d8800b1e)
2018-09-06 11:40:05 -04:00
Michael Raskin
e0404ef024 matrix-synapse: 0.33.3 -> 0.33.3.1
(cherry picked from commit 6ea0c3e271)
2018-09-06 16:58:14 +02:00
Sebastien Maret
0ba0f158ef gildas: add alternative url for the source code (#46145)
For each new release, the upstream developers of Gildas move the
source code of the previous release to a different directory. Add this
directory to the list of url to avoid build failure at each new
release.

(cherry picked from commit 5b58c6ac76)
2018-09-06 15:11:20 +01:00
John Ericson
813ed8fade Merge pull request #46149 from obsidiansystems/plain-system-host
top-level, stdenv: Make `system` and `stdenv.system` describe the hostPlatform for 18.09
2018-09-06 09:37:51 -04:00
John Ericson
5e3f2d4a95 Merge pull request #46146 from obsidiansystems/deprecate-top-level-platform-aliases
top-level: Deprecate top-level `{build,host,target}Platform` for 18.09
2018-09-06 08:11:16 -04:00
Matthieu Coudron
77a56c9e56 pythonPackages.alot: install zsh completion
(cherry picked from commit 97816bed33)
2018-09-06 11:28:33 +01:00
Ashley Gillman
cec33e25d6 python.pkgs.nipype: Futures is python 2 only. Also fix building.
(cherry picked from commit 12c0dd5432)
2018-09-06 10:48:41 +01:00
Chris Ostrouchov
eedff96832 pythonPackages.pymatgen: 2018.8.10 -> 2018.9.1
Also 2018.8.10 does not build in previous state because auto updating
from pypi did not account for a new requirement `networkx`. This has
been added.

(cherry picked from commit 63cf879d6c)
2018-09-06 10:34:56 +01:00
Matthieu Coudron
caf9d779d7 khal: add zsh completion
(cherry picked from commit 61df695f65)
2018-09-06 09:50:57 +01:00
Vladimír Čunát
5381f0c2f7 Merge branch 'release-18.09' into staging-18.09 2018-09-06 09:53:44 +02:00
Vladimír Čunát
f03d1058d9 Merge #46075: texinfoInteractive: fix for new perl
(cherry picked from commit b5bd566172)
2018-09-06 09:16:48 +02:00
Tim Steinbach
6f3bd5db2f linux: Remove 4.17
(cherry picked from commit f89d6d92b7)
2018-09-05 21:03:18 -04:00
Uli Baum
5b82747057 gnu-smalltalk: fix build
disable format hardening

(cherry picked from commit e5d9c16f2a)
2018-09-05 23:47:05 +01:00
Jörg Thalheim
e207071779 iana-etc: 20180711 -> 20180905 2018-09-05 22:57:52 +01:00
Robert Schütz
76b654c4d5 python.pkgs.py3status: fix build
(cherry picked from commit 041043420f)
2018-09-05 23:36:57 +02:00
Maximilian Bosch
a015527b1b nixos/activation: fix activation script for non-POSIX shells (#46042)
This fixes an issue with shells like fish that are not fully POSIX
compliant. The syntax `ENV=val cmd' doesn't work properly in there.

This issue has been addressed in #45932 and #45945, however it has been
recommended to use a single shell (`stdenv.shell' which is either
`bash' or `sh') to significantly reduce the maintenance overload in the
future.

See https://github.com/NixOS/nixpkgs/issues/45897#issuecomment-417923464

Fixes #45897

/cc @FRidh @xaverdh @etu

(cherry picked from commit df05618f2a)
2018-09-05 22:50:03 +02:00
xeji
a6e2a55611 nixos/tests/opensmtpd: prevent non-deterministic failure (#46071)
A sporadic failure occured on Hydra because a request was sent
to smtpd after the systemd unit was started, but before the daemon
was actually listening. Fix by checking for open ports first.

(cherry picked from commit f70dc57ad3)
2018-09-05 22:36:38 +02:00
Jethro Kuan
c3796a7d1b pythonPackages.tflearn: 0.2.1 -> 0.3.2 (#46102)
(cherry picked from commit a9a380b259)
2018-09-05 17:39:17 +01:00
John Ericson
d3cc8c6b1d Merge pull request #46105 from obsidiansystems/trace-to-warn
stdenv, neovim: Use `lib.warn` for deprecation warnings for 18.09
2018-09-05 11:54:41 -04:00
Timo Kaufmann
79b736ef42 spotify: 1.0.88.353.g15c26ea1-14 -> 1.0.83.316.ge96b6e67-5
The recent update is broken. Playing a song causes spotify to segfault.
This is probably
https://community.spotify.com/t5/Desktop-Linux/Segfault-with-the-new-update/td-p/4554830#,
which was recognized by upstream and will hopefully be fixed soon.

(cherry picked from commit d89b1f0fbf)
2018-09-05 17:36:41 +02:00
Vladyslav Mykhailichenko
7357961cf4 wireguard: 0.0.20180809 -> 0.0.20180904
(cherry picked from commit 4cd94bb5b8)
2018-09-05 16:08:37 +01:00
xeji
3f70d89181 statsd: mark broken, disable nixos test (#46097)
It's broken with node v8 and the upstream project is dead
(last commit Nov. 2016), see #45946 and
https://github.com/etsy/statsd/issues/646

(cherry picked from commit ba52f4cb76)
2018-09-05 16:49:05 +02:00
Daniël de Kok
e36e682d08 pythonPackages.thinc: fix darwin build (#46092)
thinc uses Accelerate on macOS as a blas library. Add the necessary
dependencies to allow building on unsandboxed Darwin machines.

(cherry picked from commit 348a153781)
2018-09-05 16:23:26 +02:00
Daniël de Kok
dd6d9aecca python[23]Packages.mxnet: fix build
Relax graphviz, numpy, requests dependency version bounds.

(cherry picked from commit e57e92bfa2)
2018-09-05 16:10:54 +02:00
Daniël de Kok
81b8016e39 python[23]Packages.graphviz: 0.5.2 -> 0.9
(cherry picked from commit 19ac917707)
2018-09-05 16:10:54 +02:00
Daniël de Kok
e2baf6a7bb mxnet: fix library dependencies.
- mxnet now builds the open source MKL DNN library. However, this
  was not included with the build.
- mxnet builds its own OpenMP library, even when OpenMP is provided
  by the system. This leads to problems, so remove the included
  OpenMP implementation:

  https://github.com/apache/incubator-mxnet/pull/12160

(cherry picked from commit 590ce7d1ae)
2018-09-05 16:10:54 +02:00
Sebastien Maret
d23bc7fc56 gildas: ignore clang warnings for unused command line arguments
See #46044

(cherry picked from commit b76cf0b54c)
2018-09-05 16:04:47 +02:00
Sebastien Maret
38f590a034 gildas: fix makefile rule
(cherry picked from commit 3bc898035d)
2018-09-05 16:04:47 +02:00
Tim Steinbach
6f01302d9e linux: 4.18.5 -> 4.18.6
(cherry picked from commit 25cad43f85)
2018-09-05 08:24:17 -04:00
Tim Steinbach
b232cee0c3 linux: 4.14.67 -> 4.14.68
(cherry picked from commit de9a2fd061)
2018-09-05 08:24:17 -04:00
Tim Steinbach
2bb649fd65 linux: 4.9.124 -> 4.9.125
(cherry picked from commit 92010b7a88)
2018-09-05 08:24:17 -04:00
Tim Steinbach
6db1351f15 linux: 4.4.153 -> 4.4.154
(cherry picked from commit f685edba08)
2018-09-05 08:24:17 -04:00
Urban Skudnik
96ae9a3522 restic: Fix autocomplete for zsh
zsh requires for files to be prepended with underscore to be
recognized as widgets, see [1] for more details.

[1] https://github.com/NixOS/nixpkgs/pull/46001#issuecomment-418567160

(cherry picked from commit e9fe3a334b)
2018-09-05 10:42:46 +01:00
Daniël de Kok
e928fd9f33 spacy: relax dependency versions
(cherry picked from commit da8475736e)
2018-09-05 10:35:42 +01:00
Daniël de Kok
7888e2602e thinc: relax dependency version requirements
(cherry picked from commit ffb094f939)
2018-09-05 10:35:42 +01:00
Vladimír Čunát
cba0654682 Merge #46047: ghostscript: 9.22 -> 9.24 (security)
(cherry picked from commit 281a629c2a)
2018-09-05 11:15:16 +02:00
Samuel Dionne-Riel
dea9a04ae6 qtkeychain: Fixes Qt4 build. (#46085)
(cherry picked from commit c59d9d371e)
2018-09-05 09:29:39 +02:00
Samuel Dionne-Riel
dd1afaab7d solarus-quest-editor: 1.4.5 -> 1.5.3
(cherry picked from commit 455f8151fd)
2018-09-05 08:54:42 +02:00
Samuel Dionne-Riel
508608d572 solarus: 1.4.5 -> 1.5.3
(cherry picked from commit 83a0d5d013)
2018-09-05 08:54:24 +02:00
Samuel Dionne-Riel
f8585bb4d5 qmapshack: 1.11.1 -> 1.12.0 (#46084)
(cherry picked from commit a394d08f11)
2018-09-05 08:39:57 +02:00
Samuel Dionne-Riel
85a10bcdd2 qtchan: Fixes build from Qt upgrade. (#46082)
Uses an upstream fix.

(cherry picked from commit 7ec9a333df)
2018-09-05 08:24:21 +02:00
Sarah Brofeldt
3e87977e38 go_1_11: Allow only one of GOARM={5,6,7}
(cherry picked from commit e153a988ec)
Backport of #46031 to release-18.09
2018-09-05 01:05:58 +02:00
Andreas Rammhold
2c844ce13a python.pkgs.pytest-fixture-config: disable tests (#46021)
Tests seem to fail on all recent versions even outside of our build
system. The upstream CI tests seem to somehow succeed but I wasn't able
to reproduce that locally. For not it is probably best to disable them.

(cherry picked from commit d814c98ec8)
2018-09-05 01:03:07 +02:00
Orivej Desh
b25eb04b03 swift-im: fix build with Qt 5.11 and split QtWebKit
(cherry picked from commit 205f3e941a)
2018-09-04 21:52:05 +00:00
Orivej Desh
ebaaaf693e psi-plus: 1.2.235 -> 1.3.410
(cherry picked from commit 6767396e38)
2018-09-04 21:51:56 +00:00
Orivej Desh
375234df52 libsignal-protocol-c: init at 2.3.2
(cherry picked from commit 2e0befd22e)
2018-09-04 21:51:45 +00:00
Orivej Desh
90d0fdaa4d psi: specify license (#43716)
(cherry picked from commit 0f1125975a)
2018-09-04 21:51:30 +00:00
worldofpeace
ac690fc18d dbus-sharp-2_0: fix build (#46060)
(cherry picked from commit 33fa23f6b3)
2018-09-04 23:38:37 +02:00
Will Dietz
6c449eb729 zsh: 5.5.1 -> 5.6 (#46052)
Security, see:

https://github.com/zsh-users/zsh/blob/zsh-5.6/NEWS#L7
(cherry picked from commit 59f5a65e72)

Backported because it contains a CVE fix
2018-09-04 23:33:29 +02:00
Uli Baum
1ee95ca8c9 nixos/tests/novacomd: prevent non-deterministic failure
A sporadic failure occured on Hydra because a request was sent
to the daemon after the systemd unit was started, but before the
daemon was actually listening. Fix by checking for open port first.

(cherry picked from commit 62086c6be6)
2018-09-04 23:20:56 +02:00
Tim Steinbach
d38c50caf4 oh-my-zsh: 2018-07-29 -> 2018-09-03
(cherry picked from commit 98ef33ec74)
2018-09-04 16:20:17 -04:00
symphorien
94b8a71dc3 sound-juicer: fix build (#46051)
(cherry picked from commit 16e776fde7)
2018-09-04 21:16:34 +02:00
Uli Baum
11c2595e40 boost: fix faulty cherry-pick in c70ff28
the change in c70ff28 accidentally ended up in the wrong line
2018-09-04 18:28:46 +02:00
Stephen
c70ff28968 boost: disable python explicitly in b2Args (#45679)
fixes the build of boost_162

(cherry picked from commit 775d1ecf57)
2018-09-04 18:23:33 +02:00
Uli Baum
8fb90de88c systemd: don't use options from fstab on remount
Include fix by @aszlig to fix remount with comment/application-specific
fstab options.

(cherry picked from commit 03c1f567d5)
2018-09-04 13:03:32 +02:00
Uli Baum
f3ed8122dc texlive: add IPFS URL for package source snapshot
(cherry picked from commit 20d88c1a4b)
2018-09-04 12:59:20 +02:00
Uli Baum
b9a33159b6 biber: 2.10 -> 2.11
2.11 is the version used in TexLive 2018

(cherry picked from commit 5c9ebf4fc7)
2018-09-04 12:59:20 +02:00
Uli Baum
6ce6f557ce texlive.bin.core-big: disable luatex53
build failed on Darwin
Patch by @veprbl

(cherry picked from commit 831551a9a1)
2018-09-04 12:59:20 +02:00
Uli Baum
1fab25f991 texlive.bin.core-big: remove unneeded compiler flags
(cherry picked from commit ac03d2e571)
2018-09-04 12:59:20 +02:00
Uli Baum
1ab0bd7190 texlive: add detailed upgrade instructions in separate file
(cherry picked from commit 2737f17d38)
2018-09-04 12:59:19 +02:00
Uli Baum
1bec29aec6 texlive-packages: snapshot 2017-final -> 20180827
and use fixed hashes

(cherry picked from commit f3961e5dae)
2018-09-04 12:59:19 +02:00
Uli Baum
292413f567 texlive: make packages fixed-output derivations
This reverts a part of the changes made in #40826.
Fixed-output derivations save time and space on rebuilds.

(cherry picked from commit 738bae4ec2)
2018-09-04 12:59:19 +02:00
Uli Baum
d2c300b757 texlive: update server URLs
(cherry picked from commit d5816c9bcb)
2018-09-04 12:59:19 +02:00
Uli Baum
0bf565747f texlive.bin: 20170524 -> 20180414
(cherry picked from commit 149b180f18)
2018-09-04 12:59:19 +02:00
Uli Baum
17bcaf17f7 poppler_min: 0.61 -> 0.67
currently only used for texlive

(cherry picked from commit c52174030e)
2018-09-04 12:59:18 +02:00
Timo Kaufmann
6f8e07ac0f Merge #46016: openblas: fix pkg-config alias name
(cherry picked from commit a774988e44)
2018-09-04 12:11:35 +02:00
Daniël de Kok
4b666f1118 mxnet: 1.1.0 -> 1.2.1 (#46026)
Update and fix the build:

- Perl is a build-time requirement.
- Fix hardcoded /bin/bash invocation.

(cherry picked from commit 93a5947158)
2018-09-04 11:38:35 +02:00
Daniël de Kok
b4479796e3 vowpalwabbit: mark broken on aarch64.
(cherry picked from commit 69d418aeac)
2018-09-04 08:59:28 +02:00
Daniël de Kok
07ec5b577b vowpal-wabbit: fix Darwin build.
- Follow the same logic for finding boost-python as for Linux.
- Set DYLD_LIBRARY_PATH so that ctypes find_library can find
  boost-python.
- Do not use '-mt' suffix when linking against boost-serialization
  and boost-program_options on Darwin.

(cherry picked from commit fe7e89ba3b)
2018-09-04 08:59:28 +02:00
Daniël de Kok
8f33594a10 vowpalwabbit: fix build against boost-python.
Patch setup.py to look for libboost_python{Major}{Minor}.

(cherry picked from commit 875bb6bcb9)
2018-09-04 08:59:28 +02:00
John Ericson
46f4a934dc Merge pull request #46024 from Ericson2314/fix-45993
mkDerivation: Fix cross compilation for 18.09
2018-09-04 01:29:10 -04:00
markuskowa
a2aacb218c gnss-sdr: set boost version to 1.66 (#46014)
(cherry picked from commit 7c915abd52)
2018-09-04 00:21:22 +02:00
Daniël de Kok
d0182e0917 magit-todos: fix build by providing git as input. (#45999)
magit-todos requires git during builds. Fixes #45868.

(cherry picked from commit 9d6ff38f70)
2018-09-03 23:43:17 +02:00
symphorien
f391f6fe73 gede: 2.6.1 -> 2.10.9 (#45995)
reverting to qt 5.9 fixed the build.

(cherry picked from commit 3549879b45)
2018-09-03 23:25:08 +02:00
Dmitry Kalinkin
6c988bce77 Revert "arrow-cpp: 0.9.0 -> 0.10.0" (#45991)
Hold off the upgrade until parquet 1.5.0 is released.

This reverts commit 72d630779d.

(cherry picked from commit 992d64bf3e)
2018-09-03 22:44:54 +02:00
Vladyslav M
05c52a7afb ion: broken on darwin (#46010)
(cherry picked from commit 8954c1f719)
2018-09-03 22:38:51 +02:00
aanderse
427ac1a21a kodi: fix nfs support (#46006)
libnfs is required to be in the LD_LIBRARY_PATH for kodi if you want nfs support 
see: https://www.reddit.com/r/NixOS/comments/9aiquo/how_to_enable_nfs_support_in_kodi/

(cherry picked from commit 435eccf15e)
2018-09-03 22:34:12 +02:00
worldofpeace
00a43c05d9 photoflow: mark broken for aarch64
(cherry picked from commit 507dfccdf8)
2018-09-03 22:29:53 +02:00
worldofpeace
d22277b59d sayonara: 1.0.0-git5-20180115 -> 1.1.1-git1-20180828
(cherry picked from commit 3149f84a92)
2018-09-03 22:29:52 +02:00
worldofpeace
2aab2027be photoflow: 2018-03-06 -> 2018-08-28
(cherry picked from commit a3db67282d)
2018-09-03 22:29:52 +02:00
worldofpeace
46733c68f9 imgcat: fix build
(cherry picked from commit 66385a66dc)
2018-09-03 22:29:52 +02:00
worldofpeace
c5c046907d amule: fix build
(cherry picked from commit 9069908680)
2018-09-03 22:29:52 +02:00
worldofpeace
e36aa2dd95 xfce4-mixer: fix build
(cherry picked from commit 6ed0823e15)
2018-09-03 22:29:51 +02:00
worldofpeace
74dfea0922 SkypeExport: fix build
(cherry picked from commit 451e04fb4d)
2018-09-03 22:29:51 +02:00
worldofpeace
2fd6a4a224 valadoc: fix build
(cherry picked from commit f828bb313b)
2018-09-03 22:29:51 +02:00
volth
f370254427 perlPackages.TestAggregate: broken with perl 5.26+ (#46003)
(cherry picked from commit c36bfa7211)
2018-09-03 22:05:18 +02:00
volth
414202cd18 perlPackages.UNIVERSALref: broken with perl 5.26+
(cherry picked from commit 9173c37e05)
2018-09-03 21:04:24 +01:00
Daniël de Kok
08a86afbb7 Keras: fix build by updating expected dependencies. (#45992)
Keras expects keras_preprocessing 1.0.2 and 1.0.4. 1.0.3 and 1.0.5
are respectively in nixpkgs.

ZHF #45960

(cherry picked from commit e33be2ab56)
2018-09-03 22:00:08 +02:00
Uli Baum
4c00a04f47 Revert "[cpan2nix] perlPackages.GetoptLongDescriptive: 0.102 -> 0.103"
It broke perlPackages.MouseXGetOpt

This reverts commit ad47c381bd.

(cherry picked from commit 9889c0f241)
2018-09-03 21:54:21 +02:00
Elis Hirwing
d7cd099d6f gitea: 1.5.0 -> 1.5.1 (#45968)
Changelog: https://github.com/go-gitea/gitea/releases/tag/v1.5.1
(cherry picked from commit fcccb9e5ca)
2018-09-03 20:30:48 +02:00
Tim Steinbach
c0bde692f6 kernel: Remove Copperhead
The patches are unmaintained and suggest a false sense of security

(cherry picked from commit 5fccac2b8d)
2018-09-03 11:19:10 -04:00
Vladimír Čunát
e185954cf9 treewide: fix various links (homepage, src)
(cherry picked from commit 9b48a67731)
2018-09-03 16:55:08 +02:00
Vladimír Čunát
ad8c446c20 aefs: fix meta.homepage
(cherry picked from commit 0d388e1bb6)
2018-09-03 16:30:35 +02:00
Vladimír Čunát
347e4c26f0 Merge #45974: purple-matrix: 2016-07-11 -> 2018-08-02
(cherry picked from commit 956790acaf)
2018-09-03 16:16:01 +02:00
Vladimír Čunát
2ba2f91a7f knot-dns: 2.7.1 -> 2.7.2
https://lists.nic.cz/pipermail/knot-dns-users/2018-August/001423.html
(cherry picked from commit 0a5b8ef8c4)
2018-09-03 14:41:00 +02:00
Vladimír Čunát
efe9acb17f tarball job: more --show-trace
Without that I couldn't well do the parent commit.

(cherry picked from commit 8d7439eb19)
2018-09-03 14:29:16 +02:00
Vladimír Čunát
102e0168dd lib/trivial.nix: fix missing parens
Broken in 62dca7c9a; the tricky thing is that it depends on nix version.

(cherry picked from commit 608730af44)
2018-09-03 14:29:12 +02:00
Domen Kožar
e62269f3c8 nix-prefetch-git: needs findutils as it depends on find/xargs
(cherry picked from commit 66d6e847bb)
Signed-off-by: Domen Kožar <domen@dev.si>
2018-09-03 13:23:41 +01:00
Christian Kauhaus
1845c6e3f7 poppler 0.61: patch against CVE-2018-13988 (#45916)
Out of bounds vulnerability in versions up to 0.62.

Generally, we use a newer poppler version but some pkgs still depend on
0.61. Patch named in https://nvd.nist.gov/vuln/detail/CVE-2018-13988.

(cherry picked from commit 542a86037d)
2018-09-03 08:56:35 +02:00
Uli Baum
4d0a22db7f nixos/release.nix: fix eval of closures
missing parentheses

cc: @samueldr
2018-09-03 08:55:58 +02:00
Samuel Dionne-Riel
0d8c216dd2 nixos: Sets channel and version for 18.09 2018-09-02 21:58:13 -04:00
aszlig
ee2463cd71 nixos: Document option description changes
This adds a release notes entry to make users (and especially
developers) aware so they no longer need to use </para><para> in option
descriptions as this is now done automatically on every two consecutive
newlines.

More details can be found in the commit message of f865d0feab.

Signed-off-by: aszlig <aszlig@nix.build>
(cherry picked from commit 4652f2f87e)
2018-09-03 01:15:18 +02:00
aszlig
0d3cfcb958 nixos: Split paras by \n\n in option descriptions
What annoyed me for a long time was the fact, that in order to break
into a new paragraph, you need to insert </para><para> in the
description attribute of an option.

Now we will automatically create <para/> elements for every block that
is separated by two consecutive newlines.

I first tried to do this within options-to-docbook.xsl, but it turns
out[1] that this isn't directly possible with XSLT 1.0, so I added
another XSLT file that postprocesses the option descriptions that are
now enclosed in <nixos:option-description/> by options-to-docbook.xsl.

The splitting itself is a bit more involved, because we can't simply
split on every \n\n because we'd also split text nodes of elements, for
example:

  <screen><![CDATA[

    one line

    another one

  ]]></screen>

This would create one <para/> element for "one line" and another for
"another line", which we obviously don't want because <screen/> is used
to display verbatim contents of what a user is seeing on the screen.

So what we do instead is splitting *only* the top-level text nodes
within the outermost <para/> and leave all elements as-is. If there are
more than one <para/> elements at the top-level, we simply don't process
it at all, because the description then already contains </para><para>.

https://www.mhonarc.org/archive/html/xsl-list/2012-09/msg00319.html

Signed-off-by: aszlig <aszlig@nix.build>
Cc: @edolstra, @domenkozar
(cherry picked from commit f865d0feab)
2018-09-02 18:31:36 -04:00
9234 changed files with 203608 additions and 376338 deletions

8
.dir-locals.el Normal file
View File

@@ -0,0 +1,8 @@
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((nil
(bug-reference-bug-regexp . "\\(\\(?:[Ii]ssue \\|[Ff]ixe[ds] \\|[Rr]esolve[ds]? \\|[Cc]lose[ds]? \\|[Pp]\\(?:ull [Rr]equest\\|[Rr]\\) \\|(\\)#\\([0-9]+\\))?\\)")
(bug-reference-url-format . "https://github.com/NixOS/nixpkgs/issues/%s"))
(nix-mode
(tab-width . 2)))

48
.github/CODEOWNERS vendored
View File

@@ -12,7 +12,7 @@
# Libraries
/lib @edolstra @nbp
/lib/systems @nbp @ericson2314 @matthewbauer
/lib/systems @nbp @ericson2314
/lib/generators.nix @edolstra @nbp @Profpatsch
/lib/debug.nix @edolstra @nbp @Profpatsch
@@ -20,11 +20,9 @@
/default.nix @nbp
/pkgs/top-level/default.nix @nbp @Ericson2314
/pkgs/top-level/impure.nix @nbp @Ericson2314
/pkgs/top-level/stage.nix @nbp @Ericson2314 @matthewbauer
/pkgs/top-level/splice.nix @Ericson2314 @matthewbauer
/pkgs/top-level/release-cross.nix @Ericson2314 @matthewbauer
/pkgs/stdenv/generic @Ericson2314 @matthewbauer
/pkgs/stdenv/cross @Ericson2314 @matthewbauer
/pkgs/top-level/stage.nix @nbp @Ericson2314
/pkgs/stdenv/generic @Ericson2314
/pkgs/stdenv/cross @Ericson2314
/pkgs/build-support/cc-wrapper @Ericson2314 @orivej
/pkgs/build-support/bintools-wrapper @Ericson2314 @orivej
/pkgs/build-support/setup-hooks @Ericson2314
@@ -47,15 +45,12 @@
/nixos/doc/manual/man-nixos-option.xml @nbp
/nixos/modules/installer/tools/nixos-option.sh @nbp
# NixOS modules
/nixos/modules @Infinisil
# Python-related code and docs
/maintainers/scripts/update-python-libraries @FRidh
/pkgs/top-level/python-packages.nix @FRidh
/pkgs/development/interpreters/python @FRidh
/pkgs/development/python-modules @FRidh
/doc/languages-frameworks/python.section.md @FRidh
/doc/languages-frameworks/python.md @FRidh
# Haskell
/pkgs/development/compilers/ghc @peti @ryantm @basvandijk
@@ -64,18 +59,13 @@
/pkgs/development/haskell-modules/generic-builder.nix @peti @ryantm @basvandijk
/pkgs/development/haskell-modules/hoogle.nix @peti @ryantm @basvandijk
# Perl
/pkgs/development/interpreters/perl @volth
/pkgs/top-level/perl-packages.nix @volth
/pkgs/development/perl-modules @volth
# R
/pkgs/applications/science/math/R @peti
/pkgs/development/r-modules @peti
# Ruby
/pkgs/development/interpreters/ruby @alyssais @zimbatm
/pkgs/development/ruby-modules @alyssais @zimbatm
/pkgs/development/interpreters/ruby @zimbatm
/pkgs/development/ruby-modules @zimbatm
# Rust
/pkgs/development/compilers/rust @Mic92 @LnL7
@@ -84,14 +74,6 @@
/pkgs/stdenv/darwin @NixOS/darwin-maintainers
/pkgs/os-specific/darwin @NixOS/darwin-maintainers
# C compilers
/pkgs/development/compilers/gcc @matthewbauer
/pkgs/development/compilers/llvm @matthewbauer
# Compatibility stuff
/pkgs/top-level/unix-tools.nix @matthewbauer
/pkgs/development/tools/xcbuild @matthewbauer
# Beam-related (Erlang, Elixir, LFE, etc)
/pkgs/development/beam-modules @gleber
/pkgs/development/interpreters/erlang @gleber
@@ -115,19 +97,3 @@
/pkgs/desktops/plasma-5 @ttuegel
/pkgs/development/libraries/kde-frameworks @ttuegel
/pkgs/development/libraries/qt-5 @ttuegel
# PostgreSQL and related stuff
/pkgs/servers/sql/postgresql @thoughtpolice
/nixos/modules/services/databases/postgresql.xml @thoughtpolice
/nixos/modules/services/databases/postgresql.nix @thoughtpolice
/nixos/tests/postgresql.nix @thoughtpolice
# Dhall
/pkgs/development/dhall-modules @Gabriel439 @Profpatsch
/pkgs/development/interpreters/dhall @Gabriel439 @Profpatsch
# Idris
/pkgs/development/idris-modules @Infinisil
# Bazel
/pkgs/development/tools/build-managers/bazel @mboes @Profpatsch

View File

@@ -20,8 +20,6 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license.
(Motivation for change. Additional information.)
```
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).
Examples:
* nginx: init at 2.0.1

View File

@@ -14,7 +14,6 @@
- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nox --run "nox-review wip"`
- [ ] Tested execution of all binary files (usually in `./result/bin/`)
- [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after)
- [ ] Assured whether relevant documentation is up to date
- [ ] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).
---

3
.gitignore vendored
View File

@@ -13,5 +13,4 @@ result-*
.DS_Store
/pkgs/development/libraries/qt-5/*/tmp/
/pkgs/desktops/kde-5/*/tmp/
/pkgs/development/mobile/androidenv/xml/*
/pkgs/desktops/kde-5/*/tmp/

View File

@@ -1 +1 @@
19.03
18.09

11
COPYING
View File

@@ -1,4 +1,4 @@
Copyright (c) 2003-2019 Eelco Dolstra and the Nixpkgs/NixOS contributors
Copyright (c) 2003-2018 Eelco Dolstra and the Nixpkgs/NixOS contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
@@ -18,3 +18,12 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
======================================================================
Note: the license above does not apply to the packages built by the
Nix Packages collection, merely to the package descriptions (i.e., Nix
expressions, build scripts, etc.). It also might not apply to patches
included in Nixpkgs, which may be derivative works of the packages to
which they apply. The aforementioned artifacts are all covered by the
licenses of the respective packages.

View File

@@ -12,15 +12,15 @@ build daemon as so-called channels. To get channel information via git, add
```
For stability and maximum binary package support, it is recommended to maintain
custom changes on top of one of the channels, e.g. `nixos-19.03` for the latest
custom changes on top of one of the channels, e.g. `nixos-18.09` for the latest
release and `nixos-unstable` for the latest successful build of master:
```
% git remote update channels
% git rebase channels/nixos-19.03
% git rebase channels/nixos-18.09
```
For pull requests, please rebase onto nixpkgs `master`.
For pull-requests, please rebase onto nixpkgs `master`.
[NixOS](https://nixos.org/nixos/) Linux distribution source code is located inside
`nixos/` folder.
@@ -31,17 +31,11 @@ For pull requests, please rebase onto nixpkgs `master`.
* [Manual (NixOS)](https://nixos.org/nixos/manual/)
* [Community maintained wiki](https://nixos.wiki/)
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
* [Continuous package builds for 19.03 release](https://hydra.nixos.org/jobset/nixos/release-19.03)
* [Continuous package builds for 18.09 release](https://hydra.nixos.org/jobset/nixos/release-18.09)
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
* [Tests for 19.03 release](https://hydra.nixos.org/job/nixos/release-19.03/tested#tabs-constituents)
* [Tests for 18.09 release](https://hydra.nixos.org/job/nixos/release-18.09/tested#tabs-constituents)
Communication:
* [Discourse Forum](https://discourse.nixos.org/)
* [IRC - #nixos on freenode.net](irc://irc.freenode.net/#nixos)
Note: MIT license does not apply to the packages built by Nixpkgs, merely to
the package descriptions (Nix expressions, build scripts, and so on). It also
might not apply to patches included in Nixpkgs, which may be derivative works
of the packages to which they apply. The aforementioned artifacts are all
covered by the licenses of the respective packages.

View File

@@ -18,7 +18,7 @@ if ! builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.
For more information, please see the NixOS release notes at
https://nixos.org/nixos/manual or locally at
${toString ./nixos/doc/manual/release-notes}.
${toString ./doc/manual/release-notes}.
If you need further help, see https://nixos.org/nixos/support.html
''

View File

@@ -9,10 +9,8 @@ debug:
.PHONY: format
format:
find . -iname '*.xml' -type f | while read f; do \
echo $$f ;\
xmlformat --config-file "$$XMLFORMAT_CONFIG" -i $$f ;\
done
find . -iname '*.xml' -type f -print0 | xargs -0 -I{} -n1 \
xmlformat --config-file "$$XMLFORMAT_CONFIG" -i {}
.PHONY: fix-misc-xml
fix-misc-xml:
@@ -21,7 +19,7 @@ fix-misc-xml:
.PHONY: clean
clean:
rm -f ${MD_TARGETS} .version manual-full.xml functions/library/locations.xml functions/library/generated
rm -f ${MD_TARGETS} .version manual-full.xml functions/library/locations.xml
rm -rf ./out/ ./highlightjs
.PHONY: validate
@@ -71,22 +69,16 @@ highlightjs:
cp -r "$$HIGHLIGHTJS/loader.js" highlightjs/
manual-full.xml: ${MD_TARGETS} .version functions/library/locations.xml functions/library/generated *.xml **/*.xml **/**/*.xml
manual-full.xml: ${MD_TARGETS} .version functions/library/locations.xml *.xml **/*.xml **/**/*.xml
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml
.version:
nix-instantiate --eval \
-E '(import ../lib).version' > .version
function_locations := $(shell nix-build --no-out-link ./lib-function-locations.nix)
functions/library/locations.xml:
ln -s $(function_locations) ./functions/library/locations.xml
functions/library/generated:
nix-build ./lib-function-docs.nix \
--arg locationsXml $(function_locations)\
--out-link ./functions/library/generated
nix-build ./lib-function-locations.nix \
--out-link ./functions/library/locations.xml
%.section.xml: %.section.md
pandoc $^ -w docbook+smart \

View File

@@ -56,30 +56,25 @@ foo { arg = ...; }
or list elements should be aligned:
<programlisting>
# A long list.
list = [
elem1
elem2
elem3
];
list =
[ elem1
elem2
elem3
];
# A long attribute set.
attrs =
{ attr1 = short_expr;
attr2 =
if true then big_expr else big_expr;
};
# Alternatively:
attrs = {
attr1 = short_expr;
attr2 =
if true then big_expr else big_expr;
};
# Combined
listOfAttrs = [
{
attr1 = 3;
attr2 = "fff";
}
{
attr1 = 5;
attr2 = "ggg";
}
];
</programlisting>
</para>
</listitem>
@@ -196,23 +191,6 @@ args.stdenv.mkDerivation (args // {
<section xml:id="sec-package-naming">
<title>Package naming</title>
<para>
The key words
<emphasis>must</emphasis>,
<emphasis>must not</emphasis>,
<emphasis>required</emphasis>,
<emphasis>shall</emphasis>,
<emphasis>shall not</emphasis>,
<emphasis>should</emphasis>,
<emphasis>should not</emphasis>,
<emphasis>recommended</emphasis>,
<emphasis>may</emphasis>,
and <emphasis>optional</emphasis> in this section
are to be interpreted as described in
<link xlink:href="https://tools.ietf.org/html/rfc2119">RFC 2119</link>.
Only <emphasis>emphasized</emphasis> words are to be interpreted in this way.
</para>
<para>
In Nixpkgs, there are generally three different names associated with a
package:
@@ -253,15 +231,14 @@ args.stdenv.mkDerivation (args // {
<itemizedlist>
<listitem>
<para>
The <literal>name</literal> attribute <emphasis>should</emphasis>
be identical to the upstream package name.
Generally, try to stick to the upstream package name.
</para>
</listitem>
<listitem>
<para>
The <literal>name</literal> attribute <emphasis>must not</emphasis>
contain uppercase letters — e.g., <literal>"mplayer-1.0rc2"</literal>
instead of <literal>"MPlayer-1.0rc2"</literal>.
Dont use uppercase letters in the <literal>name</literal> attribute
— e.g., <literal>"mplayer-1.0rc2"</literal> instead of
<literal>"MPlayer-1.0rc2"</literal>.
</para>
</listitem>
<listitem>
@@ -275,14 +252,14 @@ args.stdenv.mkDerivation (args // {
<para>
If a package is not a release but a commit from a repository, then the
version part of the name <emphasis>must</emphasis> be the date of that
(fetched) commit. The date <emphasis>must</emphasis> be in <literal>"YYYY-MM-DD"</literal>
(fetched) commit. The date must be in <literal>"YYYY-MM-DD"</literal>
format. Also append <literal>"unstable"</literal> to the name - e.g.,
<literal>"pkgname-unstable-2014-09-23"</literal>.
</para>
</listitem>
<listitem>
<para>
Dashes in the package name <emphasis>should</emphasis> be preserved in new variable names,
Dashes in the package name should be preserved in new variable names,
rather than converted to underscores or camel cased — e.g.,
<varname>http-parser</varname> instead of <varname>http_parser</varname>
or <varname>httpParser</varname>. The hyphenated style is preferred in
@@ -291,7 +268,7 @@ args.stdenv.mkDerivation (args // {
</listitem>
<listitem>
<para>
If there are multiple versions of a package, this <emphasis>should</emphasis> be reflected in
If there are multiple versions of a package, this should be reflected in
the variable names in <filename>all-packages.nix</filename>, e.g.
<varname>json-c-0-9</varname> and <varname>json-c-0-11</varname>. If
there is an obvious “default” version, make an attribute like
@@ -814,7 +791,7 @@ args.stdenv.mkDerivation (args // {
<para>
There are multiple ways to fetch a package source in nixpkgs. The general
guideline is that you should package reproducible sources with a high degree of
guideline is that you should package sources with a high degree of
availability. Right now there is only one fetcher which has mirroring
support and that is <literal>fetchurl</literal>. Note that you should also
prefer protocols which have a corresponding proxy environment variable.
@@ -865,134 +842,14 @@ src = fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "1f795f9f44607cc5bec70d1300150bfefcef2aae";
sha256 = "1i2yxndxb6yc9l6c99pypbd92lfq5aac4klq7y2v93c9qvx2cgpc";
sha256 = "04yri911rj9j19qqqn6m82266fl05pz98inasni0vxr1cf1gdgv9";
}
</programlisting>
Find the value to put as <literal>sha256</literal> by running
<literal>nix run -f '&lt;nixpkgs&gt;' nix-prefetch-github -c nix-prefetch-github --rev 1f795f9f44607cc5bec70d1300150bfefcef2aae NixOS nix</literal>
or <literal>nix-prefetch-url --unpack https://github.com/NixOS/nix/archive/1f795f9f44607cc5bec70d1300150bfefcef2aae.tar.gz</literal>.
</para>
</listitem>
</itemizedlist>
</para>
</section>
<section xml:id="sec-source-hashes">
<title>Obtaining source hash</title>
<para>
Preferred source hash type is sha256. There are several ways to get it.
</para>
<orderedlist>
<listitem>
<para>
Prefetch URL (with <literal>nix-prefetch-<replaceable>XXX</replaceable>
<replaceable>URL</replaceable></literal>, where
<replaceable>XXX</replaceable> is one of <literal>url</literal>,
<literal>git</literal>, <literal>hg</literal>, <literal>cvs</literal>,
<literal>bzr</literal>, <literal>svn</literal>). Hash is printed to
stdout.
</para>
</listitem>
<listitem>
<para>
Prefetch by package source (with <literal>nix-prefetch-url
'&lt;nixpkgs&gt;' -A <replaceable>PACKAGE</replaceable>.src</literal>,
where <replaceable>PACKAGE</replaceable> is package attribute name). Hash
is printed to stdout.
</para>
<para>
This works well when you've upgraded existing package version and want to
find out new hash, but is useless if package can't be accessed by
attribute or package has multiple sources (<literal>.srcs</literal>,
architecture-dependent sources, etc).
</para>
</listitem>
<listitem>
<para>
Upstream provided hash: use it when upstream provides
<literal>sha256</literal> or <literal>sha512</literal> (when upstream
provides <literal>md5</literal>, don't use it, compute
<literal>sha256</literal> instead).
</para>
<para>
A little nuance is that <literal>nix-prefetch-*</literal> tools produce
hash encoded with <literal>base32</literal>, but upstream usually provides
hexadecimal (<literal>base16</literal>) encoding. Fetchers understand both
formats. Nixpkgs does not standardize on any one format.
</para>
<para>
You can convert between formats with nix-hash, for example:
<screen>
$ nix-hash --type sha256 --to-base32 <replaceable>HASH</replaceable>
</screen>
</para>
</listitem>
<listitem>
<para>
Extracting hash from local source tarball can be done with
<literal>sha256sum</literal>. Use <literal>nix-prefetch-url
file:///path/to/tarball </literal> if you want base32 hash.
</para>
</listitem>
<listitem>
<para>
Fake hash: set fake hash in package expression, perform build and extract
correct hash from error Nix prints.
</para>
<para>
For package updates it is enough to change one symbol to make hash fake.
For new packages, you can use <literal>lib.fakeSha256</literal>,
<literal>lib.fakeSha512</literal> or any other fake hash.
</para>
<para>
This is last resort method when reconstructing source URL is non-trivial
and <literal>nix-prefetch-url -A</literal> isn't applicable (for example,
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/d2ab091dd308b99e4912b805a5eb088dd536adb9/pkgs/applications/video/kodi/default.nix#L73">
one of <literal>kodi</literal> dependencies</link>). The easiest way then
would be replace hash with a fake one and rebuild. Nix build will fail and
error message will contain desired hash.
</para>
<warning><para>This method has security problems. Check below for details.</para></warning>
</listitem>
</orderedlist>
<section xml:id="sec-source-hashes-security">
<title>Obtaining hashes securely</title>
<para>
Let's say Man-in-the-Middle (MITM) sits close to your network. Then instead of fetching
source you can fetch malware, and instead of source hash you get hash of malware. Here are
security considerations for this scenario:
</para>
<itemizedlist>
<listitem>
<para>
<literal>http://</literal> URLs are not secure to prefetch hash from;
</para>
</listitem>
<listitem>
<para>
hashes from upstream (in method 3) should be obtained via secure protocol;
</para>
</listitem>
<listitem>
<para>
<literal>https://</literal> URLs are secure in methods 1, 2, 3;
</para>
</listitem>
<listitem>
<para>
<literal>https://</literal> URLs are not secure in method 5. When obtaining hashes
with fake hash method, TLS checks are disabled. So
refetch source hash from several different networks to exclude MITM scenario.
Alternatively, use fake hash method to make Nix error, but instead of extracting
hash from error, extract <literal>https://</literal> URL and prefetch it
with method 1.
</para>
</listitem>
</itemizedlist>
</section>
</section>
<section xml:id="sec-patches">
<title>Patches</title>

View File

@@ -132,7 +132,7 @@
</itemizedlist>
<para>
The difference between a package being unsupported on some system and
The difference between an a package being unsupported on some system and
being broken is admittedly a bit fuzzy. If a program
<emphasis>ought</emphasis> to work on a certain platform, but doesn't, the
platform should be included in <literal>meta.platforms</literal>, but marked
@@ -175,16 +175,11 @@
</programlisting>
</para>
<para>
For a more useful example, try the following. This configuration
only allows unfree packages named flash player and visual studio
code:
A more useful example, the following configuration allows only allows
flash player and visual studio code:
<programlisting>
{
allowUnfreePredicate = (pkg: builtins.elem
(builtins.parseDrvName pkg.name).name [
"flashplayer"
"vscode"
]);
allowUnfreePredicate = (pkg: elem (builtins.parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
}
</programlisting>
</para>
@@ -291,8 +286,8 @@
<para>
You can define a function called <varname>packageOverrides</varname> in your
local <filename>~/.config/nixpkgs/config.nix</filename> to override Nix
packages. It must be a function that takes pkgs as an argument and returns a
local <filename>~/.config/nixpkgs/config.nix</filename> to override nix
packages. It must be a function that takes pkgs as an argument and return
modified set of packages.
<programlisting>
{
@@ -326,22 +321,11 @@
packageOverrides = pkgs: with pkgs; {
myPackages = pkgs.buildEnv {
name = "my-packages";
paths = [
aspell
bc
coreutils
gdb
ffmpeg
nixUnstable
emscripten
jq
nox
silver-searcher
];
paths = [ aspell bc coreutils gdb ffmpeg nixUnstable emscripten jq nox silver-searcher ];
};
};
}
</screen>
</screen>
<para>
To install it into our environment, you can just run <literal>nix-env -iA
@@ -358,23 +342,12 @@
packageOverrides = pkgs: with pkgs; {
myPackages = pkgs.buildEnv {
name = "my-packages";
paths = [
aspell
bc
coreutils
gdb
ffmpeg
nixUnstable
emscripten
jq
nox
silver-searcher
];
paths = [ aspell bc coreutils gdb ffmpeg nixUnstable emscripten jq nox silver-searcher ];
pathsToLink = [ "/share" "/bin" ];
};
};
}
</screen>
</screen>
<para>
<literal>pathsToLink</literal> tells Nixpkgs to only link the paths listed
@@ -404,23 +377,13 @@
packageOverrides = pkgs: with pkgs; {
myPackages = pkgs.buildEnv {
name = "my-packages";
paths = [
aspell
bc
coreutils
ffmpeg
nixUnstable
emscripten
jq
nox
silver-searcher
];
paths = [ aspell bc coreutils ffmpeg nixUnstable emscripten jq nox silver-searcher ];
pathsToLink = [ "/share/man" "/share/doc" "/bin" ];
extraOutputsToInstall = [ "man" "doc" ];
};
};
}
</screen>
</screen>
<para>
This provides us with some useful documentation for using our packages.
@@ -432,15 +395,15 @@
{
packageOverrides = pkgs: with pkgs; rec {
myProfile = writeText "my-profile" ''
export PATH=$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
export MANPATH=$HOME/.nix-profile/share/man:/nix/var/nix/profiles/default/share/man:/usr/share/man
export PATH=$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
export MANPATH=$HOME/.nix-profile/share/man:/nix/var/nix/profiles/default/share/man:/usr/share/man
'';
myPackages = pkgs.buildEnv {
name = "my-packages";
paths = [
(runCommand "profile" {} ''
mkdir -p $out/etc/profile.d
cp ${myProfile} $out/etc/profile.d/my-profile.sh
mkdir -p $out/etc/profile.d
cp ${myProfile} $out/etc/profile.d/my-profile.sh
'')
aspell
bc
@@ -458,7 +421,7 @@
};
};
}
</screen>
</screen>
<para>
For this to work fully, you must also have this script sourced when you are
@@ -475,7 +438,7 @@ if [ -d $HOME/.nix-profile/etc/profile.d ]; then
fi
done
fi
</screen>
</screen>
<para>
Now just run <literal>source $HOME/.profile</literal> and you can starting
@@ -496,16 +459,16 @@ fi
{
packageOverrides = pkgs: with pkgs; rec {
myProfile = writeText "my-profile" ''
export PATH=$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
export MANPATH=$HOME/.nix-profile/share/man:/nix/var/nix/profiles/default/share/man:/usr/share/man
export INFOPATH=$HOME/.nix-profile/share/info:/nix/var/nix/profiles/default/share/info:/usr/share/info
export PATH=$HOME/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/sbin:/bin:/usr/sbin:/usr/bin
export MANPATH=$HOME/.nix-profile/share/man:/nix/var/nix/profiles/default/share/man:/usr/share/man
export INFOPATH=$HOME/.nix-profile/share/info:/nix/var/nix/profiles/default/share/info:/usr/share/info
'';
myPackages = pkgs.buildEnv {
name = "my-packages";
paths = [
(runCommand "profile" {} ''
mkdir -p $out/etc/profile.d
cp ${myProfile} $out/etc/profile.d/my-profile.sh
mkdir -p $out/etc/profile.d
cp ${myProfile} $out/etc/profile.d/my-profile.sh
'')
aspell
bc
@@ -522,17 +485,17 @@ fi
pathsToLink = [ "/share/man" "/share/doc" "/share/info" "/bin" "/etc" ];
extraOutputsToInstall = [ "man" "doc" "info" ];
postBuild = ''
if [ -x $out/bin/install-info -a -w $out/share/info ]; then
shopt -s nullglob
for i in $out/share/info/*.info $out/share/info/*.info.gz; do
$out/bin/install-info $i $out/share/info/dir
done
fi
if [ -x $out/bin/install-info -a -w $out/share/info ]; then
shopt -s nullglob
for i in $out/share/info/*.info $out/share/info/*.info.gz; do
$out/bin/install-info $i $out/share/info/dir
done
fi
'';
};
};
}
</screen>
</screen>
<para>
<literal>postBuild</literal> tells Nixpkgs to run a command after building

View File

@@ -6,17 +6,17 @@
<title>Introduction</title>
<para>
"Cross-compilation" means compiling a program on one machine for another type
of machine. For example, a typical use of cross-compilation is to compile
programs for embedded devices. These devices often don't have the computing
power and memory to compile their own programs. One might think that
cross-compilation is a fairly niche concern. However, there are significant
advantages to rigorously distinguishing between build-time and run-time
environments! This applies even when one is developing and deploying on the
same machine. Nixpkgs is increasingly adopting the opinion that packages
should be written with cross-compilation in mind, and nixpkgs should evaluate
in a similar way (by minimizing cross-compilation-specific special cases)
whether or not one is cross-compiling.
"Cross-compilation" means compiling a program on one machine for another
type of machine. For example, a typical use of cross compilation is to
compile programs for embedded devices. These devices often don't have the
computing power and memory to compile their own programs. One might think
that cross-compilation is a fairly niche concern, but there are advantages
to being rigorous about distinguishing build-time vs run-time environments
even when one is developing and deploying on the same machine. Nixpkgs is
increasingly adopting the opinion that packages should be written with
cross-compilation in mind, and nixpkgs should evaluate in a similar way (by
minimizing cross-compilation-specific special cases) whether or not one is
cross-compiling.
</para>
<para>
@@ -34,15 +34,15 @@
<title>Platform parameters</title>
<para>
Nixpkgs follows the <link
xlink:href="https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html">conventions
of GNU autoconf</link>. We distinguish between 3 types of platforms when
building a derivation: <wordasword>build</wordasword>,
<wordasword>host</wordasword>, and <wordasword>target</wordasword>. In
summary, <wordasword>build</wordasword> is the platform on which a package
is being built, <wordasword>host</wordasword> is the platform on which it
will run. The third attribute, <wordasword>target</wordasword>, is relevant
only for certain specific compilers and build tools.
Nixpkgs follows the
<link xlink:href="https://gcc.gnu.org/onlinedocs/gccint/Configure-Terms.html">common
historical convention of GNU autoconf</link> of distinguishing between 3
types of platform: <wordasword>build</wordasword>,
<wordasword>host</wordasword>, and <wordasword>target</wordasword>. In
summary, <wordasword>build</wordasword> is the platform on which a package
is being built, <wordasword>host</wordasword> is the platform on which it
is to run. The third attribute, <wordasword>target</wordasword>, is
relevant only for certain specific compilers and build tools.
</para>
<para>
@@ -64,7 +64,7 @@
<para>
The "build platform" is the platform on which a package is built. Once
someone has a built package, or pre-built binary package, the build
platform should not matter and can be ignored.
platform should not matter and be safe to ignore.
</para>
</listitem>
</varlistentry>
@@ -94,11 +94,11 @@
<para>
The build process of certain compilers is written in such a way that the
compiler resulting from a single build can itself only produce binaries
for a single platform. The task of specifying this single "target
platform" is thus pushed to build time of the compiler. The root cause of
this that the compiler (which will be run on the host) and the standard
library/runtime (which will be run on the target) are built by a single
build process.
for a single platform. The task specifying this single "target platform"
is thus pushed to build time of the compiler. The root cause of this
mistake is often that the compiler (which will be run on the host) and
the the standard library/runtime (which will be run on the target) are
built by a single build process.
</para>
<para>
There is no fundamental need to think about a single target ahead of
@@ -135,10 +135,8 @@
<para>
This is a two-component shorthand for the platform. Examples of this
would be "x86_64-darwin" and "i686-linux"; see
<literal>lib.systems.doubles</literal> for more. The first component
corresponds to the CPU architecture of the platform and the second to the
operating system of the platform (<literal>[cpu]-[os]</literal>). This
format has built-in support in Nix, such as the
<literal>lib.systems.doubles</literal> for more. This format isn't very
standard, but has built-in support in Nix, such as the
<varname>builtins.currentSystem</varname> impure string.
</para>
</listitem>
@@ -149,13 +147,12 @@
</term>
<listitem>
<para>
This is a 3- or 4- component shorthand for the platform. Examples of this
would be <literal>x86_64-unknown-linux-gnu</literal> and
<literal>aarch64-apple-darwin14</literal>. This is a standard format
called the "LLVM target triple", as they are pioneered by LLVM. In the
4-part form, this corresponds to
<literal>[cpu]-[vendor]-[os]-[abi]</literal>. This format is strictly
more informative than the "Nix host double", as the previous format could
This is a 3- or 4- component shorthand for the platform. Examples of
this would be "x86_64-unknown-linux-gnu" and "aarch64-apple-darwin14".
This is a standard format called the "LLVM target triple", as they are
pioneered by LLVM and traditionally just used for the
<varname>targetPlatform</varname>. This format is strictly more
informative than the "Nix host double", as the previous format could
analogously be termed. This needs a better name than
<varname>config</varname>!
</para>
@@ -167,11 +164,12 @@
</term>
<listitem>
<para>
This is a Nix representation of a parsed LLVM target triple
with white-listed components. This can be specified directly,
or actually parsed from the <varname>config</varname>. See
<literal>lib.systems.parse</literal> for the exact
representation.
This is a nix representation of a parsed LLVM target triple with
white-listed components. This can be specified directly, or actually
parsed from the <varname>config</varname>. [Technically, only one need
be specified and the others can be inferred, though the precision of
inference may not be very good.] See
<literal>lib.systems.parse</literal> for the exact representation.
</para>
</listitem>
</varlistentry>
@@ -195,7 +193,7 @@
<listitem>
<para>
These predicates are defined in <literal>lib.systems.inspect</literal>,
and slapped onto every platform. They are superior to the ones in
and slapped on every platform. They are superior to the ones in
<varname>stdenv</varname> as they force the user to be explicit about
which platform they are inspecting. Please use these instead of those.
</para>
@@ -223,7 +221,7 @@
<para>
In this section we explore the relationship between both runtime and
build-time dependencies and the 3 Autoconf platforms.
buildtime dependencies and the 3 Autoconf platforms.
</para>
<para>
@@ -251,17 +249,17 @@
</para>
<para>
Some examples will make this clearer. If a package is being built with a
<literal>(build, host, target)</literal> platform triple of <literal>(foo,
bar, bar)</literal>, then its build-time dependencies would have a triple of
<literal>(foo, foo, bar)</literal>, and <emphasis>those packages'</emphasis>
build-time dependencies would have a triple of <literal>(foo, foo,
foo)</literal>. In other words, it should take two "rounds" of following
build-time dependency edges before one reaches a fixed point where, by the
sliding window principle, the platform triple no longer changes. Indeed,
this happens with cross-compilation, where only rounds of native
dependencies starting with the second necessarily coincide with native
packages.
Some examples will probably make this clearer. If a package is being built
with a <literal>(build, host, target)</literal> platform triple of
<literal>(foo, bar, bar)</literal>, then its build-time dependencies would
have a triple of <literal>(foo, foo, bar)</literal>, and <emphasis>those
packages'</emphasis> build-time dependencies would have triple of
<literal>(foo, foo, foo)</literal>. In other words, it should take two
"rounds" of following build-time dependency edges before one reaches a
fixed point where, by the sliding window principle, the platform triple no
longer changes. Indeed, this happens with cross compilation, where only
rounds of native dependencies starting with the second necessarily coincide
with native packages.
</para>
<note>
@@ -273,23 +271,23 @@
</note>
<para>
How does this work in practice? Nixpkgs is now structured so that build-time
dependencies are taken from <varname>buildPackages</varname>, whereas
run-time dependencies are taken from the top level attribute set. For
example, <varname>buildPackages.gcc</varname> should be used at build-time,
while <varname>gcc</varname> should be used at run-time. Now, for most of
Nixpkgs's history, there was no <varname>buildPackages</varname>, and most
packages have not been refactored to use it explicitly. Instead, one can use
the six (<emphasis>gasp</emphasis>) attributes used for specifying
dependencies as documented in <xref linkend="ssec-stdenv-dependencies"/>. We
"splice" together the run-time and build-time package sets with
<varname>callPackage</varname>, and then <varname>mkDerivation</varname> for
each of four attributes pulls the right derivation out. This splicing can be
skipped when not cross-compiling as the package sets are the same, but is a
bit slow for cross-compiling. Because of this, a best-of-both-worlds
solution is in the works with no splicing or explicit access of
<varname>buildPackages</varname> needed. For now, feel free to use either
method.
How does this work in practice? Nixpkgs is now structured so that
build-time dependencies are taken from <varname>buildPackages</varname>,
whereas run-time dependencies are taken from the top level attribute set.
For example, <varname>buildPackages.gcc</varname> should be used at build
time, while <varname>gcc</varname> should be used at run time. Now, for
most of Nixpkgs's history, there was no <varname>buildPackages</varname>,
and most packages have not been refactored to use it explicitly. Instead,
one can use the six (<emphasis>gasp</emphasis>) attributes used for
specifying dependencies as documented in
<xref linkend="ssec-stdenv-dependencies"/>. We "splice" together the
run-time and build-time package sets with <varname>callPackage</varname>,
and then <varname>mkDerivation</varname> for each of four attributes pulls
the right derivation out. This splicing can be skipped when not cross
compiling as the package sets are the same, but is a bit slow for cross
compiling. Because of this, a best-of-both-worlds solution is in the works
with no splicing or explicit access of <varname>buildPackages</varname>
needed. For now, feel free to use either method.
</para>
<note>
@@ -307,11 +305,11 @@
<title>Cross packaging cookbook</title>
<para>
Some frequently encountered problems when packaging for cross-compilation
should be answered here. Ideally, the information above is exhaustive, so
this section cannot provide any new information, but it is ludicrous and
cruel to expect everyone to spend effort working through the interaction of
many features just to figure out the same answer to the same common problem.
Some frequently problems when packaging for cross compilation are good to
just spell and answer. Ideally the information above is exhaustive, so this
section cannot provide any new information, but its ludicrous and cruel to
expect everyone to spend effort working through the interaction of many
features just to figure out the same answer to the same common problem.
Feel free to add to this list!
</para>
@@ -366,9 +364,17 @@
<section xml:id="sec-cross-usage">
<title>Cross-building packages</title>
<note>
<para>
More information needs to moved from the old wiki, especially
<link xlink:href="https://nixos.org/wiki/CrossCompiling" />, for this
section.
</para>
</note>
<para>
Nixpkgs can be instantiated with <varname>localSystem</varname> alone, in
which case there is no cross-compiling and everything is built by and for
which case there is no cross compiling and everything is built by and for
that system, or also with <varname>crossSystem</varname>, in which case
packages run on the latter, but all building happens on the former. Both
parameters take the same schema as the 3 (build, host, and target) platforms
@@ -385,7 +391,7 @@ nix-build &lt;nixpkgs&gt; --arg crossSystem '(import &lt;nixpkgs/lib&gt;).system
Eventually we would like to make these platform examples an unnecessary
convenience so that
<programlisting>
nix-build &lt;nixpkgs&gt; --arg crossSystem '{ config = "&lt;arch&gt;-&lt;os&gt;-&lt;vendor&gt;-&lt;abi&gt;"; }' -A whatever</programlisting>
nix-build &lt;nixpkgs&gt; --arg crossSystem.config '&lt;arch&gt;-&lt;os&gt;-&lt;vendor&gt;-&lt;abi&gt;' -A whatever</programlisting>
works in the vast majority of cases. The problem today is dependencies on
other sorts of configuration which aren't given proper defaults. We rely on
the examples to crudely to set those configuration parameters in some
@@ -434,14 +440,15 @@ nix-build &lt;nixpkgs&gt; --arg crossSystem '{ config = "&lt;arch&gt;-&lt;os&gt;
build plan or package set. A simple "build vs deploy" dichotomy is adequate:
the sliding window principle described in the previous section shows how to
interpolate between the these two "end points" to get the 3 platform triple
for each bootstrapping stage. That means for any package a given package set,
even those not bound on the top level but only reachable via dependencies or
<varname>buildPackages</varname>, the three platforms will be defined as one
of <varname>localSystem</varname> or <varname>crossSystem</varname>, with the
former replacing the latter as one traverses build-time dependencies. A last
simple difference is that <varname>crossSystem</varname> should be null when
one doesn't want to cross-compile, while the <varname>*Platform</varname>s
are always non-null. <varname>localSystem</varname> is always non-null.
for each bootstrapping stage. That means for any package a given package
set, even those not bound on the top level but only reachable via
dependencies or <varname>buildPackages</varname>, the three platforms will
be defined as one of <varname>localSystem</varname> or
<varname>crossSystem</varname>, with the former replacing the latter as one
traverses build-time dependencies. A last simple difference then is
<varname>crossSystem</varname> should be null when one doesn't want to
cross-compile, while the <varname>*Platform</varname>s are always non-null.
<varname>localSystem</varname> is always non-null.
</para>
</section>
<!--============================================================-->
@@ -454,14 +461,14 @@ nix-build &lt;nixpkgs&gt; --arg crossSystem '{ config = "&lt;arch&gt;-&lt;os&gt;
<note>
<para>
If one explores Nixpkgs, they will see derivations with names like
<literal>gccCross</literal>. Such <literal>*Cross</literal> derivations is a
holdover from before we properly distinguished between the host and target
platforms—the derivation with "Cross" in the name covered the <literal>build
= host != target</literal> case, while the other covered the <literal>host =
target</literal>, with build platform the same or not based on whether one
was using its <literal>.nativeDrv</literal> or <literal>.crossDrv</literal>.
This ugliness will disappear soon.
If one explores nixpkgs, they will see derivations with names like
<literal>gccCross</literal>. Such <literal>*Cross</literal> derivations is
a holdover from before we properly distinguished between the host and
target platforms —the derivation with "Cross" in the name covered the
<literal>build = host != target</literal> case, while the other covered the
<literal>host = target</literal>, with build platform the same or not based
on whether one was using its <literal>.nativeDrv</literal> or
<literal>.crossDrv</literal>. This ugliness will disappear soon.
</para>
</note>
</section>

View File

@@ -2,8 +2,8 @@
let
lib = pkgs.lib;
locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs; };
functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs; };
in pkgs.stdenv.mkDerivation {
in
pkgs.stdenv.mkDerivation {
name = "nixpkgs-manual";
buildInputs = with pkgs; [ pandoc libxml2 libxslt zip jing xmlformat ];
@@ -32,7 +32,6 @@ in pkgs.stdenv.mkDerivation {
postPatch = ''
rm -rf ./functions/library/locations.xml
ln -s ${locationsXml} ./functions/library/locations.xml
ln -s ${functionDocs} ./functions/library/generated
echo ${lib.version} > .version
'';

View File

@@ -1,22 +1,18 @@
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="chap-functions">
xml:id="chap-functions">
<title>Functions reference</title>
<para>
The nixpkgs repository has several utility functions to manipulate Nix
expressions.
</para>
<xi:include href="functions/library.xml" />
<xi:include href="functions/overrides.xml" />
<xi:include href="functions/generators.xml" />
<xi:include href="functions/debug.xml" />
<xi:include href="functions/fetchers.xml" />
<xi:include href="functions/trivial-builders.xml" />
<xi:include href="functions/fhs-environments.xml" />
<xi:include href="functions/shell.xml" />
<xi:include href="functions/dockertools.xml" />
<xi:include href="functions/appimagetools.xml" />
<xi:include href="functions/prefer-remote-fetch.xml" />
<xi:include href="functions/nix-gitignore.xml" />
</chapter>

View File

@@ -1,121 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="sec-pkgs-appimageTools">
<title>pkgs.appimageTools</title>
<para>
<varname>pkgs.appimageTools</varname> is a set of functions for extracting and wrapping
<link xlink:href="https://appimage.org/">AppImage</link> files.
They are meant to be used if traditional packaging from source is infeasible, or it would take too long.
To quickly run an AppImage file, <literal>pkgs.appimage-run</literal> can be used as well.
</para>
<warning>
<para>
The <varname>appimageTools</varname> API is unstable and may be subject to
backwards-incompatible changes in the future.
</para>
</warning>
<section xml:id="ssec-pkgs-appimageTools-formats">
<title>AppImage formats</title>
<para>
There are different formats for AppImages, see
<link xlink:href="https://github.com/AppImage/AppImageSpec/blob/74ad9ca2f94bf864a4a0dac1f369dd4f00bd1c28/draft.md#image-format">the specification</link> for details.
</para>
<itemizedlist>
<listitem>
<para>
Type 1 images are ISO 9660 files that are also ELF executables.
</para>
</listitem>
<listitem>
<para>
Type 2 images are ELF executables with an appended filesystem.
</para>
</listitem>
</itemizedlist>
<para>
They can be told apart with <command>file -k</command>:
</para>
<screen>
<prompt>$ </prompt>file -k type1.AppImage
type1.AppImage: ELF 64-bit LSB executable, x86-64, version 1 (SYSV) ISO 9660 CD-ROM filesystem data 'AppImage' (Lepton 3.x), scale 0-0,
spot sensor temperature 0.000000, unit celsius, color scheme 0, calibration: offset 0.000000, slope 0.000000, dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=d629f6099d2344ad82818172add1d38c5e11bc6d, stripped\012- data
<prompt>$ </prompt>file -k type2.AppImage
type2.AppImage: ELF 64-bit LSB executable, x86-64, version 1 (SYSV) (Lepton 3.x), scale 232-60668, spot sensor temperature -4.187500, color scheme 15, show scale bar, calibration: offset -0.000000, slope 0.000000 (Lepton 2.x), scale 4111-45000, spot sensor temperature 412442.250000, color scheme 3, minimum point enabled, calibration: offset -75402534979642766821519867692934234112.000000, slope 5815371847733706829839455140374904832.000000, dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=79dcc4e55a61c293c5e19edbd8d65b202842579f, stripped\012- data
</screen>
<para>
Note how the type 1 AppImage is described as an <literal>ISO 9660 CD-ROM filesystem</literal>, and the type 2 AppImage is not.
</para>
</section>
<section xml:id="ssec-pkgs-appimageTools-wrapping">
<title>Wrapping</title>
<para>
Depending on the type of AppImage you're wrapping, you'll have to use
<varname>wrapType1</varname> or <varname>wrapType2</varname>.
</para>
<programlisting>
appimageTools.wrapType2 { # or wrapType1
name = "patchwork"; <co xml:id='ex-appimageTools-wrapping-1' />
src = fetchurl { <co xml:id='ex-appimageTools-wrapping-2' />
url = https://github.com/ssbc/patchwork/releases/download/v3.11.4/Patchwork-3.11.4-linux-x86_64.AppImage;
sha256 = "1blsprpkvm0ws9b96gb36f0rbf8f5jgmw4x6dsb1kswr4ysf591s";
};
extraPkgs = pkgs: with pkgs; [ ]; <co xml:id='ex-appimageTools-wrapping-3' />
}</programlisting>
<calloutlist>
<callout arearefs='ex-appimageTools-wrapping-1'>
<para>
<varname>name</varname> specifies the name of the resulting image.
</para>
</callout>
<callout arearefs='ex-appimageTools-wrapping-2'>
<para>
<varname>src</varname> specifies the AppImage file to extract.
</para>
</callout>
<callout arearefs='ex-appimageTools-wrapping-2'>
<para>
<varname>extraPkgs</varname> allows you to pass a function to include additional packages
inside the FHS environment your AppImage is going to run in.
There are a few ways to learn which dependencies an application needs:
<itemizedlist>
<listitem>
<para>
Looking through the extracted AppImage files, reading its scripts and running <command>patchelf</command> and <command>ldd</command> on its executables.
This can also be done in <command>appimage-run</command>, by setting <command>APPIMAGE_DEBUG_EXEC=bash</command>.
</para>
</listitem>
<listitem>
<para>
Running <command>strace -vfefile</command> on the wrapped executable, looking for libraries that can't be found.
</para>
</listitem>
</itemizedlist>
</para>
</callout>
</calloutlist>
</section>
</section>

View File

@@ -24,7 +24,7 @@
<para>
This function is analogous to the <command>docker build</command> command,
in that it can be used to build a Docker-compatible repository tarball containing
in that can used to build a Docker-compatible repository tarball containing
a single image with one or multiple layers. As such, the result is suitable
for being loaded in Docker with <command>docker load</command>.
</para>
@@ -37,29 +37,29 @@
<example xml:id='ex-dockerTools-buildImage'>
<title>Docker build</title>
<programlisting>
buildImage {
name = "redis"; <co xml:id='ex-dockerTools-buildImage-1' />
tag = "latest"; <co xml:id='ex-dockerTools-buildImage-2' />
buildImage {
name = "redis"; <co xml:id='ex-dockerTools-buildImage-1' />
tag = "latest"; <co xml:id='ex-dockerTools-buildImage-2' />
fromImage = someBaseImage; <co xml:id='ex-dockerTools-buildImage-3' />
fromImageName = null; <co xml:id='ex-dockerTools-buildImage-4' />
fromImageTag = "latest"; <co xml:id='ex-dockerTools-buildImage-5' />
fromImage = someBaseImage; <co xml:id='ex-dockerTools-buildImage-3' />
fromImageName = null; <co xml:id='ex-dockerTools-buildImage-4' />
fromImageTag = "latest"; <co xml:id='ex-dockerTools-buildImage-5' />
contents = pkgs.redis; <co xml:id='ex-dockerTools-buildImage-6' />
runAsRoot = '' <co xml:id='ex-dockerTools-buildImage-runAsRoot' />
#!${pkgs.runtimeShell}
mkdir -p /data
'';
contents = pkgs.redis; <co xml:id='ex-dockerTools-buildImage-6' />
runAsRoot = '' <co xml:id='ex-dockerTools-buildImage-runAsRoot' />
#!${stdenv.shell}
mkdir -p /data
'';
config = { <co xml:id='ex-dockerTools-buildImage-8' />
Cmd = [ "/bin/redis-server" ];
WorkingDir = "/data";
Volumes = {
"/data" = {};
config = { <co xml:id='ex-dockerTools-buildImage-8' />
Cmd = [ "/bin/redis-server" ];
WorkingDir = "/data";
Volumes = {
"/data" = {};
};
};
};
}
</programlisting>
}
</programlisting>
</example>
<para>
@@ -190,11 +190,11 @@ buildImage {
By default <function>buildImage</function> will use a static date of one
second past the UNIX Epoch. This allows <function>buildImage</function> to
produce binary reproducible images. When listing images with
<command>docker images</command>, the newly created images will be
<command>docker list images</command>, the newly created images will be
listed like this:
</para>
<screen><![CDATA[
$ docker images
$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest 08c791c7846e 48 years ago 25.2MB
]]></screen>
@@ -217,7 +217,7 @@ pkgs.dockerTools.buildImage {
and now the Docker CLI will display a reasonable date and sort the images
as expected:
<screen><![CDATA[
$ docker images
$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
hello latest de2bf4786de6 About a minute ago 25.2MB
]]></screen>
@@ -226,183 +226,12 @@ hello latest de2bf4786de6 About a minute ago 25.2MB
</example>
</section>
<section xml:id="ssec-pkgs-dockerTools-buildLayeredImage">
<title>buildLayeredImage</title>
<para>
Create a Docker image with many of the store paths being on their own layer
to improve sharing between images.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the resulting image.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>tag</varname> <emphasis>optional</emphasis>
</term>
<listitem>
<para>
Tag of the generated image.
</para>
<para>
<emphasis>Default:</emphasis> the output path's hash
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>contents</varname> <emphasis>optional</emphasis>
</term>
<listitem>
<para>
Top level paths in the container. Either a single derivation, or a list
of derivations.
</para>
<para>
<emphasis>Default:</emphasis> <literal>[]</literal>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>config</varname> <emphasis>optional</emphasis>
</term>
<listitem>
<para>
Run-time configuration of the container. A full list of the options are
available at in the
<link xlink:href="https://github.com/moby/moby/blob/master/image/spec/v1.2.md#image-json-field-descriptions">
Docker Image Specification v1.2.0 </link>.
</para>
<para>
<emphasis>Default:</emphasis> <literal>{}</literal>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>created</varname> <emphasis>optional</emphasis>
</term>
<listitem>
<para>
Date and time the layers were created. Follows the same
<literal>now</literal> exception supported by
<literal>buildImage</literal>.
</para>
<para>
<emphasis>Default:</emphasis> <literal>1970-01-01T00:00:01Z</literal>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>maxLayers</varname> <emphasis>optional</emphasis>
</term>
<listitem>
<para>
Maximum number of layers to create.
</para>
<para>
<emphasis>Default:</emphasis> <literal>24</literal>
</para>
</listitem>
</varlistentry>
</variablelist>
<section xml:id="dockerTools-buildLayeredImage-arg-contents">
<title>Behavior of <varname>contents</varname> in the final image</title>
<para>
Each path directly listed in <varname>contents</varname> will have a
symlink in the root of the image.
</para>
<para>
For example:
<programlisting><![CDATA[
pkgs.dockerTools.buildLayeredImage {
name = "hello";
contents = [ pkgs.hello ];
}
]]></programlisting>
will create symlinks for all the paths in the <literal>hello</literal>
package:
<screen><![CDATA[
/bin/hello -> /nix/store/h1zb1padqbbb7jicsvkmrym3r6snphxg-hello-2.10/bin/hello
/share/info/hello.info -> /nix/store/h1zb1padqbbb7jicsvkmrym3r6snphxg-hello-2.10/share/info/hello.info
/share/locale/bg/LC_MESSAGES/hello.mo -> /nix/store/h1zb1padqbbb7jicsvkmrym3r6snphxg-hello-2.10/share/locale/bg/LC_MESSAGES/hello.mo
]]></screen>
</para>
</section>
<section xml:id="dockerTools-buildLayeredImage-arg-config">
<title>Automatic inclusion of <varname>config</varname> references</title>
<para>
The closure of <varname>config</varname> is automatically included in the
closure of the final image.
</para>
<para>
This allows you to make very simple Docker images with very little code.
This container will start up and run <command>hello</command>:
<programlisting><![CDATA[
pkgs.dockerTools.buildLayeredImage {
name = "hello";
config.Cmd = [ "${pkgs.hello}/bin/hello" ];
}
]]></programlisting>
</para>
</section>
<section xml:id="dockerTools-buildLayeredImage-arg-maxLayers">
<title>Adjusting <varname>maxLayers</varname></title>
<para>
Increasing the <varname>maxLayers</varname> increases the number of layers
which have a chance to be shared between different images.
</para>
<para>
Modern Docker installations support up to 128 layers, however older
versions support as few as 42.
</para>
<para>
If the produced image will not be extended by other Docker builds, it is
safe to set <varname>maxLayers</varname> to <literal>128</literal>. However
it will be impossible to extend the image further.
</para>
<para>
The first (<literal>maxLayers-2</literal>) most "popular" paths will have
their own individual layers, then layer #<literal>maxLayers-1</literal>
will contain all the remaining "unpopular" paths, and finally layer
#<literal>maxLayers</literal> will contain the Image configuration.
</para>
<para>
Docker's Layers are not inherently ordered, they are content-addressable
and are not explicitly layered until they are composed in to an Image.
</para>
</section>
</section>
<section xml:id="ssec-pkgs-dockerTools-fetchFromRegistry">
<title>pullImage</title>
<para>
This function is analogous to the <command>docker pull</command> command, in
that it can be used to pull a Docker image from a Docker registry. By default
that can be used to pull a Docker image from a Docker registry. By default
<link xlink:href="https://hub.docker.com/">Docker Hub</link> is used to pull
images.
</para>
@@ -414,15 +243,15 @@ pkgs.dockerTools.buildLayeredImage {
<example xml:id='ex-dockerTools-pullImage'>
<title>Docker pull</title>
<programlisting>
pullImage {
imageName = "nixos/nix"; <co xml:id='ex-dockerTools-pullImage-1' />
imageDigest = "sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b"; <co xml:id='ex-dockerTools-pullImage-2' />
finalImageTag = "1.11"; <co xml:id='ex-dockerTools-pullImage-3' />
sha256 = "0mqjy3zq2v6rrhizgb9nvhczl87lcfphq9601wcprdika2jz7qh8"; <co xml:id='ex-dockerTools-pullImage-4' />
os = "linux"; <co xml:id='ex-dockerTools-pullImage-5' />
arch = "x86_64"; <co xml:id='ex-dockerTools-pullImage-6' />
}
</programlisting>
pullImage {
imageName = "nixos/nix"; <co xml:id='ex-dockerTools-pullImage-1' />
imageDigest = "sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b"; <co xml:id='ex-dockerTools-pullImage-2' />
finalImageTag = "1.11"; <co xml:id='ex-dockerTools-pullImage-3' />
sha256 = "0mqjy3zq2v6rrhizgb9nvhczl87lcfphq9601wcprdika2jz7qh8"; <co xml:id='ex-dockerTools-pullImage-4' />
os = "linux"; <co xml:id='ex-dockerTools-pullImage-5' />
arch = "x86_64"; <co xml:id='ex-dockerTools-pullImage-6' />
}
</programlisting>
</example>
<calloutlist>
@@ -444,9 +273,9 @@ pullImage {
exactly which image you want. By default it will match the OS and
architecture of the host the command is run on.
<programlisting>
$ nix-shell --packages skopeo jq --command "skopeo --override-os linux --override-arch x86_64 inspect docker://docker.io/nixos/nix:1.11 | jq -r '.Digest'"
sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b
</programlisting>
$ nix-shell --packages skopeo jq --command "skopeo --override-os linux --override-arch x86_64 inspect docker://docker.io/nixos/nix:1.11 | jq -r '.Digest'"
sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b
</programlisting>
This argument is required.
</para>
</callout>
@@ -484,7 +313,7 @@ sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b
<para>
This function is analogous to the <command>docker export</command> command,
in that it can be used to flatten a Docker image that contains multiple layers. It
in that can used to flatten a Docker image that contains multiple layers. It
is in fact the result of the merge of all the layers of the image. As such,
the result is suitable for being imported in Docker with <command>docker
import</command>.
@@ -504,13 +333,13 @@ sha256:20d9485b25ecfd89204e843a962c1bd70e9cc6858d65d7f5fadc340246e2116b
<example xml:id='ex-dockerTools-exportImage'>
<title>Docker export</title>
<programlisting>
exportImage {
fromImage = someLayeredImage;
fromImageName = null;
fromImageTag = null;
exportImage {
fromImage = someLayeredImage;
fromImageName = null;
fromImageTag = null;
name = someLayeredImage.name;
}
name = someLayeredImage.name;
}
</programlisting>
</example>
@@ -540,24 +369,24 @@ exportImage {
<example xml:id='ex-dockerTools-shadowSetup'>
<title>Shadow base files</title>
<programlisting>
buildImage {
name = "shadow-basic";
buildImage {
name = "shadow-basic";
runAsRoot = ''
#!${pkgs.runtimeShell}
${shadowSetup}
groupadd -r redis
useradd -r -g redis redis
mkdir /data
chown redis:redis /data
'';
}
</programlisting>
runAsRoot = ''
#!${stdenv.shell}
${shadowSetup}
groupadd -r redis
useradd -r -g redis redis
mkdir /data
chown redis:redis /data
'';
}
</programlisting>
</example>
<para>
Creating base files like <literal>/etc/passwd</literal> or
<literal>/etc/login.defs</literal> is necessary for shadow-utils to
<literal>/etc/login.defs</literal> are necessary for shadow-utils to
manipulate users and groups.
</para>
</section>

View File

@@ -1,206 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="sec-pkgs-fetchers">
<title>Fetcher functions</title>
<para>
When using Nix, you will frequently need to download source code
and other files from the internet. Nixpkgs comes with a few helper
functions that allow you to fetch fixed-output derivations in a
structured way.
</para>
<para>
The two fetcher primitives are <function>fetchurl</function> and
<function>fetchzip</function>. Both of these have two required
arguments, a URL and a hash. The hash is typically
<literal>sha256</literal>, although many more hash algorithms are
supported. Nixpkgs contributors are currently recommended to use
<literal>sha256</literal>. This hash will be used by Nix to
identify your source. A typical usage of fetchurl is provided
below.
</para>
<programlisting><![CDATA[
{ stdenv, fetchurl }:
stdenv.mkDerivation {
name = "hello";
src = fetchurl {
url = "http://www.example.org/hello.tar.gz";
sha256 = "1111111111111111111111111111111111111111111111111111";
};
}
]]></programlisting>
<para>
The main difference between <function>fetchurl</function> and
<function>fetchzip</function> is in how they store the contents.
<function>fetchurl</function> will store the unaltered contents of
the URL within the Nix store. <function>fetchzip</function> on the
other hand will decompress the archive for you, making files and
directories directly accessible in the future.
<function>fetchzip</function> can only be used with archives.
Despite the name, <function>fetchzip</function> is not limited to
.zip files and can also be used with any tarball.
</para>
<para>
<function>fetchpatch</function> works very similarly to
<function>fetchurl</function> with the same arguments expected. It
expects patch files as a source and 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.
</para>
<para>
Other fetcher functions allow you to add source code directly from
a VCS such as subversion or git. These are mostly straightforward
names based on the name of the command used with the VCS system.
Because they give you a working repository, they act most like
<function>fetchzip</function>.
</para>
<variablelist>
<varlistentry>
<term>
<literal>fetchsvn</literal>
</term>
<listitem>
<para>
Used with Subversion. Expects <literal>url</literal> to a
Subversion directory, <literal>rev</literal>, and
<literal>sha256</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchgit</literal>
</term>
<listitem>
<para>
Used with Git. Expects <literal>url</literal> to a Git repo,
<literal>rev</literal>, and <literal>sha256</literal>.
<literal>rev</literal> in this case can be full the git commit
id (SHA1 hash) or a tag name like
<literal>refs/tags/v1.0</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchfossil</literal>
</term>
<listitem>
<para>
Used with Fossil. Expects <literal>url</literal> to a Fossil
archive, <literal>rev</literal>, and <literal>sha256</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchcvs</literal>
</term>
<listitem>
<para>
Used with CVS. Expects <literal>cvsRoot</literal>,
<literal>tag</literal>, and <literal>sha256</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchhg</literal>
</term>
<listitem>
<para>
Used with Mercurial. Expects <literal>url</literal>,
<literal>rev</literal>, and <literal>sha256</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
A number of fetcher functions wrap part of
<function>fetchurl</function> and <function>fetchzip</function>.
They are mainly convenience functions intended for commonly used
destinations of source code in Nixpkgs. These wrapper fetchers are
listed below.
</para>
<variablelist>
<varlistentry>
<term>
<literal>fetchFromGitHub</literal>
</term>
<listitem>
<para>
<function>fetchFromGitHub</function> expects four arguments.
<literal>owner</literal> is a string corresponding to the
GitHub user or organization that controls this repository.
<literal>repo</literal> corresponds to the name of the
software repository. These are located at the top of every
GitHub HTML page as
<literal>owner</literal>/<literal>repo</literal>.
<literal>rev</literal> corresponds to the Git commit hash or
tag (e.g <literal>v1.0</literal>) that will be downloaded from
Git. Finally, <literal>sha256</literal> corresponds to the
hash of the extracted directory. Again, other hash algorithms
are also available but <literal>sha256</literal> is currently
preferred.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchFromGitLab</literal>
</term>
<listitem>
<para>
This is used with GitLab repositories. The arguments expected
are very similar to fetchFromGitHub above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchFromBitbucket</literal>
</term>
<listitem>
<para>
This is used with BitBucket repositories. The arguments expected
are very similar to fetchFromGitHub above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchFromSavannah</literal>
</term>
<listitem>
<para>
This is used with Savannah repositories. The arguments expected
are very similar to fetchFromGitHub above.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>fetchFromRepoOrCz</literal>
</term>
<listitem>
<para>
This is used with repo.or.cz repositories. The arguments
expected are very similar to fetchFromGitHub above.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>

View File

@@ -9,16 +9,5 @@
through <code>import &lt;nixpkgs/lib&gt;</code>.
</para>
<xi:include href="./library/asserts.xml" />
<xi:include href="./library/attrsets.xml" />
<!-- These docs are generated via nixdoc. To add another generated
library function file to this list, the file
`lib-function-docs.nix` must also be updated. -->
<xi:include href="./library/generated/strings.xml" />
<xi:include href="./library/generated/trivial.xml" />
<xi:include href="./library/generated/lists.xml" />
<xi:include href="./library/generated/debug.xml" />
<xi:include href="./library/generated/options.xml" />
</section>

View File

@@ -1,117 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="sec-functions-library-asserts">
<title>Assert functions</title>
<section xml:id="function-library-lib.asserts.assertMsg">
<title><function>lib.asserts.assertMsg</function></title>
<subtitle><literal>assertMsg :: Bool -> String -> Bool</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.asserts.assertMsg" />
<para>
Print a trace message if <literal>pred</literal> is false.
</para>
<para>
Intended to be used to augment asserts with helpful error messages.
</para>
<variablelist>
<varlistentry>
<term>
<varname>pred</varname>
</term>
<listitem>
<para>
Condition under which the <varname>msg</varname> should
<emphasis>not</emphasis> be printed.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>msg</varname>
</term>
<listitem>
<para>
Message to print.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.asserts.assertMsg-example-false">
<title>Printing when the predicate is false</title>
<programlisting><![CDATA[
assert lib.asserts.assertMsg ("foo" == "bar") "foo is not bar, silly"
stderr> trace: foo is not bar, silly
stderr> assert failed
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.asserts.assertOneOf">
<title><function>lib.asserts.assertOneOf</function></title>
<subtitle><literal>assertOneOf :: String -> String ->
StringList -> Bool</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.asserts.assertOneOf" />
<para>
Specialized <function>asserts.assertMsg</function> for checking if
<varname>val</varname> is one of the elements of <varname>xs</varname>.
Useful for checking enums.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the variable the user entered <varname>val</varname> into,
for inclusion in the error message.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>val</varname>
</term>
<listitem>
<para>
The value of what the user provided, to be compared against the values in
<varname>xs</varname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>xs</varname>
</term>
<listitem>
<para>
The list of valid values.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.asserts.assertOneOf-example">
<title>Ensuring a user provided a possible value</title>
<programlisting><![CDATA[
let sslLibrary = "bearssl";
in lib.asserts.assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ];
=> false
stderr> trace: sslLibrary must be one of "openssl", "libressl", but is: "bearssl"
]]></programlisting>
</example>
</section>
</section>

View File

@@ -966,766 +966,5 @@ lib.attrsets.mapAttrsToList (name: value: "${name}=${value}")
itself to attribute sets. Also, the first argument of the argument function
is a <emphasis>list</emphasis> of the names of the containing attributes.
</para>
<variablelist>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> Any -> Any</literal>
</para>
<para>
Given a list of attribute names and value, return a new value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name_path</varname>
</term>
<listitem>
<para>
The list of attribute names to this value.
</para>
<para>
For example, the <varname>name_path</varname> for the
<literal>example</literal> string in the attribute set <literal>{ foo
= { bar = "example"; }; }</literal> is <literal>[ "foo" "bar"
]</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The attribute's value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>set</varname>
</term>
<listitem>
<para>
The attribute set to recursively map over.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.mapAttrsRecursive-example">
<title>A contrived example of using <function>lib.attrsets.mapAttrsRecursive</function></title>
<programlisting><![CDATA[
mapAttrsRecursive
(path: value: concatStringsSep "-" (path ++ [value]))
{
n = {
a = "A";
m = {
b = "B";
c = "C";
};
};
d = "D";
}
=> {
n = {
a = "n-a-A";
m = {
b = "n-m-b-B";
c = "n-m-c-C";
};
};
d = "d-D";
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.mapAttrsRecursiveCond">
<title><function>lib.attrsets.mapAttrsRecursiveCond</function></title>
<subtitle><literal>mapAttrsRecursiveCond :: (AttrSet -> Bool) -> ([ String ] -> Any -> Any) -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.mapAttrsRecursiveCond" />
<para>
Like <function>mapAttrsRecursive</function>, but it takes an additional
predicate function that tells it whether to recursive into an attribute set.
If it returns false, <function>mapAttrsRecursiveCond</function> does not
recurse, but does apply the map function. It is returns true, it does
recurse, and does not apply the map function.
</para>
<variablelist>
<varlistentry>
<term>
<varname>cond</varname>
</term>
<listitem>
<para>
<literal>(AttrSet -> Bool)</literal>
</para>
<para>
Determine if <function>mapAttrsRecursive</function> should recurse deeper
in to the attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>attributeset</varname>
</term>
<listitem>
<para>
An attribute set.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> Any -> Any</literal>
</para>
<para>
Given a list of attribute names and value, return a new value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name_path</varname>
</term>
<listitem>
<para>
The list of attribute names to this value.
</para>
<para>
For example, the <varname>name_path</varname> for the
<literal>example</literal> string in the attribute set <literal>{ foo
= { bar = "example"; }; }</literal> is <literal>[ "foo" "bar"
]</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The attribute's value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>set</varname>
</term>
<listitem>
<para>
The attribute set to recursively map over.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.mapAttrsRecursiveCond-example">
<title>Only convert attribute values to JSON if the containing attribute set is marked for recursion</title>
<programlisting><![CDATA[
lib.attrsets.mapAttrsRecursiveCond
({ recurse ? false, ... }: recurse)
(name: value: builtins.toJSON value)
{
dorecur = {
recurse = true;
hello = "there";
};
dontrecur = {
converted-to- = "json";
};
}
=> {
dorecur = {
hello = "\"there\"";
recurse = "true";
};
dontrecur = "{\"converted-to\":\"json\"}";
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.genAttrs">
<title><function>lib.attrsets.genAttrs</function></title>
<subtitle><literal>genAttrs :: [ String ] -> (String -> Any) -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.genAttrs" />
<para>
Generate an attribute set by mapping a function over a list of attribute
names.
</para>
<variablelist>
<varlistentry>
<term>
<varname>names</varname>
</term>
<listitem>
<para>
Names of values in the resulting attribute set.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>String -> Any</literal>
</para>
<para>
Takes the name of the attribute and return the attribute's value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute to generate a value for.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.genAttrs-example">
<title>Generate an attrset based on names only</title>
<programlisting><![CDATA[
lib.attrsets.genAttrs [ "foo" "bar" ] (name: "x_${name}")
=> { foo = "x_foo"; bar = "x_bar"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.isDerivation">
<title><function>lib.attrsets.isDerivation</function></title>
<subtitle><literal>isDerivation :: Any -> Bool</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.isDerivation" />
<para>
Check whether the argument is a derivation. Any set with <code>{ type =
"derivation"; }</code> counts as a derivation.
</para>
<variablelist>
<varlistentry>
<term>
<varname>value</varname>
</term>
<listitem>
<para>
The value which is possibly a derivation.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.isDerivation-example-true">
<title>A package is a derivation</title>
<programlisting><![CDATA[
lib.attrsets.isDerivation (import <nixpkgs> {}).ruby
=> true
]]></programlisting>
</example>
<example xml:id="function-library-lib.attrsets.isDerivation-example-false">
<title>Anything else is not a derivation</title>
<programlisting><![CDATA[
lib.attrsets.isDerivation "foobar"
=> false
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.toDerivation">
<title><function>lib.attrsets.toDerivation</function></title>
<subtitle><literal>toDerivation :: Path -> Derivation</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.toDerivation" />
<para>
Converts a store path to a fake derivation.
</para>
<variablelist>
<varlistentry>
<term>
<varname>path</varname>
</term>
<listitem>
<para>
A store path to convert to a derivation.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>
<section xml:id="function-library-lib.attrsets.optionalAttrs">
<title><function>lib.attrsets.optionalAttrs</function></title>
<subtitle><literal>optionalAttrs :: Bool -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.optionalAttrs" />
<para>
Conditionally return an attribute set or an empty attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>cond</varname>
</term>
<listitem>
<para>
Condition under which the <varname>as</varname> attribute set is
returned.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>as</varname>
</term>
<listitem>
<para>
The attribute set to return if <varname>cond</varname> is true.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.optionalAttrs-example-true">
<title>Return the provided attribute set when <varname>cond</varname> is true</title>
<programlisting><![CDATA[
lib.attrsets.optionalAttrs true { my = "set"; }
=> { my = "set"; }
]]></programlisting>
</example>
<example xml:id="function-library-lib.attrsets.optionalAttrs-example-false">
<title>Return an empty attribute set when <varname>cond</varname> is false</title>
<programlisting><![CDATA[
lib.attrsets.optionalAttrs false { my = "set"; }
=> { }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrsWithNames">
<title><function>lib.attrsets.zipAttrsWithNames</function></title>
<subtitle><literal>zipAttrsWithNames :: [ String ] -> (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrsWithNames" />
<para>
Merge sets of attributes and use the function <varname>f</varname> to merge
attribute values where the attribute name is in <varname>names</varname>.
</para>
<variablelist>
<varlistentry>
<term>
<varname>names</varname>
</term>
<listitem>
<para>
A list of attribute names to zip.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>(String -> [ Any ] -> Any</literal>
</para>
<para>
Accepts an attribute name, all the values, and returns a combined value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute each value came from.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>vs</varname>
</term>
<listitem>
<para>
A list of values collected from the list of attribute sets.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrsWithNames-example">
<title>Summing a list of attribute sets of numbers</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrsWithNames
[ "a" "b" ]
(name: vals: "${name} ${toString (builtins.foldl' (a: b: a + b) 0 vals)}")
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = "a 11"; b = "b 101"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrsWith">
<title><function>lib.attrsets.zipAttrsWith</function></title>
<subtitle><literal>zipAttrsWith :: (String -> [ Any ] -> Any) -> [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrsWith" />
<para>
Merge sets of attributes and use the function <varname>f</varname> to merge
attribute values. Similar to
<xref
linkend="function-library-lib.attrsets.zipAttrsWithNames" /> where
all key names are passed for <varname>names</varname>.
</para>
<variablelist>
<varlistentry>
<term>
<varname>f</varname>
</term>
<listitem>
<para>
<literal>(String -> [ Any ] -> Any</literal>
</para>
<para>
Accepts an attribute name, all the values, and returns a combined value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>name</varname>
</term>
<listitem>
<para>
The name of the attribute each value came from.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>vs</varname>
</term>
<listitem>
<para>
A list of values collected from the list of attribute sets.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrsWith-example">
<title>Summing a list of attribute sets of numbers</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrsWith
(name: vals: "${name} ${toString (builtins.foldl' (a: b: a + b) 0 vals)}")
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = "a 11"; b = "b 101"; c = "c 1001"; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.zipAttrs">
<title><function>lib.attrsets.zipAttrs</function></title>
<subtitle><literal>zipAttrsWith :: [ AttrSet ] -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.zipAttrs" />
<para>
Merge sets of attributes and combine each attribute value in to a list.
Similar to <xref linkend="function-library-lib.attrsets.zipAttrsWith" />
where the merge function returns a list of all values.
</para>
<variablelist>
<varlistentry>
<term>
<varname>sets</varname>
</term>
<listitem>
<para>
A list of attribute sets to zip together.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.zipAttrs-example">
<title>Combining a list of attribute sets</title>
<programlisting><![CDATA[
lib.attrsets.zipAttrs
[
{ a = 1; b = 1; c = 1; }
{ a = 10; }
{ b = 100; }
{ c = 1000; }
]
=> { a = [ 1 10 ]; b = [ 1 100 ]; c = [ 1 1000 ]; }
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.recursiveUpdateUntil">
<title><function>lib.attrsets.recursiveUpdateUntil</function></title>
<subtitle><literal>recursiveUpdateUntil :: ( [ String ] -> AttrSet -> AttrSet -> Bool ) -> AttrSet -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.recursiveUpdateUntil" />
<para>
Does the same as the update operator <literal>//</literal> except that
attributes are merged until the given predicate is verified. The predicate
should accept 3 arguments which are the path to reach the attribute, a part
of the first attribute set and a part of the second attribute set. When the
predicate is verified, the value of the first attribute set is replaced by
the value of the second attribute set.
</para>
<variablelist>
<varlistentry>
<term>
<varname>pred</varname>
</term>
<listitem>
<para>
<literal>[ String ] -> AttrSet -> AttrSet -> Bool</literal>
</para>
<variablelist>
<varlistentry>
<term>
<varname>path</varname>
</term>
<listitem>
<para>
The path to the values in the left and right hand sides.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>l</varname>
</term>
<listitem>
<para>
The left hand side value.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>r</varname>
</term>
<listitem>
<para>
The right hand side value.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>lhs</varname>
</term>
<listitem>
<para>
The left hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>rhs</varname>
</term>
<listitem>
<para>
The right hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.recursiveUpdateUntil-example">
<title>Recursively merging two attribute sets</title>
<programlisting><![CDATA[
lib.attrsets.recursiveUpdateUntil (path: l: r: path == ["foo"])
{
# first attribute set
foo.bar = 1;
foo.baz = 2;
bar = 3;
}
{
#second attribute set
foo.bar = 1;
foo.quz = 2;
baz = 4;
}
=> {
foo.bar = 1; # 'foo.*' from the second set
foo.quz = 2; #
bar = 3; # 'bar' from the first set
baz = 4; # 'baz' from the second set
}
]]></programlisting>
</example>
</section>
<section xml:id="function-library-lib.attrsets.recursiveUpdate">
<title><function>lib.attrsets.recursiveUpdate</function></title>
<subtitle><literal>recursiveUpdate :: AttrSet -> AttrSet -> AttrSet</literal>
</subtitle>
<xi:include href="./locations.xml" xpointer="lib.attrsets.recursiveUpdate" />
<para>
A recursive variant of the update operator <literal>//</literal>. The
recursion stops when one of the attribute values is not an attribute set, in
which case the right hand side value takes precedence over the left hand
side value.
</para>
<variablelist>
<varlistentry>
<term>
<varname>lhs</varname>
</term>
<listitem>
<para>
The left hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>rhs</varname>
</term>
<listitem>
<para>
The right hand attribute set of the merge.
</para>
</listitem>
</varlistentry>
</variablelist>
<example xml:id="function-library-lib.attrsets.recursiveUpdate-example">
<title>Recursively merging two attribute sets</title>
<programlisting><![CDATA[
recursiveUpdate
{
boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/hda";
}
{
boot.loader.grub.device = "";
}
=> {
boot.loader.grub.enable = true;
boot.loader.grub.device = "";
}
]]></programlisting>
</example>
</section>
</section>

View File

@@ -1,78 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="sec-pkgs-nix-gitignore">
<title>pkgs.nix-gitignore</title>
<para>
<function>pkgs.nix-gitignore</function> is a function that acts similarly to
<literal>builtins.filterSource</literal> but also allows filtering with the
help of the gitignore format.
</para>
<section xml:id="sec-pkgs-nix-gitignore-usage">
<title>Usage</title>
<para>
<literal>pkgs.nix-gitignore</literal> exports a number of functions, but
you'll most likely need either <literal>gitignoreSource</literal> or
<literal>gitignoreSourcePure</literal>. As their first argument, they both
accept either 1. a file with gitignore lines or 2. a string
with gitignore lines, or 3. a list of either of the two. They will be
concatenated into a single big string.
</para>
<programlisting><![CDATA[
{ pkgs ? import <nixpkgs> {} }:
nix-gitignore.gitignoreSource [] ./source
# Simplest version
nix-gitignore.gitignoreSource "supplemental-ignores\n" ./source
# This one reads the ./source/.gitignore and concats the auxiliary ignores
nix-gitignore.gitignoreSourcePure "ignore-this\nignore-that\n" ./source
# Use this string as gitignore, don't read ./source/.gitignore.
nix-gitignore.gitignoreSourcePure ["ignore-this\nignore-that\n", ~/.gitignore] ./source
# It also accepts a list (of strings and paths) that will be concatenated
# once the paths are turned to strings via readFile.
]]></programlisting>
<para>
These functions are derived from the <literal>Filter</literal> functions
by setting the first filter argument to <literal>(_: _: true)</literal>:
</para>
<programlisting><![CDATA[
gitignoreSourcePure = gitignoreFilterSourcePure (_: _: true);
gitignoreSource = gitignoreFilterSource (_: _: true);
]]></programlisting>
<para>
Those filter functions accept the same arguments the <literal>builtins.filterSource</literal> function would pass to its filters, thus <literal>fn: gitignoreFilterSourcePure fn ""</literal> should be extensionally equivalent to <literal>filterSource</literal>. The file is blacklisted iff it's blacklisted by either your filter or the gitignoreFilter.
</para>
<para>
If you want to make your own filter from scratch, you may use
</para>
<programlisting><![CDATA[
gitignoreFilter = ign: root: filterPattern (gitignoreToPatterns ign) root;
]]></programlisting>
</section>
<section xml:id="sec-pkgs-nix-gitignore-usage-recursive">
<title>gitignore files in subdirectories</title>
<para>
If you wish to use a filter that would search for .gitignore files in subdirectories, just like git does by default, use this function:
</para>
<programlisting><![CDATA[
gitignoreFilterRecursiveSource = filter: patterns: root:
# OR
gitignoreRecursiveSource = gitignoreFilterSourcePure (_: _: true);
]]></programlisting>
</section>
</section>

View File

@@ -6,14 +6,8 @@
<para>
Sometimes one wants to override parts of <literal>nixpkgs</literal>, e.g.
derivation attributes, the results of derivations.
</para>
<para>
These functions are used to make changes to packages, returning only single
packages. <link xlink:href="#chap-overlays">Overlays</link>, on the other
hand, can be used to combine the overridden packages across the entire
package set of Nixpkgs.
derivation attributes, the results of derivations or even the whole package
set.
</para>
<section xml:id="sec-pkg-override">
@@ -31,19 +25,12 @@
<para>
Example usages:
<programlisting>pkgs.foo.override { arg1 = val1; arg2 = val2; ... }</programlisting>
<!-- TODO: move below programlisting to a new section about extending and overlays
and reference it
-->
<programlisting>
import pkgs.path { overlays = [ (self: super: {
foo = super.foo.override { barSupport = true ; };
})]};
</programlisting>
<programlisting>
mypkg = pkgs.callPackage ./mypkg.nix {
mydep = pkgs.mydep.override { ... };
}
</programlisting>
<programlisting>import pkgs.path { overlays = [ (self: super: {
foo = super.foo.override { barSupport = true ; };
})]};</programlisting>
<programlisting>mypkg = pkgs.callPackage ./mypkg.nix {
mydep = pkgs.mydep.override { ... };
}</programlisting>
</para>
<para>
@@ -68,11 +55,9 @@ mypkg = pkgs.callPackage ./mypkg.nix {
<para>
Example usage:
<programlisting>
helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
separateDebugInfo = true;
});
</programlisting>
<programlisting>helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
separateDebugInfo = true;
});</programlisting>
</para>
<para>
@@ -95,11 +80,11 @@ helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
in this case, as it overrides only the attributes of the final derivation.
It is for this reason that <varname>overrideAttrs</varname> should be
preferred in (almost) all cases to <varname>overrideDerivation</varname>,
i.e. to allow using <varname>stdenv.mkDerivation</varname> to process input
i.e. to allow using <varname>sdenv.mkDerivation</varname> 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. <varname>buildInputs</varname> vs
<varname>nativeBuildInputs</varname>), and it involves less typing).
<varname>nativeBuildInputs</varname>, and involves less typing.
</para>
</note>
</section>
@@ -141,16 +126,14 @@ helloWithDebug = pkgs.hello.overrideAttrs (oldAttrs: rec {
<para>
Example usage:
<programlisting>
mySed = pkgs.gnused.overrideDerivation (oldAttrs: {
name = "sed-4.2.2-pre";
src = fetchurl {
url = ftp://alpha.gnu.org/gnu/sed/sed-4.2.2-pre.tar.bz2;
sha256 = "11nq06d131y4wmf3drm0yk502d2xc6n5qy82cg88rb9nqd2lj41k";
};
patches = [];
});
</programlisting>
<programlisting>mySed = pkgs.gnused.overrideDerivation (oldAttrs: {
name = "sed-4.2.2-pre";
src = fetchurl {
url = ftp://alpha.gnu.org/gnu/sed/sed-4.2.2-pre.tar.bz2;
sha256 = "11nq06d131y4wmf3drm0yk502d2xc6n5qy82cg88rb9nqd2lj41k";
};
patches = [];
});</programlisting>
</para>
<para>
@@ -190,10 +173,8 @@ mySed = pkgs.gnused.overrideDerivation (oldAttrs: {
<para>
Example usage:
<programlisting>
f = { a, b }: { result = a+b; };
c = lib.makeOverridable f { a = 1; b = 2; };
</programlisting>
<programlisting>f = { a, b }: { result = a+b; }
c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
</para>
<para>

View File

@@ -1,27 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/xinclude"
xml:id="sec-prefer-remote-fetch">
<title>prefer-remote-fetch overlay</title>
<para>
<function>prefer-remote-fetch</function> is an overlay that download sources
on remote builder. This is useful when the evaluating machine has a slow
upload while the builder can fetch faster directly from the source.
To use it, put the following snippet as a new overlay:
<programlisting>
self: super:
(super.prefer-remote-fetch self super)
</programlisting>
A full configuration example for that sets the overlay up for your own account,
could look like this
<programlisting>
$ mkdir ~/.config/nixpkgs/overlays/
$ cat &gt; ~/.config/nixpkgs/overlays/prefer-remote-fetch.nix &lt;&lt;EOF
self: super: super.prefer-remote-fetch self super
EOF
</programlisting>
</para>
</section>

View File

@@ -1,124 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
xml:id="sec-trivial-builders">
<title>Trivial builders</title>
<para>
Nixpkgs provides a couple of functions that help with building
derivations. The most important one,
<function>stdenv.mkDerivation</function>, has already been
documented above. The following functions wrap
<function>stdenv.mkDerivation</function>, making it easier to use
in certain cases.
</para>
<variablelist>
<varlistentry>
<term>
<literal>runCommand</literal>
</term>
<listitem>
<para>
This takes three arguments, <literal>name</literal>,
<literal>env</literal>, and <literal>buildCommand</literal>.
<literal>name</literal> is just the name that Nix will append
to the store path in the same way that
<literal>stdenv.mkDerivation</literal> uses its
<literal>name</literal> attribute. <literal>env</literal> is an
attribute set specifying environment variables that will be set
for this derivation. These attributes are then passed to the
wrapped <literal>stdenv.mkDerivation</literal>.
<literal>buildCommand</literal> specifies the commands that
will be run to create this derivation. Note that you will need
to create <literal>$out</literal> for Nix to register the
command as successful.
</para>
<para>
An example of using <literal>runCommand</literal> is provided
below.
</para>
<programlisting>
(import &lt;nixpkgs&gt; {}).runCommand "my-example" {} ''
echo My example command is running
mkdir $out
echo I can write data to the Nix store > $out/message
echo I can also run basic commands like:
echo ls
ls
echo whoami
whoami
echo date
date
''
</programlisting>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>runCommandCC</literal>
</term>
<listitem>
<para>
This works just like <literal>runCommand</literal>. The only
difference is that it also provides a C compiler in
<literal>buildCommand</literal>s environment. To minimize your
dependencies, you should only use this if you are sure you will
need a C compiler as part of running your command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>writeTextFile</literal>, <literal>writeText</literal>,
<literal>writeTextDir</literal>, <literal>writeScript</literal>,
<literal>writeScriptBin</literal>
</term>
<listitem>
<para>
These functions write <literal>text</literal> to the Nix store.
This is useful for creating scripts from Nix expressions.
<literal>writeTextFile</literal> takes an attribute set and
expects two arguments, <literal>name</literal> and
<literal>text</literal>. <literal>name</literal> corresponds to
the name used in the Nix store path. <literal>text</literal>
will be the contents of the file. You can also set
<literal>executable</literal> to true to make this file have
the executable bit set.
</para>
<para>
Many more commands wrap <literal>writeTextFile</literal>
including <literal>writeText</literal>,
<literal>writeTextDir</literal>,
<literal>writeScript</literal>, and
<literal>writeScriptBin</literal>. These are convenience
functions over <literal>writeTextFile</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<literal>symlinkJoin</literal>
</term>
<listitem>
<para>
This can be used to put many derivations into the same directory
structure. It works by creating a new derivation and adding
symlinks to each of the paths listed. It expects two arguments,
<literal>name</literal>, and <literal>paths</literal>.
<literal>name</literal> is the name used in the Nix store path
for the created derivation. <literal>paths</literal> is a list of
paths that will be symlinked. These paths can be to Nix store
derivations or any other subdirectory contained within.
</para>
</listitem>
</varlistentry>
</variablelist>
</section>

View File

@@ -1,240 +0,0 @@
---
title: Android
author: Sander van der Burg
date: 2018-11-18
---
# Android
The Android build environment provides three major features and a number of
supporting features.
Deploying an Android SDK installation with plugins
--------------------------------------------------
The first use case is deploying the SDK with a desired set of plugins or subsets
of an SDK.
```nix
with import <nixpkgs> {};
let
androidComposition = androidenv.composeAndroidPackages {
toolsVersion = "25.2.5";
platformToolsVersion = "27.0.1";
buildToolsVersions = [ "27.0.3" ];
includeEmulator = false;
emulatorVersion = "27.2.0";
platformVersions = [ "24" ];
includeSources = false;
includeDocs = false;
includeSystemImages = false;
systemImageTypes = [ "default" ];
abiVersions = [ "armeabi-v7a" ];
lldbVersions = [ "2.0.2558144" ];
cmakeVersions = [ "3.6.4111459" ];
includeNDK = false;
ndkVersion = "16.1.4479499";
useGoogleAPIs = false;
useGoogleTVAddOns = false;
includeExtras = [
"extras;google;gcm"
];
};
in
androidComposition.androidsdk
```
The above function invocation states that we want an Android SDK with the above
specified plugin versions. By default, most plugins are disabled. Notable
exceptions are the tools, platform-tools and build-tools sub packages.
The following parameters are supported:
* `toolsVersion`, specifies the version of the tools package to use
* `platformsToolsVersion` specifies the version of the `platform-tools` plugin
* `buildToolsVersion` specifies the versions of the `build-tools` plugins to
use.
* `includeEmulator` specifies whether to deploy the emulator package (`false`
by default). When enabled, the version of the emulator to deploy can be
specified by setting the `emulatorVersion` parameter.
* `includeDocs` specifies whether the documentation catalog should be included.
* `lldbVersions` specifies what LLDB versions should be deployed.
* `cmakeVersions` specifies which CMake versions should be deployed.
* `includeNDK` specifies that the Android NDK bundle should be included.
Defaults to: `false`.
* `ndkVersion` specifies the NDK version that we want to use.
* `includeExtras` is an array of identifier strings referring to arbitrary
add-on packages that should be installed.
* `platformVersions` specifies which platform SDK versions should be included.
For each platform version that has been specified, we can apply the following
options:
* `includeSystemImages` specifies whether a system image for each platform SDK
should be included.
* `includeSources` specifies whether the sources for each SDK version should be
included.
* `useGoogleAPIs` specifies that for each selected platform version the
Google API should be included.
* `useGoogleTVAddOns` specifies that for each selected platform version the
Google TV add-on should be included.
For each requested system image we can specify the following options:
* `systemImageTypes` specifies what kind of system images should be included.
Defaults to: `default`.
* `abiVersions` specifies what kind of ABI version of each system image should
be included. Defaults to: `armeabi-v7a`.
Most of the function arguments have reasonable default settings.
When building the above expression with:
```bash
$ nix-build
```
The Android SDK gets deployed with all desired plugin versions.
We can also deploy subsets of the Android SDK. For example, to only the the
`platform-tools` package, you can evaluate the following expression:
```nix
with import <nixpkgs> {};
let
androidComposition = androidenv.composeAndroidPackages {
# ...
};
in
androidComposition.platform-tools
```
Using predefine Android package compositions
--------------------------------------------
In addition to composing an Android package set manually, it is also possible
to use a predefined composition that contains all basic packages for a specific
Android version, such as version 9.0 (API-level 28).
The following Nix expression can be used to deploy the entire SDK with all basic
plugins:
```nix
with import <nixpkgs> {};
androidenv.androidPkgs_9_0.androidsdk
```
It is also possible to use one plugin only:
```nix
with import <nixpkgs> {};
androidenv.androidPkgs_9_0.platform-tools
```
Building an Android application
-------------------------------
In addition to the SDK, it is also possible to build an Ant-based Android
project and automatically deploy all the Android plugins that a project
requires.
```nix
with import <nixpkgs> {};
androidenv.buildApp {
name = "MyAndroidApp";
src = ./myappsources;
release = true;
# If release is set to true, you need to specify the following parameters
keyStore = ./keystore;
keyAlias = "myfirstapp";
keyStorePassword = "mykeystore";
keyAliasPassword = "myfirstapp";
# Any Android SDK parameters that install all the relevant plugins that a
# build requires
platformVersions = [ "24" ];
# When we include the NDK, then ndk-build is invoked before Ant gets invoked
includeNDK = true;
}
```
Aside from the app-specific build parameters (`name`, `src`, `release` and
keystore parameters), the `buildApp {}` function supports all the function
parameters that the SDK composition function (the function shown in the
previous section) supports.
This build function is particularly useful when it is desired to use
[Hydra](http://nixos.org/hydra): the Nix-based continuous integration solution
to build Android apps. An Android APK gets exposed as a build product and can be
installed on any Android device with a web browser by navigating to the build
result page.
Spawning emulator instances
---------------------------
For testing purposes, it can also be quite convenient to automatically generate
scripts that spawn emulator instances with all desired configuration settings.
An emulator spawn script can be configured by invoking the `emulateApp {}`
function:
```nix
with import <nixpkgs> {};
androidenv.emulateApp {
name = "emulate-MyAndroidApp";
platformVersion = "24";
abiVersion = "armeabi-v7a"; # mips, x86 or x86_64
systemImageType = "default";
useGoogleAPIs = false;
}
```
It is also possible to specify an APK to deploy inside the emulator
and the package and activity names to launch it:
```nix
with import <nixpkgs> {};
androidenv.emulateApp {
name = "emulate-MyAndroidApp";
platformVersion = "24";
abiVersion = "armeabi-v7a"; # mips, x86 or x86_64
systemImageType = "default";
useGoogleAPIs = false;
app = ./MyApp.apk;
package = "MyApp";
activity = "MainActivity";
}
```
In addition to prebuilt APKs, you can also bind the APK parameter to a
`buildApp {}` function invocation shown in the previous example.
Querying the available versions of each plugin
----------------------------------------------
When using any of the previously shown functions, it may be a bit inconvenient
to find out what options are supported, since the Android SDK provides many
plugins.
A shell script in the `pkgs/development/mobile/androidenv/` sub directory can be used to retrieve all
possible options:
```bash
sh ./querypackages.sh packages build-tools
```
The above command-line instruction queries all build-tools versions in the
generated `packages.nix` expression.
Updating the generated expressions
----------------------------------
Most of the Nix expressions are generated from XML files that the Android
package manager uses. To update the expressions run the `generate.sh` script
that is stored in the `pkgs/development/mobile/androidenv/` sub directory:
```bash
sh ./generate.sh
```

View File

@@ -11,9 +11,10 @@
</para>
<para>
Some extensions (plugins) might require OCaml and sometimes other OCaml
packages. The <literal>coq.ocamlPackages</literal> attribute can be used to
depend on the same package set Coq was built against.
Some libraries require OCaml and sometimes also Camlp5 or findlib. The exact
versions that were used to build Coq are saved in the
<literal>coq.ocaml</literal> and <literal>coq.camlp5</literal> and
<literal>coq.findlib</literal> attributes.
</para>
<para>

View File

@@ -3,91 +3,12 @@
xml:id="sec-language-go">
<title>Go</title>
<section xml:id="ssec-go-modules">
<title>Go modules</title>
<para>
The function <varname>buildGoPackage</varname> builds standard Go programs.
</para>
<para>
The function <varname> buildGoModule </varname> builds Go programs managed
with Go modules. It builds a
<link xlink:href="https://github.com/golang/go/wiki/Modules">Go
modules</link> through a two phase build:
<itemizedlist>
<listitem>
<para>
An intermediate fetcher derivation. This derivation will be used to fetch
all of the dependencies of the Go module.
</para>
</listitem>
<listitem>
<para>
A final derivation will use the output of the intermediate derivation to
build the binaries and produce the final output.
</para>
</listitem>
</itemizedlist>
</para>
<example xml:id='ex-buildGoModule'>
<title>buildGoModule</title>
<programlisting>
pet = buildGoModule rec {
name = "pet-${version}";
version = "0.3.4";
src = fetchFromGitHub {
owner = "knqyf263";
repo = "pet";
rev = "v${version}";
sha256 = "0m2fzpqxk7hrbxsgqplkg7h2p7gv6s1miymv3gvw0cz039skag0s";
};
modSha256 = "1879j77k96684wi554rkjxydrj8g3hpp0kvxz03sd8dmwr3lh83j"; <co xml:id='ex-buildGoModule-1' />
subPackages = [ "." ]; <co xml:id='ex-buildGoModule-2' />
meta = with lib; {
description = "Simple command-line snippet manager, written in Go";
homepage = https://github.com/knqyf263/pet;
license = licenses.mit;
maintainers = with maintainers; [ kalbasit ];
platforms = platforms.linux ++ platforms.darwin;
};
}
</programlisting>
</example>
<para>
<xref linkend='ex-buildGoModule'/> is an example expression using
buildGoModule, the following arguments are of special significance to the
function:
<calloutlist>
<callout arearefs='ex-buildGoModule-1'>
<para>
<varname>modSha256</varname> is the hash of the output of the
intermediate fetcher derivation.
</para>
</callout>
<callout arearefs='ex-buildGoModule-2'>
<para>
<varname>subPackages</varname> limits the builder from building child
packages that have not been listed. If <varname>subPackages</varname> is
not specified, all child packages will be built.
</para>
</callout>
</calloutlist>
</para>
</section>
<section xml:id="ssec-go-legacy">
<title>Go legacy</title>
<para>
The function <varname> buildGoPackage </varname> builds legacy Go programs,
not supporting Go modules.
</para>
<example xml:id='ex-buildGoPackage'>
<title>buildGoPackage</title>
<example xml:id='ex-buildGoPackage'>
<title>buildGoPackage</title>
<programlisting>
deis = buildGoPackage rec {
name = "deis-${version}";
@@ -108,56 +29,56 @@ deis = buildGoPackage rec {
buildFlags = "--tags release"; <co xml:id='ex-buildGoPackage-4' />
}
</programlisting>
</example>
</example>
<para>
<xref linkend='ex-buildGoPackage'/> is an example expression using
buildGoPackage, the following arguments are of special significance to the
function:
<calloutlist>
<callout arearefs='ex-buildGoPackage-1'>
<para>
<varname>goPackagePath</varname> specifies the package's canonical Go
import path.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-2'>
<para>
<varname>subPackages</varname> limits the builder from building child
packages that have not been listed. If <varname>subPackages</varname> is
not specified, all child packages will be built.
</para>
<para>
In this example only <literal>github.com/deis/deis/client</literal> will
be built.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-3'>
<para>
<varname>goDeps</varname> is where the Go dependencies of a Go program
are listed as a list of package source identified by Go import path. It
could be imported as a separate <varname>deps.nix</varname> file for
readability. The dependency data structure is described below.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-4'>
<para>
<varname>buildFlags</varname> is a list of flags passed to the go build
command.
</para>
</callout>
</calloutlist>
</para>
<para>
<xref linkend='ex-buildGoPackage'/> is an example expression using
buildGoPackage, the following arguments are of special significance to the
function:
<calloutlist>
<callout arearefs='ex-buildGoPackage-1'>
<para>
<varname>goPackagePath</varname> specifies the package's canonical Go
import path.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-2'>
<para>
<varname>subPackages</varname> limits the builder from building child
packages that have not been listed. If <varname>subPackages</varname> is
not specified, all child packages will be built.
</para>
<para>
In this example only <literal>github.com/deis/deis/client</literal> will
be built.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-3'>
<para>
<varname>goDeps</varname> is where the Go dependencies of a Go program are
listed as a list of package source identified by Go import path. It could
be imported as a separate <varname>deps.nix</varname> file for
readability. The dependency data structure is described below.
</para>
</callout>
<callout arearefs='ex-buildGoPackage-4'>
<para>
<varname>buildFlags</varname> is a list of flags passed to the go build
command.
</para>
</callout>
</calloutlist>
</para>
<para>
The <varname>goDeps</varname> attribute can be imported from a separate
<varname>nix</varname> file that defines which Go libraries are needed and
should be included in <varname>GOPATH</varname> for
<varname>buildPhase</varname>.
</para>
<para>
The <varname>goDeps</varname> attribute can be imported from a separate
<varname>nix</varname> file that defines which Go libraries are needed and
should be included in <varname>GOPATH</varname> for
<varname>buildPhase</varname>.
</para>
<example xml:id='ex-goDeps'>
<title>deps.nix</title>
<example xml:id='ex-goDeps'>
<title>deps.nix</title>
<programlisting>
[ <co xml:id='ex-goDeps-1' />
{
@@ -180,62 +101,60 @@ deis = buildGoPackage rec {
}
]
</programlisting>
</example>
</example>
<para>
<calloutlist>
<callout arearefs='ex-goDeps-1'>
<para>
<varname>goDeps</varname> is a list of Go dependencies.
</para>
</callout>
<callout arearefs='ex-goDeps-2'>
<para>
<varname>goPackagePath</varname> specifies Go package import path.
</para>
</callout>
<callout arearefs='ex-goDeps-3'>
<para>
<varname>fetch type</varname> that needs to be used to get package
source. If <varname>git</varname> is used there should be
<varname>url</varname>, <varname>rev</varname> and
<varname>sha256</varname> defined next to it.
</para>
</callout>
</calloutlist>
</para>
<para>
<calloutlist>
<callout arearefs='ex-goDeps-1'>
<para>
<varname>goDeps</varname> is a list of Go dependencies.
</para>
</callout>
<callout arearefs='ex-goDeps-2'>
<para>
<varname>goPackagePath</varname> specifies Go package import path.
</para>
</callout>
<callout arearefs='ex-goDeps-3'>
<para>
<varname>fetch type</varname> that needs to be used to get package source.
If <varname>git</varname> is used there should be <varname>url</varname>,
<varname>rev</varname> and <varname>sha256</varname> defined next to it.
</para>
</callout>
</calloutlist>
</para>
<para>
To extract dependency information from a Go package in automated way use
<link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>. It can
produce complete derivation and <varname>goDeps</varname> file for Go
programs.
</para>
<para>
To extract dependency information from a Go package in automated way use
<link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>. It can
produce complete derivation and <varname>goDeps</varname> file for Go
programs.
</para>
<para>
<varname>buildGoPackage</varname> produces
<xref linkend='chap-multiple-output' xrefstyle="select: title" /> where
<varname>bin</varname> includes program binaries. You can test build a Go
binary as follows:
<para>
<varname>buildGoPackage</varname> produces
<xref linkend='chap-multiple-output' xrefstyle="select: title" /> where
<varname>bin</varname> includes program binaries. You can test build a Go
binary as follows:
<screen>
$ nix-build -A deis.bin
</screen>
or build all outputs with:
or build all outputs with:
<screen>
$ nix-build -A deis.all
</screen>
<varname>bin</varname> output will be installed by default with
<varname>nix-env -i</varname> or <varname>systemPackages</varname>.
</para>
<varname>bin</varname> output will be installed by default with
<varname>nix-env -i</varname> or <varname>systemPackages</varname>.
</para>
<para>
You may use Go packages installed into the active Nix profiles by adding the
following to your ~/.bashrc:
<para>
You may use Go packages installed into the active Nix profiles by adding the
following to your ~/.bashrc:
<screen>
for p in $NIX_PROFILES; do
GOPATH="$p/share/go:$GOPATH"
done
</screen>
</para>
</section>
</para>
</section>

View File

@@ -352,9 +352,9 @@ you want them to come from. Add the following to `configuration.nix`.
```nix
services.hoogle = {
enable = true;
packages = (hpkgs: with hpkgs; [text cryptonite]);
haskellPackages = pkgs.haskellPackages;
enable = true;
packages = (hpkgs: with hpkgs; [text cryptonite]);
haskellPackages = pkgs.haskellPackages;
};
```
@@ -935,7 +935,7 @@ The implementation can be found in the
[integer-gmp](http://hackage.haskell.org/package/integer-gmp) package.
A potential problem with this is that GMP is licensed under the
[GNU Lesser General Public License (LGPL)](https://www.gnu.org/copyleft/lesser.html),
[GNU Lesser General Public License (LGPL)](http://www.gnu.org/copyleft/lesser.html),
a kind of "copyleft" license. According to the terms of the LGPL, paragraph 5,
you may distribute a program that is designed to be compiled and dynamically
linked with the library under the terms of your choice (i.e., commercially) but

View File

@@ -1,115 +1,39 @@
# Idris packages
Idris packages
==============
## Installing Idris
This directory contains build rules for idris packages. In addition,
it contains several functions to build and compose those packages.
Everything is exposed to the user via the `idrisPackages` attribute.
The easiest way to get a working idris version is to install the `idris` attribute:
callPackage
------------
```
$ # On NixOS
$ nix-env -i nixos.idris
$ # On non-NixOS
$ nix-env -i nixpkgs.idris
```
This is like the normal nixpkgs callPackage function, specialized to
idris packages.
This however only provides the `prelude` and `base` libraries. To install additional libraries:
builtins
---------
```
$ nix-env -iE 'pkgs: pkgs.idrisPackages.with-packages (with pkgs.idrisPackages; [ contrib pruviloj ])'
```
This is a list of all of the libraries that come packaged with Idris
itself.
To see all available Idris packages:
```
$ # On NixOS
$ nix-env -qaPA nixos.idrisPackages
$ # On non-NixOS
$ nix-env -qaPA nixpkgs.idrisPackages
```
build-idris-package
--------------------
Similarly, entering a `nix-shell`:
```
$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])'
```
A function to build an idris package. Its sole argument is a set like
you might pass to `stdenv.mkDerivation`, except `build-idris-package`
sets several attributes for you. See `build-idris-package.nix` for
details.
## Starting Idris with library support
build-builtin-package
----------------------
To have access to these libraries in idris, call it with an argument `-p <library name>` for each library:
A version of `build-idris-package` specialized to builtin libraries.
Mostly for internal use.
```
$ nix-shell -p 'idrisPackages.with-packages (with idrisPackages; [ contrib pruviloj ])'
[nix-shell:~]$ idris -p contrib -p pruviloj
```
with-packages
-------------
A listing of all available packages the Idris binary has access to is available via `--listlibs`:
```
$ idris --listlibs
00prelude-idx.ibc
pruviloj
base
contrib
prelude
00pruviloj-idx.ibc
00base-idx.ibc
00contrib-idx.ibc
```
## Building an Idris project with Nix
As an example of how a Nix expression for an Idris package can be created, here is the one for `idrisPackages.yaml`:
```nix
{ build-idris-package
, fetchFromGitHub
, contrib
, lightyear
, lib
}:
build-idris-package {
name = "yaml";
version = "2018-01-25";
# This is the .ipkg file that should be built, defaults to the package name
# In this case it should build `Yaml.ipkg` instead of `yaml.ipkg`
# This is only necessary because the yaml packages ipkg file is
# different from its package name here.
ipkgName = "Yaml";
# Idris dependencies to provide for the build
idrisDeps = [ contrib lightyear ];
src = fetchFromGitHub {
owner = "Heather";
repo = "Idris.Yaml";
rev = "5afa51ffc839844862b8316faba3bafa15656db4";
sha256 = "1g4pi0swmg214kndj85hj50ccmckni7piprsxfdzdfhg87s0avw7";
};
meta = {
description = "Idris YAML lib";
homepage = https://github.com/Heather/Idris.Yaml;
license = lib.licenses.mit;
maintainers = [ lib.maintainers.brainrape ];
};
}
```
Assuming this file is saved as `yaml.nix`, it's buildable using
```
$ nix-build -E '(import <nixpkgs> {}).idrisPackages.callPackage ./yaml.nix {}'
```
Or it's possible to use
```nix
with import <nixpkgs> {};
{
yaml = idrisPackages.callPackage ./yaml.nix {};
}
```
in another file (say `default.nix`) to be able to build it with
```
$ nix-build -A yaml
```
Bundle idris together with a list of packages. Because idris currently
only supports a single directory in its library path, you must include
all desired libraries here, including `prelude` and `base`.

View File

@@ -10,18 +10,15 @@
Nixpkgs to easily build packages for other programming languages, such as
Perl or Haskell. These are described in this chapter.
</para>
<xi:include href="android.section.xml" />
<xi:include href="beam.xml" />
<xi:include href="bower.xml" />
<xi:include href="coq.xml" />
<xi:include href="go.xml" />
<xi:include href="haskell.section.xml" />
<xi:include href="idris.section.xml" />
<xi:include href="ios.section.xml" />
<xi:include href="java.xml" />
<xi:include href="lua.xml" />
<xi:include href="node.section.xml" />
<xi:include href="ocaml.xml" />
<xi:include href="perl.xml" />
<xi:include href="python.section.xml" />
<xi:include href="qt.xml" />
@@ -29,7 +26,6 @@
<xi:include href="ruby.xml" />
<xi:include href="rust.section.xml" />
<xi:include href="texlive.xml" />
<xi:include href="titanium.section.xml" />
<xi:include href="vim.section.xml" />
<xi:include href="emscripten.section.xml" />
</chapter>

View File

@@ -1,219 +0,0 @@
---
title: iOS
author: Sander van der Burg
date: 2018-11-18
---
# iOS
This component is basically a wrapper/workaround that makes it possible to
expose an Xcode installation as a Nix package by means of symlinking to the
relevant executables on the host system.
Since Xcode can't be packaged with Nix, nor we can publish it as a Nix package
(because of its license) this is basically the only integration strategy
making it possible to do iOS application builds that integrate with other
components of the Nix ecosystem
The primary objective of this project is to use the Nix expression language to
specify how iOS apps can be built from source code, and to automatically spawn
iOS simulator instances for testing.
This component also makes it possible to use [Hydra](http://nixos.org/hydra),
the Nix-based continuous integration server to regularly build iOS apps and to
do wireless ad-hoc installations of enterprise IPAs on iOS devices through
Hydra.
The Xcode build environment implements a number of features.
Deploying a proxy component wrapper exposing Xcode
--------------------------------------------------
The first use case is deploying a Nix package that provides symlinks to the Xcode
installation on the host system. This package can be used as a build input to
any build function implemented in the Nix expression language that requires
Xcode.
```nix
let
pkgs = import <nixpkgs> {};
xcodeenv = import ./xcodeenv {
inherit (pkgs) stdenv;
};
in
xcodeenv.composeXcodeWrapper {
version = "9.2";
xcodeBaseDir = "/Applications/Xcode.app";
}
```
By deploying the above expression with `nix-build` and inspecting its content
you will notice that several Xcode-related executables are exposed as a Nix
package:
```bash
$ ls result/bin
lrwxr-xr-x 1 sander staff 94 1 jan 1970 Simulator -> /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator
lrwxr-xr-x 1 sander staff 17 1 jan 1970 codesign -> /usr/bin/codesign
lrwxr-xr-x 1 sander staff 17 1 jan 1970 security -> /usr/bin/security
lrwxr-xr-x 1 sander staff 21 1 jan 1970 xcode-select -> /usr/bin/xcode-select
lrwxr-xr-x 1 sander staff 61 1 jan 1970 xcodebuild -> /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
lrwxr-xr-x 1 sander staff 14 1 jan 1970 xcrun -> /usr/bin/xcrun
```
Building an iOS application
---------------------------
We can build an iOS app executable for the simulator, or an IPA/xcarchive file
for release purposes, e.g. ad-hoc, enterprise or store installations, by
executing the `xcodeenv.buildApp {}` function:
```nix
let
pkgs = import <nixpkgs> {};
xcodeenv = import ./xcodeenv {
inherit (pkgs) stdenv;
};
in
xcodeenv.buildApp {
name = "MyApp";
src = ./myappsources;
sdkVersion = "11.2";
target = null; # Corresponds to the name of the app by default
configuration = null; # Release for release builds, Debug for debug builds
scheme = null; # -scheme will correspond to the app name by default
sdk = null; # null will set it to 'iphonesimulator` for simulator builds or `iphoneos` to real builds
xcodeFlags = "";
release = true;
certificateFile = ./mycertificate.p12;
certificatePassword = "secret";
provisioningProfile = ./myprovisioning.profile;
signMethod = "ad-hoc"; # 'enterprise' or 'store'
generateIPA = true;
generateXCArchive = false;
enableWirelessDistribution = true;
installURL = "/installipa.php";
bundleId = "mycompany.myapp";
appVersion = "1.0";
# Supports all xcodewrapper parameters as well
xcodeBaseDir = "/Applications/Xcode.app";
}
```
The above function takes a variety of parameters:
* The `name` and `src` parameters are mandatory and specify the name of the app
and the location where the source code resides
* `sdkVersion` specifies which version of the iOS SDK to use.
It also possile to adjust the `xcodebuild` parameters. This is only needed in
rare circumstances. In most cases the default values should suffice:
* Specifies which `xcodebuild` target to build. By default it takes the target
that has the same name as the app.
* The `configuration` parameter can be overridden if desired. By default, it
will do a debug build for the simulator and a release build for real devices.
* The `scheme` parameter specifies which `-scheme` parameter to propagate to
`xcodebuild`. By default, it corresponds to the app name.
* The `sdk` parameter specifies which SDK to use. By default, it picks
`iphonesimulator` for simulator builds and `iphoneos` for release builds.
* The `xcodeFlags` parameter specifies arbitrary command line parameters that
should be propagated to `xcodebuild`.
By default, builds are carried out for the iOS simulator. To do release builds
(builds for real iOS devices), you must set the `release` parameter to `true`.
In addition, you need to set the following parameters:
* `certificateFile` refers to a P12 certificate file.
* `certificatePassword` specifies the password of the P12 certificate.
* `provisioningProfile` refers to the provision profile needed to sign the app
* `signMethod` should refer to `ad-hoc` for signing the app with an ad-hoc
certificate, `enterprise` for enterprise certificates and `app-store` for App
store certificates.
* `generateIPA` specifies that we want to produce an IPA file (this is probably
what you want)
* `generateXCArchive` specifies thet we want to produce an xcarchive file.
When building IPA files on Hydra and when it is desired to allow iOS devices to
install IPAs by browsing to the Hydra build products page, you can enable the
`enableWirelessDistribution` parameter.
When enabled, you need to configure the following options:
* The `installURL` parameter refers to the URL of a PHP script that composes the
`itms-services://` URL allowing iOS devices to install the IPA file.
* `bundleId` refers to the bundle ID value of the app
* `appVersion` refers to the app's version number
To use wireless adhoc distributions, you must also install the corresponding
PHP script on a web server (see section: 'Installing the PHP script for wireless
ad hoc installations from Hydra' for more information).
In addition to the build parameters, you can also specify any parameters that
the `xcodeenv.composeXcodeWrapper {}` function takes. For example, the
`xcodeBaseDir` parameter can be overridden to refer to a different Xcode
version.
Spawning simulator instances
----------------------------
In addition to building iOS apps, we can also automatically spawn simulator
instances:
```nix
let
pkgs = import <nixpkgs> {};
xcodeenv = import ./xcodeenv {
inherit (pkgs) stdenv;
};
in
xcode.simulateApp {
name = "simulate";
# Supports all xcodewrapper parameters as well
xcodeBaseDir = "/Applications/Xcode.app";
}
```
The above expression produces a script that starts the simulator from the
provided Xcode installation. The script can be started as follows:
```bash
./result/bin/run-test-simulator
```
By default, the script will show an overview of UDID for all available simulator
instances and asks you to pick one. You can also provide a UDID as a
command-line parameter to launch an instance automatically:
```bash
./result/bin/run-test-simulator 5C93129D-CF39-4B1A-955F-15180C3BD4B8
```
You can also extend the simulator script to automatically deploy and launch an
app in the requested simulator instance:
```nix
let
pkgs = import <nixpkgs> {};
xcodeenv = import ./xcodeenv {
inherit (pkgs) stdenv;
};
in
xcode.simulateApp {
name = "simulate";
bundleId = "mycompany.myapp";
app = xcode.buildApp {
# ...
};
# Supports all xcodewrapper parameters as well
xcodeBaseDir = "/Applications/Xcode.app";
}
```
By providing the result of an `xcode.buildApp {}` function and configuring the
app bundle id, the app gets deployed automatically and started.

View File

@@ -14,7 +14,7 @@ project.
The package set also provides support for multiple Node.js versions. The policy
is that a new package should be added to the collection for the latest stable LTS
release (which is currently 10.x), unless there is an explicit reason to support
release (which is currently 8.x), unless there is an explicit reason to support
a different release.
If your package uses native addons, you need to examine what kind of native
@@ -26,7 +26,7 @@ build system it uses. Here are some examples:
After you have identified the correct system, you need to override your package
expression while adding in build system as a build input. For example, `dat`
requires `node-gyp-build`, so we override its expression in `default-v10.nix`:
requires `node-gyp-build`, so we override its expression in `default-v8.nix`:
```nix
dat = nodePackages.dat.override (oldAttrs: {
@@ -36,9 +36,9 @@ dat = nodePackages.dat.override (oldAttrs: {
To add a package from NPM to nixpkgs:
1. Modify `pkgs/development/node-packages/node-packages-v10.json` to add, update
or remove package entries. (Or `pkgs/development/node-packages/node-packages-v8.json`
for packages depending on Node.js 8.x)
1. Modify `pkgs/development/node-packages/node-packages-v8.json` to add, update
or remove package entries. (Or `pkgs/development/node-packages/node-packages-v10.json`
for packages depending on Node.js 10.x)
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
3. Build your new package to test your changes:
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.

View File

@@ -1,99 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-language-ocaml">
<title>OCaml</title>
<para>
OCaml libraries should be installed in
<literal>$(out)/lib/ocaml/${ocaml.version}/site-lib/</literal>. Such
directories are automatically added to the <literal>$OCAMLPATH</literal>
environment variable when building another package that depends on them
or when opening a <literal>nix-shell</literal>.
</para>
<para>
Given that most of the OCaml ecosystem is now built with dune,
nixpkgs includes a convenience build support function called
<literal>buildDunePackage</literal> that will build an OCaml package
using dune, OCaml and findlib and any additional dependencies provided
as <literal>buildInputs</literal> or <literal>propagatedBuildInputs</literal>.
</para>
<para>
Here is a simple package example. It defines an (optional) attribute
<literal>minimumOCamlVersion</literal> that will be used to throw a
descriptive evaluation error if building with an older OCaml is attempted.
It uses the <literal>fetchFromGitHub</literal> fetcher to get its source.
It sets the <literal>doCheck</literal> (optional) attribute to
<literal>true</literal> which means that tests will be run with
<literal>dune runtest -p angstrom</literal> after the build
(<literal>dune build -p angstrom</literal>) is complete.
It uses <literal>alcotest</literal> as a build input (because it is needed
to run the tests) and <literal>bigstringaf</literal> and
<literal>result</literal> as propagated build inputs (thus they will also
be available to libraries depending on this library).
The library will be installed using the <literal>angstrom.install</literal>
file that dune generates.
</para>
<programlisting>
{ stdenv, fetchFromGitHub, buildDunePackage, alcotest, result, bigstringaf }:
buildDunePackage rec {
pname = "angstrom";
version = "0.10.0";
minimumOCamlVersion = "4.03";
src = fetchFromGitHub {
owner = "inhabitedtype";
repo = pname;
rev = version;
sha256 = "0lh6024yf9ds0nh9i93r9m6p5psi8nvrqxl5x7jwl13zb0r9xfpw";
};
buildInputs = [ alcotest ];
propagatedBuildInputs = [ bigstringaf result ];
doCheck = true;
meta = {
homepage = https://github.com/inhabitedtype/angstrom;
description = "OCaml parser combinators built for speed and memory efficiency";
license = stdenv.lib.licenses.bsd3;
maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
};
}
</programlisting>
<para>
Here is a second example, this time using a source archive generated with
<literal>dune-release</literal>. It is a good idea to use this archive when
it is available as it will usually contain substituted variables such as a
<literal>%%VERSION%%</literal> field. This library does not depend
on any other OCaml library and no tests are run after building it.
</para>
<programlisting>
{ stdenv, fetchurl, buildDunePackage }:
buildDunePackage rec {
pname = "wtf8";
version = "1.0.1";
minimumOCamlVersion = "4.01";
src = fetchurl {
url = "https://github.com/flowtype/ocaml-${pname}/releases/download/v${version}/${pname}-${version}.tbz";
sha256 = "1msg3vycd3k8qqj61sc23qks541cxpb97vrnrvrhjnqxsqnh6ygq";
};
meta = with stdenv.lib; {
homepage = https://github.com/flowtype/ocaml-wtf8;
description = "WTF-8 is a superset of UTF-8 that allows unpaired surrogates.";
license = licenses.mit;
maintainers = [ maintainers.eqyiel ];
};
}
</programlisting>
</section>

View File

@@ -186,26 +186,27 @@ building Python libraries is `buildPythonPackage`. Let's see how we can build th
`toolz` package.
```nix
{ lib, buildPythonPackage, fetchPypi }:
{ # ...
buildPythonPackage rec {
pname = "toolz";
version = "0.7.4";
toolz = buildPythonPackage rec {
pname = "toolz";
version = "0.7.4";
src = fetchPypi {
inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
src = fetchPypi {
inherit pname version;
sha256 = "43c2c9e5e7a16b6c88ba3088a9bfc82f7db8e13378be7c78d6c14a5f8ed05afd";
};
doCheck = false;
meta = {
homepage = "https://github.com/pytoolz/toolz/";
description = "List processing tools and functional utilities";
license = licenses.bsd3;
maintainers = with maintainers; [ fridh ];
};
};
doCheck = false;
meta = with lib; {
homepage = https://github.com/pytoolz/toolz;
description = "List processing tools and functional utilities";
license = licenses.bsd3;
maintainers = with maintainers; [ fridh ];
};
};
}
```
What happens here? The function `buildPythonPackage` is called and as argument
@@ -266,43 +267,43 @@ that we introduced with the `let` expression.
#### Handling dependencies
Our example, `toolz`, does not have any dependencies on other Python packages or
system libraries. According to the manual, `buildPythonPackage` uses the
arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If
something is exclusively a build-time dependency, then the dependency should be
included as a `buildInput`, but if it is (also) a runtime dependency, then it
should be added to `propagatedBuildInputs`. Test dependencies are considered
build-time dependencies and passed to `checkInputs`.
Our example, `toolz`, does not have any dependencies on other Python
packages or system libraries. According to the manual, `buildPythonPackage`
uses the arguments `buildInputs` and `propagatedBuildInputs` to specify dependencies. If something is
exclusively a build-time dependency, then the dependency should be included as a
`buildInput`, but if it is (also) a runtime dependency, then it should be added
to `propagatedBuildInputs`. Test dependencies are considered build-time dependencies.
The following example shows which arguments are given to `buildPythonPackage` in
order to build [`datashape`](https://github.com/blaze/datashape).
```nix
{ lib, buildPythonPackage, fetchPypi, numpy, multipledispatch, dateutil, pytest }:
{ # ...
buildPythonPackage rec {
pname = "datashape";
version = "0.4.7";
datashape = buildPythonPackage rec {
pname = "datashape";
version = "0.4.7";
src = fetchPypi {
inherit pname version;
sha256 = "14b2ef766d4c9652ab813182e866f493475e65e558bed0822e38bf07bba1a278";
};
src = fetchPypi {
inherit pname version;
sha256 = "14b2ef766d4c9652ab813182e866f493475e65e558bed0822e38bf07bba1a278";
};
checkInputs = [ pytest ];
propagatedBuildInputs = [ numpy multipledispatch dateutil ];
checkInputs = with self; [ pytest ];
propagatedBuildInputs = with self; [ numpy multipledispatch dateutil ];
meta = with lib; {
homepage = https://github.com/ContinuumIO/datashape;
description = "A data description language";
license = licenses.bsd2;
maintainers = with maintainers; [ fridh ];
meta = {
homepage = https://github.com/ContinuumIO/datashape;
description = "A data description language";
license = licenses.bsd2;
maintainers = with maintainers; [ fridh ];
};
};
}
```
We can see several runtime dependencies, `numpy`, `multipledispatch`, and
`dateutil`. Furthermore, we have one `checkInputs`, i.e. `pytest`. `pytest` is a
`dateutil`. Furthermore, we have one `buildInput`, i.e. `pytest`. `pytest` is a
test runner and is only used during the `checkPhase` and is therefore not added
to `propagatedBuildInputs`.
@@ -312,24 +313,25 @@ Python bindings to `libxml2` and `libxslt`. These libraries are only required
when building the bindings and are therefore added as `buildInputs`.
```nix
{ lib, pkgs, buildPythonPackage, fetchPypi }:
{ # ...
buildPythonPackage rec {
pname = "lxml";
version = "3.4.4";
lxml = buildPythonPackage rec {
pname = "lxml";
version = "3.4.4";
src = fetchPypi {
inherit pname version;
sha256 = "16a0fa97hym9ysdk3rmqz32xdjqmy4w34ld3rm3jf5viqjx65lxk";
};
src = fetchPypi {
inherit pname version;
sha256 = "16a0fa97hym9ysdk3rmqz32xdjqmy4w34ld3rm3jf5viqjx65lxk";
};
buildInputs = [ pkgs.libxml2 pkgs.libxslt ];
buildInputs = with self; [ pkgs.libxml2 pkgs.libxslt ];
meta = with lib; {
description = "Pythonic binding for the libxml2 and libxslt libraries";
homepage = https://lxml.de;
license = licenses.bsd3;
maintainers = with maintainers; [ sjourdois ];
meta = {
description = "Pythonic binding for the libxml2 and libxslt libraries";
homepage = https://lxml.de;
license = licenses.bsd3;
maintainers = with maintainers; [ sjourdois ];
};
};
}
```
@@ -345,34 +347,35 @@ find each of them in a different folder, and therefore we have to set `LDFLAGS`
and `CFLAGS`.
```nix
{ lib, pkgs, buildPythonPackage, fetchPypi, numpy, scipy }:
{ # ...
buildPythonPackage rec {
pname = "pyFFTW";
version = "0.9.2";
pyfftw = buildPythonPackage rec {
pname = "pyFFTW";
version = "0.9.2";
src = fetchPypi {
inherit pname version;
sha256 = "f6bbb6afa93085409ab24885a1a3cdb8909f095a142f4d49e346f2bd1b789074";
};
src = fetchPypi {
inherit pname version;
sha256 = "f6bbb6afa93085409ab24885a1a3cdb8909f095a142f4d49e346f2bd1b789074";
};
buildInputs = [ pkgs.fftw pkgs.fftwFloat pkgs.fftwLongDouble];
buildInputs = [ pkgs.fftw pkgs.fftwFloat pkgs.fftwLongDouble];
propagatedBuildInputs = [ numpy scipy ];
propagatedBuildInputs = with self; [ numpy scipy ];
# Tests cannot import pyfftw. pyfftw works fine though.
doCheck = false;
# Tests cannot import pyfftw. pyfftw works fine though.
doCheck = false;
preConfigure = ''
export LDFLAGS="-L${pkgs.fftw.dev}/lib -L${pkgs.fftwFloat.out}/lib -L${pkgs.fftwLongDouble.out}/lib"
export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include"
'';
preConfigure = ''
export LDFLAGS="-L${pkgs.fftw.dev}/lib -L${pkgs.fftwFloat.out}/lib -L${pkgs.fftwLongDouble.out}/lib"
export CFLAGS="-I${pkgs.fftw.dev}/include -I${pkgs.fftwFloat.dev}/include -I${pkgs.fftwLongDouble.dev}/include"
'';
meta = with lib; {
description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
homepage = http://hgomersall.github.com/pyFFTW;
license = with licenses; [ bsd2 bsd3 ];
maintainers = with maintainers; [ fridh ];
meta = {
description = "A pythonic wrapper around FFTW, the FFT library, presenting a unified interface for all the supported transforms";
homepage = http://hgomersall.github.com/pyFFTW/;
license = with licenses; [ bsd2 bsd3 ];
maintainers = with maintainers; [ fridh ];
};
};
}
```
@@ -400,7 +403,7 @@ Indeed, we can just add any package we like to have in our environment to `propa
```nix
with import <nixpkgs> {};
with python35Packages;
with pkgs.python35Packages;
buildPythonPackage rec {
name = "mypackage";
@@ -433,7 +436,7 @@ Let's split the package definition from the environment definition.
We first create a function that builds `toolz` in `~/path/to/toolz/release.nix`
```nix
{ lib, buildPythonPackage }:
{ lib, pkgs, buildPythonPackage }:
buildPythonPackage rec {
pname = "toolz";
@@ -453,17 +456,18 @@ buildPythonPackage rec {
}
```
It takes an argument `buildPythonPackage`.
It takes two arguments, `pkgs` and `buildPythonPackage`.
We now call this function using `callPackage` in the definition of our environment
```nix
with import <nixpkgs> {};
( let
toolz = callPackage /path/to/toolz/release.nix {
buildPythonPackage = python35Packages.buildPythonPackage;
toolz = pkgs.callPackage /path/to/toolz/release.nix {
pkgs = pkgs;
buildPythonPackage = pkgs.python35Packages.buildPythonPackage;
};
in python35.withPackages (ps: [ ps.numpy toolz ])
in pkgs.python35.withPackages (ps: [ ps.numpy toolz ])
).env
```
@@ -474,18 +478,18 @@ don't explicitly define which `python` derivation should be used. In the above
example we use `buildPythonPackage` that is part of the set `python35Packages`,
and in this case the `python35` interpreter is automatically used.
## Reference
### Interpreters
Versions 2.7, 3.5, 3.6 and 3.7 of the CPython interpreter are available as
respectively `python27`, `python35`, `python36` and `python37`. The aliases
`python2` and `python3` correspond to respectively `python27` and
`python37`. The default interpreter, `python`, maps to `python2`. The PyPy
interpreters compatible with Python 2.7 and 3 are available as `pypy27` and
`pypy3`, with aliases `pypy2` mapping to `pypy27` and `pypy` mapping to
`pypy2`. The Nix expressions for the interpreters can be
found in `pkgs/development/interpreters/python`.
Versions 2.7, 3.4, 3.5, 3.6 and 3.7 of the CPython interpreter are available as
respectively `python27`, `python34`, `python35` and `python36`. The PyPy interpreter
is available as `pypy`. The aliases `python2` and `python3` correspond to respectively `python27` and
`python35`. The default interpreter, `python`, maps to `python2`.
The Nix expressions for the interpreters can be found in
`pkgs/development/interpreters/python`.
All packages depending on any Python interpreter get appended
`out/{python.sitePackages}` to `$PYTHONPATH` if such directory
@@ -504,7 +508,7 @@ Each interpreter has the following attributes:
- `buildEnv`. Function to build python interpreter environments with extra packages bundled together. See section *python.buildEnv function* for usage and documentation.
- `withPackages`. Simpler interface to `buildEnv`. See section *python.withPackages function* for usage and documentation.
- `sitePackages`. Alias for `lib/${libPrefix}/site-packages`.
- `executable`. Name of the interpreter executable, e.g. `python3.7`.
- `executable`. Name of the interpreter executable, e.g. `python3.4`.
- `pkgs`. Set of Python packages for that specific interpreter. The package set can be modified by overriding the interpreter and passing `packageOverrides`.
### Building packages and applications
@@ -526,6 +530,7 @@ attribute set is created for each available Python interpreter. The available
sets are
* `pkgs.python27Packages`
* `pkgs.python34Packages`
* `pkgs.python35Packages`
* `pkgs.python36Packages`
* `pkgs.python37Packages`
@@ -534,7 +539,7 @@ sets are
and the aliases
* `pkgs.python2Packages` pointing to `pkgs.python27Packages`
* `pkgs.python3Packages` pointing to `pkgs.python37Packages`
* `pkgs.python3Packages` pointing to `pkgs.python36Packages`
* `pkgs.pythonPackages` pointing to `pkgs.python2Packages`
#### `buildPythonPackage` function
@@ -544,31 +549,31 @@ The `buildPythonPackage` function is implemented in
The following is an example:
```nix
{ lib, buildPythonPackage, fetchPypi, hypothesis, setuptools_scm, attrs, py, setuptools, six, pluggy }:
buildPythonPackage rec {
pname = "pytest";
version = "3.3.1";
pname = "pytest";
preCheck = ''
# don't test bash builtins
rm testing/test_argcomplete.py
'';
src = fetchPypi {
inherit pname version;
sha256 = "cf8436dc59d8695346fcd3ab296de46425ecab00d64096cebe79fb51ecb2eb93";
};
postPatch = ''
# don't test bash builtins
rm testing/test_argcomplete.py
'';
checkInputs = [ hypothesis ];
nativeBuildInputs = [ setuptools_scm ];
buildInputs = [ setuptools_scm ];
propagatedBuildInputs = [ attrs py setuptools six pluggy ];
meta = with lib; {
meta = with stdenv.lib; {
maintainers = with maintainers; [ domenkozar lovek323 madjar lsix ];
description = "Framework for writing tests";
};
}
```
The `buildPythonPackage` mainly does four things:
@@ -581,6 +586,11 @@ The `buildPythonPackage` mainly does four things:
environment variable and add dependent libraries to script's `sys.path`.
* In the `installCheck` phase, `${python.interpreter} setup.py test` is ran.
As in Perl, dependencies on other Python packages can be specified in the
`buildInputs` and `propagatedBuildInputs` attributes. If something is
exclusively a build-time dependency, use `buildInputs`; if it is (also) a runtime
dependency, use `propagatedBuildInputs`.
By default tests are run because `doCheck = true`. Test dependencies, like
e.g. the test runner, should be added to `checkInputs`.
@@ -592,10 +602,11 @@ as the interpreter unless overridden otherwise.
All parameters from `stdenv.mkDerivation` function are still supported. The following are specific to `buildPythonPackage`:
* `catchConflicts ? true`: If `true`, abort package build if a package name appears more than once in dependency tree. Default is `true`.
* `checkInputs ? []`: Dependencies needed for running the `checkPhase`. These are added to `buildInputs` when `doCheck = true`.
* `disabled` ? false: If `true`, package is not build for the particular Python interpreter version.
* `dontWrapPythonPrograms ? false`: Skip wrapping of python programs.
* `installFlags ? []`: A list of strings. Arguments to be passed to `pip install`. To pass options to `python setup.py install`, use `--install-option`. E.g., `installFlags=["--install-option='--cpp_implementation'"]`.
* `format ? "setuptools"`: Format of the source. Valid options are `"setuptools"`, `"pyproject"`, `"flit"`, `"wheel"`, and `"other"`. `"setuptools"` is for when the source has a `setup.py` and `setuptools` is used to build a wheel, `flit`, in case `flit` should be used to build a wheel, and `wheel` in case a wheel is provided. Use `other` when a custom `buildPhase` and/or `installPhase` is needed.
* `installFlags ? []`: A list of strings. Arguments to be passed to `pip install`. To pass options to `python setup.py install`, use `--install-option`. E.g., `installFlags=["--install-option='--cpp_implementation'"].
* `format ? "setuptools"`: Format of the source. Valid options are `"setuptools"`, `"flit"`, `"wheel"`, and `"other"`. `"setuptools"` is for when the source has a `setup.py` and `setuptools` is used to build a wheel, `flit`, in case `flit` should be used to build a wheel, and `wheel` in case a wheel is provided. Use `other` when a custom `buildPhase` and/or `installPhase` is needed.
* `makeWrapperArgs ? []`: A list of strings. Arguments to be passed to `makeWrapper`, which wraps generated binaries. By default, the arguments to `makeWrapper` set `PATH` and `PYTHONPATH` environment variables before calling the binary. Additional arguments here can allow a developer to set environment variables which will be available when the binary is run. For example, `makeWrapperArgs = ["--set FOO BAR" "--set BAZ QUX"]`.
* `namePrefix`: Prepends text to `${name}` parameter. In case of libraries, this defaults to `"python3.5-"` for Python 3.5, etc., and in case of applications to `""`.
* `pythonPath ? []`: List of packages to be added into `$PYTHONPATH`. Packages in `pythonPath` are not propagated (contrary to `propagatedBuildInputs`).
@@ -604,14 +615,6 @@ All parameters from `stdenv.mkDerivation` function are still supported. The foll
* `removeBinByteCode ? true`: Remove bytecode from `/bin`. Bytecode is only created when the filenames end with `.py`.
* `setupPyBuildFlags ? []`: List of flags passed to `setup.py build_ext` command.
The `stdenv.mkDerivation` function accepts various parameters for describing build inputs (see "Specifying dependencies"). The following are of special
interest for Python packages, either because these are primarily used, or because their behaviour is different:
* `nativeBuildInputs ? []`: Build-time only dependencies. Typically executables as well as the items listed in `setup_requires`.
* `buildInputs ? []`: Build and/or run-time dependencies that need to be be compiled for the host machine. Typically non-Python libraries which are being linked.
* `checkInputs ? []`: Dependencies needed for running the `checkPhase`. These are added to `nativeBuildInputs` when `doCheck = true`. Items listed in `tests_require` go here.
* `propagatedBuildInputs ? []`: Aside from propagating dependencies, `buildPythonPackage` also injects code into and wraps executables with the paths included in this list. Items listed in `install_requires` go here.
##### Overriding Python packages
The `buildPythonPackage` function has a `overridePythonAttrs` method that
@@ -652,39 +655,6 @@ Another difference is that `buildPythonPackage` by default prefixes the names of
the packages with the version of the interpreter. Because this is irrelevant for
applications, the prefix is omitted.
When packaging a python application with `buildPythonApplication`, it should be
called with `callPackage` and passed `python` or `pythonPackages` (possibly
specifying an interpreter version), like this:
```nix
{ lib, python3Packages }:
python3Packages.buildPythonApplication rec {
pname = "luigi";
version = "2.7.9";
src = python3Packages.fetchPypi {
inherit pname version;
sha256 = "035w8gqql36zlan0xjrzz9j4lh9hs0qrsgnbyw07qs7lnkvbdv9x";
};
propagatedBuildInputs = with python3Packages; [ tornado_4 python-daemon ];
meta = with lib; {
...
};
}
```
This is then added to `all-packages.nix` just as any other application would be.
```nix
luigi = callPackage ../applications/networking/cluster/luigi { };
```
Since the package is an application, a consumer doesn't need to care about
python versions or modules, which is why they don't go in `pythonPackages`.
#### `toPythonApplication` function
A distinction is made between applications and libraries, however, sometimes a
@@ -724,7 +694,7 @@ Saving the following as `default.nix`
with import <nixpkgs> {};
python.buildEnv.override {
extraLibs = [ pythonPackages.pyramid ];
extraLibs = [ pkgs.pythonPackages.pyramid ];
ignoreCollisions = true;
}
```
@@ -806,12 +776,11 @@ Given a `default.nix`:
```nix
with import <nixpkgs> {};
pythonPackages.buildPythonPackage {
name = "myproject";
buildInputs = with pythonPackages; [ pyramid ];
buildPythonPackage { name = "myproject";
src = ./.;
}
buildInputs = with pkgs.pythonPackages; [ pyramid ];
src = ./.; }
```
Running `nix-shell` with no arguments should give you
@@ -836,7 +805,7 @@ community to help save time. No tool is preferred at the moment.
### Deterministic builds
The Python interpreters are now built deterministically.
Python 2.7, 3.5 and 3.6 are now built deterministically and 3.4 mostly.
Minor modifications had to be made to the interpreters in order to generate
deterministic bytecode. This has security implications and is relevant for
those using Python in a `nix-shell`.
@@ -872,6 +841,7 @@ example of such a situation is when `py.test` is used.
'';
}
```
- Unicode issues can typically be fixed by including `glibcLocales` in `buildInputs` and exporting `LC_ALL=en_US.utf-8`.
- Tests that attempt to access `$HOME` can be fixed by using the following work-around before running tests (e.g. `preCheck`): `export HOME=$(mktemp -d)`
## FAQ
@@ -997,13 +967,10 @@ Create this `default.nix` file, together with a `requirements.txt` and simply ex
```nix
with import <nixpkgs> {};
with python27Packages;
with pkgs.python27Packages;
stdenv.mkDerivation {
name = "impurePythonEnv";
src = null;
buildInputs = [
# these packages are required for virtualenv and pip to work:
#
@@ -1023,15 +990,14 @@ stdenv.mkDerivation {
libxslt
libzip
stdenv
zlib
];
zlib ];
src = null;
shellHook = ''
# set SOURCE_DATE_EPOCH so that we can use python wheels
SOURCE_DATE_EPOCH=$(date +%s)
virtualenv --no-setuptools venv
export PATH=$PWD/venv/bin:$PATH
pip install -r requirements.txt
# set SOURCE_DATE_EPOCH so that we can use python wheels
SOURCE_DATE_EPOCH=$(date +%s)
virtualenv --no-setuptools venv
export PATH=$PWD/venv/bin:$PATH
pip install -r requirements.txt
'';
}
```
@@ -1081,7 +1047,8 @@ To modify only a Python package set instead of a whole Python derivation, use th
Use the following overlay template:
```nix
self: super: {
self: super:
{
python = super.python.override {
packageOverrides = python-self: python-super: {
zerobin = python-super.zerobin.overrideAttrs (oldAttrs: {
@@ -1096,42 +1063,6 @@ self: super: {
}
```
### How to use Intel's MKL with numpy and scipy?
A `site.cfg` is created that configures BLAS based on the `blas` parameter
of the `numpy` derivation. By passing in `mkl`, `numpy` and packages depending
on `numpy` will be built with `mkl`.
The following is an overlay that configures `numpy` to use `mkl`:
```nix
self: super: {
python37 = super.python37.override {
packageOverrides = python-self: python-super: {
numpy = python-super.numpy.override {
blas = super.pkgs.mkl;
};
};
};
}
```
`mkl` requires an `openmp` implementation when running with multiple processors.
By default, `mkl` will use Intel's `iomp` implementation if no other is
specified, but this is a runtime-only dependency and binary compatible with the
LLVM implementation. To use that one instead, Intel recommends users set it with
`LD_PRELOAD`.
Note that `mkl` is only available on `x86_64-{linux,darwin}` platforms;
moreover, Hydra is not building and distributing pre-compiled binaries using it.
### What inputs do `setup_requires`, `install_requires` and `tests_require` map to?
In a `setup.py` or `setup.cfg` it is common to declare dependencies:
* `setup_requires` corresponds to `nativeBuildInputs`
* `install_requires` corresponds to `propagatedBuildInputs`
* `tests_require` corresponds to `checkInputs`
## Contributing
### Contributing guidelines

View File

@@ -50,17 +50,6 @@ bundlerEnv rec {
future updates can be run easily.
</para>
<para>
Updating Ruby packages can then be done like this:
</para>
<screen>
<![CDATA[$ cd pkgs/servers/monitoring/sensu
$ nix-shell -p bundler --run 'bundle lock --update'
$ nix-shell -p bundix --run 'bundix'
]]>
</screen>
<para>
For tools written in Ruby - i.e. where the desire is to install a package and
then execute e.g. <command>rake</command> at the command line, there is an

View File

@@ -303,15 +303,11 @@ with import <nixpkgs> {};
stdenv.mkDerivation {
name = "rust-env";
nativeBuildInputs = [
buildInputs = [
rustc cargo
# Example Build-time Additional Dependencies
pkgconfig
];
buildInputs = [
# Example Run-time Additional Dependencies
openssl
# Example Additional Dependencies
pkgconfig openssl
];
# Set Environment Variables

View File

@@ -49,12 +49,12 @@ texlive.combine {
</listitem>
<listitem>
<para>
You can list packages e.g. by <command>nix repl</command>.
<programlisting><![CDATA[
$ nix repl
nix-repl> :l <nixpkgs>
nix-repl> texlive.collection-<TAB>
]]></programlisting>
You can list packages e.g. by <command>nix-repl</command>.
<programlisting>
$ nix-repl
nix-repl> :l &lt;nixpkgs>
nix-repl> texlive.collection-&lt;TAB>
</programlisting>
</para>
</listitem>
<listitem>

View File

@@ -1,115 +0,0 @@
---
title: Titanium
author: Sander van der Burg
date: 2018-11-18
---
# Titanium
The Nixpkgs repository contains facilities to deploy a variety of versions of
the [Titanium SDK](https://www.appcelerator.com) versions, a cross-platform
mobile app development framework using JavaScript as an implementation language,
and includes a function abstraction making it possible to build Titanium
applications for Android and iOS devices from source code.
Not all Titanium features supported -- currently, it can only be used to build
Android and iOS apps.
Building a Titanium app
-----------------------
We can build a Titanium app from source for Android or iOS and for debugging or
release purposes by invoking the `titaniumenv.buildApp {}` function:
```nix
titaniumenv.buildApp {
name = "myapp";
src = ./myappsource;
preBuild = "";
target = "android"; # or 'iphone'
tiVersion = "7.1.0.GA";
release = true;
androidsdkArgs = {
platformVersions = [ "25" "26" ];
};
androidKeyStore = ./keystore;
androidKeyAlias = "myfirstapp";
androidKeyStorePassword = "secret";
xcodeBaseDir = "/Applications/Xcode.app";
xcodewrapperArgs = {
version = "9.3";
};
iosMobileProvisioningProfile = ./myprovisioning.profile;
iosCertificateName = "My Company";
iosCertificate = ./mycertificate.p12;
iosCertificatePassword = "secret";
iosVersion = "11.3";
iosBuildStore = false;
enableWirelessDistribution = true;
installURL = "/installipa.php";
}
```
The `titaniumenv.buildApp {}` function takes the following parameters:
* The `name` parameter refers to the name in the Nix store.
* The `src` parameter refers to the source code location of the app that needs
to be built.
* `preRebuild` contains optional build instructions that are carried out before
the build starts.
* `target` indicates for which device the app must be built. Currently only
'android' and 'iphone' (for iOS) are supported.
* `tiVersion` can be used to optionally override the requested Titanium version
in `tiapp.xml`. If not specified, it will use the version in `tiapp.xml`.
* `release` should be set to true when building an app for submission to the
Google Playstore or Apple Appstore. Otherwise, it should be false.
When the `target` has been set to `android`, we can configure the following
parameters:
* The `androidSdkArgs` parameter refers to an attribute set that propagates all
parameters to the `androidenv.composeAndroidPackages {}` function. This can
be used to install all relevant Android plugins that may be needed to perform
the Android build. If no parameters are given, it will deploy the platform
SDKs for API-levels 25 and 26 by default.
When the `release` parameter has been set to true, you need to provide
parameters to sign the app:
* `androidKeyStore` is the path to the keystore file
* `androidKeyAlias` is the key alias
* `androidKeyStorePassword` refers to the password to open the keystore file.
When the `target` has been set to `iphone`, we can configure the following
parameters:
* The `xcodeBaseDir` parameter refers to the location where Xcode has been
installed. When none value is given, the above value is the default.
* The `xcodewrapperArgs` parameter passes arbitrary parameters to the
`xcodeenv.composeXcodeWrapper {}` function. This can, for example, be used
to adjust the default version of Xcode.
When `release` has been set to true, you also need to provide the following
parameters:
* `iosMobileProvisioningProfile` refers to a mobile provisioning profile needed
for signing.
* `iosCertificateName` refers to the company name in the P12 certificate.
* `iosCertificate` refers to the path to the P12 file.
* `iosCertificatePassword` contains the password to open the P12 file.
* `iosVersion` refers to the iOS SDK version to use. It defaults to the latest
version.
* `iosBuildStore` should be set to `true` when building for the Apple Appstore
submission. For enterprise or ad-hoc builds it should be set to `false`.
When `enableWirelessDistribution` has been enabled, you must also provide the
path of the PHP script (`installURL`) (that is included with the iOS build
environment) to enable wireless ad-hoc installations.
Emulating or simulating the app
-------------------------------
It is also possible to simulate the correspond iOS simulator build by using
`xcodeenv.simulateApp {}` and emulate an Android APK by using
`androidenv.emulateApp {}`.

View File

@@ -15,7 +15,6 @@ At the moment we support three different methods for managing plugins:
- Vim packages (*recommend*)
- VAM (=vim-addon-manager)
- Pathogen
- vim-plug
## Custom configuration
@@ -23,7 +22,6 @@ Adding custom .vimrc lines can be done using the following code:
```
vim_configurable.customize {
# `name` specifies the name of the executable and package
name = "vim-with-plugins";
vimrcConfig.customRC = ''
@@ -32,8 +30,6 @@ vim_configurable.customize {
}
```
This configuration is used when vim is invoked with the command specified as name, in this case `vim-with-plugins`.
For Neovim the `configure` argument can be overridden to achieve the same:
```
@@ -46,24 +42,9 @@ neovim.override {
}
```
If you want to use `neovim-qt` as a graphical editor, you can configure it by overriding neovim in an overlay
or passing it an overridden neovimn:
```
neovim-qt.override {
neovim = neovim.override {
configure = {
customRC = ''
# your custom configuration
'';
};
};
}
```
## Managing plugins with Vim packages
To store you plugins in Vim packages (the native vim plugin manager, see `:help packages`) the following example can be used:
To store you plugins in Vim packages the following example can be used:
```
vim_configurable.customize {
@@ -71,8 +52,6 @@ vim_configurable.customize {
# loaded on launch
start = [ youcompleteme fugitive ];
# manually loadable by calling `:packadd $plugin-name`
# however, if a vim plugin has a dependency that is not explicitly listed in
# opt that dependency will always be added to start to avoid confusion.
opt = [ phpCompletion elm-vim ];
# To automatically load a plugin when opening a filetype, add vimrc lines like:
# autocmd FileType php :packadd phpCompletion
@@ -80,8 +59,7 @@ vim_configurable.customize {
}
```
`myVimPackage` is an arbitrary name for the generated package. You can choose any name you like.
For Neovim the syntax is:
For Neovim the syntax is
```
neovim.override {
@@ -92,8 +70,6 @@ neovim.override {
packages.myVimPackage = with pkgs.vimPlugins; {
# see examples below how to use custom packages
start = [ ];
# If a vim plugin has a dependency that is not explicitly listed in
# opt that dependency will always be added to start to avoid confusion.
opt = [ ];
};
};
@@ -106,7 +82,6 @@ The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.n
{
packageOverrides = pkgs: with pkgs; {
myVim = vim_configurable.customize {
# `name` specifies the name of the executable and package
name = "vim-with-plugins";
# add here code from the example section
};
@@ -121,35 +96,6 @@ The resulting package can be added to `packageOverrides` in `~/.nixpkgs/config.n
After that you can install your special grafted `myVim` or `myNeovim` packages.
## Managing plugins with vim-plug
To use [vim-plug](https://github.com/junegunn/vim-plug) to manage your Vim
plugins the following example can be used:
```
vim_configurable.customize {
vimrcConfig.packages.myVimPackage = with pkgs.vimPlugins; {
# loaded on launch
plug.plugins = [ youcompleteme fugitive phpCompletion elm-vim ];
};
}
```
For Neovim the syntax is:
```
neovim.override {
configure = {
customRC = ''
# here your custom configuration goes!
'';
plug.plugins = with pkgs.vimPlugins; [
vim-go
];
};
}
```
## Managing plugins with VAM
### Handling dependencies of Vim plugins
@@ -233,18 +179,6 @@ Sample output2:
]
## Adding new plugins to nixpkgs
In `pkgs/misc/vim-plugins/vim-plugin-names` we store the plugin names
for all vim plugins we automatically generate plugins for.
The format of this file `github username/github repository`:
For example https://github.com/scrooloose/nerdtree becomes `scrooloose/nerdtree`.
After adding your plugin to this file run the `./update.py` in the same folder.
This will updated a file called `generated.nix` and make your plugin accessible in the
`vimPlugins` attribute set (`vimPlugins.nerdtree` in our example).
If additional steps to the build process of the plugin are required, add an
override to the `pkgs/misc/vim-plugins/default.nix` in the same directory.
## Important repositories
- [vim-pi](https://bitbucket.org/vimcommunity/vim-pi) is a plugin repository

View File

@@ -1,26 +0,0 @@
# Generates the documentation for library functons via nixdoc. To add
# another library function file to this list, the include list in the
# file `doc/functions/library.xml` must also be updated.
{ pkgs ? import ./.. {}, locationsXml }:
with pkgs; stdenv.mkDerivation {
name = "nixpkgs-lib-docs";
src = ./../lib;
buildInputs = [ nixdoc ];
installPhase = ''
function docgen {
nixdoc -c "$1" -d "$2" -f "../lib/$1.nix" > "$out/$1.xml"
}
mkdir -p $out
ln -s ${locationsXml} $out/locations.xml
docgen strings 'String manipulation functions'
docgen trivial 'Miscellaneous functions'
docgen lists 'List manipulation functions'
docgen debug 'Debugging functions'
docgen options 'NixOS / nixpkgs option handling'
'';
}

View File

@@ -14,7 +14,7 @@ meta = with stdenv.lib; {
GNU Hello is a program that prints "Hello, world!" when you run it.
It is fully customizable.
'';
homepage = https://www.gnu.org/software/hello/manual/;
homepage = http://www.gnu.org/software/hello/manual/;
license = licenses.gpl3Plus;
maintainers = [ maintainers.eelco ];
platforms = platforms.all;
@@ -35,7 +35,7 @@ $ nix-env -qa hello --json
"hello": {
"meta": {
"description": "A program that produces a familiar, friendly greeting",
"homepage": "https://www.gnu.org/software/hello/manual/",
"homepage": "http://www.gnu.org/software/hello/manual/",
"license": {
"fullName": "GNU General Public License version 3 or later",
"shortName": "GPLv3+",
@@ -135,7 +135,7 @@ hello-2.3 A program that produces a familiar, friendly greeting
<listitem>
<para>
The packages homepage. Example:
<literal>https://www.gnu.org/software/hello/manual/</literal>
<literal>http://www.gnu.org/software/hello/manual/</literal>
</para>
</listitem>
</varlistentry>
@@ -146,7 +146,7 @@ hello-2.3 A program that produces a familiar, friendly greeting
<listitem>
<para>
The page where a link to the current version can be found. Example:
<literal>https://ftp.gnu.org/gnu/hello/</literal>
<literal>http://ftp.gnu.org/gnu/hello/</literal>
</para>
</listitem>
</varlistentry>
@@ -250,60 +250,6 @@ meta.platforms = stdenv.lib.platforms.linux;
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>tests</varname>
</term>
<listitem>
<warning>
<para>
This attribute is special in that it is not actually under the
<literal>meta</literal> attribute set but rather under the
<literal>passthru</literal> attribute set. This is due to a current
limitation of Nix, and will change as soon as Nixpkgs will be able to
depend on a new enough version of Nix. See
<link xlink:href="https://github.com/NixOS/nix/issues/2532">the relevant
issue</link> for more details.
</para>
</warning>
<para>
An attribute set with as values tests. A test is a derivation, which
builds successfully when the test passes, and fails to build otherwise. A
derivation that is a test needs to have <literal>meta.timeout</literal>
defined.
</para>
<para>
The NixOS tests are available as <literal>nixosTests</literal> in
parameters of derivations. For instance, the OpenSMTPD derivation
includes lines similar to:
<programlisting>
{ /* ... */, nixosTests }:
{
# ...
passthru.tests = {
basic-functionality-and-dovecot-integration = nixosTests.opensmtpd;
};
}
</programlisting>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>timeout</varname>
</term>
<listitem>
<para>
A 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
<literal>nixpkgs</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<varname>hydraPlatforms</varname>

View File

@@ -12,7 +12,7 @@
<para>
The Nix language allows a derivation to produce multiple outputs, which is
similar to what is utilized by other Linux distribution packaging systems.
The outputs reside in separate Nix store paths, so they can be mostly
The outputs reside in separate nix store paths, so they can be mostly
handled independently of each other, including passing to build inputs,
garbage collection or binary substitution. The exception is that building
from source always produces all the outputs.

View File

@@ -3,9 +3,9 @@
xml:id="chap-overlays">
<title>Overlays</title>
<para>
This chapter describes how to extend and change Nixpkgs using overlays.
Overlays are used to add layers in the fixed-point used by Nixpkgs to compose
the set of all packages.
This chapter describes how to extend and change Nixpkgs packages using
overlays. Overlays are used to add layers in the fix-point used by Nixpkgs to
compose the set of all packages.
</para>
<para>
Nixpkgs can be configured with a list of overlays, which are applied in
@@ -17,122 +17,91 @@
<title>Installing overlays</title>
<para>
The list of overlays can be set either explicitly in a Nix expression, or
through <literal>&lt;nixpkgs-overlays></literal> or user configuration
files.
The list of overlays is determined as follows.
</para>
<section xml:id="sec-overlays-argument">
<title>Set overlays in NixOS or Nix expressions</title>
<para>
If the <varname>overlays</varname> argument is not provided explicitly, we
look for overlays in a path. The path is determined as follows:
<orderedlist>
<listitem>
<para>
First, if an <varname>overlays</varname> argument to the nixpkgs function
itself is given, then that is used.
</para>
<para>
This can be passed explicitly when importing nipxkgs, for example
<literal>import &lt;nixpkgs> { overlays = [ overlay1 overlay2 ];
}</literal>.
</para>
</listitem>
<listitem>
<para>
Otherwise, if the Nix path entry <literal>&lt;nixpkgs-overlays></literal>
exists, we look for overlays at that path, as described below.
</para>
<para>
See the section on <literal>NIX_PATH</literal> in the Nix manual for more
details on how to set a value for
<literal>&lt;nixpkgs-overlays>.</literal>
</para>
</listitem>
<listitem>
<para>
If one of <filename>~/.config/nixpkgs/overlays.nix</filename> and
<filename>~/.config/nixpkgs/overlays/</filename> exists, then we look for
overlays at that path, as described below. It is an error if both exist.
</para>
</listitem>
</orderedlist>
</para>
<para>
On a NixOS system the value of the <literal>nixpkgs.overlays</literal>
option, if present, is passed to the system Nixpkgs directly as an
argument. Note that this does not affect the overlays for non-NixOS
operations (e.g. <literal>nix-env</literal>), which are
<link xlink:href="#sec-overlays-lookup">looked</link> up independently.
</para>
<para>
If we are looking for overlays at a path, then there are two cases:
<itemizedlist>
<listitem>
<para>
If the path is a file, then the file is imported as a Nix expression and
used as the list of overlays.
</para>
</listitem>
<listitem>
<para>
If the path is a directory, then we take the content of the directory,
order it lexicographically, and attempt to interpret each as an overlay
by:
<itemizedlist>
<listitem>
<para>
Importing the file, if it is a <literal>.nix</literal> file.
</para>
</listitem>
<listitem>
<para>
Importing a top-level <filename>default.nix</filename> file, if it is
a directory.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
<para>
The list of overlays can be passed explicitly when importing nixpkgs, for
example <literal>import &lt;nixpkgs> { overlays = [ overlay1 overlay2 ];
}</literal>.
</para>
<para>
On a NixOS system the value of the <literal>nixpkgs.overlays</literal>
option, if present, is passed to the system Nixpkgs directly as an argument.
Note that this does not affect the overlays for non-NixOS operations (e.g.
<literal>nix-env</literal>), which are looked up independently.
</para>
<para>
Further overlays can be added by calling the <literal>pkgs.extend</literal>
or <literal>pkgs.appendOverlays</literal>, although it is often preferable
to avoid these functions, because they recompute the Nixpkgs fixpoint,
which is somewhat expensive to do.
</para>
</section>
<section xml:id="sec-overlays-lookup">
<title>Install overlays via configuration lookup</title>
<para>
The list of overlays is determined as follows.
</para>
<para>
<orderedlist>
<listitem>
<para>
First, if an
<link xlink:href="#sec-overlays-argument"><varname>overlays</varname>
argument</link> to the Nixpkgs function itself is given, then that is
used and no path lookup will be performed.
</para>
</listitem>
<listitem>
<para>
Otherwise, if the Nix path entry
<literal>&lt;nixpkgs-overlays></literal> exists, we look for overlays at
that path, as described below.
</para>
<para>
See the section on <literal>NIX_PATH</literal> in the Nix manual for
more details on how to set a value for
<literal>&lt;nixpkgs-overlays>.</literal>
</para>
</listitem>
<listitem>
<para>
If one of <filename>~/.config/nixpkgs/overlays.nix</filename> and
<filename>~/.config/nixpkgs/overlays/</filename> exists, then we look
for overlays at that path, as described below. It is an error if both
exist.
</para>
</listitem>
</orderedlist>
</para>
<para>
If we are looking for overlays at a path, then there are two cases:
<itemizedlist>
<listitem>
<para>
If the path is a file, then the file is imported as a Nix expression and
used as the list of overlays.
</para>
</listitem>
<listitem>
<para>
If the path is a directory, then we take the content of the directory,
order it lexicographically, and attempt to interpret each as an overlay
by:
<itemizedlist>
<listitem>
<para>
Importing the file, if it is a <literal>.nix</literal> file.
</para>
</listitem>
<listitem>
<para>
Importing a top-level <filename>default.nix</filename> file, if it is
a directory.
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</itemizedlist>
</para>
<para>
Because overlays that are set in NixOS configuration do not affect
non-NixOS operations such as <literal>nix-env</literal>, the
<filename>overlays.nix</filename> option provides a convenient way to use
the same overlays for a NixOS system configuration and user configuration:
the same file can be used as <filename>overlays.nix</filename> and imported
as the value of <literal>nixpkgs.overlays</literal>.
</para>
<!-- TODO: Example of sharing overlays between NixOS configuration
and configuration lookup. Also reference the example
from the sec-overlays-argument paragraph about NixOS.
-->
</section>
<para>
The <filename>overlays.nix</filename> option therefore provides a convenient
way to use the same overlays for a NixOS system configuration and user
configuration: the same file can be used as
<filename>overlays.nix</filename> and imported as the value of
<literal>nixpkgs.overlays</literal>.
</para>
</section>
<!--============================================================-->
<section xml:id="sec-overlays-definition">

View File

@@ -205,7 +205,7 @@ $ cat $(PRINT_PATH=1 nix-prefetch-url $i | tail -n 1) \
<para>
Nixpkgs provides a number of packages that will install Eclipse in its
various forms. These range from the bare-bones Eclipse Platform to the more
various forms, these range from the bare-bones Eclipse Platform to the more
fully featured Eclipse SDK or Scala-IDE packages and multiple version are
often available. It is possible to list available Eclipse packages by
issuing the command:
@@ -307,19 +307,23 @@ packageOverrides = pkgs: {
</screen>
</para>
</section>
<section xml:id="sec-elm">
<title>Elm</title>
<para>
To update Elm compiler, see <filename>nixpkgs/pkgs/development/compilers/elm/README.md</filename>.
</para>
<para>
To package Elm applications, <link xlink:href="https://github.com/hercules-ci/elm2nix#elm2nix">read about elm2nix</link>.
The Nix expressions for Elm reside in
<filename>pkgs/development/compilers/elm</filename>. They are generated
automatically by <command>update-elm.rb</command> script. One should specify
versions of Elm packages inside the script, clear the
<filename>packages</filename> directory and run the script from inside it.
<literal>elm-reactor</literal> is special because it also has Elm package
dependencies. The process is not automated very much for now -- you should
get the <literal>elm-reactor</literal> source tree (e.g. with
<command>nix-shell</command>) and run <command>elm2nix.rb</command> inside
it. Place the resulting <filename>package.nix</filename> file into
<filename>packages/elm-reactor-elm.nix</filename>.
</para>
</section>
<section xml:id="sec-shell-helpers">
<title>Interactive shell helpers</title>
@@ -409,9 +413,11 @@ packageOverrides = pkgs: {
in your <filename>/etc/nixos/configuration.nix</filename>. You'll also need
<programlisting>hardware.pulseaudio.support32Bit = true;</programlisting>
if you are using PulseAudio - this will enable 32bit ALSA apps integration.
To use the Steam controller or other Steam supported controllers such as
the DualShock 4 or Nintendo Switch Pro, you need to add
<programlisting>hardware.steam-hardware.enable = true;</programlisting>
To use the Steam controller, you need to add
<programlisting>services.udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
KERNEL=="uinput", MODE="0660", GROUP="users", OPTIONS+="static_node=uinput"
'';</programlisting>
to your configuration.
</para>
</section>
@@ -677,10 +683,10 @@ overrides = self: super: rec {
</para>
<para>
The python and perl plugins allows the addition of extra libraries. For
instance, the <literal>inotify.py</literal> script in weechat-scripts
requires D-Bus or libnotify, and the <literal>fish.py</literal> script
requires pycrypto. To use these scripts, use the plugin's
The python plugin allows the addition of extra libraries. For instance, the
<literal>inotify.py</literal> script in weechat-scripts requires D-Bus or
libnotify, and the <literal>fish.py</literal> script requires pycrypto. To
use these scripts, use the <literal>python</literal> plugin's
<literal>withPackages</literal> attribute:
<programlisting>weechat.override { configure = {availablePlugins, ...}: {
plugins = with availablePlugins; [
@@ -815,102 +821,4 @@ citrix_receiver.override {
</para>
</section>
</section>
<section xml:id="sec-ibus-typing-booster">
<title>ibus-engines.typing-booster</title>
<para>
This package is an ibus-based completion method to speed up typing.
</para>
<section xml:id="sec-ibus-typing-booster-activate">
<title>Activating the engine</title>
<para>
IBus needs to be configured accordingly to activate
<literal>typing-booster</literal>. The configuration depends on the desktop
manager in use. For detailed instructions, please refer to the
<link xlink:href="https://mike-fabian.github.io/ibus-typing-booster/documentation.html">upstream
docs</link>.
</para>
<para>
On NixOS you need to explicitly enable <literal>ibus</literal> with given
engines before customizing your desktop to use
<literal>typing-booster</literal>. This can be achieved using the
<literal>ibus</literal> module:
<programlisting>{ pkgs, ... }: {
i18n.inputMethod = {
enabled = "ibus";
ibus.engines = with pkgs.ibus-engines; [ typing-booster ];
};
}</programlisting>
</para>
</section>
<section xml:id="sec-ibus-typing-booster-customize-hunspell">
<title>Using custom hunspell dictionaries</title>
<para>
The IBus engine is based on <literal>hunspell</literal> to support
completion in many languages. By default the dictionaries
<literal>de-de</literal>, <literal>en-us</literal>,
<literal>es-es</literal>, <literal>it-it</literal>,
<literal>sv-se</literal> and <literal>sv-fi</literal> are in use. To add
another dictionary, the package can be overridden like this:
<programlisting>ibus-engines.typing-booster.override {
langs = [ "de-at" "en-gb" ];
}</programlisting>
</para>
<para>
<emphasis>Note: each language passed to <literal>langs</literal> must be an
attribute name in <literal>pkgs.hunspellDicts</literal>.</emphasis>
</para>
</section>
<section xml:id="sec-ibus-typing-booster-emoji-picker">
<title>Built-in emoji picker</title>
<para>
The <literal>ibus-engines.typing-booster</literal> package contains a
program named <literal>emoji-picker</literal>. To display all emojis
correctly, a special font such as <literal>noto-fonts-emoji</literal> is
needed:
</para>
<para>
On NixOS it can be installed using the following expression:
<programlisting>{ pkgs, ... }: {
fonts.fonts = with pkgs; [ noto-fonts-emoji ];
}</programlisting>
</para>
</section>
</section>
<section xml:id="dlib">
<title>DLib</title>
<para>
<link xlink:href="http://dlib.net/">DLib</link> is a modern, C++-based toolkit which
provides several machine learning algorithms.
</para>
<section xml:id="compiling-without-avx-support">
<title>Compiling without AVX support</title>
<para>
Especially older CPUs don't support
<link xlink:href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">AVX</link>
(<abbrev>Advanced Vector Extensions</abbrev>) instructions that are used by DLib to
optimize their algorithms.
</para>
<para>
On the affected hardware errors like <literal>Illegal instruction</literal> will occur.
In those cases AVX support needs to be disabled:
<programlisting>self: super: {
dlib = super.dlib.override { avxSupport = false; };
}</programlisting>
</para>
</section>
</section>
</chapter>

View File

@@ -6,13 +6,13 @@
<title>Darwin (macOS)</title>
<para>
Some common issues when packaging software for Darwin:
Some common issues when packaging software for darwin:
</para>
<itemizedlist>
<listitem>
<para>
The Darwin <literal>stdenv</literal> uses clang instead of gcc. When
The darwin <literal>stdenv</literal> uses clang instead of gcc. When
referring to the compiler <varname>$CC</varname> or <command>cc</command>
will work in both cases. Some builds hardcode gcc/g++ in their build
scripts, that can usually be fixed with using something like
@@ -31,7 +31,7 @@
</listitem>
<listitem>
<para>
On Darwin, libraries are linked using absolute paths, libraries are
On darwin libraries are linked using absolute paths, libraries are
resolved by their <literal>install_name</literal> at link time. Sometimes
packages won't set this correctly causing the library lookups to fail at
runtime. This can be fixed by adding extra linker flags or by running
@@ -96,8 +96,8 @@
</programlisting>
<para>
The package <literal>xcbuild</literal> can be used to build projects that
really depend on Xcode. However, this replacement is not 100%
compatible with Xcode and can occasionally cause issues.
really depend on Xcode, however projects that build some kind of graphical
interface won't work without using Xcode in an impure way.
</para>
</listitem>
</itemizedlist>

View File

@@ -147,8 +147,8 @@ $ git add pkgs/development/libraries/libfoo/default.nix</screen>
</listitem>
<listitem>
<para>
You can use <command>nix-prefetch-url</command>
<replaceable>url</replaceable> to get the
You can use <command>nix-prefetch-url</command> (or similar
nix-prefetch-git, etc) <replaceable>url</replaceable> to get the
SHA-256 hash of source distributions. There are similar commands as
<command>nix-prefetch-git</command> and
<command>nix-prefetch-hg</command> available in

View File

@@ -17,20 +17,22 @@
</para>
</warning>
<para>
The Nixpkgs project receives a fairly high number of contributions via GitHub
pull requests. Reviewing and approving these is an important task and a way
The nixpkgs project receives a fairly high number of contributions via GitHub
pull-requests. Reviewing and approving these is an important task and a way
to contribute to the project.
</para>
<para>
The high change rate of Nixpkgs makes any pull request that remains open for
The high change rate of nixpkgs makes any pull request that remains open for
too long subject to conflicts that will require extra work from the submitter
or the merger. Reviewing pull requests in a timely manner and being responsive
to the comments is the key to avoid this issue. GitHub provides sort filters
that can be used to see the <link
xlink:href="https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc">most
recently</link> and the <link
xlink:href="https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-asc">least
recently</link> updated pull requests. We highly encourage looking at
or the merger. Reviewing pull requests in a timely manner and being
responsive to the comments is the key to avoid these. GitHub provides sort
filters that can be used to see the
<link
xlink:href="https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc">most
recently</link> and the
<link
xlink:href="https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-asc">least
recently</link> updated pull-requests. We highly encourage looking at
<link xlink:href="https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+is%3Aopen+review%3Anone+status%3Asuccess+-label%3A%222.status%3A+work-in-progress%22+no%3Aproject+no%3Aassignee+no%3Amilestone">
this list of ready to merge, unreviewed pull requests</link>.
</para>
@@ -41,12 +43,12 @@
</para>
<para>
GitHub provides reactions as a simple and quick way to provide feedback to
pull requests or any comments. The thumb-down reaction should be used with
pull-requests or any comments. The thumb-down reaction should be used with
care and if possible accompanied with some explanation so the submitter has
directions to improve their contribution.
</para>
<para>
pull request reviews should include a list of what has been reviewed in a
Pull-request reviews should include a list of what has been reviewed in a
comment, so other reviewers and mergers can know the state of the review.
</para>
<para>
@@ -58,8 +60,8 @@
<title>Package updates</title>
<para>
A package update is the most trivial and common type of pull request. These
pull requests mainly consist of updating the version part of the package
A package update is the most trivial and common type of pull-request. These
pull-requests mainly consist of updating the version part of the package
name and the source hash.
</para>
@@ -75,7 +77,7 @@
<itemizedlist>
<listitem>
<para>
Add labels to the pull request. (Requires commit rights)
Add labels to the pull-request. (Requires commit rights)
</para>
<itemizedlist>
<listitem>
@@ -142,8 +144,8 @@
<itemizedlist>
<listitem>
<para>
pull requests are often targeted to the master or staging branch, and
building the pull request locally when it is submitted can trigger many
Pull-requests are often targeted to the master or staging branch, and
building the pull-request locally when it is submitted can trigger many
source builds.
</para>
<para>
@@ -172,14 +174,14 @@ $ git rebase --onto nixos-unstable BASEBRANCH FETCH_HEAD <co
</callout>
<callout arearefs='reviewing-rebase-3'>
<para>
Fetching the pull request changes, <varname>PRNUMBER</varname> is the
number at the end of the pull request title and
<varname>BASEBRANCH</varname> the base branch of the pull request.
Fetching the pull-request changes, <varname>PRNUMBER</varname> is the
number at the end of the pull-request title and
<varname>BASEBRANCH</varname> the base branch of the pull-request.
</para>
</callout>
<callout arearefs='reviewing-rebase-4'>
<para>
Rebasing the pull request changes to the nixos-unstable branch.
Rebasing the pull-request changes to the nixos-unstable branch.
</para>
</callout>
</calloutlist>
@@ -188,10 +190,10 @@ $ git rebase --onto nixos-unstable BASEBRANCH FETCH_HEAD <co
<listitem>
<para>
The <link xlink:href="https://github.com/madjar/nox">nox</link> tool can
be used to review a pull request content in a single command. It doesn't
be used to review a pull-request content in a single command. It doesn't
rebase on a channel branch so it might trigger multiple source builds.
<varname>PRNUMBER</varname> should be replaced by the number at the end
of the pull request title.
of the pull-request title.
</para>
<screen>
$ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
@@ -228,7 +230,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
<title>New packages</title>
<para>
New packages are a common type of pull requests. These pull requests
New packages are a common type of pull-requests. These pull requests
consists in adding a new nix-expression for a package.
</para>
@@ -239,7 +241,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
<itemizedlist>
<listitem>
<para>
Add labels to the pull request. (Requires commit rights)
Add labels to the pull-request. (Requires commit rights)
</para>
<itemizedlist>
<listitem>
@@ -277,7 +279,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
</listitem>
<listitem>
<para>
A maintainer must be set. This can be the package submitter or a
A maintainer must be set, this can be the package submitter or a
community member that accepts to take maintainership of the package.
</para>
</listitem>
@@ -359,7 +361,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
<itemizedlist>
<listitem>
<para>
Add labels to the pull request. (Requires commit rights)
Add labels to the pull-request. (Requires commit rights)
</para>
<itemizedlist>
<listitem>
@@ -472,7 +474,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
<itemizedlist>
<listitem>
<para>
Add labels to the pull request. (Requires commit rights)
Add labels to the pull-request. (Requires commit rights)
</para>
<itemizedlist>
<listitem>
@@ -574,7 +576,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
like to be a long-term reviewer for related submissions, please contact the
current reviewers for that topic. They will give you information about the
reviewing process. The main reviewers for a topic can be hard to find as
there is no list, but checking past pull requests to see who reviewed or
there is no list, but checking past pull-requests to see who reviewed or
git-blaming the code to see who committed to that topic can give some hints.
</para>
@@ -584,7 +586,7 @@ $ nix-shell -p nox --run "nox-review -k pr PRNUMBER"
</para>
</section>
<section xml:id="reviewing-contributions--merging-pull-requests">
<title>Merging pull requests</title>
<title>Merging pull-requests</title>
<para>
It is possible for community members that have enough knowledge and
@@ -605,11 +607,11 @@ policy.
-->
<para>
In a case a contributor definitively leaves the Nix community, they should
In a case a contributor leaves definitively the Nix community, he should
create an issue or post on
<link
xlink:href="https://discourse.nixos.org">Discourse</link> with
references of packages and modules they maintain so the maintainership can be
references of packages and modules he maintains so the maintainership can be
taken over by other contributors.
</para>
</section>

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,6 @@
body
{
font-family: "Nimbus Sans L", sans-serif;
font-size: 1em;
background: white;
margin: 2em 1em 2em 1em;
}
@@ -29,25 +28,6 @@ h2 /* chapters, appendices, subtitle */
font-size: 180%;
}
div.book
{
text-align: center;
}
div.book > div
{
/*
* based on https://medium.com/@zkareemz/golden-ratio-62b3b6d4282a
* we do 70 characters per line to fit code listings better
* 70 * (font-size / 1.618)
* expression for emacs:
* (* 70 (/ 1 1.618))
*/
max-width: 43.2em;
text-align: left;
margin: auto;
}
/* Extra space between chapters, appendices. */
div.chapter > div.titlepage h2, div.appendix > div.titlepage h2
{
@@ -122,8 +102,8 @@ pre.screen, pre.programlisting
{
border: 1px solid #b0b0b0;
padding: 3px 3px;
margin-left: 0.5em;
margin-right: 0.5em;
margin-left: 1.5em;
margin-right: 1.5em;
background: #f4f4f8;
font-family: monospace;

View File

@@ -1,44 +0,0 @@
{ lib }:
rec {
/* Print a trace message if pred is false.
Intended to be used to augment asserts with helpful error messages.
Example:
assertMsg false "nope"
=> false
stderr> trace: nope
assert (assertMsg ("foo" == "bar") "foo is not bar, silly"); ""
stderr> trace: foo is not bar, silly
stderr> assert failed at
Type:
assertMsg :: Bool -> String -> Bool
*/
# TODO(Profpatsch): add tests that check stderr
assertMsg = pred: msg:
if pred
then true
else builtins.trace msg false;
/* Specialized `assertMsg` for checking if val is one of the elements
of a list. Useful for checking enums.
Example:
let sslLibrary = "libressl"
in assertOneOf "sslLibrary" sslLibrary [ "openssl" "bearssl" ]
=> false
stderr> trace: sslLibrary must be one of "openssl", "bearssl", but is: "libressl"
Type:
assertOneOf :: String -> ComparableVal -> List ComparableVal -> Bool
*/
assertOneOf = name: val: xs: assertMsg
(lib.elem val xs)
"${name} must be one of ${
lib.generators.toPretty {} xs}, but is: ${
lib.generators.toPretty {} val}";
}

View File

@@ -94,15 +94,6 @@ rec {
attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs);
/* Given a set of attribute names, return the set of the corresponding
attributes from the given set.
Example:
getAttrs [ "a" "b" ] { a = 1; b = 2; c = 3; }
=> { a = 1; b = 2; }
*/
getAttrs = names: attrs: genAttrs names (name: attrs.${name});
/* Collect each attribute named `attr' from a list of attribute
sets. Sets that don't contain the named attribute are ignored.
@@ -444,15 +435,12 @@ rec {
useful for deep-overriding.
Example:
overrideExisting {} { a = 1; }
=> {}
overrideExisting { b = 2; } { a = 1; }
=> { b = 2; }
overrideExisting { a = 3; b = 2; } { a = 1; }
=> { a = 1; b = 2; }
x = { a = { b = 4; c = 3; }; }
overrideExisting x { a = { b = 6; d = 2; }; }
=> { a = { b = 6; d = 2; }; }
*/
overrideExisting = old: new:
mapAttrs (name: value: new.${name} or value) old;
old // listToAttrs (map (attr: nameValuePair attr (attrByPath [attr] old.${attr} new)) (attrNames old));
/* Get a package output.
If no output is found, fallback to `.out` and then to the default.

View File

@@ -0,0 +1,113 @@
{lib, pkgs}:
let inherit (lib) nvs; in
{
# composableDerivation basically mixes these features:
# - fix function
# - mergeAttrBy
# - provides shortcuts for "options" such as "--enable-foo" and adding
# buildInputs, see php example
#
# It predates styles which are common today, such as
# * the config attr
# * mkDerivation.override feature
# * overrideDerivation (lib/customization.nix)
#
# Some of the most more important usage examples (which could be rewritten if it was important):
# * php
# * postgis
# * vim_configurable
#
# A minimal example illustrating most features would look like this:
# let base = composableDerivation { (fixed: let inherit (fixed.fixed) name in {
# src = fetchurl {
# }
# buildInputs = [A];
# preConfigre = "echo ${name}";
# # attention, "name" attr is missing, thus you cannot instantiate "base".
# }
# in {
# # These all add name attribute, thus you can instantiate those:
# v1 = base.merge ({ name = "foo-add-B"; buildInputs = [B]; }); // B gets merged into buildInputs
# v2 = base.merge ({ name = "mix-in-pre-configure-lines" preConfigre = ""; });
# v3 = base.replace ({ name = "foo-no-A-only-B;" buildInputs = [B]; });
# }
#
# So yes, you can think about it being something like nixos modules, and
# you'd be merging "features" in one at a time using .merge or .replace
# Thanks Shea for telling me that I rethink the documentation ..
#
# issues:
# * its complicated to understand
# * some "features" such as exact merge behaviour are buried in mergeAttrBy
# and defaultOverridableDelayableArgs assuming the default behaviour does
# the right thing in the common case
# * Eelco once said using such fix style functions are slow to evaluate
# * Too quick & dirty. Hard to understand for others. The benefit was that
# you were able to create a kernel builder like base derivation and replace
# / add patches the way you want without having to declare function arguments
#
# nice features:
# declaring "optional features" is modular. For instance:
# flags.curl = {
# configureFlags = ["--with-curl=${curl.dev}" "--with-curlwrappers"];
# buildInputs = [curl openssl];
# };
# flags.other = { .. }
# (Example taken from PHP)
#
# alternative styles / related features:
# * Eg see function supporting building the kernel
# * versionedDerivation (discussion about this is still going on - or ended)
# * composedArgsAndFun
# * mkDerivation.override
# * overrideDerivation
# * using { .., *Support ? false }: like configurable options.
# To find those examples use grep
#
# To sum up: It exists for historical reasons - and for most commonly used
# tasks the alternatives should be used
#
# If you have questions about this code ping Marc Weber.
composableDerivation = {
mkDerivation ? pkgs.stdenv.mkDerivation,
# list of functions to be applied before defaultOverridableDelayableArgs removes removeAttrs names
# prepareDerivationArgs handles derivation configurations
applyPreTidy ? [ lib.prepareDerivationArgs ],
# consider adding addtional elements by derivation.merge { removeAttrs = ["elem"]; };
removeAttrs ? ["cfg" "flags"]
}: (lib.defaultOverridableDelayableArgs ( a: mkDerivation a)
{
inherit applyPreTidy removeAttrs;
}).merge;
# some utility functions
# use this function to generate flag attrs for prepareDerivationArgs
# E nable D isable F eature
edf = {name, feat ? name, enable ? {}, disable ? {} , value ? ""}:
nvs name {
set = {
configureFlags = ["--enable-${feat}${if value == "" then "" else "="}${value}"];
} // enable;
unset = {
configureFlags = ["--disable-${feat}"];
} // disable;
};
# same for --with and --without-
# W ith or W ithout F eature
wwf = {name, feat ? name, enable ? {}, disable ? {}, value ? ""}:
nvs name {
set = enable // {
configureFlags = ["--with-${feat}${if value == "" then "" else "="}${value}"]
++ lib.maybeAttr "configureFlags" [] enable;
};
unset = disable // {
configureFlags = ["--without-${feat}"]
++ lib.maybeAttr "configureFlags" [] disable;
};
};
}

View File

@@ -121,7 +121,7 @@ rec {
auto = builtins.intersectAttrs (lib.functionArgs f) autoArgs;
origArgs = auto // args;
pkgs = f origArgs;
mkAttrOverridable = name: _: makeOverridable (newArgs: (f newArgs).${name}) origArgs;
mkAttrOverridable = name: pkg: makeOverridable (newArgs: (f newArgs).${name}) origArgs;
in lib.mapAttrs mkAttrOverridable pkgs;
@@ -196,7 +196,7 @@ rec {
newScope = scope: newScope (self // scope);
callPackage = self.newScope {};
overrideScope = g: lib.warn
"`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: super: { })` instead of `overrideScope (super: self: { })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern."
"`overrideScope` (from `lib.makeScope`) is deprecated. Do `overrideScope' (self: self: { })` instead of `overrideScope (super: self: { })`. All other overrides have the parameters in that order, including other definitions of `overrideScope`. This was the only definition violating the pattern."
(makeScope newScope (lib.fixedPoints.extends (lib.flip g) f));
overrideScope' = g: makeScope newScope (lib.fixedPoints.extends g f);
packages = f;

View File

@@ -23,54 +23,27 @@ rec {
# -- TRACING --
/* Conditionally trace the supplied message, based on a predicate.
Type: traceIf :: bool -> string -> a -> a
/* Trace msg, but only if pred is true.
Example:
traceIf true "hello" 3
trace: hello
=> 3
*/
traceIf =
# Predicate to check
pred:
# Message that should be traced
msg:
# Value to return
x: if pred then trace msg x else x;
traceIf = pred: msg: x: if pred then trace msg x else x;
/* Trace the supplied value after applying a function to it, and
return the original value.
Type: traceValFn :: (a -> b) -> a -> a
/* Trace the value and also return it.
Example:
traceValFn (v: "mystring ${v}") "foo"
trace: mystring foo
=> "foo"
*/
traceValFn =
# Function to apply
f:
# Value to trace and return
x: trace (f x) x;
/* Trace the supplied value and return it.
Type: traceVal :: a -> a
Example:
traceVal 42
# trace: 42
=> 42
*/
traceValFn = f: x: trace (f x) x;
traceVal = traceValFn id;
/* `builtins.trace`, but the value is `builtins.deepSeq`ed first.
Type: traceSeq :: a -> b -> b
Example:
trace { a.b.c = 3; } null
trace: { a = <CODE>; }
@@ -79,11 +52,7 @@ rec {
trace: { a = { b = { c = 3; }; }; }
=> null
*/
traceSeq =
# The value to trace
x:
# The value to return
y: trace (builtins.deepSeq x x) y;
traceSeq = x: y: trace (builtins.deepSeq x x) y;
/* Like `traceSeq`, but only evaluate down to depth n.
This is very useful because lots of `traceSeq` usages
@@ -107,49 +76,27 @@ rec {
in trace (generators.toPretty { allowPrettyValues = true; }
(modify depth snip x)) y;
/* A combination of `traceVal` and `traceSeq` that applies a
provided function to the value to be traced after `deepSeq`ing
it.
*/
traceValSeqFn =
# Function to apply
f:
# Value to trace
v: traceValFn f (builtins.deepSeq v v);
/* A combination of `traceVal` and `traceSeq`. */
/* A combination of `traceVal` and `traceSeq` */
traceValSeqFn = f: v: traceValFn f (builtins.deepSeq v v);
traceValSeq = traceValSeqFn id;
/* A combination of `traceVal` and `traceSeqN` that applies a
provided function to the value to be traced. */
traceValSeqNFn =
# Function to apply
f:
depth:
# Value to trace
v: traceSeqN depth (f v) v;
/* A combination of `traceVal` and `traceSeqN`. */
traceValSeqNFn = f: depth: v: traceSeqN depth (f v) v;
traceValSeqN = traceValSeqNFn id;
# -- TESTING --
/* Evaluate a set of tests. A test is an attribute set `{expr,
expected}`, denoting an expression and its expected result. The
result is a list of failed tests, each represented as `{name,
expected, actual}`, denoting the attribute name of the failing
test and its expected and actual results.
Used for regression testing of the functions in lib; see
tests.nix for an example. Only tests having names starting with
"test" are run.
Add attr { tests = ["testName"]; } to run these tests only.
/* Evaluate a set of tests. A test is an attribute set {expr,
expected}, denoting an expression and its expected result. The
result is a list of failed tests, each represented as {name,
expected, actual}, denoting the attribute name of the failing
test and its expected and actual results. Used for regression
testing of the functions in lib; see tests.nix for an example.
Only tests having names starting with "test" are run.
Add attr { tests = ["testName"]; } to run these test only
*/
runTests =
# Tests to run
tests: lib.concatLists (lib.attrValues (lib.mapAttrs (name: test:
runTests = tests: lib.concatLists (lib.attrValues (lib.mapAttrs (name: test:
let testsToRun = if tests ? tests then tests.tests else [];
in if (substring 0 4 name == "test" || elem name testsToRun)
&& ((testsToRun == []) || elem name tests.tests)
@@ -158,11 +105,8 @@ rec {
then [ { inherit name; expected = test.expected; result = test.expr; } ]
else [] ) tests));
/* Create a test assuming that list elements are `true`.
Example:
{ testX = allTrue [ true ]; }
*/
# create a test assuming that list elements are true
# usage: { testX = allTrue [ true ]; }
testAllTrue = expr: { inherit expr; expected = map (x: true) expr; };

View File

@@ -38,11 +38,10 @@ let
systems = callLibs ./systems;
# misc
asserts = callLibs ./asserts.nix;
debug = callLibs ./debug.nix;
generators = callLibs ./generators.nix;
misc = callLibs ./deprecated.nix;
# domain-specific
fetchers = callLibs ./fetchers.nix;
@@ -61,10 +60,11 @@ let
boolToString mergeAttrs flip mapNullable inNixShell min max
importJSON warn info nixpkgsVersion version mod compare
splitByAndCompare functionArgs setFunctionArgs isFunction;
inherit (fixedPoints) fix fix' converge extends composeExtensions
inherit (fixedPoints) fix fix' extends composeExtensions
makeExtensible makeExtensibleWithCustomName;
inherit (attrsets) attrByPath hasAttrByPath setAttrByPath
getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs
getAttrFromPath attrVals attrValues catAttrs filterAttrs
filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs
mapAttrs' mapAttrsToList mapAttrsRecursive mapAttrsRecursiveCond
genAttrs isDerivation toDerivation optionalAttrs
@@ -80,7 +80,7 @@ let
inherit (strings) concatStrings concatMapStrings concatImapStrings
intersperse concatStringsSep concatMapStringsSep
concatImapStringsSep makeSearchPath makeSearchPathOutput
makeLibraryPath makeBinPath optionalString
makeLibraryPath makeBinPath makePerlPath makeFullPerlPath optionalString
hasPrefix hasSuffix stringToCharacters stringAsChars escape
escapeShellArg escapeShellArgs replaceChars lowerChars
upperChars toLower toUpper addContextFrom splitString
@@ -94,7 +94,7 @@ let
callPackageWith callPackagesWith extendDerivation hydraJob
makeScope;
inherit (meta) addMetaAttrs dontDistribute setName updateName
appendToName mapDerivationAttrset setPrio lowPrio lowPrioSet hiPrio
appendToName mapDerivationAttrset lowPrio lowPrioSet hiPrio
hiPrioSet;
inherit (sources) pathType pathIsDirectory cleanSourceFilter
cleanSource sourceByRegex sourceFilesBySuffices
@@ -117,22 +117,20 @@ let
unknownModule mkOption;
inherit (types) isType setType defaultTypeMerge defaultFunctor
isOptionType mkOptionType;
inherit (asserts)
assertMsg assertOneOf;
inherit (debug) addErrorContextToAttrs traceIf traceVal traceValFn
traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
traceValSeqFn traceValSeqN traceValSeqNFn traceShowVal
traceShowValMarked showVal traceCall traceCall2 traceCall3
traceValIfNot runTests testAllTrue traceCallXml attrNamesToStr;
inherit (misc) maybeEnv defaultMergeArg defaultMerge foldArgs
defaultOverridableDelayableArgs composedArgsAndFun
maybeAttrNullable maybeAttr ifEnable checkFlag getValue
checkReqs uniqList uniqListExt condConcat lazyGenericClosure
innerModifySumArgs modifySumArgs innerClosePropagation
closePropagation mapAttrsFlatten nvs setAttr setAttrMerge
mergeAttrsWithFunc mergeAttrsConcatenateValues
mergeAttrsNoOverride mergeAttrByFunc mergeAttrsByFuncDefaults
mergeAttrsByFuncDefaultsClean mergeAttrBy
fakeSha256 fakeSha512
nixType imap;
mergeAttrsByFuncDefaultsClean mergeAttrBy prepareDerivationArgs
nixType imap overridableDelayableArgs;
});
in lib

View File

@@ -35,6 +35,74 @@ rec {
withStdOverrides;
# predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice)
# the naming "overridableDelayableArgs" tries to express that you can
# - override attr values which have been supplied earlier
# - use attr values before they have been supplied by accessing the fix point
# name "fixed"
# f: the (delayed overridden) arguments are applied to this
#
# initial: initial attrs arguments and settings. see defaultOverridableDelayableArgs
#
# returns: f applied to the arguments // special attributes attrs
# a) merge: merge applied args with new args. Wether an argument is overridden depends on the merge settings
# b) replace: this let's you replace and remove names no matter which merge function has been set
#
# examples: see test cases "res" below;
overridableDelayableArgs =
f: # the function applied to the arguments
initial: # you pass attrs, the functions below are passing a function taking the fix argument
let
takeFixed = if lib.isFunction initial then initial else (fixed : initial); # transform initial to an expression always taking the fixed argument
tidy = args:
let # apply all functions given in "applyPreTidy" in sequence
applyPreTidyFun = fold ( n: a: x: n ( a x ) ) lib.id (maybeAttr "applyPreTidy" [] args);
in removeAttrs (applyPreTidyFun args) ( ["applyPreTidy"] ++ (maybeAttr "removeAttrs" [] args) ); # tidy up args before applying them
fun = n: x:
let newArgs = fixed:
let args = takeFixed fixed;
mergeFun = args.${n};
in if isAttrs x then (mergeFun args x)
else assert lib.isFunction x;
mergeFun args (x ( args // { inherit fixed; }));
in overridableDelayableArgs f newArgs;
in
(f (tidy (lib.fix takeFixed))) // {
merge = fun "mergeFun";
replace = fun "keepFun";
};
defaultOverridableDelayableArgs = f:
let defaults = {
mergeFun = mergeAttrByFunc; # default merge function. merge strategie (concatenate lists, strings) is given by mergeAttrBy
keepFun = a: b: { inherit (a) removeAttrs mergeFun keepFun mergeAttrBy; } // b; # even when using replace preserve these values
applyPreTidy = []; # list of functions applied to args before args are tidied up (usage case : prepareDerivationArgs)
mergeAttrBy = mergeAttrBy // {
applyPreTidy = a: b: a ++ b;
removeAttrs = a: b: a ++ b;
};
removeAttrs = ["mergeFun" "keepFun" "mergeAttrBy" "removeAttrs" "fixed" ]; # before applying the arguments to the function make sure these names are gone
};
in (overridableDelayableArgs f defaults).merge;
# rec { # an example of how composedArgsAndFun can be used
# a = composedArgsAndFun (x: x) { a = ["2"]; meta = { d = "bar";}; };
# # meta.d will be lost ! It's your task to preserve it (eg using a merge function)
# b = a.passthru.function { a = [ "3" ]; meta = { d2 = "bar2";}; };
# # instead of passing/ overriding values you can use a merge function:
# c = b.passthru.function ( x: { a = x.a ++ ["4"]; }); # consider using (maybeAttr "a" [] x)
# }
# result:
# {
# a = { a = ["2"]; meta = { d = "bar"; }; passthru = { function = .. }; };
# b = { a = ["3"]; meta = { d2 = "bar2"; }; passthru = { function = .. }; };
# c = { a = ["3" "4"]; meta = { d2 = "bar2"; }; passthru = { function = .. }; };
# # c2 is equal to c
# }
composedArgsAndFun = f: foldArgs defaultMerge f {};
# shortcut for attrByPath ["name"] default attrs
maybeAttrNullable = maybeAttr;
@@ -217,7 +285,7 @@ rec {
# };
# will result in
# { mergeAttrsBy = [...]; buildInputs = [ a b c d ]; }
# is used by defaultOverridableDelayableArgs and can be used when composing using
# is used by prepareDerivationArgs, defaultOverridableDelayableArgs and can be used when composing using
# foldArgs, composedArgsAndFun or applyAndFun. Example: composableDerivation in all-packages.nix
mergeAttrByFunc = x: y:
let
@@ -250,6 +318,58 @@ rec {
// listToAttrs (map (n: nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ])
;
# prepareDerivationArgs tries to make writing configurable derivations easier
# example:
# prepareDerivationArgs {
# mergeAttrBy = {
# myScript = x: y: x ++ "\n" ++ y;
# };
# cfg = {
# readlineSupport = true;
# };
# flags = {
# readline = {
# set = {
# configureFlags = [ "--with-compiler=${compiler}" ];
# buildInputs = [ compiler ];
# pass = { inherit compiler; READLINE=1; };
# assertion = compiler.dllSupport;
# myScript = "foo";
# };
# unset = { configureFlags = ["--without-compiler"]; };
# };
# };
# src = ...
# buildPhase = '' ... '';
# name = ...
# myScript = "bar";
# };
# if you don't have need for unset you can omit the surrounding set = { .. } attr
# all attrs except flags cfg and mergeAttrBy will be merged with the
# additional data from flags depending on config settings
# It's used in composableDerivation in all-packages.nix. It's also used
# heavily in the new python and libs implementation
#
# should we check for misspelled cfg options?
# TODO use args.mergeFun here as well?
prepareDerivationArgs = args:
let args2 = { cfg = {}; flags = {}; } // args;
flagName = name: "${name}Support";
cfgWithDefaults = (listToAttrs (map (n: nameValuePair (flagName n) false) (attrNames args2.flags)))
// args2.cfg;
opts = attrValues (mapAttrs (a: v:
let v2 = if v ? set || v ? unset then v else { set = v; };
n = if cfgWithDefaults.${flagName a} then "set" else "unset";
attr = maybeAttr n {} v2; in
if (maybeAttr "assertion" true attr)
then attr
else throw "assertion of flag ${a} of derivation ${args.name} failed"
) args2.flags );
in removeAttrs
(mergeAttrsByFuncDefaults ([args] ++ opts ++ [{ passthru = cfgWithDefaults; }]))
["flags" "cfg" "mergeAttrBy" ];
nixType = x:
if isAttrs x then
if x ? outPath then "derivation"
@@ -270,8 +390,4 @@ rec {
starting at zero.
*/
imap = imap1;
# Fake hashes. Can be used as hash placeholders, when computing hash ahead isn't trivial
fakeSha256 = "0000000000000000000000000000000000000000000000000000000000000000";
fakeSha512 = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
}

View File

@@ -24,16 +24,6 @@ rec {
# for a concrete example.
fix' = f: let x = f x // { __unfix__ = f; }; in x;
# Return the fixpoint that `f` converges to when called recursively, starting
# with the input `x`.
#
# nix-repl> converge (x: x / 2) 16
# 0
converge = f: x:
if (f x) == x
then x
else converge f (f x);
# Modify the contents of an explicitly recursive attribute set in a way that
# honors `self`-references. This is accomplished with a function
#
@@ -51,18 +41,6 @@ rec {
# think of it as an infix operator `g extends f` that mimics the syntax from
# Java. It may seem counter-intuitive to have the "base class" as the second
# argument, but it's nice this way if several uses of `extends` are cascaded.
#
# To get a better understanding how `extends` turns a function with a fix
# point (the package set we start with) into a new function with a different fix
# point (the desired packages set) lets just see, how `extends g f`
# unfolds with `g` and `f` defined above:
#
# extends g f = self: let super = f self; in super // g self super;
# = self: let super = { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }; in super // g self super
# = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // g self { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; }
# = self: { foo = "foo"; bar = "bar"; foobar = self.foo + self.bar; } // { foo = "foo" + " + "; }
# = self: { foo = "foo + "; bar = "bar"; foobar = self.foo + self.bar; }
#
extends = f: rattrs: self: let super = rattrs self; in super // f self super;
# Compose two extending functions of the type expected by 'extends'

View File

@@ -143,7 +143,6 @@ rec {
}@args: v: with builtins;
let isPath = v: typeOf v == "path";
in if isInt v then toString v
else if isFloat v then "~${toString v}"
else if isString v then ''"${libStr.escape [''"''] v}"''
else if true == v then "true"
else if false == v then "false"

View File

@@ -1,21 +1,57 @@
{ lib, version }:
{ lib
# we pass the kernel version here to keep a nice syntax `whenOlder "4.13"`
# kernelVersion, e.g., config.boot.kernelPackages.version
, version
, mkValuePreprocess ? null
}:
with lib;
rec {
# Common patterns/legacy
whenAtLeast = ver: mkIf (versionAtLeast version ver);
whenOlder = ver: mkIf (versionOlder version ver);
# range is (inclusive, exclusive)
whenBetween = verLow: verHigh: mkIf (versionAtLeast version verLow && versionOlder version verHigh);
# Common patterns
when = cond: opt: if cond then opt else null;
whenAtLeast = ver: when (versionAtLeast version ver);
whenOlder = ver: when (versionOlder version ver);
whenBetween = verLow: verHigh: when (versionAtLeast version verLow && versionOlder version verHigh);
# Keeping these around in case we decide to change this horrible implementation :)
option = x:
x // { optional = true; };
option = x: if x == null then null else "?${x}";
yes = "y";
no = "n";
module = "m";
yes = { tristate = "y"; };
no = { tristate = "n"; };
module = { tristate = "m"; };
freeform = x: { freeform = x; };
mkValue = val:
let
isNumber = c: elem c ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9"];
in
if val == "" then "\"\""
else if val == yes || val == module || val == no then val
else if all isNumber (stringToCharacters val) then val
else if substring 0 2 val == "0x" then val
else val; # FIXME: fix quoting one day
# generate nix intermediate kernel config file of the form
#
# VIRTIO_MMIO m
# VIRTIO_BLK y
# VIRTIO_CONSOLE n
# NET_9P_VIRTIO? y
#
# Use mkValuePreprocess to preprocess option values, aka mark 'modules' as
# 'yes' or vice-versa
# Borrowed from copumpkin https://github.com/NixOS/nixpkgs/pull/12158
# returns a string, expr should be an attribute set
generateNixKConf = exprs: mkValuePreprocess:
let
mkConfigLine = key: rawval:
let
val = if builtins.isFunction mkValuePreprocess then mkValuePreprocess rawval else rawval;
in
if val == null
then ""
else if hasPrefix "?" val
then "${key}? ${mkValue (removePrefix "?" val)}\n"
else "${key} ${mkValue val}\n";
mkConf = cfg: concatStrings (mapAttrsToList mkConfigLine cfg);
in mkConf exprs;
}

View File

@@ -13,11 +13,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
* add it to this list. The URL mentioned above is a good source for inspiration.
*/
abstyles = spdx {
spdxId = "Abstyles";
fullName = "Abstyles License";
};
afl21 = spdx {
spdxId = "AFL-2.1";
fullName = "Academic Free License v2.1";
@@ -29,13 +24,13 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
};
agpl3 = spdx {
spdxId = "AGPL-3.0-only";
fullName = "GNU Affero General Public License v3.0 only";
spdxId = "AGPL-3.0";
fullName = "GNU Affero General Public License v3.0";
};
agpl3Plus = spdx {
spdxId = "AGPL-3.0-or-later";
agpl3Plus = {
fullName = "GNU Affero General Public License v3.0 or later";
inherit (agpl3) url;
};
amazonsl = {
@@ -47,7 +42,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
amd = {
fullName = "AMD License Agreement";
url = http://developer.amd.com/amd-license-agreement/;
free = false;
};
apsl20 = spdx {
@@ -105,10 +99,14 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = ''BSD 4-clause "Original" or "Old" License'';
};
bsl10 = {
fullName = "Business Source License 1.0";
url = https://mariadb.com/bsl10;
};
bsl11 = {
fullName = "Business Source License 1.1";
url = https://mariadb.com/bsl11;
free = false;
};
clArtistic = spdx {
@@ -266,23 +264,13 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
};
fdl12 = spdx {
spdxId = "GFDL-1.2-only";
fullName = "GNU Free Documentation License v1.2 only";
};
fdl12Plus = spdx {
spdxId = "GFDL-1.2-or-later";
fullName = "GNU Free Documentation License v1.2 or later";
spdxId = "GFDL-1.2";
fullName = "GNU Free Documentation License v1.2";
};
fdl13 = spdx {
spdxId = "GFDL-1.3-only";
fullName = "GNU Free Documentation License v1.3 only";
};
fdl13Plus = spdx {
spdxId = "GFDL-1.3-or-later";
fullName = "GNU Free Documentation License v1.3 or later";
spdxId = "GFDL-1.3";
fullName = "GNU Free Documentation License v1.3";
};
ffsl = {
@@ -307,25 +295,20 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
};
gpl1 = spdx {
spdxId = "GPL-1.0-only";
spdxId = "GPL-1.0";
fullName = "GNU General Public License v1.0 only";
};
gpl1Plus = spdx {
spdxId = "GPL-1.0-or-later";
spdxId = "GPL-1.0+";
fullName = "GNU General Public License v1.0 or later";
};
gpl2 = spdx {
spdxId = "GPL-2.0-only";
spdxId = "GPL-2.0";
fullName = "GNU General Public License v2.0 only";
};
gpl2Classpath = spdx {
spdxId = "GPL-2.0-with-classpath-exception";
fullName = "GNU General Public License v2.0 only (with Classpath exception)";
};
gpl2ClasspathPlus = {
fullName = "GNU General Public License v2.0 or later (with Classpath exception)";
url = https://fedoraproject.org/wiki/Licensing/GPL_Classpath_Exception;
@@ -337,17 +320,17 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
};
gpl2Plus = spdx {
spdxId = "GPL-2.0-or-later";
spdxId = "GPL-2.0+";
fullName = "GNU General Public License v2.0 or later";
};
gpl3 = spdx {
spdxId = "GPL-3.0-only";
spdxId = "GPL-3.0";
fullName = "GNU General Public License v3.0 only";
};
gpl3Plus = spdx {
spdxId = "GPL-3.0-or-later";
spdxId = "GPL-3.0+";
fullName = "GNU General Public License v3.0 or later";
};
@@ -404,45 +387,33 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "ISC License";
};
# Proprietary binaries; free to redistribute without modification.
issl = {
fullName = "Intel Simplified Software License";
url = https://software.intel.com/en-us/license/intel-simplified-software-license;
free = false;
};
jasper = spdx {
spdxId = "JasPer-2.0";
fullName = "JasPer License";
};
lgpl2 = spdx {
spdxId = "LGPL-2.0-only";
spdxId = "LGPL-2.0";
fullName = "GNU Library General Public License v2 only";
};
lgpl2Plus = spdx {
spdxId = "LGPL-2.0-or-later";
spdxId = "LGPL-2.0+";
fullName = "GNU Library General Public License v2 or later";
};
lgpl21 = spdx {
spdxId = "LGPL-2.1-only";
spdxId = "LGPL-2.1";
fullName = "GNU Library General Public License v2.1 only";
};
lgpl21Plus = spdx {
spdxId = "LGPL-2.1-or-later";
spdxId = "LGPL-2.1+";
fullName = "GNU Library General Public License v2.1 or later";
};
lgpl3 = spdx {
spdxId = "LGPL-3.0-only";
spdxId = "LGPL-3.0";
fullName = "GNU Lesser General Public License v3.0 only";
};
lgpl3Plus = spdx {
spdxId = "LGPL-3.0-or-later";
spdxId = "LGPL-3.0+";
fullName = "GNU Lesser General Public License v3.0 or later";
};
@@ -451,11 +422,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "libpng License";
};
libpng2 = {
fullName = "libpng License v2"; # 1.6.36+
url = "http://www.libpng.org/pub/png/src/libpng-LICENSE.txt";
};
libtiff = spdx {
spdxId = "libtiff";
fullName = "libtiff License";
@@ -519,12 +485,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
free = false;
};
nasa13 = spdx {
spdxId = "NASA-1.3";
fullName = "NASA Open Source Agreement 1.3";
free = false;
};
ncsa = spdx {
spdxId = "NCSA";
fullName = "University of Illinois/NCSA Open Source License";
@@ -540,12 +500,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Non-Profit Open Software License 3.0";
};
ocamlpro_nc = {
fullName = "OCamlPro Non Commercial license version 1";
url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-2.2.0/OCamlPro-Non-Commercial-License.pdf";
free = false;
};
ofl = spdx {
spdxId = "OFL-1.1";
fullName = "SIL Open Font License 1.1";
@@ -561,11 +515,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "OpenSSL License";
};
osl2 = spdx {
spdxId = "OSL-2.0";
fullName = "Open Software License 2.0";
};
osl21 = spdx {
spdxId = "OSL-2.1";
fullName = "Open Software License 2.1";
@@ -602,11 +551,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Public Domain";
};
purdueBsd = {
fullName = " Purdue BSD-Style License"; # also know as lsof license
url = https://enterprise.dejacode.com/licenses/public/purdue-bsd;
};
qpl = spdx {
spdxId = "QPL-1.0";
fullName = "Q Public License 1.0";
@@ -622,11 +566,6 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Ruby License";
};
sendmail = spdx {
spdxId = "Sendmail";
fullName = "Sendmail License";
};
sgi-b-20 = spdx {
spdxId = "SGI-B-2.0";
fullName = "SGI Free Software License B v2.0";
@@ -716,7 +655,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
};
wxWindows = spdx {
spdxId = "wxWindows";
spdxId = "WXwindows";
fullName = "wxWindows Library Licence, Version 3.1";
};

View File

@@ -1,5 +1,4 @@
# General list operations.
{ lib }:
with lib.trivial;
let
@@ -9,23 +8,21 @@ rec {
inherit (builtins) head tail length isList elemAt concatLists filter elem genList;
/* Create a list consisting of a single element. `singleton x` is
sometimes more convenient with respect to indentation than `[x]`
/* Create a list consisting of a single element. `singleton x' is
sometimes more convenient with respect to indentation than `[x]'
when x spans multiple lines.
Type: singleton :: a -> [a]
Example:
singleton "foo"
=> [ "foo" ]
*/
singleton = x: [x];
/* right fold a binary function `op` between successive elements of
`list` with `nul' as the starting value, i.e.,
`foldr op nul [x_1 x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))`.
Type: foldr :: (a -> b -> b) -> b -> [a] -> b
/* right fold a binary function `op' between successive elements of
`list' with `nul' as the starting value, i.e.,
`foldr op nul [x_1 x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))'.
Type:
foldr :: (a -> b -> b) -> b -> [a] -> b
Example:
concat = foldr (a: b: a + b) "z"
@@ -45,15 +42,16 @@ rec {
else op (elemAt list n) (fold' (n + 1));
in fold' 0;
/* `fold` is an alias of `foldr` for historic reasons */
/* `fold' is an alias of `foldr' for historic reasons */
# FIXME(Profpatsch): deprecate?
fold = foldr;
/* left fold, like `foldr`, but from the left:
/* left fold, like `foldr', but from the left:
`foldl op nul [x_1 x_2 ... x_n] == op (... (op (op nul x_1) x_2) ... x_n)`.
Type: foldl :: (b -> a -> b) -> b -> [a] -> b
Type:
foldl :: (b -> a -> b) -> b -> [a] -> b
Example:
lconcat = foldl (a: b: a + b) "z"
@@ -72,20 +70,16 @@ rec {
else op (foldl' (n - 1)) (elemAt list n);
in foldl' (length list - 1);
/* Strict version of `foldl`.
/* Strict version of `foldl'.
The difference is that evaluation is forced upon access. Usually used
with small whole results (in contract with lazily-generated list or large
lists where only a part is consumed.)
Type: foldl' :: (b -> a -> b) -> b -> [a] -> b
*/
foldl' = builtins.foldl' or foldl;
/* Map with index starting from 0
Type: imap0 :: (int -> a -> b) -> [a] -> [b]
Example:
imap0 (i: v: "${v}-${toString i}") ["a" "b"]
=> [ "a-0" "b-1" ]
@@ -94,8 +88,6 @@ rec {
/* Map with index starting from 1
Type: imap1 :: (int -> a -> b) -> [a] -> [b]
Example:
imap1 (i: v: "${v}-${toString i}") ["a" "b"]
=> [ "a-1" "b-2" ]
@@ -104,8 +96,6 @@ rec {
/* Map and concatenate the result.
Type: concatMap :: (a -> [b]) -> [a] -> [b]
Example:
concatMap (x: [x] ++ ["z"]) ["a" "b"]
=> [ "a" "z" "b" "z" ]
@@ -128,21 +118,15 @@ rec {
/* Remove elements equal to 'e' from a list. Useful for buildInputs.
Type: remove :: a -> [a] -> [a]
Example:
remove 3 [ 1 3 4 3 ]
=> [ 1 4 ]
*/
remove =
# Element to remove from the list
e: filter (x: x != e);
remove = e: filter (x: x != e);
/* Find the sole element in the list matching the specified
predicate, returns `default` if no such element exists, or
`multiple` if there are multiple matching elements.
Type: findSingle :: (a -> bool) -> a -> a -> [a] -> a
predicate, returns `default' if no such element exists, or
`multiple' if there are multiple matching elements.
Example:
findSingle (x: x == 3) "none" "multiple" [ 1 3 3 ]
@@ -152,24 +136,14 @@ rec {
findSingle (x: x == 3) "none" "multiple" [ 1 9 ]
=> "none"
*/
findSingle =
# Predicate
pred:
# Default value to return if element was not found.
default:
# Default value to return if more than one element was found
multiple:
# Input list
list:
findSingle = pred: default: multiple: list:
let found = filter pred list; len = length found;
in if len == 0 then default
else if len != 1 then multiple
else head found;
/* Find the first element in the list matching the specified
predicate or return `default` if no such element exists.
Type: findFirst :: (a -> bool) -> a -> [a] -> a
predicate or returns `default' if no such element exists.
Example:
findFirst (x: x > 3) 7 [ 1 6 4 ]
@@ -177,20 +151,12 @@ rec {
findFirst (x: x > 9) 7 [ 1 6 4 ]
=> 7
*/
findFirst =
# Predicate
pred:
# Default value to return
default:
# Input list
list:
findFirst = pred: default: list:
let found = filter pred list;
in if found == [] then default else head found;
/* Return true if function `pred` returns true for at least one
element of `list`.
Type: any :: (a -> bool) -> [a] -> bool
/* Return true iff function `pred' returns true for at least element
of `list'.
Example:
any isString [ 1 "a" { } ]
@@ -200,10 +166,8 @@ rec {
*/
any = builtins.any or (pred: foldr (x: y: if pred x then true else y) false);
/* Return true if function `pred` returns true for all elements of
`list`.
Type: all :: (a -> bool) -> [a] -> bool
/* Return true iff function `pred' returns true for all elements of
`list'.
Example:
all (x: x < 3) [ 1 2 ]
@@ -213,25 +177,19 @@ rec {
*/
all = builtins.all or (pred: foldr (x: y: if pred x then y else false) true);
/* Count how many elements of `list` match the supplied predicate
function.
Type: count :: (a -> bool) -> [a] -> int
/* Count how many times function `pred' returns true for the elements
of `list'.
Example:
count (x: x == 3) [ 3 2 3 4 6 ]
=> 2
*/
count =
# Predicate
pred: foldl' (c: x: if pred x then c + 1 else c) 0;
count = pred: foldl' (c: x: if pred x then c + 1 else c) 0;
/* Return a singleton list or an empty list, depending on a boolean
value. Useful when building lists with optional elements
(e.g. `++ optional (system == "i686-linux") flashplayer').
Type: optional :: bool -> a -> [a]
Example:
optional true "foo"
=> [ "foo" ]
@@ -242,19 +200,13 @@ rec {
/* Return a list or an empty list, depending on a boolean value.
Type: optionals :: bool -> [a] -> [a]
Example:
optionals true [ 2 3 ]
=> [ 2 3 ]
optionals false [ 2 3 ]
=> [ ]
*/
optionals =
# Condition
cond:
# List to return if condition is true
elems: if cond then elems else [];
optionals = cond: elems: if cond then elems else [];
/* If argument is a list, return it; else, wrap it in a singleton
@@ -271,28 +223,20 @@ rec {
/* Return a list of integers from `first' up to and including `last'.
Type: range :: int -> int -> [int]
Example:
range 2 4
=> [ 2 3 4 ]
range 3 2
=> [ ]
*/
range =
# First integer in the range
first:
# Last integer in the range
last:
range = first: last:
if first > last then
[]
else
genList (n: first + n) (last - first + 1);
/* Splits the elements of a list in two lists, `right` and
`wrong`, depending on the evaluation of a predicate.
Type: (a -> bool) -> [a] -> { right :: [a], wrong :: [a] }
/* Splits the elements of a list in two lists, `right' and
`wrong', depending on the evaluation of a predicate.
Example:
partition (x: x > 2) [ 5 1 2 3 4 ]
@@ -308,7 +252,7 @@ rec {
/* Splits the elements of a list into many lists, using the return value of a predicate.
Predicate should return a string which becomes keys of attrset `groupBy' returns.
`groupBy'` allows to customise the combining function and initial value
`groupBy'' allows to customise the combining function and initial value
Example:
groupBy (x: boolToString (x > 2)) [ 5 1 2 3 4 ]
@@ -324,6 +268,10 @@ rec {
xfce = [ { name = "xfce"; script = "xfce4-session &"; } ];
}
groupBy' allows to customise the combining function and initial value
Example:
groupBy' builtins.add 0 (x: boolToString (x > 2)) [ 5 1 2 3 4 ]
=> { true = 12; false = 3; }
*/
@@ -341,27 +289,17 @@ rec {
the merging stops at the shortest. How both lists are merged is defined
by the first argument.
Type: zipListsWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Example:
zipListsWith (a: b: a + b) ["h" "l"] ["e" "o"]
=> ["he" "lo"]
*/
zipListsWith =
# Function to zip elements of both lists
f:
# First list
fst:
# Second list
snd:
zipListsWith = f: fst: snd:
genList
(n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd));
/* Merges two lists of the same size together. If the sizes aren't the same
the merging stops at the shortest.
Type: zipLists :: [a] -> [b] -> [{ fst :: a, snd :: b}]
Example:
zipLists [ 1 2 ] [ "a" "b" ]
=> [ { fst = 1; snd = "a"; } { fst = 2; snd = "b"; } ]
@@ -370,8 +308,6 @@ rec {
/* Reverse the order of the elements of a list.
Type: reverseList :: [a] -> [a]
Example:
reverseList [ "b" "o" "j" ]
@@ -385,7 +321,8 @@ rec {
`before a b == true` means that `b` depends on `a` (there's an
edge from `b` to `a`).
Example:
Examples:
listDfs true hasPrefix [ "/home/user" "other" "/" "/home" ]
== { minimal = "/"; # minimal element
visited = [ "/home/user" ]; # seen elements (in reverse order)
@@ -399,6 +336,7 @@ rec {
rest = [ "/home" "other" ]; # everything else
*/
listDfs = stopOnCycles: before: list:
let
dfs' = us: visited: rest:
@@ -423,7 +361,7 @@ rec {
`before a b == true` means that `b` should be after `a`
in the result.
Example:
Examples:
toposort hasPrefix [ "/home/user" "other" "/" "/home" ]
== { result = [ "/" "/home" "/home/user" "other" ]; }
@@ -438,6 +376,7 @@ rec {
toposort (a: b: a < b) [ 3 2 1 ] == { result = [ 1 2 3 ]; }
*/
toposort = before: list:
let
dfsthis = listDfs true before list;
@@ -528,38 +467,26 @@ rec {
/* Return the first (at most) N elements of a list.
Type: take :: int -> [a] -> [a]
Example:
take 2 [ "a" "b" "c" "d" ]
=> [ "a" "b" ]
take 2 [ ]
=> [ ]
*/
take =
# Number of elements to take
count: sublist 0 count;
take = count: sublist 0 count;
/* Remove the first (at most) N elements of a list.
Type: drop :: int -> [a] -> [a]
Example:
drop 2 [ "a" "b" "c" "d" ]
=> [ "c" "d" ]
drop 2 [ ]
=> [ ]
*/
drop =
# Number of elements to drop
count:
# Input list
list: sublist count (length list) list;
drop = count: list: sublist count (length list) list;
/* Return a list consisting of at most `count` elements of `list`,
starting at index `start`.
Type: sublist :: int -> int -> [a] -> [a]
/* Return a list consisting of at most count elements of list,
starting at index start.
Example:
sublist 1 3 [ "a" "b" "c" "d" "e" ]
@@ -567,13 +494,7 @@ rec {
sublist 1 3 [ ]
=> [ ]
*/
sublist =
# Index at which to start the sublist
start:
# Number of elements to take
count:
# Input list
list:
sublist = start: count: list:
let len = length list; in
genList
(n: elemAt list (n + start))
@@ -583,34 +504,23 @@ rec {
/* Return the last element of a list.
This function throws an error if the list is empty.
Type: last :: [a] -> a
Example:
last [ 1 2 3 ]
=> 3
*/
last = list:
assert lib.assertMsg (list != []) "lists.last: list must not be empty!";
elemAt list (length list - 1);
assert list != []; elemAt list (length list - 1);
/* Return all elements but the last.
This function throws an error if the list is empty.
Type: init :: [a] -> [a]
/* Return all elements but the last
Example:
init [ 1 2 3 ]
=> [ 1 2 ]
*/
init = list:
assert lib.assertMsg (list != []) "lists.init: list must not be empty!";
take (length list - 1) list;
init = list: assert list != []; take (length list - 1) list;
/* Return the image of the cross product of some lists by a function.
/* return the image of the cross product of some lists by a function
Example:
crossLists (x:y: "${toString x}${toString y}") [[1 2] [3 4]]
@@ -621,9 +531,8 @@ rec {
/* Remove duplicate elements from the list. O(n^2) complexity.
Type: unique :: [a] -> [a]
Example:
unique [ 3 2 3 4 ]
=> [ 3 2 4 ]
*/

View File

@@ -41,18 +41,16 @@ rec {
let x = builtins.parseDrvName name; in "${x.name}-${suffix}-${x.version}");
/* Apply a function to each derivation and only to derivations in an attrset.
/* Apply a function to each derivation and only to derivations in an attrset
*/
mapDerivationAttrset = f: set: lib.mapAttrs (name: pkg: if lib.isDerivation pkg then (f pkg) else pkg) set;
/* Set the nix-env priority of the package.
*/
setPrio = priority: addMetaAttrs { inherit priority; };
/* Decrease the nix-env priority of the package, i.e., other
versions/variants of the package will be preferred.
*/
lowPrio = setPrio 10;
lowPrio = drv: addMetaAttrs { priority = 10; } drv;
/* Apply lowPrio to an attrset with derivations
*/
@@ -62,7 +60,8 @@ rec {
/* Increase the nix-env priority of the package, i.e., this
version/variant of the package will be preferred.
*/
hiPrio = setPrio (-10);
hiPrio = drv: addMetaAttrs { priority = -10; } drv;
/* Apply hiPrio to an attrset with derivations
*/

View File

@@ -1,2 +1,2 @@
# Expose the minimum required version for evaluating Nixpkgs
"2.0"
"1.11"

View File

@@ -214,25 +214,23 @@ rec {
qux = [ "module.hidden=baz,value=bar" "module.hidden=fli,value=gne" ];
}
*/
byName = attr: f: modules:
foldl' (acc: module:
acc // (mapAttrs (n: v:
(acc.${n} or []) ++ f module v
) module.${attr}
)
) {} modules;
byName = attr: f: modules: foldl' (acc: module:
foldl' (inner: name:
inner // { ${name} = (acc.${name} or []) ++ (f module module.${attr}.${name}); }
) acc (attrNames module.${attr})
) {} modules;
# an attrset 'name' => list of submodules that declare name.
declsByName = byName "options" (module: option:
[{ inherit (module) file; options = option; }]
) options;
declsByName = byName "options"
(module: option: [{ inherit (module) file; options = option; }])
options;
# an attrset 'name' => list of submodules that define name.
defnsByName = byName "config" (module: value:
map (config: { inherit (module) file; inherit config; }) (pushDownProperties value)
map (config: { inherit (module) file; inherit config; }) (pushDownProperties value)
) configs;
# extract the definitions for each loc
defnsByName' = byName "config" (module: value:
[{ inherit (module) file; inherit value; }]
) configs;
defnsByName' = byName "config"
(module: value: [{ inherit (module) file; inherit value; }])
configs;
in
(flip mapAttrs declsByName (name: decls:
# We're descending into attribute name.
@@ -364,6 +362,7 @@ rec {
values = defs''';
inherit (defs'') highestPrio;
};
defsFinal = defsFinal'.values;
# Type-check the remaining definitions, and merge them.
@@ -451,7 +450,8 @@ rec {
filterOverrides' = defs:
let
getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPriority;
defaultPrio = 100;
getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPrio;
highestPrio = foldl' (prio: def: min (getPrio def) prio) 9999 defs;
strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def;
in {
@@ -534,8 +534,6 @@ rec {
mkBefore = mkOrder 500;
mkAfter = mkOrder 1500;
# The default priority for things that don't have a priority specified.
defaultPriority = 100;
# Convenient property used to transfer all definitions and their
# properties from one option to another. This property is useful for
@@ -558,20 +556,8 @@ rec {
#
mkAliasDefinitions = mkAliasAndWrapDefinitions id;
mkAliasAndWrapDefinitions = wrap: option:
mkAliasIfDef option (wrap (mkMerge option.definitions));
mkIf (isOption option && option.isDefined) (wrap (mkMerge option.definitions));
# Similar to mkAliasAndWrapDefinitions but copies over the priority from the
# option as well.
#
# If a priority is not set, it assumes a priority of defaultPriority.
mkAliasAndWrapDefsWithPriority = wrap: option:
let
prio = option.highestPrio or defaultPriority;
defsWithPrio = map (mkOverride prio) option.definitions;
in mkAliasIfDef option (wrap (mkMerge defsWithPrio));
mkAliasIfDef = option:
mkIf (isOption option && option.isDefined);
/* Compatibility. */
fixMergeModules = modules: args: evalModules { inherit modules args; check = false; };
@@ -610,9 +596,6 @@ rec {
forwards any definitions of boot.copyKernels to
boot.loader.grub.copyKernels while printing a warning.
This also copies over the priority from the aliased option to the
non-aliased option.
*/
mkRenamedOptionModule = from: to: doRename {
inherit from to;
@@ -707,7 +690,7 @@ rec {
use = id;
};
doRename = { from, to, visible, warn, use, withPriority ? true }:
doRename = { from, to, visible, warn, use }:
{ config, options, ... }:
let
fromOpt = getAttrFromPath from options;
@@ -725,9 +708,7 @@ rec {
warnings = optional (warn && fromOpt.isDefined)
"The option `${showOption from}' defined in ${showFiles fromOpt.files} has been renamed to `${showOption to}'.";
}
(if withPriority
then mkAliasAndWrapDefsWithPriority (setAttrByPath to) fromOpt
else mkAliasAndWrapDefinitions (setAttrByPath to) fromOpt)
(mkAliasAndWrapDefinitions (setAttrByPath to) fromOpt)
];
};

View File

@@ -8,72 +8,33 @@ with lib.strings;
rec {
/* Returns true when the given argument is an option
Type: isOption :: a -> bool
Example:
isOption 1 // => false
isOption (mkOption {}) // => true
*/
isOption = lib.isType "option";
/* Creates an Option attribute set. mkOption accepts an attribute set with the following keys:
All keys default to `null` when not given.
Example:
mkOption { } // => { _type = "option"; }
mkOption { defaultText = "foo"; } // => { _type = "option"; defaultText = "foo"; }
*/
mkOption =
{
# Default value used when no definition is given in the configuration.
default ? null,
# Textual representation of the default, for the manual.
defaultText ? null,
# Example value used in the manual.
example ? null,
# String describing the option.
description ? null,
# Related packages used in the manual (see `genRelatedPackages` in ../nixos/doc/manual/default.nix).
relatedPackages ? null,
# Option type, providing type-checking and value merging.
type ? null,
# Function that converts the option value to something else.
apply ? null,
# Whether the option is for NixOS developers only.
internal ? null,
# Whether the option shows up in the manual.
visible ? null,
# Whether the option can be set only once
readOnly ? null,
# Deprecated, used by types.optionSet.
options ? null
{ default ? null # Default value used when no definition is given in the configuration.
, defaultText ? null # Textual representation of the default, for in the manual.
, example ? null # Example value used in the manual.
, description ? null # String describing the option.
, relatedPackages ? null # Related packages used in the manual (see `genRelatedPackages` in ../nixos/doc/manual/default.nix).
, type ? null # Option type, providing type-checking and value merging.
, apply ? null # Function that converts the option value to something else.
, internal ? null # Whether the option is for NixOS developers only.
, visible ? null # Whether the option shows up in the manual.
, readOnly ? null # Whether the option can be set only once
, options ? null # Obsolete, used by types.optionSet.
} @ attrs:
attrs // { _type = "option"; };
/* Creates an Option attribute set for a boolean value option i.e an
option to be toggled on or off:
Example:
mkEnableOption "foo"
=> { _type = "option"; default = false; description = "Whether to enable foo."; example = true; type = { ... }; }
*/
mkEnableOption =
# Name for the created option
name: mkOption {
mkEnableOption = name: mkOption {
default = false;
example = true;
description = "Whether to enable ${name}.";
type = lib.types.bool;
};
/* This option accepts anything, but it does not produce any result.
This is useful for sharing a module across different module sets
without having to implement similar features as long as the
values of the options are not accessed. */
# This option accept anything, but it does not produce any result. This
# is useful for sharing a module across different module sets without
# having to implement similar features as long as the value of the options
# are not expected.
mkSinkUndeclaredOptions = attrs: mkOption ({
internal = true;
visible = false;
@@ -113,24 +74,7 @@ rec {
else
val) (head defs).value defs;
/* Extracts values of all "value" keys of the given list.
Type: getValues :: [ { value :: a } ] -> [a]
Example:
getValues [ { value = 1; } { value = 2; } ] // => [ 1 2 ]
getValues [ ] // => [ ]
*/
getValues = map (x: x.value);
/* Extracts values of all "file" keys of the given list
Type: getFiles :: [ { file :: a } ] -> [a]
Example:
getFiles [ { file = "file1"; } { file = "file2"; } ] // => [ "file1" "file2" ]
getFiles [ ] // => [ ]
*/
getFiles = map (x: x.file);
# Generate documentation template from the list of option declaration like
@@ -163,13 +107,10 @@ rec {
/* This function recursively removes all derivation attributes from
`x` except for the `name` attribute.
This is to make the generation of `options.xml` much more
efficient: the XML representation of derivations is very large
(on the order of megabytes) and is not actually used by the
manual generator.
*/
`x' except for the `name' attribute. This is to make the
generation of `options.xml' much more efficient: the XML
representation of derivations is very large (on the order of
megabytes) and is not actually used by the manual generator. */
scrubOptionValue = x:
if isDerivation x then
{ type = "derivation"; drvPath = x.name; outPath = x.name; name = x.name; }
@@ -178,21 +119,20 @@ rec {
else x;
/* For use in the `example` option attribute. It causes the given
text to be included verbatim in documentation. This is necessary
for example values that are not simple values, e.g., functions.
*/
/* For use in the example option attribute. It causes the given
text to be included verbatim in documentation. This is necessary
for example values that are not simple values, e.g.,
functions. */
literalExample = text: { _type = "literalExample"; inherit text; };
# Helper functions.
/* Convert an option, described as a list of the option parts in to a
safe, human readable version.
/* Helper functions. */
Example:
(showOption ["foo" "bar" "baz"]) == "foo.bar.baz"
(showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux"
*/
# Convert an option, described as a list of the option parts in to a
# safe, human readable version. ie:
#
# (showOption ["foo" "bar" "baz"]) == "foo.bar.baz"
# (showOption ["foo" "bar.baz" "tux"]) == "foo.\"bar.baz\".tux"
showOption = parts: let
escapeOptionPart = part:
let

View File

@@ -26,10 +26,6 @@ rec {
(type == "symlink" && lib.hasPrefix "result" baseName)
);
# Filters a source tree removing version control files and directories using cleanSourceWith
#
# Example:
# cleanSource ./.
cleanSource = src: cleanSourceWith { filter = cleanSourceFilter; inherit src; };
# Like `builtins.filterSource`, except it will compose with itself,
@@ -73,7 +69,7 @@ rec {
# Get the commit id of a git repo
# Example: commitIdFromGitRepo <nixpkgs/.git>
commitIdFromGitRepo =
let readCommitFromFile = file: path:
let readCommitFromFile = path: file:
with builtins;
let fileName = toString path + "/" + file;
packedRefsName = toString path + "/packed-refs";
@@ -85,7 +81,7 @@ rec {
matchRef = match "^ref: (.*)$" fileContent;
in if isNull matchRef
then fileContent
else readCommitFromFile (lib.head matchRef) path
else readCommitFromFile path (lib.head matchRef)
# Sometimes, the file isn't there at all and has been packed away in the
# packed-refs file, so we have to grep through it:
else if lib.pathExists packedRefsName
@@ -96,7 +92,7 @@ rec {
then throw ("Could not find " + file + " in " + packedRefsName)
else lib.head matchRef
else throw ("Not a .git directory: " + path);
in readCommitFromFile "HEAD";
in lib.flip readCommitFromFile "HEAD";
pathHasContext = builtins.hasContext or (lib.hasPrefix builtins.storeDir);

View File

@@ -12,8 +12,6 @@ rec {
/* Concatenate a list of strings.
Type: concatStrings :: [string] -> string
Example:
concatStrings ["foo" "bar"]
=> "foobar"
@@ -22,19 +20,15 @@ rec {
/* Map a function over a list and concatenate the resulting strings.
Type: concatMapStrings :: (a -> string) -> [a] -> string
Example:
concatMapStrings (x: "a" + x) ["foo" "bar"]
=> "afooabar"
*/
concatMapStrings = f: list: concatStrings (map f list);
/* Like `concatMapStrings` except that the f functions also gets the
/* Like `concatMapStrings' except that the f functions also gets the
position as a parameter.
Type: concatImapStrings :: (int -> a -> string) -> [a] -> string
Example:
concatImapStrings (pos: x: "${toString pos}-${x}") ["foo" "bar"]
=> "1-foo2-bar"
@@ -43,25 +37,17 @@ rec {
/* Place an element between each element of a list
Type: intersperse :: a -> [a] -> [a]
Example:
intersperse "/" ["usr" "local" "bin"]
=> ["usr" "/" "local" "/" "bin"].
*/
intersperse =
# Separator to add between elements
separator:
# Input list
list:
intersperse = separator: list:
if list == [] || length list == 1
then list
else tail (lib.concatMap (x: [separator x]) list);
/* Concatenate a list of strings with a separator between each element
Type: concatStringsSep :: string -> [string] -> string
Example:
concatStringsSep "/" ["usr" "local" "bin"]
=> "usr/local/bin"
@@ -69,77 +55,43 @@ rec {
concatStringsSep = builtins.concatStringsSep or (separator: list:
concatStrings (intersperse separator list));
/* Maps a function over a list of strings and then concatenates the
result with the specified separator interspersed between
elements.
Type: concatMapStringsSep :: string -> (string -> string) -> [string] -> string
/* First maps over the list and then concatenates it.
Example:
concatMapStringsSep "-" (x: toUpper x) ["foo" "bar" "baz"]
=> "FOO-BAR-BAZ"
*/
concatMapStringsSep =
# Separator to add between elements
sep:
# Function to map over the list
f:
# List of input strings
list: concatStringsSep sep (map f list);
concatMapStringsSep = sep: f: list: concatStringsSep sep (map f list);
/* Same as `concatMapStringsSep`, but the mapping function
additionally receives the position of its argument.
Type: concatMapStringsSep :: string -> (int -> string -> string) -> [string] -> string
/* First imaps over the list and then concatenates it.
Example:
concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ]
=> "6-3-2"
*/
concatImapStringsSep =
# Separator to add between elements
sep:
# Function that receives elements and their positions
f:
# List of input strings
list: concatStringsSep sep (lib.imap1 f list);
concatImapStringsSep = sep: f: list: concatStringsSep sep (lib.imap1 f list);
/* Construct a Unix-style, colon-separated search path consisting of
the given `subDir` appended to each of the given paths.
Type: makeSearchPath :: string -> [string] -> string
/* Construct a Unix-style search path consisting of each `subDir"
directory of the given list of packages.
Example:
makeSearchPath "bin" ["/root" "/usr" "/usr/local"]
=> "/root/bin:/usr/bin:/usr/local/bin"
makeSearchPath "bin" [""]
=> "/bin"
makeSearchPath "bin" ["/"]
=> "//bin"
*/
makeSearchPath =
# Directory name to append
subDir:
# List of base paths
paths:
concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) paths));
makeSearchPath = subDir: packages:
concatStringsSep ":" (map (path: path + "/" + subDir) (builtins.filter (x: x != null) packages));
/* Construct a Unix-style search path by appending the given
`subDir` to the specified `output` of each of the packages. If no
output by the given name is found, fallback to `.out` and then to
the default.
Type: string -> string -> [package] -> string
/* Construct a Unix-style search path, using given package output.
If no output is found, fallback to `.out` and then to the default.
Example:
makeSearchPathOutput "dev" "bin" [ pkgs.openssl pkgs.zlib ]
=> "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r-dev/bin:/nix/store/wwh7mhwh269sfjkm6k5665b5kgp7jrk2-zlib-1.2.8/bin"
*/
makeSearchPathOutput =
# Package output to use
output:
# Directory name to append
subDir:
# List of packages
pkgs: makeSearchPath subDir (map (lib.getOutput output) pkgs);
makeSearchPathOutput = output: subDir: pkgs: makeSearchPath subDir (map (lib.getOutput output) pkgs);
/* Construct a library search path (such as RPATH) containing the
libraries for a set of packages
@@ -162,80 +114,64 @@ rec {
*/
makeBinPath = makeSearchPathOutput "bin" "bin";
/* Construct a perl search path (such as $PERL5LIB)
FIXME(zimbatm): this should be moved in perl-specific code
Example:
pkgs = import <nixpkgs> { }
makePerlPath [ pkgs.perlPackages.libnet ]
=> "/nix/store/n0m1fk9c960d8wlrs62sncnadygqqc6y-perl-Net-SMTP-1.25/lib/perl5/site_perl"
*/
makePerlPath = makeSearchPathOutput "lib" "lib/perl5/site_perl";
/* Construct a perl search path recursively including all dependencies (such as $PERL5LIB)
Example:
pkgs = import <nixpkgs> { }
makeFullPerlPath [ pkgs.perlPackages.CGI ]
=> "/nix/store/fddivfrdc1xql02h9q500fpnqy12c74n-perl-CGI-4.38/lib/perl5/site_perl:/nix/store/8hsvdalmsxqkjg0c5ifigpf31vc4vsy2-perl-HTML-Parser-3.72/lib/perl5/site_perl:/nix/store/zhc7wh0xl8hz3y3f71nhlw1559iyvzld-perl-HTML-Tagset-3.20/lib/perl5/site_perl"
*/
makeFullPerlPath = deps: makePerlPath (lib.misc.closePropagation deps);
/* Depending on the boolean `cond', return either the given string
or the empty string. Useful to concatenate against a bigger string.
Type: optionalString :: bool -> string -> string
Example:
optionalString true "some-string"
=> "some-string"
optionalString false "some-string"
=> ""
*/
optionalString =
# Condition
cond:
# String to return if condition is true
string: if cond then string else "";
optionalString = cond: string: if cond then string else "";
/* Determine whether a string has given prefix.
Type: hasPrefix :: string -> string -> bool
Example:
hasPrefix "foo" "foobar"
=> true
hasPrefix "foo" "barfoo"
=> false
*/
hasPrefix =
# Prefix to check for
pref:
# Input string
str: substring 0 (stringLength pref) str == pref;
hasPrefix = pref: str:
substring 0 (stringLength pref) str == pref;
/* Determine whether a string has given suffix.
Type: hasSuffix :: string -> string -> bool
Example:
hasSuffix "foo" "foobar"
=> false
hasSuffix "foo" "barfoo"
=> true
*/
hasSuffix =
# Suffix to check for
suffix:
# Input string
content:
hasSuffix = suffix: content:
let
lenContent = stringLength content;
lenSuffix = stringLength suffix;
in lenContent >= lenSuffix &&
substring (lenContent - lenSuffix) lenContent content == suffix;
/* Determine whether a string contains the given infix
Type: hasInfix :: string -> string -> bool
Example:
hasInfix "bc" "abcd"
=> true
hasInfix "ab" "abcd"
=> true
hasInfix "cd" "abcd"
=> true
hasInfix "foo" "abcd"
=> false
*/
hasInfix = infix: content:
let
drop = x: substring 1 (stringLength x) x;
in hasPrefix infix content
|| content != "" && hasInfix infix (drop content);
/* Convert a string to a list of characters (i.e. singleton strings).
This allows you to, e.g., map a function over each character. However,
note that this will likely be horribly inefficient; Nix is not a
@@ -244,8 +180,6 @@ rec {
Also note that Nix treats strings as a list of bytes and thus doesn't
handle unicode.
Type: stringtoCharacters :: string -> [string]
Example:
stringToCharacters ""
=> [ ]
@@ -260,25 +194,18 @@ rec {
/* Manipulate a string character by character and replace them by
strings before concatenating the results.
Type: stringAsChars :: (string -> string) -> string -> string
Example:
stringAsChars (x: if x == "a" then "i" else x) "nax"
=> "nix"
*/
stringAsChars =
# Function to map over each individual character
f:
# Input string
s: concatStrings (
stringAsChars = f: s:
concatStrings (
map f (stringToCharacters s)
);
/* Escape occurrence of the elements of `list` in `string` by
/* Escape occurrence of the elements of list in string by
prefixing it with a backslash.
Type: escape :: [string] -> string -> string
Example:
escape ["(" ")"] "(foo)"
=> "\\(foo\\)"
@@ -287,8 +214,6 @@ rec {
/* Quote string to be used safely within the Bourne shell.
Type: escapeShellArg :: string -> string
Example:
escapeShellArg "esc'ape\nme"
=> "'esc'\\''ape\nme'"
@@ -297,8 +222,6 @@ rec {
/* Quote all arguments to be safely passed to the Bourne shell.
Type: escapeShellArgs :: [string] -> string
Example:
escapeShellArgs ["one" "two three" "four'five"]
=> "'one' 'two three' 'four'\\''five'"
@@ -307,15 +230,13 @@ rec {
/* Turn a string into a Nix expression representing that string
Type: string -> string
Example:
escapeNixString "hello\${}\n"
=> "\"hello\\\${}\\n\""
*/
escapeNixString = s: escape ["$"] (builtins.toJSON s);
# Obsolete - use replaceStrings instead.
/* Obsolete - use replaceStrings instead. */
replaceChars = builtins.replaceStrings or (
del: new: s:
let
@@ -335,8 +256,6 @@ rec {
/* Converts an ASCII string to lower-case.
Type: toLower :: string -> string
Example:
toLower "HOME"
=> "home"
@@ -345,8 +264,6 @@ rec {
/* Converts an ASCII string to upper-case.
Type: toUpper :: string -> string
Example:
toUpper "home"
=> "HOME"
@@ -356,7 +273,7 @@ rec {
/* Appends string context from another string. This is an implementation
detail of Nix.
Strings in Nix carry an invisible `context` which is a list of strings
Strings in Nix carry an invisible `context' which is a list of strings
representing store paths. If the string is later used in a derivation
attribute, the derivation will properly populate the inputDrvs and
inputSrcs.
@@ -402,9 +319,8 @@ rec {
in
recurse 0 0;
/* Return a string without the specified prefix, if the prefix matches.
Type: string -> string -> string
/* Return the suffix of the second argument if the first argument matches
its prefix.
Example:
removePrefix "foo." "foo.bar.baz"
@@ -412,23 +328,18 @@ rec {
removePrefix "xxx" "foo.bar.baz"
=> "foo.bar.baz"
*/
removePrefix =
# Prefix to remove if it matches
prefix:
# Input string
str:
removePrefix = pre: s:
let
preLen = stringLength prefix;
sLen = stringLength str;
preLen = stringLength pre;
sLen = stringLength s;
in
if hasPrefix prefix str then
substring preLen (sLen - preLen) str
if hasPrefix pre s then
substring preLen (sLen - preLen) s
else
str;
s;
/* Return a string without the specified suffix, if the suffix matches.
Type: string -> string -> string
/* Return the prefix of the second argument if the first argument matches
its suffix.
Example:
removeSuffix "front" "homefront"
@@ -436,21 +347,17 @@ rec {
removeSuffix "xxx" "homefront"
=> "homefront"
*/
removeSuffix =
# Suffix to remove if it matches
suffix:
# Input string
str:
removeSuffix = suf: s:
let
sufLen = stringLength suffix;
sLen = stringLength str;
sufLen = stringLength suf;
sLen = stringLength s;
in
if sufLen <= sLen && suffix == substring (sLen - sufLen) sufLen str then
substring 0 (sLen - sufLen) str
if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then
substring 0 (sLen - sufLen) s
else
str;
s;
/* Return true if string v1 denotes a version older than v2.
/* Return true iff string v1 denotes a version older than v2.
Example:
versionOlder "1.1" "1.2"
@@ -460,7 +367,7 @@ rec {
*/
versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1;
/* Return true if string v1 denotes a version equal to or newer than v2.
/* Return true iff string v1 denotes a version equal to or newer than v2.
Example:
versionAtLeast "1.1" "1.0"
@@ -503,7 +410,7 @@ rec {
components = splitString "/" url;
filename = lib.last components;
name = builtins.head (splitString sep filename);
in assert name != filename; name;
in assert name != filename; name;
/* Create an --{enable,disable}-<feat> string that can be passed to
standard GNU Autoconf scripts.
@@ -552,11 +459,6 @@ rec {
/* Create a fixed width string with additional prefix to match
required width.
This function will fail if the input string is longer than the
requested length.
Type: fixedWidthString :: int -> string -> string
Example:
fixedWidthString 5 "0" (toString 15)
=> "00015"
@@ -566,10 +468,7 @@ rec {
strw = lib.stringLength str;
reqWidth = width - (lib.stringLength filler);
in
assert lib.assertMsg (strw <= width)
"fixedWidthString: requested string length (${
toString width}) must not be shorter than actual length (${
toString strw})";
assert strw <= width;
if strw == width then str else filler + fixedWidthString reqWidth filler str;
/* Format a number adding leading zeroes up to fixed width.
@@ -600,16 +499,12 @@ rec {
=> false
*/
isStorePath = x:
if isCoercibleToString x then
let str = toString x; in
builtins.substring 0 1 str == "/"
&& dirOf str == builtins.storeDir
else
false;
isCoercibleToString x
&& builtins.substring 0 1 (toString x) == "/"
&& dirOf (builtins.toPath x) == builtins.storeDir;
/* Parse a string string as an int.
Type: string -> int
/* Convert string to int
Obviously, it is a bit hacky to use fromJSON that way.
Example:
toInt "1337"
@@ -619,18 +514,17 @@ rec {
toInt "3.14"
=> error: floating point JSON numbers are not supported
*/
# Obviously, it is a bit hacky to use fromJSON this way.
toInt = str:
let may_be_int = builtins.fromJSON str; in
if builtins.isInt may_be_int
then may_be_int
else throw "Could not convert ${str} to int.";
/* Read a list of paths from `file`, relative to the `rootPath`.
Lines beginning with `#` are treated as comments and ignored.
Whitespace is significant.
/* Read a list of paths from `file', relative to the `rootPath'. Lines
beginning with `#' are treated as comments and ignored. Whitespace
is significant.
NOTE: This function is not performant and should be avoided.
NOTE: this function is not performant and should be avoided
Example:
readPathsFromFile /prefix
@@ -643,17 +537,16 @@ rec {
*/
readPathsFromFile = rootPath: file:
let
root = toString rootPath;
lines = lib.splitString "\n" (builtins.readFile file);
removeComments = lib.filter (line: line != "" && !(lib.hasPrefix "#" line));
relativePaths = removeComments lines;
absolutePaths = builtins.map (path: rootPath + "/${path}") relativePaths;
absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths;
in
absolutePaths;
/* Read the contents of a file removing the trailing \n
Type: fileContents :: path -> string
Example:
$ echo "1.0" > ./version

View File

@@ -32,7 +32,6 @@ rec {
else if final.isUClibc then "uclibc"
else if final.isAndroid then "bionic"
else if final.isLinux /* default */ then "glibc"
else if final.isAvr then "avrlibc"
# TODO(@Ericson2314) think more about other operating systems
else "native/impure";
extensions = {
@@ -47,66 +46,6 @@ rec {
# Misc boolean options
useAndroidPrebuilt = false;
useiOSPrebuilt = false;
# Output from uname
uname = {
# uname -s
system = {
"linux" = "Linux";
"windows" = "Windows";
"darwin" = "Darwin";
"netbsd" = "NetBSD";
"freebsd" = "FreeBSD";
"openbsd" = "OpenBSD";
"wasm" = "Wasm";
}.${final.parsed.kernel.name} or null;
# uname -p
processor = final.parsed.cpu.name;
# uname -r
release = null;
};
qemuArch =
if final.isArm then "arm"
else if final.isx86_64 then "x86_64"
else if final.isx86 then "i386"
else {
"powerpc" = "ppc";
"powerpc64" = "ppc64";
"powerpc64le" = "ppc64";
"mips64" = "mips";
"mipsel64" = "mipsel";
}.${final.parsed.cpu.name} or final.parsed.cpu.name;
emulator = pkgs: let
qemu-user = pkgs.qemu.override {
smartcardSupport = false;
spiceSupport = false;
openGLSupport = false;
virglSupport = false;
vncSupport = false;
gtkSupport = false;
sdlSupport = false;
pulseSupport = false;
smbdSupport = false;
seccompSupport = false;
hostCpuTargets = ["${final.qemuArch}-linux-user"];
};
wine-name = "wine${toString final.parsed.cpu.bits}";
wine = (pkgs.winePackagesFor wine-name).minimal;
in
if final.parsed.kernel.name == pkgs.stdenv.hostPlatform.parsed.kernel.name &&
(final.parsed.cpu.name == pkgs.stdenv.hostPlatform.parsed.cpu.name ||
(final.isi686 && pkgs.stdenv.hostPlatform.isx86_64))
then pkgs.runtimeShell
else if final.isWindows
then "${wine}/bin/${wine-name}"
else if final.isLinux && pkgs.stdenv.hostPlatform.isLinux
then "${qemu-user}/bin/qemu-${final.qemuArch}"
else throw "Don't know how to run ${final.config} executables.";
} // mapAttrs (n: v: v final.parsed) inspect.predicates
// args;
in assert final.useAndroidPrebuilt -> final.isAndroid;

View File

@@ -15,8 +15,6 @@ let
"x86_64-cygwin" "x86_64-darwin" "x86_64-freebsd" "x86_64-linux"
"x86_64-netbsd" "x86_64-openbsd" "x86_64-solaris"
"x86_64-windows" "i686-windows"
];
allParsed = map parse.mkSystemFromString all;
@@ -39,13 +37,12 @@ in rec {
darwin = filterDoubles predicates.isDarwin;
freebsd = filterDoubles predicates.isFreeBSD;
# Should be better, but MinGW is unclear.
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabi; }) ++ filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnueabihf; });
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
illumos = filterDoubles predicates.isSunOS;
linux = filterDoubles predicates.isLinux;
netbsd = filterDoubles predicates.isNetBSD;
openbsd = filterDoubles predicates.isOpenBSD;
unix = filterDoubles predicates.isUnix;
windows = filterDoubles predicates.isWindows;
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "powerpc64le-linux"];
}

View File

@@ -2,14 +2,7 @@
# `crossSystem`. They are put here for user convenience, but also used by cross
# tests and linux cross stdenv building, so handle with care!
{ lib }:
let
platforms = import ./platforms.nix { inherit lib; };
riscv = bits: {
config = "riscv${bits}-unknown-linux-gnu";
platform = platforms.riscv-multiplatform bits;
};
in
let platforms = import ./platforms.nix { inherit lib; }; in
rec {
#
@@ -35,7 +28,7 @@ rec {
};
armv7l-hf-multiplatform = rec {
config = "armv7l-unknown-linux-gnueabihf";
config = "armv7a-unknown-linux-gnueabihf";
platform = platforms.armv7l-hf-multiplatform;
};
@@ -47,7 +40,7 @@ rec {
armv5te-android-prebuilt = rec {
config = "armv5tel-unknown-linux-androideabi";
sdkVer = "21";
ndkVer = "18b";
ndkVer = "10e";
platform = platforms.armv5te-android;
useAndroidPrebuilt = true;
};
@@ -55,7 +48,7 @@ rec {
armv7a-android-prebuilt = rec {
config = "armv7a-unknown-linux-androideabi";
sdkVer = "24";
ndkVer = "18b";
ndkVer = "17c";
platform = platforms.armv7a-android;
useAndroidPrebuilt = true;
};
@@ -63,7 +56,7 @@ rec {
aarch64-android-prebuilt = rec {
config = "aarch64-unknown-linux-android";
sdkVer = "24";
ndkVer = "18b";
ndkVer = "17c";
platform = platforms.aarch64-multiplatform;
useAndroidPrebuilt = true;
};
@@ -99,56 +92,13 @@ rec {
musl64 = { config = "x86_64-unknown-linux-musl"; };
musl32 = { config = "i686-unknown-linux-musl"; };
riscv = bits: {
config = "riscv${bits}-unknown-linux-gnu";
platform = platforms.riscv-multiplatform bits;
};
riscv64 = riscv "64";
riscv32 = riscv "32";
avr = {
config = "avr";
};
arm-embedded = {
config = "arm-none-eabi";
libc = "newlib";
};
armhf-embedded = {
config = "arm-none-eabihf";
libc = "newlib";
};
aarch64-embedded = {
config = "aarch64-none-elf";
libc = "newlib";
};
aarch64be-embedded = {
config = "aarch64_be-none-elf";
libc = "newlib";
};
ppc-embedded = {
config = "powerpc-none-eabi";
libc = "newlib";
};
ppcle-embedded = {
config = "powerpcle-none-eabi";
libc = "newlib";
};
alpha-embedded = {
config = "alpha-elf";
libc = "newlib";
};
i686-embedded = {
config = "i686-elf";
libc = "newlib";
};
x86_64-embedded = {
config = "x86_64-elf";
libc = "newlib";
};
#
# Darwin

View File

@@ -9,8 +9,7 @@ let abis = lib.mapAttrs (_: abi: builtins.removeAttrs abi [ "assertions" ]) abis
rec {
patterns = rec {
isi686 = { cpu = cpuTypes.i686; };
isx86_32 = { cpu = { family = "x86"; bits = 32; }; };
isx86_64 = { cpu = { family = "x86"; bits = 64; }; };
isx86_64 = { cpu = cpuTypes.x86_64; };
isPowerPC = { cpu = cpuTypes.powerpc; };
isPower = { cpu = { family = "power"; }; };
isx86 = { cpu = { family = "x86"; }; };
@@ -20,8 +19,6 @@ rec {
isRiscV = { cpu = { family = "riscv"; }; };
isSparc = { cpu = { family = "sparc"; }; };
isWasm = { cpu = { family = "wasm"; }; };
isAvr = { cpu = { family = "avr"; }; };
isAlpha = { cpu = { family = "alpha"; }; };
is32bit = { cpu = { bits = 32; }; };
is64bit = { cpu = { bits = 64; }; };

View File

@@ -80,11 +80,7 @@ rec {
armv8r = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; };
armv8m = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; };
aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; version = "8"; };
aarch64_be = { bits = 64; significantByte = bigEndian; family = "arm"; version = "8"; };
i386 = { bits = 32; significantByte = littleEndian; family = "x86"; };
i486 = { bits = 32; significantByte = littleEndian; family = "x86"; };
i586 = { bits = 32; significantByte = littleEndian; family = "x86"; };
i686 = { bits = 32; significantByte = littleEndian; family = "x86"; };
x86_64 = { bits = 64; significantByte = littleEndian; family = "x86"; };
@@ -96,7 +92,6 @@ rec {
powerpc = { bits = 32; significantByte = bigEndian; family = "power"; };
powerpc64 = { bits = 64; significantByte = bigEndian; family = "power"; };
powerpc64le = { bits = 64; significantByte = littleEndian; family = "power"; };
powerpcle = { bits = 32; significantByte = littleEndian; family = "power"; };
riscv32 = { bits = 32; significantByte = littleEndian; family = "riscv"; };
riscv64 = { bits = 64; significantByte = littleEndian; family = "riscv"; };
@@ -106,10 +101,6 @@ rec {
wasm32 = { bits = 32; significantByte = littleEndian; family = "wasm"; };
wasm64 = { bits = 64; significantByte = littleEndian; family = "wasm"; };
alpha = { bits = 64; significantByte = littleEndian; family = "alpha"; };
avr = { bits = 8; family = "avr"; };
};
################################################################################
@@ -126,7 +117,6 @@ rec {
apple = {};
pc = {};
none = {};
unknown = {};
};
@@ -209,15 +199,7 @@ rec {
abis = setTypes types.openAbi {
cygnus = {};
msvc = {};
# Note: eabi is specific to ARM and PowerPC.
# On PowerPC, this corresponds to PPCEABI.
# On ARM, this corresponds to ARMEABI.
eabi = { float = "soft"; };
eabihf = { float = "hard"; };
# Other architectures should use ELF in embedded situations.
elf = {};
eabi = {};
androideabi = {};
android = {
@@ -273,20 +255,9 @@ rec {
setType "system" components;
mkSkeletonFromList = l: {
"1" = if elemAt l 0 == "avr"
then { cpu = elemAt l 0; kernel = "none"; abi = "unknown"; }
else throw "Target specification with 1 components is ambiguous";
"2" = # We only do 2-part hacks for things Nix already supports
if elemAt l 1 == "cygwin"
then { cpu = elemAt l 0; kernel = "windows"; abi = "cygnus"; }
# MSVC ought to be the default ABI so this case isn't needed. But then it
# becomes difficult to handle the gnu* variants for Aarch32 correctly for
# minGW. So it's easier to make gnu* the default for the MinGW, but
# hack-in MSVC for the non-MinGW case right here.
else if elemAt l 1 == "windows"
then { cpu = elemAt l 0; kernel = "windows"; abi = "msvc"; }
else if (elemAt l 1) == "elf"
then { cpu = elemAt l 0; vendor = "unknown"; kernel = "none"; abi = elemAt l 1; }
else { cpu = elemAt l 0; kernel = elemAt l 1; };
"3" = # Awkwards hacks, beware!
if elemAt l 1 == "apple"
@@ -294,11 +265,9 @@ rec {
else if (elemAt l 1 == "linux") || (elemAt l 2 == "gnu")
then { cpu = elemAt l 0; kernel = elemAt l 1; abi = elemAt l 2; }
else if (elemAt l 2 == "mingw32") # autotools breaks on -gnu for window
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; }
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; }
else if hasPrefix "netbsd" (elemAt l 2)
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; }
else if (elem (elemAt l 2) ["eabi" "eabihf" "elf"])
then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 1; abi = elemAt l 2; }
else throw "Target specification with 3 components is ambiguous";
"4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; };
}.${toString (length l)}
@@ -330,12 +299,13 @@ rec {
else getKernel args.kernel;
abi =
/**/ if args ? abi then getAbi args.abi
else if isLinux parsed || isWindows parsed then
else if isLinux parsed then
if isAarch32 parsed then
if lib.versionAtLeast (parsed.cpu.version or "0") "6"
then abis.gnueabihf
else abis.gnueabi
else abis.gnu
else if isWindows parsed then abis.gnu
else abis.unknown;
};

View File

@@ -467,13 +467,10 @@ rec {
};
selectBySystem = system: {
"i486-linux" = pc32;
"i586-linux" = pc32;
"i686-linux" = pc32;
"x86_64-linux" = pc64;
"armv5tel-linux" = sheevaplug;
"armv6l-linux" = raspberrypi;
"armv7a-linux" = armv7l-hf-multiplatform;
"armv7l-linux" = armv7l-hf-multiplatform;
"aarch64-linux" = aarch64-multiplatform;
"mipsel-linux" = fuloong2f_n32;

View File

@@ -1,7 +0,0 @@
# Throws an error if any of our lib tests fail.
let tests = [ "misc" "systems" ];
all = builtins.concatLists (map (f: import (./. + "/${f}.nix")) tests);
in if all == []
then null
else throw (builtins.toJSON all)

View File

@@ -112,7 +112,7 @@ runTests {
storePathAppendix = isStorePath
"${goodPath}/bin/python";
nonAbsolute = isStorePath (concatStrings (tail (stringToCharacters goodPath)));
asPath = isStorePath (/. + goodPath);
asPath = isStorePath (builtins.toPath goodPath);
otherPath = isStorePath "/something/else";
otherVals = {
attrset = isStorePath {};
@@ -236,20 +236,6 @@ runTests {
};
};
testOverrideExistingEmpty = {
expr = overrideExisting {} { a = 1; };
expected = {};
};
testOverrideExistingDisjoint = {
expr = overrideExisting { b = 2; } { a = 1; };
expected = { b = 2; };
};
testOverrideExistingOverride = {
expr = overrideExisting { a = 3; b = 2; } { a = 1; };
expected = { a = 1; b = 2; };
};
# GENERATORS
# these tests assume attributes are converted to lists
@@ -369,10 +355,9 @@ runTests {
testToPretty = {
expr = mapAttrs (const (generators.toPretty {})) rec {
int = 42;
float = 0.1337;
bool = true;
string = ''fno"rd'';
path = /. + "/foo";
path = /. + "/foo"; # toPath returns a string
null_ = null;
function = x: x;
functionArgs = { arg ? 4, foo }: arg;
@@ -382,7 +367,6 @@ runTests {
};
expected = rec {
int = "42";
float = "~0.133700";
bool = "true";
string = ''"fno\"rd"'';
path = "/foo";
@@ -401,4 +385,42 @@ runTests {
expected = "«foo»";
};
# MISC
testOverridableDelayableArgsTest = {
expr =
let res1 = defaultOverridableDelayableArgs id {};
res2 = defaultOverridableDelayableArgs id { a = 7; };
res3 = let x = defaultOverridableDelayableArgs id { a = 7; };
in (x.merge) { b = 10; };
res4 = let x = defaultOverridableDelayableArgs id { a = 7; };
in (x.merge) ( x: { b = 10; });
res5 = let x = defaultOverridableDelayableArgs id { a = 7; };
in (x.merge) ( x: { a = builtins.add x.a 3; });
res6 = let x = defaultOverridableDelayableArgs id { a = 7; mergeAttrBy = { a = builtins.add; }; };
y = x.merge {};
in (y.merge) { a = 10; };
resRem7 = res6.replace (a: removeAttrs a ["a"]);
# fixed tests (delayed args): (when using them add some comments, please)
resFixed1 =
let x = defaultOverridableDelayableArgs id ( x: { a = 7; c = x.fixed.b; });
y = x.merge (x: { name = "name-${builtins.toString x.fixed.c}"; });
in (y.merge) { b = 10; };
strip = attrs: removeAttrs attrs ["merge" "replace"];
in all id
[ ((strip res1) == { })
((strip res2) == { a = 7; })
((strip res3) == { a = 7; b = 10; })
((strip res4) == { a = 7; b = 10; })
((strip res5) == { a = 10; })
((strip res6) == { a = 17; })
((strip resRem7) == {})
((strip resFixed1) == { a = 7; b = 10; c =10; name = "name-10"; })
];
expected = true;
};
}

View File

@@ -149,12 +149,6 @@ checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-long-list.ni
# Check loaOf with many merges of lists.
checkConfigOutput "1 2 3 4 5 6 7 8 9 10" config.result ./loaOf-with-many-list-merges.nix
# Check mkAliasOptionModule.
checkConfigOutput "true" config.enable ./alias-with-priority.nix
checkConfigOutput "true" config.enableAlias ./alias-with-priority.nix
checkConfigOutput "false" config.enable ./alias-with-priority-can-override.nix
checkConfigOutput "false" config.enableAlias ./alias-with-priority-can-override.nix
cat <<EOF
====== module tests ======
$pass Pass

View File

@@ -1,55 +0,0 @@
# This is a test to show that mkAliasOptionModule sets the priority correctly
# for aliased options.
#
# This test shows that an alias with a high priority is able to override
# a non-aliased option.
{ config, lib, ... }:
with lib;
{
options = {
# A simple boolean option that can be enabled or disabled.
enable = lib.mkOption {
type = types.nullOr types.bool;
default = null;
example = true;
description = ''
Some descriptive text
'';
};
# mkAliasOptionModule sets warnings, so this has to be defined.
warnings = mkOption {
internal = true;
default = [];
type = types.listOf types.str;
example = [ "The `foo' service is deprecated and will go away soon!" ];
description = ''
This option allows modules to show warnings to users during
the evaluation of the system configuration.
'';
};
};
imports = [
# Create an alias for the "enable" option.
(mkAliasOptionModule [ "enableAlias" ] [ "enable" ])
# Disable the aliased option with a high priority so it
# should override the next import.
( { config, lib, ... }:
{
enableAlias = lib.mkForce false;
}
)
# Enable the normal (non-aliased) option.
( { config, lib, ... }:
{
enable = true;
}
)
];
}

View File

@@ -1,55 +0,0 @@
# This is a test to show that mkAliasOptionModule sets the priority correctly
# for aliased options.
#
# This test shows that an alias with a low priority is able to be overridden
# with a non-aliased option.
{ config, lib, ... }:
with lib;
{
options = {
# A simple boolean option that can be enabled or disabled.
enable = lib.mkOption {
type = types.nullOr types.bool;
default = null;
example = true;
description = ''
Some descriptive text
'';
};
# mkAliasOptionModule sets warnings, so this has to be defined.
warnings = mkOption {
internal = true;
default = [];
type = types.listOf types.str;
example = [ "The `foo' service is deprecated and will go away soon!" ];
description = ''
This option allows modules to show warnings to users during
the evaluation of the system configuration.
'';
};
};
imports = [
# Create an alias for the "enable" option.
(mkAliasOptionModule [ "enableAlias" ] [ "enable" ])
# Disable the aliased option, but with a default (low) priority so it
# should be able to be overridden by the next import.
( { config, lib, ... }:
{
enableAlias = lib.mkDefault false;
}
)
# Enable the normal (non-aliased) option.
( { config, lib, ... }:
{
enable = true;
}
)
];
}

View File

@@ -12,21 +12,20 @@ let
expected = lib.sort lib.lessThan y;
};
in with lib.systems.doubles; lib.runTests {
testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ windows);
all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ];
testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" ];
testmips = mseteq mips [ "mipsel-linux" ];
testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" ];
arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]);
i686 = assertTrue (mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" ]);
mips = assertTrue (mseteq mips [ "mipsel-linux" ]);
x86_64 = assertTrue (mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" ]);
testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ];
testdarwin = mseteq darwin [ "x86_64-darwin" ];
testfreebsd = mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ];
testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */);
testillumos = mseteq illumos [ "x86_64-solaris" ];
testlinux = mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ];
testnetbsd = mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ];
testopenbsd = mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ];
testwindows = mseteq windows [ "i686-cygwin" "x86_64-cygwin" "i686-windows" "x86_64-windows" ];
testunix = mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ cygwin);
cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]);
gnu = assertTrue (mseteq gnu (linux /* ++ kfreebsd ++ ... */));
illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]);
linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ]);
netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);
openbsd = assertTrue (mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ]);
unix = assertTrue (mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos));
}

View File

@@ -9,37 +9,23 @@ rec {
Type: id :: a -> a
*/
id =
# The value to return
x: x;
id = x: x;
/* The constant function
Ignores the second argument. If called with only one argument,
constructs a function that always returns a static value.
Ignores the second argument.
Or: Construct a function that always returns a static value.
Type: const :: a -> b -> a
Example:
let f = const 5; in f 10
=> 5
*/
const =
# Value to return
x:
# Value to ignore
y: x;
const = x: y: x;
## Named versions corresponding to some builtin operators.
/* Concatenate two lists
Type: concat :: [a] -> [a] -> [a]
Example:
concat [ 1 2 ] [ 3 4 ]
=> [ 1 2 3 4 ]
*/
/* Concatenate two lists */
concat = x: y: x ++ y;
/* boolean or */
@@ -67,40 +53,27 @@ rec {
bitNot = builtins.sub (-1);
/* Convert a boolean to a string.
This function uses the strings "true" and "false" to represent
boolean values. Calling `toString` on a bool instead returns "1"
and "" (sic!).
Type: boolToString :: bool -> string
Note that toString on a bool returns "1" and "".
*/
boolToString = b: if b then "true" else "false";
/* Merge two attribute sets shallowly, right side trumps left
mergeAttrs :: attrs -> attrs -> attrs
Example:
mergeAttrs { a = 1; b = 2; } { b = 3; c = 4; }
=> { a = 1; b = 3; c = 4; }
*/
mergeAttrs =
# Left attribute set
x:
# Right attribute set (higher precedence for equal keys)
y: x // y;
mergeAttrs = x: y: x // y;
/* Flip the order of the arguments of a binary function.
Type: flip :: (a -> b -> c) -> (b -> a -> c)
Example:
flip concat [1] [2]
=> [ 2 1 ]
*/
flip = f: a: b: f b a;
/* Apply function if the supplied argument is non-null.
/* Apply function if argument is non-null.
Example:
mapNullable (x: x+1) null
@@ -108,11 +81,7 @@ rec {
mapNullable (x: x+1) 22
=> 23
*/
mapNullable =
# Function to call
f:
# Argument to check for null before passing it to `f`
a: if isNull a then a else f a;
mapNullable = f: a: if isNull a then a else f a;
# Pull in some builtins not included elsewhere.
inherit (builtins)
@@ -123,34 +92,21 @@ rec {
## nixpks version strings
/* Returns the current full nixpkgs version number. */
# The current full nixpkgs version number.
version = release + versionSuffix;
/* Returns the current nixpkgs release number as string. */
# The current nixpkgs version number as string.
release = lib.strings.fileContents ../.version;
/* Returns the current nixpkgs release code name.
On each release the first letter is bumped and a new animal is chosen
starting with that new letter.
*/
codeName = "Koi";
/* Returns the current nixpkgs version suffix as string. */
# The current nixpkgs version suffix as string.
versionSuffix =
let suffixFile = ../.version-suffix;
in if pathExists suffixFile
then lib.strings.fileContents suffixFile
else "pre-git";
/* Attempts to return the the current revision of nixpkgs and
returns the supplied default value otherwise.
Type: revisionWithDefault :: string -> string
*/
revisionWithDefault =
# Default value to return if revision can not be determined
default:
# Attempt to get the revision nixpkgs is from
revisionWithDefault = default:
let
revisionFile = "${toString ./..}/.git-revision";
gitRepo = "${toString ./..}/.git";
@@ -161,20 +117,14 @@ rec {
nixpkgsVersion = builtins.trace "`lib.nixpkgsVersion` is deprecated, use `lib.version` instead!" version;
/* Determine whether the function is being called from inside a Nix
shell.
Type: inNixShell :: bool
*/
# Whether we're being called by nix-shell.
inNixShell = builtins.getEnv "IN_NIX_SHELL" != "";
## Integer operations
/* Return minimum of two numbers. */
# Return minimum/maximum of two numbers.
min = x: y: if x < y then x else y;
/* Return maximum of two numbers. */
max = x: y: if x > y then x else y;
/* Integer modulus
@@ -208,9 +158,8 @@ rec {
second subtype, compare elements of a single subtype with `yes`
and `no` respectively.
Type: (a -> bool) -> (a -> a -> int) -> (a -> a -> int) -> (a -> a -> int)
Example:
let cmp = splitByAndCompare (hasPrefix "foo") compare compare; in
cmp "a" "z" => -1
@@ -221,44 +170,31 @@ rec {
# while
compare "fooa" "a" => 1
*/
splitByAndCompare =
# Predicate
p:
# Comparison function if predicate holds for both values
yes:
# Comparison function if predicate holds for neither value
no:
# First value to compare
a:
# Second value to compare
b:
splitByAndCompare = p: yes: no: a: b:
if p a
then if p b then yes a b else -1
else if p b then 1 else no a b;
/* Reads a JSON file.
Type :: path -> any
*/
/* Reads a JSON file. */
importJSON = path:
builtins.fromJSON (builtins.readFile path);
## Warnings
## Warnings and asserts
# See https://github.com/NixOS/nix/issues/749. Eventually we'd like these
# to expand to Nix builtins that carry metadata so that Nix can filter out
# the INFO messages without parsing the message string.
#
# Usage:
# {
# foo = lib.warn "foo is deprecated" oldFoo;
# }
#
# TODO: figure out a clever way to integrate location information from
# something like __unsafeGetAttrPos.
/* See https://github.com/NixOS/nix/issues/749. Eventually we'd like these
to expand to Nix builtins that carry metadata so that Nix can filter out
the INFO messages without parsing the message string.
Usage:
{
foo = lib.warn "foo is deprecated" oldFoo;
}
TODO: figure out a clever way to integrate location information from
something like __unsafeGetAttrPos.
*/
warn = msg: builtins.trace "WARNING: ${msg}";
info = msg: builtins.trace "INFO: ${msg}";

View File

@@ -119,9 +119,7 @@ rec {
let
betweenDesc = lowest: highest:
"${toString lowest} and ${toString highest} (both inclusive)";
between = lowest: highest:
assert lib.assertMsg (lowest <= highest)
"ints.between: lowest must be smaller than highest";
between = lowest: highest: assert lowest <= highest;
addCheck int (x: x >= lowest && x <= highest) // {
name = "intBetween";
description = "integer between ${betweenDesc lowest highest}";
@@ -169,9 +167,6 @@ rec {
# s32 = sign 32 4294967296;
};
# Alias of u16 for a port number
port = ints.u16;
float = mkOptionType rec {
name = "float";
description = "floating point number";
@@ -197,10 +192,7 @@ rec {
# separator between the values).
separatedString = sep: mkOptionType rec {
name = "separatedString";
description = if sep == ""
then "Concatenated string" # for types.string.
else "strings concatenated with ${builtins.toJSON sep}"
;
description = "string";
check = isString;
merge = loc: defs: concatStringsSep sep (getValues defs);
functor = (defaultFunctor name) // {
@@ -284,7 +276,8 @@ rec {
(mergeDefinitions (loc ++ [name]) elemType defs).optionalValue
)
# Push down position info.
(map (def: mapAttrs (n: v: { inherit (def) file; value = v; }) def.value) defs)));
(map (def: listToAttrs (mapAttrsToList (n: def':
{ name = n; value = { inherit (def) file; value = def'; }; }) def.value)) defs)));
getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["<name>"]);
getSubModules = elemType.getSubModules;
substSubModules = m: attrsOf (elemType.substSubModules m);
@@ -446,9 +439,7 @@ rec {
# Either value of type `finalType` or `coercedType`, the latter is
# converted to `finalType` using `coerceFunc`.
coercedTo = coercedType: coerceFunc: finalType:
assert lib.assertMsg (coercedType.getSubModules == null)
"coercedTo: coercedType must not have submodules (its a ${
coercedType.description})";
assert coercedType.getSubModules == null;
mkOptionType rec {
name = "coercedTo";
description = "${finalType.description} or ${coercedType.description} convertible to it";
@@ -473,6 +464,7 @@ rec {
name = builtins.trace "types.optionSet is deprecated; use types.submodule instead" "optionSet";
description = "option set";
};
# Augment the given type with an additional type check function.
addCheck = elemType: check: elemType // { check = x: elemType.check x && check x; };

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp perlPackages.JSON perlPackages.LWPProtocolHttps nixUnstable nixUnstable.perl-bindings
#! nix-shell -i perl -p perl perlPackages.NetAmazonS3 perlPackages.FileSlurp nixUnstable nixUnstable.perl-bindings
# This command uploads tarballs to tarballs.nixos.org, the
# content-addressed cache used by fetchurl as a fallback for when
@@ -101,8 +101,8 @@ sub uploadFile {
my ($name, $dest) = @_;
#print STDERR "linking $name to $dest...\n";
$bucket->add_key($name, "", {
'x-amz-website-redirect-location' => "/" . $dest,
'x-amz-acl' => "public-read"
'x-amz-website-redirect-location' => "/" . $dest,
'x-amz-acl' => "public-read"
})
or die "failed to create redirect from $name to $dest\n";
$cache{$name} = 1;
@@ -116,8 +116,8 @@ sub uploadFile {
# Upload the file as sha512/<hash-in-base-16>.
print STDERR "uploading $fn to $mainKey...\n";
$bucket->add_key_filename($mainKey, $fn, {
'x-amz-meta-original-name' => $name,
'x-amz-acl' => "public-read"
'x-amz-meta-original-name' => $name,
'x-amz-acl' => "public-read"
})
or die "failed to upload $fn to $mainKey\n";
$cache{$mainKey} = 1;

View File

@@ -1,11 +0,0 @@
#! /bin/sh
if [[ -z "$VERBOSE" ]]; then
echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
fi
unset HOME NIXPKGS_CONFIG # Force empty config
# With the default heap size (380MB), nix-instantiate fails:
# Too many heap sections: Increase MAXHINCR or MAX_HEAP_SECTS
export GC_INITIAL_HEAP_SIZE=${GC_INITIAL_HEAP_SIZE:-2000000000} # 2GB
nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null

View File

@@ -14,13 +14,12 @@ fi
tmp=$(mktemp -d)
pushd $tmp >/dev/null
wget -nH -r -c --no-parent "${WGET_ARGS[@]}" -A '*.tar.xz.sha256' -A '*.mirrorlist' >/dev/null
find -type f -name '*.mirrorlist' -delete
wget -nH -r -c --no-parent "${WGET_ARGS[@]}" >/dev/null
csv=$(mktemp)
find . -type f | while read src; do
# Sanitize file name
filename=$(gawk '{ print $2 }' "$src" | tr '@' '_')
filename=$(basename "$src" | tr '@' '_')
nameVersion="${filename%.tar.*}"
name=$(echo "$nameVersion" | sed -e 's,-[[:digit:]].*,,' | sed -e 's,-opensource-src$,,' | sed -e 's,-everywhere-src$,,')
version=$(echo "$nameVersion" | sed -e 's,^\([[:alpha:]][[:alnum:]]*-\)\+,,')
@@ -39,8 +38,8 @@ gawk -F , "{ print \$1 }" $csv | sort | uniq | while read name; do
latestVersion=$(echo "$versions" | sort -rV | head -n 1)
src=$(gawk -F , "/^$name,$latestVersion,/ { print \$3 }" $csv)
filename=$(gawk -F , "/^$name,$latestVersion,/ { print \$4 }" $csv)
url="$(dirname "${src:2}")/$filename"
sha256=$(gawk '{ print $1 }' "$src")
url="${src:2}"
sha256=$(nix-hash --type sha256 --base32 --flat "$src")
cat >>"$SRCS" <<EOF
$name = {
version = "$latestVersion";

View File

@@ -31,7 +31,7 @@ let
if !canEval x then []
else if isDerivation x then optional (canEval x.drvPath) x
else if isList x then concatLists (map derivationsIn' x)
else if isAttrs x then concatLists (mapAttrsToList (n: v: addErrorContext "while finding tarballs in '${n}':" (derivationsIn' v)) x)
else if isAttrs x then concatLists (mapAttrsToList (n: v: derivationsIn' v) x)
else [ ];
keyDrv = drv: if canEval drv.drvPath then { key = drv.drvPath; value = drv; } else { };

View File

@@ -1,31 +0,0 @@
ansicolors,
argparse,
basexx,
dkjson
fifo
inspect
lgi
lpeg_patterns
lpty
lrexlib-gnu,
lrexlib-posix,
ltermbox,
lua-cmsgpack,
lua_cliargs,
lua-iconv,
lua-term,
luabitop,
luaevent,
luacheck
luaffi,http://luarocks.org/dev,
luuid,
penlight,
say,
luv,
luasystem,
mediator_lua,http://luarocks.org/manifests/teto
mpack,http://luarocks.org/manifests/teto
nvim-client,http://luarocks.org/manifests/teto
busted,http://luarocks.org/manifests/teto
luassert,http://luarocks.org/manifests/teto
coxpcall,https://luarocks.org/manifests/hisham,1.17.0-1
1 ansicolors,
2 argparse,
3 basexx,
4 dkjson
5 fifo
6 inspect
7 lgi
8 lpeg_patterns
9 lpty
10 lrexlib-gnu,
11 lrexlib-posix,
12 ltermbox,
13 lua-cmsgpack,
14 lua_cliargs,
15 lua-iconv,
16 lua-term,
17 luabitop,
18 luaevent,
19 luacheck
20 luaffi,http://luarocks.org/dev,
21 luuid,
22 penlight,
23 say,
24 luv,
25 luasystem,
26 mediator_lua,http://luarocks.org/manifests/teto
27 mpack,http://luarocks.org/manifests/teto
28 nvim-client,http://luarocks.org/manifests/teto
29 busted,http://luarocks.org/manifests/teto
30 luassert,http://luarocks.org/manifests/teto
31 coxpcall,https://luarocks.org/manifests/hisham,1.17.0-1

View File

@@ -4,7 +4,7 @@ stdenv.mkDerivation {
name = "nix-generate-from-cpan-3";
buildInputs = with perlPackages; [
makeWrapper perl GetoptLongDescriptive CPANPLUS Readonly LogLog4perl
makeWrapper perl CPANMeta GetoptLongDescriptive CPANPLUS Readonly LogLog4perl
];
phases = [ "installPhase" ];

View File

@@ -0,0 +1,7 @@
#! /bin/sh
if [[ -z "$VERBOSE" ]]; then
echo "You may set VERBOSE=1 to see debug output or to any other non-empty string to make this script completely silent"
fi
unset HOME NIXPKGS_CONFIG # Force empty config
nix-instantiate --strict --eval-only --xml --show-trace "$(dirname "$0")"/eval-release.nix 2>&1 > /dev/null

View File

@@ -1,112 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell -p nix-prefetch-scripts luarocks-nix -i bash
# You'll likely want to use
# ``
# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
# ``
# to update all libraries in that folder.
# to debug, redirect stderr to stdout with 2>&1
# stop the script upon C-C
set -eu -o pipefail
if [ $# -lt 1 ]; then
print_help
exit 1
fi
CSV_FILE="maintainers/scripts/luarocks-packages.csv"
TMP_FILE="$(mktemp)"
exit_trap()
{
local lc="$BASH_COMMAND" rc=$?
test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
}
trap exit_trap EXIT
print_help() {
echo "Usage: $0 <GENERATED_FILE>"
echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
echo ""
echo " -c <CSV_FILE> to set the list of luarocks package to generate"
exit 1
}
while getopts ":hc:" opt; do
case $opt in
h)
print_help
;;
c)
echo "Loading package list from $OPTARG !" >&2
CSV_FILE="$OPTARG"
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
shift $((OPTIND-1))
done
GENERATED_NIXFILE="$1"
HEADER="
/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
Regenerate it with:
nixpkgs$ ${0} ${GENERATED_NIXFILE}
These packages are manually refined in lua-overrides.nix
*/
{ self, lua, stdenv, fetchurl, fetchgit, pkgs, ... } @ args:
self: super:
with self;
{
"
FOOTER="
}
/* GENERATED */
"
function convert_pkg () {
pkg="$1"
server=""
if [ ! -z "$2" ]; then
server=" --server=$2"
fi
version="${3:-}"
echo "looking at $pkg (version $version) from server [$server]" >&2
cmd="luarocks nix $server $pkg $version"
drv="$($cmd)"
if [ $? -ne 0 ]; then
echo "Failed to convert $pkg" >&2
echo "$drv" >&2
else
echo "$drv" | tee -a "$TMP_FILE"
fi
}
# params needed when called via callPackage
echo "$HEADER" | tee "$TMP_FILE"
# list of packages with format
# name,server,version
while IFS=, read -r pkg_name server version
do
if [ -z "$pkg_name" ]; then
echo "Skipping empty package name" >&2
fi
convert_pkg "$pkg_name" "$server" "$version"
done < "$CSV_FILE"
# close the set
echo "$FOOTER" | tee -a "$TMP_FILE"
cp "$TMP_FILE" "$GENERATED_NIXFILE"

View File

@@ -1,5 +1,361 @@
#!/bin/sh
build=`nix-build -E "with import (fetchTarball "channel:nixpkgs-unstable") {}; python3.withPackages(ps: with ps; [ packaging requests toolz ])"`
python=${build}/bin/python
exec ${python} pkgs/development/interpreters/python/update-python-libraries/update-python-libraries.py $@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p "python3.withPackages(ps: with ps; [ packaging requests toolz ])" -p git
"""
Update a Python package expression by passing in the `.nix` file, or the directory containing it.
You can pass in multiple files or paths.
You'll likely want to use
``
$ ./update-python-libraries ../../pkgs/development/python-modules/*
``
to update all libraries in that folder.
"""
import argparse
import logging
import os
import re
import requests
import toolz
from concurrent.futures import ThreadPoolExecutor as Pool
from packaging.version import Version as _Version
from packaging.version import InvalidVersion
from packaging.specifiers import SpecifierSet
import collections
import subprocess
INDEX = "https://pypi.io/pypi"
"""url of PyPI"""
EXTENSIONS = ['tar.gz', 'tar.bz2', 'tar', 'zip', '.whl']
"""Permitted file extensions. These are evaluated from left to right and the first occurance is returned."""
PRERELEASES = False
import logging
logging.basicConfig(level=logging.INFO)
class Version(_Version, collections.abc.Sequence):
def __init__(self, version):
super().__init__(version)
# We cannot use `str(Version(0.04.21))` because that becomes `0.4.21`
# https://github.com/avian2/unidecode/issues/13#issuecomment-354538882
self.raw_version = version
def __getitem__(self, i):
return self._version.release[i]
def __len__(self):
return len(self._version.release)
def __iter__(self):
yield from self._version.release
def _get_values(attribute, text):
"""Match attribute in text and return all matches.
:returns: List of matches.
"""
regex = '{}\s+=\s+"(.*)";'.format(attribute)
regex = re.compile(regex)
values = regex.findall(text)
return values
def _get_unique_value(attribute, text):
"""Match attribute in text and return unique match.
:returns: Single match.
"""
values = _get_values(attribute, text)
n = len(values)
if n > 1:
raise ValueError("found too many values for {}".format(attribute))
elif n == 1:
return values[0]
else:
raise ValueError("no value found for {}".format(attribute))
def _get_line_and_value(attribute, text):
"""Match attribute in text. Return the line and the value of the attribute."""
regex = '({}\s+=\s+"(.*)";)'.format(attribute)
regex = re.compile(regex)
value = regex.findall(text)
n = len(value)
if n > 1:
raise ValueError("found too many values for {}".format(attribute))
elif n == 1:
return value[0]
else:
raise ValueError("no value found for {}".format(attribute))
def _replace_value(attribute, value, text):
"""Search and replace value of attribute in text."""
old_line, old_value = _get_line_and_value(attribute, text)
new_line = old_line.replace(old_value, value)
new_text = text.replace(old_line, new_line)
return new_text
def _fetch_page(url):
r = requests.get(url)
if r.status_code == requests.codes.ok:
return r.json()
else:
raise ValueError("request for {} failed".format(url))
SEMVER = {
'major' : 0,
'minor' : 1,
'patch' : 2,
}
def _determine_latest_version(current_version, target, versions):
"""Determine latest version, given `target`.
"""
current_version = Version(current_version)
def _parse_versions(versions):
for v in versions:
try:
yield Version(v)
except InvalidVersion:
pass
versions = _parse_versions(versions)
index = SEMVER[target]
ceiling = list(current_version[0:index])
if len(ceiling) == 0:
ceiling = None
else:
ceiling[-1]+=1
ceiling = Version(".".join(map(str, ceiling)))
# We do not want prereleases
versions = SpecifierSet(prereleases=PRERELEASES).filter(versions)
if ceiling is not None:
versions = SpecifierSet(f"<{ceiling}").filter(versions)
return (max(sorted(versions))).raw_version
def _get_latest_version_pypi(package, extension, current_version, target):
"""Get latest version and hash from PyPI."""
url = "{}/{}/json".format(INDEX, package)
json = _fetch_page(url)
versions = json['releases'].keys()
version = _determine_latest_version(current_version, target, versions)
try:
releases = json['releases'][version]
except KeyError as e:
raise KeyError('Could not find version {} for {}'.format(version, package)) from e
for release in releases:
if release['filename'].endswith(extension):
# TODO: In case of wheel we need to do further checks!
sha256 = release['digests']['sha256']
break
else:
sha256 = None
return version, sha256
def _get_latest_version_github(package, extension, current_version, target):
raise ValueError("updating from GitHub is not yet supported.")
FETCHERS = {
'fetchFromGitHub' : _get_latest_version_github,
'fetchPypi' : _get_latest_version_pypi,
'fetchurl' : _get_latest_version_pypi,
}
DEFAULT_SETUPTOOLS_EXTENSION = 'tar.gz'
FORMATS = {
'setuptools' : DEFAULT_SETUPTOOLS_EXTENSION,
'wheel' : 'whl'
}
def _determine_fetcher(text):
# Count occurences of fetchers.
nfetchers = sum(text.count('src = {}'.format(fetcher)) for fetcher in FETCHERS.keys())
if nfetchers == 0:
raise ValueError("no fetcher.")
elif nfetchers > 1:
raise ValueError("multiple fetchers.")
else:
# Then we check which fetcher to use.
for fetcher in FETCHERS.keys():
if 'src = {}'.format(fetcher) in text:
return fetcher
def _determine_extension(text, fetcher):
"""Determine what extension is used in the expression.
If we use:
- fetchPypi, we check if format is specified.
- fetchurl, we determine the extension from the url.
- fetchFromGitHub we simply use `.tar.gz`.
"""
if fetcher == 'fetchPypi':
try:
src_format = _get_unique_value('format', text)
except ValueError as e:
src_format = None # format was not given
try:
extension = _get_unique_value('extension', text)
except ValueError as e:
extension = None # extension was not given
if extension is None:
if src_format is None:
src_format = 'setuptools'
elif src_format == 'flit':
raise ValueError("Don't know how to update a Flit package.")
extension = FORMATS[src_format]
elif fetcher == 'fetchurl':
url = _get_unique_value('url', text)
extension = os.path.splitext(url)[1]
if 'pypi' not in url:
raise ValueError('url does not point to PyPI.')
elif fetcher == 'fetchFromGitHub':
raise ValueError('updating from GitHub is not yet implemented.')
return extension
def _update_package(path, target):
# Read the expression
with open(path, 'r') as f:
text = f.read()
# Determine pname.
pname = _get_unique_value('pname', text)
# Determine version.
version = _get_unique_value('version', text)
# First we check how many fetchers are mentioned.
fetcher = _determine_fetcher(text)
extension = _determine_extension(text, fetcher)
new_version, new_sha256 = FETCHERS[fetcher](pname, extension, version, target)
if new_version == version:
logging.info("Path {}: no update available for {}.".format(path, pname))
return False
elif Version(new_version) <= Version(version):
raise ValueError("downgrade for {}.".format(pname))
if not new_sha256:
raise ValueError("no file available for {}.".format(pname))
text = _replace_value('version', new_version, text)
text = _replace_value('sha256', new_sha256, text)
with open(path, 'w') as f:
f.write(text)
logging.info("Path {}: updated {} from {} to {}".format(path, pname, version, new_version))
result = {
'path' : path,
'target': target,
'pname': pname,
'old_version' : version,
'new_version' : new_version,
#'fetcher' : fetcher,
}
return result
def _update(path, target):
# We need to read and modify a Nix expression.
if os.path.isdir(path):
path = os.path.join(path, 'default.nix')
# If a default.nix does not exist, we quit.
if not os.path.isfile(path):
logging.info("Path {}: does not exist.".format(path))
return False
# If file is not a Nix expression, we quit.
if not path.endswith(".nix"):
logging.info("Path {}: does not end with `.nix`.".format(path))
return False
try:
return _update_package(path, target)
except ValueError as e:
logging.warning("Path {}: {}".format(path, e))
return False
def _commit(path, pname, old_version, new_version, **kwargs):
"""Commit result.
"""
msg = f'python: {pname}: {old_version} -> {new_version}'
try:
subprocess.check_call(['git', 'add', path])
subprocess.check_call(['git', 'commit', '-m', msg])
except subprocess.CalledProcessError as e:
subprocess.check_call(['git', 'checkout', path])
raise subprocess.CalledProcessError(f'Could not commit {path}') from e
return True
def main():
parser = argparse.ArgumentParser()
parser.add_argument('package', type=str, nargs='+')
parser.add_argument('--target', type=str, choices=SEMVER.keys(), default='major')
parser.add_argument('--commit', action='store_true', help='Create a commit for each package update')
args = parser.parse_args()
target = args.target
packages = list(map(os.path.abspath, args.package))
logging.info("Updating packages...")
# Use threads to update packages concurrently
with Pool() as p:
results = list(p.map(lambda pkg: _update(pkg, target), packages))
logging.info("Finished updating packages.")
# Commits are created sequentially.
if args.commit:
logging.info("Committing updates...")
list(map(lambda x: _commit(**x), filter(bool, results)))
logging.info("Finished committing updates")
count = sum(map(bool, results))
logging.info("{} package(s) updated".format(count))
if __name__ == '__main__':
main()

View File

@@ -1,8 +1,6 @@
{ package ? null
, maintainer ? null
, path ? null
, max-workers ? null
, keep-going ? null
}:
# TODO: add assert statements
@@ -107,23 +105,26 @@ let
% nix-shell maintainers/scripts/update.nix --argstr path gnome3
to run update script for all package under an attribute path.
You can also add
--argstr max-workers 8
to increase the number of jobs in parallel, or
--argstr keep-going true
to continue running when a single update fails.
'';
packageData = package: {
name = package.name;
pname = (builtins.parseDrvName package.name).name;
updateScript = pkgs.lib.toList package.updateScript;
};
runUpdateScript = package: ''
echo -ne " - ${package.name}: UPDATING ..."\\r
${package.updateScript} &> ${(builtins.parseDrvName package.name).name}.log
CODE=$?
if [ "$CODE" != "0" ]; then
echo " - ${package.name}: ERROR "
echo ""
echo "--- SHOWING ERROR LOG FOR ${package.name} ----------------------"
echo ""
cat ${(builtins.parseDrvName package.name).name}.log
echo ""
echo "--- SHOWING ERROR LOG FOR ${package.name} ----------------------"
exit $CODE
else
rm ${(builtins.parseDrvName package.name).name}.log
fi
echo " - ${package.name}: DONE. "
'';
in pkgs.stdenv.mkDerivation {
name = "nixpkgs-update-script";
@@ -138,7 +139,21 @@ in pkgs.stdenv.mkDerivation {
exit 1
'';
shellHook = ''
unset shellHook # do not contaminate nested shells
exec ${pkgs.python3.interpreter} ${./update.py} ${pkgs.writeText "packages.json" (builtins.toJSON (map packageData packages))}${pkgs.lib.optionalString (max-workers != null) " --max-workers=${max-workers}"}${pkgs.lib.optionalString (keep-going == "true") " --keep-going"}
echo ""
echo "Going to be running update for following packages:"
echo "${builtins.concatStringsSep "\n" (map (x: " - ${x.name}") packages)}"
echo ""
read -n1 -r -p "Press space to continue..." confirm
if [ "$confirm" = "" ]; then
echo ""
echo "Running update for:"
${builtins.concatStringsSep "\n" (map runUpdateScript packages)}
echo ""
echo "Packages updated!"
exit 0
else
echo "Aborting!"
exit 1
fi
'';
}

View File

@@ -1,79 +0,0 @@
import argparse
import concurrent.futures
import json
import os
import subprocess
import sys
updates = {}
def eprint(*args, **kwargs):
print(*args, file=sys.stderr, **kwargs)
def run_update_script(package):
eprint(f" - {package['name']}: UPDATING ...")
subprocess.run(package['updateScript'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, check=True)
def main(max_workers, keep_going, packages):
with open(sys.argv[1]) as f:
packages = json.load(f)
eprint()
eprint('Going to be running update for following packages:')
for package in packages:
eprint(f" - {package['name']}")
eprint()
confirm = input('Press Enter key to continue...')
if confirm == '':
eprint()
eprint('Running update for:')
with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor:
for package in packages:
updates[executor.submit(run_update_script, package)] = package
for future in concurrent.futures.as_completed(updates):
package = updates[future]
try:
future.result()
eprint(f" - {package['name']}: DONE.")
except subprocess.CalledProcessError as e:
eprint(f" - {package['name']}: ERROR")
eprint()
eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------")
eprint()
eprint(e.stdout.decode('utf-8'))
with open(f"{package['pname']}.log", 'wb') as f:
f.write(e.stdout)
eprint()
eprint(f"--- SHOWING ERROR LOG FOR {package['name']} ----------------------")
if not keep_going:
sys.exit(1)
eprint()
eprint('Packages updated!')
sys.exit()
else:
eprint('Aborting!')
sys.exit(130)
parser = argparse.ArgumentParser(description='Update packages')
parser.add_argument('--max-workers', '-j', dest='max_workers', type=int, help='Number of updates to run concurrently', nargs='?', default=4)
parser.add_argument('--keep-going', '-k', dest='keep_going', action='store_true', help='Do not stop after first failure')
parser.add_argument('packages', help='JSON file containing the list of package names and their update scripts')
if __name__ == '__main__':
args = parser.parse_args()
try:
main(args.max_workers, args.keep_going, args.packages)
except (KeyboardInterrupt, SystemExit) as e:
for update in updates:
update.cancel()
sys.exit(e.code if isinstance(e, SystemExit) else 130)

View File

@@ -52,8 +52,4 @@ $ ping -c1 10.233.4.2
networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
</programlisting>
</para>
<para>
You may need to restart your system for the changes to take effect.
</para>
</section>

View File

@@ -15,7 +15,7 @@ containers.database =
{ config =
{ config, pkgs, ... }:
{ <xref linkend="opt-services.postgresql.enable"/> = true;
<xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql_9_6;
<xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql96;
};
};
</programlisting>

View File

@@ -73,8 +73,7 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
</para>
<para>
There are several ways to change the configuration of the container. First,
on the host, you can edit
To change the configuration of the container, you can edit
<literal>/var/lib/container/<replaceable>name</replaceable>/etc/nixos/configuration.nix</literal>,
and run
<screen>
@@ -87,8 +86,7 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
<xref linkend="opt-services.httpd.enable"/> = true;
<xref linkend="opt-services.httpd.adminAddr"/> = "foo@example.org";
<xref linkend="opt-networking.firewall.allowedTCPPorts"/> = [ 80 ];
'
'
# curl http://$(nixos-container show-ip foo)/
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">…
</screen>
@@ -97,11 +95,13 @@ Linux foo 3.4.82 #1-NixOS SMP Thu Mar 20 14:44:05 UTC 2014 x86_64 GNU/Linux
</para>
<para>
Alternatively, you can change the configuration from within the container
itself by running <command>nixos-rebuild switch</command> inside the
container. Note that the container by default does not have a copy of the
NixOS channel, so you should run <command>nix-channel --update</command>
first.
Note that in previous versions of NixOS (17.09 and earlier) one could also
use all nix-related commands (like <command>nixos-rebuild switch</command>)
from inside the container. However, since the release of Nix 2.0 this is not
supported anymore. Supporting Nix commands inside the container might be
possible again in future versions. See
<link xlink:href="https://github.com/NixOS/nixpkgs/issues/40355">the github
issue</link> for tracking progress on this issue.
</para>
<para>

View File

@@ -31,7 +31,7 @@ $ cd nixpkgs
<para>
The second possibility is to add the package outside of the Nixpkgs tree. For
instance, here is how you specify a build of the
<link xlink:href="https://www.gnu.org/software/hello/">GNU Hello</link>
<link xlink:href="http://www.gnu.org/software/hello/">GNU Hello</link>
package directly in <filename>configuration.nix</filename>:
<programlisting>
<xref linkend="opt-environment.systemPackages"/> =

View File

@@ -197,12 +197,11 @@ swapDevices = [ { device = "/dev/disk/by-label/swap"; } ];
pkgs.emacs
];
<xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql_10;
<xref linkend="opt-services.postgresql.package"/> = pkgs.postgresql90;
</programlisting>
The latter option definition changes the default PostgreSQL package used
by NixOSs PostgreSQL service to 10.x. For more information on
packages, including how to add new ones, see
<xref linkend="sec-custom-packages"/>.
by NixOSs PostgreSQL service to 9.0. For more information on packages,
including how to add new ones, see <xref linkend="sec-custom-packages"/>.
</para>
</listitem>
</varlistentry>

View File

@@ -21,9 +21,6 @@
<xi:include href="xfce.xml" />
<xi:include href="networking.xml" />
<xi:include href="linux-kernel.xml" />
<xi:include href="matrix.xml" />
<xi:include href="../generated/modules.xml" xpointer="xpointer(//section[@id='modules']/*)" />
<xi:include href="profiles.xml" />
<xi:include href="kubernetes.xml" />
<!-- Apache; libvirtd virtualisation -->
</part>

Some files were not shown because too many files have changed in this diff Show More