forked from jan-leila/nix-config
		
	
		
			
				
	
	
		
			120 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
	
		
			3.2 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   pkgs,
 | |
|   config,
 | |
|   osConfig,
 | |
|   ...
 | |
| }: let
 | |
|   nix-development-enabled = osConfig.host.nix-development.enable;
 | |
|   ai-tooling-enabled = osConfig.host.ai.enable;
 | |
| in {
 | |
|   imports = [
 | |
|     ./user-words.nix
 | |
|   ];
 | |
| 
 | |
|   config = lib.mkIf config.user.isDesktopUser {
 | |
|     programs = {
 | |
|       bash.shellAliases = {
 | |
|         code = "codium";
 | |
|       };
 | |
| 
 | |
|       vscode = {
 | |
|         package = pkgs.vscodium;
 | |
| 
 | |
|         mutableExtensionsDir = false;
 | |
| 
 | |
|         profiles.default = {
 | |
|           enableUpdateCheck = false;
 | |
|           enableExtensionUpdateCheck = false;
 | |
| 
 | |
|           userSettings = lib.mkMerge [
 | |
|             {
 | |
|               "javascript.updateImportsOnFileMove.enabled" = "always";
 | |
|               "editor.tabSize" = 2;
 | |
|               "editor.insertSpaces" = false;
 | |
|             }
 | |
|           ];
 | |
| 
 | |
|           extraExtensions = {
 | |
|             # vs code feel
 | |
|             oneDark.enable = true;
 | |
|             atomKeybindings.enable = true;
 | |
|             openRemoteSsh.enable = true;
 | |
| 
 | |
|             # html development
 | |
|             autoRenameTag.enable = true;
 | |
|             liveServer.enable = true;
 | |
| 
 | |
|             # js development
 | |
|             es7ReactJsSnippets.enable = true;
 | |
|             tauriVscode.enable = true;
 | |
|             vscodeEslint.enable = true;
 | |
|             vscodeJest.enable = true;
 | |
|             vitest.enable = true;
 | |
|             vscodeStandard.enable = true;
 | |
|             vscodeStylelint.enable = true;
 | |
| 
 | |
|             nearley.enable = true;
 | |
| 
 | |
|             # astro development
 | |
|             vscodeMdx.enable = true;
 | |
|             astroVscode.enable = true;
 | |
| 
 | |
|             # nix development
 | |
|             alejandra.enable = nix-development-enabled;
 | |
|             nixIde.enable = nix-development-enabled;
 | |
| 
 | |
|             # go development
 | |
|             go.enable = true;
 | |
| 
 | |
|             # claude development
 | |
|             claudeDev = lib.mkIf ai-tooling-enabled {
 | |
|               enable = true;
 | |
|               mcp = {
 | |
|                 nixos.enable = true;
 | |
|                 eslint = {
 | |
|                   enable = true;
 | |
|                   autoApprove = {
 | |
|                     lint-files = true;
 | |
|                   };
 | |
|                 };
 | |
|                 vitest = {
 | |
|                   enable = true;
 | |
|                   autoApprove = {
 | |
|                     list_tests = true;
 | |
|                     run_tests = true;
 | |
|                     analyze_coverage = true;
 | |
|                     set_project_root = true;
 | |
|                   };
 | |
|                 };
 | |
|                 sleep = {
 | |
|                   enable = true;
 | |
|                   timeout = 18000; # 5 hours to match claude codes timeout
 | |
|                   autoApprove = {
 | |
|                     sleep = true;
 | |
|                   };
 | |
|                 };
 | |
|               };
 | |
|             };
 | |
| 
 | |
|             # misc extensions
 | |
|             evenBetterToml.enable = true;
 | |
|             direnv.enable = config.programs.direnv.enable;
 | |
|             conventionalCommits.enable = true;
 | |
|           };
 | |
| 
 | |
|           extensions = let
 | |
|             extension-pkgs = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version;
 | |
|           in (
 | |
|             with extension-pkgs.open-vsx; [
 | |
|               # vs code feel extensions
 | |
|               streetsidesoftware.code-spell-checker
 | |
|               streetsidesoftware.code-spell-checker-german
 | |
|               streetsidesoftware.code-spell-checker-italian
 | |
|             ]
 | |
|           );
 | |
|         };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |