From d8dbb71c92ec60bf872b7c33d9ffa9c563233be8 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 22 Jan 2025 11:39:09 +0100 Subject: [PATCH] release notes: 2.26.0 --- doc/manual/rl-next/ignore-local-registries.md | 22 ------ doc/manual/rl-next/nix-copy-flags.md | 18 ----- doc/manual/rl-next/nix-instantiate-raw.md | 8 -- doc/manual/rl-next/nix-sshopts-parsing.md | 21 ------ doc/manual/rl-next/relative-path-flakes.md | 12 --- doc/manual/source/SUMMARY.md.in | 1 + doc/manual/source/release-notes/rl-2.26.md | 75 +++++++++++++++++++ 7 files changed, 76 insertions(+), 81 deletions(-) delete mode 100644 doc/manual/rl-next/ignore-local-registries.md delete mode 100644 doc/manual/rl-next/nix-copy-flags.md delete mode 100644 doc/manual/rl-next/nix-instantiate-raw.md delete mode 100644 doc/manual/rl-next/nix-sshopts-parsing.md delete mode 100644 doc/manual/rl-next/relative-path-flakes.md create mode 100644 doc/manual/source/release-notes/rl-2.26.md diff --git a/doc/manual/rl-next/ignore-local-registries.md b/doc/manual/rl-next/ignore-local-registries.md deleted file mode 100644 index 8d5e333dd..000000000 --- a/doc/manual/rl-next/ignore-local-registries.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -synopsis: "Flake lock file generation now ignores local registries" -prs: [12019] ---- - -When resolving indirect flake references like `nixpkgs` in `flake.nix` files, Nix will no longer use the system and user flake registries. It will only use the global flake registry and overrides given on the command line via `--override-flake`. - -This avoids accidents where users have local registry overrides that map `nixpkgs` to a `path:` flake in the local file system, which then end up in committed lock files pushed to other users. - -In the future, we may remove the use of the registry during lock file generation altogether. It's better to explicitly specify the URL of a flake input. For example, instead of -```nix -{ - outputs = { self, nixpkgs }: { ... }; -} -``` -write -```nix -{ - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; - outputs = { self, nixpkgs }: { ... }; -} -``` diff --git a/doc/manual/rl-next/nix-copy-flags.md b/doc/manual/rl-next/nix-copy-flags.md deleted file mode 100644 index f5b2b9716..000000000 --- a/doc/manual/rl-next/nix-copy-flags.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -synopsis: "`nix copy` supports `--profile` and `--out-link`" -prs: [11657] ---- - -The `nix copy` command now has flags `--profile` and `--out-link`, similar to `nix build`. `--profile` makes a profile point to the -top-level store path, while `--out-link` create symlinks to the top-level store paths. - -For example, when updating the local NixOS system profile from a NixOS system closure on a remote machine, instead of -``` -# nix copy --from ssh://server $path -# nix build --profile /nix/var/nix/profiles/system $path -``` -you can now do -``` -# nix copy --from ssh://server --profile /nix/var/nix/profiles/system $path -``` -The advantage is that this avoids a time window where *path* is not a garbage collector root, and so could be deleted by a concurrent `nix store gc` process. diff --git a/doc/manual/rl-next/nix-instantiate-raw.md b/doc/manual/rl-next/nix-instantiate-raw.md deleted file mode 100644 index fb4a72b88..000000000 --- a/doc/manual/rl-next/nix-instantiate-raw.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -synopsis: "`nix-instantiate --eval` now supports `--raw`" -prs: [12119] ---- - -The `nix-instantiate --eval` command now supports a `--raw` flag, when used -the evaluation result must be a string, which is printed verbatim without -quotation marks or escaping. diff --git a/doc/manual/rl-next/nix-sshopts-parsing.md b/doc/manual/rl-next/nix-sshopts-parsing.md deleted file mode 100644 index 65fe6f562..000000000 --- a/doc/manual/rl-next/nix-sshopts-parsing.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -synopsis: "Improved `NIX_SSHOPTS` parsing for better SSH option handling" -issues: [5181] -prs: [12020] ---- - -The parsing of the `NIX_SSHOPTS` environment variable has been improved to handle spaces and quotes correctly. -Previously, incorrectly split SSH options could cause failures in CLIs like `nix-copy-closure`, -especially when using complex ssh invocations such as `-o ProxyCommand="ssh -W %h:%p ..."`. - -This change introduces a `shellSplitString` function to ensure -that `NIX_SSHOPTS` is parsed in a manner consistent with shell -behavior, addressing common parsing errors. - -For example, the following now works as expected: - -```bash -export NIX_SSHOPTS='-o ProxyCommand="ssh -W %h:%p ..."' -``` - -This update improves the reliability of SSH-related operations using `NIX_SSHOPTS` across Nix CLIs. diff --git a/doc/manual/rl-next/relative-path-flakes.md b/doc/manual/rl-next/relative-path-flakes.md deleted file mode 100644 index 3616f3467..000000000 --- a/doc/manual/rl-next/relative-path-flakes.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -synopsis: "Support for relative path inputs" -prs: [10089] ---- - -Flakes can now refer to other flakes in the same repository using relative paths, e.g. -```nix -inputs.foo.url = "path:./foo"; -``` -uses the flake in the `foo` subdirectory of the referring flake. For more information, see the documentation on [the `path` flake input type](@docroot@/command-ref/new-cli/nix3-flake.md#path-fetcher). - -This feature required a change to the lock file format. Previous Nix versions will not be able to use lock files that have locks for relative path inputs in them. diff --git a/doc/manual/source/SUMMARY.md.in b/doc/manual/source/SUMMARY.md.in index 244bf582d..a92bca42f 100644 --- a/doc/manual/source/SUMMARY.md.in +++ b/doc/manual/source/SUMMARY.md.in @@ -130,6 +130,7 @@ - [Contributing](development/contributing.md) - [Releases](release-notes/index.md) {{#include ./SUMMARY-rl-next.md}} + - [Release 2.26 (2025-01-22)](release-notes/rl-2.26.md) - [Release 2.25 (2024-11-07)](release-notes/rl-2.25.md) - [Release 2.24 (2024-07-31)](release-notes/rl-2.24.md) - [Release 2.23 (2024-06-03)](release-notes/rl-2.23.md) diff --git a/doc/manual/source/release-notes/rl-2.26.md b/doc/manual/source/release-notes/rl-2.26.md new file mode 100644 index 000000000..6bd77003a --- /dev/null +++ b/doc/manual/source/release-notes/rl-2.26.md @@ -0,0 +1,75 @@ +# Release 2.26.0 (2025-01-22) + +- Support for relative path inputs [#10089](https://github.com/NixOS/nix/pull/10089) + + Flakes can now refer to other flakes in the same repository using relative paths, e.g. + ```nix + inputs.foo.url = "path:./foo"; + ``` + uses the flake in the `foo` subdirectory of the referring flake. For more information, see the documentation on [the `path` flake input type](@docroot@/command-ref/new-cli/nix3-flake.md#path-fetcher). + + This feature required a change to the lock file format. Previous Nix versions will not be able to use lock files that have locks for relative path inputs in them. + +- Flake lock file generation now ignores local registries [#12019](https://github.com/NixOS/nix/pull/12019) + + When resolving indirect flake references like `nixpkgs` in `flake.nix` files, Nix will no longer use the system and user flake registries. It will only use the global flake registry and overrides given on the command line via `--override-flake`. + + This avoids accidents where users have local registry overrides that map `nixpkgs` to a `path:` flake in the local file system, which then end up in committed lock files pushed to other users. + + In the future, we may remove the use of the registry during lock file generation altogether. It's better to explicitly specify the URL of a flake input. For example, instead of + ```nix + { + outputs = { self, nixpkgs }: { ... }; + } + ``` + write + ```nix + { + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + outputs = { self, nixpkgs }: { ... }; + } + ``` + +- `nix copy` supports `--profile` and `--out-link` [#11657](https://github.com/NixOS/nix/pull/11657) + + The `nix copy` command now has flags `--profile` and `--out-link`, similar to `nix build`. `--profile` makes a profile point to the + top-level store path, while `--out-link` create symlinks to the top-level store paths. + + For example, when updating the local NixOS system profile from a NixOS system closure on a remote machine, instead of + ``` + # nix copy --from ssh://server $path + # nix build --profile /nix/var/nix/profiles/system $path + ``` + you can now do + ``` + # nix copy --from ssh://server --profile /nix/var/nix/profiles/system $path + ``` + The advantage is that this avoids a time window where *path* is not a garbage collector root, and so could be deleted by a concurrent `nix store gc` process. + +- `nix-instantiate --eval` now supports `--raw` [#12119](https://github.com/NixOS/nix/pull/12119) + + The `nix-instantiate --eval` command now supports a `--raw` flag, when used + the evaluation result must be a string, which is printed verbatim without + quotation marks or escaping. + +- Improved `NIX_SSHOPTS` parsing for better SSH option handling [#5181](https://github.com/NixOS/nix/issues/5181) [#12020](https://github.com/NixOS/nix/pull/12020) + + The parsing of the `NIX_SSHOPTS` environment variable has been improved to handle spaces and quotes correctly. + Previously, incorrectly split SSH options could cause failures in commands like `nix-copy-closure`, + especially when using complex SSH invocations such as `-o ProxyCommand="ssh -W %h:%p ..."`. + + This change introduces a `shellSplitString` function to ensure + that `NIX_SSHOPTS` is parsed in a manner consistent with shell + behavior, addressing common parsing errors. + + For example, the following now works as expected: + + ```bash + export NIX_SSHOPTS='-o ProxyCommand="ssh -W %h:%p ..."' + ``` + + This update improves the reliability of SSH-related operations using `NIX_SSHOPTS` across Nix CLIs. + +# Contributors + +Querying GitHub API for f0c209fb14cb511370ea2b7787d9a8dd90070162, to get handle for kusold@users.noreply.github.com