wrapper-manager/programs/blender: init

Prototyping custom wrapper-manager-fds modules, hoorah!
This commit is contained in:
Gabriel Arazas 2024-07-10 15:52:28 +08:00
parent 7d50020b75
commit f46cec6e11
No known key found for this signature in database
GPG Key ID: 62104B43D00AA360
2 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,5 @@
{
imports = [
./programs/blender.nix
];
}

View File

@ -0,0 +1,63 @@
{ config, lib, pkgs, ... }:
let
cfg = config.programs.blender;
blenderVersion = lib.versions.majorMinor cfg.package.version;
addons =
pkgs.runCommand "blender-system-resources"
{
passAsFile = [ "paths" ];
paths = cfg.addons ++ [ cfg.package ];
nativeBuildInputs = with pkgs; [ outils ];
} ''
mkdir -p $out
for i in $(cat $pathsPath); do
resourcesPath="$i/share/blender"
if [ -d $i/share/blender/${blenderVersion} ]; then
resourcesPath="$i/share/blender/${blenderVersion}";
fi
lndir -silent $resourcesPath $out
done
'';
in
{
options.programs.blender = {
enable = lib.mkEnableOption "Blender, a 3D computer graphics tool";
package = lib.mkPackageOption pkgs "blender" {
example = ''
pkgs.blender-with-packages {
name = "sample-studio-wrapped";
packages = with pkgs.python3Packages; [ pandas ];
}
'';
};
addons = lib.mkOption {
type = with lib.types; listOf package;
description = lib.mdDoc ''
List of packages providing Blender system resources at
{file}`/share/blender` or at {file}`/share/blender/$MAJORMINORVERSION`.
'';
default = [ ];
defaultText = "[]";
example = lib.literalExpression ''
with pkgs; [
blender-addons-machin3tools
blender-addons-glslTexture
]
'';
};
};
config = lib.mkIf cfg.enable {
basePackages = [ cfg.package ];
# TODO: Should we replace the .desktop file for this?
wrappers.blender = {
arg0 = lib.getExe' cfg.package "blender";
env.BLENDER_SYSTEM_RESOURCES = lib.mkIf (builtins.length cfg.addons > 0) addons;
};
};
}