diff --git a/internal/lsp/cache/view.go b/internal/lsp/cache/view.go
index cd0893b..8b9e024 100644
--- a/internal/lsp/cache/view.go
+++ b/internal/lsp/cache/view.go
@@ -171,7 +171,7 @@
 	}
 }
 
-func (v *view) RunProcessEnvFunc(ctx context.Context, fn func(*imports.Options) error, opts *imports.Options) error {
+func (v *view) RunProcessEnvFunc(ctx context.Context, fn func(*imports.Options) error) error {
 	v.mu.Lock()
 	defer v.mu.Unlock()
 	if v.processEnv == nil {
@@ -187,7 +187,17 @@
 	}
 
 	// Run the user function.
-	opts.Env = v.processEnv
+	opts := &imports.Options{
+		// Defaults.
+		AllErrors:  true,
+		Comments:   true,
+		Fragment:   true,
+		FormatOnly: false,
+		TabIndent:  true,
+		TabWidth:   8,
+		Env:        v.processEnv,
+	}
+
 	if err := fn(opts); err != nil {
 		return err
 	}
diff --git a/internal/lsp/source/format.go b/internal/lsp/source/format.go
index c2afd16..e11e2cd 100644
--- a/internal/lsp/source/format.go
+++ b/internal/lsp/source/format.go
@@ -98,19 +98,10 @@
 	if hasListErrors(pkg) {
 		return nil, nil, errors.Errorf("%s has list errors, not running goimports", fh.Identity().URI)
 	}
-	options := &imports.Options{
-		// Defaults.
-		AllErrors:  true,
-		Comments:   true,
-		Fragment:   true,
-		FormatOnly: false,
-		TabIndent:  true,
-		TabWidth:   8,
-	}
 	err = snapshot.View().RunProcessEnvFunc(ctx, func(opts *imports.Options) error {
 		allFixEdits, editsPerFix, err = computeImportEdits(ctx, snapshot.View(), pgh, opts)
 		return err
-	}, options)
+	})
 	if err != nil {
 		return nil, nil, errors.Errorf("computing fix edits: %v", err)
 	}
@@ -317,23 +308,13 @@
 	ctx, done := trace.StartSpan(ctx, "source.CandidateImports")
 	defer done()
 
-	options := &imports.Options{
-		// Defaults.
-		AllErrors:  true,
-		Comments:   true,
-		Fragment:   true,
-		FormatOnly: false,
-		TabIndent:  true,
-		TabWidth:   8,
-	}
-
 	var imps []imports.ImportFix
 	importFn := func(opts *imports.Options) error {
 		var err error
 		imps, err = imports.GetAllCandidates(ctx, prefix, filename, opts)
 		return err
 	}
-	err := view.RunProcessEnvFunc(ctx, importFn, options)
+	err := view.RunProcessEnvFunc(ctx, importFn)
 	return imps, err
 }
 
@@ -343,23 +324,13 @@
 	ctx, done := trace.StartSpan(ctx, "source.PackageExports")
 	defer done()
 
-	options := &imports.Options{
-		// Defaults.
-		AllErrors:  true,
-		Comments:   true,
-		Fragment:   true,
-		FormatOnly: false,
-		TabIndent:  true,
-		TabWidth:   8,
-	}
-
 	var pkgs []imports.PackageExport
 	importFn := func(opts *imports.Options) error {
 		var err error
 		pkgs, err = imports.GetPackageExports(ctx, pkg, filename, opts)
 		return err
 	}
-	err := view.RunProcessEnvFunc(ctx, importFn, options)
+	err := view.RunProcessEnvFunc(ctx, importFn)
 	return pkgs, err
 }
 
diff --git a/internal/lsp/source/view.go b/internal/lsp/source/view.go
index 0847f6c..af05e1c 100644
--- a/internal/lsp/source/view.go
+++ b/internal/lsp/source/view.go
@@ -110,9 +110,9 @@
 	// Config returns the configuration for the view.
 	Config(ctx context.Context) *packages.Config
 
-	// RunProcessEnvFunc runs fn with the process env for this view inserted into opts.
+	// RunProcessEnvFunc runs fn with the process env for this view.
 	// Note: the process env contains cached module and filesystem state.
-	RunProcessEnvFunc(ctx context.Context, fn func(*imports.Options) error, opts *imports.Options) error
+	RunProcessEnvFunc(ctx context.Context, fn func(*imports.Options) error) error
 
 	// Options returns a copy of the Options for this view.
 	Options() Options
