Skip to content

[BUG] #1449

@ReEloy228

Description

@ReEloy228

Step 1. Before you submit

  • I have read the above instructions and am sure that this is supposed to be posted here.
  • I've successfully updated to the latest versions following the updating guide.
  • I've successfully updated the system packages to the latest.
  • I've ticked the checkboxes without reading their contents

Step 2. Version info

Version info
Packages: not on Arch

fatal: не является репозиторием git: «/home/eloy/.config/.git»
Caelestia: not installed

Shell: version helper not available

Quickshell: not in PATH

Step 3. Describe the issue

Describe the bug
On NixOS with the latest caelestia-shell (using the HM module), no color schemes are available out of the box. The launcher shows no schemes, the schemes list is empty, and both static and dynamic schemes fail. Trying to set a scheme via CLI or apply a wallpaper results in a KeyError: 'name' traceback.
Additionally, the default shell.json managed by Home Manager is a read-only symlink, which prevents Caelestia from saving any changes.

Expected behavior

  • Pre-installed schemes (like the default dynamic generator and some bundled themes) should be present and selectable.
  • caelestia scheme set -n dynamic should work.
  • caelestia wallpaper -p <path> should apply the wallpaper and generate a dynamic scheme.

Workaround for read-only shell.json
I worked around the read-only config by creating a mutable shell.json via mkOutOfStoreSymlink:

caelestiaConfigDir = "${config.home.homeDirectory}/dotfiles/config/caelestia";
initialShellJson = builtins.toJSON { ... };
home.activation.setupCaelestiaConfig = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
    mkdir -p "${caelestiaConfigDir}"
    if [ ! -f "${caelestiaConfigDir}/shell.json" ]; then
      echo '${initialShellJson}' > "${caelestiaConfigDir}/shell.json"
      chmod 644 "${caelestiaConfigDir}/shell.json"
    fi
  '';
home.file."caelestia/shell.json" = {
    source = config.lib.file.mkOutOfStoreSymlink "${caelestiaConfigDir}/shell.json";
    force = true;
};


<details><summary>Logs</summary>

eloy@nixos  ~  caelestia scheme set -n dynamic
Traceback (most recent call last):
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/bin/.caelestia-wrapped", line 9, in
sys.exit(main())
~~~~^^
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/init.py", line 10, in main
args.cls(args).run()
~~~~~~~~~~~~~~~~~~^^
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/subcommands/scheme.py", line 22, in run
scheme = get_scheme()
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/utils/scheme.py", line 217, in get_scheme
scheme = Scheme(scheme_json)
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/utils/scheme.py", line 26, in init
self._name = scheme_json["name"]
~~~~~~~~~~~^^^^^^^^
KeyError: 'name'
✘ eloy@nixos  ~  caelestia wallpaper -p /home/eloy/Pictures/Wallpapers/desktop-catppuccin-mocha-buttons.png
Traceback (most recent call last):
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/bin/.caelestia-wrapped", line 9, in
sys.exit(main())
~~~~^^
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/init.py", line 10, in main
args.cls(args).run()
~~~~~~~~~~~~~~~~~~^^
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/subcommands/wallpaper.py", line 15, in run
print(json.dumps(get_colours_for_wall(self.args.print, self.args.no_smart)))
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/utils/wallpaper.py", line 104, in get_colours_for_wall
scheme = get_scheme()
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/utils/scheme.py", line 217, in get_scheme
scheme = Scheme(scheme_json)
File "/nix/store/ph7004qd7v8lxb2vc2wad8msgfaag5vn-caelestia-cli-1f523c75569065e294ff05b21289a39df8d03e16/lib/python3.13/site-packages/caelestia/utils/scheme.py", line 26, in init
self._name = scheme_json["name"]
~~~~~~~~~~~^^^^^^^^
KeyError: 'name'

мая 04 19:40:57 nixos caelestia-shell[78386]: WARN quickshell.dbus: Could not launch service org.freedesktop.UPower.PowerProfiles: QDBusError(org.freedesktop.DBus.Error.ServiceUn>
мая 04 19:40:57 nixos caelestia-shell[78386]: WARN quickshell.service.powerprofiles: Could not start PowerProfilesDaemon. The PowerProfiles service will not work.
мая 04 19:41:00 nixos caelestia-shell[78386]: WARN scene: @modules/launcher/services/Schemes.qml[46:-1]: SyntaxError: JSON.parse: Parse error
мая 04 19:41:00 nixos caelestia-shell[78386]: WARN scene: @modules/launcher/services/Schemes.qml[72:-1]: Error: Cannot assign [undefined] to QString
мая 04 19:41:27 nixos caelestia-shell[78386]: WARN scene: @modules/launcher/services/Schemes.qml[72:-1]: Error: Cannot assign [undefined] to QString
мая 04 19:41:38 nixos caelestia-shell[78386]: WARN: Could not load icon "preferences-desktop-theme?fallback=image-missing" at size QSize(34, 34) from request


</details>

### Reminder

- [x] I agree that it's usually impossible for others to help me without my logs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions