summary refs log tree commit diff
path: root/modules/home
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home')
-rw-r--r--modules/home/code.nix72
-rw-r--r--modules/home/common.nix4
2 files changed, 76 insertions, 0 deletions
diff --git a/modules/home/code.nix b/modules/home/code.nix
new file mode 100644
index 0000000..053d550
--- /dev/null
+++ b/modules/home/code.nix
@@ -0,0 +1,72 @@
+{
+  pkgs,
+  unstablePkgs,
+  lib,
+  ...
+}:
+
+let
+  settings = import ./../../configs/vscode/settings.nix { inherit pkgs lib; };
+  keybindings = import ./../../configs/vscode/keybindings.nix { };
+
+  extensions = with unstablePkgs.vscode-extensions; [
+    # Microsoft vendor extensions
+    ms-vscode.hexeditor
+    ms-vscode-remote.remote-containers
+    ms-vscode-remote.remote-ssh
+    ms-azuretools.vscode-docker
+    github.codespaces
+
+    # Usability
+    vscodevim.vim
+    waderyan.gitblame
+    mkhl.direnv
+    alefragnani.bookmarks
+
+    # Language support
+    ms-vscode.makefile-tools
+    ms-vscode.cpptools-extension-pack
+    mesonbuild.mesonbuild
+    ms-python.python
+    ms-python.debugpy
+    charliermarsh.ruff
+    golang.go
+    jnoortheen.nix-ide
+    rust-lang.rust-analyzer
+    haskell.haskell
+    justusadam.language-haskell
+    elixir-lsp.vscode-elixir-ls
+
+    # Pretty :3
+    aaron-bond.better-comments
+    catppuccin.catppuccin-vsc-icons
+    catppuccin.catppuccin-vsc
+    jdinhlife.gruvbox
+  ];
+
+  externalExtensions = with pkgs.open-vsx; [
+    # Small extensions that aren't included in nixpkgs
+    geequlim.godot-tools
+    miguelsolorio.fluent-icons
+    tonybaloney.vscode-pets
+  ];
+
+  newVendorExtensions = with pkgs.vscode-marketplace; [
+    # Quick editing and viewing of ad-hoc repos and pull request
+    ms-vscode.remote-repositories
+    github.remotehub
+  ];
+in
+{
+  programs.vscode = {
+    enable = true;
+    enableUpdateCheck = false;
+    enableExtensionUpdateCheck = false;
+    mutableExtensionsDir = false;
+    package = unstablePkgs.vscodium;
+
+    extensions = extensions ++ externalExtensions ++ newVendorExtensions;
+    keybindings = keybindings;
+    userSettings = settings;
+  };
+}
diff --git a/modules/home/common.nix b/modules/home/common.nix
index 99900e6..7e10560 100644
--- a/modules/home/common.nix
+++ b/modules/home/common.nix
@@ -1,6 +1,10 @@
 { ... }:
 
 {
+  imports = [
+    ./code.nix
+  ];
+
   programs = {
     git = {
       enable = true;