{ pkgs, inputs, system, ... }: { programs.vscode = let vscode-package = pkgs.vscodium; in { enable = true; package = vscode-package; enableUpdateCheck = false; enableExtensionUpdateCheck = false; mutableExtensionsDir = false; extensions = with (inputs.vscode-extensions.extensions."${system}".forVSCodeVersion ( # Get pkgs.vscodium version, and remove the 4th part (forVSCodeVersion only expects 3 parts) # By using forVSCodeVersion, any unsupported versions are automatically excluded and this config # won't build (rather than only finding out in vscode itself) pkgs.lib.strings.concatStringsSep "." ( pkgs.lib.lists.take 3 ( pkgs.lib.strings.splitString "." vscode-package.version ) ) )); ( (with open-vsx; [ # Language support rust-lang.rust-analyzer # Rust llvm-vs-code-extensions.vscode-clangd # C++ vadimcn.vscode-lldb # C++ Debugging jnoortheen.nix-ide # Nix tamasfe.even-better-toml # TOML yzhang.markdown-all-in-one # Markdown denoland.vscode-deno # Deno JS/TS # Theming pkief.material-icon-theme # Material icons # Utilities streetsidesoftware.code-spell-checker # Spellchecking jeanp413.open-remote-ssh # Remote SSH ]) ++ (with vscode-marketplace; [ yy0931.save-as-root # Save as root over SSH ]) ); userSettings = { # Editor "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'Droid Sans Mono', 'monospace', monospace"; "editor.indentSize" = "tabSize"; "editor.tabSize" = 4; "files.associations" = { "*.hujson" = "jsonc"; }; # JJ "files.watcherExclude" = { "**/.git/objects/**" = true; "**/.git/subtree-cache/**" = true; "**/.hg/store/**" = true; "**/.jj" = true; }; "files.exclude" = { "**/.git" = true; "**/.jj" = true; "**/.svn" = true; "**/.hg" = true; "**/CVS" = true; "**/.DS_Store" = true; "**/Thumbs.db" = true; }; # Nix "nix.enableLanguageServer" = true; "nix.serverPath" = "nixd"; "nix.serverSettings" = { nixd = { formatting = { command = [ "nixfmt" ]; }; nixpkgs = { expr = ''import (builtins.getFlake "/etc/nixos").inputs.nixpkgs { }''; }; options = { nixos = { expr = ''(builtins.getFlake "/etc/nixos").nixosConfigurations.ty-nixos.options''; }; home-manager = { expr = ''(builtins.getFlake "/etc/nixos").homeConfigurations."ty".options''; }; }; }; }; }; }; }