{
  den.aspects.cad = {
    nixos = { pkgs, ... }: {
      users.users.bug.packages = with pkgs; [
        #blender
        plasticity
        #orca-slicer
      ];
    };

    homeManager = { pkgs , ... }: {
      home.packages = let
        blenderScripts = pkgs.runCommand "blender-user-scripts" { } ''
          mkdir -p $out/addons
          cp -r ${./addons}/. $out/addons/
        '';

        quadRemesherLauncher = pkgs.writeShellScript "quadremesher-launcher" ''
          engineDir="$(dirname "$1")"
          export NIX_LD_LIBRARY_PATH="$engineDir:/run/current-system/sw/share/nix-ld/lib''${NIX_LD_LIBRARY_PATH:+:$NIX_LD_LIBRARY_PATH}"
          export LD_PRELOAD="${pkgs.zlib}/lib/libz.so.1''${LD_PRELOAD:+:$LD_PRELOAD}"
          exec "$@"
        '';

        blender-quadremesher = pkgs.symlinkJoin {
          name = "blender-quadremesher";
          paths = [ pkgs.blender ];
          nativeBuildInputs = [ pkgs.makeWrapper ];
          postBuild = ''
            wrapProgram $out/bin/blender \
              --set BLENDER_USER_SCRIPTS ${blenderScripts} \
              --set QUADREMESHER_LAUNCHER ${quadRemesherLauncher}
          '';
        };
      in [ blender-quadremesher ];
    };
  };
}
