mirror of
https://github.com/js0ny/dotfiles.git
synced 2026-03-23 19:22:43 +00:00
flatpak: patch electrons under wayland
This commit is contained in:
parent
1e55d81961
commit
735935627d
9 changed files with 103 additions and 30 deletions
|
|
@ -1,5 +1,30 @@
|
|||
# https://github.com/gmodena/nix-flatpak
|
||||
{...}: {
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
electronApps = [
|
||||
"com.getpostman.Postman"
|
||||
# "com.ticktick.TickTick"
|
||||
];
|
||||
|
||||
waylandFlags = "\${NIXOS_OZONE_WL:+\${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}";
|
||||
|
||||
appWrappers = lib.listToAttrs (map (appid: {
|
||||
name = "flatpak/exports/bin/${appid}";
|
||||
value = {
|
||||
text = ''
|
||||
#!/bin/sh
|
||||
exec flatpak run ${appid} ${waylandFlags} "$@"
|
||||
'';
|
||||
executable = true;
|
||||
force = true;
|
||||
};
|
||||
})
|
||||
electronApps);
|
||||
in {
|
||||
services.flatpak.enable = true;
|
||||
services.flatpak.remotes = [
|
||||
{
|
||||
|
|
@ -23,7 +48,7 @@
|
|||
# "com.vivaldi.Vivaldi"
|
||||
"com.getpostman.Postman"
|
||||
"us.zoom.Zoom"
|
||||
"com.ticktick.TickTick"
|
||||
# "com.ticktick.TickTick" # cannot run on wayland under flatpak
|
||||
];
|
||||
services.flatpak.overrides = {
|
||||
global = {
|
||||
|
|
@ -50,8 +75,18 @@
|
|||
"md.obsidian.Obsidian".Context.sockets = ["wayland"];
|
||||
"com.ticktick.Ticktick".Context.sockets = ["wayland"];
|
||||
"com.getpostman.Postman".Context = {
|
||||
persistent = ["Postman"];
|
||||
persistent = ["Postman"]; # Don't create `~/Postman` folder under home
|
||||
sockets = ["wayland"];
|
||||
};
|
||||
};
|
||||
xdg.dataFile = appWrappers;
|
||||
home.activation.patchFlatpakDesktopFiles = lib.hm.dag.entryAfter ["writeBoundary"] ''
|
||||
${lib.concatMapStringsSep "\n" (appid: ''
|
||||
DESKTOP_FILE="${config.xdg.dataHome}/flatpak/exports/share/applications/${appid}.desktop"
|
||||
if [ -f "$DESKTOP_FILE" ]; then
|
||||
$DRY_RUN_CMD ${pkgs.gnused}/bin/sed -i "s|^\(Exec=.*${appid}\)|\\1 ${waylandFlags}|g" "$DESKTOP_FILE"
|
||||
fi
|
||||
'')
|
||||
electronApps}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
# FIXME: This will block the desktop files
|
||||
mkFcitxIM = builtins.map (
|
||||
p:
|
||||
lib.hiPrio (
|
||||
|
|
@ -16,6 +17,30 @@
|
|||
''
|
||||
)
|
||||
);
|
||||
# Wrap Electron apps to use Wayland when NIXOS_OZONE_WL is set
|
||||
# This only works for apps that does not patched by upstream
|
||||
mkElectronWayland = builtins.map (
|
||||
p:
|
||||
lib.hiPrio (
|
||||
pkgs.runCommand "${p.name}-wrapped"
|
||||
{
|
||||
nativeBuildInputs = [pkgs.makeWrapper];
|
||||
meta = p.meta;
|
||||
}
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
# ln -s ${p}/share $out/share
|
||||
makeWrapper ${lib.getExe p} $out/bin/${p.meta.mainProgram or p.pname} \
|
||||
--inherit-argv0 \
|
||||
--run '
|
||||
if [ -n "$NIXOS_OZONE_WL" ] && [ -n "$WAYLAND_DISPLAY" ]; then
|
||||
NIX_WAYLAND_FLAGS="--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true"
|
||||
fi
|
||||
' \
|
||||
--add-flags "\$NIX_WAYLAND_FLAGS"
|
||||
''
|
||||
)
|
||||
);
|
||||
in {
|
||||
home.packages = with pkgs;
|
||||
[
|
||||
|
|
@ -81,12 +106,15 @@ in {
|
|||
cider-2
|
||||
kicad
|
||||
blender
|
||||
qmk
|
||||
logisim-evolution
|
||||
onlyoffice-desktopeditors
|
||||
]
|
||||
++ (mkFcitxIM [
|
||||
pkgs.neovim-qt
|
||||
pkgs.anki
|
||||
])
|
||||
++ (mkElectronWayland [
|
||||
pkgs.ticktick
|
||||
]);
|
||||
|
||||
home.sessionVariables = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue