about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2018-02-11 23:28:00 +0100
committerFranz Pletz <fpletz@fnordicwalking.de>2018-02-11 23:35:05 +0100
commit74736f26c2578786eefce80f906b0858780e1d55 (patch)
treedca705fdaccc08f50f34871ccb1dfe0d3c832405
parent7fad46051e640cde165e552d5dae62684a40abab (diff)
downloadnixlib-74736f26c2578786eefce80f906b0858780e1d55.tar
nixlib-74736f26c2578786eefce80f906b0858780e1d55.tar.gz
nixlib-74736f26c2578786eefce80f906b0858780e1d55.tar.bz2
nixlib-74736f26c2578786eefce80f906b0858780e1d55.tar.lz
nixlib-74736f26c2578786eefce80f906b0858780e1d55.tar.xz
nixlib-74736f26c2578786eefce80f906b0858780e1d55.tar.zst
nixlib-74736f26c2578786eefce80f906b0858780e1d55.zip
bird2: init at 2.0.1
-rw-r--r--nixos/modules/services/networking/bird.nix23
-rw-r--r--pkgs/servers/bird/default.nix67
-rw-r--r--pkgs/servers/bird/dont-create-sysconfdir-1.patch (renamed from pkgs/servers/bird/dont-create-sysconfdir.patch)0
-rw-r--r--pkgs/servers/bird/dont-create-sysconfdir-2.patch13
-rw-r--r--pkgs/top-level/all-packages.nix4
5 files changed, 76 insertions, 31 deletions
diff --git a/nixos/modules/services/networking/bird.nix b/nixos/modules/services/networking/bird.nix
index 1a7a1e24b702..c25bd0fdc541 100644
--- a/nixos/modules/services/networking/bird.nix
+++ b/nixos/modules/services/networking/bird.nix
@@ -7,21 +7,27 @@ let
     let
       cfg = config.services.${variant};
       pkg = pkgs.${variant};
+      birdBin = if variant == "bird6" then "bird6" else "bird";
       birdc = if variant == "bird6" then "birdc6" else "birdc";
+      descr =
+        { bird = "1.9.x with IPv4 suport";
+          bird6 = "1.9.x with IPv6 suport";
+          bird2 = "2.x";
+        }.${variant};
       configFile = pkgs.stdenv.mkDerivation {
         name = "${variant}.conf";
         text = cfg.config;
         preferLocalBuild = true;
         buildCommand = ''
           echo -n "$text" > $out
-          ${pkg}/bin/${variant} -d -p -c $out
+          ${pkg}/bin/${birdBin} -d -p -c $out
         '';
       };
     in {
       ###### interface
       options = {
         services.${variant} = {
-          enable = mkEnableOption "BIRD Internet Routing Daemon";
+          enable = mkEnableOption "BIRD Internet Routing Daemon (${descr})";
           config = mkOption {
             type = types.lines;
             description = ''
@@ -36,12 +42,12 @@ let
       config = mkIf cfg.enable {
         environment.systemPackages = [ pkg ];
         systemd.services.${variant} = {
-          description = "BIRD Internet Routing Daemon";
+          description = "BIRD Internet Routing Daemon (${descr})";
           wantedBy = [ "multi-user.target" ];
           serviceConfig = {
             Type = "forking";
             Restart = "on-failure";
-            ExecStart = "${pkg}/bin/${variant} -c ${configFile} -u ${variant} -g ${variant}";
+            ExecStart = "${pkg}/bin/${birdBin} -c ${configFile} -u ${variant} -g ${variant}";
             ExecReload = "${pkg}/bin/${birdc} configure";
             ExecStop = "${pkg}/bin/${birdc} down";
             CapabilityBoundingSet = [ "CAP_CHOWN" "CAP_FOWNER" "CAP_DAC_OVERRIDE" "CAP_SETUID" "CAP_SETGID"
@@ -56,14 +62,15 @@ let
         users = {
           extraUsers.${variant} = {
             description = "BIRD Internet Routing Daemon user";
-            group = "${variant}";
+            group = variant;
           };
           extraGroups.${variant} = {};
         };
       };
     };
 
-  inherit (config.services) bird bird6;
-in {
-  imports = [(generic "bird") (generic "bird6")];
+in
+
+{
+  imports = map generic [ "bird" "bird6" "bird2" ];
 }
diff --git a/pkgs/servers/bird/default.nix b/pkgs/servers/bird/default.nix
index 0e77aa1d8ee7..ba29bfa433a9 100644
--- a/pkgs/servers/bird/default.nix
+++ b/pkgs/servers/bird/default.nix
@@ -1,29 +1,54 @@
-{ stdenv, fetchurl, flex, bison, readline
-, enableIPv6 ? false }:
+{ lib, stdenv, fetchurl, flex, bison, readline }:
 
-stdenv.mkDerivation rec {
-  name = "bird-1.6.3";
+with lib;
 
-  src = fetchurl {
-    url = "ftp://bird.network.cz/pub/bird/${name}.tar.gz";
-    sha256 = "0z3yrxqb0p7f8b7r2gk4mvrwfzk45zx7yr9aifbvba1vgksiri9r";
-  };
+let
+
+  generic = { version, sha256, enableIPv6 ? false }:
+    stdenv.mkDerivation rec {
+      name = "bird-${version}";
+
+      src = fetchurl {
+        inherit sha256;
+        url = "ftp://bird.network.cz/pub/bird/${name}.tar.gz";
+      };
+
+      nativeBuildInputs = [ flex bison ];
+      buildInputs = [ readline ];
+
+      patches = [
+        (./. + (builtins.toPath "/dont-create-sysconfdir-${builtins.substring 0 1 version}.patch"))
+      ];
 
-  buildInputs = [ flex bison readline ];
+      configureFlags = [
+        "--localstatedir=/var"
+      ] ++ optional enableIPv6 "--enable-ipv6";
 
-  patches = [
-    ./dont-create-sysconfdir.patch
-  ];
+      meta = {
+        description = "BIRD Internet Routing Daemon";
+        homepage = http://bird.network.cz;
+        license = licenses.gpl2Plus;
+        maintainers = with maintainers; [ viric fpletz ];
+        platforms = platforms.linux;
+      };
+    };
 
-  configureFlags = [
-    "--localstatedir /var"
-  ] ++ stdenv.lib.optional enableIPv6 "--enable-ipv6";
+in
+
+{
+  bird = generic {
+    version = "1.6.3";
+    sha256 = "0z3yrxqb0p7f8b7r2gk4mvrwfzk45zx7yr9aifbvba1vgksiri9r";
+  };
+
+  bird6 = generic {
+    version = "1.6.3";
+    sha256 = "0z3yrxqb0p7f8b7r2gk4mvrwfzk45zx7yr9aifbvba1vgksiri9r";
+    enableIPv6 = true;
+  };
 
-  meta = {
-    description = "BIRD Internet Routing Daemon";
-    homepage = http://bird.network.cz;
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ viric fpletz ];
-    platforms  = stdenv.lib.platforms.linux;
+  bird2 = generic {
+    version = "2.0.1";
+    sha256 = "0qyh2cxj7hfz90x3fnczjdm3i9g7vr0nc4l4wjkj9qm0646vc52n";
   };
 }
diff --git a/pkgs/servers/bird/dont-create-sysconfdir.patch b/pkgs/servers/bird/dont-create-sysconfdir-1.patch
index 0a11c8a2a8d8..0a11c8a2a8d8 100644
--- a/pkgs/servers/bird/dont-create-sysconfdir.patch
+++ b/pkgs/servers/bird/dont-create-sysconfdir-1.patch
diff --git a/pkgs/servers/bird/dont-create-sysconfdir-2.patch b/pkgs/servers/bird/dont-create-sysconfdir-2.patch
new file mode 100644
index 000000000000..fd86da8a1298
--- /dev/null
+++ b/pkgs/servers/bird/dont-create-sysconfdir-2.patch
@@ -0,0 +1,13 @@
+diff --git a/Makefile.in b/Makefile.in
+index fdd5e6c..45f81a1 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -165,7 +165,7 @@ tags:
+ # Install
+ 
+ install: all
+-	$(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir) $(DESTDIR)/@runtimedir@
++	$(INSTALL) -d $(DESTDIR)/$(sbindir) $(DESTDIR)/$(sysconfdir)
+ 	$(INSTALL_PROGRAM) $(exedir)/bird $(DESTDIR)/$(sbindir)/bird
+ 	$(INSTALL_PROGRAM) $(exedir)/birdcl $(DESTDIR)/$(sbindir)/birdcl
+ 	if test -n "@CLIENT@" ; then								\
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8e502393f9f5..716ca74e015c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11915,8 +11915,8 @@ with pkgs;
   bind = callPackage ../servers/dns/bind { };
   dnsutils = bind.dnsutils;
 
-  bird = callPackage ../servers/bird { };
-  bird6 = bird.override { enableIPv6 = true; };
+  inherit (callPackages ../servers/bird { })
+    bird bird6 bird2;
 
   bosun = callPackage ../servers/monitoring/bosun { };
   scollector = bosun;