diff options
author | sterni <sternenseemann@systemli.org> | 2022-05-29T09·06+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-05-29T10·22+0000 |
commit | e2807ec934126514d7bb3bce9f5d6b923cc076fb (patch) | |
tree | 442cc8eb21856b90168fa5de6d6cd3f4b7aa96c7 | |
parent | 8ae5c7a78178488b332b7c8542051aa584f74fa6 (diff) |
fix(ops/nixos): use builtins.storePath to avoid dumping pkgs.path r/4185
This is a less invasive way to achieve the same goal as cl/5681, by preventing the already existing nixpkgs store path from being dumped again at the call site. To support nixpkgsBisectPath, we simply check if pkgs.path is below builtins.storeDir and use builtins.storePath based on that. This is actually similar to the approach taken in the nixpkgs documentation system which tries to limit the amount of nixpkgs that needs to be dumped by using filterSource on specific subtrees of nixpkgs. For this to work it has to insist on pkgs.path being an ordinary Nix path, though. Change-Id: Idf892f90a5d811184568e4702a901c334d56210e Reviewed-on: https://cl.tvl.fyi/c/depot/+/5787 Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
-rw-r--r-- | ops/nixos.nix | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ops/nixos.nix b/ops/nixos.nix index 720e79233316..309f12297744 100644 --- a/ops/nixos.nix +++ b/ops/nixos.nix @@ -7,10 +7,18 @@ in rec { baseModule = { ... }: { # Ensure that pkgs == third_party.nix nixpkgs.pkgs = depot.third_party.nixpkgs; - nix.nixPath = [ - ("nixos=" + pkgs.path) - ("nixpkgs=" + pkgs.path) - ]; + nix.nixPath = + let + # Due to nixpkgsBisectPath, pkgs.path is not always in the nix store + nixpkgsStorePath = + if lib.hasPrefix builtins.storeDir (toString pkgs.path) + then builtins.storePath pkgs.path # nixpkgs is already in the store + else pkgs.path; # we need to dump nixpkgs to the store either way + in + [ + ("nixos=" + nixpkgsStorePath) + ("nixpkgs=" + nixpkgsStorePath) + ]; }; nixosFor = configuration: (depot.third_party.nixos { |