diff options
Diffstat (limited to 'pkgs/applications/networking/irc/weechat/default.nix')
-rw-r--r-- | pkgs/applications/networking/irc/weechat/default.nix | 75 |
1 files changed, 2 insertions, 73 deletions
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix index 7ed237ce6aa2..d52d8b6b31e4 100644 --- a/pkgs/applications/networking/irc/weechat/default.nix +++ b/pkgs/applications/networking/irc/weechat/default.nix @@ -2,7 +2,6 @@ , ncurses, openssl, aspell, gnutls , zlib, curl, pkgconfig, libgcrypt , cmake, makeWrapper, libobjc, libresolv, libiconv -, writeScriptBin # for withPlugins , asciidoctor # manpages , guileSupport ? true, guile , luaSupport ? true, lua5 @@ -11,8 +10,6 @@ , rubySupport ? true, ruby , tclSupport ? true, tcl , extraBuildInputs ? [] -, configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; } -, runCommand, buildEnv }: let @@ -27,7 +24,7 @@ let ]; enabledPlugins = builtins.filter (p: p.enabled) plugins; - weechat = + in assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins; stdenv.mkDerivation rec { version = "2.3"; @@ -82,72 +79,4 @@ let maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny lheckemann ma27 ]; platforms = stdenv.lib.platforms.unix; }; - }; -in if configure == null then weechat else - let - perlInterpreter = perl; - 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" - ''; - withPackages = pkgsFun: (perl // { - extraEnv = '' - ${perl.extraEnv} - export PERL5LIB=${lib.makeFullPerlPath (pkgsFun perlPackages)} - ''; - }); - }; - tcl = simplePlugin "tcl"; - ruby = simplePlugin "ruby"; - guile = simplePlugin "guile"; - lua = simplePlugin "lua"; - }; - - config = configure { inherit availablePlugins; }; - - plugins = config.plugins or (builtins.attrValues availablePlugins); - - pluginsDir = runCommand "weechat-plugins" {} '' - mkdir -p $out/plugins - for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do - ln -s $plugin $out/plugins - done - ''; - - init = let - init = builtins.replaceStrings [ "\n" ] [ ";" ] (config.init or ""); - - mkScript = drv: lib.flip map drv.scripts (script: "/script load ${drv}/share/${script}"); - - scripts = builtins.concatStringsSep ";" (lib.foldl (scripts: drv: scripts ++ mkScript drv) - [ ] (config.scripts or [])); - in "${scripts};${init}"; - - mkWeechat = bin: (writeScriptBin bin '' - #!${stdenv.shell} - export WEECHAT_EXTRA_LIBDIR=${pluginsDir} - ${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins} - exec ${weechat}/bin/${bin} "$@" --run-command ${lib.escapeShellArg init} - '') // { - inherit (weechat) name meta; - unwrapped = weechat; - }; - in buildEnv { - name = "weechat-bin-env-${weechat.version}"; - paths = [ - (mkWeechat "weechat") - (mkWeechat "weechat-headless") - ]; - meta = weechat.meta; - } + } |