about summary refs log tree commit diff
path: root/pkgs/servers/unifi/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/unifi/default.nix')
-rw-r--r--pkgs/servers/unifi/default.nix73
1 files changed, 51 insertions, 22 deletions
diff --git a/pkgs/servers/unifi/default.nix b/pkgs/servers/unifi/default.nix
index 5d0e7455d946..9002987c387b 100644
--- a/pkgs/servers/unifi/default.nix
+++ b/pkgs/servers/unifi/default.nix
@@ -1,32 +1,61 @@
-{ stdenv, fetchurl, unzip }:
+{ stdenv, dpkg, fetchurl }:
 
-stdenv.mkDerivation rec {
-  name = "unifi-controller-${version}";
-  version = "4.7.5";
+let
+  generic = { version, sha256, suffix ? "" }:
+  stdenv.mkDerivation rec {
+    name = "unifi-controller-${version}";
 
-  src = fetchurl {
-    url = "http://dl.ubnt.com/unifi/${version}/UniFi.unix.zip";
-    sha256 = "1d5jkpwnz4wvcjr5i73m8i5aah6rkxwd0r9239l90v1ja9lkyk7w";
+    src = fetchurl {
+      url = "https://dl.ubnt.com/unifi/${version}${suffix}/unifi_sysvinit_all.deb";
+      inherit sha256;
+    };
+
+    nativeBuildInputs = [ dpkg ];
+
+    unpackPhase = ''
+      runHook preUnpack
+      dpkg-deb -x $src ./
+      runHook postUnpack
+    '';
+
+    doConfigure = false;
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out
+      cd ./usr/lib/unifi
+      cp -ar dl lib webapps $out
+
+      runHook postInstall
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = http://www.ubnt.com/;
+      description = "Controller for Ubiquiti UniFi access points";
+      license = licenses.unfree;
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ wkennington ];
+    };
   };
 
-  buildInputs = [ unzip ];
+in rec {
 
-  doConfigure = false;
+  # https://help.ubnt.com/hc/en-us/articles/115000441548-UniFi-Current-Controller-Versions
 
-  buildPhase = ''
-    rm -rf bin conf readme.txt
-  '';
+  unifiLTS = generic {
+    version = "5.6.37";
+    sha256  = "0kiksqsbmmfva1blbpg2wl4c3w7j6dzzqmwp6028g7bh303c47qa";
+  };
 
-  installPhase = ''
-    mkdir -p $out
-    cp -ar * $out
-  '';
+  unifiStable = generic {
+    version = "5.7.23";
+    sha256  = "14jkhp9jl341zsyk5adh3g98mhqwfbd42c7wahzc31bxq8a0idp7";
+  };
 
-  meta = with stdenv.lib; {
-    homepage = http://www.ubnt.com/;
-    description = "Controller for Ubiquiti UniFi accesspoints";
-    license = licenses.unfree;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ wkennington ];
+  unifiTesting = generic {
+    version = "5.8.14";
+    suffix  = "-7ef9535d1b";
+    sha256  = "09gr7zkck6npjhhmd27c9ymyna6anwj3w9v9zjicz9skbrddkccq";
   };
 }