[Nix-dev] paths in user's i3 configs broken by upgrade

Mark Gardner mkg at vt.edu
Mon Apr 3 22:25:19 CEST 2017


I just upgraded from an early 17.03 beta to 17.03 and the $mod+d key
combination for invoking dmenu no longer works in i3.

The problem is that the paths to dmenu in the ${i3}/etc/config* files are
hard coded when the config files are created and propagated to the user's
.config/i3/config file by i3-config-wizard upon first logging in. At some
point in the future, an upgrade causes the config file to point outside the
current-system closure. This is certainly an error but won't be obvious
until the path to the obsolete dmenu is garbage collected.

In my case, I upgraded from 16.09 to 17.03 beta and then 17.03. Things
seemed to be working so I garbage collected my original 16.09 installation
which broke $mod+d as the path to the original 16.09 dmenu was now dangling.

Instead of:

    bindsym $mod+d exec
/nix/store/04sx6lx7hssid7a6iwdbdvxbkp25xsx1-dmenu-4.6/bin/dmenu_run

I think it should be to be:

    bindsym $mod+d exec /run/current-system/sw/bin/dmenu_run

That way, the path is still within the current-system closure and is
guaranteed to exist if dmenu is installed. I believe the place to make the
change is in the post fixup (lines 33-38
in nixpkgs/pkgs/applications/window-managers/i3/default.nix). I would be
glad to issue a PR but I don't know how the substitution should change to
result in /run/current-system/sw instead.

Note: the path for i3status is also hard-coded and shouldn't be. Since
there wasn't an update to i3status, it continues to work but is still wrong
because it points outside of the current-system closure.

Mark
-- 
Mark Gardner
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.science.uu.nl/pipermail/nix-dev/attachments/20170403/81d12d90/attachment.html>


More information about the nix-dev mailing list