From e8b8ba148e6966b367e293d85b0b2bb15a02e472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= Date: Fri, 18 May 2018 12:28:16 -0300 Subject: [PATCH] enlightenment: add xkeyboard-config dependency (#40690) - Add runtime dependence on xkeyboard-config - Add base.lst from xkeyboard-config to the list of keyboard layout files. Something similar to this has been removed in a previous patch by mistake. - Fix location of binary edge_cc. This has been removed in a previous patch by mastake. - Make the explanation for the wrapping of some binaries more clear. --- pkgs/desktops/enlightenment/enlightenment.nix | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/pkgs/desktops/enlightenment/enlightenment.nix b/pkgs/desktops/enlightenment/enlightenment.nix index b0fd5f3db2b2..dc538625bf09 100644 --- a/pkgs/desktops/enlightenment/enlightenment.nix +++ b/pkgs/desktops/enlightenment/enlightenment.nix @@ -35,15 +35,44 @@ stdenv.mkDerivation rec { gdbm pcre mesa_noglu + xkeyboard_config ] ++ stdenv.lib.optionals stdenv.isLinux [ libcap ]; - # Instead of setting owner to root and permissions to setuid/setgid - # (which is not allowed for files in /nix/store) of some - # enlightenment programs, the file $out/e-wrappers.nix is created, - # containing the needed configuration for that purpose. It can be - # used in the enlightenment module. - patches = [ ./enlightenment.suid-exes.patch ]; + patches = [ + # Some programs installed by enlightenment (to set the cpu frequency, + # for instance) need root ownership and setuid/setgid permissions, which + # are not allowed for files in /nix/store. Instead of allowing the + # installer to try to do this, the file $out/e-wrappers.nix is created, + # containing the needed configuration for wrapping those programs. It + # can be used in the enlightenment module. The idea is: + # + # 1) rename the original binary adding the extension .orig + # 2) wrap the renamed binary at /run/wrappers/bin/ + # 3) create a new symbolic link using the original binary name (in the + # original directory where enlightenment wants it) pointing to the + # wrapper + + ./enlightenment.suid-exes.patch + ]; + + postPatch = '' + # In order to get the available keyboard layouts Enlightenment looks for + # the file xorg.lst, that should be provided by xkeyboard-config (when + # configured with option --with-xkb-rules-symlink=xorg). Currently + # xkeyboard-config is not configured with this option in + # NixOS. Therefore it is needed to add base.lst (which xorg.lst would be + # a symbolic link to) explicitly as an alternative. + + sed "/#ifdef XKB_BASE/a XKB_BASE \"\/rules\/base.lst\"," \ + -i src/modules/wizard/page_011.c src/modules/xkbswitch/e_mod_parse.c + + # edge_cc is a binary provided by efl and cannot be found at the directory + # given by e_prefix_bin_get(), which is $out/bin + + substituteInPlace src/bin/e_import_config_dialog.c \ + --replace "e_prefix_bin_get()" "\"${efl}/bin\"" + ''; mesonFlags = [ "-Dsystemdunitdir=lib/systemd/user" ];