diff --git a/docs/configuration.md b/docs/configuration.md
index 160cd05626fb7376d105772dbf03f7f0d8e58d14..8683cc05b865d556cd98ce5fc0b1c274108e8530 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -474,7 +474,7 @@ Obviously, you can't set repository or package file location with this method.
   "prBody": "This {{#if isGitHub}}Pull{{else}}Merge{{/if}} Request updates `package.json` lock files to use the latest dependency versions.\n\n{{#if schedule}}\n**Note**: This PR was created on a configured schedule (\"{{schedule}}\"{{#if timezone}} in timezone `{{timezone}}`{{/if}}) and will not receive updates outside those times.\n{{/if}}\n\n{{#if hasErrors}}\n\n---\n\n### Errors\n\nRenovate encountered some errors when processing your repository, so you are being notified here even if they do not directly apply to this PR.\n\n{{#each errors as |error|}}\n-   `{{error.depName}}`: {{error.message}}\n{{/each}}\n{{/if}}\n\n{{#if hasWarnings}}\n\n---\n\n### Warnings\n\nPlease make sure the following warnings are safe to ignore:\n\n{{#each warnings as |warning|}}\n-   `{{warning.depName}}`: {{warning.message}}\n{{/each}}\n{{/if}}\n\n---\n\nThis {{#if isGitHub}}PR{{else}}MR{{/if}} has been generated by [Renovate Bot](https://renovateapp.com).",
   "schedule": "before 5am on monday"
 }</pre></td>
-  <td></td>
+  <td>`RENOVATE_LOCK_FILE_MAINTENANCE`</td>
   <td><td>
 </tr>
 <tr>
diff --git a/lib/config/definitions.js b/lib/config/definitions.js
index 68eb7a605d3322886c0c2e02c19d411187bdc24a..389f016e25eefd9bec0ebdfaaac48a464a69fca3 100644
--- a/lib/config/definitions.js
+++ b/lib/config/definitions.js
@@ -313,7 +313,6 @@ const options = [
       schedule: 'before 5am on monday',
     },
     cli: false,
-    env: false,
     mergeable: true,
   },
   // Dependency Groups
diff --git a/lib/config/env.js b/lib/config/env.js
index 50d1004293c45417f837f9ad4e24c42656a7f125..5d8db9d41c5ab98f0283edbf0e65f2c6cbed21db 100644
--- a/lib/config/env.js
+++ b/lib/config/env.js
@@ -26,6 +26,7 @@ function getConfig(env) {
     list: val => val.split(',').map(el => el.trim()),
     string: val => val,
     integer: val => parseInt(val, 10),
+    json: val => JSON.parse(val),
   };
 
   options.forEach(option => {
diff --git a/lib/workers/package-file/index.js b/lib/workers/package-file/index.js
index 35099da4fc38c3acbe5c64bf30e0c1e2674073a1..80a30cdc0846ddc346ec92548fb45b59970ae4ca 100644
--- a/lib/workers/package-file/index.js
+++ b/lib/workers/package-file/index.js
@@ -70,21 +70,22 @@ async function renovatePackageFile(packageFileConfig) {
   if (await config.api.getFileContent(packageLockFileName)) {
     config.hasPackageLock = true;
   }
-  if (config.hasYarnLock || config.hasPackageLock) {
+  if (
+    config.lockFileMaintenance.enabled &&
+    (config.hasYarnLock || config.hasPackageLock)
+  ) {
+    logger.debug('lockFileMaintenance enabled');
     // Maintain lock files
     const lockFileMaintenanceConf = configParser.mergeChildConfig(
       config,
       config.lockFileMaintenance
     );
-    if (lockFileMaintenanceConf.enabled) {
-      logger.debug('lockFileMaintenance enabled');
-      lockFileMaintenanceConf.type = 'lockFileMaintenance';
-      logger.debug(
-        { config: lockFileMaintenanceConf },
-        `lockFileMaintenanceConf`
-      );
-      upgrades.push(lockFileMaintenanceConf);
-    }
+    lockFileMaintenanceConf.type = 'lockFileMaintenance';
+    logger.debug(
+      { config: lockFileMaintenanceConf },
+      `lockFileMaintenanceConf`
+    );
+    upgrades.push(lockFileMaintenanceConf);
   }
 
   logger.info('Finished processing package file');
diff --git a/test/config/env.spec.js b/test/config/env.spec.js
index 0b09cfd80a8d2493b7208be0aa0850c4d8871165..f454a8ad7a6a938bd8be25f1ab1dd5ca8337c9a6 100644
--- a/test/config/env.spec.js
+++ b/test/config/env.spec.js
@@ -34,6 +34,10 @@ describe('config/env', () => {
       const envParam = { RENOVATE_GITHUB_APP_ID: 5 };
       env.getConfig(envParam).should.eql({ githubAppId: 5 });
     });
+    it('supports json', () => {
+      const envParam = { RENOVATE_LOCK_FILE_MAINTENANCE: '{}' };
+      expect(env.getConfig(envParam)).toEqual({ lockFileMaintenance: {} });
+    });
   });
   describe('.getEnvName(definition)', () => {
     it('returns empty', () => {