about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--tvix/nix-compat/src/narinfo/mod.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/tvix/nix-compat/src/narinfo/mod.rs b/tvix/nix-compat/src/narinfo/mod.rs
index bfe81901b2a7..22afdc8a5c5d 100644
--- a/tvix/nix-compat/src/narinfo/mod.rs
+++ b/tvix/nix-compat/src/narinfo/mod.rs
@@ -86,6 +86,9 @@ bitflags! {
         const NAR_HASH_HEX = 1 << 3;
 
         /// Deriver: unknown-deriver, produced by a legacy tool
+        ///
+        /// Only relevant if [NarInfo::deriver] is [None],
+        /// but valid to have set either way.
         const EXPLICIT_UNKNOWN_DERIVER = 1 << 4;
     }
 }
@@ -368,6 +371,8 @@ impl Display for NarInfo<'_> {
 
         if let Some(deriver) = &self.deriver {
             writeln!(w, "Deriver: {deriver}.drv")?;
+        } else if self.flags.contains(Flags::EXPLICIT_UNKNOWN_DERIVER) {
+            writeln!(w, "Deriver: unknown-deriver")?;
         }
 
         if let Some(system) = self.system {
@@ -549,7 +554,7 @@ Sig: cache.nixos.org-1:92fl0i5q7EyegCj5Yf4L0bENkWuVAtgveiRcTEEUH0P6HvCE1xFcPbz/0
     fn explicit_unknown_deriver() {
         // This is a NARInfo "produced by a legacy tool" according to Nix commit
         // c60715e937e3773bbb8a114fc9b9c6577f8c5cb5
-        let parsed = NarInfo::parse(r#"StorePath: /nix/store/00bgd045z0d4icpbc2yyz4gx48ak44la-net-tools-1.60_p20170221182432
+        let input = r#"StorePath: /nix/store/00bgd045z0d4icpbc2yyz4gx48ak44la-net-tools-1.60_p20170221182432
 URL: nar/1094wph9z4nwlgvsd53abfz8i117ykiv5dwnq9nnhz846s7xqd7d.nar.xz
 Compression: xz
 FileHash: sha256:1094wph9z4nwlgvsd53abfz8i117ykiv5dwnq9nnhz846s7xqd7d
@@ -560,10 +565,12 @@ References: 7gx4kiv5m0i7d7qkixq2cwzbr10lvxwc-glibc-2.27
 Deriver: unknown-deriver
 Sig: cache.nixos.org-1:sn5s/RrqEI+YG6/PjwdbPjcAC7rcta7sJU4mFOawGvJBLsWkyLtBrT2EuFt/LJjWkTZ+ZWOI9NTtjo/woMdvAg==
 Sig: hydra.other.net-1:JXQ3Z/PXf0EZSFkFioa4FbyYpbbTbHlFBtZf4VqU0tuMTWzhMD7p9Q7acJjLn3jofOtilAAwRILKIfVuyrbjAA==
-"#).expect("should parse");
+"#;
+        let parsed = NarInfo::parse(input).expect("should parse");
 
         assert!(parsed.flags.contains(Flags::EXPLICIT_UNKNOWN_DERIVER));
         assert!(parsed.deriver.is_none());
+        assert_eq!(parsed.to_string(), input);
     }
 
     #[test]