{ den, pkgs-unstable, config, ... }:
let
  username = config.local.identity.username;
in {
  den.aspects.dev.nixos = { pkgs, ... }: {
    environment.systemPackages = with pkgs-unstable; [
      # CLI utilities
      gcc
      python3
      uv
      fzf
      just
      tree-sitter
      ripgrep
      chafa
      forgejo-cli
      awscli2

      tracy

      # Infrastructure
      docker-compose
      jq

      # IDE
      jetbrains.idea

      # Neovim
      vimPlugins.blink-cmp

      # LSPs
      bash-language-server
      lua-language-server
      nixd
      vscode-langservers-extracted
      yaml-language-server
      dockerfile-language-server
      marksman
      clang-tools
      jdt-language-server
      typescript-language-server
      pyright
      taplo
      sqls
      astro-language-server
      angular-language-server
      vue-language-server
      tailwindcss-language-server
      qt6Packages.qtdeclarative
      wgsl-analyzer

      # Tools
      drawio

      # Java
      openjdk8
      openjdk11
      openjdk17
      openjdk21
      maven
    ];

    environment.variables = {
      JAVA_HOME = "${pkgs-unstable.openjdk8}";
    };

    virtualisation.docker = {
      enable        = true;
      enableOnBoot  = false;
      package       = pkgs-unstable.docker_29;
    };
    users.users.${username}.extraGroups = [ "docker" ];
  };
}
