diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for hs-opentelemetry-sdk
 
+## 0.0.3.1
+
+- `getTracerProviderInitializationOptions'` introduced to enable custom resource detection
+
 ## 0.0.2.1
 
 - Doc enhancements
diff --git a/hs-opentelemetry-sdk.cabal b/hs-opentelemetry-sdk.cabal
--- a/hs-opentelemetry-sdk.cabal
+++ b/hs-opentelemetry-sdk.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           hs-opentelemetry-sdk
-version:        0.0.3.0
+version:        0.0.3.1
 synopsis:       OpenTelemetry SDK for use in applications.
 description:    Please see the README on GitHub at <https://github.com/iand675/hs-opentelemetry/tree/main/sdk#readme>
 category:       OpenTelemetry, Telemetry, Monitoring, Observability, Metrics
diff --git a/src/OpenTelemetry/Trace.hs b/src/OpenTelemetry/Trace.hs
--- a/src/OpenTelemetry/Trace.hs
+++ b/src/OpenTelemetry/Trace.hs
@@ -2,6 +2,7 @@
 {-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE DataKinds #-}
+{-# LANGUAGE GADTs #-}
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  OpenTelemetry.Trace
@@ -86,6 +87,7 @@
   , initializeGlobalTracerProvider
   , initializeTracerProvider
   , getTracerProviderInitializationOptions
+  , getTracerProviderInitializationOptions'
   , shutdownTracerProvider
   -- ** Getting / setting the global 'TracerProvider'
   , getGlobalTracerProvider
@@ -293,7 +295,13 @@
   createTracerProvider processors opts
 
 getTracerProviderInitializationOptions :: IO ([Processor], TracerProviderOptions)
-getTracerProviderInitializationOptions  = do
+getTracerProviderInitializationOptions = getTracerProviderInitializationOptions' (mempty :: Resource 'Nothing)
+
+-- | Detect ptions for initializing a tracer provider from the app environment, taking additional supported resources as well.
+--
+-- @since 
+getTracerProviderInitializationOptions' :: (ResourceMerge 'Nothing any ~ 'Nothing) => Resource any -> IO ([Processor], TracerProviderOptions)
+getTracerProviderInitializationOptions' rs = do
   sampler <- detectSampler
   attrLimits <- detectAttributeLimits
   spanLimits <- detectSpanLimits
@@ -301,8 +309,8 @@
   processorConf <- detectBatchProcessorConfig
   exporters <- detectExporters
   builtInRs <- detectBuiltInResources
-  envVarRs <- (mkResource . map Just) <$> detectResourceAttributes
-  let allRs = builtInRs <> envVarRs
+  envVarRs <- mkResource . map Just <$> detectResourceAttributes
+  let allRs = mergeResources (builtInRs <> envVarRs) rs
   processors <- case exporters of
     [] -> do
       pure []
