forked from lix-project/lix
Merge "Add pre-commit
checks" into main
This commit is contained in:
commit
4eb35409ae
|
@ -48,4 +48,3 @@ PointerAlignment: Middle
|
||||||
SortIncludes: Never
|
SortIncludes: Never
|
||||||
SpaceAfterCStyleCast: true
|
SpaceAfterCStyleCast: true
|
||||||
SpaceAfterTemplateKeyword: false
|
SpaceAfterTemplateKeyword: false
|
||||||
|
|
||||||
|
|
1
.github/workflows/hydra_status.yml
vendored
1
.github/workflows/hydra_status.yml
vendored
|
@ -17,4 +17,3 @@ jobs:
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- run: bash scripts/check-hydra-status.sh
|
- run: bash scripts/check-hydra-status.sh
|
||||||
|
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -159,3 +159,5 @@ result-*
|
||||||
buildtime.bin
|
buildtime.bin
|
||||||
|
|
||||||
.envrc.local
|
.envrc.local
|
||||||
|
# We generate this with a Nix shell hook
|
||||||
|
/.pre-commit-config.yaml
|
||||||
|
|
22
COPYING
22
COPYING
|
@ -55,7 +55,7 @@ modified by someone else and passed on, the recipients should know
|
||||||
that what they have is not the original version, so that the original
|
that what they have is not the original version, so that the original
|
||||||
author's reputation will not be affected by problems that might be
|
author's reputation will not be affected by problems that might be
|
||||||
introduced by others.
|
introduced by others.
|
||||||
|
|
||||||
Finally, software patents pose a constant threat to the existence of
|
Finally, software patents pose a constant threat to the existence of
|
||||||
any free program. We wish to make sure that a company cannot
|
any free program. We wish to make sure that a company cannot
|
||||||
effectively restrict the users of a free program by obtaining a
|
effectively restrict the users of a free program by obtaining a
|
||||||
|
@ -111,7 +111,7 @@ modification follow. Pay close attention to the difference between a
|
||||||
"work based on the library" and a "work that uses the library". The
|
"work based on the library" and a "work that uses the library". The
|
||||||
former contains code derived from the library, whereas the latter must
|
former contains code derived from the library, whereas the latter must
|
||||||
be combined with the library in order to run.
|
be combined with the library in order to run.
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ such a program is covered only if its contents constitute a work based
|
||||||
on the Library (independent of the use of the Library in a tool for
|
on the Library (independent of the use of the Library in a tool for
|
||||||
writing it). Whether that is true depends on what the Library does
|
writing it). Whether that is true depends on what the Library does
|
||||||
and what the program that uses the Library does.
|
and what the program that uses the Library does.
|
||||||
|
|
||||||
1. You may copy and distribute verbatim copies of the Library's
|
1. You may copy and distribute verbatim copies of the Library's
|
||||||
complete source code as you receive it, in any medium, provided that
|
complete source code as you receive it, in any medium, provided that
|
||||||
you conspicuously and appropriately publish on each copy an
|
you conspicuously and appropriately publish on each copy an
|
||||||
|
@ -158,7 +158,7 @@ Library.
|
||||||
You may charge a fee for the physical act of transferring a copy,
|
You may charge a fee for the physical act of transferring a copy,
|
||||||
and you may at your option offer warranty protection in exchange for a
|
and you may at your option offer warranty protection in exchange for a
|
||||||
fee.
|
fee.
|
||||||
|
|
||||||
2. You may modify your copy or copies of the Library or any portion
|
2. You may modify your copy or copies of the Library or any portion
|
||||||
of it, thus forming a work based on the Library, and copy and
|
of it, thus forming a work based on the Library, and copy and
|
||||||
distribute such modifications or work under the terms of Section 1
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
@ -216,7 +216,7 @@ instead of to this License. (If a newer version than version 2 of the
|
||||||
ordinary GNU General Public License has appeared, then you can specify
|
ordinary GNU General Public License has appeared, then you can specify
|
||||||
that version instead if you wish.) Do not make any other change in
|
that version instead if you wish.) Do not make any other change in
|
||||||
these notices.
|
these notices.
|
||||||
|
|
||||||
Once this change is made in a given copy, it is irreversible for
|
Once this change is made in a given copy, it is irreversible for
|
||||||
that copy, so the ordinary GNU General Public License applies to all
|
that copy, so the ordinary GNU General Public License applies to all
|
||||||
subsequent copies and derivative works made from that copy.
|
subsequent copies and derivative works made from that copy.
|
||||||
|
@ -267,7 +267,7 @@ Library will still fall under Section 6.)
|
||||||
distribute the object code for the work under the terms of Section 6.
|
distribute the object code for the work under the terms of Section 6.
|
||||||
Any executables containing that work also fall under Section 6,
|
Any executables containing that work also fall under Section 6,
|
||||||
whether or not they are linked directly with the Library itself.
|
whether or not they are linked directly with the Library itself.
|
||||||
|
|
||||||
6. As an exception to the Sections above, you may also combine or
|
6. As an exception to the Sections above, you may also combine or
|
||||||
link a "work that uses the Library" with the Library to produce a
|
link a "work that uses the Library" with the Library to produce a
|
||||||
work containing portions of the Library, and distribute that work
|
work containing portions of the Library, and distribute that work
|
||||||
|
@ -329,7 +329,7 @@ restrictions of other proprietary libraries that do not normally
|
||||||
accompany the operating system. Such a contradiction means you cannot
|
accompany the operating system. Such a contradiction means you cannot
|
||||||
use both them and the Library together in an executable that you
|
use both them and the Library together in an executable that you
|
||||||
distribute.
|
distribute.
|
||||||
|
|
||||||
7. You may place library facilities that are a work based on the
|
7. You may place library facilities that are a work based on the
|
||||||
Library side-by-side in a single library together with other library
|
Library side-by-side in a single library together with other library
|
||||||
facilities not covered by this License, and distribute such a combined
|
facilities not covered by this License, and distribute such a combined
|
||||||
|
@ -370,7 +370,7 @@ subject to these terms and conditions. You may not impose any further
|
||||||
restrictions on the recipients' exercise of the rights granted herein.
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
You are not responsible for enforcing compliance by third parties with
|
You are not responsible for enforcing compliance by third parties with
|
||||||
this License.
|
this License.
|
||||||
|
|
||||||
11. If, as a consequence of a court judgment or allegation of patent
|
11. If, as a consequence of a court judgment or allegation of patent
|
||||||
infringement or for any other reason (not limited to patent issues),
|
infringement or for any other reason (not limited to patent issues),
|
||||||
conditions are imposed on you (whether by court order, agreement or
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
@ -422,7 +422,7 @@ conditions either of that version or of any later version published by
|
||||||
the Free Software Foundation. If the Library does not specify a
|
the Free Software Foundation. If the Library does not specify a
|
||||||
license version number, you may choose any version ever published by
|
license version number, you may choose any version ever published by
|
||||||
the Free Software Foundation.
|
the Free Software Foundation.
|
||||||
|
|
||||||
14. If you wish to incorporate parts of the Library into other free
|
14. If you wish to incorporate parts of the Library into other free
|
||||||
programs whose distribution conditions are incompatible with these,
|
programs whose distribution conditions are incompatible with these,
|
||||||
write to the author to ask for permission. For software which is
|
write to the author to ask for permission. For software which is
|
||||||
|
@ -456,7 +456,7 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGES.
|
DAMAGES.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
How to Apply These Terms to Your New Libraries
|
How to Apply These Terms to Your New Libraries
|
||||||
|
|
||||||
If you develop a new library, and you want it to be of the greatest
|
If you develop a new library, and you want it to be of the greatest
|
||||||
|
@ -500,5 +500,3 @@ necessary. Here is a sample; alter the names:
|
||||||
Ty Coon, President of Vice
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
That's all there is to it!
|
That's all there is to it!
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ index 0468aaec..b348d869 100644
|
||||||
+ size_t stack_limit;
|
+ size_t stack_limit;
|
||||||
if (!EXPECT(GC_thr_initialized, TRUE))
|
if (!EXPECT(GC_thr_initialized, TRUE))
|
||||||
GC_thr_init();
|
GC_thr_init();
|
||||||
|
|
||||||
@@ -411,6 +412,19 @@ GC_INNER void GC_push_all_stacks(void)
|
@@ -411,6 +412,19 @@ GC_INNER void GC_push_all_stacks(void)
|
||||||
GC_push_all_stack_sections(lo, hi, p->traced_stack_sect);
|
GC_push_all_stack_sections(lo, hi, p->traced_stack_sect);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ index edab6c22..f2c61282 100644
|
||||||
@@ -2172,6 +2172,11 @@ GC_API void GC_CALL GC_win32_free_heap(void);
|
@@ -2172,6 +2172,11 @@ GC_API void GC_CALL GC_win32_free_heap(void);
|
||||||
(*GC_amiga_allocwrapper_do)(a,GC_malloc_atomic_ignore_off_page)
|
(*GC_amiga_allocwrapper_do)(a,GC_malloc_atomic_ignore_off_page)
|
||||||
#endif /* _AMIGA && !GC_AMIGA_MAKINGLIB */
|
#endif /* _AMIGA && !GC_AMIGA_MAKINGLIB */
|
||||||
|
|
||||||
+#if !__APPLE__
|
+#if !__APPLE__
|
||||||
+/* Patch doesn't work on apple */
|
+/* Patch doesn't work on apple */
|
||||||
+#define NIX_BOEHM_PATCH_VERSION 1
|
+#define NIX_BOEHM_PATCH_VERSION 1
|
||||||
|
|
|
@ -3,7 +3,7 @@ index 597c7f13..587286be 100644
|
||||||
--- a/include/gc_allocator.h
|
--- a/include/gc_allocator.h
|
||||||
+++ b/include/gc_allocator.h
|
+++ b/include/gc_allocator.h
|
||||||
@@ -312,6 +312,7 @@ public:
|
@@ -312,6 +312,7 @@ public:
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
class traceable_allocator<void> {
|
class traceable_allocator<void> {
|
||||||
+public:
|
+public:
|
||||||
|
|
0
doc/manual/anchors.jq
Executable file → Normal file
0
doc/manual/anchors.jq
Executable file → Normal file
|
@ -37,4 +37,3 @@ error:
|
||||||
|
|
||||||
error: uh oh!
|
error: uh oh!
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -27,4 +27,3 @@
|
||||||
/package-management/channels* /command-ref/nix-channel 301!
|
/package-management/channels* /command-ref/nix-channel 301!
|
||||||
|
|
||||||
/package-management/s3-substituter* /command-ref/new-cli/nix3-help-stores#s3-binary-cache-store 301!
|
/package-management/s3-substituter* /command-ref/new-cli/nix3-help-stores#s3-binary-cache-store 301!
|
||||||
|
|
||||||
|
|
|
@ -102,13 +102,13 @@ In particular, notice the
|
||||||
has copied the build results to that directory where you can examine it.
|
has copied the build results to that directory where you can examine it.
|
||||||
|
|
||||||
> []{#check-dirs-are-unregistered} **Note**
|
> []{#check-dirs-are-unregistered} **Note**
|
||||||
>
|
>
|
||||||
> Check paths are not protected against garbage collection, and this
|
> Check paths are not protected against garbage collection, and this
|
||||||
> path will be deleted on the next garbage collection.
|
> path will be deleted on the next garbage collection.
|
||||||
>
|
>
|
||||||
> The path is guaranteed to be alive for the duration of
|
> The path is guaranteed to be alive for the duration of
|
||||||
> the `diff-hook`'s execution, but may be deleted any time after.
|
> the `diff-hook`'s execution, but may be deleted any time after.
|
||||||
>
|
>
|
||||||
> If the comparison is performed as part of automated tooling, please
|
> If the comparison is performed as part of automated tooling, please
|
||||||
> use the diff-hook or author your tooling to handle the case where the
|
> use the diff-hook or author your tooling to handle the case where the
|
||||||
> build was not deterministic and also a check path does not exist.
|
> build was not deterministic and also a check path does not exist.
|
||||||
|
@ -117,7 +117,7 @@ has copied the build results to that directory where you can examine it.
|
||||||
already. If the derivation has not been built Nix will fail with the
|
already. If the derivation has not been built Nix will fail with the
|
||||||
error:
|
error:
|
||||||
|
|
||||||
error: some outputs of '/nix/store/hzi1h60z2qf0nb85iwnpvrai3j2w7rr6-unstable.drv'
|
error: some outputs of '/nix/store/hzi1h60z2qf0nb85iwnpvrai3j2w7rr6-unstable.drv'
|
||||||
are not valid, so checking is not possible
|
are not valid, so checking is not possible
|
||||||
|
|
||||||
Run the build without `--check`, and then try with `--check` again.
|
Run the build without `--check`, and then try with `--check` again.
|
||||||
|
|
|
@ -112,4 +112,3 @@ Build inputs used as instructions to a build task are marked accordingly:
|
||||||
| |
|
| |
|
||||||
+--------------------------------------------------------------------+
|
+--------------------------------------------------------------------+
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -67,4 +67,3 @@ Configuration options can be set on the command line, overriding the values set
|
||||||
The `extra-` prefix is supported for settings that take a list of items (e.g. `--extra-trusted users alice` or `--option extra-trusted-users alice`).
|
The `extra-` prefix is supported for settings that take a list of items (e.g. `--extra-trusted users alice` or `--option extra-trusted-users alice`).
|
||||||
|
|
||||||
# Available settings
|
# Available settings
|
||||||
|
|
||||||
|
|
|
@ -184,4 +184,3 @@ channel:
|
||||||
```console
|
```console
|
||||||
$ nix-env --file https://github.com/NixOS/nixpkgs/archive/nixos-14.12.tar.gz --install --attr firefox
|
$ nix-env --file https://github.com/NixOS/nixpkgs/archive/nixos-14.12.tar.gz --install --attr firefox
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -30,4 +30,3 @@ $ nix-env --list-generations
|
||||||
97 2004-02-06 16:22:45
|
97 2004-02-06 16:22:45
|
||||||
98 2004-02-06 16:24:33 (current)
|
98 2004-02-06 16:24:33 (current)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -212,4 +212,3 @@ To show all packages in the latest revision of the Nixpkgs repository:
|
||||||
```console
|
```console
|
||||||
$ nix-env --file https://github.com/NixOS/nixpkgs/archive/master.tar.gz --query --available
|
$ nix-env --file https://github.com/NixOS/nixpkgs/archive/master.tar.gz --query --available
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -79,4 +79,3 @@ To make files from `binutils` take precedence over files from `gcc`:
|
||||||
$ nix-env --set-flag priority 5 binutils
|
$ nix-env --set-flag priority 5 binutils
|
||||||
$ nix-env --set-flag priority 10 gcc
|
$ nix-env --set-flag priority 10 gcc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -27,4 +27,3 @@ contain just Firefox:
|
||||||
```console
|
```console
|
||||||
$ nix-env --profile /nix/var/nix/profiles/browser --set firefox
|
$ nix-env --profile /nix/var/nix/profiles/browser --set firefox
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -30,4 +30,3 @@ Switching will fail if the specified generation does not exist.
|
||||||
$ nix-env --switch-generation 42
|
$ nix-env --switch-generation 42
|
||||||
switching from generation 50 to 42
|
switching from generation 50 to 42
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -138,4 +138,3 @@ This is illustrated by the following examples:
|
||||||
2.3a < 2.3c
|
2.3a < 2.3c
|
||||||
2.3pre1 < 2.3c
|
2.3pre1 < 2.3c
|
||||||
2.3pre1 < 2.3q
|
2.3pre1 < 2.3q
|
||||||
|
|
||||||
|
|
|
@ -32,4 +32,3 @@ This operation has the following options:
|
||||||
$ nix-store --add-fixed sha256 ./hello-2.10.tar.gz
|
$ nix-store --add-fixed sha256 ./hello-2.10.tar.gz
|
||||||
/nix/store/3x7dwzq014bblazs7kq20p9hyzz0qh8g-hello-2.10.tar.gz
|
/nix/store/3x7dwzq014bblazs7kq20p9hyzz0qh8g-hello-2.10.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -69,4 +69,3 @@ To delete at least 100 MiBs of unreachable paths:
|
||||||
```console
|
```console
|
||||||
$ nix-store --gc --max-freed $((100 * 1024 * 1024))
|
$ nix-store --gc --max-freed $((100 * 1024 * 1024))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -33,4 +33,3 @@ The following options are allowed for all `nix-store` operations, but may not al
|
||||||
If there are multiple results, then multiple symlinks will be
|
If there are multiple results, then multiple symlinks will be
|
||||||
created by sequentially numbering symlinks beyond the first one
|
created by sequentially numbering symlinks beyond the first one
|
||||||
(e.g., `foo`, `foo-2`, `foo-3`, and so on).
|
(e.g., `foo`, `foo-2`, `foo-3`, and so on).
|
||||||
|
|
||||||
|
|
|
@ -37,4 +37,3 @@ hashing files in `/nix/store/qhqx7l2f1kmwihc9bnxs7rc159hsxnf3-gcc-4.1.1'
|
||||||
541838819 bytes (516.74 MiB) freed by hard-linking 54143 files;
|
541838819 bytes (516.74 MiB) freed by hard-linking 54143 files;
|
||||||
there are 114486 files with equal contents out of 215894 files in total
|
there are 114486 files with equal contents out of 215894 files in total
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -28,4 +28,3 @@ export stdenv; stdenv='/nix/store/7c8asx3yfrg5dg1gzhzyq2236zfgibnn-stdenv'
|
||||||
export system; system='x86_64-linux'
|
export system; system='x86_64-linux'
|
||||||
export _args; _args='-e /nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25c-default-builder.sh'
|
export _args; _args='-e /nix/store/9krlzvny65gdc8s7kpb6lkx8cd02c25c-default-builder.sh'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -225,4 +225,3 @@ $ nix-store --query --roots $(which svn)
|
||||||
/nix/var/nix/profiles/default-82-link
|
/nix/var/nix/profiles/default-82-link
|
||||||
/home/eelco/.local/state/nix/profiles/profile-97-link
|
/home/eelco/.local/state/nix/profiles/profile-97-link
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -35,4 +35,3 @@ ktorrent-2.2.1/
|
||||||
ktorrent-2.2.1/NEWS
|
ktorrent-2.2.1/NEWS
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -32,4 +32,3 @@ $ nix-store --repair-path /nix/store/dj7a81wsm1ijwwpkks3725661h3263p5-glibc-2.13
|
||||||
fetching path `/nix/store/d7a81wsm1ijwwpkks3725661h3263p5-glibc-2.13'...
|
fetching path `/nix/store/d7a81wsm1ijwwpkks3725661h3263p5-glibc-2.13'...
|
||||||
…
|
…
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -35,4 +35,3 @@ $ cat <<EOF >>/root/.ssh/authorized_keys
|
||||||
command="nice -n20 nix-store --serve --write" ssh-rsa AAAAB3NzaC1yc2EAAAA...
|
command="nice -n20 nix-store --serve --write" ssh-rsa AAAAB3NzaC1yc2EAAAA...
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -26,4 +26,3 @@ To verify the integrity of the `svn` command and all its dependencies:
|
||||||
```console
|
```console
|
||||||
$ nix-store --verify-path $(nix-store --query --requisites $(which svn))
|
$ nix-store --verify-path $(nix-store --query --requisites $(which svn))
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ Most Nix commands accept the following command-line options:
|
||||||
Print even more informational messages.
|
Print even more informational messages.
|
||||||
|
|
||||||
- `4` “Debug”
|
- `4` “Debug”
|
||||||
|
|
||||||
Print debug information.
|
Print debug information.
|
||||||
|
|
||||||
- `5` “Vomit”
|
- `5` “Vomit”
|
||||||
|
|
|
@ -289,4 +289,3 @@ search/replaced in it for each new build.
|
||||||
The installer now supports a `--tarball-url-prefix` flag which _may_ have
|
The installer now supports a `--tarball-url-prefix` flag which _may_ have
|
||||||
solved this need?
|
solved this need?
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ Nix keeps its *store* (the place where packages are stored) in
|
||||||
`--with-store-dir=path`.
|
`--with-store-dir=path`.
|
||||||
|
|
||||||
> **Warning**
|
> **Warning**
|
||||||
>
|
>
|
||||||
> It is best *not* to change the Nix store from its default, since doing
|
> It is best *not* to change the Nix store from its default, since doing
|
||||||
> so makes it impossible to use pre-built binaries from the standard
|
> so makes it impossible to use pre-built binaries from the standard
|
||||||
> Nixpkgs channels — that is, all packages will need to be built from
|
> Nixpkgs channels — that is, all packages will need to be built from
|
||||||
|
|
|
@ -14,7 +14,7 @@ builds) are forwarded to a *Nix daemon* running under the owner of the
|
||||||
Nix store/database that performs the operation.
|
Nix store/database that performs the operation.
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> Multi-user mode has one important limitation: only root and a set of
|
> Multi-user mode has one important limitation: only root and a set of
|
||||||
> trusted users specified in `nix.conf` can specify arbitrary binary
|
> trusted users specified in `nix.conf` can specify arbitrary binary
|
||||||
> caches. So while unprivileged users may install packages from
|
> caches. So while unprivileged users may install packages from
|
||||||
|
|
|
@ -145,4 +145,3 @@ which you may remove.
|
||||||
> complete. macOS (Catalina+) directly controls root directories and its
|
> complete. macOS (Catalina+) directly controls root directories and its
|
||||||
> read-only root will prevent you from manually deleting the empty `/nix`
|
> read-only root will prevent you from manually deleting the empty `/nix`
|
||||||
> mountpoint.
|
> mountpoint.
|
||||||
|
|
||||||
|
|
|
@ -146,65 +146,65 @@ three kinds of patterns:
|
||||||
|
|
||||||
- If a pattern is a single identifier, then the function matches any
|
- If a pattern is a single identifier, then the function matches any
|
||||||
argument. Example:
|
argument. Example:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
let negate = x: !x;
|
let negate = x: !x;
|
||||||
concat = x: y: x + y;
|
concat = x: y: x + y;
|
||||||
in if negate true then concat "foo" "bar" else ""
|
in if negate true then concat "foo" "bar" else ""
|
||||||
```
|
```
|
||||||
|
|
||||||
Note that `concat` is a function that takes one argument and returns
|
Note that `concat` is a function that takes one argument and returns
|
||||||
a function that takes another argument. This allows partial
|
a function that takes another argument. This allows partial
|
||||||
parameterisation (i.e., only filling some of the arguments of a
|
parameterisation (i.e., only filling some of the arguments of a
|
||||||
function); e.g.,
|
function); e.g.,
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
map (concat "foo") [ "bar" "bla" "abc" ]
|
map (concat "foo") [ "bar" "bla" "abc" ]
|
||||||
```
|
```
|
||||||
|
|
||||||
evaluates to `[ "foobar" "foobla" "fooabc" ]`.
|
evaluates to `[ "foobar" "foobla" "fooabc" ]`.
|
||||||
|
|
||||||
- A *set pattern* of the form `{ name1, name2, …, nameN }` matches a
|
- A *set pattern* of the form `{ name1, name2, …, nameN }` matches a
|
||||||
set containing the listed attributes, and binds the values of those
|
set containing the listed attributes, and binds the values of those
|
||||||
attributes to variables in the function body. For example, the
|
attributes to variables in the function body. For example, the
|
||||||
function
|
function
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ x, y, z }: z + y + x
|
{ x, y, z }: z + y + x
|
||||||
```
|
```
|
||||||
|
|
||||||
can only be called with a set containing exactly the attributes `x`,
|
can only be called with a set containing exactly the attributes `x`,
|
||||||
`y` and `z`. No other attributes are allowed. If you want to allow
|
`y` and `z`. No other attributes are allowed. If you want to allow
|
||||||
additional arguments, you can use an ellipsis (`...`):
|
additional arguments, you can use an ellipsis (`...`):
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ x, y, z, ... }: z + y + x
|
{ x, y, z, ... }: z + y + x
|
||||||
```
|
```
|
||||||
|
|
||||||
This works on any set that contains at least the three named
|
This works on any set that contains at least the three named
|
||||||
attributes.
|
attributes.
|
||||||
|
|
||||||
It is possible to provide *default values* for attributes, in
|
It is possible to provide *default values* for attributes, in
|
||||||
which case they are allowed to be missing. A default value is
|
which case they are allowed to be missing. A default value is
|
||||||
specified by writing `name ? e`, where *e* is an arbitrary
|
specified by writing `name ? e`, where *e* is an arbitrary
|
||||||
expression. For example,
|
expression. For example,
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ x, y ? "foo", z ? "bar" }: z + y + x
|
{ x, y ? "foo", z ? "bar" }: z + y + x
|
||||||
```
|
```
|
||||||
|
|
||||||
specifies a function that only requires an attribute named `x`, but
|
specifies a function that only requires an attribute named `x`, but
|
||||||
optionally accepts `y` and `z`.
|
optionally accepts `y` and `z`.
|
||||||
|
|
||||||
- An `@`-pattern provides a means of referring to the whole value
|
- An `@`-pattern provides a means of referring to the whole value
|
||||||
being matched:
|
being matched:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
args@{ x, y, z, ... }: z + y + x + args.a
|
args@{ x, y, z, ... }: z + y + x + args.a
|
||||||
```
|
```
|
||||||
|
|
||||||
but can also be written as:
|
but can also be written as:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ x, y, z, ... } @ args: z + y + x + args.a
|
{ x, y, z, ... } @ args: z + y + x + args.a
|
||||||
```
|
```
|
||||||
|
|
|
@ -24,22 +24,22 @@ the attributes of which specify the inputs of the build.
|
||||||
|
|
||||||
- Every attribute is passed as an environment variable to the builder.
|
- Every attribute is passed as an environment variable to the builder.
|
||||||
Attribute values are translated to environment variables as follows:
|
Attribute values are translated to environment variables as follows:
|
||||||
|
|
||||||
- Strings and numbers are just passed verbatim.
|
- Strings and numbers are just passed verbatim.
|
||||||
|
|
||||||
- A *path* (e.g., `../foo/sources.tar`) causes the referenced file
|
- A *path* (e.g., `../foo/sources.tar`) causes the referenced file
|
||||||
to be copied to the store; its location in the store is put in
|
to be copied to the store; its location in the store is put in
|
||||||
the environment variable. The idea is that all sources should
|
the environment variable. The idea is that all sources should
|
||||||
reside in the Nix store, since all inputs to a derivation should
|
reside in the Nix store, since all inputs to a derivation should
|
||||||
reside in the Nix store.
|
reside in the Nix store.
|
||||||
|
|
||||||
- A *derivation* causes that derivation to be built prior to the
|
- A *derivation* causes that derivation to be built prior to the
|
||||||
present derivation; its default output path is put in the
|
present derivation; its default output path is put in the
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
- Lists of the previous types are also allowed. They are simply
|
- Lists of the previous types are also allowed. They are simply
|
||||||
concatenated, separated by spaces.
|
concatenated, separated by spaces.
|
||||||
|
|
||||||
- `true` is passed as the string `1`, `false` and `null` are
|
- `true` is passed as the string `1`, `false` and `null` are
|
||||||
passed as an empty string.
|
passed as an empty string.
|
||||||
|
|
||||||
|
@ -56,36 +56,36 @@ the attributes of which specify the inputs of the build.
|
||||||
library doesn’t need the header files and documentation at runtime,
|
library doesn’t need the header files and documentation at runtime,
|
||||||
and it doesn’t need the documentation at build time. Thus, the
|
and it doesn’t need the documentation at build time. Thus, the
|
||||||
library package could specify:
|
library package could specify:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
outputs = [ "lib" "headers" "doc" ];
|
outputs = [ "lib" "headers" "doc" ];
|
||||||
```
|
```
|
||||||
|
|
||||||
This will cause Nix to pass environment variables `lib`, `headers`
|
This will cause Nix to pass environment variables `lib`, `headers`
|
||||||
and `doc` to the builder containing the intended store paths of each
|
and `doc` to the builder containing the intended store paths of each
|
||||||
output. The builder would typically do something like
|
output. The builder would typically do something like
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./configure \
|
./configure \
|
||||||
--libdir=$lib/lib \
|
--libdir=$lib/lib \
|
||||||
--includedir=$headers/include \
|
--includedir=$headers/include \
|
||||||
--docdir=$doc/share/doc
|
--docdir=$doc/share/doc
|
||||||
```
|
```
|
||||||
|
|
||||||
for an Autoconf-style package. You can refer to each output of a
|
for an Autoconf-style package. You can refer to each output of a
|
||||||
derivation by selecting it as an attribute, e.g.
|
derivation by selecting it as an attribute, e.g.
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
buildInputs = [ pkg.lib pkg.headers ];
|
buildInputs = [ pkg.lib pkg.headers ];
|
||||||
```
|
```
|
||||||
|
|
||||||
The first element of `outputs` determines the *default output*.
|
The first element of `outputs` determines the *default output*.
|
||||||
Thus, you could also write
|
Thus, you could also write
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
buildInputs = [ pkg pkg.headers ];
|
buildInputs = [ pkg pkg.headers ];
|
||||||
```
|
```
|
||||||
|
|
||||||
since `pkg` is equivalent to `pkg.lib`.
|
since `pkg` is equivalent to `pkg.lib`.
|
||||||
|
|
||||||
The function `mkDerivation` in the Nixpkgs standard environment is a
|
The function `mkDerivation` in the Nixpkgs standard environment is a
|
||||||
|
@ -103,24 +103,24 @@ The builder is executed as follows:
|
||||||
specified above.
|
specified above.
|
||||||
|
|
||||||
- In addition, the following variables are set:
|
- In addition, the following variables are set:
|
||||||
|
|
||||||
- `NIX_BUILD_TOP` contains the path of the temporary directory for
|
- `NIX_BUILD_TOP` contains the path of the temporary directory for
|
||||||
this build.
|
this build.
|
||||||
|
|
||||||
- Also, `TMPDIR`, `TEMPDIR`, `TMP`, `TEMP` are set to point to the
|
- Also, `TMPDIR`, `TEMPDIR`, `TMP`, `TEMP` are set to point to the
|
||||||
temporary directory. This is to prevent the builder from
|
temporary directory. This is to prevent the builder from
|
||||||
accidentally writing temporary files anywhere else. Doing so
|
accidentally writing temporary files anywhere else. Doing so
|
||||||
might cause interference by other processes.
|
might cause interference by other processes.
|
||||||
|
|
||||||
- `PATH` is set to `/path-not-set` to prevent shells from
|
- `PATH` is set to `/path-not-set` to prevent shells from
|
||||||
initialising it to their built-in default value.
|
initialising it to their built-in default value.
|
||||||
|
|
||||||
- `HOME` is set to `/homeless-shelter` to prevent programs from
|
- `HOME` is set to `/homeless-shelter` to prevent programs from
|
||||||
using `/etc/passwd` or the like to find the user's home
|
using `/etc/passwd` or the like to find the user's home
|
||||||
directory, which could cause impurity. Usually, when `HOME` is
|
directory, which could cause impurity. Usually, when `HOME` is
|
||||||
set, it is used as the location of the home directory, even if
|
set, it is used as the location of the home directory, even if
|
||||||
it points to a non-existent path.
|
it points to a non-existent path.
|
||||||
|
|
||||||
- `NIX_STORE` is set to the path of the top-level Nix store
|
- `NIX_STORE` is set to the path of the top-level Nix store
|
||||||
directory (typically, `/nix/store`).
|
directory (typically, `/nix/store`).
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ The builder is executed as follows:
|
||||||
is set to `true` for the dervation. A detailed explanation of this
|
is set to `true` for the dervation. A detailed explanation of this
|
||||||
behavior can be found in the
|
behavior can be found in the
|
||||||
[section about structured attrs](./advanced-attributes.md#adv-attr-structuredAttrs).
|
[section about structured attrs](./advanced-attributes.md#adv-attr-structuredAttrs).
|
||||||
|
|
||||||
- For each output declared in `outputs`, the corresponding
|
- For each output declared in `outputs`, the corresponding
|
||||||
environment variable is set to point to the intended path in the
|
environment variable is set to point to the intended path in the
|
||||||
Nix store for that output. Each output path is a concatenation
|
Nix store for that output. Each output path is a concatenation
|
||||||
|
|
|
@ -161,4 +161,3 @@ All comparison operators are implemented in terms of `<`, and the following equi
|
||||||
Equivalent to `!`*b1* `||` *b2*.
|
Equivalent to `!`*b1* `||` *b2*.
|
||||||
|
|
||||||
[Logical implication]: #logical-implication
|
[Logical implication]: #logical-implication
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ $ nix-channel --update
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> On NixOS, you’re automatically subscribed to a NixOS channel
|
> On NixOS, you’re automatically subscribed to a NixOS channel
|
||||||
> corresponding to your NixOS major release (e.g.
|
> corresponding to your NixOS major release (e.g.
|
||||||
> <http://nixos.org/channels/nixos-21.11>). A NixOS channel is identical
|
> <http://nixos.org/channels/nixos-21.11>). A NixOS channel is identical
|
||||||
|
@ -120,7 +120,7 @@ will install the package called `subversion` from `nixpkgs` channel (which is, o
|
||||||
[Subversion version management system](http://subversion.tigris.org/)).
|
[Subversion version management system](http://subversion.tigris.org/)).
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> When you ask Nix to install a package, it will first try to get it in
|
> When you ask Nix to install a package, it will first try to get it in
|
||||||
> pre-compiled form from a *binary cache*. By default, Nix will use the
|
> pre-compiled form from a *binary cache*. By default, Nix will use the
|
||||||
> binary cache <https://cache.nixos.org>; it contains binaries for most
|
> binary cache <https://cache.nixos.org>; it contains binaries for most
|
||||||
|
|
|
@ -16,7 +16,7 @@ it will fall back to using the binary cache substituter, and then to
|
||||||
building from source.
|
building from source.
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> The SSH substituter currently does not allow you to enter an SSH
|
> The SSH substituter currently does not allow you to enter an SSH
|
||||||
> passphrase interactively. Therefore, you should use `ssh-add` to load
|
> passphrase interactively. Therefore, you should use `ssh-add` to load
|
||||||
> the decrypted private key into `ssh-agent`.
|
> the decrypted private key into `ssh-agent`.
|
||||||
|
|
|
@ -1,67 +1,67 @@
|
||||||
# Release 0.10 (2006-10-06)
|
# Release 0.10 (2006-10-06)
|
||||||
|
|
||||||
> **Note**
|
> **Note**
|
||||||
>
|
>
|
||||||
> This version of Nix uses Berkeley DB 4.4 instead of 4.3. The database
|
> This version of Nix uses Berkeley DB 4.4 instead of 4.3. The database
|
||||||
> is upgraded automatically, but you should be careful not to use old
|
> is upgraded automatically, but you should be careful not to use old
|
||||||
> versions of Nix that still use Berkeley DB 4.3. In particular, if you
|
> versions of Nix that still use Berkeley DB 4.3. In particular, if you
|
||||||
> use a Nix installed through Nix, you should run
|
> use a Nix installed through Nix, you should run
|
||||||
>
|
>
|
||||||
> $ nix-store --clear-substitutes
|
> $ nix-store --clear-substitutes
|
||||||
>
|
>
|
||||||
> first.
|
> first.
|
||||||
|
|
||||||
> **Warning**
|
> **Warning**
|
||||||
>
|
>
|
||||||
> Also, the database schema has changed slighted to fix a performance
|
> Also, the database schema has changed slighted to fix a performance
|
||||||
> issue (see below). When you run any Nix 0.10 command for the first
|
> issue (see below). When you run any Nix 0.10 command for the first
|
||||||
> time, the database will be upgraded automatically. This is
|
> time, the database will be upgraded automatically. This is
|
||||||
> irreversible.
|
> irreversible.
|
||||||
|
|
||||||
- `nix-env` usability improvements:
|
- `nix-env` usability improvements:
|
||||||
|
|
||||||
- An option `--compare-versions` (or `-c`) has been added to
|
- An option `--compare-versions` (or `-c`) has been added to
|
||||||
`nix-env
|
`nix-env
|
||||||
--query` to allow you to compare installed versions of packages
|
--query` to allow you to compare installed versions of packages
|
||||||
to available versions, or vice versa. An easy way to see if you
|
to available versions, or vice versa. An easy way to see if you
|
||||||
are up to date with what’s in your subscribed channels is
|
are up to date with what’s in your subscribed channels is
|
||||||
`nix-env -qc \*`.
|
`nix-env -qc \*`.
|
||||||
|
|
||||||
- `nix-env --query` now takes as arguments a list of package names
|
- `nix-env --query` now takes as arguments a list of package names
|
||||||
about which to show information, just like `--install`, etc.:
|
about which to show information, just like `--install`, etc.:
|
||||||
for example, `nix-env -q gcc`. Note that to show all
|
for example, `nix-env -q gcc`. Note that to show all
|
||||||
derivations, you need to specify `\*`.
|
derivations, you need to specify `\*`.
|
||||||
|
|
||||||
- `nix-env -i
|
- `nix-env -i
|
||||||
pkgname` will now install the highest available version of
|
pkgname` will now install the highest available version of
|
||||||
*pkgname*, rather than installing all available versions (which
|
*pkgname*, rather than installing all available versions (which
|
||||||
would probably give collisions) (`NIX-31`).
|
would probably give collisions) (`NIX-31`).
|
||||||
|
|
||||||
- `nix-env (-i|-u) --dry-run` now shows exactly which missing
|
- `nix-env (-i|-u) --dry-run` now shows exactly which missing
|
||||||
paths will be built or substituted.
|
paths will be built or substituted.
|
||||||
|
|
||||||
- `nix-env -qa --description` shows human-readable descriptions of
|
- `nix-env -qa --description` shows human-readable descriptions of
|
||||||
packages, provided that they have a `meta.description` attribute
|
packages, provided that they have a `meta.description` attribute
|
||||||
(which most packages in Nixpkgs don’t have yet).
|
(which most packages in Nixpkgs don’t have yet).
|
||||||
|
|
||||||
- New language features:
|
- New language features:
|
||||||
|
|
||||||
- Reference scanning (which happens after each build) is much
|
- Reference scanning (which happens after each build) is much
|
||||||
faster and takes a constant amount of memory.
|
faster and takes a constant amount of memory.
|
||||||
|
|
||||||
- String interpolation. Expressions like
|
- String interpolation. Expressions like
|
||||||
|
|
||||||
"--with-freetype2-library=" + freetype + "/lib"
|
"--with-freetype2-library=" + freetype + "/lib"
|
||||||
|
|
||||||
can now be written as
|
can now be written as
|
||||||
|
|
||||||
"--with-freetype2-library=${freetype}/lib"
|
"--with-freetype2-library=${freetype}/lib"
|
||||||
|
|
||||||
You can write arbitrary expressions within `${...}`, not just
|
You can write arbitrary expressions within `${...}`, not just
|
||||||
identifiers.
|
identifiers.
|
||||||
|
|
||||||
- Multi-line string literals.
|
- Multi-line string literals.
|
||||||
|
|
||||||
- String concatenations can now involve derivations, as in the
|
- String concatenations can now involve derivations, as in the
|
||||||
example `"--with-freetype2-library="
|
example `"--with-freetype2-library="
|
||||||
+ freetype + "/lib"`. This was not previously possible because
|
+ freetype + "/lib"`. This was not previously possible because
|
||||||
|
@ -69,17 +69,17 @@
|
||||||
dependent on `freetype`. The evaluator now properly propagates
|
dependent on `freetype`. The evaluator now properly propagates
|
||||||
this information. Consequently, the subpath operator (`~`) has
|
this information. Consequently, the subpath operator (`~`) has
|
||||||
been deprecated.
|
been deprecated.
|
||||||
|
|
||||||
- Default values of function arguments can now refer to other
|
- Default values of function arguments can now refer to other
|
||||||
function arguments; that is, all arguments are in scope in the
|
function arguments; that is, all arguments are in scope in the
|
||||||
default values (`NIX-45`).
|
default values (`NIX-45`).
|
||||||
|
|
||||||
- Lots of new built-in primitives, such as functions for list
|
- Lots of new built-in primitives, such as functions for list
|
||||||
manipulation and integer arithmetic. See the manual for a
|
manipulation and integer arithmetic. See the manual for a
|
||||||
complete list. All primops are now available in the set
|
complete list. All primops are now available in the set
|
||||||
`builtins`, allowing one to test for the availability of primop
|
`builtins`, allowing one to test for the availability of primop
|
||||||
in a backwards-compatible way.
|
in a backwards-compatible way.
|
||||||
|
|
||||||
- Real let-expressions: `let x = ...;
|
- Real let-expressions: `let x = ...;
|
||||||
... z = ...; in ...`.
|
... z = ...; in ...`.
|
||||||
|
|
||||||
|
@ -89,15 +89,15 @@
|
||||||
your machine and you want to copy it somewhere else.
|
your machine and you want to copy it somewhere else.
|
||||||
|
|
||||||
- XML support:
|
- XML support:
|
||||||
|
|
||||||
- `nix-env -q --xml` prints the installed or available packages in
|
- `nix-env -q --xml` prints the installed or available packages in
|
||||||
an XML representation for easy processing by other tools.
|
an XML representation for easy processing by other tools.
|
||||||
|
|
||||||
- `nix-instantiate --eval-only
|
- `nix-instantiate --eval-only
|
||||||
--xml` prints an XML representation of the resulting term. (The
|
--xml` prints an XML representation of the resulting term. (The
|
||||||
new flag `--strict` forces ‘deep’ evaluation of the result,
|
new flag `--strict` forces ‘deep’ evaluation of the result,
|
||||||
i.e., list elements and attributes are evaluated recursively.)
|
i.e., list elements and attributes are evaluated recursively.)
|
||||||
|
|
||||||
- In Nix expressions, the primop `builtins.toXML` converts a term
|
- In Nix expressions, the primop `builtins.toXML` converts a term
|
||||||
to an XML representation. This is primarily useful for passing
|
to an XML representation. This is primarily useful for passing
|
||||||
structured information to builders.
|
structured information to builders.
|
||||||
|
@ -133,21 +133,21 @@
|
||||||
something other than `result`.
|
something other than `result`.
|
||||||
|
|
||||||
- Platform support:
|
- Platform support:
|
||||||
|
|
||||||
- Support for 64-bit platforms, provided a [suitably patched ATerm
|
- Support for 64-bit platforms, provided a [suitably patched ATerm
|
||||||
library](http://bugzilla.sen.cwi.nl:8080/show_bug.cgi?id=606) is
|
library](http://bugzilla.sen.cwi.nl:8080/show_bug.cgi?id=606) is
|
||||||
used. Also, files larger than 2 GiB are now supported.
|
used. Also, files larger than 2 GiB are now supported.
|
||||||
|
|
||||||
- Added support for Cygwin (Windows, `i686-cygwin`), Mac OS X on
|
- Added support for Cygwin (Windows, `i686-cygwin`), Mac OS X on
|
||||||
Intel (`i686-darwin`) and Linux on PowerPC (`powerpc-linux`).
|
Intel (`i686-darwin`) and Linux on PowerPC (`powerpc-linux`).
|
||||||
|
|
||||||
- Users of SMP and multicore machines will appreciate that the
|
- Users of SMP and multicore machines will appreciate that the
|
||||||
number of builds to be performed in parallel can now be
|
number of builds to be performed in parallel can now be
|
||||||
specified in the configuration file in the `build-max-jobs`
|
specified in the configuration file in the `build-max-jobs`
|
||||||
setting.
|
setting.
|
||||||
|
|
||||||
- Garbage collector improvements:
|
- Garbage collector improvements:
|
||||||
|
|
||||||
- Open files (such as running programs) are now used as roots of
|
- Open files (such as running programs) are now used as roots of
|
||||||
the garbage collector. This prevents programs that have been
|
the garbage collector. This prevents programs that have been
|
||||||
uninstalled from being garbage collected while they are still
|
uninstalled from being garbage collected while they are still
|
||||||
|
@ -155,17 +155,17 @@
|
||||||
(`find-runtime-roots.pl`) is inherently system-specific, but it
|
(`find-runtime-roots.pl`) is inherently system-specific, but it
|
||||||
should work on Linux and on all platforms that have the `lsof`
|
should work on Linux and on all platforms that have the `lsof`
|
||||||
utility.
|
utility.
|
||||||
|
|
||||||
- `nix-store --gc` (a.k.a. `nix-collect-garbage`) prints out the
|
- `nix-store --gc` (a.k.a. `nix-collect-garbage`) prints out the
|
||||||
number of bytes freed on standard output. `nix-store
|
number of bytes freed on standard output. `nix-store
|
||||||
--gc --print-dead` shows how many bytes would be freed by an
|
--gc --print-dead` shows how many bytes would be freed by an
|
||||||
actual garbage collection.
|
actual garbage collection.
|
||||||
|
|
||||||
- `nix-collect-garbage -d` removes all old generations of *all*
|
- `nix-collect-garbage -d` removes all old generations of *all*
|
||||||
profiles before calling the actual garbage collector (`nix-store
|
profiles before calling the actual garbage collector (`nix-store
|
||||||
--gc`). This is an easy way to get rid of all old packages in
|
--gc`). This is an easy way to get rid of all old packages in
|
||||||
the Nix store.
|
the Nix store.
|
||||||
|
|
||||||
- `nix-store` now has an operation `--delete` to delete specific
|
- `nix-store` now has an operation `--delete` to delete specific
|
||||||
paths from the Nix store. It won’t delete reachable
|
paths from the Nix store. It won’t delete reachable
|
||||||
(non-garbage) paths unless `--ignore-liveness` is specified.
|
(non-garbage) paths unless `--ignore-liveness` is specified.
|
||||||
|
@ -192,13 +192,13 @@
|
||||||
memoisation of path hashing.
|
memoisation of path hashing.
|
||||||
|
|
||||||
- Lots of bug fixes, notably:
|
- Lots of bug fixes, notably:
|
||||||
|
|
||||||
- Make sure that the garbage collector can run successfully when
|
- Make sure that the garbage collector can run successfully when
|
||||||
the disk is full (`NIX-18`).
|
the disk is full (`NIX-18`).
|
||||||
|
|
||||||
- `nix-env` now locks the profile to prevent races between
|
- `nix-env` now locks the profile to prevent races between
|
||||||
concurrent `nix-env` operations on the same profile (`NIX-7`).
|
concurrent `nix-env` operations on the same profile (`NIX-7`).
|
||||||
|
|
||||||
- Removed misleading messages from `nix-env -i` (e.g.,
|
- Removed misleading messages from `nix-env -i` (e.g.,
|
||||||
``installing
|
``installing
|
||||||
`foo'`` followed by ``uninstalling
|
`foo'`` followed by ``uninstalling
|
||||||
|
|
|
@ -50,7 +50,7 @@ on Nix. Here is an (incomplete) list:
|
||||||
multiple packages with the same name, then pick the package with the
|
multiple packages with the same name, then pick the package with the
|
||||||
highest priority, and only use the version if there are multiple
|
highest priority, and only use the version if there are multiple
|
||||||
packages with the same priority.
|
packages with the same priority.
|
||||||
|
|
||||||
This makes it possible to mark specific versions/variant in Nixpkgs
|
This makes it possible to mark specific versions/variant in Nixpkgs
|
||||||
more or less desirable than others. A typical example would be a
|
more or less desirable than others. A typical example would be a
|
||||||
beta version of some package (e.g., `gcc-4.2.0rc1`) which should not
|
beta version of some package (e.g., `gcc-4.2.0rc1`) which should not
|
||||||
|
@ -62,14 +62,14 @@ on Nix. Here is an (incomplete) list:
|
||||||
be modified. There are several attributes that can be usefully
|
be modified. There are several attributes that can be usefully
|
||||||
modified, because they affect the behaviour of `nix-env` or the user
|
modified, because they affect the behaviour of `nix-env` or the user
|
||||||
environment build script:
|
environment build script:
|
||||||
|
|
||||||
- `meta.priority` can be changed to resolve filename clashes (see
|
- `meta.priority` can be changed to resolve filename clashes (see
|
||||||
above).
|
above).
|
||||||
|
|
||||||
- `meta.keep` can be set to `true` to prevent the package from
|
- `meta.keep` can be set to `true` to prevent the package from
|
||||||
being upgraded or replaced. Useful if you want to hang on to an
|
being upgraded or replaced. Useful if you want to hang on to an
|
||||||
older version of a package.
|
older version of a package.
|
||||||
|
|
||||||
- `meta.active` can be set to `false` to “disable” the package.
|
- `meta.active` can be set to `false` to “disable” the package.
|
||||||
That is, no symlinks will be generated to the files of the
|
That is, no symlinks will be generated to the files of the
|
||||||
package, but it remains part of the profile (so it won’t be
|
package, but it remains part of the profile (so it won’t be
|
||||||
|
|
|
@ -7,23 +7,23 @@
|
||||||
Nix process crashes; no write access is needed for read-only
|
Nix process crashes; no write access is needed for read-only
|
||||||
operations; no more running out of Berkeley DB locks on certain
|
operations; no more running out of Berkeley DB locks on certain
|
||||||
operations.
|
operations.
|
||||||
|
|
||||||
You still need to compile Nix with Berkeley DB support if you want
|
You still need to compile Nix with Berkeley DB support if you want
|
||||||
Nix to automatically convert your old Nix store to the new schema.
|
Nix to automatically convert your old Nix store to the new schema.
|
||||||
If you don’t need this, you can build Nix with the `configure`
|
If you don’t need this, you can build Nix with the `configure`
|
||||||
option `--disable-old-db-compat`.
|
option `--disable-old-db-compat`.
|
||||||
|
|
||||||
After the automatic conversion to the new schema, you can delete the
|
After the automatic conversion to the new schema, you can delete the
|
||||||
old Berkeley DB files:
|
old Berkeley DB files:
|
||||||
|
|
||||||
$ cd /nix/var/nix/db
|
$ cd /nix/var/nix/db
|
||||||
$ rm __db* log.* derivers references referrers reserved validpaths DB_CONFIG
|
$ rm __db* log.* derivers references referrers reserved validpaths DB_CONFIG
|
||||||
|
|
||||||
The new metadata is stored in the directories `/nix/var/nix/db/info`
|
The new metadata is stored in the directories `/nix/var/nix/db/info`
|
||||||
and `/nix/var/nix/db/referrer`. Though the metadata is stored in
|
and `/nix/var/nix/db/referrer`. Though the metadata is stored in
|
||||||
human-readable plain-text files, they are not intended to be
|
human-readable plain-text files, they are not intended to be
|
||||||
human-editable, as Nix is rather strict about the format.
|
human-editable, as Nix is rather strict about the format.
|
||||||
|
|
||||||
The new storage schema may or may not require less disk space than
|
The new storage schema may or may not require less disk space than
|
||||||
the Berkeley DB environment, mostly depending on the cluster size of
|
the Berkeley DB environment, mostly depending on the cluster size of
|
||||||
your file system. With 1 KiB clusters (which seems to be the `ext3`
|
your file system. With 1 KiB clusters (which seems to be the `ext3`
|
||||||
|
@ -50,11 +50,11 @@
|
||||||
last access time. This allows non-recently used stuff to be deleted.
|
last access time. This allows non-recently used stuff to be deleted.
|
||||||
The option `--max-atime time` specifies an upper limit to the last
|
The option `--max-atime time` specifies an upper limit to the last
|
||||||
accessed time of paths that may be deleted. For instance,
|
accessed time of paths that may be deleted. For instance,
|
||||||
|
|
||||||
```
|
```
|
||||||
$ nix-store --gc -v --max-atime $(date +%s -d "2 months ago")
|
$ nix-store --gc -v --max-atime $(date +%s -d "2 months ago")
|
||||||
```
|
```
|
||||||
|
|
||||||
deletes everything that hasn’t been accessed in two months.
|
deletes everything that hasn’t been accessed in two months.
|
||||||
|
|
||||||
- `nix-env` now uses optimistic profile locking when performing an
|
- `nix-env` now uses optimistic profile locking when performing an
|
||||||
|
@ -73,7 +73,7 @@
|
||||||
now always shown by `nix-env`, `nix-store -r` and `nix-build`. The
|
now always shown by `nix-env`, `nix-store -r` and `nix-build`. The
|
||||||
total download size of substitutable paths is now also shown. For
|
total download size of substitutable paths is now also shown. For
|
||||||
instance, a build will show something like
|
instance, a build will show something like
|
||||||
|
|
||||||
the following derivations will be built:
|
the following derivations will be built:
|
||||||
/nix/store/129sbxnk5n466zg6r1qmq1xjv9zymyy7-activate-configuration.sh.drv
|
/nix/store/129sbxnk5n466zg6r1qmq1xjv9zymyy7-activate-configuration.sh.drv
|
||||||
/nix/store/7mzy971rdm8l566ch8hgxaf89x7lr7ik-upstart-jobs.drv
|
/nix/store/7mzy971rdm8l566ch8hgxaf89x7lr7ik-upstart-jobs.drv
|
||||||
|
@ -84,24 +84,24 @@
|
||||||
...
|
...
|
||||||
|
|
||||||
- Language features:
|
- Language features:
|
||||||
|
|
||||||
- @-patterns as in Haskell. For instance, in a function definition
|
- @-patterns as in Haskell. For instance, in a function definition
|
||||||
|
|
||||||
f = args @ {x, y, z}: ...;
|
f = args @ {x, y, z}: ...;
|
||||||
|
|
||||||
`args` refers to the argument as a whole, which is further
|
`args` refers to the argument as a whole, which is further
|
||||||
pattern-matched against the attribute set pattern `{x, y, z}`.
|
pattern-matched against the attribute set pattern `{x, y, z}`.
|
||||||
|
|
||||||
- “`...`” (ellipsis) patterns. An attribute set pattern can now
|
- “`...`” (ellipsis) patterns. An attribute set pattern can now
|
||||||
say `...` at the end of the attribute name list to specify that
|
say `...` at the end of the attribute name list to specify that
|
||||||
the function takes *at least* the listed attributes, while
|
the function takes *at least* the listed attributes, while
|
||||||
ignoring additional attributes. For instance,
|
ignoring additional attributes. For instance,
|
||||||
|
|
||||||
{stdenv, fetchurl, fuse, ...}: ...
|
{stdenv, fetchurl, fuse, ...}: ...
|
||||||
|
|
||||||
defines a function that accepts any attribute set that includes
|
defines a function that accepts any attribute set that includes
|
||||||
at least the three listed attributes.
|
at least the three listed attributes.
|
||||||
|
|
||||||
- New primops: `builtins.parseDrvName` (split a package name
|
- New primops: `builtins.parseDrvName` (split a package name
|
||||||
string like `"nix-0.12pre12876"` into its name and version
|
string like `"nix-0.12pre12876"` into its name and version
|
||||||
components, e.g. `"nix"` and `"0.12pre12876"`),
|
components, e.g. `"nix"` and `"0.12pre12876"`),
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
This is primarily a bug fix release. It has some new features:
|
This is primarily a bug fix release. It has some new features:
|
||||||
|
|
||||||
- Syntactic sugar for writing nested attribute sets. Instead of
|
- Syntactic sugar for writing nested attribute sets. Instead of
|
||||||
|
|
||||||
{
|
{
|
||||||
foo = {
|
foo = {
|
||||||
bar = 123;
|
bar = 123;
|
||||||
|
@ -11,15 +11,15 @@ This is primarily a bug fix release. It has some new features:
|
||||||
};
|
};
|
||||||
a = { b = { c = "d"; }; };
|
a = { b = { c = "d"; }; };
|
||||||
}
|
}
|
||||||
|
|
||||||
you can write
|
you can write
|
||||||
|
|
||||||
{
|
{
|
||||||
foo.bar = 123;
|
foo.bar = 123;
|
||||||
foo.xyzzy = true;
|
foo.xyzzy = true;
|
||||||
a.b.c = "d";
|
a.b.c = "d";
|
||||||
}
|
}
|
||||||
|
|
||||||
This is useful, for instance, in NixOS configuration files.
|
This is useful, for instance, in NixOS configuration files.
|
||||||
|
|
||||||
- Support for Nix channels generated by Hydra, the Nix-based
|
- Support for Nix channels generated by Hydra, the Nix-based
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
# Release 0.6 (2004-11-14)
|
# Release 0.6 (2004-11-14)
|
||||||
|
|
||||||
- Rewrite of the normalisation engine.
|
- Rewrite of the normalisation engine.
|
||||||
|
|
||||||
- Multiple builds can now be performed in parallel (option `-j`).
|
- Multiple builds can now be performed in parallel (option `-j`).
|
||||||
|
|
||||||
- Distributed builds. Nix can now call a shell script to forward
|
- Distributed builds. Nix can now call a shell script to forward
|
||||||
builds to Nix installations on remote machines, which may or may
|
builds to Nix installations on remote machines, which may or may
|
||||||
not be of the same platform type.
|
not be of the same platform type.
|
||||||
|
|
||||||
- Option `--fallback` allows recovery from broken substitutes.
|
- Option `--fallback` allows recovery from broken substitutes.
|
||||||
|
|
||||||
- Option `--keep-going` causes building of other (unaffected)
|
- Option `--keep-going` causes building of other (unaffected)
|
||||||
derivations to continue if one failed.
|
derivations to continue if one failed.
|
||||||
|
|
||||||
|
@ -28,32 +28,32 @@
|
||||||
- Manual updates.
|
- Manual updates.
|
||||||
|
|
||||||
- `nix-env` changes:
|
- `nix-env` changes:
|
||||||
|
|
||||||
- Derivations for other platforms are filtered out (which can be
|
- Derivations for other platforms are filtered out (which can be
|
||||||
overridden using `--system-filter`).
|
overridden using `--system-filter`).
|
||||||
|
|
||||||
- `--install` by default now uninstall previous derivations with
|
- `--install` by default now uninstall previous derivations with
|
||||||
the same name.
|
the same name.
|
||||||
|
|
||||||
- `--upgrade` allows upgrading to a specific version.
|
- `--upgrade` allows upgrading to a specific version.
|
||||||
|
|
||||||
- New operation `--delete-generations` to remove profile
|
- New operation `--delete-generations` to remove profile
|
||||||
generations (necessary for effective garbage collection).
|
generations (necessary for effective garbage collection).
|
||||||
|
|
||||||
- Nicer output (sorted, columnised).
|
- Nicer output (sorted, columnised).
|
||||||
|
|
||||||
- More sensible verbosity levels all around (builder output is now
|
- More sensible verbosity levels all around (builder output is now
|
||||||
shown always, unless `-Q` is given).
|
shown always, unless `-Q` is given).
|
||||||
|
|
||||||
- Nix expression language changes:
|
- Nix expression language changes:
|
||||||
|
|
||||||
- New language construct: `with
|
- New language construct: `with
|
||||||
E1;
|
E1;
|
||||||
E2` brings all attributes defined in the attribute set *E1* in
|
E2` brings all attributes defined in the attribute set *E1* in
|
||||||
scope in *E2*.
|
scope in *E2*.
|
||||||
|
|
||||||
- Added a `map` function.
|
- Added a `map` function.
|
||||||
|
|
||||||
- Various new operators (e.g., string concatenation).
|
- Various new operators (e.g., string concatenation).
|
||||||
|
|
||||||
- Expression evaluation is much faster.
|
- Expression evaluation is much faster.
|
||||||
|
|
|
@ -39,29 +39,29 @@ Nix 0.8 has the following improvements:
|
||||||
notion of “closure store expressions” is gone (and so is the notion
|
notion of “closure store expressions” is gone (and so is the notion
|
||||||
of “successors”); the file system references of a store path are now
|
of “successors”); the file system references of a store path are now
|
||||||
just stored in the database.
|
just stored in the database.
|
||||||
|
|
||||||
For instance, given any store path, you can query its closure:
|
For instance, given any store path, you can query its closure:
|
||||||
|
|
||||||
$ nix-store -qR $(which firefox)
|
$ nix-store -qR $(which firefox)
|
||||||
... lots of paths ...
|
... lots of paths ...
|
||||||
|
|
||||||
Also, Nix now remembers for each store path the derivation that
|
Also, Nix now remembers for each store path the derivation that
|
||||||
built it (the “deriver”):
|
built it (the “deriver”):
|
||||||
|
|
||||||
$ nix-store -qR $(which firefox)
|
$ nix-store -qR $(which firefox)
|
||||||
/nix/store/4b0jx7vq80l9aqcnkszxhymsf1ffa5jd-firefox-1.0.1.drv
|
/nix/store/4b0jx7vq80l9aqcnkszxhymsf1ffa5jd-firefox-1.0.1.drv
|
||||||
|
|
||||||
So to see the build-time dependencies, you can do
|
So to see the build-time dependencies, you can do
|
||||||
|
|
||||||
$ nix-store -qR $(nix-store -qd $(which firefox))
|
$ nix-store -qR $(nix-store -qd $(which firefox))
|
||||||
|
|
||||||
or, in a nicer format:
|
or, in a nicer format:
|
||||||
|
|
||||||
$ nix-store -q --tree $(nix-store -qd $(which firefox))
|
$ nix-store -q --tree $(nix-store -qd $(which firefox))
|
||||||
|
|
||||||
File system references are also stored in reverse. For instance, you
|
File system references are also stored in reverse. For instance, you
|
||||||
can query all paths that directly or indirectly use a certain Glibc:
|
can query all paths that directly or indirectly use a certain Glibc:
|
||||||
|
|
||||||
$ nix-store -q --referrers-closure \
|
$ nix-store -q --referrers-closure \
|
||||||
/nix/store/8lz9yc6zgmc0vlqmn2ipcpkjlmbi51vv-glibc-2.3.4
|
/nix/store/8lz9yc6zgmc0vlqmn2ipcpkjlmbi51vv-glibc-2.3.4
|
||||||
|
|
||||||
|
@ -92,28 +92,28 @@ Nix 0.8 has the following improvements:
|
||||||
- `nix-channel` has new operations `--list` and `--remove`.
|
- `nix-channel` has new operations `--list` and `--remove`.
|
||||||
|
|
||||||
- New ways of installing components into user environments:
|
- New ways of installing components into user environments:
|
||||||
|
|
||||||
- Copy from another user environment:
|
- Copy from another user environment:
|
||||||
|
|
||||||
$ nix-env -i --from-profile .../other-profile firefox
|
$ nix-env -i --from-profile .../other-profile firefox
|
||||||
|
|
||||||
- Install a store derivation directly (bypassing the Nix
|
- Install a store derivation directly (bypassing the Nix
|
||||||
expression language entirely):
|
expression language entirely):
|
||||||
|
|
||||||
$ nix-env -i /nix/store/z58v41v21xd3...-aterm-2.3.1.drv
|
$ nix-env -i /nix/store/z58v41v21xd3...-aterm-2.3.1.drv
|
||||||
|
|
||||||
(This is used to implement `nix-install-package`, which is
|
(This is used to implement `nix-install-package`, which is
|
||||||
therefore immune to evolution in the Nix expression language.)
|
therefore immune to evolution in the Nix expression language.)
|
||||||
|
|
||||||
- Install an already built store path directly:
|
- Install an already built store path directly:
|
||||||
|
|
||||||
$ nix-env -i /nix/store/hsyj5pbn0d9i...-aterm-2.3.1
|
$ nix-env -i /nix/store/hsyj5pbn0d9i...-aterm-2.3.1
|
||||||
|
|
||||||
- Install the result of a Nix expression specified as a
|
- Install the result of a Nix expression specified as a
|
||||||
command-line argument:
|
command-line argument:
|
||||||
|
|
||||||
$ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper'
|
$ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper'
|
||||||
|
|
||||||
The difference with the normal installation mode is that `-E`
|
The difference with the normal installation mode is that `-E`
|
||||||
does not use the `name` attributes of derivations. Therefore,
|
does not use the `name` attributes of derivations. Therefore,
|
||||||
this can be used to disambiguate multiple derivations with the
|
this can be used to disambiguate multiple derivations with the
|
||||||
|
@ -127,7 +127,7 @@ Nix 0.8 has the following improvements:
|
||||||
- Implemented a concurrent garbage collector. It is now always safe to
|
- Implemented a concurrent garbage collector. It is now always safe to
|
||||||
run the garbage collector, even if other Nix operations are
|
run the garbage collector, even if other Nix operations are
|
||||||
happening simultaneously.
|
happening simultaneously.
|
||||||
|
|
||||||
However, there can still be GC races if you use `nix-instantiate`
|
However, there can still be GC races if you use `nix-instantiate`
|
||||||
and `nix-store
|
and `nix-store
|
||||||
--realise` directly to build things. To prevent races, use the
|
--realise` directly to build things. To prevent races, use the
|
||||||
|
@ -147,13 +147,13 @@ Nix 0.8 has the following improvements:
|
||||||
|
|
||||||
- The behaviour of the garbage collector can be changed globally by
|
- The behaviour of the garbage collector can be changed globally by
|
||||||
setting options in `/nix/etc/nix/nix.conf`.
|
setting options in `/nix/etc/nix/nix.conf`.
|
||||||
|
|
||||||
- `gc-keep-derivations` specifies whether deriver links should be
|
- `gc-keep-derivations` specifies whether deriver links should be
|
||||||
followed when searching for live paths.
|
followed when searching for live paths.
|
||||||
|
|
||||||
- `gc-keep-outputs` specifies whether outputs of derivations
|
- `gc-keep-outputs` specifies whether outputs of derivations
|
||||||
should be followed when searching for live paths.
|
should be followed when searching for live paths.
|
||||||
|
|
||||||
- `env-keep-derivations` specifies whether user environments
|
- `env-keep-derivations` specifies whether user environments
|
||||||
should store the paths of derivations when they are added (thus
|
should store the paths of derivations when they are added (thus
|
||||||
keeping the derivations alive).
|
keeping the derivations alive).
|
||||||
|
|
|
@ -18,36 +18,36 @@ first.
|
||||||
derivations can mutually refer to each other (as long as there are
|
derivations can mutually refer to each other (as long as there are
|
||||||
no data dependencies on the `outPath` and `drvPath` attributes
|
no data dependencies on the `outPath` and `drvPath` attributes
|
||||||
computed by `derivation`).
|
computed by `derivation`).
|
||||||
|
|
||||||
For example, the expression `derivation
|
For example, the expression `derivation
|
||||||
attrs` now evaluates to (essentially)
|
attrs` now evaluates to (essentially)
|
||||||
|
|
||||||
attrs // {
|
attrs // {
|
||||||
type = "derivation";
|
type = "derivation";
|
||||||
outPath = derivation! attrs;
|
outPath = derivation! attrs;
|
||||||
drvPath = derivation! attrs;
|
drvPath = derivation! attrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
where `derivation!` is a primop that does the actual derivation
|
where `derivation!` is a primop that does the actual derivation
|
||||||
instantiation (i.e., it does what `derivation` used to do). The
|
instantiation (i.e., it does what `derivation` used to do). The
|
||||||
advantage is that it allows commands such as `nix-env -qa` and
|
advantage is that it allows commands such as `nix-env -qa` and
|
||||||
`nix-env -i` to be much faster since they no longer need to
|
`nix-env -i` to be much faster since they no longer need to
|
||||||
instantiate all derivations, just the `name` attribute.
|
instantiate all derivations, just the `name` attribute.
|
||||||
|
|
||||||
Also, it allows derivations to cyclically reference each other, for
|
Also, it allows derivations to cyclically reference each other, for
|
||||||
example,
|
example,
|
||||||
|
|
||||||
webServer = derivation {
|
webServer = derivation {
|
||||||
...
|
...
|
||||||
hostName = "svn.cs.uu.nl";
|
hostName = "svn.cs.uu.nl";
|
||||||
services = [svnService];
|
services = [svnService];
|
||||||
};
|
};
|
||||||
|
|
||||||
svnService = derivation {
|
svnService = derivation {
|
||||||
...
|
...
|
||||||
hostName = webServer.hostName;
|
hostName = webServer.hostName;
|
||||||
};
|
};
|
||||||
|
|
||||||
Previously, this would yield a black hole (infinite recursion).
|
Previously, this would yield a black hole (infinite recursion).
|
||||||
|
|
||||||
- `nix-build` now defaults to using `./default.nix` if no Nix
|
- `nix-build` now defaults to using `./default.nix` if no Nix
|
||||||
|
|
|
@ -5,26 +5,26 @@ This release has the following improvements:
|
||||||
- On Linux, when doing a chroot build, Nix now uses various namespace
|
- On Linux, when doing a chroot build, Nix now uses various namespace
|
||||||
features provided by the Linux kernel to improve build isolation.
|
features provided by the Linux kernel to improve build isolation.
|
||||||
Namely:
|
Namely:
|
||||||
|
|
||||||
- The private network namespace ensures that builders cannot talk
|
- The private network namespace ensures that builders cannot talk
|
||||||
to the outside world (or vice versa): each build only sees a
|
to the outside world (or vice versa): each build only sees a
|
||||||
private loopback interface. This also means that two concurrent
|
private loopback interface. This also means that two concurrent
|
||||||
builds can listen on the same port (e.g. as part of a test)
|
builds can listen on the same port (e.g. as part of a test)
|
||||||
without conflicting with each other.
|
without conflicting with each other.
|
||||||
|
|
||||||
- The PID namespace causes each build to start as PID 1. Processes
|
- The PID namespace causes each build to start as PID 1. Processes
|
||||||
outside of the chroot are not visible to those on the inside. On
|
outside of the chroot are not visible to those on the inside. On
|
||||||
the other hand, processes inside the chroot *are* visible from
|
the other hand, processes inside the chroot *are* visible from
|
||||||
the outside (though with different PIDs).
|
the outside (though with different PIDs).
|
||||||
|
|
||||||
- The IPC namespace prevents the builder from communicating with
|
- The IPC namespace prevents the builder from communicating with
|
||||||
outside processes using SysV IPC mechanisms (shared memory,
|
outside processes using SysV IPC mechanisms (shared memory,
|
||||||
message queues, semaphores). It also ensures that all IPC
|
message queues, semaphores). It also ensures that all IPC
|
||||||
objects are destroyed when the builder exits.
|
objects are destroyed when the builder exits.
|
||||||
|
|
||||||
- The UTS namespace ensures that builders see a hostname of
|
- The UTS namespace ensures that builders see a hostname of
|
||||||
`localhost` rather than the actual hostname.
|
`localhost` rather than the actual hostname.
|
||||||
|
|
||||||
- The private mount namespace was already used by Nix to ensure
|
- The private mount namespace was already used by Nix to ensure
|
||||||
that the bind-mounts used to set up the chroot are cleaned up
|
that the bind-mounts used to set up the chroot are cleaned up
|
||||||
automatically.
|
automatically.
|
||||||
|
|
|
@ -5,23 +5,23 @@ features:
|
||||||
|
|
||||||
- `nix-prefetch-url` can now download URLs specified in a Nix
|
- `nix-prefetch-url` can now download URLs specified in a Nix
|
||||||
expression. For example,
|
expression. For example,
|
||||||
|
|
||||||
$ nix-prefetch-url -A hello.src
|
$ nix-prefetch-url -A hello.src
|
||||||
|
|
||||||
will prefetch the file specified by the `fetchurl` call in the
|
will prefetch the file specified by the `fetchurl` call in the
|
||||||
attribute `hello.src` from the Nix expression in the current
|
attribute `hello.src` from the Nix expression in the current
|
||||||
directory, and print the cryptographic hash of the resulting file on
|
directory, and print the cryptographic hash of the resulting file on
|
||||||
stdout. This differs from `nix-build -A
|
stdout. This differs from `nix-build -A
|
||||||
hello.src` in that it doesn't verify the hash, and is thus useful
|
hello.src` in that it doesn't verify the hash, and is thus useful
|
||||||
when you’re updating a Nix expression.
|
when you’re updating a Nix expression.
|
||||||
|
|
||||||
You can also prefetch the result of functions that unpack a tarball,
|
You can also prefetch the result of functions that unpack a tarball,
|
||||||
such as `fetchFromGitHub`. For example:
|
such as `fetchFromGitHub`. For example:
|
||||||
|
|
||||||
$ nix-prefetch-url --unpack https://github.com/NixOS/patchelf/archive/0.8.tar.gz
|
$ nix-prefetch-url --unpack https://github.com/NixOS/patchelf/archive/0.8.tar.gz
|
||||||
|
|
||||||
or from a Nix expression:
|
or from a Nix expression:
|
||||||
|
|
||||||
$ nix-prefetch-url -A nix-repl.src
|
$ nix-prefetch-url -A nix-repl.src
|
||||||
|
|
||||||
- The builtin function `<nix/fetchurl.nix>` now supports downloading
|
- The builtin function `<nix/fetchurl.nix>` now supports downloading
|
||||||
|
@ -49,12 +49,12 @@ features:
|
||||||
same derivation and `-K` is given, will make the output of the other
|
same derivation and `-K` is given, will make the output of the other
|
||||||
run available under `store-path-check`. This makes it easier to
|
run available under `store-path-check`. This makes it easier to
|
||||||
investigate the non-determinism using tools like `diffoscope`, e.g.,
|
investigate the non-determinism using tools like `diffoscope`, e.g.,
|
||||||
|
|
||||||
$ nix-build pkgs/stdenv/linux -A stage1.pkgs.zlib --check -K
|
$ nix-build pkgs/stdenv/linux -A stage1.pkgs.zlib --check -K
|
||||||
error: derivation ‘/nix/store/l54i8wlw2265…-zlib-1.2.8.drv’ may not
|
error: derivation ‘/nix/store/l54i8wlw2265…-zlib-1.2.8.drv’ may not
|
||||||
be deterministic: output ‘/nix/store/11a27shh6n2i…-zlib-1.2.8’
|
be deterministic: output ‘/nix/store/11a27shh6n2i…-zlib-1.2.8’
|
||||||
differs from ‘/nix/store/11a27shh6n2i…-zlib-1.2.8-check’
|
differs from ‘/nix/store/11a27shh6n2i…-zlib-1.2.8-check’
|
||||||
|
|
||||||
$ diffoscope /nix/store/11a27shh6n2i…-zlib-1.2.8 /nix/store/11a27shh6n2i…-zlib-1.2.8-check
|
$ diffoscope /nix/store/11a27shh6n2i…-zlib-1.2.8 /nix/store/11a27shh6n2i…-zlib-1.2.8-check
|
||||||
…
|
…
|
||||||
├── lib/libz.a
|
├── lib/libz.a
|
||||||
|
|
|
@ -8,9 +8,9 @@ This release has the following improvements and changes:
|
||||||
binary caches to see if any of them has a pre-built binary of that
|
binary caches to see if any of them has a pre-built binary of that
|
||||||
path. The configuration setting `binary-caches` contains a list of
|
path. The configuration setting `binary-caches` contains a list of
|
||||||
URLs of binary caches. For instance, doing
|
URLs of binary caches. For instance, doing
|
||||||
|
|
||||||
$ nix-env -i thunderbird --option binary-caches http://cache.nixos.org
|
$ nix-env -i thunderbird --option binary-caches http://cache.nixos.org
|
||||||
|
|
||||||
will install Thunderbird and its dependencies, using the available
|
will install Thunderbird and its dependencies, using the available
|
||||||
pre-built binaries in <http://cache.nixos.org>. The main advantage
|
pre-built binaries in <http://cache.nixos.org>. The main advantage
|
||||||
over the old “manifest”-based method of getting pre-built binaries
|
over the old “manifest”-based method of getting pre-built binaries
|
||||||
|
@ -19,12 +19,12 @@ This release has the following improvements and changes:
|
||||||
need to run `nix-pull` to update your manifest. It’s also more
|
need to run `nix-pull` to update your manifest. It’s also more
|
||||||
scalable because you don’t need to redownload a giant manifest file
|
scalable because you don’t need to redownload a giant manifest file
|
||||||
every time.
|
every time.
|
||||||
|
|
||||||
A Nix channel can provide a binary cache URL that will be used
|
A Nix channel can provide a binary cache URL that will be used
|
||||||
automatically if you subscribe to that channel. If you use the
|
automatically if you subscribe to that channel. If you use the
|
||||||
Nixpkgs or NixOS channels (<http://nixos.org/channels>) you
|
Nixpkgs or NixOS channels (<http://nixos.org/channels>) you
|
||||||
automatically get the cache <http://cache.nixos.org>.
|
automatically get the cache <http://cache.nixos.org>.
|
||||||
|
|
||||||
Binary caches are created using `nix-push`. For details on the
|
Binary caches are created using `nix-push`. For details on the
|
||||||
operation and format of binary caches, see the `nix-push` manpage.
|
operation and format of binary caches, see the `nix-push` manpage.
|
||||||
More details are provided in [this nix-dev
|
More details are provided in [this nix-dev
|
||||||
|
@ -33,16 +33,16 @@ This release has the following improvements and changes:
|
||||||
- Multiple output support should now be usable. A derivation can
|
- Multiple output support should now be usable. A derivation can
|
||||||
declare that it wants to produce multiple store paths by saying
|
declare that it wants to produce multiple store paths by saying
|
||||||
something like
|
something like
|
||||||
|
|
||||||
outputs = [ "lib" "headers" "doc" ];
|
outputs = [ "lib" "headers" "doc" ];
|
||||||
|
|
||||||
This will cause Nix to pass the intended store path of each output
|
This will cause Nix to pass the intended store path of each output
|
||||||
to the builder through the environment variables `lib`, `headers`
|
to the builder through the environment variables `lib`, `headers`
|
||||||
and `doc`. Other packages can refer to a specific output by
|
and `doc`. Other packages can refer to a specific output by
|
||||||
referring to `pkg.output`, e.g.
|
referring to `pkg.output`, e.g.
|
||||||
|
|
||||||
buildInputs = [ pkg.lib pkg.headers ];
|
buildInputs = [ pkg.lib pkg.headers ];
|
||||||
|
|
||||||
If you install a package with multiple outputs using `nix-env`, each
|
If you install a package with multiple outputs using `nix-env`, each
|
||||||
output path will be symlinked into the user environment.
|
output path will be symlinked into the user environment.
|
||||||
|
|
||||||
|
@ -60,10 +60,10 @@ This release has the following improvements and changes:
|
||||||
Instead, the recommended way to guard the Nix store against
|
Instead, the recommended way to guard the Nix store against
|
||||||
accidental modification on Linux is to make it a read-only bind
|
accidental modification on Linux is to make it a read-only bind
|
||||||
mount, like this:
|
mount, like this:
|
||||||
|
|
||||||
$ mount --bind /nix/store /nix/store
|
$ mount --bind /nix/store /nix/store
|
||||||
$ mount -o remount,ro,bind /nix/store
|
$ mount -o remount,ro,bind /nix/store
|
||||||
|
|
||||||
Nix will automatically make `/nix/store` writable as needed (using a
|
Nix will automatically make `/nix/store` writable as needed (using a
|
||||||
private mount namespace) to allow modifications.
|
private mount namespace) to allow modifications.
|
||||||
|
|
||||||
|
|
|
@ -25,28 +25,28 @@ features:
|
||||||
declarative package management similar to NixOS’s
|
declarative package management similar to NixOS’s
|
||||||
`environment.systemPackages`. For instance, if you have a
|
`environment.systemPackages`. For instance, if you have a
|
||||||
specification `my-packages.nix` like this:
|
specification `my-packages.nix` like this:
|
||||||
|
|
||||||
with import <nixpkgs> {};
|
with import <nixpkgs> {};
|
||||||
[ thunderbird
|
[ thunderbird
|
||||||
geeqie
|
geeqie
|
||||||
...
|
...
|
||||||
]
|
]
|
||||||
|
|
||||||
then after any change to this file, you can run:
|
then after any change to this file, you can run:
|
||||||
|
|
||||||
$ nix-env -f my-packages.nix -ir
|
$ nix-env -f my-packages.nix -ir
|
||||||
|
|
||||||
to update your profile to match the specification.
|
to update your profile to match the specification.
|
||||||
|
|
||||||
- The ‘`with`’ language construct is now more lazy. It only evaluates
|
- The ‘`with`’ language construct is now more lazy. It only evaluates
|
||||||
its argument if a variable might actually refer to an attribute in
|
its argument if a variable might actually refer to an attribute in
|
||||||
the argument. For instance, this now works:
|
the argument. For instance, this now works:
|
||||||
|
|
||||||
let
|
let
|
||||||
pkgs = with pkgs; { foo = "old"; bar = foo; } // overrides;
|
pkgs = with pkgs; { foo = "old"; bar = foo; } // overrides;
|
||||||
overrides = { foo = "new"; };
|
overrides = { foo = "new"; };
|
||||||
in pkgs.bar
|
in pkgs.bar
|
||||||
|
|
||||||
This evaluates to `"new"`, while previously it gave an “infinite
|
This evaluates to `"new"`, while previously it gave an “infinite
|
||||||
recursion” error.
|
recursion” error.
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ features:
|
||||||
builds a previously built derivation again, and prints an error
|
builds a previously built derivation again, and prints an error
|
||||||
message if the output is not exactly the same. This helps to verify
|
message if the output is not exactly the same. This helps to verify
|
||||||
whether a derivation is truly deterministic. For example:
|
whether a derivation is truly deterministic. For example:
|
||||||
|
|
||||||
$ nix-build '<nixpkgs>' -A patchelf
|
$ nix-build '<nixpkgs>' -A patchelf
|
||||||
…
|
…
|
||||||
$ nix-build '<nixpkgs>' -A patchelf --check
|
$ nix-build '<nixpkgs>' -A patchelf --check
|
||||||
|
@ -43,31 +43,31 @@ features:
|
||||||
'1 + 2'` will print `3`.
|
'1 + 2'` will print `3`.
|
||||||
|
|
||||||
- `nix-shell` improvements:
|
- `nix-shell` improvements:
|
||||||
|
|
||||||
- It has a new flag, `--packages` (or `-p`), that sets up a build
|
- It has a new flag, `--packages` (or `-p`), that sets up a build
|
||||||
environment containing the specified packages from Nixpkgs. For
|
environment containing the specified packages from Nixpkgs. For
|
||||||
example, the command
|
example, the command
|
||||||
|
|
||||||
$ nix-shell -p sqlite xorg.libX11 hello
|
$ nix-shell -p sqlite xorg.libX11 hello
|
||||||
|
|
||||||
will start a shell in which the given packages are present.
|
will start a shell in which the given packages are present.
|
||||||
|
|
||||||
- It now uses `shell.nix` as the default expression, falling back
|
- It now uses `shell.nix` as the default expression, falling back
|
||||||
to `default.nix` if the former doesn’t exist. This makes it
|
to `default.nix` if the former doesn’t exist. This makes it
|
||||||
convenient to have a `shell.nix` in your project to set up a
|
convenient to have a `shell.nix` in your project to set up a
|
||||||
nice development environment.
|
nice development environment.
|
||||||
|
|
||||||
- It evaluates the derivation attribute `shellHook`, if set. Since
|
- It evaluates the derivation attribute `shellHook`, if set. Since
|
||||||
`stdenv` does not normally execute this hook, it allows you to
|
`stdenv` does not normally execute this hook, it allows you to
|
||||||
do `nix-shell`-specific setup.
|
do `nix-shell`-specific setup.
|
||||||
|
|
||||||
- It preserves the user’s timezone setting.
|
- It preserves the user’s timezone setting.
|
||||||
|
|
||||||
- In chroots, Nix now sets up a `/dev` containing only a minimal set
|
- In chroots, Nix now sets up a `/dev` containing only a minimal set
|
||||||
of devices (such as `/dev/null`). Note that it only does this if you
|
of devices (such as `/dev/null`). Note that it only does this if you
|
||||||
*don’t* have `/dev` listed in your `build-chroot-dirs` setting;
|
*don’t* have `/dev` listed in your `build-chroot-dirs` setting;
|
||||||
otherwise, it will bind-mount the `/dev` from outside the chroot.
|
otherwise, it will bind-mount the `/dev` from outside the chroot.
|
||||||
|
|
||||||
Similarly, if you don’t have `/dev/pts` listed in
|
Similarly, if you don’t have `/dev/pts` listed in
|
||||||
`build-chroot-dirs`, Nix will mount a private `devpts` filesystem on
|
`build-chroot-dirs`, Nix will mount a private `devpts` filesystem on
|
||||||
the chroot’s `/dev/pts`.
|
the chroot’s `/dev/pts`.
|
||||||
|
@ -82,7 +82,7 @@ features:
|
||||||
such as attribute sets.
|
such as attribute sets.
|
||||||
|
|
||||||
- The `-A` flag now allows attribute names with dots in them, e.g.
|
- The `-A` flag now allows attribute names with dots in them, e.g.
|
||||||
|
|
||||||
$ nix-instantiate --eval '<nixos>' -A 'config.systemd.units."nscd.service".text'
|
$ nix-instantiate --eval '<nixos>' -A 'config.systemd.units."nscd.service".text'
|
||||||
|
|
||||||
- The `--max-freed` option to `nix-store --gc` now accepts a unit
|
- The `--max-freed` option to `nix-store --gc` now accepts a unit
|
||||||
|
@ -106,7 +106,7 @@ features:
|
||||||
`unsafeGetAttrPos`, that returns the position of an attribute. This
|
`unsafeGetAttrPos`, that returns the position of an attribute. This
|
||||||
is used by Nixpkgs to provide location information in error
|
is used by Nixpkgs to provide location information in error
|
||||||
messages, e.g.
|
messages, e.g.
|
||||||
|
|
||||||
$ nix-build '<nixpkgs>' -A libreoffice --argstr system x86_64-darwin
|
$ nix-build '<nixpkgs>' -A libreoffice --argstr system x86_64-darwin
|
||||||
error: the package ‘libreoffice-4.0.5.2’ in ‘.../applications/office/libreoffice/default.nix:263’
|
error: the package ‘libreoffice-4.0.5.2’ in ‘.../applications/office/libreoffice/default.nix:263’
|
||||||
is not supported on ‘x86_64-darwin’
|
is not supported on ‘x86_64-darwin’
|
||||||
|
@ -116,12 +116,12 @@ features:
|
||||||
|
|
||||||
- The binary tarball installer has been improved. You can now install
|
- The binary tarball installer has been improved. You can now install
|
||||||
Nix by running:
|
Nix by running:
|
||||||
|
|
||||||
$ bash <(curl -L https://nixos.org/nix/install)
|
$ bash <(curl -L https://nixos.org/nix/install)
|
||||||
|
|
||||||
- More evaluation errors include position information. For instance,
|
- More evaluation errors include position information. For instance,
|
||||||
selecting a missing attribute will print something like
|
selecting a missing attribute will print something like
|
||||||
|
|
||||||
error: attribute `nixUnstabl' missing, at /etc/nixos/configurations/misc/eelco/mandark.nix:216:15
|
error: attribute `nixUnstabl' missing, at /etc/nixos/configurations/misc/eelco/mandark.nix:216:15
|
||||||
|
|
||||||
- The command `nix-setuid-helper` is gone.
|
- The command `nix-setuid-helper` is gone.
|
||||||
|
|
|
@ -10,24 +10,24 @@
|
||||||
|
|
||||||
- `nix-env` selectors are now regular expressions. For instance, you
|
- `nix-env` selectors are now regular expressions. For instance, you
|
||||||
can do
|
can do
|
||||||
|
|
||||||
$ nix-env -qa '.*zip.*'
|
$ nix-env -qa '.*zip.*'
|
||||||
|
|
||||||
to query all packages with a name containing `zip`.
|
to query all packages with a name containing `zip`.
|
||||||
|
|
||||||
- `nix-store --read-log` can now fetch remote build logs. If a build
|
- `nix-store --read-log` can now fetch remote build logs. If a build
|
||||||
log is not available locally, then ‘nix-store -l’ will now try to
|
log is not available locally, then ‘nix-store -l’ will now try to
|
||||||
download it from the servers listed in the ‘log-servers’ option in
|
download it from the servers listed in the ‘log-servers’ option in
|
||||||
nix.conf. For instance, if you have the configuration option
|
nix.conf. For instance, if you have the configuration option
|
||||||
|
|
||||||
log-servers = http://hydra.nixos.org/log
|
log-servers = http://hydra.nixos.org/log
|
||||||
|
|
||||||
then it will try to get logs from `http://hydra.nixos.org/log/base
|
then it will try to get logs from `http://hydra.nixos.org/log/base
|
||||||
name of the
|
name of the
|
||||||
store path`. This allows you to do things like:
|
store path`. This allows you to do things like:
|
||||||
|
|
||||||
$ nix-store -l $(which xterm)
|
$ nix-store -l $(which xterm)
|
||||||
|
|
||||||
and get a log even if `xterm` wasn't built locally.
|
and get a log even if `xterm` wasn't built locally.
|
||||||
|
|
||||||
- New builtin functions: `attrValues`, `deepSeq`, `fromJSON`,
|
- New builtin functions: `attrValues`, `deepSeq`, `fromJSON`,
|
||||||
|
|
|
@ -5,17 +5,17 @@ features:
|
||||||
|
|
||||||
- Signed binary cache support. You can enable signature checking by
|
- Signed binary cache support. You can enable signature checking by
|
||||||
adding the following to `nix.conf`:
|
adding the following to `nix.conf`:
|
||||||
|
|
||||||
signed-binary-caches = *
|
signed-binary-caches = *
|
||||||
binary-cache-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
binary-cache-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||||
|
|
||||||
This will prevent Nix from downloading any binary from the cache
|
This will prevent Nix from downloading any binary from the cache
|
||||||
that is not signed by one of the keys listed in
|
that is not signed by one of the keys listed in
|
||||||
`binary-cache-public-keys`.
|
`binary-cache-public-keys`.
|
||||||
|
|
||||||
Signature checking is only supported if you built Nix with the
|
Signature checking is only supported if you built Nix with the
|
||||||
`libsodium` package.
|
`libsodium` package.
|
||||||
|
|
||||||
Note that while Nix has had experimental support for signed binary
|
Note that while Nix has had experimental support for signed binary
|
||||||
caches since version 1.7, this release changes the signature format
|
caches since version 1.7, this release changes the signature format
|
||||||
in a backwards-incompatible way.
|
in a backwards-incompatible way.
|
||||||
|
@ -24,79 +24,79 @@ features:
|
||||||
you can now specify the URL of a tarball containing Nix expressions
|
you can now specify the URL of a tarball containing Nix expressions
|
||||||
(such as Nixpkgs), which will be downloaded and unpacked
|
(such as Nixpkgs), which will be downloaded and unpacked
|
||||||
automatically. For example:
|
automatically. For example:
|
||||||
|
|
||||||
- In `nix-env`:
|
- In `nix-env`:
|
||||||
|
|
||||||
$ nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz -iA firefox
|
$ nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz -iA firefox
|
||||||
|
|
||||||
This installs Firefox from the latest tested and built revision
|
This installs Firefox from the latest tested and built revision
|
||||||
of the NixOS 14.12 channel.
|
of the NixOS 14.12 channel.
|
||||||
|
|
||||||
- In `nix-build` and `nix-shell`:
|
- In `nix-build` and `nix-shell`:
|
||||||
|
|
||||||
$ nix-build https://github.com/NixOS/nixpkgs/archive/master.tar.gz -A hello
|
$ nix-build https://github.com/NixOS/nixpkgs/archive/master.tar.gz -A hello
|
||||||
|
|
||||||
This builds GNU Hello from the latest revision of the Nixpkgs
|
This builds GNU Hello from the latest revision of the Nixpkgs
|
||||||
master branch.
|
master branch.
|
||||||
|
|
||||||
- In the Nix search path (as specified via `NIX_PATH` or `-I`).
|
- In the Nix search path (as specified via `NIX_PATH` or `-I`).
|
||||||
For example, to start a shell containing the Pan package from a
|
For example, to start a shell containing the Pan package from a
|
||||||
specific version of Nixpkgs:
|
specific version of Nixpkgs:
|
||||||
|
|
||||||
$ nix-shell -p pan -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/8a3eea054838b55aca962c3fbde9c83c102b8bf2.tar.gz
|
$ nix-shell -p pan -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/8a3eea054838b55aca962c3fbde9c83c102b8bf2.tar.gz
|
||||||
|
|
||||||
- In `nixos-rebuild` (on NixOS):
|
- In `nixos-rebuild` (on NixOS):
|
||||||
|
|
||||||
$ nixos-rebuild test -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz
|
$ nixos-rebuild test -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz
|
||||||
|
|
||||||
- In Nix expressions, via the new builtin function `fetchTarball`:
|
- In Nix expressions, via the new builtin function `fetchTarball`:
|
||||||
|
|
||||||
with import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz) {}; …
|
with import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-14.12.tar.gz) {}; …
|
||||||
|
|
||||||
(This is not allowed in restricted mode.)
|
(This is not allowed in restricted mode.)
|
||||||
|
|
||||||
- `nix-shell` improvements:
|
- `nix-shell` improvements:
|
||||||
|
|
||||||
- `nix-shell` now has a flag `--run` to execute a command in the
|
- `nix-shell` now has a flag `--run` to execute a command in the
|
||||||
`nix-shell` environment, e.g. `nix-shell --run make`. This is
|
`nix-shell` environment, e.g. `nix-shell --run make`. This is
|
||||||
like the existing `--command` flag, except that it uses a
|
like the existing `--command` flag, except that it uses a
|
||||||
non-interactive shell (ensuring that hitting Ctrl-C won’t drop
|
non-interactive shell (ensuring that hitting Ctrl-C won’t drop
|
||||||
you into the child shell).
|
you into the child shell).
|
||||||
|
|
||||||
- `nix-shell` can now be used as a `#!`-interpreter. This allows
|
- `nix-shell` can now be used as a `#!`-interpreter. This allows
|
||||||
you to write scripts that dynamically fetch their own
|
you to write scripts that dynamically fetch their own
|
||||||
dependencies. For example, here is a Haskell script that, when
|
dependencies. For example, here is a Haskell script that, when
|
||||||
invoked, first downloads GHC and the Haskell packages on which
|
invoked, first downloads GHC and the Haskell packages on which
|
||||||
it depends:
|
it depends:
|
||||||
|
|
||||||
#! /usr/bin/env nix-shell
|
#! /usr/bin/env nix-shell
|
||||||
#! nix-shell -i runghc -p haskellPackages.ghc haskellPackages.HTTP
|
#! nix-shell -i runghc -p haskellPackages.ghc haskellPackages.HTTP
|
||||||
|
|
||||||
import Network.HTTP
|
import Network.HTTP
|
||||||
|
|
||||||
main = do
|
main = do
|
||||||
resp <- Network.HTTP.simpleHTTP (getRequest "http://nixos.org/")
|
resp <- Network.HTTP.simpleHTTP (getRequest "http://nixos.org/")
|
||||||
body <- getResponseBody resp
|
body <- getResponseBody resp
|
||||||
print (take 100 body)
|
print (take 100 body)
|
||||||
|
|
||||||
Of course, the dependencies are cached in the Nix store, so the
|
Of course, the dependencies are cached in the Nix store, so the
|
||||||
second invocation of this script will be much faster.
|
second invocation of this script will be much faster.
|
||||||
|
|
||||||
- Chroot improvements:
|
- Chroot improvements:
|
||||||
|
|
||||||
- Chroot builds are now supported on Mac OS X (using its sandbox
|
- Chroot builds are now supported on Mac OS X (using its sandbox
|
||||||
mechanism).
|
mechanism).
|
||||||
|
|
||||||
- If chroots are enabled, they are now used for all derivations,
|
- If chroots are enabled, they are now used for all derivations,
|
||||||
including fixed-output derivations (such as `fetchurl`). The
|
including fixed-output derivations (such as `fetchurl`). The
|
||||||
latter do have network access, but can no longer access the host
|
latter do have network access, but can no longer access the host
|
||||||
filesystem. If you need the old behaviour, you can set the
|
filesystem. If you need the old behaviour, you can set the
|
||||||
option `build-use-chroot` to `relaxed`.
|
option `build-use-chroot` to `relaxed`.
|
||||||
|
|
||||||
- On Linux, if chroots are enabled, builds are performed in a
|
- On Linux, if chroots are enabled, builds are performed in a
|
||||||
private PID namespace once again. (This functionality was lost
|
private PID namespace once again. (This functionality was lost
|
||||||
in Nix 1.8.)
|
in Nix 1.8.)
|
||||||
|
|
||||||
- Store paths listed in `build-chroot-dirs` are now automatically
|
- Store paths listed in `build-chroot-dirs` are now automatically
|
||||||
expanded to their closure. For instance, if you want
|
expanded to their closure. For instance, if you want
|
||||||
`/nix/store/…-bash/bin/sh` mounted in your chroot as `/bin/sh`,
|
`/nix/store/…-bash/bin/sh` mounted in your chroot as `/bin/sh`,
|
||||||
|
|
|
@ -8,13 +8,13 @@ The following incompatible changes have been made:
|
||||||
It has been superseded by the binary cache substituter mechanism
|
It has been superseded by the binary cache substituter mechanism
|
||||||
since several years. As a result, the following programs have been
|
since several years. As a result, the following programs have been
|
||||||
removed:
|
removed:
|
||||||
|
|
||||||
- `nix-pull`
|
- `nix-pull`
|
||||||
|
|
||||||
- `nix-generate-patches`
|
- `nix-generate-patches`
|
||||||
|
|
||||||
- `bsdiff`
|
- `bsdiff`
|
||||||
|
|
||||||
- `bspatch`
|
- `bspatch`
|
||||||
|
|
||||||
- The “copy from other stores” substituter mechanism
|
- The “copy from other stores” substituter mechanism
|
||||||
|
@ -58,26 +58,26 @@ This release has the following new features:
|
||||||
`nix-build`, `nix-shell -p`, `nix-env -qa`, `nix-instantiate
|
`nix-build`, `nix-shell -p`, `nix-env -qa`, `nix-instantiate
|
||||||
--eval`, `nix-push` and `nix-copy-closure`. It has the following
|
--eval`, `nix-push` and `nix-copy-closure`. It has the following
|
||||||
major features:
|
major features:
|
||||||
|
|
||||||
- Unlike the legacy commands, it has a consistent way to refer to
|
- Unlike the legacy commands, it has a consistent way to refer to
|
||||||
packages and package-like arguments (like store paths). For
|
packages and package-like arguments (like store paths). For
|
||||||
example, the following commands all copy the GNU Hello package
|
example, the following commands all copy the GNU Hello package
|
||||||
to a remote machine:
|
to a remote machine:
|
||||||
|
|
||||||
nix copy --to ssh://machine nixpkgs.hello
|
nix copy --to ssh://machine nixpkgs.hello
|
||||||
|
|
||||||
nix copy --to ssh://machine /nix/store/0i2jd68mp5g6h2sa5k9c85rb80sn8hi9-hello-2.10
|
nix copy --to ssh://machine /nix/store/0i2jd68mp5g6h2sa5k9c85rb80sn8hi9-hello-2.10
|
||||||
|
|
||||||
nix copy --to ssh://machine '(with import <nixpkgs> {}; hello)'
|
nix copy --to ssh://machine '(with import <nixpkgs> {}; hello)'
|
||||||
|
|
||||||
By contrast, `nix-copy-closure` only accepted store paths as
|
By contrast, `nix-copy-closure` only accepted store paths as
|
||||||
arguments.
|
arguments.
|
||||||
|
|
||||||
- It is self-documenting: `--help` shows all available
|
- It is self-documenting: `--help` shows all available
|
||||||
command-line arguments. If `--help` is given after a subcommand,
|
command-line arguments. If `--help` is given after a subcommand,
|
||||||
it shows examples for that subcommand. `nix
|
it shows examples for that subcommand. `nix
|
||||||
--help-config` shows all configuration options.
|
--help-config` shows all configuration options.
|
||||||
|
|
||||||
- It is much less verbose. By default, it displays a single-line
|
- It is much less verbose. By default, it displays a single-line
|
||||||
progress indicator that shows how many packages are left to be
|
progress indicator that shows how many packages are left to be
|
||||||
built or downloaded, and (if there are running builds) the most
|
built or downloaded, and (if there are running builds) the most
|
||||||
|
@ -85,7 +85,7 @@ This release has the following new features:
|
||||||
last few lines of builder output. The full build log can be
|
last few lines of builder output. The full build log can be
|
||||||
retrieved using `nix
|
retrieved using `nix
|
||||||
log`.
|
log`.
|
||||||
|
|
||||||
- It
|
- It
|
||||||
[provides](https://github.com/NixOS/nix/commit/b8283773bd64d7da6859ed520ee19867742a03ba)
|
[provides](https://github.com/NixOS/nix/commit/b8283773bd64d7da6859ed520ee19867742a03ba)
|
||||||
all `nix.conf` configuration options as command line flags. For
|
all `nix.conf` configuration options as command line flags. For
|
||||||
|
@ -93,122 +93,122 @@ This release has the following new features:
|
||||||
http-connections 100` you can write `--http-connections 100`.
|
http-connections 100` you can write `--http-connections 100`.
|
||||||
Boolean options can be written as `--foo` or `--no-foo` (e.g.
|
Boolean options can be written as `--foo` or `--no-foo` (e.g.
|
||||||
`--no-auto-optimise-store`).
|
`--no-auto-optimise-store`).
|
||||||
|
|
||||||
- Many subcommands have a `--json` flag to write results to stdout
|
- Many subcommands have a `--json` flag to write results to stdout
|
||||||
in JSON format.
|
in JSON format.
|
||||||
|
|
||||||
> **Warning**
|
> **Warning**
|
||||||
>
|
>
|
||||||
> Please note that the `nix` command is a work in progress and the
|
> Please note that the `nix` command is a work in progress and the
|
||||||
> interface is subject to change.
|
> interface is subject to change.
|
||||||
|
|
||||||
It provides the following high-level (“porcelain”) subcommands:
|
It provides the following high-level (“porcelain”) subcommands:
|
||||||
|
|
||||||
- `nix build` is a replacement for `nix-build`.
|
- `nix build` is a replacement for `nix-build`.
|
||||||
|
|
||||||
- `nix run` executes a command in an environment in which the
|
- `nix run` executes a command in an environment in which the
|
||||||
specified packages are available. It is (roughly) a replacement
|
specified packages are available. It is (roughly) a replacement
|
||||||
for `nix-shell
|
for `nix-shell
|
||||||
-p`. Unlike that command, it does not execute the command in a
|
-p`. Unlike that command, it does not execute the command in a
|
||||||
shell, and has a flag (`-c`) that specifies the unquoted command
|
shell, and has a flag (`-c`) that specifies the unquoted command
|
||||||
line to be executed.
|
line to be executed.
|
||||||
|
|
||||||
It is particularly useful in conjunction with chroot stores,
|
It is particularly useful in conjunction with chroot stores,
|
||||||
allowing Linux users who do not have permission to install Nix
|
allowing Linux users who do not have permission to install Nix
|
||||||
in `/nix/store` to still use binary substitutes that assume
|
in `/nix/store` to still use binary substitutes that assume
|
||||||
`/nix/store`. For example,
|
`/nix/store`. For example,
|
||||||
|
|
||||||
nix run --store ~/my-nix nixpkgs.hello -c hello --greeting 'Hi everybody!'
|
nix run --store ~/my-nix nixpkgs.hello -c hello --greeting 'Hi everybody!'
|
||||||
|
|
||||||
downloads (or if not substitutes are available, builds) the GNU
|
downloads (or if not substitutes are available, builds) the GNU
|
||||||
Hello package into `~/my-nix/nix/store`, then runs `hello` in a
|
Hello package into `~/my-nix/nix/store`, then runs `hello` in a
|
||||||
mount namespace where `~/my-nix/nix/store` is mounted onto
|
mount namespace where `~/my-nix/nix/store` is mounted onto
|
||||||
`/nix/store`.
|
`/nix/store`.
|
||||||
|
|
||||||
- `nix search` replaces `nix-env
|
- `nix search` replaces `nix-env
|
||||||
-qa`. It searches the available packages for occurrences of a
|
-qa`. It searches the available packages for occurrences of a
|
||||||
search string in the attribute name, package name or
|
search string in the attribute name, package name or
|
||||||
description. Unlike `nix-env -qa`, it has a cache to speed up
|
description. Unlike `nix-env -qa`, it has a cache to speed up
|
||||||
subsequent searches.
|
subsequent searches.
|
||||||
|
|
||||||
- `nix copy` copies paths between arbitrary Nix stores,
|
- `nix copy` copies paths between arbitrary Nix stores,
|
||||||
generalising `nix-copy-closure` and `nix-push`.
|
generalising `nix-copy-closure` and `nix-push`.
|
||||||
|
|
||||||
- `nix repl` replaces the external program `nix-repl`. It provides
|
- `nix repl` replaces the external program `nix-repl`. It provides
|
||||||
an interactive environment for evaluating and building Nix
|
an interactive environment for evaluating and building Nix
|
||||||
expressions. Note that it uses `linenoise-ng` instead of GNU
|
expressions. Note that it uses `linenoise-ng` instead of GNU
|
||||||
Readline.
|
Readline.
|
||||||
|
|
||||||
- `nix upgrade-nix` upgrades Nix to the latest stable version.
|
- `nix upgrade-nix` upgrades Nix to the latest stable version.
|
||||||
This requires that Nix is installed in a profile. (Thus it won’t
|
This requires that Nix is installed in a profile. (Thus it won’t
|
||||||
work on NixOS, or if it’s installed outside of the Nix store.)
|
work on NixOS, or if it’s installed outside of the Nix store.)
|
||||||
|
|
||||||
- `nix verify` checks whether store paths are unmodified and/or
|
- `nix verify` checks whether store paths are unmodified and/or
|
||||||
“trusted” (see below). It replaces `nix-store --verify` and
|
“trusted” (see below). It replaces `nix-store --verify` and
|
||||||
`nix-store
|
`nix-store
|
||||||
--verify-path`.
|
--verify-path`.
|
||||||
|
|
||||||
- `nix log` shows the build log of a package or path. If the
|
- `nix log` shows the build log of a package or path. If the
|
||||||
build log is not available locally, it will try to obtain it
|
build log is not available locally, it will try to obtain it
|
||||||
from the configured substituters (such as
|
from the configured substituters (such as
|
||||||
[cache.nixos.org](https://cache.nixos.org/), which now
|
[cache.nixos.org](https://cache.nixos.org/), which now
|
||||||
provides build logs).
|
provides build logs).
|
||||||
|
|
||||||
- `nix edit` opens the source code of a package in your editor.
|
- `nix edit` opens the source code of a package in your editor.
|
||||||
|
|
||||||
- `nix eval` replaces `nix-instantiate --eval`.
|
- `nix eval` replaces `nix-instantiate --eval`.
|
||||||
|
|
||||||
- `nix
|
- `nix
|
||||||
why-depends` shows why one store path has another in its
|
why-depends` shows why one store path has another in its
|
||||||
closure. This is primarily useful to finding the causes of
|
closure. This is primarily useful to finding the causes of
|
||||||
closure bloat. For example,
|
closure bloat. For example,
|
||||||
|
|
||||||
nix why-depends nixpkgs.vlc nixpkgs.libdrm.dev
|
nix why-depends nixpkgs.vlc nixpkgs.libdrm.dev
|
||||||
|
|
||||||
shows a chain of files and fragments of file contents that cause
|
shows a chain of files and fragments of file contents that cause
|
||||||
the VLC package to have the “dev” output of `libdrm` in its
|
the VLC package to have the “dev” output of `libdrm` in its
|
||||||
closure — an undesirable situation.
|
closure — an undesirable situation.
|
||||||
|
|
||||||
- `nix path-info` shows information about store paths, replacing
|
- `nix path-info` shows information about store paths, replacing
|
||||||
`nix-store -q`. A useful feature is the option `--closure-size`
|
`nix-store -q`. A useful feature is the option `--closure-size`
|
||||||
(`-S`). For example, the following command show the closure
|
(`-S`). For example, the following command show the closure
|
||||||
sizes of every path in the current NixOS system closure, sorted
|
sizes of every path in the current NixOS system closure, sorted
|
||||||
by size:
|
by size:
|
||||||
|
|
||||||
nix path-info -rS /run/current-system | sort -nk2
|
nix path-info -rS /run/current-system | sort -nk2
|
||||||
|
|
||||||
- `nix optimise-store` replaces `nix-store --optimise`. The main
|
- `nix optimise-store` replaces `nix-store --optimise`. The main
|
||||||
difference is that it has a progress indicator.
|
difference is that it has a progress indicator.
|
||||||
|
|
||||||
A number of low-level (“plumbing”) commands are also available:
|
A number of low-level (“plumbing”) commands are also available:
|
||||||
|
|
||||||
- `nix ls-store` and `nix
|
- `nix ls-store` and `nix
|
||||||
ls-nar` list the contents of a store path or NAR file. The
|
ls-nar` list the contents of a store path or NAR file. The
|
||||||
former is primarily useful in conjunction with remote stores,
|
former is primarily useful in conjunction with remote stores,
|
||||||
e.g.
|
e.g.
|
||||||
|
|
||||||
nix ls-store --store https://cache.nixos.org/ -lR /nix/store/0i2jd68mp5g6h2sa5k9c85rb80sn8hi9-hello-2.10
|
nix ls-store --store https://cache.nixos.org/ -lR /nix/store/0i2jd68mp5g6h2sa5k9c85rb80sn8hi9-hello-2.10
|
||||||
|
|
||||||
lists the contents of path in a binary cache.
|
lists the contents of path in a binary cache.
|
||||||
|
|
||||||
- `nix cat-store` and `nix
|
- `nix cat-store` and `nix
|
||||||
cat-nar` allow extracting a file from a store path or NAR file.
|
cat-nar` allow extracting a file from a store path or NAR file.
|
||||||
|
|
||||||
- `nix dump-path` writes the contents of a store path to stdout in
|
- `nix dump-path` writes the contents of a store path to stdout in
|
||||||
NAR format. This replaces `nix-store --dump`.
|
NAR format. This replaces `nix-store --dump`.
|
||||||
|
|
||||||
- `nix
|
- `nix
|
||||||
show-derivation` displays a store derivation in JSON format.
|
show-derivation` displays a store derivation in JSON format.
|
||||||
This is an alternative to `pp-aterm`.
|
This is an alternative to `pp-aterm`.
|
||||||
|
|
||||||
- `nix
|
- `nix
|
||||||
add-to-store` replaces `nix-store
|
add-to-store` replaces `nix-store
|
||||||
--add`.
|
--add`.
|
||||||
|
|
||||||
- `nix sign-paths` signs store paths.
|
- `nix sign-paths` signs store paths.
|
||||||
|
|
||||||
- `nix copy-sigs` copies signatures from one store to another.
|
- `nix copy-sigs` copies signatures from one store to another.
|
||||||
|
|
||||||
- `nix show-config` shows all configuration options and their
|
- `nix show-config` shows all configuration options and their
|
||||||
current values.
|
current values.
|
||||||
|
|
||||||
|
@ -224,11 +224,11 @@ This release has the following new features:
|
||||||
`nix-copy-closure`, `nix-push` and substitution are all instances
|
`nix-copy-closure`, `nix-push` and substitution are all instances
|
||||||
of the general notion of copying paths between different kinds of
|
of the general notion of copying paths between different kinds of
|
||||||
Nix stores.
|
Nix stores.
|
||||||
|
|
||||||
Stores are specified using an URI-like syntax, e.g.
|
Stores are specified using an URI-like syntax, e.g.
|
||||||
<https://cache.nixos.org/> or <ssh://machine>. The following store
|
<https://cache.nixos.org/> or <ssh://machine>. The following store
|
||||||
types are supported:
|
types are supported:
|
||||||
|
|
||||||
- `LocalStore` (stori URI `local` or an absolute path) and the
|
- `LocalStore` (stori URI `local` or an absolute path) and the
|
||||||
misnamed `RemoteStore` (`daemon`) provide access to a local Nix
|
misnamed `RemoteStore` (`daemon`) provide access to a local Nix
|
||||||
store, the latter via the Nix daemon. You can use `auto` or the
|
store, the latter via the Nix daemon. You can use `auto` or the
|
||||||
|
@ -236,63 +236,63 @@ This release has the following new features:
|
||||||
whether you have write permission to the Nix store. It is no
|
whether you have write permission to the Nix store. It is no
|
||||||
longer necessary to set the `NIX_REMOTE` environment variable to
|
longer necessary to set the `NIX_REMOTE` environment variable to
|
||||||
use the Nix daemon.
|
use the Nix daemon.
|
||||||
|
|
||||||
As noted above, `LocalStore` now supports chroot builds,
|
As noted above, `LocalStore` now supports chroot builds,
|
||||||
allowing the “physical” location of the Nix store (e.g.
|
allowing the “physical” location of the Nix store (e.g.
|
||||||
`/home/alice/nix/store`) to differ from its “logical” location
|
`/home/alice/nix/store`) to differ from its “logical” location
|
||||||
(typically `/nix/store`). This allows non-root users to use Nix
|
(typically `/nix/store`). This allows non-root users to use Nix
|
||||||
while still getting the benefits from prebuilt binaries from
|
while still getting the benefits from prebuilt binaries from
|
||||||
[cache.nixos.org](https://cache.nixos.org/).
|
[cache.nixos.org](https://cache.nixos.org/).
|
||||||
|
|
||||||
- `BinaryCacheStore` is the abstract superclass of all binary
|
- `BinaryCacheStore` is the abstract superclass of all binary
|
||||||
cache stores. It supports writing build logs and NAR content
|
cache stores. It supports writing build logs and NAR content
|
||||||
listings in JSON format.
|
listings in JSON format.
|
||||||
|
|
||||||
- `HttpBinaryCacheStore` (`http://`, `https://`) supports binary
|
- `HttpBinaryCacheStore` (`http://`, `https://`) supports binary
|
||||||
caches via HTTP or HTTPS. If the server supports `PUT` requests,
|
caches via HTTP or HTTPS. If the server supports `PUT` requests,
|
||||||
it supports uploading store paths via commands such as `nix
|
it supports uploading store paths via commands such as `nix
|
||||||
copy`.
|
copy`.
|
||||||
|
|
||||||
- `LocalBinaryCacheStore` (`file://`) supports binary caches in
|
- `LocalBinaryCacheStore` (`file://`) supports binary caches in
|
||||||
the local filesystem.
|
the local filesystem.
|
||||||
|
|
||||||
- `S3BinaryCacheStore` (`s3://`) supports binary caches stored in
|
- `S3BinaryCacheStore` (`s3://`) supports binary caches stored in
|
||||||
Amazon S3, if enabled at compile time.
|
Amazon S3, if enabled at compile time.
|
||||||
|
|
||||||
- `LegacySSHStore` (`ssh://`) is used to implement remote builds
|
- `LegacySSHStore` (`ssh://`) is used to implement remote builds
|
||||||
and `nix-copy-closure`.
|
and `nix-copy-closure`.
|
||||||
|
|
||||||
- `SSHStore` (`ssh-ng://`) supports arbitrary Nix operations on a
|
- `SSHStore` (`ssh-ng://`) supports arbitrary Nix operations on a
|
||||||
remote machine via the same protocol used by `nix-daemon`.
|
remote machine via the same protocol used by `nix-daemon`.
|
||||||
|
|
||||||
- Security has been improved in various ways:
|
- Security has been improved in various ways:
|
||||||
|
|
||||||
- Nix now stores signatures for local store paths. When paths are
|
- Nix now stores signatures for local store paths. When paths are
|
||||||
copied between stores (e.g., copied from a binary cache to a
|
copied between stores (e.g., copied from a binary cache to a
|
||||||
local store), signatures are propagated.
|
local store), signatures are propagated.
|
||||||
|
|
||||||
Locally-built paths are signed automatically using the secret
|
Locally-built paths are signed automatically using the secret
|
||||||
keys specified by the `secret-key-files` store option.
|
keys specified by the `secret-key-files` store option.
|
||||||
Secret/public key pairs can be generated using `nix-store
|
Secret/public key pairs can be generated using `nix-store
|
||||||
--generate-binary-cache-key`.
|
--generate-binary-cache-key`.
|
||||||
|
|
||||||
In addition, locally-built store paths are marked as “ultimately
|
In addition, locally-built store paths are marked as “ultimately
|
||||||
trusted”, but this bit is not propagated when paths are copied
|
trusted”, but this bit is not propagated when paths are copied
|
||||||
between stores.
|
between stores.
|
||||||
|
|
||||||
- Content-addressable store paths no longer require signatures —
|
- Content-addressable store paths no longer require signatures —
|
||||||
they can be imported into a store by unprivileged users even if
|
they can be imported into a store by unprivileged users even if
|
||||||
they lack signatures.
|
they lack signatures.
|
||||||
|
|
||||||
- The command `nix verify` checks whether the specified paths are
|
- The command `nix verify` checks whether the specified paths are
|
||||||
trusted, i.e., have a certain number of trusted signatures, are
|
trusted, i.e., have a certain number of trusted signatures, are
|
||||||
ultimately trusted, or are content-addressed.
|
ultimately trusted, or are content-addressed.
|
||||||
|
|
||||||
- Substitutions from binary caches
|
- Substitutions from binary caches
|
||||||
[now](https://github.com/NixOS/nix/commit/ecbc3fedd3d5bdc5a0e1a0a51b29062f2874ac8b)
|
[now](https://github.com/NixOS/nix/commit/ecbc3fedd3d5bdc5a0e1a0a51b29062f2874ac8b)
|
||||||
require signatures by default. This was already the case on
|
require signatures by default. This was already the case on
|
||||||
NixOS.
|
NixOS.
|
||||||
|
|
||||||
- In Linux sandbox builds, we
|
- In Linux sandbox builds, we
|
||||||
[now](https://github.com/NixOS/nix/commit/eba840c8a13b465ace90172ff76a0db2899ab11b)
|
[now](https://github.com/NixOS/nix/commit/eba840c8a13b465ace90172ff76a0db2899ab11b)
|
||||||
use `/build` instead of `/tmp` as the temporary build directory.
|
use `/build` instead of `/tmp` as the temporary build directory.
|
||||||
|
@ -309,7 +309,7 @@ This release has the following new features:
|
||||||
hash or commit hash is specified. For example, calls to
|
hash or commit hash is specified. For example, calls to
|
||||||
`builtins.fetchGit` are only allowed if a `rev` attribute is
|
`builtins.fetchGit` are only allowed if a `rev` attribute is
|
||||||
specified.
|
specified.
|
||||||
|
|
||||||
The goal of this feature is to enable true reproducibility and
|
The goal of this feature is to enable true reproducibility and
|
||||||
traceability of builds (including NixOS system configurations) at
|
traceability of builds (including NixOS system configurations) at
|
||||||
the evaluation level. For example, in the future, `nixos-rebuild`
|
the evaluation level. For example, in the future, `nixos-rebuild`
|
||||||
|
@ -367,21 +367,21 @@ This release has the following new features:
|
||||||
log will be shown if a build fails.
|
log will be shown if a build fails.
|
||||||
|
|
||||||
- Networking has been improved:
|
- Networking has been improved:
|
||||||
|
|
||||||
- HTTP/2 is now supported. This makes binary cache lookups [much
|
- HTTP/2 is now supported. This makes binary cache lookups [much
|
||||||
more
|
more
|
||||||
efficient](https://github.com/NixOS/nix/commit/90ad02bf626b885a5dd8967894e2eafc953bdf92).
|
efficient](https://github.com/NixOS/nix/commit/90ad02bf626b885a5dd8967894e2eafc953bdf92).
|
||||||
|
|
||||||
- We now retry downloads on many HTTP errors, making binary caches
|
- We now retry downloads on many HTTP errors, making binary caches
|
||||||
substituters more resilient to temporary failures.
|
substituters more resilient to temporary failures.
|
||||||
|
|
||||||
- HTTP credentials can now be configured via the standard `netrc`
|
- HTTP credentials can now be configured via the standard `netrc`
|
||||||
mechanism.
|
mechanism.
|
||||||
|
|
||||||
- If S3 support is enabled at compile time, <s3://> URIs are
|
- If S3 support is enabled at compile time, <s3://> URIs are
|
||||||
[supported](https://github.com/NixOS/nix/commit/9ff9c3f2f80ba4108e9c945bbfda2c64735f987b)
|
[supported](https://github.com/NixOS/nix/commit/9ff9c3f2f80ba4108e9c945bbfda2c64735f987b)
|
||||||
in all places where Nix allows URIs.
|
in all places where Nix allows URIs.
|
||||||
|
|
||||||
- Brotli compression is now supported. In particular,
|
- Brotli compression is now supported. In particular,
|
||||||
[cache.nixos.org](https://cache.nixos.org/) build logs are now compressed
|
[cache.nixos.org](https://cache.nixos.org/) build logs are now compressed
|
||||||
using Brotli.
|
using Brotli.
|
||||||
|
@ -431,9 +431,9 @@ The Nix language has the following new features:
|
||||||
- Derivation attributes can now reference the outputs of the
|
- Derivation attributes can now reference the outputs of the
|
||||||
derivation using the `placeholder` builtin function. For example,
|
derivation using the `placeholder` builtin function. For example,
|
||||||
the attribute
|
the attribute
|
||||||
|
|
||||||
configureFlags = "--prefix=${placeholder "out"} --includedir=${placeholder "dev"}";
|
configureFlags = "--prefix=${placeholder "out"} --includedir=${placeholder "dev"}";
|
||||||
|
|
||||||
will cause the `configureFlags` environment variable to contain the
|
will cause the `configureFlags` environment variable to contain the
|
||||||
actual store paths corresponding to the `out` and `dev` outputs.
|
actual store paths corresponding to the `out` and `dev` outputs.
|
||||||
|
|
||||||
|
@ -444,7 +444,7 @@ The following builtin functions are new or extended:
|
||||||
Nixpkgs, which fetches at build time and cannot be used to fetch Nix
|
Nixpkgs, which fetches at build time and cannot be used to fetch Nix
|
||||||
expressions during evaluation. A typical use case is to import
|
expressions during evaluation. A typical use case is to import
|
||||||
external NixOS modules from your configuration, e.g.
|
external NixOS modules from your configuration, e.g.
|
||||||
|
|
||||||
imports = [ (builtins.fetchGit https://github.com/edolstra/dwarffs + "/module.nix") ];
|
imports = [ (builtins.fetchGit https://github.com/edolstra/dwarffs + "/module.nix") ];
|
||||||
|
|
||||||
- Similarly, `builtins.fetchMercurial` allows you to fetch Mercurial
|
- Similarly, `builtins.fetchMercurial` allows you to fetch Mercurial
|
||||||
|
@ -485,7 +485,7 @@ The Nix build environment has the following changes:
|
||||||
builder via the file `.attrs.json` in the builder’s temporary
|
builder via the file `.attrs.json` in the builder’s temporary
|
||||||
directory. This obviates the need for `passAsFile` since JSON files
|
directory. This obviates the need for `passAsFile` since JSON files
|
||||||
have no size restrictions, unlike process environments.
|
have no size restrictions, unlike process environments.
|
||||||
|
|
||||||
[As a convenience to Bash
|
[As a convenience to Bash
|
||||||
builders](https://github.com/NixOS/nix/commit/2d5b1b24bf70a498e4c0b378704cfdb6471cc699),
|
builders](https://github.com/NixOS/nix/commit/2d5b1b24bf70a498e4c0b378704cfdb6471cc699),
|
||||||
Nix writes a script named `.attrs.sh` to the builder’s directory
|
Nix writes a script named `.attrs.sh` to the builder’s directory
|
||||||
|
|
|
@ -6,15 +6,15 @@ This is primarily a bug fix release. It also has the following changes:
|
||||||
the `__structuredAttrs` attribute to `true` to cause all attributes
|
the `__structuredAttrs` attribute to `true` to cause all attributes
|
||||||
to be passed to the builder in JSON format), you can now specify
|
to be passed to the builder in JSON format), you can now specify
|
||||||
closure checks per output, e.g.:
|
closure checks per output, e.g.:
|
||||||
|
|
||||||
outputChecks."out" = {
|
outputChecks."out" = {
|
||||||
# The closure of 'out' must not be larger than 256 MiB.
|
# The closure of 'out' must not be larger than 256 MiB.
|
||||||
maxClosureSize = 256 * 1024 * 1024;
|
maxClosureSize = 256 * 1024 * 1024;
|
||||||
|
|
||||||
# It must not refer to C compiler or to the 'dev' output.
|
# It must not refer to C compiler or to the 'dev' output.
|
||||||
disallowedRequisites = [ stdenv.cc "dev" ];
|
disallowedRequisites = [ stdenv.cc "dev" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
outputChecks."dev" = {
|
outputChecks."dev" = {
|
||||||
# The 'dev' output must not be larger than 128 KiB.
|
# The 'dev' output must not be larger than 128 KiB.
|
||||||
maxSize = 128 * 1024;
|
maxSize = 128 * 1024;
|
||||||
|
@ -24,7 +24,7 @@ This is primarily a bug fix release. It also has the following changes:
|
||||||
for local builds, and not just to route builds to remote builders.
|
for local builds, and not just to route builds to remote builders.
|
||||||
The supported features of a machine can be specified through the
|
The supported features of a machine can be specified through the
|
||||||
configuration setting `system-features`.
|
configuration setting `system-features`.
|
||||||
|
|
||||||
By default, `system-features` includes `kvm` if `/dev/kvm` exists.
|
By default, `system-features` includes `kvm` if `/dev/kvm` exists.
|
||||||
For compatibility, it also includes the pseudo-features
|
For compatibility, it also includes the pseudo-features
|
||||||
`nixos-test`, `benchmark` and `big-parallel` which are used by
|
`nixos-test`, `benchmark` and `big-parallel` which are used by
|
||||||
|
@ -45,22 +45,22 @@ This is primarily a bug fix release. It also has the following changes:
|
||||||
- Nix now supports [SRI hashes](https://www.w3.org/TR/SRI/), allowing
|
- Nix now supports [SRI hashes](https://www.w3.org/TR/SRI/), allowing
|
||||||
the hash algorithm and hash to be specified in a single string. For
|
the hash algorithm and hash to be specified in a single string. For
|
||||||
example, you can write:
|
example, you can write:
|
||||||
|
|
||||||
import <nix/fetchurl.nix> {
|
import <nix/fetchurl.nix> {
|
||||||
url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz;
|
url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz;
|
||||||
hash = "sha256-XSLa0FjVyADWWhFfkZ2iKTjFDda6mMXjoYMXLRSYQKQ=";
|
hash = "sha256-XSLa0FjVyADWWhFfkZ2iKTjFDda6mMXjoYMXLRSYQKQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
instead of
|
instead of
|
||||||
|
|
||||||
import <nix/fetchurl.nix> {
|
import <nix/fetchurl.nix> {
|
||||||
url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz;
|
url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz;
|
||||||
sha256 = "5d22dad058d5c800d65a115f919da22938c50dd6ba98c5e3a183172d149840a4";
|
sha256 = "5d22dad058d5c800d65a115f919da22938c50dd6ba98c5e3a183172d149840a4";
|
||||||
};
|
};
|
||||||
|
|
||||||
In fixed-output derivations, the `outputHashAlgo` attribute is no
|
In fixed-output derivations, the `outputHashAlgo` attribute is no
|
||||||
longer mandatory if `outputHash` specifies the hash.
|
longer mandatory if `outputHash` specifies the hash.
|
||||||
|
|
||||||
`nix hash-file` and `nix
|
`nix hash-file` and `nix
|
||||||
hash-path` now print hashes in SRI format by default. They also use
|
hash-path` now print hashes in SRI format by default. They also use
|
||||||
SHA-256 by default instead of SHA-512 because that's what we use
|
SHA-256 by default instead of SHA-512 because that's what we use
|
||||||
|
|
File diff suppressed because one or more lines are too long
98
flake.lock
98
flake.lock
|
@ -3,11 +3,11 @@
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -16,13 +16,52 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"gitignore": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"pre-commit-hooks",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1709087332,
|
||||||
|
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "gitignore.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1709884566,
|
"lastModified": 1711481231,
|
||||||
"narHash": "sha256-NSYJg2sfdO/XS3L8XN/59Zhzn0dqWm7XtVnKI2mHq3w=",
|
"narHash": "sha256-J/fW3Xhm3WsJPNd8ksZmfMnol5aOG2qEMDPbOnNNdTQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "2be119add7b37dc535da2dd4cba68e2cf8d1517e",
|
"rev": "9d6ddb13cee3cc1192e4430277708c732685f38a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -48,11 +87,56 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"pre-commit-hooks": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"gitignore": "gitignore",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixpkgs-stable": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1711562502,
|
||||||
|
"narHash": "sha256-SLo1yf/lfozph818VME9Y56uhaZWY0juZcj/qJZPPrs=",
|
||||||
|
"owner": "9999years",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"rev": "d2f6f9376c38fb0c48526720793a17f10cd3ac10",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "9999years",
|
||||||
|
"ref": "add-default-pre-commit-hooks",
|
||||||
|
"repo": "git-hooks.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-regression": "nixpkgs-regression"
|
"nixpkgs-regression": "nixpkgs-regression",
|
||||||
|
"pre-commit-hooks": "pre-commit-hooks"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
68
flake.nix
68
flake.nix
|
@ -1,11 +1,23 @@
|
||||||
{
|
{
|
||||||
description = "The purely functional package manager";
|
description = "The purely functional package manager";
|
||||||
|
|
||||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11-small";
|
inputs = {
|
||||||
inputs.nixpkgs-regression.url = "github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11-small";
|
||||||
inputs.flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };
|
nixpkgs-regression.url = "github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2";
|
||||||
|
pre-commit-hooks = {
|
||||||
|
# Can go back to `cachix/git-hooks.nix` when this is merged:
|
||||||
|
# https://github.com/cachix/git-hooks.nix/pull/401
|
||||||
|
url = "github:9999years/git-hooks.nix/add-default-pre-commit-hooks";
|
||||||
|
inputs = {
|
||||||
|
flake-compat.follows = "flake-compat";
|
||||||
|
nixpkgs.follows = "nixpkgs";
|
||||||
|
nixpkgs-stable.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };
|
||||||
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-regression, flake-compat }:
|
outputs = { self, nixpkgs, nixpkgs-regression, pre-commit-hooks, flake-compat }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
|
@ -278,6 +290,49 @@
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pre-commit = builtins.mapAttrs (system: pre-commit-lib: pre-commit-lib.run {
|
||||||
|
src = self;
|
||||||
|
hooks = {
|
||||||
|
no-commit-to-branch = {
|
||||||
|
enable = true;
|
||||||
|
settings.branch = ["main"];
|
||||||
|
};
|
||||||
|
check-case-conflicts.enable = true;
|
||||||
|
check-executables-have-shebangs = {
|
||||||
|
enable = true;
|
||||||
|
stages = [ "commit" ];
|
||||||
|
};
|
||||||
|
check-shebang-scripts-are-executable = {
|
||||||
|
enable = true;
|
||||||
|
stages = [ "commit" ];
|
||||||
|
};
|
||||||
|
check-symlinks = {
|
||||||
|
enable = true;
|
||||||
|
excludes = [ "^tests/functional/lang/symlink-resolution/broken$" ];
|
||||||
|
};
|
||||||
|
check-merge-conflicts.enable = true;
|
||||||
|
end-of-file-fixer = {
|
||||||
|
enable = true;
|
||||||
|
excludes = [
|
||||||
|
"\\.drv$"
|
||||||
|
"^tests/functional/lang/"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
mixed-line-endings = {
|
||||||
|
enable = true;
|
||||||
|
excludes = [ "^tests/functional/lang/" ];
|
||||||
|
};
|
||||||
|
# TODO: Once the test suite is nicer, clean up and start
|
||||||
|
# enforcing trailing whitespace on tests that don't explicitly
|
||||||
|
# check for it.
|
||||||
|
trim-trailing-whitespace = {
|
||||||
|
enable = true;
|
||||||
|
stages = [ "commit" ];
|
||||||
|
excludes = [ "^tests/functional/lang/" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}) pre-commit-hooks.lib;
|
||||||
};
|
};
|
||||||
|
|
||||||
checks = forAllSystems (system: let
|
checks = forAllSystems (system: let
|
||||||
|
@ -295,6 +350,7 @@
|
||||||
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
nixpkgsLibTests = self.hydraJobs.tests.nixpkgsLibTests.${system};
|
||||||
rl-next = rl-next-check "rl-next" ./doc/manual/rl-next;
|
rl-next = rl-next-check "rl-next" ./doc/manual/rl-next;
|
||||||
rl-next-dev = rl-next-check "rl-next-dev" ./doc/manual/rl-next-dev;
|
rl-next-dev = rl-next-check "rl-next-dev" ./doc/manual/rl-next-dev;
|
||||||
|
pre-commit = self.hydraJobs.pre-commit.${system};
|
||||||
} // (lib.optionalAttrs (builtins.elem system linux64BitSystems)) {
|
} // (lib.optionalAttrs (builtins.elem system linux64BitSystems)) {
|
||||||
dockerImage = self.hydraJobs.dockerImage.${system};
|
dockerImage = self.hydraJobs.dockerImage.${system};
|
||||||
});
|
});
|
||||||
|
@ -340,6 +396,7 @@
|
||||||
busybox-sandbox-shell = pkgs.busybox-sandbox-shell or pkgs.default-busybox-sandbox;
|
busybox-sandbox-shell = pkgs.busybox-sandbox-shell or pkgs.default-busybox-sandbox;
|
||||||
forDevShell = true;
|
forDevShell = true;
|
||||||
};
|
};
|
||||||
|
pre-commit = self.hydraJobs.pre-commit.${pkgs.system} or {};
|
||||||
in
|
in
|
||||||
(nix.override {
|
(nix.override {
|
||||||
buildUnreleasedNotes = true;
|
buildUnreleasedNotes = true;
|
||||||
|
@ -348,6 +405,7 @@
|
||||||
# Required for clang-tidy checks
|
# Required for clang-tidy checks
|
||||||
buildInputs = prev.buildInputs
|
buildInputs = prev.buildInputs
|
||||||
++ [ pkgs.just ]
|
++ [ pkgs.just ]
|
||||||
|
++ lib.optional (pre-commit ? enabledPackages) pre-commit.enabledPackages
|
||||||
++ lib.optionals (stdenv.cc.isClang) [ pkgs.llvmPackages.llvm pkgs.llvmPackages.clang-unwrapped.dev ];
|
++ lib.optionals (stdenv.cc.isClang) [ pkgs.llvmPackages.llvm pkgs.llvmPackages.clang-unwrapped.dev ];
|
||||||
nativeBuildInputs = prev.nativeBuildInputs
|
nativeBuildInputs = prev.nativeBuildInputs
|
||||||
++ lib.optional (stdenv.cc.isClang && !stdenv.buildPlatform.isDarwin) pkgs.buildPackages.bear
|
++ lib.optional (stdenv.cc.isClang && !stdenv.buildPlatform.isDarwin) pkgs.buildPackages.bear
|
||||||
|
@ -379,6 +437,8 @@
|
||||||
|
|
||||||
# Make bash completion work.
|
# Make bash completion work.
|
||||||
XDG_DATA_DIRS+=:$out/share
|
XDG_DATA_DIRS+=:$out/share
|
||||||
|
|
||||||
|
${lib.optionalString (pre-commit ? shellHook) pre-commit.shellHook}
|
||||||
'';
|
'';
|
||||||
} // lib.optionalAttrs (stdenv.buildPlatform.isLinux && pkgs.glibcLocales != null) {
|
} // lib.optionalAttrs (stdenv.buildPlatform.isLinux && pkgs.glibcLocales != null) {
|
||||||
# Required to make non-NixOS Linux not complain about missing locale files during configure in a dev shell
|
# Required to make non-NixOS Linux not complain about missing locale files during configure in a dev shell
|
||||||
|
|
0
maintainers/build-release-notes.py
Executable file → Normal file
0
maintainers/build-release-notes.py
Executable file → Normal file
|
@ -189,8 +189,7 @@ release:
|
||||||
|
|
||||||
* Bump the version number of the release branch as above (e.g. to
|
* Bump the version number of the release branch as above (e.g. to
|
||||||
`2.12.2`).
|
`2.12.2`).
|
||||||
|
|
||||||
## Recovering from mistakes
|
## Recovering from mistakes
|
||||||
|
|
||||||
`upload-release.pl` should be idempotent. For instance a wrong `IS_LATEST` value can be fixed that way, by running the script on the actual latest release.
|
`upload-release.pl` should be idempotent. For instance a wrong `IS_LATEST` value can be fixed that way, by running the script on the actual latest release.
|
||||||
|
|
||||||
|
|
|
@ -84,4 +84,3 @@ except Exception as e:
|
||||||
print(f'{name}: INTERNAL ERROR running test ({sys.argv}): {e}', file=sys.stderr)
|
print(f'{name}: INTERNAL ERROR running test ({sys.argv}): {e}', file=sys.stderr)
|
||||||
print(f'this is a bug in {name}')
|
print(f'this is a bug in {name}')
|
||||||
sys.exit(99)
|
sys.exit(99)
|
||||||
|
|
||||||
|
|
|
@ -3,20 +3,20 @@
|
||||||
# nix-daemon: Starts the nix package manager daemon
|
# nix-daemon: Starts the nix package manager daemon
|
||||||
#
|
#
|
||||||
# chkconfig: 345 24 02
|
# chkconfig: 345 24 02
|
||||||
# description: This is a daemon which enable the multi-user mode
|
# description: This is a daemon which enable the multi-user mode
|
||||||
# of the nix package manager.
|
# of the nix package manager.
|
||||||
# processname: nix-daemon
|
# processname: nix-daemon
|
||||||
# pidfile: /var/run/nix/nix-daemon.pid
|
# pidfile: /var/run/nix/nix-daemon.pid
|
||||||
|
|
||||||
### BEGIN INIT INFO
|
### BEGIN INIT INFO
|
||||||
# Required-Start:
|
# Required-Start:
|
||||||
# Required-Stop:
|
# Required-Stop:
|
||||||
# Should-Start:
|
# Should-Start:
|
||||||
# Should-Stop:
|
# Should-Stop:
|
||||||
# Default-Start: 3 4 5
|
# Default-Start: 3 4 5
|
||||||
# Default-Stop: 0 1 2 6
|
# Default-Stop: 0 1 2 6
|
||||||
# Short-Description: Starts the nix daemon
|
# Short-Description: Starts the nix daemon
|
||||||
# Description: This is a daemon which enable the multi-user mode
|
# Description: This is a daemon which enable the multi-user mode
|
||||||
# of the nix package manager.
|
# of the nix package manager.
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ let
|
||||||
inherit outputName;
|
inherit outputName;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputsList = map outputToAttrListElement outputs;
|
outputsList = map outputToAttrListElement outputs;
|
||||||
|
|
||||||
in (builtins.head outputsList).value
|
in (builtins.head outputsList).value
|
||||||
|
|
|
@ -8,5 +8,3 @@ namespace nix {
|
||||||
void setPersonality(std::string_view system);
|
void setPersonality(std::string_view system);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ struct SourcePath
|
||||||
* Resolve any symlinks in this `SourcePath` according to the
|
* Resolve any symlinks in this `SourcePath` according to the
|
||||||
* given resolution mode.
|
* given resolution mode.
|
||||||
*
|
*
|
||||||
* @param mode might only be a temporary solution for this.
|
* @param mode might only be a temporary solution for this.
|
||||||
* See the discussion in https://github.com/NixOS/nix/pull/9985.
|
* See the discussion in https://github.com/NixOS/nix/pull/9985.
|
||||||
*/
|
*/
|
||||||
SourcePath resolveSymlinks(
|
SourcePath resolveSymlinks(
|
||||||
|
|
|
@ -152,5 +152,3 @@ void ThreadPool::doWork(bool mainThread)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
2
tests/functional/ca/build-cache.sh
Normal file → Executable file
2
tests/functional/ca/build-cache.sh
Normal file → Executable file
|
@ -48,4 +48,4 @@ testRemoteCache () {
|
||||||
}
|
}
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
testRemoteCache
|
testRemoteCache
|
||||||
|
|
|
@ -3,4 +3,3 @@ source common.sh
|
||||||
export NIX_TESTS_CA_BY_DEFAULT=1
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
|
|
||||||
cd .. && source build-dry.sh
|
cd .. && source build-dry.sh
|
||||||
|
|
||||||
|
|
0
tests/functional/ca/build.sh
Normal file → Executable file
0
tests/functional/ca/build.sh
Normal file → Executable file
0
tests/functional/ca/eval-store.sh
Normal file → Executable file
0
tests/functional/ca/eval-store.sh
Normal file → Executable file
|
@ -3,4 +3,3 @@ source common.sh
|
||||||
export NIX_TESTS_CA_BY_DEFAULT=1
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
|
|
||||||
cd .. && source import-derivation.sh
|
cd .. && source import-derivation.sh
|
||||||
|
|
||||||
|
|
|
@ -5,4 +5,3 @@ source common.sh
|
||||||
CONTENT_ADDRESSED=true
|
CONTENT_ADDRESSED=true
|
||||||
cd ..
|
cd ..
|
||||||
source ./nix-shell.sh
|
source ./nix-shell.sh
|
||||||
|
|
||||||
|
|
|
@ -32,4 +32,3 @@ rec {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,5 +7,3 @@ requireDaemonNewerThan "2.4pre20210626"
|
||||||
export NIX_TESTS_CA_BY_DEFAULT=1
|
export NIX_TESTS_CA_BY_DEFAULT=1
|
||||||
cd ..
|
cd ..
|
||||||
source ./post-hook.sh
|
source ./post-hook.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
0
tests/functional/ca/substitute.sh
Normal file → Executable file
0
tests/functional/ca/substitute.sh
Normal file → Executable file
0
tests/functional/dyn-drv/build-built-drv.sh
Normal file → Executable file
0
tests/functional/dyn-drv/build-built-drv.sh
Normal file → Executable file
0
tests/functional/dyn-drv/dep-built-drv.sh
Normal file → Executable file
0
tests/functional/dyn-drv/dep-built-drv.sh
Normal file → Executable file
0
tests/functional/dyn-drv/eval-outputOf.sh
Normal file → Executable file
0
tests/functional/dyn-drv/eval-outputOf.sh
Normal file → Executable file
0
tests/functional/dyn-drv/text-hashed-output.sh
Normal file → Executable file
0
tests/functional/dyn-drv/text-hashed-output.sh
Normal file → Executable file
|
@ -147,4 +147,3 @@ expectStderr 1 nix eval -v --raw --expr "
|
||||||
inputAddressed = true;
|
inputAddressed = true;
|
||||||
}
|
}
|
||||||
" | grepQuiet 'error.*The store object referred to by.*fromPath.* at .* is not input-addressed, but .*inputAddressed.* is set to .*true.*'
|
" | grepQuiet 'error.*The store object referred to by.*fromPath.* at .* is not input-addressed, but .*inputAddressed.* is set to .*true.*'
|
||||||
|
|
||||||
|
|
|
@ -47,4 +47,3 @@ nix flake update b --flake $flakeA
|
||||||
|
|
||||||
# Test list-inputs with circular dependencies
|
# Test list-inputs with circular dependencies
|
||||||
nix flake metadata $flakeA
|
nix flake metadata $flakeA
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ nix flake lock "$flakeFollowsA" 2>&1 | grep "warning: input 'B' has an override
|
||||||
#
|
#
|
||||||
# The message was
|
# The message was
|
||||||
# error: input 'B/D' follows a non-existent input 'B/C/D'
|
# error: input 'B/D' follows a non-existent input 'B/C/D'
|
||||||
#
|
#
|
||||||
# Note that for `B` to resolve its follow for `D`, it needs `C/D`, for which it needs to resolve the follow on `C` first.
|
# Note that for `B` to resolve its follow for `D`, it needs `C/D`, for which it needs to resolve the follow on `C` first.
|
||||||
flakeFollowsOverloadA="$TEST_ROOT/follows/overload/flakeA"
|
flakeFollowsOverloadA="$TEST_ROOT/follows/overload/flakeA"
|
||||||
flakeFollowsOverloadB="$TEST_ROOT/follows/overload/flakeA/flakeB"
|
flakeFollowsOverloadB="$TEST_ROOT/follows/overload/flakeA/flakeB"
|
||||||
|
|
|
@ -26,4 +26,3 @@ nix run --no-write-lock-file .#pkgAsPkg
|
||||||
! nix run --no-write-lock-file .#appAsPkg || fail "elements of 'apps' should be of type 'app'"
|
! nix run --no-write-lock-file .#appAsPkg || fail "elements of 'apps' should be of type 'app'"
|
||||||
|
|
||||||
clearStore
|
clearStore
|
||||||
|
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
echo Formatting: "${@}"
|
echo Formatting: "${@}"
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
source common.sh
|
source common.sh
|
||||||
|
|
||||||
set +x
|
set +x
|
||||||
|
|
|
@ -26,4 +26,4 @@ let {
|
||||||
inherit input2;
|
inherit input2;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Don't start the daemon
|
# Don't start the daemon
|
||||||
source common/vars-and-functions.sh
|
source common/vars-and-functions.sh
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
source common.sh
|
source common.sh
|
||||||
|
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
|
@ -27,4 +27,3 @@ mkDerivation (
|
||||||
normal = { };
|
normal = { };
|
||||||
}.${mode}
|
}.${mode}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -20,4 +20,4 @@ asdom 12398
|
||||||
EOF
|
EOF
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,4 +63,3 @@ grepQuiet 'item.*attrPath="foo".*name="dependencies-top"' $TEST_ROOT/meta.xml
|
||||||
# Do an install.
|
# Do an install.
|
||||||
nix-env -i dependencies-top
|
nix-env -i dependencies-top
|
||||||
[ -e $TEST_HOME/.nix-profile/foobar ]
|
[ -e $TEST_HOME/.nix-profile/foobar ]
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ clearStore
|
||||||
happy () {
|
happy () {
|
||||||
# We can do a read-only query just fine with a read-only store
|
# We can do a read-only query just fine with a read-only store
|
||||||
nix --store local?read-only=true path-info $dummyPath
|
nix --store local?read-only=true path-info $dummyPath
|
||||||
|
|
||||||
# We can "write" an already-present store-path a read-only store, because no IO is actually required
|
# We can "write" an already-present store-path a read-only store, because no IO is actually required
|
||||||
nix-store --store local?read-only=true --add dummy
|
nix-store --store local?read-only=true --add dummy
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,4 +14,3 @@ Commentary "the blank below should be chomped"
|
||||||
Command "command three"
|
Command "command three"
|
||||||
Commentary ""
|
Commentary ""
|
||||||
Output "meow output"
|
Output "meow output"
|
||||||
Output ""
|
|
||||||
|
|
|
@ -14,4 +14,3 @@ the blank below should be chomped
|
||||||
nix-repl> command three
|
nix-repl> command three
|
||||||
|
|
||||||
meow output
|
meow output
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#! @ENV_PROG@ nix-shell
|
#! @ENV_PROG@ nix-shell
|
||||||
#! nix-shell -I nixpkgs=shell.nix --no-substitute
|
#! nix-shell -I nixpkgs=shell.nix --no-substitute
|
||||||
#! nix-shell --argstr s1 'foo "bar" \baz'"'"'qux' --argstr s2 "foo 'bar' \"\baz" --argstr s3 \foo\ bar\'baz --argstr s4 ''
|
#! nix-shell --argstr s1 'foo "bar" \baz'"'"'qux' --argstr s2 "foo 'bar' \"\baz" --argstr s3 \foo\ bar\'baz --argstr s4 ''
|
||||||
#! nix-shell shell.shebang.nix --command true
|
#! nix-shell shell.shebang.nix --command true
|
||||||
{ s1, s2, s3, s4 }:
|
{ s1, s2, s3, s4 }:
|
||||||
assert s1 == ''foo "bar" \baz'qux'';
|
assert s1 == ''foo "bar" \baz'qux'';
|
||||||
|
|
0
tests/functional/shell.shebang.rb
Normal file → Executable file
0
tests/functional/shell.shebang.rb
Normal file → Executable file
|
@ -8,4 +8,4 @@ export PATH=$goodPath
|
||||||
|
|
||||||
mkdir $out
|
mkdir $out
|
||||||
|
|
||||||
echo "Hello World!" > $out/hello
|
echo "Hello World!" > $out/hello
|
||||||
|
|
|
@ -109,7 +109,7 @@ in
|
||||||
nix.package = lib.mkForce pkgs.nixVersions.nix_2_13;
|
nix.package = lib.mkForce pkgs.nixVersions.nix_2_13;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: (nixpkgs update) remoteBuildsSshNg_remote_2_18 = ...
|
# TODO: (nixpkgs update) remoteBuildsSshNg_remote_2_18 = ...
|
||||||
|
|
||||||
# Test our Nix as a builder for clients that are older
|
# Test our Nix as a builder for clients that are older
|
||||||
|
|
|
@ -48,4 +48,4 @@ in
|
||||||
""")
|
""")
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,4 +51,3 @@ namespace nix {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue