From c84c3ae8626a9121e7f64be50f7cffc5445c08cf Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Wed, 28 Sep 2022 17:50:47 +0530 Subject: [PATCH] Adds VSCode setup --- programs/default.nix | 3 +- programs/vscode.nix | 196 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+), 1 deletion(-) create mode 100644 programs/vscode.nix diff --git a/programs/default.nix b/programs/default.nix index eef0a2e..995a999 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -1,7 +1,7 @@ { config, pkgs, ... }: { - imports = [ ./fish.nix ./git.nix ]; + imports = [ ./fish.nix ./git.nix ./vscode.nix ]; home.packages = with pkgs; [ bash @@ -26,6 +26,7 @@ nixfmt nix-diff ranger + rnix-lsp shellcheck statix tealdeer diff --git a/programs/vscode.nix b/programs/vscode.nix new file mode 100644 index 0000000..a395367 --- /dev/null +++ b/programs/vscode.nix @@ -0,0 +1,196 @@ +{ config, pkgs, ... }: + +{ + programs.vscode = { + enable = true; + mutableExtensionsDir = false; + + extensions = with pkgs.vscode-extensions; + [ + bierner.markdown-mermaid + bungcip.better-toml + davidanson.vscode-markdownlint + esbenp.prettier-vscode + haskell.haskell + jdinhlife.gruvbox + jnoortheen.nix-ide + justusadam.language-haskell + kamikillerto.vscode-colorize + matklad.rust-analyzer + mhutchie.git-graph + skellock.just + streetsidesoftware.code-spell-checker + timonwong.shellcheck + tyriar.sort-lines + zhuangtongfa.material-theme + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + publisher = "13xforever"; + name = "language-x86-64-assembly"; + version = "3.0.0"; + sha256 = "sha256-wIsY6Fuhs676EH8rSz4fTHemVhOe5Se9SY3Q9iAqr1M="; + } + { + publisher = "ban"; + name = "spellright"; + version = "3.0.90"; + sha256 = "sha256-yAHlwX2stqGuUu3Q+mVxsF1JKmTgy/kkT63VH3YlomM="; + } + { + publisher = "dawhite"; + name = "mustache"; + version = "1.1.1"; + sha256 = "sha256-PkymMex1icvDN2Df38EIuV1O9TkMNWP2sGOjl1+xGMk="; + } + { + publisher = "jebbs"; + name = "plantuml"; + version = "2.17.4"; + sha256 = "sha256-fnz6ubB73i7rJcv+paYyNV1r4cReuyFPjgPM0HO40ug"; + } + { + publisher = "kirozen"; + name = "wordcounter"; + version = "2.4.3"; + sha256 = "sha256-gkdMaMiDwQNjmrGfUK/c/bQUn1bovESRPJ+etz2yfJk="; + } + { + publisher = "pedrorgirardi"; + name = "vscode-cljfmt"; + version = "1.3.0"; + sha256 = "sha256-gZ8Fo7YXSapnQL6UbYUKJDg27wYqK2NG1lcJUae6dWs="; + } + { + publisher = "wmaurer"; + name = "change-case"; + version = "1.0.0"; + sha256 = "sha256-tN/jlG2PzuiCeERpgQvdqDoa3UgrUaM7fKHv6KFqujc="; + } + ]; + + userSettings = { + debug.console.fontSize = 13; + diffEditor.ignoreTrimWhitespace = true; + + editor = { + accessibilitySupport = "off"; + bracketPairColorization.enabled = true; + folding = false; + fontFamily = "'DM Mono', NanumGothicCoding, Menlo, Monaco, 'Courier New', monospace"; + fontLigatures = true; + fontSize = 13; + guides.indentation = false; + inlineSuggest.enabled = true; + minimap.enabled = false; + renderControlCharacters = true; + renderWhitespace = "none"; + rulers = [ 100 ]; + tabSize = 2; + }; + + explorer.confirmDragAndDrop = false; + extensions.ignoreRecommendations = false; + + files = { + associations = { + "*.co" = "javascript"; + "*.rkt" = "clojure"; + ".envrc*" = "shellscript"; + }; + autoSave = "afterDelay"; + exclude = { + "**/.git" = true; + "**/.svn" = true; + "**/.hg" = true; + "**/CVS" = true; + "**/.DS_Store" = true; + "**/Thumbs.db" = true; + "**/dist-newstyle" = true; + "**/node_modules" = true; + "**/.hie" = true; + "**/.direnv" = true; + }; + insertFinalNewline = true; + trimFinalNewlines = true; + trimTrailingWhitespace = true; + }; + + haskell = { + manageHLS = "PATH"; + plugin.tactics.config.timeout_duration = 5; + }; + + nix = { + enableLanguageServer = true; + formatterPath = "${pkgs.nixfmt}/bin/nixfmt"; + serverPath = "${pkgs.rnix-lsp}/bin/rnix-lsp"; + }; + + oneDarkPro = { + editorTheme = "Shadow"; + vivid = true; + }; + + spellright = { + documentTypes = [ "markdown" "latex" ]; + language = [ "en" ]; + }; + + telemetry = { + enableCrashReporter = false; + enableTelemetry = false; + }; + + terminal.integrated = { + copyOnSelection = true; + fontFamily = "'DM Mono', NanumGothicCoding, Menlo, Monaco, 'Courier New', monospace"; + scrollback = 10000; + shell.osx = "${pkgs.fish}/bin/fish"; + shellIntegration.enabled = true; + }; + + window.autoDetectColorScheme = true; + + workbench = { + activityBar.visible = false; + colorTheme = "Gruvbox Dark Hard"; + editor.highlightModifiedTabs = true; + preferredDarkColorTheme = "Gruvbox Dark Hard"; + startupEditor = "none"; + }; + + update.mode = "none"; + + "[haskell]" = { editor.defaultFormatter = "haskell.haskell"; }; + + "[javascript]" = { editor.defaultFormatter = "esbenp.prettier-vscode"; }; + }; + + keybindings = [ + { + key = "ctrl+shift+up"; + command = "editor.action.insertCursorAbove"; + when = "editorTextFocus"; + } + { + key = "alt+cmd+up"; + command = "-editor.action.insertCursorAbove"; + when = "editorTextFocus"; + } + { + key = "ctrl+shift+down"; + command = "editor.action.insertCursorBelow"; + when = "editorTextFocus"; + } + { + key = "alt+cmd+down"; + command = "-editor.action.insertCursorBelow"; + when = "editorTextFocus"; + } + { + key = "ctrl+cmd+t"; + command = "terminal.focus"; + } + ]; + }; +}