用 Nix flake 打包 storytold 的 Craft 系列桌面应用。除 ArtCraft(Tauri + npm)外均为纯 Rust。
| 包名 | 说明 |
|---|---|
photocraft |
图层图像编辑 |
pdfcraft |
PDF 编辑 |
filmcraft |
视频编辑 |
lightcraft |
相册与非破坏性 RAW 冲印 |
wordcraft |
文字处理 |
vectorcraft |
矢量图形 |
effectcraft |
动态图形 / 特效 |
gridcraft |
电子表格 |
cadcraft |
CAD 建模 |
designcraft |
平面设计 |
deckcraft |
演示文稿 |
soundcraft |
音频编辑 |
figcraft |
界面设计 |
artcraft |
AI 图像与视频创作 IDE(Tauri + npm 前端,只有 GUI) |
除 artcraft 外,每个包通常提供 GUI 程序 <名字> 和命令行 / MCP 程序 <名字>-cli。default / all 是全部包的合集。
未打包:artcraftx、craft-launcher。Web(wasm)版本亦不包含。
支持平台:x86_64-linux、aarch64-linux(CI 目前只构建前者)。
nix run github:Biaogo/nixcraft#photocraft
nix build github:Biaogo/nixcraft#gridcraft
nix build github:Biaogo/nixcraft # 全部# flake.nix
inputs.nixcraft = {
url = "github:Biaogo/nixcraft";
# Optional: follow your own nixpkgs (needs rustc ≥ 1.95; unstable recommended)
# inputs.nixpkgs.follows = "nixpkgs";
};
# In a NixOS module (or home-manager / nix-darwin equivalent):
{
nixpkgs.overlays = [ inputs.nixcraft.overlays.default ];
environment.systemPackages = with pkgs; [
photocraft
lightcraft
# or: nixcraft-all
];
}也可以直接使用 inputs.nixcraft.packages.${system}.photocraft,不必挂 overlay。
CI 会把成功构建的最终输出推到公开缓存 biaogo(不推构建时依赖)。在 Nix / NixOS 配置中加入:
nix.settings = {
substituters = [ "https://biaogo.cachix.org" ];
trusted-public-keys = [
"biaogo.cachix.org-1:pEsKASFTETzWAVGGsjpHnq869V5KNeDOBhQahLlrPzY="
];
};公钥来自 Cachix API。若 fork 本仓库并推送缓存,请在 GitHub Actions 中配置 CACHIX_AUTH_TOKEN;已在运行的 workflow 看不到中途新加的 Secret,需重新触发一次。
.github/workflows/build.yml:
- 触发:每天 00:00(Asia/Shanghai)、
workflow_dispatch、push 到main(忽略只改flake.lock的提交) force:即使已是最新 GitHub Release,也会构建并cachix push/pin;不会改各包源的 lock 条目bump_nixpkgs:定时任务总会执行nix flake update nixpkgs;手动运行仅在勾选时执行。bump 会像 force 一样重建并推送全部包,并把新的 nixpkgs 锁经commit-lock写回(提交信息含[skip ci])。与force相互独立,可同时勾选- 包源:查询
storytold/<包>最新 Release;与锁相同且未 force/bump 则跳过;有新版本则锁到该 tag,再构建、push、pin - Cachix:构建实际发生时若缺少
CACHIX_AUTH_TOKEN,推送步骤会失败。请取消后重新workflow_dispatch(可开 force / bump_nixpkgs) - 回写:
commit-lock合并有变更的包源节点以及(若有)nixpkgs 节点,由 github-actions[bot] 推送
- 默认
doCheck = false(上游测试较慢,部分需要 GPU 或语料) - 跟随 nixos-unstable(需要较新的 rustc);嵌入
craft-fonts以支持 CJK 字形 - 程序通过 wrapper 设置
LD_LIBRARY_PATH(Wayland / X11 / Vulkan / dbus / alsa);NixOS 请开启hardware.graphics.enable pdfcraft对rten-gemm0.26 有一处针对 rustc 1.98 / LLVM 21 的临时补丁;上游升级该依赖后可能需调整
nix fmt # nixfmt-tree
nix flake update photocraft-src