100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   config,
 | |
|   lib,
 | |
|   pkgs,
 | |
|   ...
 | |
| }:
 | |
| 
 | |
| with lib;
 | |
| let
 | |
|   cfg = config.modules.vscode;
 | |
|   # theme = config.desktop.theming;
 | |
| in
 | |
| {
 | |
|   options.modules.vscode = {
 | |
|     enable = mkEnableOption "vscode";
 | |
|     # codeFont = mkOption {
 | |
|     #   type = types.anything;
 | |
|     #   default = theme.fonts.pkgs."Fira Code";
 | |
|     # };
 | |
|     # fallbackFont = mkOption {
 | |
|     #   type = types.anything;
 | |
|     #   default = theme.fonts.pkgs."Symbols Nerd Font Mono";
 | |
|     # };
 | |
|   };
 | |
| 
 | |
|   config = mkIf cfg.enable {
 | |
|     # TODO: Fix theming
 | |
|     # desktop.theming.fonts.extraFonts = [ cfg.codeFont ];
 | |
| 
 | |
|     programs.vscode = {
 | |
|       enable = true;
 | |
| 
 | |
|       mutableExtensionsDir = false;
 | |
|       profiles.default = {
 | |
|         extensions = with pkgs.vscode-extensions; [
 | |
|           eamodio.gitlens
 | |
|           ms-vscode.hexeditor
 | |
|           mkhl.direnv
 | |
|           usernamehw.errorlens
 | |
|           gruntfuggly.todo-tree
 | |
|           github.copilot
 | |
|           github.copilot-chat
 | |
|           tomoki1207.pdf
 | |
|           ms-vsliveshare.vsliveshare
 | |
|           ms-vscode-remote.remote-ssh
 | |
|         ];
 | |
| 
 | |
|         userSettings =
 | |
|           let
 | |
|             # font-family = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
 | |
|             # TODO: Move the conversion factor to theme settings
 | |
|             # font-size = mkForce cfg.codeFont.recommendedSize; # Convert pt to px
 | |
|           in
 | |
|           {
 | |
|             # Font setup
 | |
|             # "editor.fontFamily" = font-family;
 | |
|             # "editor.inlayHints.fontFamily" = font-family;
 | |
|             # "editor.inlineSuggest.fontFamily" = font-family;
 | |
|             # "editor.fontSize" = font-size;
 | |
|             # "editor.fontLigatures" = true;
 | |
|             # "terminal.integrated.fontFamily" = font-family;
 | |
|             # "terminal.integrated.fontSize" = font-size;
 | |
|             # "chat.editor.fontFamily" = font-family; # TODO: Change this font to the standard UI font
 | |
|             # "chat.editor.fontSize" = font-size;
 | |
|             # "debug.console.fontFamily" = font-family;
 | |
|             # "debug.console.fontSize" = font-size;
 | |
|             # "scm.inputFontFamily" = font-family; # TODO: Change this font to the standard UI font
 | |
|             # "scm.inputFontSize" = font-size;
 | |
|             # "markdown.preview.fontFamily" = mkForce theme.fonts.sansSerif.name; # TODO: Change this font to the standard UI font
 | |
|             # "markdown.preview.fontSize" = mkForce theme.fonts.sansSerif.recommendedSize;
 | |
| 
 | |
|             # Formatting
 | |
|             "editor.formatOnSave" = true;
 | |
|             "editor.tabSize" = 4;
 | |
| 
 | |
|             # Layout
 | |
|             "window.menuBarVisibility" = "hidden";
 | |
| 
 | |
|             # Git settings
 | |
|             "git.autofetch" = true;
 | |
|             "git.enableSmartCommit" = false;
 | |
|             "git.suggestSmartCommit" = false;
 | |
| 
 | |
|             # Disable update notifications
 | |
|             "update.mode" = "none";
 | |
| 
 | |
|             # Set themes
 | |
|             "window.autoDetectColorScheme" = true;
 | |
| 
 | |
|             # TODO: Move to direnv module
 | |
|             # Ignore direnv folder
 | |
|             "files.exclude" = {
 | |
|               ".direnv" = true;
 | |
|             };
 | |
|           };
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 | 
