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

{
  # https://devenv.sh/basics/
  env.GREET = "devenv";

  # https://devenv.sh/packages/
  packages = [ 
    pkgs.git 
    pkgs.nodejs_20
    pkgs.nodePackages.typescript
    pkgs.nodePackages.ts-node
    pkgs.ripgrep
  ];

  # https://devenv.sh/languages/
  languages.go.enable = true;
  languages.python = {
    enable = true;
    package = pkgs.python311;
    venv.enable = true;
    venv.requirements = ''
      # Add Python requirements here
    '';
  };
  languages.rust.enable = true;
  languages.dotnet.enable = true;
  languages.typescript.enable = true;

  # https://devenv.sh/processes/
  # processes.cargo-watch.exec = "cargo-watch";

  # https://devenv.sh/services/
  # services.postgres.enable = true;

  # https://devenv.sh/scripts/
  scripts.hello.exec = ''
    echo hello from $GREET
  '';

  enterShell = ''
    hello
    echo "Available tools:"
    git --version
    go version
    python --version
    node --version
    tsc --version
    rustc --version
    dotnet --version
    rg --version
  '';

  # https://devenv.sh/tasks/
  # tasks = {
  #   "myproj:setup".exec = "mytool build";
  #   "devenv:enterShell".after = [ "myproj:setup" ];
  # };

  # https://devenv.sh/tests/
  enterTest = ''
    echo "Running tests"
    git --version | grep --color=auto "${pkgs.git.version}"
    go version
    python --version
    node --version
    rustc --version
    dotnet --version
    rg --version
  '';

  # https://devenv.sh/git-hooks/
  # git-hooks.hooks.shellcheck.enable = true;

  # See full reference at https://devenv.sh/reference/options/
}
