diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
 # Changelog
 
+## 0.6.0 - 2025-01-11:
+
+* feat: Show signatures of store paths (thanks @caspervk, PR: [#107])
+* fix: Fix default nix-tree invocation not working when one of the default directories is not a store path (thanks @sg-qwt, @GrigorenkoPV, issue #[106], pr #[109], #[110])
+
+[#107]: https://github.com/utdemir/nix-tree/pull/107
+[#106]: https://github.com/utdemir/nix-tree/issues/106
+[#109]: https://github.com/utdemir/nix-tree/pull/109
+[#110]: https://github.com/utdemir/nix-tree/pull/110
+
 ## 0.5.0 - 2024-10-06:
 
 * feat: Add `--file` to run nix-tree against attributes from a file. (thanks @blackheaven, PR: [#103])
diff --git a/nix-tree.cabal b/nix-tree.cabal
--- a/nix-tree.cabal
+++ b/nix-tree.cabal
@@ -3,7 +3,7 @@
 name:                nix-tree
 synopsis:            Interactively browse a Nix store paths dependencies
 description:         A terminal curses application to browse a Nix store paths dependencies
-version:             0.5.0
+version:             0.6.0
 homepage:            https://github.com/utdemir/nix-tree
 license:             BSD-3-Clause
 license-file:        LICENSE
diff --git a/src/NixTree/App.hs b/src/NixTree/App.hs
--- a/src/NixTree/App.hs
+++ b/src/NixTree/App.hs
@@ -150,7 +150,8 @@
        StorePath
          { spName,
            spPayload = PathStats {psTotalSize, psAddedSize},
-           spRefs
+           spRefs,
+           spSignatures
          } ->
           let color =
                 if null spRefs
@@ -158,7 +159,10 @@
                   else identity
            in color $
                 B.hBox
-                  [ B.txt (storeNameToShortText spName)
+                  [ if null spSignatures
+                      then B.txt "  "
+                      else B.txt "✓ ",
+                    B.txt (storeNameToShortText spName)
                       & underlineWhen SortOrderAlphabetical
                       & B.padRight (B.Pad 1)
                       & B.padRight B.Max,
@@ -372,6 +376,7 @@
 renderInfoPane env =
   let selected = selectedPath env
       immediateParents = psImmediateParents $ spPayload selected
+      signatures = spSignatures selected
    in B.vBox
         [ let (f, s) = storeNameToSplitShortText (spName selected)
            in B.txt f B.<+> underlineWhen SortOrderAlphabetical (B.txt s),
@@ -381,6 +386,15 @@
           ]
             & intersperse (B.txt " | ")
             & B.hBox,
+          B.txt $
+            "Signatures: "
+              <> if null signatures
+                then "✗"
+                else
+                  ( signatures
+                      & map npsKeyName
+                      & T.intercalate ", "
+                  ),
           B.txt $
             if null immediateParents
               then "Immediate Parents: -"
diff --git a/src/NixTree/Main.hs b/src/NixTree/Main.hs
--- a/src/NixTree/Main.hs
+++ b/src/NixTree/Main.hs
@@ -8,7 +8,7 @@
 import NixTree.PathStats
 import qualified Options.Applicative as Opts
 import qualified Options.Applicative.Help.Pretty as Opts
-import System.Directory (XdgDirectory (XdgState), doesDirectoryExist, getHomeDirectory, getXdgDirectory)
+import System.Directory (XdgDirectory (XdgState), doesDirectoryExist, getHomeDirectory, getXdgDirectory, pathIsSymbolicLink)
 import System.Exit (ExitCode (..))
 import System.FilePath ((</>))
 import System.IO (hPutStrLn)
@@ -91,6 +91,17 @@
   hPutStrLn stderr . toString $ "Error: " <> msg
   exitWith (ExitFailure 1)
 
+isValidRoot :: FilePath -> IO Bool
+isValidRoot path = do
+  isExistingDirectory <- doesDirectoryExist path
+  if isExistingDirectory
+    then -- We need to check that it's a symlink (presumably to nix store),
+    -- because if it is just a directory, nix will try to interpret it as a flake.
+    -- We do doesDirectoryExist before pathIsSymbolicLink,
+    -- because the latter will fail if the path does not exist.
+      pathIsSymbolicLink path
+    else return False
+
 main :: IO ()
 main = do
   opts <-
@@ -108,11 +119,13 @@
     [] -> do
       home <- getHomeDirectory
       nixXdgDirectory <- getXdgDirectory XdgState "nix/profile"
+      homeManagerDirectory <- getXdgDirectory XdgState "nix/profiles/home-manager"
       roots <-
         filterM
-          doesDirectoryExist
+          isValidRoot
           [ home </> ".nix-profile",
             nixXdgDirectory,
+            homeManagerDirectory,
             "/var/run/current-system"
           ]
       case roots of
diff --git a/src/NixTree/StorePath.hs b/src/NixTree/StorePath.hs
--- a/src/NixTree/StorePath.hs
+++ b/src/NixTree/StorePath.hs
@@ -4,6 +4,7 @@
     storeNameToText,
     storeNameToShortText,
     storeNameToSplitShortText,
+    NixPathSignature (..),
     StorePath (..),
     Installable (..),
     StoreEnv (..),
@@ -140,7 +141,8 @@
   { spName :: StoreName s,
     spSize :: Int,
     spRefs :: [ref],
-    spPayload :: payload
+    spPayload :: payload,
+    spSignatures :: [NixPathSignature]
   }
   deriving (Show, Eq, Ord, Functor, Generic)
 
@@ -187,7 +189,7 @@
 
   mapM infoToStorePath infos
   where
-    infoToStorePath NixPathInfo {npiPath, npiNarSize, npiReferences} = do
+    infoToStorePath NixPathInfo {npiPath, npiNarSize, npiReferences, npiSignatures} = do
       name <- mkStoreNameIO npiPath
       refs <- filter (/= name) <$> mapM mkStoreNameIO npiReferences
       return $
@@ -195,6 +197,7 @@
           { spName = name,
             spRefs = refs,
             spSize = npiNarSize,
+            spSignatures = npiSignatures,
             spPayload = ()
           }
     mkStoreNameIO p =
@@ -372,9 +375,25 @@
 data NixPathInfo = NixPathInfo
   { npiPath :: FilePath,
     npiNarSize :: Int,
-    npiReferences :: [FilePath]
+    npiReferences :: [FilePath],
+    npiSignatures :: [NixPathSignature]
   }
 
+data NixPathSignature = NixPathSignature
+  { npsKeyName :: Text,
+    npsSignature :: Text
+  }
+  deriving (Show, Eq, Ord, NFData, Generic)
+
+instance FromJSON NixPathSignature where
+  parseJSON (String t) =
+    case T.splitOn ":" t of
+      [key, sig]
+        | not (T.null key) && not (T.null sig) ->
+            return $ NixPathSignature key sig
+      _ -> fail "Expecting a string in the form of 'key:sig'."
+  parseJSON _ = fail "Expecting a string."
+
 data NixPathInfoResult
   = NixPathInfoValid NixPathInfo
   | NixPathInfoInvalid FilePath
@@ -386,6 +405,7 @@
               <$> obj .: "path"
               <*> obj .: "narSize"
               <*> obj .: "references"
+              <*> obj .: "signatures"
           )
   )
     <|> ( do
@@ -403,6 +423,7 @@
             path
             <$> obj .: "narSize"
             <*> obj .: "references"
+            <*> obj .: "signatures"
         )
 parse2_19 (path, Null) = return $ NixPathInfoInvalid path
 parse2_19 (_, _) = fail "Expecting an object or null"
