This commit is contained in:
2025-04-21 22:40:15 +08:00
parent 6dab165365
commit 1a9d18db01

View File

@@ -1,33 +1,27 @@
{
config,
pkgs,
...
}: {
###################################################################################
#
# Copy from https://github.com/NixOS/nixpkgs/issues/119433#issuecomment-1326957279
# Mainly for flatpak
# 1. bindfs resolves all symlink,
# 2. allowing all fonts to be accessed at `/usr/share/fonts`
# 3. without letting /nix into the sandbox.
#
###################################################################################
{ config, lib, pkgs, ... }:
system.fsPackages = [pkgs.bindfs];
{
system.fsPackages = [ pkgs.bindfs ];
fileSystems = let
mkRoSymBind = path: {
device = path;
fsType = "fuse.bindfs";
options = ["ro" "resolve-symlinks" "x-gvfs-hide"];
options = [ "ro" "resolve-symlinks" "x-gvfs-hide" ];
};
aggregatedFonts = pkgs.buildEnv {
# 修改聚合字体的方式
aggregatedFonts = pkgs.symlinkJoin {
name = "system-fonts";
paths = config.fonts.fonts;
pathsToLink = ["/share/fonts"];
};
in {
# Create an FHS mount to support flatpak host icons/fonts
"/usr/share/icons" = mkRoSymBind (config.system.path + "/share/icons");
"/usr/share/fonts" = mkRoSymBind (aggregatedFonts + "/share/fonts");
# 修改挂载点的路径和配置
"/usr/share/icons" = mkRoSymBind "${config.system.path}/share/icons";
"/usr/share/fonts" = mkRoSymBind "${aggregatedFonts}/share/fonts";
};
# 确保目录存在
system.activationScripts.makeFontsDirectory = ''
mkdir -p /usr/share/fonts
mkdir -p /usr/share/icons
'';
}