From 3384f70a3d5ee7bd1d1bf5fa48809c4eac5c8041 Mon Sep 17 00:00:00 2001
From: Robert Hensing <robert@roberthensing.nl>
Date: Fri, 11 Aug 2023 15:58:43 +0200
Subject: [PATCH 1/7] nixpkgsLibTests: Only test our Nix

Interface has changed upstream.
It *should* be fine to test 23.05's other Nix versions as those
*should* succeed, but that's not the case and it's obfuscating
our terrible CI setup's log.
---
 flake.nix | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/flake.nix b/flake.nix
index cf7c1fa12..36ba61484 100644
--- a/flake.nix
+++ b/flake.nix
@@ -656,7 +656,9 @@
         tests.nixpkgsLibTests =
           forAllSystems (system:
             import (nixpkgs + "/lib/tests/release.nix")
-              { pkgs = nixpkgsFor.${system}.native; }
+              { pkgs = nixpkgsFor.${system}.native;
+                nixVersions = [ self.packages.${system}.nix ];
+              }
           );
 
         metrics.nixpkgs = import "${nixpkgs-regression}/pkgs/top-level/metrics.nix" {

From be3362e74782e47b9546de94be97f53540ddfe9e Mon Sep 17 00:00:00 2001
From: Robert Hensing <robert@roberthensing.nl>
Date: Mon, 14 Aug 2023 14:28:02 +0200
Subject: [PATCH 2/7] Fix nix-copy test

---
 tests/nixos/nix-copy.nix | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tests/nixos/nix-copy.nix b/tests/nixos/nix-copy.nix
index ef053de03..2981cc2b8 100644
--- a/tests/nixos/nix-copy.nix
+++ b/tests/nixos/nix-copy.nix
@@ -1,4 +1,6 @@
 # Test that ‘nix copy’ works over ssh.
+# Run interactively with:
+# rm key key.pub; nix run .#hydraJobs.tests.nix-copy.driverInteractive
 
 { lib, config, nixpkgs, hostPkgs, ... }:
 
@@ -55,7 +57,9 @@ in {
     server.wait_for_unit("sshd")
     client.wait_for_unit("network.target")
     client.wait_for_unit("getty@tty1.service")
-    client.wait_for_text("]#")
+    # Either the prompt: ]#
+    # or an OCR misreading of it: 1#
+    client.wait_for_text("[]1]#")
 
     # Copy the closure of package A from the client to the server using password authentication,
     # and check that all prompts are visible

From 539cc5e5f00c0d524dec6e73b08ab8cb0f5a9630 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= <vladimir.cunat@nic.cz>
Date: Thu, 22 Jun 2023 11:08:56 +0200
Subject: [PATCH 3/7] flake: update nixpkgs: 22.11 -> 23.05

The lowdown input can't be updated; `nix build` would fail to find it.

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
---
 flake.lock | 8 ++++----
 flake.nix  | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/flake.lock b/flake.lock
index 1d2aab5ed..2bc503258 100644
--- a/flake.lock
+++ b/flake.lock
@@ -34,16 +34,16 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1670461440,
-        "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=",
+        "lastModified": 1693494129,
+        "narHash": "sha256-YrHlSbniFmhcz0ORe8MMFttifKR4hTRzyX2OQUO9VxA=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425",
+        "rev": "22a584b861ab31a2dca52121999079832f0e0f73",
         "type": "github"
       },
       "original": {
         "owner": "NixOS",
-        "ref": "nixos-22.11-small",
+        "ref": "nixos-23.05-small",
         "repo": "nixpkgs",
         "type": "github"
       }
diff --git a/flake.nix b/flake.nix
index 36ba61484..49aa9c4ce 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,7 +1,7 @@
 {
   description = "The purely functional package manager";
 
-  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11-small";
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05-small";
   inputs.nixpkgs-regression.url = "github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2";
   inputs.lowdown-src = { url = "github:kristapsdz/lowdown"; flake = false; };
   inputs.flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };

From c8afa01bc25ba81883f8007ef83532ca550c731d Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 19 Sep 2023 14:51:50 +0200
Subject: [PATCH 4/7] Try aws-sdk-cpp fix

---
 flake.lock | 12 ++++++------
 flake.nix  |  3 ++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/flake.lock b/flake.lock
index 2bc503258..75b6ae6a7 100644
--- a/flake.lock
+++ b/flake.lock
@@ -34,16 +34,16 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1693494129,
-        "narHash": "sha256-YrHlSbniFmhcz0ORe8MMFttifKR4hTRzyX2OQUO9VxA=",
-        "owner": "NixOS",
+        "lastModified": 1695124524,
+        "narHash": "sha256-trXDytVCqf3KryQQQrHOZKUabu1/lB8/ndOAuZKQrOE=",
+        "owner": "edolstra",
         "repo": "nixpkgs",
-        "rev": "22a584b861ab31a2dca52121999079832f0e0f73",
+        "rev": "a3d30b525535e3158221abc1a957ce798ab159fe",
         "type": "github"
       },
       "original": {
-        "owner": "NixOS",
-        "ref": "nixos-23.05-small",
+        "owner": "edolstra",
+        "ref": "fix-aws-sdk-cpp",
         "repo": "nixpkgs",
         "type": "github"
       }
diff --git a/flake.nix b/flake.nix
index 49aa9c4ce..249da2a04 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,7 +1,8 @@
 {
   description = "The purely functional package manager";
 
-  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05-small";
+  #inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05-small";
+  inputs.nixpkgs.url = "github:edolstra/nixpkgs/fix-aws-sdk-cpp";
   inputs.nixpkgs-regression.url = "github:NixOS/nixpkgs/215d4d0fd80ca5163643b03a33fde804a29cc1e2";
   inputs.lowdown-src = { url = "github:kristapsdz/lowdown"; flake = false; };
   inputs.flake-compat = { url = "github:edolstra/flake-compat"; flake = false; };

From 126e2645f2a060197655f9a699ffa4dc3a464bdd Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 19 Sep 2023 16:04:00 +0200
Subject: [PATCH 5/7] Disable rapidcheck tests in the coverage run

https://hydra.nixos.org/build/233688539
---
 flake.nix                          | 2 ++
 src/libexpr/tests/derived-path.cc  | 4 ++++
 src/libexpr/tests/value/context.cc | 4 ++++
 src/libstore/tests/derived-path.cc | 4 ++++
 src/libstore/tests/outputs-spec.cc | 4 ++++
 src/libstore/tests/path.cc         | 4 ++++
 6 files changed, 22 insertions(+)

diff --git a/flake.nix b/flake.nix
index 249da2a04..dfb2dc1f8 100644
--- a/flake.nix
+++ b/flake.nix
@@ -588,6 +588,8 @@
             lcovFilter = [ "*/boost/*" "*-tab.*" ];
 
             hardeningDisable = ["fortify"];
+
+            NIX_CFLAGS_COMPILE = "-DCOVERAGE=1";
           };
 
         # API docs for Nix's unstable internal C++ interfaces.
diff --git a/src/libexpr/tests/derived-path.cc b/src/libexpr/tests/derived-path.cc
index d01735db8..d5fc6f201 100644
--- a/src/libexpr/tests/derived-path.cc
+++ b/src/libexpr/tests/derived-path.cc
@@ -18,6 +18,8 @@ TEST_F(DerivedPathExpressionTest, force_init)
 {
 }
 
+#ifndef COVERAGE
+
 RC_GTEST_FIXTURE_PROP(
     DerivedPathExpressionTest,
     prop_opaque_path_round_trip,
@@ -61,4 +63,6 @@ RC_GTEST_FIXTURE_PROP(
     RC_ASSERT(SingleDerivedPath { b } == d);
 }
 
+#endif
+
 } /* namespace nix */
diff --git a/src/libexpr/tests/value/context.cc b/src/libexpr/tests/value/context.cc
index 19407d071..92d4889ab 100644
--- a/src/libexpr/tests/value/context.cc
+++ b/src/libexpr/tests/value/context.cc
@@ -147,6 +147,8 @@ Gen<NixStringContextElem> Arbitrary<NixStringContextElem>::arbitrary()
 
 namespace nix {
 
+#ifndef COVERAGE
+
 RC_GTEST_PROP(
     NixStringContextElemTest,
     prop_round_rip,
@@ -155,4 +157,6 @@ RC_GTEST_PROP(
     RC_ASSERT(o == NixStringContextElem::parse(o.to_string()));
 }
 
+#endif
+
 }
diff --git a/src/libstore/tests/derived-path.cc b/src/libstore/tests/derived-path.cc
index d6549f66f..3fa3c0801 100644
--- a/src/libstore/tests/derived-path.cc
+++ b/src/libstore/tests/derived-path.cc
@@ -130,6 +130,8 @@ TEST_F(DerivedPathTest, built_built_xp) {
         MissingExperimentalFeature);
 }
 
+#ifndef COVERAGE
+
 RC_GTEST_FIXTURE_PROP(
     DerivedPathTest,
     prop_legacy_round_rip,
@@ -146,4 +148,6 @@ RC_GTEST_FIXTURE_PROP(
     RC_ASSERT(o == DerivedPath::parse(*store, o.to_string(*store)));
 }
 
+#endif
+
 }
diff --git a/src/libstore/tests/outputs-spec.cc b/src/libstore/tests/outputs-spec.cc
index bf8deaa9d..952945185 100644
--- a/src/libstore/tests/outputs-spec.cc
+++ b/src/libstore/tests/outputs-spec.cc
@@ -224,6 +224,8 @@ Gen<OutputsSpec> Arbitrary<OutputsSpec>::arbitrary()
 
 namespace nix {
 
+#ifndef COVERAGE
+
 RC_GTEST_PROP(
     OutputsSpec,
     prop_round_rip,
@@ -232,4 +234,6 @@ RC_GTEST_PROP(
     RC_ASSERT(o == OutputsSpec::parse(o.to_string()));
 }
 
+#endif
+
 }
diff --git a/src/libstore/tests/path.cc b/src/libstore/tests/path.cc
index 430aa0099..efa35ef2b 100644
--- a/src/libstore/tests/path.cc
+++ b/src/libstore/tests/path.cc
@@ -134,6 +134,8 @@ Gen<StorePath> Arbitrary<StorePath>::arbitrary()
 
 namespace nix {
 
+#ifndef COVERAGE
+
 RC_GTEST_FIXTURE_PROP(
     StorePathTest,
     prop_regex_accept,
@@ -150,4 +152,6 @@ RC_GTEST_FIXTURE_PROP(
     RC_ASSERT(p == store->parseStorePath(store->printStorePath(p)));
 }
 
+#endif
+
 }

From c6953d1ff62fb6dc4fbd89c03e7949c552c19382 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 19 Sep 2023 17:03:21 +0200
Subject: [PATCH 6/7] Disable systemd-nspawn test

This is broken because of a change in systemd in NixOS 23.05. It fails
with

  Failed to mount proc (type proc) on /proc (MS_NOSUID|MS_NODEV|MS_NOEXEC ""): Operation not permitted
---
 tests/nixos/containers/containers.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/nixos/containers/containers.nix b/tests/nixos/containers/containers.nix
index c8ee78a4a..e721be48f 100644
--- a/tests/nixos/containers/containers.nix
+++ b/tests/nixos/containers/containers.nix
@@ -56,8 +56,8 @@
     host.fail("nix build -v --auto-allocate-uids --no-sandbox -L --offline --impure --file ${./id-test.nix} --argstr name id-test-6 --arg uidRange true")
 
     # Run systemd-nspawn in a Nix build.
-    host.succeed("nix build -v --auto-allocate-uids --sandbox -L --offline --impure --file ${./systemd-nspawn.nix} --argstr nixpkgs ${nixpkgs}")
-    host.succeed("[[ $(cat ./result/msg) = 'Hello World' ]]")
+    #host.succeed("nix build -v --auto-allocate-uids --sandbox -L --offline --impure --file ${./systemd-nspawn.nix} --argstr nixpkgs ${nixpkgs}")
+    #host.succeed("[[ $(cat ./result/msg) = 'Hello World' ]]")
   '';
 
 }

From b6b2a0aea99995d73f0faa6115fb33a137e57b23 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <edolstra@gmail.com>
Date: Tue, 19 Sep 2023 17:21:07 +0200
Subject: [PATCH 7/7] Use "touch -h"

https://hydra.nixos.org/build/235888160

This is needed because Nixpkgs now contains dangling symlinks
(pkgs/test/nixpkgs-check-by-name/tests/symlink-invalid/pkgs/by-name/fo/foo/foo.nix).
---
 tests/nixos/github-flakes.nix    | 2 +-
 tests/nixos/sourcehut-flakes.nix | 2 +-
 tests/nixos/tarball-flakes.nix   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/nixos/github-flakes.nix b/tests/nixos/github-flakes.nix
index e4d347691..6de702d17 100644
--- a/tests/nixos/github-flakes.nix
+++ b/tests/nixos/github-flakes.nix
@@ -82,7 +82,7 @@ let
       dir=NixOS-nixpkgs-${nixpkgs.shortRev}
       cp -prd ${nixpkgs} $dir
       # Set the correct timestamp in the tarball.
-      find $dir -print0 | xargs -0 touch -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
+      find $dir -print0 | xargs -0 touch -h -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
       tar cfz $out/archive/${nixpkgs.rev}.tar.gz $dir --hard-dereference
     '';
 in
diff --git a/tests/nixos/sourcehut-flakes.nix b/tests/nixos/sourcehut-flakes.nix
index a76fed020..6e8d884a0 100644
--- a/tests/nixos/sourcehut-flakes.nix
+++ b/tests/nixos/sourcehut-flakes.nix
@@ -47,7 +47,7 @@ let
       cp -prd ${nixpkgs} $dir
 
       # Set the correct timestamp in the tarball.
-      find $dir -print0 | xargs -0 touch -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
+      find $dir -print0 | xargs -0 touch -h -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
 
       mkdir -p $out/archive
       tar cfz $out/archive/${nixpkgs.rev}.tar.gz $dir --hard-dereference
diff --git a/tests/nixos/tarball-flakes.nix b/tests/nixos/tarball-flakes.nix
index 1d43a5d04..e30d15739 100644
--- a/tests/nixos/tarball-flakes.nix
+++ b/tests/nixos/tarball-flakes.nix
@@ -11,7 +11,7 @@ let
       dir=nixpkgs-${nixpkgs.shortRev}
       cp -prd ${nixpkgs} $dir
       # Set the correct timestamp in the tarball.
-      find $dir -print0 | xargs -0 touch -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
+      find $dir -print0 | xargs -0 touch -h -t ${builtins.substring 0 12 nixpkgs.lastModifiedDate}.${builtins.substring 12 2 nixpkgs.lastModifiedDate} --
       tar cfz $out/stable/${nixpkgs.rev}.tar.gz $dir --hard-dereference
 
       echo 'Redirect "/latest.tar.gz" "/stable/${nixpkgs.rev}.tar.gz"' > $out/.htaccess