使用 Nix 将 Gleam 项目打包成 AppImage

发布: (2025年12月30日 GMT+8 01:01)
2 min read
原文: Dev.to

Source: Dev.to

nix bundle

Nix 有一个方便的(虽然不太稳定的)命令叫 nix bundle

文档: nix3‑bundle manual

该命令将 Nix 依赖打包成单个二进制文件,使你能够生成独立的可执行文件。

Example

nix bundle nixpkgs#python314

bundler

通过指定 --bundler 选项,你可以更改打包算法。

例如,使用 github:ralismark/nix-appimage 可以生成一个作为 AppImage 的单二进制文件。

仓库: nix‑appimage

To bundle the aforementioned Python 3.14 as an AppImage

nix bundle --bundler github:ralismark/nix-appimage nixpkgs#python314

AppImage 通过即时自解压仅需要的文件来工作,与传统打包方式相比,提供更快的启动速度。因此,通常推荐使用 AppImage 进行打包。

Bundling Gleam

以前,使用 Gleam 生成单个二进制文件需要像 garnet 这样的工具,这些工具依赖 Deno 和 Bun,并且仅限于 JavaScript 目标。

这里介绍的方法 依赖 Gleam 使用的运行时特性,从而也可以将 Erlang 目标转换为单个二进制文件。

这里提供了一个试用版本;运行 nix build 应该会生成单个二进制文件:

sandbox‑gleam appimage_build

该项目使用 gleam2nix 来通过 Nix 构建 Gleam 代码:

gleam2nix

Summary

  • 使用 nix bundle 可以将任何包转换为单个二进制文件。
  • 你可以通过 --bundler 选项切换打包方式。
  • 使用 AppImage 可提供单个二进制文件并拥有快速启动时间。
  • 这同样使针对 Erlang 的 Gleam 项目能够生成单个二进制文件。
  • 这很方便,但二进制文件大小可能会变得相当大(例如,几百 MB)。
Back to Blog

相关文章

阅读更多 »

为什么 Bash 语法如此晦涩

Bash的历史根源 Bash在Linux的表面之下深深扎根。只需一两行代码,它就能完全控制你的机器。它常常被视为b...

[Boost]

5秒启动:为 1 GB RAM 机器构建极简主义 “Browser OS” techno kraft ・ 1 月 1 日 讨论 性能 挑战 archlinux...