From 2b0edd86db9ccbbf2c946f74c840e9c0b87fa462 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Sun, 22 Jun 2025 18:59:29 +0200 Subject: fix: generate-inx-files failing with Nix Fixes the following error when attempting to build the Nix package: python bin/generate-inx-files; Traceback (most recent call last): File "/build/inkstitch/bin/generate-inx-files", line 59, in from lib.inx.generate import generate_inx_files File "/build/inkstitch/lib/inx/generate.py", line 6, in from .extensions import generate_extension_inx_files File "/build/inkstitch/lib/inx/extensions.py", line 10, in from ..commands import (COMMANDS, GLOBAL_COMMANDS, LAYER_COMMANDS, File "/build/inkstitch/lib/commands.py", line 16, in from .i18n import N_, _ File "/build/inkstitch/lib/i18n.py", line 10, in from .utils import cache, get_resource_dir File "/build/inkstitch/lib/utils/__init__.py", line 6, in from . import cache as cache_module # Slight hack to allow cache to be imported for monkeypatching ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/build/inkstitch/lib/utils/cache.py", line 13, in from lib.utils.settings import global_settings File "/build/inkstitch/lib/utils/settings.py", line 84, in global_settings = GlobalSettings() ^^^^^^^^^^^^^^^^ File "/build/inkstitch/lib/utils/settings.py", line 48, in __init__ self.__settings_file = os.path.join(get_user_dir(), "settings.json") ^^^^^^^^^^^^^^ File "/build/inkstitch/lib/utils/paths.py", line 50, in get_user_dir os.makedirs(path) File "", line 215, in makedirs File "", line 215, in makedirs File "", line 225, in makedirs PermissionError: [Errno 13] Permission denied: '/homeless-shelter' --- lib/utils/settings.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib/utils/settings.py') diff --git a/lib/utils/settings.py b/lib/utils/settings.py index 42e6b233..28c52290 100644 --- a/lib/utils/settings.py +++ b/lib/utils/settings.py @@ -45,7 +45,11 @@ DEFAULT_SETTINGS = { class GlobalSettings(MutableMapping): def __init__(self): super().__init__() - self.__settings_file = os.path.join(get_user_dir(), "settings.json") + # We set create=False here because this code is executed on module load + # and via imports also runs on generate-inx-files, which with the Nix + # package manager is executed with a non-writable home directory. + user_dir = get_user_dir(create=False) + self.__settings_file = os.path.join(user_dir, "settings.json") self.__settings = {} for name, value in DEFAULT_METADATA.items(): -- cgit v1.2.3