diff options
Diffstat (limited to 'third_party/default.nix')
-rw-r--r-- | third_party/default.nix | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/third_party/default.nix b/third_party/default.nix new file mode 100644 index 000000000000..493301102fd8 --- /dev/null +++ b/third_party/default.nix @@ -0,0 +1,56 @@ +# 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. + +{ pkgs, 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 + (import (depot.path.origSrc + "/ops/modules/default-imports.nix")) + ]; + }; + + # 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; + }; +} |