Remove the nixpkgs.<attr> compatibility hack

Since we've changed a lot of things in the 'nix' command (e.g. rename
'nix run') there is not much point in keeping this around.
This commit is contained in:
Eelco Dolstra 2020-05-06 17:20:23 +02:00
parent 80f4b7b6f8
commit ff394ff206

View file

@ -417,10 +417,6 @@ InstallableFlake::getCursor(EvalState & state, bool useEvalCache)
return res; return res;
} }
// FIXME: extend
std::string attrRegex = R"([A-Za-z_][A-Za-z0-9-_+]*)";
static std::regex attrPathRegex(fmt(R"(%1%(\.%1%)*)", attrRegex));
std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables( std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
ref<Store> store, std::vector<std::string> ss) ref<Store> store, std::vector<std::string> ss)
{ {
@ -449,48 +445,38 @@ std::vector<std::shared_ptr<Installable>> SourceExprCommand::parseInstallables(
} else { } else {
for (auto & s : ss) { for (auto & s : ss) {
if (hasPrefix(s, "nixpkgs.")) { std::exception_ptr ex;
bool static warned;
warnOnce(warned, "the syntax 'nixpkgs.<attr>' is deprecated; use 'nixpkgs#<attr>' instead"); try {
result.push_back(std::make_shared<InstallableFlake>(*this, auto [flakeRef, fragment] = parseFlakeRefWithFragment(s, absPath("."));
FlakeRef::fromAttrs({{"type", "indirect"}, {"id", "nixpkgs"}}), result.push_back(std::make_shared<InstallableFlake>(
Strings{"legacyPackages." + settings.thisSystem.get() + "." + std::string(s, 8)}, Strings{})); *this, std::move(flakeRef),
fragment == "" ? getDefaultFlakeAttrPaths() : Strings{fragment},
getDefaultFlakeAttrPathPrefixes()));
continue;
} catch (...) {
ex = std::current_exception();
} }
else { if (s.find('/') != std::string::npos) {
std::exception_ptr ex;
try { try {
auto [flakeRef, fragment] = parseFlakeRefWithFragment(s, absPath(".")); result.push_back(std::make_shared<InstallableStorePath>(store, store->printStorePath(store->followLinksToStorePath(s))));
result.push_back(std::make_shared<InstallableFlake>(
*this, std::move(flakeRef),
fragment == "" ? getDefaultFlakeAttrPaths() : Strings{fragment},
getDefaultFlakeAttrPathPrefixes()));
continue; continue;
} catch (NotInStore &) {
} catch (...) { } catch (...) {
ex = std::current_exception(); if (!ex)
ex = std::current_exception();
} }
if (s.find('/') != std::string::npos) {
try {
result.push_back(std::make_shared<InstallableStorePath>(store, store->printStorePath(store->followLinksToStorePath(s))));
continue;
} catch (NotInStore &) {
} catch (...) {
if (!ex)
ex = std::current_exception();
}
}
std::rethrow_exception(ex);
/*
throw Error(
pathExists(s)
? "path '%s' is not a flake or a store path"
: "don't know how to handle argument '%s'", s);
*/
} }
std::rethrow_exception(ex);
/*
throw Error(
pathExists(s)
? "path '%s' is not a flake or a store path"
: "don't know how to handle argument '%s'", s);
*/
} }
} }