main
 1{den, ...}: {
 2  den.aspects.desktop.app.nixpak.wechat = let
 3    appId = "com.tencent.WeChat";
 4  in {
 5    includes = [den.aspects.desktop.app.nixpak];
 6
 7    persistHome = {
 8      directories = [
 9        ".var/app/${appId}"
10      ];
11    };
12
13    hjem = {
14      pkgs,
15      lib,
16      ...
17    }: let
18      wechat-wrapped = pkgs.mkNixpak {
19        config = {sloth, ...}: {
20          imports = [
21            pkgs.nixpakModules.common
22            pkgs.nixpakModules.gui
23            pkgs.nixpakModules.network
24          ];
25
26          app.package = pkgs.wechat;
27          flatpak = {inherit appId;};
28
29          bubblewrap = {
30            sockets = {
31              wayland = true;
32              x11 = false;
33            };
34
35            bind.rw = with sloth; [
36              [(mkdir (concat' appDir "/.xwechat")) (concat' homeDir "/.xwechat")]
37              [(mkdir (concat' appDir "/xwechat_files")) (concat' homeDir "/xwechat_files")]
38            ];
39            bind.ro = [
40              "/etc/passwd"
41              "/etc/machine-id"
42            ];
43
44            env = {
45              # xdg-open has to come from PATH.
46              PATH = lib.makeBinPath [pkgs.flatpak-xdg-utils];
47              QT_QPA_PLATFORM = "xcb";
48              QT_IM_MODULE = "fcitx";
49              GTK_IM_MODULE = "fcitx"; # For web view
50            };
51          };
52        };
53      };
54    in {
55      packages = [wechat-wrapped.config.env];
56    };
57  };
58}