fix(ops/nixos): use builtins.storePath to avoid dumping pkgs.path
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
This commit is contained in:
parent
8ae5c7a781
commit
e2807ec934
1 changed files with 12 additions and 4 deletions
|
@ -7,10 +7,18 @@ in rec {
|
||||||
baseModule = { ... }: {
|
baseModule = { ... }: {
|
||||||
# Ensure that pkgs == third_party.nix
|
# Ensure that pkgs == third_party.nix
|
||||||
nixpkgs.pkgs = depot.third_party.nixpkgs;
|
nixpkgs.pkgs = depot.third_party.nixpkgs;
|
||||||
nix.nixPath = [
|
nix.nixPath =
|
||||||
("nixos=" + pkgs.path)
|
let
|
||||||
("nixpkgs=" + pkgs.path)
|
# 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 {
|
nixosFor = configuration: (depot.third_party.nixos {
|
||||||
|
|
Loading…
Reference in a new issue