{
  lib,
  config,
  pkgs,
  ...
}: let
  inherit (lib) mkEnableOption mkIf;
  cfg = config.horseman.apps.dev;
in {
  options = {
    horseman.apps.dev = {
      enable = mkEnableOption "Apps used for programming";
    };
  };

  config = mkIf cfg.enable {
    environment.systemPackages = with pkgs; [
      dotnet-sdk_10
      gcc
      ghex
      godot
      hyperfine
      jdk
      jetbrains.clion
      jetbrains.idea
      jetbrains.rider
      jetbrains.rust-rover
      jetbrains.webstorm
      libqalculate
      mermaid-cli
      mono
      nodejs_22
      platformio-core
      python313
      quickemu
      sqlite
      sqlitebrowser
      tinymist
      typst
      xclip
      unityhub
      uv
      zed-editor

      haskellPackages.ghc
      haskellPackages.cabal-install
      tree-sitter-grammars.tree-sitter-haskell
      haskell-language-server

      kotlin
      tree-sitter-grammars.tree-sitter-kotlin
      kotlin-language-server

      tree-sitter-grammars.tree-sitter-nix
      nixd

      cargo
      rustc
      rust-analyzer
      tree-sitter-grammars.tree-sitter-rust
    ];

    # QuickEMU USB Support
    virtualisation.spiceUSBRedirection.enable = true;

    programs.nix-ld.enable = true;
    programs.nix-ld.libraries = with pkgs; [
      dotnetCorePackages.sdk_9_0
    ];
  };
}
