about summary refs log tree commit diff
path: root/third_party/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/default.nix')
-rw-r--r--third_party/default.nix53
1 files changed, 50 insertions, 3 deletions
diff --git a/third_party/default.nix b/third_party/default.nix
index 949110373fb2..5a244ed22039 100644
--- a/third_party/default.nix
+++ b/third_party/default.nix
@@ -1,5 +1,52 @@
-{ pkgs, briefcase, depot, ... }:
+# This file defines the root of all external dependency imports (i.e.
+# third-party code) in the TVL package tree.
+#
+# There are two categories of third-party programs:
+#
+# 1) Programs in nixpkgs, the NixOS package set. For these, you might
+#    want to look at //third_party/nixpkgs (for the package set
+#    imports) and //third_party/overlays (for modifications in these
+#    imported package sets).
+#
+# 2) Third-party software packaged in this repository. This is all
+#    other folders below //third_party, other than the ones mentioned
+#    above.
 
-# Exposing these to be available as briefcase.third_party.pkgs for example.
+{ pkgs, ... }:
 
-{ inherit pkgs briefcase depot; }
+{
+  # Expose a partially applied NixOS, expecting an attribute set with
+  # a `configuration` key. Exposing it like this makes it possible to
+  # modify some of the base configuration used by NixOS.
+  #
+  # This partially reimplements the code in
+  # <nixpkgs/nixos/default.nix> as we need to modify its internals to
+  # be able to pass `specialArgs`. We depend on this because `depot`
+  # needs to be partially evaluated in NixOS configuration before
+  # module imports are resolved.
+  nixos = {
+    configuration,
+    specialArgs ? {},
+    system ? builtins.currentSystem,
+    ...
+  }:
+  let
+    eval = import "${pkgs.path}/nixos/lib/eval-config.nix" {
+      inherit specialArgs system;
+      modules = [ configuration ];
+    };
+
+    # This is for `nixos-rebuild build-vm'.
+    vmConfig = (import "${pkgs.path}/nixos/lib/eval-config.nix" {
+      inherit specialArgs system;
+      modules = [
+        configuration
+        "${pkgs.path}/nixos/modules/virtualisation/qemu-vm.nix"
+      ];
+    }).config;
+  in {
+    inherit (eval) pkgs config options;
+    system = eval.config.system.build.toplevel;
+    vm = vmConfig.system.build.vm;
+  };
+}