|
|
| Line 296: |
Line 296: |
|
| |
|
| <translate> | | <translate> |
| === Flatpak, Distrobox, Appimage and other non-Nix applications can't find system fonts/icons/themes === | | === Flatpak applications can't find system fonts === |
| Flatpak, Distrobox, Appimage and alot of other non-Nix applications sometimes have hardcoded FHS path assumptions for locating fonts, icons and themes. These applications usually expect fonts, icons and themes to be available under <code>/usr/share/fonts</code>, <code>/usr/share/icons</code> and <code>/usr/share/themes</code>, respectively. | | See: [[Fixes for non-Nix applications#Flatpak, Distrobox, Appimage and other non-Nix applications can't find system fonts/icons/themes]] |
| | |
| For these applications, instead of using a complicated <code>fhsEnv</code> solution, users can choose to simply bindmount the directories from <code>/run/current-system/sw/share</code> to their respective locations inside <code>/usr/share</code>.
| |
| | |
| Note that the following fix uses <code>bindfs</code> instead of normal bindmounting or symlinking. This is because of edgecases like [https://github.com/ONLYOFFICE/DocumentServer/issues/1859 OnlyOffice] that will not follow symlinks while evaluating resources under <code>/usr/share</code>. Thus, the <code>[https://bindfs.org/docs/bindfs.1.html#sect10 resolve-symlink]</code> functionality of <code>bindfs</code> becomes crucial for covering even the most niche corner cases.<syntaxhighlight lang="nixos" line="1">
| |
| # misc-usr-fix.nix
| |
| { pkgs, ... }:
| |
| | |
| let
| |
| # Mount options for the bind mounts
| |
| mountOptions = [
| |
| "ro"
| |
| "x-gvfs-hide"
| |
| # Resolves symlinks as if they were real files
| |
| # Needed for things like OnlyOffice
| |
| "resolve-symlinks"
| |
| ];
| |
| in
| |
| {
| |
| # Bind mounts fonts, icons and themes from
| |
| # The /run/current-system/sw/share/* paths
| |
| # to their /usr/share/* equivalents
| |
| | |
| # Expose all fonts
| |
| # under /run/current-system/sw/share/X11/fonts
| |
| fonts.fontDir.enable = true;
| |
| | |
| # Flatpak: Bind mounts /usr/share/* directories
| |
| system.fsPackages = [ pkgs.bindfs ];
| |
|
| |
| # Fonts
| |
| fileSystems."/usr/share/fonts" = {
| |
| device = "/run/current-system/sw/share/X11/fonts";
| |
| fsType = "fuse.bindfs";
| |
| options = mountOptions;
| |
| };
| |
| | |
| # Icons
| |
| fileSystems."/usr/share/icons" = {
| |
| device = "/run/current-system/sw/share/icons";
| |
| fsType = "fuse.bindfs";
| |
| options = mountOptions;
| |
| };
| |
| | |
| # Themes
| |
| fileSystems."/usr/share/themes" = {
| |
| device = "/run/current-system/sw/share/themes";
| |
| fsType = "fuse.bindfs";
| |
| options = mountOptions;
| |
| };
| |
| }
| |
| | |
| </syntaxhighlight>
| |
|
| |
|
| ==== Alternative fixes for Flatpak apps ==== | | ==== Alternative fixes for Flatpak apps ==== |