[Guix packaging] Effect-TS/language-service #65

Open
opened 2026-08-14 13:16:55 +00:00 by htayj · 1 comment
htayj commented 2026-08-14 13:16:55 +00:00 (Migrated from github.com)

Candidate

  • Upstream canonical URL: https://github.com/Effect-TS/language-service
  • Source pinned commit/release when known: 5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4 (default-branch snapshot checked 2026-08-14)
  • Target concrete installed deliverable: Effect Language Service LSP/editor extension
  • Primary category: editor-extension
  • Tags: none
  • Primary language normalized: TypeScript
  • Build system: node-build-system with pnpm workspace vendoring
  • SPDX expression: MIT
  • License status: declared-free
  • License evidence: GitHub repository metadata declares MIT; the upstream license text still needs package-review confirmation.
  • Difficulty: hard — The pnpm workspace closure and editor/LSP packaging boundary need explicit offline handling.
  • Workflow state: research
  • Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found.

Scope and blockers

Install the language-service server and editor integration artifacts.

Acceptance checks

  • guix lint -L. <package-name> and guix build -L. <package-name> pass once a package definition exists.
  • Start the language server and perform an offline initialize/shutdown exchange.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:16:55Z.

## Candidate - Upstream canonical URL: https://github.com/Effect-TS/language-service - Source pinned commit/release when known: `5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4` (default-branch snapshot checked 2026-08-14) - Target concrete installed deliverable: Effect Language Service LSP/editor extension - Primary category: editor-extension - Tags: none - Primary language normalized: TypeScript - Build system: node-build-system with pnpm workspace vendoring - SPDX expression: MIT - License status: declared-free - License evidence: GitHub repository metadata declares MIT; the upstream license text still needs package-review confirmation. - Difficulty: hard — The pnpm workspace closure and editor/LSP packaging boundary need explicit offline handling. - Workflow state: research - Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found. ## Scope and blockers Install the language-service server and editor integration artifacts. ## Acceptance checks - `guix lint -L. <package-name>` and `guix build -L. <package-name>` pass once a package definition exists. - Start the language server and perform an offline initialize/shutdown exchange. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/65). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:16:55Z.
htayj commented 2026-08-25 18:35:06 +00:00 (Migrated from github.com)

Goocastle recorded disposition: blocked.

Canonical origin: https://github.com/Effect-TS/language-service at fixed commit 5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4 (upstream package version 0.87.2; commit dated 2026-08-10). The exact tree has an explicit MIT License at https://raw.githubusercontent.com/Effect-TS/language-service/5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4/LICENSE and no Git submodule gitlinks. The local channel already has only effect-ts-language-service-source in tay/packages/starred-d-h.scm, using copy-build-system for preservation; no equivalent installable package was found locally or in the Guix package search. The source-build assessment is viable: the root packageManager is pnpm@8.11.0, pnpm-lock.yaml is lockfile version 6, and a temporary checkout completed pnpm install --frozen-lockfile --ignore-scripts followed by pnpm --filter @effect/language-service build without network during the build phase once the pnpm store was present. An implementation would use a new module such as (tay packages effect-ts-language-service), node-build-system, node >=18, pnpm 8.11.0 as a native input, and a vendored pnpm store/lockfile closure; the runtime contract is a TypeScript 5-or-6 host supplied by the user/project, because the built CLI dynamically resolves typescript and the plugin is loaded by TypeScript. License evidence for the independently fetched origins retained by the built deliverable is explicit at the fixed lockfile versions: @effect/platform-node@4.0.0-beta.107 MIT/LICENSE; @effect/platform-node-shared@4.0.0-beta.107 MIT/LICENSE; @typescript-eslint/project-service@8.52.0 MIT/LICENSE; @typescript-eslint/tsconfig-utils@8.52.0 MIT/LICENSE; effect@4.0.0-beta.107 MIT/LICENSE; debug@4.4.3 MIT/LICENSE; has-flag@4.0.0 MIT/license; ms@2.1.3 MIT/license.md; supports-color@7.2.0 MIT/license; pako@2.1.0 (MIT AND Zlib)/LICENSE; ts-patch@3.3.0 MIT/LICENSE.md; and external build TypeScript@5.9.3 Apache-2.0/LICENSE.txt. Each is fixed by its exact pnpm-lock.yaml integrity entry; no separately fetched submodule lacks license evidence. The required packaging wrapper would install the generated dist files, schema.json, README.md, and all dependency notices, set generated package.json main from the upstream-wrong index.cjs to the actual index.js, expose effect-language-service -> cli.js, and never enable network or mutate a user project except when the user explicitly invokes the upstream patch/unpatch CLI. Exact blocker: this upstream is a TypeScript language-service plugin, not an LSP server or editor extension. README describes a plugin for VSCode/TypeScript-LSP hosts; src/index.ts exports the TypeScript plugin init function returning create/onConfigurationChanged, src/cli.ts runs ordinary setup/diagnostics/patch commands, and the pinned tree contains no JSON-RPC transport, Content-Length handling, createConnection, standalone server, or initialize/shutdown endpoint. Feeding an offline framed LSP initialize request to dist/cli.js only prints "Please select a command or run --help." and exits. Therefore the requested deliverable and acceptance check to start the language server and exchange initialize/shutdown cannot be met from this origin alone; adding typescript-language-server/vtsls or an editor extension would be a second source origin requiring a fixed revision, license evidence, package scope, and runtime integration review. Unblock only by changing the acceptance and scope to the plugin/CLI and a fixed TypeScript-host smoke (load the plugin, exercise one diagnostic/refactor, and perform initialize/shutdown against the separately packaged host), or by naming and approving a separate fixed, licensed LSP host/editor-extension origin and its offline vendoring plan; then also retain the index.js metadata correction and wrapper behavior above.


Imported from GitHub comment. Originally posted by htayj on 2026-08-25T18:35:06Z.

<!-- goocastle-disposition:sequential-reviewer:65:1:blocked --> Goocastle recorded disposition: blocked. Canonical origin: https://github.com/Effect-TS/language-service at fixed commit 5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4 (upstream package version 0.87.2; commit dated 2026-08-10). The exact tree has an explicit MIT License at https://raw.githubusercontent.com/Effect-TS/language-service/5e4d380b6fcd20f048dd8d41515bcd9ea47ffda4/LICENSE and no Git submodule gitlinks. The local channel already has only effect-ts-language-service-source in tay/packages/starred-d-h.scm, using copy-build-system for preservation; no equivalent installable package was found locally or in the Guix package search. The source-build assessment is viable: the root packageManager is pnpm@8.11.0, pnpm-lock.yaml is lockfile version 6, and a temporary checkout completed pnpm install --frozen-lockfile --ignore-scripts followed by pnpm --filter @effect/language-service build without network during the build phase once the pnpm store was present. An implementation would use a new module such as (tay packages effect-ts-language-service), node-build-system, node >=18, pnpm 8.11.0 as a native input, and a vendored pnpm store/lockfile closure; the runtime contract is a TypeScript 5-or-6 host supplied by the user/project, because the built CLI dynamically resolves typescript and the plugin is loaded by TypeScript. License evidence for the independently fetched origins retained by the built deliverable is explicit at the fixed lockfile versions: @effect/platform-node@4.0.0-beta.107 MIT/LICENSE; @effect/platform-node-shared@4.0.0-beta.107 MIT/LICENSE; @typescript-eslint/project-service@8.52.0 MIT/LICENSE; @typescript-eslint/tsconfig-utils@8.52.0 MIT/LICENSE; effect@4.0.0-beta.107 MIT/LICENSE; debug@4.4.3 MIT/LICENSE; has-flag@4.0.0 MIT/license; ms@2.1.3 MIT/license.md; supports-color@7.2.0 MIT/license; pako@2.1.0 (MIT AND Zlib)/LICENSE; ts-patch@3.3.0 MIT/LICENSE.md; and external build TypeScript@5.9.3 Apache-2.0/LICENSE.txt. Each is fixed by its exact pnpm-lock.yaml integrity entry; no separately fetched submodule lacks license evidence. The required packaging wrapper would install the generated dist files, schema.json, README.md, and all dependency notices, set generated package.json main from the upstream-wrong index.cjs to the actual index.js, expose effect-language-service -> cli.js, and never enable network or mutate a user project except when the user explicitly invokes the upstream patch/unpatch CLI. Exact blocker: this upstream is a TypeScript language-service plugin, not an LSP server or editor extension. README describes a plugin for VSCode/TypeScript-LSP hosts; src/index.ts exports the TypeScript plugin init function returning create/onConfigurationChanged, src/cli.ts runs ordinary setup/diagnostics/patch commands, and the pinned tree contains no JSON-RPC transport, Content-Length handling, createConnection, standalone server, or initialize/shutdown endpoint. Feeding an offline framed LSP initialize request to dist/cli.js only prints "Please select a command or run --help." and exits. Therefore the requested deliverable and acceptance check to start the language server and exchange initialize/shutdown cannot be met from this origin alone; adding typescript-language-server/vtsls or an editor extension would be a second source origin requiring a fixed revision, license evidence, package scope, and runtime integration review. Unblock only by changing the acceptance and scope to the plugin/CLI and a fixed TypeScript-host smoke (load the plugin, exercise one diagnostic/refactor, and perform initialize/shutdown against the separately packaged host), or by naming and approving a separate fixed, licensed LSP host/editor-extension origin and its offline vendoring plan; then also retain the index.js metadata correction and wrapper behavior above. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/65#issuecomment-5414979343). Originally posted by [htayj](https://github.com/htayj) on 2026-08-25T18:35:06Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#65
No description provided.