{ config, pkgs, lib, ... }:
{
  # Integrated Development Environment (IDE)

  environment.sessionVariables.NIXOS_OZONE_WL = lib.mkIf (config.services.xserver.displayManager.gdm.wayland) "1";

  environment.systemPackages = with pkgs; [
    (vscode-with-extensions.override {
      vscode = vscodium;
      vscodeExtensions = with vscode-extensions; [
        #ms-azuretools.vscode-docker
        #ms-vscode-remote.remote-ssh

        # Load environment from `shell.nix`.
        # https://matthewrhone.dev/nixos-vscode-environment
        # https://github.com/arrterian/nix-env-selector
        arrterian.nix-env-selector

        # Extended Markdown support, e.g. insert TOC.
        # https://github.com/yzhang-gh/vscode-markdown
        yzhang.markdown-all-in-one
        
        # Nix language support.
        # https://github.com/bbenoist/vscode-nix
        bbenoist.nix
        
        # Python language support:
        # IntelliSense (Pylance), Linting, Debugging, code formatting, unit tests, etc.
        ms-python.python
        # Python formatting.
        # https://code.visualstudio.com/docs/python/formatting#_choose-a-formatter  # Not yet packaged.
        # https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8  # Not yet packaged.

        # Jinja2 Templating
        vscode-extensions.wholroyd.jinja
        #samuelcolvin.jinjahtml # Not yet packaged.
      ];
    })
  ];
}
