nixos/home/vscode.nix
2026-01-14 21:24:19 +01:00

230 lines
6 KiB
Nix

{ config, pkgs, ... }:
let
# Wrap Antigravity in an FHS environment to support dynamically linked binaries
antigravityFHS = pkgs.buildFHSEnv {
name = "antigravity";
targetPkgs =
pkgs:
(with pkgs; [
antigravity
chromium
# Common libraries for dynamically linked binaries
gcc
glibc
stdenv.cc.cc
zlib
openssl
curl
libgcc
glib
gtk3
libsecret
libnotify
nss
nspr
alsa-lib
cups
dbus
expat
libdrm
libxkbcommon
mesa
pango
cairo
# X11 libraries
xorg.libX11
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
xorg.libxcb
]);
# Run antigravity binary when the FHS env is invoked
runScript = pkgs.writeShellScript "antigravity-wrapper" ''
unset LD_PRELOAD
exec ${pkgs.antigravity}/bin/antigravity "$@"
'';
# Ensure the FHS environment is set up properly
profile = ''
export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:$LD_LIBRARY_PATH
'';
extraBindMounts = [
"/etc/subuid"
"/etc/subgid"
];
};
# Wrap the FHS environment to add product.json symlink where Home Manager expects it
antigravityWrapped = pkgs.symlinkJoin {
name = "antigravity-wrapped";
paths = [ antigravityFHS ];
postBuild = ''
# Link product.json from the original antigravity package
ln -sf ${pkgs.antigravity}/lib/antigravity/resources/app/product.json $out/product.json
'';
# Pass through required attributes for Home Manager vscode module
passthru = {
inherit (pkgs.antigravity) pname version;
};
};
# Launcher for the regular non-sandboxed environment (Native)
antigravityNative = pkgs.writeShellScriptBin "antigravity-native" ''
unset LD_PRELOAD
exec ${pkgs.antigravity}/bin/antigravity "$@"
'';
# Explicit launcher for the FHS environment (same as default)
antigravityFHSLauncher = pkgs.writeShellScriptBin "antigravity-fhs" ''
exec ${antigravityWrapped}/bin/antigravity "$@"
'';
in
{
home.packages = [
antigravityNative
antigravityFHSLauncher
];
programs.vscode = {
enable = true;
package = antigravityWrapped;
# Allow mutable extensions dir so Antigravity can create extensions.json
mutableExtensionsDir = true;
# extensions = [
# (pkgs.vscode-utils.extensionFromVscodeMarketplace {
# name = "x";
# publisher = "x";
# version = "x.x.x";
# sha256 = "sha256-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=";
# })
# ];
profiles.default = {
# Disable update checks (not applicable for Nix-managed packages)
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
# Extensions from nixpkgs
extensions = with pkgs.vscode-extensions; [
# Theme & Icons
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
# Git
eamodio.gitlens
# C/C++
llvm-vs-code-extensions.vscode-clangd
# Nix
jnoortheen.nix-ide
# Python
ms-python.python
ms-python.debugpy
# Go
golang.go
# Java (RedHat + vscjava)
redhat.java
vscjava.vscode-java-debug
vscjava.vscode-java-dependency
vscjava.vscode-java-pack
vscjava.vscode-java-test
vscjava.vscode-gradle
vscjava.vscode-maven
# PHP
bmewburn.vscode-intelephense-client
xdebug.php-debug
# Ruby
shopify.ruby-lsp
# Docker & Containers
ms-azuretools.vscode-docker
# Formatters
esbenp.prettier-vscode
];
# User settings (settings.json equivalent)
userSettings = {
# Existing settings from your current settings.json
"workbench.colorTheme" = "Catppuccin Mocha";
"workbench.iconTheme" = "catppuccin-mocha";
"terminal.integrated.shellIntegration.enabled" = false;
"python.languageServer" = "Default";
"json.schemaDownload.enable" = true;
"git.autofetch" = true;
"git.confirmSync" = false;
"explorer.confirmDelete" = false;
"redhat.telemetry.enabled" = false;
# MCP Server configuration for Continue.dev / Cline
# These servers provide AI agents with direct access to:
# - Database inspection (sqlite-inspector)
# - Log analysis (pino-parser)
# - API testing (api-tester)
"mcp.servers" = {
"unified-router-sqlite" = {
command = "mcp-sqlite-inspector";
env = {
DEFAULT_DB_PATH = "/home/ashie/nixos/unified-router/data/database.db";
};
};
"unified-router-logs" = {
command = "mcp-pino-parser";
env = {
DEFAULT_LOG_PATH = "/home/ashie/nixos/unified-router/server.log";
};
};
"unified-router-api" = {
command = "mcp-api-tester";
env = {
ALLOWED_HOSTS = "localhost,127.0.0.1";
DEFAULT_PORT = "9090";
};
};
};
};
};
};
# Antigravity MCP Server Configuration
home.file.".gemini/antigravity/mcp_config.json" = {
force = true; # Allow overwriting existing file created by Antigravity
text = builtins.toJSON {
mcpServers = {
unified-router-sqlite = {
command = "mcp-sqlite-inspector";
env = {
DEFAULT_DB_PATH = "/home/ashie/nixos/unified-router/data/database.db";
};
};
unified-router-logs = {
command = "mcp-pino-parser";
env = {
DEFAULT_LOG_PATH = "/home/ashie/nixos/unified-router/server.log";
};
};
unified-router-api = {
command = "mcp-api-tester";
env = {
ALLOWED_HOSTS = "localhost,127.0.0.1";
DEFAULT_PORT = "9090";
};
};
};
};
};
}