首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

任何 Nix 软件包,都存在于浏览器中

2026-09-07 1 阅读 约7分钟阅读 domenkozar
分享:
字号:
tl;dr 尝试一下 https://trynix.dev 。单击 hello,或 2017 年以来的 python 3.6.2,或同时单击两个时代的 hello,或不存在于公共缓存中的包。 Linux 机器在选项卡中启动,您将获得一个 shell,其中包含 PATH 上的那些 Nix 软件包。这是我尼克斯工作的代表作。我知道我一直在创建的所有想法都是为了构建更大的博客:nixpkgs-multiverse 索引了 nixpkgs 曾经发布的每个软件包的每个版本,grail 教它版本范围,而omniflake允许从单个输入添加超过一万六千个薄片。我最近的疯狂见解是 nixmultiverse.com 的“快速模式”的疯狂,它可以让你跳过评估并直接进入商店路径。这使您可以利用 Nix 的神奇之处,而无需处理评估和构建的复杂性。您只需索要一个包并获取 Hydra 为其构建的确切存储路径(无论其曾经有过什么版本)。如果我们有生成的二进制文件,我们就可以运行它们。如果我们可以运行它们,我们就可以在浏览器选项卡中运行它们中的任何一个,而无需在主机上安装任何内容。欢迎使用 trynix,这是一个基于浏览器的 Nix 包运行器。您可以浏览 nixpkgs 的完整历史记录,超过 310,083 个软件包版本,并运行其中的任何一个 1 1 它是一个串行控制台,所以没有任何图形。机器启动到 shell,您可以运行商店中的任何命令行程序。在您的选项卡中启动的 Linux 机器中。它是内存中的 Nix 存储、WebAssembly 中的 Linux 内核以及页面中的终端模拟器。截屏视频:在 nixpkgs 中搜索 pfetch,选择一个版本,然后将其引导到浏览器中的 shell 这太疯狂了! 🤯 我们可以在几秒钟内启动带有存储路径关闭的虚拟机。没有预先安装任何内容:搜索、选择版本、启动、运行它。最疯狂的部分?我们不限于公共缓存。您可以共享自己构建的商店路径,任何人都可以在其浏览器选项卡中启动它。唯一的要求是缓存由 access-control-allow-origin: * 提供服务,这是 GitHub Pages 免费提供的 2 2 我有点惊讶地发现 GitHub Pages 可以用作二进制缓存。它只是一个静态文件服务器,它为每个文件提供 access-control-allow-origin: * 服务。这就是使 Nix 存储路径可用于 trynix 所需的全部操作。 ,Cachix 也是如此,显然还有cache.nixos.org。令人难以置信的是,我实际上在 5 年前就通过 Issue#156 请求 cache.nixos.org 提供 access-control-allow-origin: * 服务,以便可以从我实现的 OpenAPI 规范查询缓存。谢谢宇宙。 🙏 此链接使用从修改后的 GNU hello 的 Github Pages 提供的存储路径启动虚拟机。这是cache.nixos.org 上不存在的存储路径,但它会在您的浏览器选项卡中启动。由于我们可以从服务 access-control-allow-origin: * 的缓存中访问存储路径,这使得浏览器成为合法的 Nix 客户端。浏览器缺少的部分是运行二进制文件的地方,因为它们的存储路径是 x86-64 或 aarch64 ELF 可执行文件。站在巨人的肩膀上,我们可以在 WebAssembly 中运行 Linux 内核。这意味着我们可以在浏览器选项卡中启动真正的 x86_64 内核。为该内核提供一个包含 Nix 存储的文件系统。剩下的就是知道要获取哪些存储路径,我们用 nixpkgs-multiverse 完美地解决了这个问题。 🤌 trynix cluster_browser 你的浏览器标签页页面 mv nixpkgs-multiverse attr + version → 存储路径 page->mv 哪个路径? cache cache.nixos.org narinfo + NARs page->cache Closure store nix store in memory vm qemu-wasm x86_64 Linux store->vm 9p term your shell vm->term cache->store unpacked 我必须不断提醒自己:上图中没有服务器,网页纯粹是静态文件,其他一切都是可公开访问的缓存。它是一个仅存在于您的选项卡中的虚拟机。抹掉你的宝贝的终极体现。由于这是 Nix,我们可以轻松管理同一包的多个版本。您可以在一台机器上启动两个版本的 hello,它们不会发生冲突,因为每个二进制文件都通过绝对路径 ( RUNPATH ) 来命名自己的依赖项,直至加载程序和 libc。 VM 启动后,您可以在其运行时向其添加更多存储路径。这与在笔记本电脑上添加更多到您自己的 /nix/store 的路径没有什么不同。无需重新启动,或 dnf install 或 apt-get install ,该站点即可获取关闭并将其添加到商店。 § 它必须感觉即时 在模拟下启动内核是很慢的,尽管这个想法很神奇,但如果需要 30 秒才能获得 shell,没有人会使用它。该网站采用了一些巧妙的技巧,使其感觉即时。该站点在后台预取引擎和虚拟机快照,因此当您单击链接时,您已经下载了它。该站点也从不从头开始启动虚拟机。它继续。机器在本地提前启动一次
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱