diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix new file mode 100644 index 000000000000..95c01431c32a --- /dev/null +++ b/pkgs/tools/networking/wicd/default.nix @@ -0,0 +1,78 @@ +{stdenv, fetchurl, python, pygobject, pycairo, pyGtkGlade, pythonDBus, + wpa_supplicant, dhcp, wirelesstools, nettools, iproute, + locale ? "\\\"C\\\"" }: + +# wicd has a ncurses interface that we do not build because it depends on urwid which has not been packaged at this time (2009-12-27) + +stdenv.mkDerivation rec { + name = "wicd-1.6.2.2"; + + src = fetchurl { + url = "mirror://sourceforge/wicd/files/wicd-stable/${name}/${name}.tar.bz2"; + sha256 = "1gpjrlanz7rrzkchnpm1dgik333rz1fsg4c4046c5pwdfpp1crxr"; + }; + + buildInputs = [ python ]; + + patches = [ ./no-var-install.patch ./pygtk.patch ./mkdir-networks.patch ]; + + # Should I be using pygtk's propogated build inputs? + postPatch = '' + sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin:${wpa_supplicant}/sbin:${dhcp}/sbin:${wirelesstools}/sbin:${nettools}/sbin:${iproute}/sbin" in/scripts=wicd.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pythonDBus})" in/scripts=wicd.in + sed -i "4iexport LC_ALL=${locale}" in/scripts=wicd.in + sed -i "2iexport PATH=\$PATH\$\{PATH:+:\}${python}/bin" in/scripts=wicd-client.in + sed -i "3iexport PYTHONPATH=\$PYTHONPATH\$\{PYTHONPATH:+:\}$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject})/gtk-2.0:$(toPythonPath ${pycairo}):$(toPythonPath ${pythonDBus})" in/scripts=wicd-client.in + ''; + + configurePhase = '' + python setup.py configure \ + --lib=$out/lib/ \ + --etc=/var/lib/wicd/ \ + --share=$out/share/ \ + --scripts=$out/etc/scripts/ \ + --images=$out/share/pixmaps/ \ + --encryption=$out/etc/encryption/templates/ \ + --bin=$out/bin/ \ + --sbin=$out/sbin/ \ + --backends=$out/lib/backends/ \ + --networks=/var/lib/wicd/configurations/ \ + --resume=$out/etc/acpi/resume.d/ \ + --suspend=$out/etc/acpi/suspend.d/ \ + --pmutils=$out/lib/pm-utils/sleep.d/ \ + --dbus=$out/etc/dbus-1/system.d/ \ + --desktop=$out/share/applications/ \ + --icons=$out/share/icons/hicolour/ \ + --translations=$out/share/locale/ \ + --autostart=$out/etc/xdg/autostart/ \ + --varlib=$out/share/ \ + --docdir=$out/share/doc/ \ + --mandir=$out/share/man/ \ + --kdedir=$out/share/autostart/ \ + --python=${python}/bin/python \ + --distro=nix \ + --wicdgroup=users \ + --no-install-init \ + --no-install-kde \ + --no-install-acpi \ + --no-install-pmutils \ + --no-install-ncurses \ + ''; + + installPhase = ''python setup.py install --prefix=$out''; + + meta = { + homepage = http://wicd.net/; + description = "A wiredless and wired network manager"; + long_description='' +A complete network connection manager +Wicd supports wired and wireless networks, and capable of +creating and tracking profiles for both. It has a +template-based wireless encryption system, which allows the user +to easily add encryption methods used. It ships with some common +encryption types, such as WPA and WEP. Wicd will automatically +connect at startup to any preferred network within range. +''; + license="GPL"; + }; +} diff --git a/pkgs/tools/networking/wicd/mkdir-networks.patch b/pkgs/tools/networking/wicd/mkdir-networks.patch new file mode 100644 index 000000000000..df3f0487d1da --- /dev/null +++ b/pkgs/tools/networking/wicd/mkdir-networks.patch @@ -0,0 +1,11 @@ +wicd normally makes the NETWORKS directory at install time, but we cannot do that, +so we make it at runtime instead. + +--- wicd-1.6.2.2/in/scripts=wicd.in 2009-09-01 11:05:31.000000000 -0400 ++++ wicd-1.6.2.2/in/scripts=wicd.in 2010-01-04 18:01:57.000000000 -0500 +@@ -1,3 +1,5 @@ + #!/bin/bash + ++mkdir -p %NETWORKS% ++ + exec python -O %LIB%wicd-daemon.py $@ diff --git a/pkgs/tools/networking/wicd/no-var-install.patch b/pkgs/tools/networking/wicd/no-var-install.patch new file mode 100644 index 000000000000..6f25ba0172c9 --- /dev/null +++ b/pkgs/tools/networking/wicd/no-var-install.patch @@ -0,0 +1,20 @@ +The install tries to create files in /var. This patch removes those steps. + +--- wicd-1.6.2.2/setup.py 2009-09-01 11:05:31.000000000 -0400 ++++ wicd-1.6.2.2/setup.py 2009-12-27 21:27:57.000000000 -0500 +@@ -464,7 +464,6 @@ + data = [ + (wpath.dbus, ['other/wicd.conf']), + (wpath.desktop, ['other/wicd.desktop']), +- (wpath.log, []), + (wpath.etc, []), + (wpath.icons + 'scalable/apps/', ['icons/scalable/wicd-client.svg']), + (wpath.icons + '192x192/apps/', ['icons/192px/wicd-client.png']), +@@ -481,7 +480,6 @@ + (wpath.images, [('images/' + b) for b in os.listdir('images') if not b.startswith('.')]), + (wpath.encryption, [('encryption/templates/' + b) for b in + os.listdir('encryption/templates') if not b.startswith('.')]), +- (wpath.networks, []), + (wpath.bin, ['scripts/wicd-client', ]), + (wpath.sbin, ['scripts/wicd', ]), + (wpath.share, ['data/wicd.glade', ]), diff --git a/pkgs/tools/networking/wicd/pygtk.patch b/pkgs/tools/networking/wicd/pygtk.patch new file mode 100644 index 000000000000..e72228f75a5c --- /dev/null +++ b/pkgs/tools/networking/wicd/pygtk.patch @@ -0,0 +1,15 @@ +For some reason nix's pygtk doesn't have a pygtk module so we remove the version check. +If this ever changes we could remove this patch. + +--- wicd-1.6.2.2/wicd/wicd-client.py 2009-09-01 11:05:31.000000000 -0400 ++++ wicd-1.6.2.2/wicd/wicd-client.py 2009-12-28 00:22:57.000000000 -0500 +@@ -43,9 +43,6 @@ + import atexit + from dbus import DBusException + +-import pygtk +-pygtk.require('2.0') +- + HAS_NOTIFY = True + try: + import pynotify diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f057bbf6ebe0..81305572a865 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1632,6 +1632,11 @@ let inherit fetchurl stdenv readline; }; + wicd = import ../tools/networking/wicd { + inherit stdenv fetchurl python pygobject pycairo pyGtkGlade pythonDBus + wpa_supplicant dhcp wirelesstools nettools iproute; + }; + wv = import ../tools/misc/wv { inherit fetchurl stdenv libpng zlib imagemagick pkgconfig libgsf libxml2 bzip2 glib;