Commit a0cbcaad authored by dtvillafana's avatar dtvillafana
Browse files

ansible-language-server: init at 26.1.3

parent 36e6063a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -7227,6 +7227,11 @@
    name = "Tom van Dijk";
    keys = [ { fingerprint = "D044 F07B 8863 B681 26BD  79FE 7A98 4C82 07AD BA51"; } ];
  };
  dtvillafana = {
    github = "dtvillafana";
    githubId = 82293276;
    name = "David Villafaña";
  };
  dudeofawesome = {
    email = "tourist-04.iced@icloud.com";
    github = "dudeofawesome";
+110 −0
Original line number Diff line number Diff line
{
  lib,
  fetchFromGitHub,
  pkgs,
}:
let
  pname = "ansible-language-server";
  version = "26.1.3";

  src = fetchFromGitHub {
    owner = "ansible";
    repo = "vscode-ansible";
    tag = "v${version}";
    hash = "sha256-DsEW3xP8Fa9nwPuyEFVqG6rvAZgr4TDB6jhyixdvqt8=";
  };

  # Fixed-output derivation to fetch yarn berry dependencies
  offlineCache = pkgs.stdenvNoCC.mkDerivation {
    name = "${pname}-${version}-yarn-cache";
    inherit src;

    nativeBuildInputs = [
      pkgs.yarn-berry
      pkgs.nodejs
      pkgs.cacert
    ];

    outputHashMode = "recursive";
    outputHashAlgo = "sha256";
    outputHash = "sha256-NYbHhvlVoSL7lT1EdFkNJlmzRzQ0Gudo5pF0t6JtSic=";

    buildPhase = ''
      export HOME=$TMPDIR
      export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt

      yarn config set enableTelemetry false
      yarn config set enableGlobalCache false
      yarn config set cacheFolder .yarn/cache
      yarn install --mode=skip-build

      mkdir -p $out
      cp -r .yarn/cache/* $out/
      cp .yarnrc.yml $out/ || true
    '';

    dontInstall = true;
  };

in
pkgs.stdenvNoCC.mkDerivation {
  inherit pname version src;

  nativeBuildInputs = with pkgs; [
    yarn-berry
    nodejs
    makeWrapper
  ];

  buildPhase = ''
    export HOME=$TMPDIR

    # Set up yarn cache from our FOD
    mkdir -p .yarn/cache
    for f in ${offlineCache}/*; do
      if [ "$(basename $f)" != ".yarnrc.yml" ]; then
        cp -r "$f" .yarn/cache/
      fi
    done

    yarn config set enableTelemetry false
    yarn config set enableGlobalCache false
    yarn config set cacheFolder .yarn/cache
    yarn config set enableNetwork false

    # Only install deps for ansible-language-server workspace
    yarn workspaces focus @ansible/ansible-language-server

    # Build ansible-language-server (exclude tests)
    cd packages/ansible-language-server
    rm -rf test
    yarn run compile
  '';

  installPhase = ''
    mkdir -p $out/lib/node_modules/ansible-language-server
    cp -r out package.json $out/lib/node_modules/ansible-language-server/

    # Copy node_modules (yarn berry installs them at workspace root)
    # Use -L to dereference symlinks (yarn creates symlinks for workspace packages)
    cd ../..
    cp -rL node_modules $out/lib/node_modules/ansible-language-server/

    mkdir -p $out/lib/node_modules/ansible-language-server/bin
    cp packages/ansible-language-server/bin/ansible-language-server $out/lib/node_modules/ansible-language-server/bin/

    mkdir -p $out/bin
    makeWrapper ${pkgs.nodejs}/bin/node $out/bin/ansible-language-server \
      --prefix PATH : ${pkgs.python3}/bin \
      --add-flags "$out/lib/node_modules/ansible-language-server/out/server/src/server.js"
  '';

  meta = with lib; {
    changelog = "https://github.com/ansible/vscode-ansible/releases/tag/v${version}";
    description = "Ansible Language Server";
    mainProgram = "ansible-language-server";
    homepage = "https://github.com/ansible/vscode-ansible";
    license = licenses.mit;
    maintainers = with lib.maintainers; [ dtvillafana ];
  };
}
+0 −1
Original line number Diff line number Diff line
@@ -295,7 +295,6 @@ mapAliases {
  androidndkPkgs_26 = throw "androidndkPkgs_26 has been removed, as it is EOL"; # Added 2025-08-09
  anew = throw "'anew' has been removed, as it has been unmaintained upstream since March 2022"; # Added 2026-01-01
  anonymousPro = anonymous-pro-fonts; # Added 2026-02-08
  ansible-language-server = throw "ansible-language-server was removed, because it was unmaintained in nixpkgs."; # Added 2025-09-24
  ansible-later = throw "ansible-later has been discontinued. The author recommends switching to ansible-lint"; # Added 2025-08-24
  ansible_2_16 = throw "ansible_2_16 has been removed, as it is EOL"; # Added 2025-11-10
  ansible_2_17 = throw "ansible_2_17 has been removed, as it is EOL"; # Added 2025-11-10
+4 −0
Original line number Diff line number Diff line
@@ -5441,6 +5441,10 @@ with pkgs;

  ansible = python3Packages.toPythonApplication python3Packages.ansible-core;

  ansible-language-server =
    callPackage ../development/tools/language-servers/ansible-language-server
      { };

  ansible-builder = with python3Packages; toPythonApplication ansible-builder;

  yakut = python3Packages.callPackage ../development/tools/misc/yakut { };