{ pkgs, lib, config, ... }: { options = { apps.flatpak.enable = lib.mkEnableOption "Enables flatpak support with GUI."; }; config = lib.mkIf config.apps.flatpak.enable { # Needed for Flatpaks xdg.portal.enable = true; services.flatpak.enable = true; fonts.fontDir.enable = true; # Allow access to system fonts. system.fsPackages = [pkgs.bindfs]; fileSystems = let mkRoSymBind = path: { device = path; fsType = "fuse.bindfs"; options = ["ro" "resolve-symlinks" "x-gvfs-hide"]; }; aggregatedFonts = pkgs.buildEnv { name = "system-fonts"; paths = config.fonts.packages; 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"); }; environment.systemPackages = with pkgs; [gnome.gnome-software]; }; }