Commit 235725e274f2
Changed files (2)
home
common
home/common/dev/default.nix
@@ -10,6 +10,7 @@
./python.nix
./rust.nix
./terraform.nix
+ ./typescript.nix
./base.nix
]
++ lib.optional (builtins.isString desktop) ./desktop.nix;
home/common/dev/typescript.nix
@@ -0,0 +1,74 @@
+{ config, pkgs, ... }:
+{
+ home.sessionVariables = {
+ # Use XDG directories for npm/node
+ NPM_CONFIG_USERCONFIG = "${config.xdg.configHome}/npm/npmrc";
+ NPM_CONFIG_CACHE = "${config.xdg.cacheHome}/npm";
+ NPM_CONFIG_PREFIX = "${config.xdg.dataHome}/npm";
+ # pnpm
+ PNPM_HOME = "${config.xdg.dataHome}/pnpm";
+ # Bun
+ BUN_INSTALL = "${config.xdg.dataHome}/bun";
+ # Deno
+ DENO_DIR = "${config.xdg.cacheHome}/deno";
+ DENO_INSTALL_ROOT = "${config.xdg.dataHome}/deno";
+ };
+
+ # Add global npm/pnpm/bun bin directories to PATH
+ home.sessionPath = [
+ "${config.xdg.dataHome}/npm/bin"
+ "${config.xdg.dataHome}/pnpm"
+ "${config.xdg.dataHome}/bun/bin"
+ "${config.xdg.dataHome}/deno/bin"
+ ];
+
+ home.packages = with pkgs; [
+ # Core runtimes
+ nodejs # Node.js LTS (v24)
+ bun # Fast all-in-one JS runtime/bundler/package manager
+ deno # Secure runtime with built-in TypeScript support
+
+ # TypeScript compiler and type checking
+ nodePackages.typescript
+
+ # Package managers
+ nodePackages.pnpm # Fast, disk space efficient package manager
+ corepack # Manage package manager versions (yarn, pnpm)
+
+ # LSP and development tools
+ nodePackages.typescript-language-server # TypeScript/JavaScript LSP
+ nodePackages.vscode-langservers-extracted # HTML/CSS/JSON/ESLint LSPs
+ nodePackages."@tailwindcss/language-server" # TailwindCSS LSP
+ emmet-language-server # Emmet abbreviations LSP
+
+ # Linting and formatting
+ biome # Fast linter/formatter (eslint + prettier alternative)
+ nodePackages.eslint # Traditional linter
+ nodePackages.prettier # Code formatter
+ oxlint # Very fast Rust-based linter
+
+ # Build tools
+ esbuild # Extremely fast bundler
+ swc # Rust-based transpiler
+ turbo # Monorepo build system
+
+ # Node version management (for projects requiring specific versions)
+ fnm # Fast Node version manager
+
+ # CSS tools
+ tailwindcss # Utility-first CSS framework CLI
+ nodePackages.postcss # CSS transformations
+
+ # Utility tools
+ nodePackages.npm-check-updates # Find newer dependency versions
+ npkill # Clean up node_modules folders
+ nodePackages.quicktype # Generate types from JSON/Schema
+ ];
+
+ # Create npm config directory and basic npmrc
+ xdg.configFile."npm/npmrc".text = ''
+ prefix=${config.xdg.dataHome}/npm
+ cache=${config.xdg.cacheHome}/npm
+ init-module=${config.xdg.configHome}/npm/config/npm-init.js
+ '';
+}