{ symlinkJoin, makeWrapper, discord, obsidian, vscode, element-desktop }: let goodFlags = '' --ozone-platform=wayland \ --force-device-scale=2 \ --enable-features=UseOzonePlatform,WaylandWindowDecorations \ --disable-features=WaylandFractionalScaleV1 ''; badFlags = '' --ozone-platform=x11 \ --no-sandbox ''; makeElectronWrapper = { name, binary ? name, package, bad ? false }: let flags = if bad then badFlags else goodFlags; in symlinkJoin { name = name; paths = [ package ]; buildInputs = [ makeWrapper ]; postBuild = '' wrapProgram $out/bin/${binary} \ --add-flags "${flags}" ''; }; in { discord = makeElectronWrapper { name = "Discord"; package = discord; bad = true; }; obsidian = makeElectronWrapper { name = "obsidian"; package = obsidian; }; vscode = makeElectronWrapper { name = "vscode"; binary = "code"; package = vscode.fhs; }; element-desktop = makeElectronWrapper { name = "element-desktop"; package = element-desktop; }; }