diff --git a/app/Main.hs b/app/Main.hs
deleted file mode 100644
--- a/app/Main.hs
+++ /dev/null
@@ -1,8 +0,0 @@
-module Main (main) where
-
-import System.IO (IO)
-
-import qualified Devtools
-
-main :: IO ()
-main = Devtools.main Devtools.defaultConfig
diff --git a/devtools.cabal b/devtools.cabal
--- a/devtools.cabal
+++ b/devtools.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 10ba25189f0663169075ea8771f091d9af0ff814b260061a20374044460019e2
+-- hash: 1ab3f83c389cae0745d3d2ddb4de502d0a96c2d0b770b4c1a5a5f1ac1dcbd7a1
 
 name:           devtools
-version:        0.0.3
+version:        0.1.0
 synopsis:       Haskell development tool agregate
 description:    An attempt to group development that would typically run on CI / local
                 into one tasty interface.
@@ -34,6 +34,7 @@
 library
   exposed-modules:
       Devtools
+      Devtools.Config
       Devtools.Dependencies
       Devtools.HLint
       Devtools.Prelude
@@ -45,7 +46,7 @@
   ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path
   build-depends:
       Diff >0.3 && <0.5
-    , base >4.12 && <4.14
+    , base >4.12 && <4.15
     , bytestring >=0.10 && <0.11
     , cmdargs >=0.10.20 && <0.11
     , filepath >=1.4 && <1.5
@@ -62,42 +63,16 @@
     ghc-options: -Wwarn
   default-language: Haskell2010
 
-executable devtools
-  main-is: app/Main.hs
-  other-modules:
-      Paths_devtools
-  default-extensions: DerivingStrategies LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards StrictData
-  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path -rtsopts -threaded -with-rtsopts=-N
-  build-depends:
-      Diff >0.3 && <0.5
-    , base >4.12 && <4.14
-    , bytestring >=0.10 && <0.11
-    , cmdargs >=0.10.20 && <0.11
-    , devtools
-    , filepath >=1.4 && <1.5
-    , hlint >3.1 && <4
-    , mprelude >=0.2.0 && <0.3
-    , source-constraints >=0.0.1 && <0.1
-    , tasty >=1.3.1 && <1.4
-    , tasty-mgolden >=0.0.1 && <0.1
-    , text >=1.2 && <1.3
-    , typed-process >=0.2 && <0.3
-  if flag(development)
-    ghc-options: -Werror
-  else
-    ghc-options: -Wwarn
-  default-language: Haskell2010
-
-test-suite devtools-test
+test-suite test
   type: exitcode-stdio-1.0
-  main-is: app/Main.hs
+  main-is: test/Test.hs
   other-modules:
       Paths_devtools
   default-extensions: DerivingStrategies LambdaCase NoImplicitPrelude OverloadedStrings RecordWildCards StrictData
   ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-exported-signatures -Wmissing-local-signatures -Wmonomorphism-restriction -Wredundant-constraints -fplugin=SourceConstraints -funbox-strict-fields -optP-Wno-nonportable-include-path -rtsopts -threaded -with-rtsopts=-N
   build-depends:
       Diff >0.3 && <0.5
-    , base >4.12 && <4.14
+    , base >4.12 && <4.15
     , bytestring >=0.10 && <0.11
     , cmdargs >=0.10.20 && <0.11
     , devtools
diff --git a/src/Devtools.hs b/src/Devtools.hs
--- a/src/Devtools.hs
+++ b/src/Devtools.hs
@@ -1,5 +1,14 @@
-module Devtools (Config(..), defaultConfig, defaultMain, main, testTree) where
+module Devtools
+  ( Config(..)
+  , Target(..)
+  , defaultConfig
+  , defaultMain
+  , main
+  , testTree
+  )
+where
 
+import Devtools.Config
 import Devtools.Prelude
 import System.IO (putStrLn)
 
@@ -7,13 +16,10 @@
 import qualified Devtools.HLint        as HLint
 import qualified Test.Tasty            as Tasty
 
-newtype Config = Config
-  { hlintArguments :: [String]
-  }
-
 defaultConfig :: Config
 defaultConfig = Config
   { hlintArguments = []
+  , targets        = []
   }
 
 defaultMain :: IO ()
@@ -22,10 +28,14 @@
 main :: Config -> IO ()
 main config = do
   putStrLn empty
-  Tasty.defaultMain $ testTree config
+  Tasty.defaultMain =<< testTree config
 
-testTree :: Config -> Tasty.TestTree
-testTree Config{..} = Tasty.testGroup "devtools"
-  [ Dependencies.testTree
-  , HLint.testTree hlintArguments
-  ]
+testTree :: Config -> IO Tasty.TestTree
+testTree Config{..} = do
+  filename <- Dependencies.getFilename
+
+  pure $ Tasty.testGroup
+    "devtools"
+    [ Dependencies.testTree filename targets
+    , HLint.testTree hlintArguments
+    ]
diff --git a/src/Devtools/Config.hs b/src/Devtools/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Devtools/Config.hs
@@ -0,0 +1,15 @@
+module Devtools.Config where
+
+import Devtools.Prelude
+
+import qualified Data.Text as Text
+
+newtype Target = Target Text
+
+targetString :: Target -> String
+targetString (Target text) = Text.unpack text
+
+data Config = Config
+  { hlintArguments :: [String]
+  , targets        :: [Target]
+  }
diff --git a/src/Devtools/Dependencies.hs b/src/Devtools/Dependencies.hs
--- a/src/Devtools/Dependencies.hs
+++ b/src/Devtools/Dependencies.hs
@@ -1,20 +1,25 @@
-module Devtools.Dependencies (testTree) where
+module Devtools.Dependencies
+  ( getFilename
+  , testTree
+  )
+where
 
 import Data.Tuple (fst)
+import Devtools.Config
 import Devtools.Prelude
+import System.FilePath (FilePath, (</>))
 
 import qualified Data.ByteString.Lazy  as LBS
 import qualified Data.Text.Encoding    as Text
+import qualified System.Environment    as Environment
+import qualified System.FilePath       as FilePath
 import qualified System.Process.Typed  as Process
 import qualified Test.Tasty            as Tasty
 import qualified Test.Tasty.MGolden    as Tasty
 
-testTree :: Tasty.TestTree
-testTree =
-  Tasty.goldenTest
-    "dependencies"
-    "test/stack-dependencies.txt"
-    readDependenciesText
+testTree :: FilePath -> [Target] -> Tasty.TestTree
+testTree filename targets =
+  Tasty.goldenTest "dependencies" filename readDependenciesText
   where
     readDependenciesText :: IO Text
     readDependenciesText
@@ -22,4 +27,20 @@
 
     readDependencies :: IO LBS.ByteString
     readDependencies
-      = fst <$> Process.readProcess_ (Process.proc "stack" ["ls", "dependencies", "--test"])
+      = fst <$> Process.readProcess_ (Process.proc "stack" arguments)
+
+    arguments :: [String]
+    arguments =
+      [ "ls"
+      , "dependencies"
+      , "--test"
+      ] <> (targetString <$> targets)
+
+getFilename :: IO FilePath
+getFilename = do
+  prefix <- getPrefix
+  pure $ "test" </> prefix <> "-dependencies.txt"
+  where
+    getPrefix
+      =   maybe "stack" (FilePath.dropExtension . FilePath.takeFileName)
+      <$> Environment.lookupEnv "STACK_YAML"
diff --git a/test/Test.hs b/test/Test.hs
new file mode 100644
--- /dev/null
+++ b/test/Test.hs
@@ -0,0 +1,8 @@
+module Main (main) where
+
+import System.IO (IO)
+
+import qualified Devtools
+
+main :: IO ()
+main = Devtools.main Devtools.defaultConfig
