I’m currently creating the derivation for the new pop-shell extension for gnome-shell. It works well but I have an issue making it detect the gsettings schema:
The schemas are supposed to be in $out/share/gnome-shell/extensions/$uuid/schemas:
There should be a XML file and a gschemas.compiled file.
The extension’s schemas are not available globally so dconf-editor will not see them. That really should not be taken for granted even with regular apps that install the schemas to regular path.
Noted for dconf-editor. Is it also available for gsettings list-schemas ?
The base issue that made me think this was related to the gsetting schema is that the extension seems to have trouble reading its value from dconf. Maybe it’s an upstream issue, if that’s the case I will report it to them
dconf-editor is slightly stronger since it shows all things stored in the configuration databases (even when schema for the data is not available).
gsettings tool is fully dependent on the schemas being available and it cannot show things that it lacks schemas for. (On Nix, we rely on the schemas being found in XDG_DATA_DIRS environment variable.)
Unfortunately, due to the global nature of GSettings system we sometimes have to resort to ugly hacks so it is likely our bug. Could you share more details about the issue you are seeing?
The issue I’m seeing is the following: for the context : In this extension you can choose the gaps between the windows (like i3 if you’re familiar with it)
This gap value is set inside a menu:
When changed in the menu, the value is saved in its dconf variable and the gaps change.
If I change the value from dconf-editor nothing happens.
But the strange parts is this :
When I reboot the value in dconf is still the one set from the menu, but the menu shows the default value (16). EDIT : The gaps are also at 16 and not 8. It’s like the setting is completely ignored.
More context:
I’ve tried to set the value directly with dconf from home-manager :
EDIT : I confirm, using the quickfix extraSettings PR I’ve made on home-manager to force the type made it works correctly.
The fun fact is I encountered this exact same issue in dconf module of home-manager but for another type that I could not express (array of tuple-2 of strings). I didn’t realized that it was in fact the same issue.
I’ll try to do some testing on the gvariant branch, to see if I can map all of the edge-cases I’ve found :).
Is there any example of how gvariant types can be used ?
I’m not sure I will make a PR until the first stable release. And even then, I will do the PR only if I use it on a daily basis (meaning that’s good enough for a daily usage). Otherwise, I could miss some updates, and not maintain it properly.
But anybody that wants to take maintainership of this package can use the derivation I’ve created as a base and open a PR (cf. the first message of this thread), it was working quite well when I opened this thread (not tested it since ~20 days, because of containment I cannot access to my work computer which is the one on Gnome).
No worries . And yeah, that makes perfect sense. I might give it a spin via local overlay instead, thank you for posting the derivation in this thread.
Hi @Elyhaka! Thanks for your work on this. I’m new to NixOS (coming from Pop!_OS) and, if you are willing, I’d really appreciate walking through on how to get pop-shell working on my otherwise vanilla GNOME NixOS 20.03 configuration. The two main questions I have are: 1) how do I configure Nix to use GNOME from the unstable channel (i.e., 3.36 or later), and 2) how/where do I write the code for installing GNOME extensions and pop-shell [from GitHub]? Thank you again!
P.S. I’m sure both of these questions are fairly standard, I’ve just unfortunately not been able to find relevant docs yet!
Unfortunately I might be able to help you only for the second point. I’ve never used a gnome version from another channel, maybe somebody of this thread can give you a hint on this one.
On the “where to write the code” question, you must create a file that will contain the derivation to build the extension, let’s say /etc/nixos/pop-shell.nix.
Once done, you have to add (pkgs.callPackage ./pop-shell.nix {}) inside the environment.systemPackages array, that should be enough.
I should disclaim that since I wrote the original derivation the extension might have been updated (and that the build procedure declared in the derivation might be obsolete, and thus broken, for newer version).
It will be easier to simply change the rev (commit hash) then change the hash itself. It is the “more natural” way of doing it when interacting with Github projects.
EDIT: Oh, I’ve misunderstood your question. To obtain the right hash I’ve used nix-prefetch-git not nix-prefecth-url. The former will hash the content of the repository while the latter will hash the archive itself, thus making the difference you noticed.
Hi @Elyhaka sorry to bother you again, but I’ve noticed in using pop-shell this week that the Ctrl+/ quick launcher only allows already opened apps to be switched to/launched. Do you have the same experience?