about summary refs log tree commit diff
path: root/src/nix
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-04-25T13·18+0200
committerEelco Dolstra <edolstra@gmail.com>2017-04-25T13·18+0200
commitd48c973ece20875391bebde3c167d6e0cc1e666e (patch)
tree61e831c1c3b013918694539ffe98243c7218ebc9 /src/nix
parent0b6220fbd6869ec9f48094b85350ef2ea0429b14 (diff)
Set default installable
Thus

  $ nix build -f foo.nix

will build foo.nix.

And

  $ nix build

will build default.nix. However, this may not be a good idea because
it's kind of inconsistent, given that "nix build foo" will build the
"foo" attribute from the default installation source (i.e. the
synthesis of $NIX_PATH), rather than ./default.nix. So I may revert
this.
Diffstat (limited to 'src/nix')
-rw-r--r--src/nix/installables.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/nix/installables.cc b/src/nix/installables.cc
index 45517443ca..ff345c45d8 100644
--- a/src/nix/installables.cc
+++ b/src/nix/installables.cc
@@ -181,6 +181,12 @@ std::vector<std::shared_ptr<Installable>> InstallablesCommand::parseInstallables
 {
     std::vector<std::shared_ptr<Installable>> result;
 
+    if (installables.empty()) {
+        if (file == "")
+            file = ".";
+        installables = Strings{""};
+    }
+
     for (auto & installable : installables) {
 
         if (installable.find("/") != std::string::npos) {
@@ -198,7 +204,7 @@ std::vector<std::shared_ptr<Installable>> InstallablesCommand::parseInstallables
         else if (installable.compare(0, 1, "(") == 0)
             result.push_back(std::make_shared<InstallableExpr>(*this, installable));
 
-        else if (std::regex_match(installable, attrPathRegex))
+        else if (installable == "" || std::regex_match(installable, attrPathRegex))
             result.push_back(std::make_shared<InstallableAttrPath>(*this, installable));
 
         else