<commit_before>{ stdenv, fetchurl, intltool, wirelesstools, pkgconfig, dbus_glib, xz
, udev, libgudev, libnl, libuuid, polkit, gnutls, ppp, dhcp, dhcpcd, iptables
, libgcrypt, dnsmasq, avahi, bind, perl, bluez5, substituteAll, readline
, gobjectIntrospection, modemmanager, openresolv, libndp, newt, libsoup
, ethtool, gnused }:

stdenv.mkDerivation rec {
  name = "network-manager-${version}";
  version = "1.0.6";

  src = fetchurl {
    url = "mirror://gnome/sources/NetworkManager/1.0/NetworkManager-${version}.tar.xz";
    sha256 = "38ea002403e3b884ffa9aae25aea431d2a8420f81f4919761c83fb92648254bd";
  };

  preConfigure = ''
    substituteInPlace tools/glib-mkenums --replace /usr/bin/perl ${perl}/bin/perl
    substituteInPlace src/NetworkManagerUtils.c --replace /sbin/modprobe /run/current-system/sw/sbin/modprobe
    substituteInPlace data/85-nm-unmanaged.rules \
      --replace /bin/sh ${stdenv.shell} \
      --replace /usr/sbin/ethtool ${ethtool}/sbin/ethtool \
      --replace /bin/sed ${gnused}/bin/sed
    configureFlags="$configureFlags --with-udev-dir=$out/lib/udev"
  '';

  # Right now we hardcode quite a few paths at build time. Probably we should
  # patch networkmanager to allow passing these path in config file. This will
  # remove unneeded build-time dependencies.
  configureFlags = [
    "--with-distro=exherbo"
    "--with-dhclient=${dhcp}/bin/dhclient"
    "--with-dnsmasq=${dnsmasq}/bin/dnsmasq"
    # Upstream prefers dhclient, so don't add dhcpcd to the closure
    #"--with-dhcpcd=${dhcpcd}/sbin/dhcpcd"
    "--with-dhcpcd=no"
    "--with-pppd=${ppp}/bin/pppd"
    "--with-iptables=${iptables}/bin/iptables"
    #"--with-udev-dir=$(out)/lib/udev"
    "--with-resolvconf=${openresolv}/sbin/resolvconf"
    "--sysconfdir=/etc" "--localstatedir=/var"
    "--with-dbus-sys-dir=\${out}/etc/dbus-1/system.d"
    "--with-crypto=gnutls" "--disable-more-warnings"
    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
    "--with-kernel-firmware-dir=/run/current-system/firmware"
    "--with-session-tracking=systemd"
    "--with-modem-manager-1"
    "--with-nmtui"
    "--with-libsoup=yes"
  ];

  buildInputs = [ wirelesstools udev libgudev libnl libuuid polkit ppp libndp
                  xz bluez5 dnsmasq gobjectIntrospection modemmanager readline newt libsoup ];

  propagatedBuildInputs = [ dbus_glib gnutls libgcrypt ];

  nativeBuildInputs = [ intltool pkgconfig ];

  patches = [ ./nm-platform.patch ];

  preInstall =
    ''
      installFlagsArray=( "sysconfdir=$out/etc" "localstatedir=$out/var" )
    '';

  postInstall =
    ''
      mkdir -p $out/lib/NetworkManager

      # FIXME: Workaround until NixOS' dbus+systemd supports at_console policy
      substituteInPlace $out/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf --replace 'at_console="true"' 'group="networkmanager"'

      # rename to network-manager to be in style
      mv $out/etc/systemd/system/NetworkManager.service $out/etc/systemd/system/network-manager.service 

      # systemd in NixOS doesn't use `systemctl enable`, so we need to establish
      # aliases ourselves.
      ln -s $out/etc/systemd/system/NetworkManager-dispatcher.service $out/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
      ln -s $out/etc/systemd/system/network-manager.service $out/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service
    '';

  meta = with stdenv.lib; {
    homepage = http://projects.gnome.org/NetworkManager/;
    description = "Network configuration and management tool";
    license = licenses.gpl2Plus;
    maintainers = with maintainers; [ phreedom urkud rickynils iElectric ];
    platforms = platforms.linux;
  };
}<commit_msg>networkmanager: 1.0.6 -> 1.0.10 & partial refactor<commit_after>{ stdenv
, fetchurl
, gettext
, intltool

, avahi
, bind
, bluez5
, dbus_glib
, dhcp
, dhcpcd
, dnsmasq
, ethtool
, gnused
, gobject-introspection
, iptables
, libgcrypt
, libgudev
, libndp
, libnl
, libsoup
, libuuid
, modemmanager
, newt
, nss
, openresolv
, perl
, polkit
, ppp
, readline
, substituteAll
, udev
, vala
, wirelesstools
, xz
}:

stdenv.mkDerivation rec {
  name = "network-manager-${version}";
  versionMajor = "1.0";
  versionMinor = "10";
  version = "${versionMajor}.${versionMinor}";

  src = fetchurl {
    url = "mirror://gnome/sources/NetworkManager/${versionMajor}/" +
          "NetworkManager-${version}.tar.xz";
    sha256 = "1g4z2wg036n0njqp8fycrisj46l3yda6pl00l4rg9nfz862cxkqv";
  };

  patches = [
    ./nm-platform.patch
  ];

  configureFlags = [
    "--with-distro=exherbo"
    "--sysconfdir=/etc"
    "--localstatedir=/var"

    "--disable-maintainer-mode"
    "--enable-nls"
    "--enable-rpath"
    #"--enable-config-plugin-ibft"
    #"--enable-ifcfg-rh"
    #"--enable-ifcfg-suse"
    #"--enable-ifupdown"
    #"--enable-ifnet"
    "--disable-code-coverage"
    "--enable-wifi"
    "--enable-introspection"
    "--disable-qt"
    # TODO: wimax support, requires intel wimax sdk
    "--disable-wimax"
    #"--enable-teamdctl"
    "--enable-polkit"
    "--enable-polkit-agent"
    #"--enable-modify-system"
    "--enable-ppp"
    "--enable-bluez5-dun"
    #"--enable-concheck"
    "--enable-more-warnings"
    "--disable-more-asserts"
    "--disable-more-logging"
    "--disable-lto"
    # TODO: vala support
    "--disable-vala"
    "--enable-tests"
    "--disable-gtk-doc"
    "--disable-gtk-doc-html"
    "--disable-gtk-doc-pdf"

    #"--with-config-plugins-default"
    #"--with-dist-version"
    "--with-wext"
    #"--with-udev-dir"
    #"--with-udev-dir=$(out)/lib/udev"
    "--with-systemunitdir=$(out)/etc/systemd/system"
    "--with-session-tracking=systemd"
    "--with-suspend-resume=systemd"
    #"--with-selinux"
    "--with-crypto=nss"
    "--with-dbus-sys-dir=\${out}/etc/dbus-1/system.d"
    #"--with-pppd-plugin-dir"
    "--with-pppd=${ppp}/bin/pppd"
    #"--with-pppoe"
    "--with-modem-manager-1"
    "--with-dhclient=${dhcp}/bin/dhclient"
    # Upstream prefers dhclient, so don't add dhcpcd to the closure
    "--without-dhcpcd" # ???
    #"--with-dhcpcd=${dhcpcd}/sbin/dhcpcd"
    "--with-resolvconf=${openresolv}/sbin/resolvconf"
    #"--with-netconfig"
    "--with-iptables=${iptables}/bin/iptables"
    "--with-dnsmasq=${dnsmasq}/bin/dnsmasq"
    #"--with-system-ca-path"
    "--with-kernel-firmware-dir=/run/current-system/firmware" #
    "--with-libsoup" #
    "--with-nmtui" #
    "--without-valgrind" #
    "--with-tests" #
    "--without-valgrind-suppressions" #
  ];

  preConfigure = ''
    substituteInPlace tools/glib-mkenums \
      --replace /usr/bin/perl ${perl}/bin/perl
    substituteInPlace src/NetworkManagerUtils.c \
      --replace /sbin/modprobe /run/current-system/sw/sbin/modprobe
    substituteInPlace data/85-nm-unmanaged.rules \
      --replace /bin/sh ${stdenv.shell} \
      --replace /usr/sbin/ethtool ${ethtool}/sbin/ethtool \
      --replace /bin/sed ${gnused}/bin/sed
    configureFlagsArray+=("--with-udev-dir=$out/lib/udev")
  '';

  /*configurePhase = ''
    ./configure --help
  '';*/

  nativeBuildInputs = [
    gettext
    intltool
  ];

  buildInputs = [
    bluez5
    dbus_glib
    dnsmasq
    gobject-introspection
    libgcrypt
    libgudev
    libndp
    libnl
    libsoup
    libuuid
    modemmanager
    newt
    nss
    polkit
    ppp
    readline
    udev
    #vala
    wirelesstools
    xz
  ];

  preInstall = ''
    installFlagsArray=(
      "sysconfdir=$out/etc"
      "localstatedir=$out/var"
    )
  '';

  postInstall = ''

    # FIXME: Workaround until NixOS' dbus+systemd supports at_console policy
    substituteInPlace $out/etc/dbus-1/system.d/org.freedesktop.NetworkManager.conf \
      --replace 'at_console="true"' 'group="networkmanager"'

    # rename to network-manager to be in style
    #mv -v $out/etc/systemd/system/NetworkManager.service \
    #  $out/etc/systemd/system/network-manager.service

    # systemd in NixOS doesn't use `systemctl enable`, so we need to establish
    # aliases ourselves.
    mkdir -pv $out/etc/systemd/system
    ln -sv $out/lib/systemd/system/NetworkManager.service \
      $out/etc/systemd/system/network-manager.service
    ln -sv $out/lib/systemd/system/NetworkManager.service \
      $out/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service
    ln -sv $out/lib/systemd/system/NetworkManager-dispatcher.service \
      $out/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service
  '';

  enableParallelBuilding = true;

  meta = with stdenv.lib; {
    description = "Network configuration and management tool";
    homepage = http://projects.gnome.org/NetworkManager/;
    license = licenses.gpl2Plus;
    maintainers = with maintainers; [
      codyopel
    ];
    platforms = [
      "i686-linux"
      "x86_64-linux"
    ];
  };
}
{'fraction_non_alphanumeric': 0.1553907586993725, 'fraction_numerical': 0.012207644038790644, 'mean_word_length': 2.9221476510067115, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6953904', 'n_tokens_mistral': 3314, 'n_tokens_neox': 3160, 'n_words': 502}