This repository has been archived by the owner on Apr 12, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
weechat: seperate weechat-unwrapped from wrapper
If I have a patch I want to apply to weechat, I can't do that with overrideAttrs like I can with almost every other package, because that only applies to the wrapper derivation. For other wrapped packages, one can usually call the wrapper with any version of the derivation, but the weechat derivation didn't expose a wrapper creation function. Taking inspiration from other packages, particularly Firefox, I extracted the wrapper into its own function, made the default weechat derivation use that, and added weechat-unwrapped. Now I can add my custom patch like this: (wrapWeechat (weechat-unwrapped.overrideAttrs (oldAttrs: { patches = [ (fetchpatch { url = "https://github.com/weechat/weechat/commit/55767f5f116db3cb56cf85f52aa80feff45b6abf.patch?full_index=1"; sha256 = "1pkcdsby57diqds1y5hhl0fr4i8j0zax32jb0gqd36siki3lza3d"; }) ]; })) { configure = { availablePlugins, ... }: { plugins = with availablePlugins; [ (python.withPackages (packages: with packages; [ potr websocket_client ])) ]; }; }) There is a small backward incompatibility here: previously, it was possible to get an unwrapped weechat like this: weechat.override { configure = null; } This didn't seem too important to keep around since it was also possible to get an unwrapped weechat in a much more obvious way: weechat.unwrapped I could probably make it so that the first way still worked, if that behavior turns out to really have been important.
- Loading branch information
Showing
3 changed files
with
65 additions
and
52 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
{ pythonPackages, perl, runCommand, lib, writeScriptBin, stdenv | ||
}: | ||
|
||
weechat: | ||
|
||
let | ||
wrapper = { | ||
configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; } | ||
}: | ||
|
||
let | ||
perlInterpreter = perl; | ||
config = configure { | ||
availablePlugins = let | ||
simplePlugin = name: { pluginFile = "${weechat.${name}}/lib/weechat/plugins/${name}.so"; }; | ||
in rec { | ||
python = { | ||
pluginFile = "${weechat.python}/lib/weechat/plugins/python.so"; | ||
withPackages = pkgsFun: (python // { | ||
extraEnv = '' | ||
export PYTHONHOME="${pythonPackages.python.withPackages pkgsFun}" | ||
''; | ||
}); | ||
}; | ||
perl = (simplePlugin "perl") // { | ||
extraEnv = '' | ||
export PATH="${perlInterpreter}/bin:$PATH" | ||
''; | ||
}; | ||
tcl = simplePlugin "tcl"; | ||
ruby = simplePlugin "ruby"; | ||
guile = simplePlugin "guile"; | ||
lua = simplePlugin "lua"; | ||
}; | ||
}; | ||
|
||
inherit (config) plugins; | ||
|
||
pluginsDir = runCommand "weechat-plugins" {} '' | ||
mkdir -p $out/plugins | ||
for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do | ||
ln -s $plugin $out/plugins | ||
done | ||
''; | ||
|
||
in (writeScriptBin "weechat" '' | ||
#!${stdenv.shell} | ||
export WEECHAT_EXTRA_LIBDIR=${pluginsDir} | ||
${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins} | ||
exec ${weechat}/bin/weechat "$@" | ||
'') // { | ||
name = weechat.name; | ||
unwrapped = weechat; | ||
meta = weechat.meta; | ||
}; | ||
|
||
in lib.makeOverridable wrapper |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters