mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
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:
committed by
Austin Horstman
parent
26412a220b
commit
80ab64bb79
15
modules/misc/news/2026/03/2026-03-02_15-33-49.nix
Normal file
15
modules/misc/news/2026/03/2026-03-02_15-33-49.nix
Normal 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.
|
||||
'';
|
||||
}
|
||||
23
modules/programs/antigravity.nix
Normal file
23
modules/programs/antigravity.nix
Normal 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;
|
||||
})
|
||||
];
|
||||
}
|
||||
22
modules/programs/cursor.nix
Normal file
22
modules/programs/cursor.nix
Normal 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
22
modules/programs/kiro.nix
Normal 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";
|
||||
})
|
||||
];
|
||||
}
|
||||
22
modules/programs/vscodium.nix
Normal file
22
modules/programs/vscodium.nix
Normal 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";
|
||||
})
|
||||
];
|
||||
}
|
||||
22
modules/programs/windsurf.nix
Normal file
22
modules/programs/windsurf.nix
Normal 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";
|
||||
})
|
||||
];
|
||||
}
|
||||
41
tests/modules/programs/antigravity/default.nix
Normal file
41
tests/modules/programs/antigravity/default.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
41
tests/modules/programs/cursor/default.nix
Normal file
41
tests/modules/programs/cursor/default.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
41
tests/modules/programs/kiro/default.nix
Normal file
41
tests/modules/programs/kiro/default.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
41
tests/modules/programs/vscodium/default.nix
Normal file
41
tests/modules/programs/vscodium/default.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
41
tests/modules/programs/windsurf/default.nix
Normal file
41
tests/modules/programs/windsurf/default.nix
Normal 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}"
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user