about summary refs log tree commit diff
path: root/pkgs/servers/zoneminder/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/zoneminder/default.nix')
-rw-r--r--pkgs/servers/zoneminder/default.nix185
1 files changed, 0 insertions, 185 deletions
diff --git a/pkgs/servers/zoneminder/default.nix b/pkgs/servers/zoneminder/default.nix
deleted file mode 100644
index 11da0612260a..000000000000
--- a/pkgs/servers/zoneminder/default.nix
+++ /dev/null
@@ -1,185 +0,0 @@
-{ stdenv, lib, fetchFromGitHub, fetchurl, cmake, makeWrapper, pkg-config
-, curl, ffmpeg, glib, libjpeg, libselinux, libsepol, mp4v2, libmysqlclient, mariadb, pcre, perl, perlPackages
-, polkit, util-linuxMinimal, x264, zlib
-, coreutils, procps, psmisc, nixosTests }:
-
-# NOTES:
-#
-# 1. ZM_CONFIG_DIR is set to $out/etc/zoneminder as the .conf file distributed
-# by upstream contains defaults and is not supposed to be edited so it is fine
-# to keep it read-only.
-#
-# 2. ZM_CONFIG_SUBDIR is where we place our configuration from the NixOS module
-# but as the installer will try to put files there, we patch Config.pm after the
-# install.
-#
-# 3. ZoneMinder is run with -T passed to the perl interpreter which makes perl
-# ignore PERL5LIB. We therefore have to do the substitution into -I parameters
-# ourselves which results in ugly wrappers.
-#
-# 4. The makefile for the perl modules needs patching to put things into the
-# right place. That also means we have to not run "make install" for them.
-#
-# 5. In principal the various ZM_xx variables should be overridable from the
-# config file but some of them are baked into the perl scripts, so we *have* to
-# set them here instead of in the configuration in the NixOS module.
-#
-# 6. I am no PolicyKit expert but the .policy file looks fishy:
-#   a. The user needs to be known at build-time so we should probably throw
-#   upstream's policy file away and generate it from the NixOS module
-#   b. I *think* we may have to substitute the store paths with
-#   /run/current-system/sw/bin paths for it to work.
-#
-# 7. we manually fix up the perl paths in the scripts as fixupPhase will only
-# handle pkexec and not perl if both are present.
-#
-# 8. There are several perl modules needed at runtime which are not checked when
-# building so if a new version stops working, check if there is a missing
-# dependency by running the failing component manually.
-#
-# 9. Parts of the web UI has a hardcoded /zm path so we create a symlink to work
-# around it.
-
-let
-  addons = [
-    {
-      path = "scripts/ZoneMinder/lib/ZoneMinder/Control/Xiaomi.pm";
-      src = fetchurl {
-        url = "https://gist.githubusercontent.com/joshstrange/73a2f24dfaf5cd5b470024096ce2680f/raw/e964270c5cdbf95e5b7f214f7f0fc6113791530e/Xiaomi.pm";
-        sha256 = "04n1ap8fx66xfl9q9rypj48pzbgzikq0gisfsfm8wdsmflarz43v";
-      };
-    }
-  ];
-
-  user    = "zoneminder";
-  dirName = "zoneminder";
-  perlBin = "${perl}/bin/perl";
-
-in stdenv.mkDerivation rec {
-  pname = "zoneminder";
-  version = "1.36.33";
-
-  src = fetchFromGitHub {
-    owner  = "ZoneMinder";
-    repo   = "zoneminder";
-    rev    = version;
-    hash = "sha256-KUhFZrF7BuLB2Z3LnTcHEEZVA6iosam6YsOd8KWvx7E=";
-    fetchSubmodules = true;
-  };
-
-  patches = [
-    ./default-to-http-1dot1.patch
-    ./0001-Don-t-use-file-timestamp-in-cache-filename.patch
-  ];
-
-  postPatch = ''
-    rm -rf web/api/lib/Cake/Test
-
-    ${lib.concatStringsSep "\n" (map (e: ''
-      cp ${e.src} ${e.path}
-    '') addons)}
-
-    for d in scripts/ZoneMinder onvif/{modules,proxy} ; do
-      substituteInPlace $d/CMakeLists.txt \
-        --replace 'DESTDIR="''${CMAKE_CURRENT_BINARY_DIR}/output"' "PREFIX=$out INSTALLDIRS=site"
-      sed -i '/^install/d' $d/CMakeLists.txt
-    done
-
-    substituteInPlace misc/CMakeLists.txt \
-      --replace '"''${PC_POLKIT_PREFIX}/''${CMAKE_INSTALL_DATAROOTDIR}' "\"$out/share"
-
-    for f in misc/*.policy.in \
-             scripts/*.pl* \
-             scripts/ZoneMinder/lib/ZoneMinder/Memory.pm.in ; do
-      substituteInPlace $f \
-        --replace '/usr/bin/perl' '${perlBin}' \
-        --replace '/bin:/usr/bin' "$out/bin:${lib.makeBinPath [ coreutils procps psmisc ]}"
-    done
-
-    substituteInPlace scripts/zmdbbackup.in \
-      --replace /usr/bin/mysqldump ${mariadb.client}/bin/mysqldump
-
-    substituteInPlace scripts/zmupdate.pl.in \
-      --replace "'mysql'" "'${mariadb.client}/bin/mysql'" \
-      --replace "'mysqldump'" "'${mariadb.client}/bin/mysqldump'"
-
-    for f in scripts/ZoneMinder/lib/ZoneMinder/Config.pm.in \
-             scripts/zmupdate.pl.in \
-             src/zm_config_data.h.in \
-             web/api/app/Config/bootstrap.php.in \
-             web/includes/config.php.in ; do
-      substituteInPlace $f --replace @ZM_CONFIG_SUBDIR@ /etc/zoneminder
-    done
-
-    for f in includes/Event.php views/image.php ; do
-      substituteInPlace web/$f \
-        --replace "'ffmpeg " "'${ffmpeg}/bin/ffmpeg "
-    done
-
-    for f in scripts/ZoneMinder/lib/ZoneMinder/Event.pm \
-             scripts/ZoneMinder/lib/ZoneMinder/Storage.pm ; do
-      substituteInPlace $f \
-        --replace '/bin/rm' "${coreutils}/bin/rm"
-    done
-
-    substituteInPlace web/includes/functions.php \
-      --replace "'date " "'${coreutils}/bin/date " \
-      --subst-var-by srcHash "`basename $out`"
-  '';
-
-  buildInputs = [
-    curl ffmpeg glib libjpeg libselinux libsepol mp4v2 libmysqlclient mariadb pcre perl polkit x264 zlib
-    util-linuxMinimal # for libmount
-  ] ++ (with perlPackages; [
-    # build-time dependencies
-    DateManip DBI DBDmysql LWP SysMmap
-    # run-time dependencies not checked at build-time
-    ClassStdFast DataDump DeviceSerialPort JSONMaybeXS LWPProtocolHttps NumberBytesHuman SysCPU SysMemInfo TimeDate
-    CryptEksblowfish DataEntropy # zmupdate.pl
-  ]);
-
-  nativeBuildInputs = [ cmake makeWrapper pkg-config ];
-
-  cmakeFlags = [
-    "-DWITH_SYSTEMD=ON"
-    "-DZM_LOGDIR=/var/log/${dirName}"
-    "-DZM_RUNDIR=/run/${dirName}"
-    "-DZM_SOCKDIR=/run/${dirName}"
-    "-DZM_TMPDIR=/tmp/${dirName}"
-    "-DZM_CONFIG_DIR=${placeholder "out"}/etc/zoneminder"
-    "-DZM_WEB_USER=${user}"
-    "-DZM_WEB_GROUP=${user}"
-  ];
-
-  passthru = {
-    inherit dirName;
-    tests = nixosTests.zoneminder;
-  };
-
-  postInstall = ''
-    PERL5LIB="$PERL5LIB''${PERL5LIB:+:}$out/${perl.libPrefix}"
-
-    perlFlags="-wT"
-    for i in $(IFS=$'\n'; echo $PERL5LIB | tr ':' "\n" | sort -u); do
-      perlFlags="$perlFlags -I$i"
-    done
-
-    mkdir -p $out/libexec
-    for f in $out/bin/*.pl ; do
-      mv $f $out/libexec/
-      makeWrapper ${perlBin} $f \
-        --prefix PATH : $out/bin \
-        --add-flags "$perlFlags $out/libexec/$(basename $f)"
-    done
-
-    ln -s $out/share/zoneminder/www $out/share/zoneminder/www/zm
-  '';
-
-  meta = with lib; {
-    description = "Video surveillance software system";
-    homepage = "https://zoneminder.com";
-    license = licenses.gpl3;
-    maintainers = [ ];
-    platforms = platforms.unix;
-  };
-}