From 0ba64df090fb3a76ba1757d0237a5d857e52ec5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sat, 1 Feb 2025 23:14:38 +0100 Subject: [PATCH] fix(nix): flake lock refresh --- lib/modules/manager/nix/extract.spec.ts | 24 ++++++++++---------- lib/modules/manager/nix/extract.ts | 30 ++++++++++++++----------- lib/modules/manager/nix/index.ts | 2 +- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/lib/modules/manager/nix/extract.spec.ts b/lib/modules/manager/nix/extract.spec.ts index 035a495eb0670f..a68bebe6c50967 100644 --- a/lib/modules/manager/nix/extract.spec.ts +++ b/lib/modules/manager/nix/extract.spec.ts @@ -87,7 +87,7 @@ describe('modules/manager/nix/extract', () => { it('returns null when no inputs', async () => { fs.readLocalFile.mockResolvedValueOnce(flake1Lock); - expect(await extractPackageFile('', 'flake.nix')).toBeNull(); + expect(await extractPackageFile('', 'flake.lock')).toBeNull(); }); const flake2Lock = `{ @@ -120,12 +120,12 @@ describe('modules/manager/nix/extract', () => { it('returns nixpkgs input', async () => { fs.readLocalFile.mockResolvedValueOnce(flake2Lock); - expect(await extractPackageFile('', 'flake.nix')).toEqual({ + expect(await extractPackageFile('', 'flake.lock')).toEqual({ deps: [ { depName: 'nixpkgs', - currentDigest: '9f4128e00b0ae8ec65918efeba59db998750ead6', currentValue: 'nixos-unstable', + currentDigest: '9f4128e00b0ae8ec65918efeba59db998750ead6', datasource: GitRefsDatasource.id, packageName: 'https://github.com/NixOS/nixpkgs', }, @@ -162,7 +162,7 @@ describe('modules/manager/nix/extract', () => { it('includes nixpkgs with no explicit ref', async () => { fs.readLocalFile.mockResolvedValueOnce(flake3Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: '612ee628421ba2c1abca4c99684862f76cb3b089', @@ -221,7 +221,7 @@ describe('modules/manager/nix/extract', () => { it('includes patchelf from HEAD', async () => { fs.readLocalFile.mockResolvedValueOnce(flake4Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: 'a0f54334df36770b335c051e540ba40afcbf8378', @@ -263,7 +263,7 @@ describe('modules/manager/nix/extract', () => { it('includes ijq from sourcehut without a flake', async () => { fs.readLocalFile.mockResolvedValueOnce(flake5Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: '88f0d9ae98942bf49cba302c42b2a0f6e05f9b58', @@ -305,7 +305,7 @@ describe('modules/manager/nix/extract', () => { it('includes home-manager from gitlab', async () => { fs.readLocalFile.mockResolvedValueOnce(flake6Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: '65ae9c147349829d3df0222151f53f79821c5134', @@ -327,7 +327,7 @@ describe('modules/manager/nix/extract', () => { it('test other version', async () => { fs.readLocalFile.mockResolvedValueOnce(flake7Lock); - expect(await extractPackageFile('', 'flake.nix')).toBeNull(); + expect(await extractPackageFile('', 'flake.lock')).toBeNull(); }); const flake8Lock = `{ @@ -361,7 +361,7 @@ describe('modules/manager/nix/extract', () => { it('includes nixpkgs with ref and shallow arguments', async () => { fs.readLocalFile.mockResolvedValueOnce(flake8Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: '5633bcff0c6162b9e4b5f1264264611e950c8ec7', @@ -401,7 +401,7 @@ describe('modules/manager/nix/extract', () => { it('includes nixpkgs but using indirect type that cannot be updated', async () => { fs.readLocalFile.mockResolvedValueOnce(flake9Lock); - expect(await extractPackageFile('', 'flake.nix')).toBeNull(); + expect(await extractPackageFile('', 'flake.lock')).toBeNull(); }); const flake10Lock = `{ @@ -488,7 +488,7 @@ describe('modules/manager/nix/extract', () => { it('includes flake from GitHub Enterprise', async () => { fs.readLocalFile.mockResolvedValueOnce(flake10Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: '6bf2706348447df6f8b86b1c3e54f87b0afda84f', @@ -591,7 +591,7 @@ describe('modules/manager/nix/extract', () => { it('includes flake with tarball type', async () => { fs.readLocalFile.mockResolvedValueOnce(flake11Lock); - expect(await extractPackageFile('', 'flake.nix')).toMatchObject({ + expect(await extractPackageFile('', 'flake.lock')).toMatchObject({ deps: [ { currentDigest: 'c7e39452affcc0f89e023091524e38b3aaf109e9', diff --git a/lib/modules/manager/nix/extract.ts b/lib/modules/manager/nix/extract.ts index cfe99ead002906..3cf61fab841029 100644 --- a/lib/modules/manager/nix/extract.ts +++ b/lib/modules/manager/nix/extract.ts @@ -25,16 +25,23 @@ export async function extractPackageFile( const deps: PackageDependency[] = []; - const match = nixpkgsRegex.exec(content); - if (match?.groups) { - const { ref } = match.groups; - deps.push({ - depName: 'nixpkgs', - currentValue: ref, - datasource: GitRefsDatasource.id, - packageName: 'https://github.com/NixOS/nixpkgs', - versioning: nixpkgsVersioning, - }); + if (packageFile.match(regEx(/\.nix$/))) { + const nixpkgsMatch = nixpkgsRegex.exec(content); + if (nixpkgsMatch?.groups) { + const { ref } = nixpkgsMatch.groups; + deps.push({ + depName: 'nixpkgs', + currentValue: ref, + datasource: GitRefsDatasource.id, + packageName: 'https://github.com/NixOS/nixpkgs', + versioning: nixpkgsVersioning, + }); + } + + if (deps.length) { + return { deps }; + } + return null; } const flakeLockParsed = NixFlakeLock.safeParse(lockContents); @@ -55,9 +62,6 @@ export async function extractPackageFile( `flake.lock is missing "root" node`, ); - if (deps.length) { - return { deps }; - } return null; } diff --git a/lib/modules/manager/nix/index.ts b/lib/modules/manager/nix/index.ts index abbe3e6ec3e84f..649879a1d613c7 100644 --- a/lib/modules/manager/nix/index.ts +++ b/lib/modules/manager/nix/index.ts @@ -8,7 +8,7 @@ export const supportsLockFileMaintenance = true; export const url = 'https://nix.dev'; export const defaultConfig = { - fileMatch: ['(^|/)flake\\.nix$'], + fileMatch: ['(^|/)flake\\.(nix|lock)$'], commitMessageTopic: 'nix', commitMessageExtra: 'to {{newValue}}', enabled: false,