新闻详情

新闻详情

首页 / 资讯中心 / 详情

devenv 中启用 Gleam 语言环境:languages.gleam 模块配置与实现解析

发布时间:2026/9/28 6:25:57来源:尧图网络
devenv 中启用 Gleam 语言环境:languages.gleam 模块配置与实现解析
开发工具CLI【免费下载链接】devenvFast, Declarative, Reproducible, and Composable Developer Environments using Nix项目地址https://gitcode.com/gh_mirrors/de/devenv点击查看免费下载导读Gleam 是一门运行在 Erlang 虚拟机BEAM之上的强类型函数式语言。在 devenv 项目中通过languages.gleam模块你可以在 Nix 声明式环境中一键获得完整、可复现的 Gleam 开发工具链。本文基于 Gleam 语言文档 与 模块实现系统讲解该模块的两个核心配置项languages.gleam.enable与languages.gleam.package的用法、默认值与底层行为并给出可直接复制运行的完整示例。模块概览一个选项组两个配置项devenv 将每种语言的支持封装为languages.name.*形式的选项。Gleam 模块位于 src/modules/languages/gleam.nix对外暴露两个选项选项类型默认值作用languages.gleam.enablebooleanfalse是否启用 Gleam 开发工具languages.gleam.packagepackagepkgs.gleam指定要使用的 Gleam 包可覆盖为指定版本这两个选项是本文的核心下面逐一展开。开启 Gleam 支持languages.gleam.enablelanguages.gleam.enable是一个布尔开关用于控制是否将 Gleam 开发工具纳入当前 devenv 环境。类型boolean默认值false示例值true从源码实现看src/modules/languages/gleam.nix#L18-L24当enable true时模块会执行两件事config lib.mkIf cfg.enable { languages.erlang.enable true; packages [ cfg.package ]; };自动启用 Erlang 支持languages.erlang.enable trueGleam 编译产物运行在 BEAM 虚拟机上需要 Erlang/OTP 运行时才能执行因此模块会隐式拉起 Erlang 环境保证gleam run产出的字节码可以直接运行。把cfg.package加入packages即把选定的 Gleam 包安装进 shell使gleam、gleam build、gleam test、gleam format等命令直接可用。如果你在 devenv 之外还单独配置了languages.erlang.enable两者并不冲突模块层面的叠加是幂等的。选择 Gleam 版本languages.gleam.packagelanguages.gleam.package用于指定环境内安装的 Gleam 包来源。类型package默认值**pkgs.gleam即当前 nixpkgs 快照中的 Gleam 版本源码中的定义src/modules/languages/gleam.nix#L10-L15package lib.mkOption { type lib.types.package; default pkgs.gleam; description The Gleam package to use.; defaultText lib.literalExpression pkgs.gleam; };为什么需要覆盖 package三个常见场景锁定版本默认跟随 nixpkgs想固定到特定 Gleam 版本例如项目要求 1.x 的某个小版本时可以从 nixpkgs 或其他源取指定版本使用自定义构建例如带特殊编译选项或补丁的本地 Gleam 构建产物统一工具链版本让 CI 与本地 shell 使用完全一致的 Gleam 版本保证可复现性。覆盖示例将 Gleam 替换为自定义包{ pkgs, ... }: { languages.gleam.enable true; languages.gleam.package pkgs.gleam.overrideAttrs (old: { # 例如打上本地补丁或调整构建参数 patches (old.patches or []) [ ./gleam-custom.patch ]; }); }需要注意的是覆盖package不会关闭 Erlang 依赖的自动启用——只要enable trueErlang 运行时依然会被带上。完整可运行示例仓库的 examples/gleam 目录提供了一个最小可运行示例直接说明了实际用法。devenv.nix{ pkgs, ... }: { # https://devenv.sh/languages/ languages.gleam.enable true; enterShell gleam --version ; # See full reference at https://devenv.sh/reference/options/ }配套的 devenv.yaml 声明了输入源inputs: nixpkgs: url: github:NixOS/nixpkgs/nixpkgs-unstable使用方法在包含上述两个文件的目录下devenv shell # 进入带 gleam 的开发者 shell gleam --version # 验证 Gleam 已就绪 gleam new my_app # 初始化新项目 cd my_app gleam runenterShell会在每次进入环境时打印gleam --version用于即时确认工具链生效。由于 Erlang 被自动启用gleam run启动 BEAM 进程时不会再提示缺少运行时。底层实现要点为什么开启 Gleam 必须同时开启 Erlang结合 devenv-core 的模块求值流程languages.*各模块的config最终会被合并进顶层选项再求值。Gleam 模块的关键设计在于lib.mkIf cfg.enable条件块内部直接声明languages.erlang.enable true这是一种语言依赖语言的模块间联动——从源码结构看它保证了 BEAM 运行时与 Gleam 编译器永远同时出现省去了用户手动配置 Erlang 的步骤也避免了两者版本不匹配导致的运行时错误。对比同目录下的 Erlang 模块src/modules/languages/erlang.nix可以看到 Erlang 模块会额外处理rebar3的编译版本对齐问题而 Gleam 模块保持极简仅声明包本身其余依赖交由 Erlang 模块负责。小结你想做的事配置写法启用 Gleam 工具链languages.gleam.enable true;使用指定版本的 Gleamlanguages.gleam.package 某个 package 表达式;同时获得可运行的 BEAM 环境无需额外配置enable true自动完成只需记住一个开关和一个包选项你就能在 devenv 中得到完整、可复现、跨机器一致的 Gleam 开发环境。更多语言模块的同类用法可参考 supported-languages 示例 与 语言配置总览如存在若需查看该模块的全部选项定义可阅读 模块源码。赞分享开发工具CLI【免费下载链接】devenvFast, Declarative, Reproducible, and Composable Developer Environments using Nix项目地址https://gitcode.com/gh_mirrors/de/devenv点击查看免费下载相关推荐5步构建医疗信息化系统OpenEMR开源电子病历实战指南5步构建医疗信息化系统OpenEMR开源电子病历实战指南 OpenEMR作为全球最受欢迎的开源电子健康记录系统为医疗机构提供了完整的企业级医疗信息管理解决方开发工具CLIdevenv 中配置 Lean 4 开发环境languages.lean4 模块详解devenv 中配置 Lean 4 开发环境languages.lean4 模块详解 本指南介绍如何在 Nix 驱动的开发者环境 devenv 中启用 Lea开发工具CLIgrpc-gateway 怎么给 runtime.ServeMux 添加自定义 HTTP 路由grpc gateway 怎么给 runtime.ServeMux 添加自定义 HTTP 路由 当你基于 grpc gateway 搭建网关后某些 HTTP开发工具CLI上一篇【亲测免费】 ZynAddSubFX 开源合成器项目推荐下一篇CppNumericalSolvers轻量级C非线性优化库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

太原自动seo实战案例拆解:3个坑点教你省50%预算 2026/9/28 7:18:28

太原自动seo实战案例拆解:3个坑点教你省50%预算

太原自动seo实战案例拆解:3个坑点教你省50%预算 域名服务器搞不懂,是90%太原企业在做自动SEO前最大的拦路虎。我见过太多老板,网站建好了,域名解析配错了,SSL证书没申请,服务器防火墙没开端口,导致搜索引擎爬虫根本抓不到数据,所谓的…

阅读更多 →
RISC0实战:零知识证明zkVM从开发到链上验证手册 2026/9/28 7:18:22

RISC0实战:零知识证明zkVM从开发到链上验证手册

这篇东西本该早点写。上个月我们在生产环境里第一次完整跑通了一套基于RISC0的零知识证明方案,从技术选型、编写guest程序、本地生成证明,到最终把proof送进链上合约完成验证,踩了不知道多少坑。RISC0作为通用zkVM(零知识虚拟机&a…

阅读更多 →
AI工程从零开始:手把手教你跑通端到端项目全流程 2026/9/28 7:18:22

AI工程从零开始:手把手教你跑通端到端项目全流程

入行AI这几年,我最大的感受就是:AI工程这四个字,被各种课程和大会讲得越来越玄。我见过不少同学,简历上写着“熟悉TensorFlow/PyTorch”,实际连一个端到端的AI项目都没跑通过;也见过项目团队,模…

阅读更多 →
滑动窗口与滚动窗口:从算法到流式计算、滤波与Verilog的完整指南 2026/9/28 7:18:22

滑动窗口与滚动窗口:从算法到流式计算、滤波与Verilog的完整指南

先别急着比较"滑动窗口"和"滚动窗口"哪个更好。我见过太多人在这一步就掉坑里了:有人在算法面试里刷过"滑动窗口最大值",转头去设计实时数据处理任务时,看到流式计算框架里的"滑动窗口"和"滚动…

阅读更多 →
YOLO吸烟检测实战:从smoking-dataset-yolo-1.zip到部署避坑 2026/9/28 7:18:22

YOLO吸烟检测实战:从smoking-dataset-yolo-1.zip到部署避坑

简介:这份YOLO是否吸烟检测数据集面向计算机视觉学习者与目标检测开发者,用于训练和验证吸烟行为识别模型,可应用于公共场所禁烟监控、工地安全巡检等场景。数据集已按train、val、test完成划分,并附带data.yaml配置文件&#xff…

阅读更多 →
还是畅通工程:最小生成树与Kruskal算法详解 2026/9/28 7:18:15

还是畅通工程:最小生成树与Kruskal算法详解

第一次看到“ZJUKY132 还是畅通工程”这个题号时,我先愣了两秒:前面一长串编号,后面跟着“还是畅通工程”。这个“还是”字很有意思,它明明白白告诉我,这是系列题里的又一关,不是第一次碰“畅通工程”了。如…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉