{ lib, config, pkgs, ... }:

{
  home-manager.users.willifan = {
    programs.vscode = lib.mkIf config.desktop.vscodium.enable {
      enable = true;
      package = pkgs.vscodium;

      profiles.default = {
        userSettings = {
          "[nix]"."editor.tabSize" = 2;
          "explorer.confirmDragAndDrop" = false;
          "cmake.showOptionsMovedNotification" = false;
          "extensions.autoUpdate" = false;
          "rust-analyzer.check.command" = "clippy";
          "editor.formatOnSave" = true;
        };
        extensions = with pkgs.vscode-extensions; [
          # System
          arrterian.nix-env-selector
          bbenoist.nix
          #fireblast.hyprlang-vscode
          #eww-yuck.yuck

          #Rust
          rust-lang.rust-analyzer
          serayuzgur.crates
          bungcip.better-toml
          #vadimcn.vscode-lldb
          usernamehw.errorlens

          #C/C++
          ms-vscode.cpptools
          twxs.cmake
          ms-vscode.cmake-tools

          #Shell
          timonwong.shellcheck
          mads-hartmann.bash-ide-vscode

          #Git
          #phil294.git-log--graph
        ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
          {
            name = "hyprlang-vscode";
            publisher = "fireblast";
            version = "0.0.1";
            sha256 = "lSMihMIue0qu9+97EgT5dqjbzsey0TLZDpJby+Piip4=";
          }
          {
            name = "yuck";
            publisher = "eww-yuck";
            version = "0.0.3";
            sha256 = "DITgLedaO0Ifrttu+ZXkiaVA7Ua5RXc4jXQHPYLqrcM=";
          }
          {
            name = "git-log--graph";
            publisher = "phil294";
            version = "0.1.15";
            sha256 = "lvjDkvXSX7rw7HyyK3WWQLnGezvL6FPEgtjIi8KWkU0=";
          }
        ];
      };
    };
  };
}