diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -216,7 +216,7 @@
 ```
 niv - dependency manager for Nix projects
 
-version: 0.2.15
+version: 0.2.16
 
 Usage: niv [-s|--sources-file FILE] COMMAND
 
diff --git a/niv.cabal b/niv.cabal
--- a/niv.cabal
+++ b/niv.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 3d09896b8d2ffd774ff226e8260109ca00a5d8145dff676cbb30074895ef1579
+-- hash: f39c0a003ea2dd491b1c3c9471b0cf38dc4c294778271fa0771ab8afe5266ec0
 
 name:           niv
-version:        0.2.15
+version:        0.2.16
 synopsis:       Easy dependency management for Nix projects
 description:    Easy dependency management for Nix projects.
 category:       Development
diff --git a/nix/sources.nix b/nix/sources.nix
--- a/nix/sources.nix
+++ b/nix/sources.nix
@@ -133,8 +133,8 @@
 
   # The "config" used by the fetchers
   mkConfig =
-    { sourcesFile ? ./sources.json
-    , sources ? builtins.fromJSON (builtins.readFile sourcesFile)
+    { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null
+    , sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile)
     , pkgs ? mkPkgs sources
     }: rec {
       # The sources, i.e. the attribute set of spec name to spec
diff --git a/src/Niv/Sources.hs b/src/Niv/Sources.hs
--- a/src/Niv/Sources.hs
+++ b/src/Niv/Sources.hs
@@ -162,6 +162,8 @@
     V18
   | -- add NIV_OVERRIDE_{name}
     V19
+  | -- can be imported when there's no sources.json
+    V20
   deriving stock (Bounded, Enum, Eq)
 
 -- | A user friendly version
@@ -186,6 +188,7 @@
   V17 -> "17"
   V18 -> "18"
   V19 -> "19"
+  V20 -> "20"
 
 latestVersionMD5 :: T.Text
 latestVersionMD5 = sourcesVersionToMD5 maxBound
@@ -217,6 +220,7 @@
   V17 -> "149b8907f7b08dc1c28164dfa55c7fad"
   V18 -> "bc5e6aefcaa6f9e0b2155ca4f44e5a33"
   V19 -> "543621698065cfc6a4a7985af76df718"
+  V20 -> "ab4263aa63ccf44b4e1510149ce14eff"
 
 -- | The MD5 sum of ./nix/sources.nix
 sourcesNixMD5 :: IO T.Text
