diff --git a/doc/builders/fetchers.chapter.md b/doc/builders/fetchers.chapter.md
index 12d8a5d887f..43aead0ad5e 100644
--- a/doc/builders/fetchers.chapter.md
+++ b/doc/builders/fetchers.chapter.md
@@ -100,10 +100,10 @@ stdenv.mkDerivation {
name = "hello";
src = fetchgit {
url = "https://...";
- sparseCheckout = ''
- directory/to/be/included
- another/directory
- '';
+ sparseCheckout = [
+ "directory/to/be/included"
+ "another/directory"
+ ];
sha256 = "0000000000000000000000000000000000000000000000000000";
};
}
diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index 8e97e58f81a..e681e33d71c 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -580,6 +580,15 @@
future Git update without notice.
+
+
+ The fetchgit fetcher supports sparse
+ checkouts via the sparseCheckout option.
+ This used to accept a multi-line string with
+ directories/patterns to check out, but now requires a list of
+ strings.
+
+
openssh was updated to version 9.1,
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index ecfba7215c8..f08d17a7dfc 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -191,6 +191,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The `fetchgit` fetcher now uses [cone mode](https://www.git-scm.com/docs/git-sparse-checkout/2.37.0#_internalscone_mode_handling) by default for sparse checkouts. [Non-cone mode](https://www.git-scm.com/docs/git-sparse-checkout/2.37.0#_internalsnon_cone_problems) can be enabled by passing `nonConeMode = true`, but note that non-cone mode is deprecated and this option may be removed alongside a future Git update without notice.
+- The `fetchgit` fetcher supports sparse checkouts via the `sparseCheckout` option. This used to accept a multi-line string with directories/patterns to check out, but now requires a list of strings.
+
- `openssh` was updated to version 9.1, disabling the generation of DSA keys when using `ssh-keygen -A` as they are insecure. Also, `SetEnv` directives in `ssh_config` and `sshd_config` are now first-match-wins
- `bsp-layout` no longer uses the command `cycle` to switch to other window layouts, as it got replaced by the commands `previous` and `next`.
diff --git a/pkgs/applications/misc/nerd-font-patcher/default.nix b/pkgs/applications/misc/nerd-font-patcher/default.nix
index e865479f8da..21c77316c1a 100644
--- a/pkgs/applications/misc/nerd-font-patcher/default.nix
+++ b/pkgs/applications/misc/nerd-font-patcher/default.nix
@@ -9,10 +9,10 @@ python3Packages.buildPythonApplication rec {
owner = "ryanoasis";
repo = "nerd-fonts";
rev = "v${version}";
- sparseCheckout = ''
- font-patcher
- /src/glyphs
- '';
+ sparseCheckout = [
+ "font-patcher"
+ "/src/glyphs"
+ ];
sha256 = "sha256-boZUd1PM8puc9BTgOwCJpkfk6VMdXLsIyp+fQmW/ZqI=";
};
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix
index f516c3d5a03..1fec0c88747 100644
--- a/pkgs/build-support/fetchgit/default.nix
+++ b/pkgs/build-support/fetchgit/default.nix
@@ -15,7 +15,7 @@ in
{ url, rev ? "HEAD", md5 ? "", sha256 ? "", hash ? "", leaveDotGit ? deepClone
, fetchSubmodules ? true, deepClone ? false
, branchName ? null
-, sparseCheckout ? ""
+, sparseCheckout ? []
, nonConeMode ? false
, name ? urlToName url rev
, # Shell code executed after the file has been fetched
@@ -55,13 +55,16 @@ in
*/
assert deepClone -> leaveDotGit;
-assert nonConeMode -> (sparseCheckout != "");
+assert nonConeMode -> !(sparseCheckout == "" || sparseCheckout == []);
if md5 != "" then
throw "fetchgit does not support md5 anymore, please use sha256"
else if hash != "" && sha256 != "" then
throw "Only one of sha256 or hash can be set"
else
+# Added 2022-11-12
+lib.warnIf (builtins.isString sparseCheckout)
+ "Please provide directories/patterns for sparse checkout as a list of strings. Support for passing a (multi-line) string is deprecated and will be removed in the next release."
stdenvNoCC.mkDerivation {
inherit name;
builder = ./builder.sh;
@@ -79,7 +82,12 @@ stdenvNoCC.mkDerivation {
else
lib.fakeSha256;
- inherit url rev leaveDotGit fetchLFS fetchSubmodules deepClone branchName sparseCheckout nonConeMode postFetch;
+ # git-sparse-checkout(1) says:
+ # > When the --stdin option is provided, the directories or patterns are read
+ # > from standard in as a newline-delimited list instead of from the arguments.
+ sparseCheckout = if builtins.isString sparseCheckout then sparseCheckout else builtins.concatStringsSep "\n" sparseCheckout;
+
+ inherit url rev leaveDotGit fetchLFS fetchSubmodules deepClone branchName nonConeMode postFetch;
postHook = if netrcPhase == null then null else ''
${netrcPhase}
diff --git a/pkgs/build-support/fetchgit/tests.nix b/pkgs/build-support/fetchgit/tests.nix
index 62fe3f77bbd..a18be65327b 100644
--- a/pkgs/build-support/fetchgit/tests.nix
+++ b/pkgs/build-support/fetchgit/tests.nix
@@ -12,10 +12,10 @@
name = "nix-source";
url = "https://github.com/NixOS/nix";
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
- sparseCheckout = ''
- src
- tests
- '';
+ sparseCheckout = [
+ "src"
+ "tests"
+ ];
sha256 = "sha256-g1PHGTWgAcd/+sXHo1o6AjVWCvC6HiocOfMbMh873LQ=";
};
@@ -23,10 +23,10 @@
name = "nix-source";
url = "https://github.com/NixOS/nix";
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
- sparseCheckout = ''
- src
- tests
- '';
+ sparseCheckout = [
+ "src"
+ "tests"
+ ];
nonConeMode = true;
sha256 = "sha256-FknO6C/PSnMPfhUqObD4vsW4PhkwdmPa9blNzcNvJQ4=";
};
diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix
index cfb6a6ca7cd..fcde7447cbd 100644
--- a/pkgs/build-support/fetchgithub/default.nix
+++ b/pkgs/build-support/fetchgithub/default.nix
@@ -3,7 +3,7 @@
{ owner, repo, rev, name ? "source"
, fetchSubmodules ? false, leaveDotGit ? null
, deepClone ? false, private ? false, forceFetchGit ? false
-, sparseCheckout ? ""
+, sparseCheckout ? []
, githubBase ? "github.com", varPrefix ? null
, meta ? { }
, ... # For hash agility
@@ -24,7 +24,7 @@ let
};
passthruAttrs = removeAttrs args [ "owner" "repo" "rev" "fetchSubmodules" "forceFetchGit" "private" "githubBase" "varPrefix" ];
varBase = "NIX${if varPrefix == null then "" else "_${varPrefix}"}_GITHUB_PRIVATE_";
- useFetchGit = fetchSubmodules || (leaveDotGit == true) || deepClone || forceFetchGit || (sparseCheckout != "");
+ useFetchGit = fetchSubmodules || (leaveDotGit == true) || deepClone || forceFetchGit || !(sparseCheckout == "" || sparseCheckout == []);
# We prefer fetchzip in cases we don't need submodules as the hash
# is more stable in that case.
fetcher = if useFetchGit then fetchgit else fetchzip;
diff --git a/pkgs/data/fonts/noto-fonts/default.nix b/pkgs/data/fonts/noto-fonts/default.nix
index 019ed1f371c..da3b0f81d43 100644
--- a/pkgs/data/fonts/noto-fonts/default.nix
+++ b/pkgs/data/fonts/noto-fonts/default.nix
@@ -71,7 +71,7 @@ let
owner = "googlefonts";
repo = "noto-cjk";
inherit rev sha256;
- sparseCheckout = "${typeface}/Variable/OTC";
+ sparseCheckout = [ "${typeface}/Variable/OTC" ];
};
installPhase = ''
diff --git a/pkgs/data/icons/beauty-line-icon-theme/default.nix b/pkgs/data/icons/beauty-line-icon-theme/default.nix
index 66e5ac57dd1..dc332b0fc32 100644
--- a/pkgs/data/icons/beauty-line-icon-theme/default.nix
+++ b/pkgs/data/icons/beauty-line-icon-theme/default.nix
@@ -18,9 +18,9 @@ stdenvNoCC.mkDerivation rec {
owner = "gvolpe";
repo = pname;
rev = version;
- sparseCheckout = ''
- BeautyLine-V3
- '';
+ sparseCheckout = [
+ "BeautyLine-V3"
+ ];
sha256 = "sha256-IkkypAj250+OXbf19TampCnqYsSbJVIjeYlxJoyhpzk=";
};
diff --git a/pkgs/data/misc/colemak-dh/default.nix b/pkgs/data/misc/colemak-dh/default.nix
index f36832ff42d..261a7741f16 100644
--- a/pkgs/data/misc/colemak-dh/default.nix
+++ b/pkgs/data/misc/colemak-dh/default.nix
@@ -12,7 +12,7 @@ stdenvNoCC.mkDerivation rec {
repo = "mod-dh";
rev = "e846a5bd24d59ed15ba70b3a9d5363a38ca51d09";
sha256 = "sha256-RFOpN+tIMfakb7AZN0ock9eq2mytvL0DWedvQV67+ks=";
- sparseCheckout = "console";
+ sparseCheckout = [ "console" ];
};
phases = [ "unpackPhase" "installPhase" ];
diff --git a/pkgs/games/itch/default.nix b/pkgs/games/itch/default.nix
index 7aed72dd531..5776a1b43b2 100644
--- a/pkgs/games/itch/default.nix
+++ b/pkgs/games/itch/default.nix
@@ -41,7 +41,7 @@ stdenvNoCC.mkDerivation rec {
repo = pname;
rev = "v${version}";
hash = "sha256-DZBmf8fe0zw5uiQjNKXw8g/vU2hjNDa87z/7XuhyXog=";
- inherit sparseCheckout;
+ sparseCheckout = [ sparseCheckout ];
} + sparseCheckout;
nativeBuildInputs = [ copyDesktopItems makeWrapper ];