diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -210,7 +210,7 @@
 ```
 niv - dependency manager for Nix projects
 
-version: 0.2.20
+version: 0.2.21
 
 Usage: niv [-s|--sources-file FILE] [--no-colors] COMMAND
 
diff --git a/niv.cabal b/niv.cabal
--- a/niv.cabal
+++ b/niv.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           niv
-version:        0.2.20
+version:        0.2.21
 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
@@ -32,9 +32,27 @@
             if spec ? tag then "refs/tags/${spec.tag}" else
               abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!";
       submodules = if spec ? submodules then spec.submodules else false;
+      submoduleArg =
+        let
+          nixSupportsSubmodules = builtins.compareVersions builtins.nixVersion "2.4" >= 0;
+          emptyArgWithWarning =
+            if submodules == true
+            then
+              builtins.trace
+                (
+                  "The niv input \"${name}\" uses submodules "
+                  + "but your nix's (${builtins.nixVersion}) builtins.fetchGit "
+                  + "does not support them"
+                )
+                {}
+            else {};
+        in
+          if nixSupportsSubmodules
+          then { inherit submodules; }
+          else emptyArgWithWarning;
     in
-      builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }
-      // (if builtins.compareVersions builtins.nixVersion "2.4" >= 0 then { inherit submodules; } else {});
+      builtins.fetchGit
+        ({ url = spec.repo; inherit (spec) rev; inherit ref; } // submoduleArg);
 
   fetch_local = spec: spec.path;
 
diff --git a/src/Niv/Sources.hs b/src/Niv/Sources.hs
--- a/src/Niv/Sources.hs
+++ b/src/Niv/Sources.hs
@@ -176,6 +176,8 @@
     V25
   | -- formatting fix
     V26
+  | -- Support submodules for git repos
+    V27
   deriving stock (Bounded, Enum, Eq)
 
 -- | A user friendly version
@@ -207,6 +209,7 @@
   V24 -> "24"
   V25 -> "25"
   V26 -> "26"
+  V27 -> "27"
 
 latestVersionMD5 :: T.Text
 latestVersionMD5 = sourcesVersionToMD5 maxBound
@@ -245,6 +248,7 @@
   V24 -> "116c2d936f1847112fef0013771dab28"
   V25 -> "6612caee5814670e5e4d9dd1b71b5f70"
   V26 -> "937bff93370a064c9000f13cec5867f9"
+  V27 -> "8031ba9d8fbbc7401c800d0b84278ec8"
 
 -- | The MD5 sum of ./nix/sources.nix
 sourcesNixMD5 :: IO T.Text
