vscode: add dedicated modules for VSCode forks

Add standalone modules for Antigravity, Cursor, Kiro, VSCodium, and
Windsurf using the mkVscodeModule factory. Each module provides its own
programs.<name> option namespace, allowing multiple VSCode-based editors
to be configured simultaneously.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Seong Yong-ju
2026-04-25 02:21:32 +09:00
committed by Austin Horstman
parent 26412a220b
commit 80ab64bb79
11 changed files with 331 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
{
time = "2026-03-02T15:33:49+00:00";
condition = true;
message = ''
New modules are available: 'programs.cursor', 'programs.vscodium',
'programs.windsurf', 'programs.kiro', and 'programs.antigravity'.
These provide dedicated configuration for VSCode-based editors,
allowing multiple editors to be configured simultaneously.
Users who previously set 'programs.vscode.package' to a non-vscode
package (e.g. pkgs.vscodium) should migrate to the corresponding
dedicated module instead.
'';
}

View File

@@ -0,0 +1,23 @@
{ lib, ... }:
let
modulePath = [
"programs"
"antigravity"
];
mkVscodeModule = import ./vscode/mkVscodeModule.nix;
in
{
meta.maintainers = with lib.maintainers; [ sei40kr ];
imports = [
(mkVscodeModule {
inherit modulePath;
name = "Antigravity";
packageName = "antigravity";
nameShort = "Antigravity";
dataFolderName = ".antigravity";
skipVersionCheck = true;
})
];
}

View File

@@ -0,0 +1,22 @@
{ lib, ... }:
let
modulePath = [
"programs"
"cursor"
];
mkVscodeModule = import ./vscode/mkVscodeModule.nix;
in
{
meta.maintainers = with lib.maintainers; [ sei40kr ];
imports = [
(mkVscodeModule {
inherit modulePath;
name = "Cursor";
packageName = "code-cursor";
nameShort = "Cursor";
dataFolderName = ".cursor";
})
];
}

22
modules/programs/kiro.nix Normal file
View File

@@ -0,0 +1,22 @@
{ lib, ... }:
let
modulePath = [
"programs"
"kiro"
];
mkVscodeModule = import ./vscode/mkVscodeModule.nix;
in
{
meta.maintainers = with lib.maintainers; [ sei40kr ];
imports = [
(mkVscodeModule {
inherit modulePath;
name = "Kiro";
packageName = "kiro";
nameShort = "Kiro";
dataFolderName = ".kiro";
})
];
}

View File

@@ -0,0 +1,22 @@
{ lib, ... }:
let
modulePath = [
"programs"
"vscodium"
];
mkVscodeModule = import ./vscode/mkVscodeModule.nix;
in
{
meta.maintainers = with lib.maintainers; [ sei40kr ];
imports = [
(mkVscodeModule {
inherit modulePath;
name = "VSCodium";
packageName = "vscodium";
nameShort = "VSCodium";
dataFolderName = ".vscode-oss";
})
];
}

View File

@@ -0,0 +1,22 @@
{ lib, ... }:
let
modulePath = [
"programs"
"windsurf"
];
mkVscodeModule = import ./vscode/mkVscodeModule.nix;
in
{
meta.maintainers = with lib.maintainers; [ sei40kr ];
imports = [
(mkVscodeModule {
inherit modulePath;
name = "Windsurf";
packageName = "windsurf";
nameShort = "Windsurf";
dataFolderName = ".windsurf";
})
];
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
package = pkgs.writeScriptBin "antigravity" "" // {
pname = "antigravity";
version = "1.11.14";
};
in
{
antigravity-paths =
{
pkgs,
...
}:
let
argvPath = ".antigravity/argv.json";
settingsPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Library/Application Support/Antigravity/User/settings.json"
else
".config/Antigravity/User/settings.json";
in
{
programs.antigravity = {
enable = true;
inherit package;
argvSettings.enable-crash-reporter = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
};
};
nmt.script = ''
assertFileExists "home-files/${argvPath}"
assertFileExists "home-files/${settingsPath}"
'';
};
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
package = pkgs.writeScriptBin "cursor" "" // {
pname = "cursor";
version = "2.5.26";
};
in
{
cursor-paths =
{
pkgs,
...
}:
let
argvPath = ".cursor/argv.json";
settingsPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Library/Application Support/Cursor/User/settings.json"
else
".config/Cursor/User/settings.json";
in
{
programs.cursor = {
enable = true;
inherit package;
argvSettings.enable-crash-reporter = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
};
};
nmt.script = ''
assertFileExists "home-files/${argvPath}"
assertFileExists "home-files/${settingsPath}"
'';
};
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
package = pkgs.writeScriptBin "kiro" "" // {
pname = "kiro";
version = "0.10.32";
};
in
{
kiro-paths =
{
pkgs,
...
}:
let
argvPath = ".kiro/argv.json";
settingsPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Library/Application Support/Kiro/User/settings.json"
else
".config/Kiro/User/settings.json";
in
{
programs.kiro = {
enable = true;
inherit package;
argvSettings.enable-crash-reporter = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
};
};
nmt.script = ''
assertFileExists "home-files/${argvPath}"
assertFileExists "home-files/${settingsPath}"
'';
};
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
package = pkgs.writeScriptBin "vscodium" "" // {
pname = "vscodium";
version = "1.109.51242";
};
in
{
vscodium-paths =
{
pkgs,
...
}:
let
argvPath = ".vscode-oss/argv.json";
settingsPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Library/Application Support/VSCodium/User/settings.json"
else
".config/VSCodium/User/settings.json";
in
{
programs.vscodium = {
enable = true;
inherit package;
argvSettings.enable-crash-reporter = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
};
};
nmt.script = ''
assertFileExists "home-files/${argvPath}"
assertFileExists "home-files/${settingsPath}"
'';
};
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
let
package = pkgs.writeScriptBin "windsurf" "" // {
pname = "windsurf";
version = "1.9552.25";
};
in
{
windsurf-paths =
{
pkgs,
...
}:
let
argvPath = ".windsurf/argv.json";
settingsPath =
if pkgs.stdenv.hostPlatform.isDarwin then
"Library/Application Support/Windsurf/User/settings.json"
else
".config/Windsurf/User/settings.json";
in
{
programs.windsurf = {
enable = true;
inherit package;
argvSettings.enable-crash-reporter = false;
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
};
};
nmt.script = ''
assertFileExists "home-files/${argvPath}"
assertFileExists "home-files/${settingsPath}"
'';
};
}