Sorry about that. Stray quote. Run this command instead:
APPARMOR_POLICY_PATH="/etc/apparmor.d/arduino-ide" \
&& \
printf \
'# AppArmor policy for Arduino IDE
# Source: https://github.com/arduino/arduino-ide/issues/2429#issuecomment-2099775010
# See: https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference
abi <abi/4.0>,
@{ARDUINO_IDE_EXECUTABLE_PATH}="'"$ARDUINO_IDE_EXECUTABLE_PATH"'"
include <tunables/global>
# Re: `flags=(unconfined)`, see:
# - https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference#profile-flags
# - https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_userns_restriction#special-unconfined-profiles-and-user-namespace-mediation
profile "@{ARDUINO_IDE_EXECUTABLE_PATH}" flags=(unconfined) {
# See:
# https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_userns_restriction#allowing-user-namespaces-creation-in-policy
userns,
}
' | \
sudo \
tee \
"$APPARMOR_POLICY_PATH" \
&& \
sudo \
apparmor_parser \
--replace \
"$APPARMOR_POLICY_PATH"