crabdancing/nixpak-flatpak-wrapper · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
用胶水把 flatpak 包起来,作为一场恶作剧骗局的一部分,骗 xdg-desktop-portal 让我们拥有了体面的 NixOS 上的声明式容器化。
我的意思是,上游可不会在短期内停止对这类事情进行无休止的争论](https://github.com/flatpak/xdg-desktop-portal/pull/741)。
此包作为原始 flatpak 包的直接替代品。此 flake 中暴露的模块会自动将此包插入 services.flatpak.package 中,作为上游 pkgs.flatpak 的替代品。未来,它可能会进行某种其他配置工作以改善用户体验。
终有一天会被问到的问题
- 问:它是否通过
nixpak控制 bwrap 授予的权限? - 答:不,它不碰那些东西。
- 问:所以我得在两个地方指定我的权限?
- 答:是的。
- 问:真糟糕。
- 答:确实。
- 问:为了让 flatpak 工作,我也需要启用 nixpkgs 的 flatpak 服务吗?
- 答:是的!
- 问:你们接受 PR 吗?
- 答:当然。 :3
- 问:你为什么给它起这么糟糕/别扭的名字?
- 答:因为我是个程序员。
- 问:你为什么用 Rust 编写这个,而不是用 shell 脚本?
- 答:我喜欢 🦀 uwu
- 问:什么?
- 答:是的。
特性
- 理论上相当健壮(不知道,我还没见过它出故障。)
- 大多数故障模式会直接透明地调用 flatpak,以避免弄坏 flatpak
- 封装了
pkgs.flatpak文件集的全部内容,通过替换二进制文件来透明地更新它,并将旧的二进制文件重命名为flatpak-raw - 易于使用的模块,用于即插即用的可靠配置与设置
- 将其经历记录在一本奇妙的冒险日记中,以便你在出现问题时了解原因。
- 通过 TOML 配置文件进行集中管理,希望这种声明式管理方式相对容易。
- 一个模式感知的 Nix 配置模块,因此当我对 TOML 配置进行更改时,我会忘记更新它。 :sob:
- 可以说过度设计了,具有诸如波浪号展开等可疑的功能。
用法
你可以像这样将其添加到你的系统 flake inputs 中:
nixpak-flatpak-wrapper = {
url = "github:crabdancing/nixpak-flatpak-wrapper";
# If you don't follow your own nixpkgs,
# you might be accidentally substituting `flatpak` with an older/newer version than in nixpkgs!
inputs.nixpkgs.follows = "nixpkgs";
};
一旦您将 nixosModules.default 添加到系统模块中,配置可以按如下方式进行:
services.flatpak.enable = true;
programs.nixpak-flatpak-wrapper = {
enable = true;
settings = {
enable_logging = true,
perms = [
{
app_id = "org.chromium.Chromium";
bind.rw = [
"~/Downloads"
];
}
{
app_id = "org.mozilla.firefox";
bind.rw = [
"~/Downloads"
];
}
];
};
};
内部机制
配置存储在 /etc/nixpak-flatpak-wrapper.toml
模式如下:
[[perms]]
app_id = "org.chromium.Chromium"
bind.rw = [
"~/Downloads"
]
bind.ro = []
[[perms]]
app_id = "org.mozilla.firefox"
bind.rw = [
"~/Downloads"
]
bind.ro = []
它记录了 ~/.local/share/nixpak-flatpak-wrapper/nixpak-flatpak-wrapper.log 中发生的情况,以便于调试。这是因为即插即用的包装器/替代品不应打印原始应用程序不会打印的警告/错误消息,以免破坏某些人的解析。