mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-11-13 12:13:46 +01:00
72 lines
1.7 KiB
Nix
72 lines
1.7 KiB
Nix
{
|
|
lib,
|
|
krita,
|
|
mkNixPak,
|
|
buildEnv,
|
|
makeDesktopItem,
|
|
runCommandLocal,
|
|
...
|
|
}:
|
|
let
|
|
appId = "org.kde.krita";
|
|
wrapped = mkNixPak {
|
|
config = {
|
|
imports = [ ./modules/file-viewer-policy.nix ];
|
|
app = {
|
|
package = krita;
|
|
binPath = "bin/krita";
|
|
};
|
|
flatpak = { inherit appId; };
|
|
# Qt defaults to xcb when DISPLAY is present in the parent environment;
|
|
# niri has no X server, so select Wayland explicitly.
|
|
bubblewrap.env.QT_QPA_PLATFORM = "wayland";
|
|
# Krita saves edits in place, so the common user directories are writable.
|
|
fileViewer.writableUserDirs = true;
|
|
# Printing and sleep inhibition are explicit Krita capabilities.
|
|
portalGroups = {
|
|
print = true;
|
|
inhibit = true;
|
|
};
|
|
};
|
|
};
|
|
exe = lib.getExe wrapped.config.script;
|
|
assets = runCommandLocal "krita-desktop-assets" { } ''
|
|
mkdir -p $out/share
|
|
ln -s ${krita}/share/icons $out/share/icons
|
|
'';
|
|
in
|
|
buildEnv {
|
|
inherit (wrapped.config.script) name passthru;
|
|
meta = wrapped.config.script.meta // {
|
|
mainProgram = "krita";
|
|
};
|
|
paths = [
|
|
wrapped.config.script
|
|
assets
|
|
(makeDesktopItem {
|
|
name = "org.kde.krita";
|
|
desktopName = "Krita";
|
|
genericName = "Digital Painting";
|
|
comment = "Digital painting and illustration";
|
|
exec = "${exe} %F";
|
|
icon = "krita";
|
|
terminal = false;
|
|
startupNotify = true;
|
|
startupWMClass = "krita";
|
|
categories = [
|
|
"Qt"
|
|
"KDE"
|
|
"Graphics"
|
|
"2DGraphics"
|
|
"RasterGraphics"
|
|
];
|
|
mimeTypes = [
|
|
"application/x-krita"
|
|
"image/openraster"
|
|
"application/x-krita-paintoppreset"
|
|
];
|
|
extraConfig.X-Flatpak = appId;
|
|
})
|
|
];
|
|
}
|