Step 1. Before you submit
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.
Step 1. Before you submit
Step 2. Version info
Version info
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 aKeyError: 'name'traceback.Additionally, the default
shell.jsonmanaged by Home Manager is a read-only symlink, which prevents Caelestia from saving any changes.Expected behavior
caelestia scheme set -n dynamicshould work.caelestia wallpaper -p <path>should apply the wallpaper and generate a dynamic scheme.Workaround for read-only
shell.jsonI worked around the read-only config by creating a mutable
shell.jsonviamkOutOfStoreSymlink: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