about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--third_party/overlays/tvl.nix14
-rw-r--r--tvix/Cargo.nix38
-rw-r--r--tvix/default.nix2
3 files changed, 32 insertions, 22 deletions
diff --git a/third_party/overlays/tvl.nix b/third_party/overlays/tvl.nix
index 69b119a489..ec7506ee41 100644
--- a/third_party/overlays/tvl.nix
+++ b/third_party/overlays/tvl.nix
@@ -1,6 +1,6 @@
 # This overlay is used to make TVL-specific modifications in the
 # nixpkgs tree, where required.
-{ depot, localSystem, ... }:
+{ lib, depot, localSystem, ... }:
 
 self: super:
 let
@@ -109,20 +109,20 @@ depot.nix.readTree.drvTargets {
   }));
 
   # Pin a newer version of crate2nix from git, which is not officially
-  # released but supports `dep:`
+  # released but supports `dep:` and conditional features
   crate2nix = super.crate2nix.overrideAttrs (old: rec {
-    version = "0.11.0-rc.1";
+    version = "unstable-2023-09-26";
 
     src = self.fetchFromGitHub {
-      owner = "kolloch";
+      owner = "nix-community";
       repo = "crate2nix";
-      rev = "v0.11.0-rc.1";
-      hash = "sha256:02yvn61w16sgkdxa019l5y9i2ybyk8h4516718gmarqxx5ws2kz8";
+      rev = "8a33aec8795dcc98afbb0cd1030bb1c939ede211";
+      hash = "sha256-eFT2SUxTopxEvW0rcxSjQU6nbrQLI2FbyaVgtV8oiTk=";
     };
 
     cargoDeps = old.cargoDeps.overrideAttrs (_: {
       inherit src;
-      outputHash = "sha256:03yny9ikqzfpi2mr27r82g54an2s8k9lqi2i4fqalg7g0s2cr2yd";
+      outputHash = "sha256-elEIWHxyY3iccprIcbQA6GWFiq/n5kozpGfw/OmoSIg=";
     });
   });
 }
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix
index 297825787a..f88f64291a 100644
--- a/tvix/Cargo.nix
+++ b/tvix/Cargo.nix
@@ -1,5 +1,5 @@
-# This file was @generated by crate2nix 0.10.0 with the command:
-#   "generate"
+# This file was @generated by crate2nix 0.11.0-rc.4 with the command:
+#   "generate" "--all-features"
 # See https://github.com/kolloch/crate2nix for more info.
 
 { nixpkgs ? <nixpkgs>
@@ -4102,7 +4102,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./nix_cli; }
           else ./nix_cli;
         dependencies = [
@@ -4125,7 +4125,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./nix-compat; }
           else ./nix-compat;
         dependencies = [
@@ -8293,7 +8293,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./castore; }
           else ./castore;
         dependencies = [
@@ -8425,7 +8425,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./cli; }
           else ./cli;
         dependencies = [
@@ -8488,7 +8488,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./eval; }
           else ./eval;
         libName = "tvix_eval";
@@ -8624,7 +8624,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./eval/builtin-macros; }
           else ./eval/builtin-macros;
         procMacro = true;
@@ -8661,7 +8661,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./serde; }
           else ./serde;
         dependencies = [
@@ -8691,7 +8691,7 @@ rec {
         # We can't filter paths with references in Nix 2.4
         # See https://github.com/NixOS/nix/issues/5410
         src =
-          if (lib.versionOlder builtins.nixVersion "2.4pre20211007")
+          if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion))
           then lib.cleanSourceWith { filter = sourceFilter; src = ./store; }
           else ./store;
         dependencies = [
@@ -11624,11 +11624,21 @@ rec {
         explicitFeatures = dependency.features or [ ];
         additionalDependencyFeatures =
           let
-            dependencyPrefix = (dependency.rename or dependency.name) + "/";
-            dependencyFeatures =
-              builtins.filter (f: lib.hasPrefix dependencyPrefix f) features;
+            name = dependency.rename or dependency.name;
+            stripPrefixMatch = prefix: s:
+              if lib.hasPrefix prefix s
+              then lib.removePrefix prefix s
+              else null;
+            extractFeature = feature: lib.findFirst
+              (f: f != null)
+              null
+              (map (prefix: stripPrefixMatch prefix feature) [
+                (name + "/")
+                (name + "?/")
+              ]);
+            dependencyFeatures = lib.filter (f: f != null) (map extractFeature features);
           in
-          builtins.map (lib.removePrefix dependencyPrefix) dependencyFeatures;
+          dependencyFeatures;
       in
       defaultOrNil ++ explicitFeatures ++ additionalDependencyFeatures;
 
diff --git a/tvix/default.nix b/tvix/default.nix
index 57ff82bf2e..d8027213f6 100644
--- a/tvix/default.nix
+++ b/tvix/default.nix
@@ -72,7 +72,7 @@ in
   # Run crate2nix generate in the current working directory, then
   # format the generated file with depotfmt.
   crate2nixGenerate = pkgs.writeShellScriptBin "crate2nix-generate" ''
-    ${pkgs.crate2nix}/bin/crate2nix generate
+    ${pkgs.crate2nix}/bin/crate2nix generate --all-features
     ${depot.tools.depotfmt}/bin/depotfmt Cargo.nix
   '';