forked from jan-leila/nix-config
		
	
		
			
				
	
	
		
			133 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
	
		
			3.8 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;
 | 
						|
              # "terminal.integrated.fontFamily" = "'Droid Sans Mono', 'monospace', monospace";
 | 
						|
            }
 | 
						|
          ];
 | 
						|
 | 
						|
          extraExtensions = {
 | 
						|
            # vs code feel
 | 
						|
            oneDark.enable = true;
 | 
						|
            atomKeybindings.enable = true;
 | 
						|
            openRemoteSsh.enable = true;
 | 
						|
            # openDyslexicFont.enable = false;
 | 
						|
 | 
						|
            # 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;
 | 
						|
                  autoApprove = {
 | 
						|
                    nixos_search = true;
 | 
						|
                    nixos_info = true;
 | 
						|
                    home_manager_search = true;
 | 
						|
                    home_manager_info = true;
 | 
						|
                    darwin_search = true;
 | 
						|
                    darwin_info = true;
 | 
						|
                    nixos_flakes_search = 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
 | 
						|
            ]
 | 
						|
          );
 | 
						|
        };
 | 
						|
      };
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |