From cd8eb8a7d1bd4d2405df9f0d6aeeaa3e24c7d593 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 6 Jul 2020 17:08:54 +0200 Subject: [PATCH] nix develop: Fall back to "bash" if nixpkgs#bashInteractive is unavailable --- src/nix/develop.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/nix/develop.cc b/src/nix/develop.cc index 0bd862daa..ae6a23346 100644 --- a/src/nix/develop.cc +++ b/src/nix/develop.cc @@ -307,9 +307,23 @@ struct CmdDevelop : Common, MixEnvironment // prevent garbage collection until shell exits setenv("NIX_GCROOT", gcroot.data(), 1); - auto state = getEvalState(); - auto bashInstallable = std::make_shared(state, std::move(installable->nixpkgsFlakeRef()), Strings{"bashInteractive"}, Strings{"legacyPackages." + settings.thisSystem.get() + "."}, lockFlags); - auto shell = state->store->printStorePath(toStorePath(state->store, Build, bashInstallable)) + "/bin/bash"; + Path shell = "bash"; + + try { + auto state = getEvalState(); + + auto bashInstallable = std::make_shared( + state, + std::move(installable->nixpkgsFlakeRef()), + Strings{"bashInteractive"}, + Strings{"legacyPackages." + settings.thisSystem.get() + "."}, + lockFlags); + + shell = state->store->printStorePath(toStorePath(state->store, Build, bashInstallable)) + "/bin/bash"; + } catch (Error &) { + ignoreException(); + } + auto args = Strings{std::string(baseNameOf(shell)), "--rcfile", rcFilePath}; restoreAffinity();