nix profile install: Support installing non-flakes

Fixes #4458.
This commit is contained in:
Eelco Dolstra 2021-01-18 23:08:58 +01:00
parent 555940f065
commit bc90252cec

View file

@ -252,8 +252,28 @@ struct CmdProfileInstall : InstallablesCommand, MixDefaultProfile
pathsToBuild.push_back({drv.drvPath, StringSet{"out"}}); // FIXME pathsToBuild.push_back({drv.drvPath, StringSet{"out"}}); // FIXME
manifest.elements.emplace_back(std::move(element)); manifest.elements.emplace_back(std::move(element));
} else } else {
throw UnimplementedError("'nix profile install' does not support argument '%s'", installable->what()); auto buildables = build(store, Realise::Outputs, {installable}, bmNormal);
for (auto & buildable : buildables) {
ProfileElement element;
std::visit(overloaded {
[&](BuildableOpaque bo) {
pathsToBuild.push_back({bo.path, {}});
element.storePaths.insert(bo.path);
},
[&](BuildableFromDrv bfd) {
for (auto & output : store->queryDerivationOutputMap(bfd.drvPath)) {
pathsToBuild.push_back({bfd.drvPath, {output.first}});
element.storePaths.insert(output.second);
}
},
}, buildable);
manifest.elements.emplace_back(std::move(element));
}
}
} }
store->buildPaths(pathsToBuild); store->buildPaths(pathsToBuild);