mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-04-24 06:19:11 +00:00
programs/blender: fix Blender system resources directory
Also improve the way how Blender resources are joined. It isn't the most idiomiatic code but we can improve it.
This commit is contained in:
parent
3f459b8427
commit
cd3cf148b9
@ -3,10 +3,23 @@
|
|||||||
let
|
let
|
||||||
cfg = config.programs.blender;
|
cfg = config.programs.blender;
|
||||||
|
|
||||||
addons = pkgs.symlinkJoin {
|
addons = let
|
||||||
name = "blender-${lib.majorMinor cfg.package.version}-addons";
|
blenderVersion = lib.versions.majorMinor cfg.package.version;
|
||||||
paths = builtins.map (p: "${p}/share/blender") cfg.addons;
|
in
|
||||||
};
|
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
|
in
|
||||||
{
|
{
|
||||||
options.programs.blender = {
|
options.programs.blender = {
|
||||||
@ -16,7 +29,7 @@ in
|
|||||||
example = ''
|
example = ''
|
||||||
pkgs.blender-with-packages {
|
pkgs.blender-with-packages {
|
||||||
name = "sample-studio-wrapped";
|
name = "sample-studio-wrapped";
|
||||||
packages = with pkgs.pythonPackages; [ pandas ];
|
packages = with pkgs.python3Packages; [ pandas ];
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@ -25,7 +38,8 @@ in
|
|||||||
type = with lib.types; listOf package;
|
type = with lib.types; listOf package;
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
List of packages to be added to Blender system resources. The addon
|
List of packages to be added to Blender system resources. The addon
|
||||||
packages are expected to be in {file}`$out/share/blender`.
|
packages are expected to have Blender resources in
|
||||||
|
{file}`$out/share/blender`.
|
||||||
'';
|
'';
|
||||||
default = [ ];
|
default = [ ];
|
||||||
defaultText = "[]";
|
defaultText = "[]";
|
||||||
@ -45,9 +59,6 @@ in
|
|||||||
# on `/usr/share/blender/$MAJOR.$MINOR`, we'll have to modify it with an
|
# on `/usr/share/blender/$MAJOR.$MINOR`, we'll have to modify it with an
|
||||||
# environment variable. This means in a NixOS system, it is only expected
|
# environment variable. This means in a NixOS system, it is only expected
|
||||||
# to have one instance of the system resources.
|
# to have one instance of the system resources.
|
||||||
environment.sessionVariables.BLENDER_SYSTEM_RESOURCES = lib.mkIf (builtins.length cfg.addons > 0) "/etc/blender";
|
environment.sessionVariables.BLENDER_SYSTEM_RESOURCES = lib.mkIf (builtins.length cfg.addons > 0) addons;
|
||||||
|
|
||||||
# It is acceptable to have this as a read-only directory, right?
|
|
||||||
environment.etc.blender.source = addons;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user