Files
nix-files/hosts/common/programs/foliate.nix

49 lines
2.2 KiB
Nix

# foliate: <https://johnfactotum.github.io/foliate/>
{ ... }:
{
sane.programs.foliate = {
sandbox.net = "clearnet"; #< for dictionary, wikipedia, online book libraries
sandbox.whitelistDbus.user.own = [ "com.github.johnfactotum.Foliate" ];
sandbox.whitelistDri = true; # reduces startup time and subjective page flip time
sandbox.whitelistPortal = [
"FileChooser"
"OpenURI"
];
sandbox.whitelistWayland = true;
sandbox.extraHomePaths = [
"Books/Books"
"Books/local"
"Books/servo"
"tmp" #< for downloaded files
];
sandbox.extraPaths = [
# foliate sandboxes itself with bwrap, which needs these.
# but it actually only cares that /sys/{block,bus,class/block} *exist*: it doesn't care if there's anything in them.
# so bind empty (sub)directories
# and it looks like i might need to keep IPC namespace if i want TTS.
"/sys/block/loop7"
"/sys/bus/container/devices"
"/sys/class/block/loop7"
];
sandbox.autodetectCliPaths = "existing";
sandbox.mesaCacheDir = ".cache/com.github.johnfactotum.Foliate/mesa";
persist.byStore.plaintext = [
".local/share/com.github.johnfactotum.Foliate" #< books added, reading position
".cache/com.github.johnfactotum.Foliate" #< webkit cache
];
buildCost = 2; #< webkitgtk 6.0
# these associations were taken from its .desktop file
mime.associations."application/epub+zip" = "com.github.johnfactotum.Foliate.desktop";
mime.associations."application/x-mobipocket-ebook" = "com.github.johnfactotum.Foliate.desktop";
mime.associations."application/vnd.amazon.mobi8-ebook" = "com.github.johnfactotum.Foliate.desktop";
mime.associations."application/x-fictionbook+xml" = "com.github.johnfactotum.Foliate.desktop";
mime.associations."application/x-zip-compressed-fb2" = "com.github.johnfactotum.Foliate.desktop";
mime.associations."application/vnd.comicbook+zip" = "com.github.johnfactotum.Foliate.desktop"; # .cbz
mime.associations."x-scheme-handler/opds" = "com.github.johnfactotum.Foliate.desktop";
mime.priority = 120; #< default is 100; fallback to more specialized cbz handlers, e.g., but keep specializations for epub
};
}