From 910049d8ffe5d673022e782520ff6e335cacc7b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 29 Feb 2016 16:06:26 +0100 Subject: [PATCH 1/6] perlPackages.ArchiveTar: generate-from-cpan --- pkgs/top-level/perl-packages.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index af668f5251a..2fda895ce82 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -370,6 +370,18 @@ let self = _self // overrides; _self = with self; { }; }; + ArchiveTar = buildPerlPackage { + name = "Archive-Tar-2.04"; + src = fetchurl { + url = mirror://cpan/authors/id/B/BI/BINGOS/Archive-Tar-2.04.tar.gz; + sha256 = "c3741bba06a468a5a4db6a79d772c55cf2f6673cf33241a6e6a758707a71d293"; + }; + meta = { + description = "Manipulates TAR archives"; + license = "perl"; + }; + }; + ArchiveZip = buildPerlPackage { name = "Archive-Zip-1.16"; src = fetchurl { From fd09362c1d72a783308e05f8d7cfa525c7b0f371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 29 Feb 2016 16:12:47 +0100 Subject: [PATCH 2/6] perlPackages.IOSocketIP: nix-generate-from-cpan --- pkgs/top-level/perl-packages.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 2fda895ce82..3a664de7d2a 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -6089,6 +6089,18 @@ let self = _self // overrides; _self = with self; { }; }; + IOSocketIP = buildPerlPackage { + name = "IO-Socket-IP-0.37"; + src = fetchurl { + url = mirror://cpan/authors/id/P/PE/PEVANS/IO-Socket-IP-0.37.tar.gz; + sha256 = "2adc5f0b641d41f662b4d99c0795780c62f9af9119884d053265fc8858ae6f7b"; + }; + meta = { + description = "Family-neutral IP socket supporting both IPv4 and IPv6"; + license = "perl"; + }; + }; + IOSocketInet6 = buildPerlPackage rec { name = "IO-Socket-INET6-2.72"; src = fetchurl { From 87fcd97ceaf7e9467ebe2e2a5b2e6032df87c90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 29 Feb 2016 16:30:34 +0100 Subject: [PATCH 3/6] perlPackages.FCGIProcManager: nix-generate-from-cpan --- pkgs/top-level/perl-packages.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 3a664de7d2a..49b36864bb5 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -4694,6 +4694,18 @@ let self = _self // overrides; _self = with self; { buildInputs = [ ]; }; + FCGIProcManager = buildPerlPackage { + name = "FCGI-ProcManager-0.25"; + src = fetchurl { + url = mirror://cpan/authors/id/A/AR/ARODLAND/FCGI-ProcManager-0.25.tar.gz; + sha256 = "b9ae1146e2638f3aa477c9ab3ceb728f92c5e36e4cce8f0b5847efad601d024d"; + }; + meta = { + description = "A perl-based FastCGI process manager"; + license = "unknown"; + }; + }; + FennecLite = buildPerlModule { name = "Fennec-Lite-0.004"; src = fetchurl { From 7974c7d6a1291d342269f4843cee7ab2e4d8f796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 29 Feb 2016 16:30:59 +0100 Subject: [PATCH 4/6] perlPackages.LocaleMsgfmt: nix-generate-from-cpan --- pkgs/top-level/perl-packages.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 49b36864bb5..4772480c64a 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -6764,6 +6764,18 @@ let self = _self // overrides; _self = with self; { }; }; + LocaleMsgfmt = buildPerlPackage { + name = "Locale-Msgfmt-0.15"; + src = fetchurl { + url = mirror://cpan/authors/id/A/AZ/AZAWAWI/Locale-Msgfmt-0.15.tar.gz; + sha256 = "c3276831cbeecf58be02081bcc180bd348daa35da21a7737b7b038a59f643ab4"; + }; + meta = { + description = "Compile .po files to .mo files"; + license = "perl"; + }; + }; + LocalePO = buildPerlPackage { name = "Locale-PO-0.23"; src = fetchurl { From 15030ed2917c206a28b5b5ba8be6a644fb7d3306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Tue, 1 Mar 2016 10:43:54 +0100 Subject: [PATCH 5/6] foswiki: init the package at 2.1.0 --- pkgs/servers/foswiki/default.nix | 42 ++++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 44 insertions(+) create mode 100644 pkgs/servers/foswiki/default.nix diff --git a/pkgs/servers/foswiki/default.nix b/pkgs/servers/foswiki/default.nix new file mode 100644 index 00000000000..c5831325958 --- /dev/null +++ b/pkgs/servers/foswiki/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, perlPackages }: + +perlPackages.buildPerlPackage rec { + name = "foswiki-${version}"; + version = "2.1.0"; + + src = fetchurl { + url = "mirror://sourceforge/foswiki/${version}/Foswiki-${version}.tgz"; + sha256 = "03286pb966h99zgickm2f20rgnqwp9wga5wfkdvirv084kjdh8vp"; + }; + + buildInputs = with perlPackages; [ + # minimum requirements from INSTALL.html#System_Requirements + AlgorithmDiff ArchiveTar AuthenSASL CGI CGISession CryptPasswdMD5 + DigestSHA EmailMIME Encode Error FileCopyRecursive HTMLParser HTMLTree + IOSocketIP IOSocketSSL JSON + LocaleMaketext LocaleMaketextLexicon LocaleMsgfmt + LWP URI perlPackages.version + /*# optional dependencies + libapreq2 DBI DBDmysql DBDPg DBDSQLite FCGI FCGIProcManager + CryptSMIME CryptX509 ConvertPEM + */ + ]; + + preConfigure = '' + touch Makefile.PL + patchShebangs . + ''; + configureScript = "bin/configure"; + + # there's even no makefile + doCheck = false; + installPhase = ''cp -r . "$out" ''; # TODO: some fixups will be needed for running it + + meta = with stdenv.lib; { + description = "An open, programmable collaboration platform"; + homepage = http://foswiki.org; + license = licenses.gpl2Plus; + platforms = platforms.linux; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 507fb957a84..ac33fb72b59 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9570,6 +9570,8 @@ let fleet = callPackage ../servers/fleet { }; + foswiki = callPackage ../servers/foswiki { }; + freepops = callPackage ../servers/mail/freepops { }; freeswitch = callPackage ../servers/sip/freeswitch { }; From 1952d5d5f7c1d02ec5a64940bdc144b5e419bca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Fri, 4 Mar 2016 15:14:39 +0100 Subject: [PATCH 6/6] nixos/foswiki: basic working service definition Activation is as simple as: services.httpd = { enable = true; adminAddr = "nobody@example.com"; extraSubservices = [ { serviceType = "foswiki"; } ]; }; --- .../web-servers/apache-httpd/foswiki.nix | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 nixos/modules/services/web-servers/apache-httpd/foswiki.nix diff --git a/nixos/modules/services/web-servers/apache-httpd/foswiki.nix b/nixos/modules/services/web-servers/apache-httpd/foswiki.nix new file mode 100644 index 00000000000..8c1ac8935a4 --- /dev/null +++ b/nixos/modules/services/web-servers/apache-httpd/foswiki.nix @@ -0,0 +1,78 @@ +{ config, pkgs, lib, serverInfo, ... }: +let + inherit (pkgs) foswiki; + inherit (serverInfo.serverConfig) user group; + inherit (config) vardir; +in +{ + options.vardir = lib.mkOption { + type = lib.types.path; + default = "/var/www/foswiki"; + description = "The directory where variable foswiki data will be stored and served from."; + }; + + # TODO: this will probably need to be better customizable + extraConfig = + let httpd-conf = pkgs.runCommand "foswiki-httpd.conf" + { preferLocalBuild = true; } + '' + substitute '${foswiki}/foswiki_httpd_conf.txt' "$out" \ + --replace /var/www/foswiki/ "${vardir}/" + ''; + in + '' + RewriteEngine on + RewriteRule /foswiki/(.*) ${vardir}/$1 + + + Require all granted + + + Include ${httpd-conf} + + Options FollowSymlinks + + ''; + + /** This handles initial setup and updates. + It will probably need some tweaking, maybe per-site. */ + startupScript = pkgs.writeScript "foswiki_startup.sh" ( + let storeLink = "${vardir}/package"; in + '' + [ -e '${storeLink}' ] || needs_setup=1 + mkdir -p '${vardir}' + cd '${vardir}' + ln -sf -T '${foswiki}' '${storeLink}' + + if [ -n "$needs_setup" ]; then # do initial setup + mkdir -p bin lib + # setup most of data/ as copies only + cp -r '${foswiki}'/data '${vardir}/' + rm -r '${vardir}'/data/{System,mime.types} + ln -sr -t '${vardir}/data/' '${storeLink}'/data/{System,mime.types} + + ln -sr '${storeLink}/locale' . + + mkdir pub + ln -sr '${storeLink}/pub/System' pub/ + + mkdir templates + ln -sr '${storeLink}'/templates/* templates/ + + ln -sr '${storeLink}/tools' . + + mkdir -p '${vardir}'/working/{logs,tmp} + ln -sr '${storeLink}/working/README' working/ # used to check dir validity + + chown -R '${user}:${group}' . + chmod +w -R . + fi + + # bin/* and lib/* shall always be overwritten, in case files are added + ln -srf '${storeLink}'/bin/* '${vardir}/bin/' + ln -srf '${storeLink}'/lib/* '${vardir}/lib/' + '' + /* Symlinking bin/ one-by-one ensures that ${vardir}/lib/LocalSite.cfg + is used instead of ${foswiki}/... */ + ); +}