Files
nix-config/hardening/nixpaks/blender.nix
T
ryan4yin | 二花 c277c81cd6 feat(nixpak): sandbox six desktop apps (#497)
* feat(nixpak): sandbox six desktop apps

* chore(nixpak): trim OBS plugin set

* fix(nixpak): enable OBS on aarch64

* fix(nixpak): let imv read the full home directory

* fix(home): drop redundant freerdp package

* fix(nixpak): grant OBS access to V4L2 camera devices

* fix(nixpak): expose V4L2 sysfs to OBS

* fix(nixpak): expose NVIDIA encode library to OBS

* docs(nixpak): record OBS interactive validation

* docs(nixpak): record OBS RTMP validation

* fix(nixpak): run MuseScore via XWayland and PulseAudio

* docs(nixpak): explain app sandboxing rationale

* fix(nixpak): route MuseScore ALSA through PipeWire
2026-11-01 01:24:47 -05:00

55 lines
1.2 KiB
Nix

{
lib,
blender,
mkNixPak,
buildEnv,
makeDesktopItem,
runCommandLocal,
...
}:
let
appId = "org.blender.Blender";
wrapped = mkNixPak {
config = {
imports = [ ./modules/blender-policy.nix ];
app = {
package = blender;
binPath = "bin/blender";
};
flatpak = { inherit appId; };
};
};
exe = lib.getExe wrapped.config.script;
assets = runCommandLocal "blender-desktop-assets" { } ''
mkdir -p $out/share
ln -s ${blender}/share/icons $out/share/icons
'';
in
buildEnv {
inherit (wrapped.config.script) name passthru;
meta = wrapped.config.script.meta // {
mainProgram = "blender";
};
paths = [
wrapped.config.script
assets
(makeDesktopItem {
name = "blender";
desktopName = "Blender";
genericName = "3D Creation Suite";
comment = "3D modeling, animation and rendering";
exec = "${exe} %f";
icon = "blender";
terminal = false;
startupNotify = true;
startupWMClass = "Blender";
categories = [
"Graphics"
"3DGraphics"
];
mimeTypes = [ "application/x-blender" ];
extraConfig.X-Flatpak = appId;
})
];
}