diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for nvfetcher
 
+## 0.6.1.0
+
+* Replace `nix-prefetch` with `nix-prefetch-git` and `nix-prefetch-url`
+
 ## 0.6.0.0
 
 * Parse error output from nvchecker
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -157,7 +157,7 @@
 - `src.openvsx = publisher.ext_name` -- the latest version of a vscode extension from open vsx
 - `src.vsmarketplace = publisher.ext_name` -- the latest version of a vscode extension from vscode marketplace
 - `src.cmd = cmd` -- the version from a shell command (e.g. `echo Meow`)
-= `src.container = owner/name` - the latest tag of a container from the Docker registry
+- `src.container = owner/name` - the latest tag of a container from the Docker registry
 
 Optional list options for some version sources (`src.github_tag`, `src.webpage`, and `src.httpheader` and `src.container`),
 see the corresponding [nvchecker documentation](https://nvchecker.readthedocs.io/en/latest/usage.html#list-options) for details.
diff --git a/nvfetcher.cabal b/nvfetcher.cabal
--- a/nvfetcher.cabal
+++ b/nvfetcher.cabal
@@ -1,6 +1,6 @@
 cabal-version:   2.4
 name:            nvfetcher
-version:         0.6.0.0
+version:         0.6.1.0
 synopsis:
   Generate nix sources expr for the latest version of packages
 
diff --git a/src/NvFetcher/NixExpr.hs b/src/NvFetcher/NixExpr.hs
--- a/src/NvFetcher/NixExpr.hs
+++ b/src/NvFetcher/NixExpr.hs
@@ -95,7 +95,7 @@
       if (deepClone == "true") || (leaveDotGit == "true")
         then
           [trimming|
-               fetchFromGitHub ({
+               fetchFromGitHub {
                  owner = $owner;
                  repo = $repo;
                  rev = $rev;
@@ -103,17 +103,17 @@
                  deepClone = $deepClone;
                  leaveDotGit = $leaveDotGit;$n
                  sha256 = $sha256;
-               })
+               }
          |]
         else
           [trimming|
-               fetchFromGitHub ({
+               fetchFromGitHub {
                  owner = $owner;
                  repo = $repo;
                  rev = $rev;
                  fetchSubmodules = $fetchSubmodules;$n
                  sha256 = $sha256;
-               })
+               }
          |]
   (FetchUrl (quote -> url) (nameField -> n) (coerce quote -> sha256)) ->
     [trimming|
diff --git a/src/NvFetcher/NixFetcher.hs b/src/NvFetcher/NixFetcher.hs
--- a/src/NvFetcher/NixFetcher.hs
+++ b/src/NvFetcher/NixFetcher.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE DeriveAnyClass #-}
 {-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
 {-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE OverloadedStrings #-}
@@ -18,11 +19,13 @@
 --
 -- 'NixFetcher' is used to describe how to fetch package sources.
 --
--- There are three types of fetchers overall:
+-- There are five types of fetchers overall:
 --
--- 1. 'FetchGit' -- nix-prefetch fetchgit
--- 2. 'FetchGitHub' -- nix-prefetch fetchFromGitHub
--- 3. 'FetchUrl' -- nix-prefetch fetchurl
+-- 1. 'FetchGit' -- nix-prefetch-git
+-- 2. 'FetchGitHub' -- nix-prefetch-git/nix-prefetch-url
+-- 3. 'FetchUrl' -- nix-prefetch-url
+-- 4. 'FetchTarball' -- nix-prefetch-url
+-- 5. 'FetchDocker' -- nix-prefetch-docker
 --
 -- As you can see the type signature of 'prefetch':
 -- a fetcher will be filled with the fetch result (hash) after the prefetch.
@@ -66,53 +69,66 @@
 
 --------------------------------------------------------------------------------
 
+sha256ToSri :: Text -> Action Checksum
+sha256ToSri sha256 = do
+  (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
+    quietly $
+      command [EchoStderr False] "nix" ["hash", "to-sri", "--type", "sha256", T.unpack sha256]
+  putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
+  case takeWhile (not . T.null) $ reverse $ T.lines out of
+    [x] -> pure $ coerce x
+    _ -> fail $ "Failed to parse output from nix hash to-sri: " <> T.unpack out
+
+runNixPrefetchUrl :: Text -> Bool -> Action Checksum
+runNixPrefetchUrl url unpack = do
+  (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
+    quietly $
+      command [EchoStderr False] "nix-prefetch-url" $
+        [T.unpack url] <> ["--unpack" | unpack]
+  putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
+  case takeWhile (not . T.null) $ reverse $ T.lines out of
+    [x] -> sha256ToSri x
+    _ -> fail $ "Failed to parse output from nix-prefetch-url: " <> T.unpack out
+
+newtype FetchedGit = FetchedGit {sha256 :: Text}
+  deriving (Show, Generic, A.FromJSON)
+
+runNixPrefetchGit :: Text -> Text -> Bool -> Bool -> Bool -> Action Checksum
+runNixPrefetchGit url rev fetchSubmodules deepClone leaveDotGit = do
+  (CmdTime t, Stdout out, CmdLine c) <-
+    quietly $
+      command [EchoStderr False] "nix-prefetch-git" $
+        ["--url", T.unpack url]
+          <> ["--rev", T.unpack rev]
+          <> ["--fetch-submodules" | fetchSubmodules]
+          <> ["--deepClone" | deepClone]
+          <> ["--leave-dotGit" | leaveDotGit]
+  putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
+  case A.eitherDecode out of
+    Right (FetchedGit x) -> sha256ToSri x
+    Left e -> fail $ "Failed to parse output from nix-prefetch-git as JSON: " <> e
+
+--------------------------------------------------------------------------------
+
 runFetcher :: NixFetcher Fresh -> Action (NixFetcher Fetched)
 runFetcher = \case
   FetchGit {..} -> do
-    (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
-      quietly $
-        command [EchoStderr False] "nix-prefetch" $
-          ["fetchgit"]
-            <> ["--url", T.unpack _furl]
-            <> ["--rev", T.unpack $ coerce _rev]
-            <> ["--fetchSubmodules" | _fetchSubmodules]
-            <> ["--deepClone" | _deepClone]
-            <> ["--leaveDotGit" | _leaveDotGit]
-    putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
-    case takeWhile (not . T.null) $ reverse $ T.lines out of
-      [x] -> pure FetchGit {_sha256 = coerce x, ..}
-      _ -> fail $ "Failed to parse output from nix-prefetch: " <> T.unpack out
+    result <- runNixPrefetchGit _furl (coerce _rev) _fetchSubmodules _deepClone _leaveDotGit
+    pure FetchGit {_sha256 = coerce result, ..}
   FetchGitHub {..} -> do
-    (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
-      quietly $
-        command [EchoStderr False] "nix-prefetch" $
-          ["fetchFromGitHub"]
-            <> ["--owner", T.unpack _fowner]
-            <> ["--repo", T.unpack _frepo]
-            <> ["--rev", T.unpack $ coerce _rev]
-            <> ["--fetchSubmodules" | _fetchSubmodules]
-            <> ["--deepClone" | _deepClone]
-            <> ["--leaveDotGit" | _leaveDotGit]
-    putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
-    case takeWhile (not . T.null) $ reverse $ T.lines out of
-      [x] -> pure FetchGitHub {_sha256 = coerce x, ..}
-      _ -> fail $ "Failed to parse output from nix-prefetch: " <> T.unpack out
+    let useFetchGit = _fetchSubmodules || _leaveDotGit || _deepClone
+        ver = coerce _rev
+    result <-
+      if useFetchGit
+        then runNixPrefetchGit [trimming|https://github.com/$_fowner/$_frepo|] (coerce _rev) _fetchSubmodules _deepClone _leaveDotGit
+        else runNixPrefetchUrl [trimming|https://github.com/$_fowner/$_frepo/archive/$ver.tar.gz|] True
+    pure FetchGitHub {_sha256 = result, ..}
   FetchUrl {..} -> do
-    (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
-      quietly $
-        command [EchoStderr False] "nix-prefetch" ["fetchurl", "--url", T.unpack _furl]
-    putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
-    case takeWhile (not . T.null) $ reverse $ T.lines out of
-      [x] -> pure FetchUrl {_sha256 = coerce x, ..}
-      _ -> fail $ "Failed to parse output from nix-prefetch: " <> T.unpack out
+    result <- runNixPrefetchUrl _furl False
+    pure FetchUrl {_sha256 = result, ..}
   FetchTarball {..} -> do
-    (CmdTime t, Stdout (T.decodeUtf8 -> out), CmdLine c) <-
-      quietly $
-        command [EchoStderr False] "nix-prefetch" ["fetchTarball", "--url", T.unpack _furl]
-    putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
-    case takeWhile (not . T.null) $ reverse $ T.lines out of
-      [x] -> pure FetchTarball {_sha256 = coerce x, ..}
-      _ -> fail $ "Failed to parse output from nix-prefetch: " <> T.unpack out
+    result <- runNixPrefetchUrl _furl True
+    pure FetchTarball {_sha256 = result, ..}
   FetchDocker {..} -> do
     (CmdTime t, Stdout out, CmdLine c) <-
       quietly $
@@ -123,22 +139,23 @@
           ]
             <> concat [["--os", T.unpack os] | Just os <- [_fos]]
             <> concat [["--arch", T.unpack arch] | Just arch <- [_farch]]
-    putVerbose $ "Finishing running " <> c <> ",, took " <> show t <> "s"
+    putVerbose $ "Finishing running " <> c <> ", took " <> show t <> "s"
     case A.eitherDecode out of
-      Right FetchedContainer {..} ->
-        pure FetchDocker {_sha256 = sha256, _imageDigest = imageDigest, ..}
+      Right FetchedContainer {..} -> do
+        sri <- sha256ToSri sha256
+        pure FetchDocker {_sha256 = sri, _imageDigest = imageDigest, ..}
       Left e -> fail $ "Failed to parse output from nix-prefetch-docker as JSON: " <> e
 
 data FetchedContainer = FetchedContainer
   { imageDigest :: ContainerDigest,
-    sha256 :: Checksum
+    sha256 :: Text
   }
   deriving (Show, Generic, A.FromJSON)
 
 pypiUrl :: Text -> Version -> Text
 pypiUrl pypi (coerce -> ver) =
   let h = T.cons (T.head pypi) ""
-   in [trimming|https://pypi.io/packages/source/$h/$pypi/$pypi-$ver.tar.gz|]
+   in [trimming|https://pypi.org/packages/source/$h/$pypi/$pypi-$ver.tar.gz|]
 
 --------------------------------------------------------------------------------
 
@@ -158,7 +175,7 @@
 
 -- | Create a fetcher from git url
 gitFetcher :: Text -> PackageFetcher
-gitFetcher furl rev = FetchGit furl rev False False False Nothing ()
+gitFetcher furl rev = FetchGit furl rev False True False Nothing ()
 
 -- | Create a fetcher from github repo
 gitHubFetcher ::
diff --git a/test/CheckVersionSpec.hs b/test/CheckVersionSpec.hs
--- a/test/CheckVersionSpec.hs
+++ b/test/CheckVersionSpec.hs
@@ -70,7 +70,7 @@
       runNvcheckerRule (Repology "ssed" "aur") `shouldReturnJust` Version "3.62"
 
     specifyChan "vsmarketplace" $
-      runNvcheckerRule (VscodeMarketplace "usernamehw" "indent-one-space") `shouldReturnJust` Version "0.3.0"
+      runNvcheckerRule (VscodeMarketplace "usernamehw" "indent-one-space") `shouldReturnJust` Version "1.0.0"
 
     specifyChan "cmd" $
       runNvcheckerRule (Cmd "echo Meow") `shouldReturnJust` Version "Meow"
diff --git a/test/NixExprSpec.hs b/test/NixExprSpec.hs
--- a/test/NixExprSpec.hs
+++ b/test/NixExprSpec.hs
@@ -31,7 +31,7 @@
       fetchgit {
         url = "https://example.com";
         rev = "fake_rev";
-        fetchSubmodules = false;
+        fetchSubmodules = true;
         deepClone = false;
         leaveDotGit = false;
         sha256 = "0000000000000000000000000000000000000000000000000000000000000000";
@@ -41,13 +41,13 @@
   it "renders fresh gitHubFetcher" $
     toNixExpr (fakeFetch (gitHubFetcher ("owner", "repo") "fake_rev"))
       `shouldBe` [trimming|
-      fetchFromGitHub ({
+      fetchFromGitHub {
         owner = "owner";
         repo = "repo";
         rev = "fake_rev";
         fetchSubmodules = false;
         sha256 = "0000000000000000000000000000000000000000000000000000000000000000";
-      })
+      }
     |]
 
   it "renders fresh urlFetcher" $
diff --git a/test/PrefetchSpec.hs b/test/PrefetchSpec.hs
--- a/test/PrefetchSpec.hs
+++ b/test/PrefetchSpec.hs
@@ -35,12 +35,12 @@
 
     specifyChan "tarball" $
       runPrefetchRule (tarballFetcher "https://github.com/nixos/nixpkgs/archive/3d35529a48d3ad50ad959463755b0b7fe392cfa7.tar.gz")
-        `shouldReturnJust` Checksum "0la68sv52zz1kjw5s5sn6qslzz9mi9sakhzwi873gp4dhc8df1sg"
+        `shouldReturnJust` Checksum "sha256-TwfXEION3DcOivzDqXSKNf1PNTZWF124nOF/UbZGRlE="
 
     specifyChan "docker" $
       runPrefetchRule' (_sha256 &&& _imageDigest) testDockerFetcher
         `shouldReturnJust`
-          ( Checksum "1ly61z3bcs5qvqi2xxp3dd3llh61r9gygphl1ib8pxv64ix738mr",
+          ( Checksum "sha256-uaJxeiRm94tWDBTe51/KwUBKR2vj9i4i3rhotsYPxtM=",
             ContainerDigest "sha256:65a2763f593ae85fab3b5406dc9e80f744ec5b449f269b699b5efd37a07ad32e"
           )
 
