summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2018-09-02 23:31:26 +0200
committerProfpatsch <mail@profpatsch.de>2018-09-06 11:53:22 +0200
commit0071ae1d4f1a18542b19a815d06d2b7bbf292dd4 (patch)
treeb6c94409341b69786743eeef397e2ab86c315585 /pkgs
parent57b431590b3c555469f4ebeffa2dc524ef806293 (diff)
downloadnixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar.gz
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar.bz2
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar.lz
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar.xz
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.tar.zst
nixpkgs-0071ae1d4f1a18542b19a815d06d2b7bbf292dd4.zip
skawarePackages: factor out the common parts
Introduce a `skawarePackages.buildPackage` function that contains the
common setup, removing a lot of duplication.
In particular, we require that the build directory has to be empty
after the `fixupPhase`, to make sure every relevant file is moved to
the outputs.

A next step would be to deduplicate the `configureFlags` attributes
and only require a `skawareInputs` field.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/build-support/skaware/build-skaware-package.nix128
-rw-r--r--pkgs/development/libraries/skalibs/default.nix45
-rw-r--r--pkgs/os-specific/linux/s6-linux-utils/default.nix34
-rw-r--r--pkgs/tools/misc/execline/default.nix39
-rw-r--r--pkgs/tools/misc/s6-portable-utils/default.nix42
-rw-r--r--pkgs/tools/networking/s6-dns/default.nix40
-rw-r--r--pkgs/tools/networking/s6-networking/default.nix41
-rw-r--r--pkgs/tools/system/s6-rc/default.nix40
-rw-r--r--pkgs/tools/system/s6/default.nix40
-rw-r--r--pkgs/top-level/all-packages.nix2
10 files changed, 228 insertions, 223 deletions
diff --git a/pkgs/build-support/skaware/build-skaware-package.nix b/pkgs/build-support/skaware/build-skaware-package.nix
new file mode 100644
index 00000000000..5f6951cb25f
--- /dev/null
+++ b/pkgs/build-support/skaware/build-skaware-package.nix
@@ -0,0 +1,128 @@
+{ stdenv, fetchgit, writeScript, file }:
+let lib = stdenv.lib;
+in {
+  # : string
+  pname
+  # : string
+, version
+  # : string
+, sha256
+  # : string
+, description
+  # : list Platform
+, platforms ? lib.platforms.all
+  # : list string
+, outputs ? [ "bin" "lib" "dev" "doc" "out" ]
+  # TODO(Profpatsch): automatically infer most of these
+  # : list string
+, configureFlags
+  # mostly for moving and deleting files from the build directory
+  # : lines
+, postInstall
+  # : list Maintainer
+, maintainers ? []
+
+
+}:
+
+let
+
+  # File globs that can always be deleted
+  commonNoiseFiles = [
+    ".gitignore"
+    "Makefile"
+    "INSTALL"
+    "configure"
+    "patch-for-solaris"
+    "src/**/*"
+    "tools/**/*"
+    "package/**/*"
+    "config.mak"
+  ];
+
+  # File globs that should be moved to $doc
+  commonMetaFiles = [
+    "COPYING"
+    "AUTHORS"
+    "NEWS"
+    "CHANGELOG"
+    "README"
+    "README.*"
+  ];
+
+  globWith = stdenv.lib.concatMapStringsSep "\n";
+  rmNoise = globWith (f:
+    ''rm -rf ${f}'') commonNoiseFiles;
+  mvMeta = globWith
+    (f: ''mv ${f} "$DOCDIR" 2>/dev/null || true'')
+    commonMetaFiles;
+
+  # Move & remove actions, taking the package doc directory
+  commonFileActions = writeScript "common-file-actions.sh" ''
+    #!${stdenv.shell}
+    set -e
+    DOCDIR="$1"
+    shopt -s globstar extglob nullglob
+    ${rmNoise}
+    mkdir -p "$DOCDIR"
+    ${mvMeta}
+  '';
+
+
+in stdenv.mkDerivation {
+  name = "${pname}-${version}";
+
+  src = fetchgit {
+    url = "git://git.skarnet.org/${pname}";
+    rev = "refs/tags/v${version}";
+    inherit sha256;
+  };
+
+  inherit outputs;
+
+  dontDisableStatic = true;
+  enableParallelBuilding = true;
+
+  configureFlags = configureFlags ++ [
+    "--enable-absolute-paths"
+    (if stdenv.isDarwin
+      then "--disable-shared"
+      else "--enable-shared")
+  ]
+    # On darwin, the target triplet from -dumpmachine includes version number,
+    # but skarnet.org software uses the triplet to test binary compatibility.
+    # Explicitly setting target ensures code can be compiled against a skalibs
+    # binary built on a different version of darwin.
+    # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph
+    ++ (lib.optional stdenv.isDarwin
+         "--build=${stdenv.hostPlatform.system}");
+
+  # TODO(Profpatsch): ensure that there is always a $doc output!
+  postInstall = ''
+    echo "Cleaning & moving common files"
+    mkdir -p $doc/share/doc/${pname}
+    ${commonFileActions} $doc/share/doc/${pname}
+
+    ${postInstall}
+  '';
+
+  postFixup = ''
+    echo "Checking for remaining source files"
+    rem=$(find -mindepth 1 -xtype f -print0 \
+           | tee $TMP/remaining-files)
+    if [[ "$rem" != "" ]]; then
+      echo "ERROR: These files should be either moved or deleted:"
+      cat $TMP/remaining-files | xargs -0 ${file}/bin/file
+      exit 1
+    fi
+  '';
+
+  meta = {
+    homepage = "https://skarnet.org/software/${pname}/";
+    inherit description platforms;
+    license = stdenv.lib.licenses.isc;
+    maintainers = with lib.maintainers;
+      [ pmahoney Profpatsch ] ++ maintainers;
+  };
+
+}
diff --git a/pkgs/development/libraries/skalibs/default.nix b/pkgs/development/libraries/skalibs/default.nix
index 85b1b060700..98977381f0f 100644
--- a/pkgs/development/libraries/skalibs/default.nix
+++ b/pkgs/development/libraries/skalibs/default.nix
@@ -1,51 +1,30 @@
-{ stdenv, fetchgit }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "skalibs";
   version = "2.7.0.0";
+  sha256 = "068pkbl91mi35amlhv491dwrbzyfifrlxijss0g2vf693xvx6lxm";
 
-in stdenv.mkDerivation rec {
-
-  name = "skalibs-${version}";
-
-  src = fetchgit {
-    url = "git://git.skarnet.org/skalibs";
-    rev = "refs/tags/v${version}";
-    sha256 = "068pkbl91mi35amlhv491dwrbzyfifrlxijss0g2vf693xvx6lxm";
-  };
+  description = "A set of general-purpose C programming libraries";
 
   outputs = [ "lib" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   configureFlags = [
-    "--enable-force-devr"       # assume /dev/random works
+    # assume /dev/random works
+    "--enable-force-devr"
     "--libdir=\${lib}/lib"
     "--dynlibdir=\${lib}/lib"
     "--includedir=\${dev}/include"
     "--sysdepdir=\${lib}/lib/skalibs/sysdeps"
-  ]
-  ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ])
-  # On darwin, the target triplet from -dumpmachine includes version number, but
-  # skarnet.org software uses the triplet to test binary compatibility.
-  # Explicitly setting target ensures code can be compiled against a skalibs
-  # binary built on a different version of darwin.
-  # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/skalibs
+    rm -rf sysdeps.cfg
+    rm libskarnet.*
+
     mv doc $doc/share/doc/skalibs/html
   '';
 
-  meta = {
-    homepage = http://skarnet.org/software/skalibs/;
-    description = "A set of general-purpose C programming libraries";
-    platforms = stdenv.lib.platforms.all;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix
index 1c07dd6f054..95dd3736c04 100644
--- a/pkgs/os-specific/linux/s6-linux-utils/default.nix
+++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix
@@ -1,25 +1,19 @@
-{ stdenv, fetchurl, skalibs }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "s6-linux-utils";
   version = "2.5.0.0";
+  sha256 = "0wbxwki2alyym6dm44s5ajp9ndw6sgrqvizkznz71c30i0dlxrnf";
 
-in stdenv.mkDerivation rec {
-
-  name = "s6-linux-utils-${version}";
-
-  src = fetchurl {
-    url = "https://www.skarnet.org/software/s6-linux-utils/${name}.tar.gz";
-    sha256 = "04q2z71dkzahd2ppga2zikclz2qk014c23gm7rigqxjc8rs1amvq";
-  };
+  description = "A set of minimalistic Linux-specific system utilities";
+  platforms = stdenv.lib.platforms.linux;
 
   outputs = [ "bin" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
   # TODO: nsss support
   configureFlags = [
-    "--enable-absolute-paths"
     "--bindir=\${bin}/bin"
     "--includedir=\${dev}/include"
     "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps"
@@ -29,16 +23,10 @@ in stdenv.mkDerivation rec {
   ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6-networking/
-    mv doc $doc/share/doc/s6-networking/html
-  '';
+    # remove all s6 executables from build directory
+    rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable)
 
-  meta = {
-    homepage = http://www.skarnet.org/software/s6-linux-utils/;
-    description = "A set of minimalistic Linux-specific system utilities";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
+    mv doc $doc/share/doc/s6-linux-utils/html
+  '';
 
 }
diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix
index 70301cc89e6..00faab0a66f 100644
--- a/pkgs/tools/misc/execline/default.nix
+++ b/pkgs/tools/misc/execline/default.nix
@@ -1,28 +1,18 @@
-{ stdenv, fetchgit, skalibs }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "execline";
   version = "2.5.0.1";
+  sha256 = "0d4gvixz7xja03hnwc2bf13xrgh1jq27ij4m1jlrpgrzhfpqz37q";
 
-in stdenv.mkDerivation rec {
-
-  name = "execline-${version}";
-
-  src = fetchgit {
-    url = "git://git.skarnet.org/execline";
-    rev = "refs/tags/v${version}";
-    sha256 = "0d4gvixz7xja03hnwc2bf13xrgh1jq27ij4m1jlrpgrzhfpqz37q";
-  };
+  description = "A small scripting language, to be used in place of a shell in non-interactive scripts";
 
   outputs = [ "bin" "lib" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   # TODO: nsss support
   configureFlags = [
-    "--enable-absolute-paths"
     "--libdir=\${lib}/lib"
     "--dynlibdir=\${lib}/lib"
     "--bindir=\${bin}/bin"
@@ -31,22 +21,15 @@ in stdenv.mkDerivation rec {
     "--with-include=${skalibs.dev}/include"
     "--with-lib=${skalibs.lib}/lib"
     "--with-dynlib=${skalibs.lib}/lib"
-  ]
-  ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ])
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/execline
+    # remove all execline executables from build directory
+    rm $(find -type f -mindepth 1 -maxdepth 1 -executable)
+    rm libexecline.*
+
     mv doc $doc/share/doc/execline/html
     mv examples $doc/share/doc/execline/examples
   '';
 
-  meta = {
-    homepage = http://skarnet.org/software/execline/;
-    description = "A small scripting language, to be used in place of a shell in non-interactive scripts";
-    platforms = stdenv.lib.platforms.all;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix
index c11bd13c799..04874dedc6e 100644
--- a/pkgs/tools/misc/s6-portable-utils/default.nix
+++ b/pkgs/tools/misc/s6-portable-utils/default.nix
@@ -1,47 +1,35 @@
-{ stdenv, fetchurl, skalibs }:
+{ stdenv, skawarePackages }:
 
-with stdenv.lib;
+with skawarePackages;
 
-stdenv.mkDerivation rec {
-  name = "s6-portable-utils-${version}";
+let
+  pname = "s6-portable-utils";
+
+in buildPackage {
+  pname = pname;
   version = "2.2.1.2";
+  sha256 = "1zfanja5mbyafmzw28dlx1bb3fixa7lidbs62sxf849ly3z0zqp2";
 
-  src = fetchurl {
-    url = "https://www.skarnet.org/software/s6-portable-utils/${name}.tar.gz";
-    sha256 = "0if77z07rfygd1yk9d2abxkdbx3dg52vcjhb20isb8kvqxhkg8ih";
-  };
+  description = "A set of tiny general Unix utilities optimized for simplicity and small size";
 
   outputs = [ "bin" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
   configureFlags = [
-    "--enable-absolute-paths"
     "--bindir=\${bin}/bin"
     "--includedir=\${dev}/include"
     "--with-sysdeps=${skalibs.lib}/lib/skalibs/sysdeps"
     "--with-include=${skalibs.dev}/include"
     "--with-lib=${skalibs.lib}/lib"
     "--with-dynlib=${skalibs.lib}/lib"
-  ]
-  # On darwin, the target triplet from -dumpmachine includes version number, but
-  # skarnet.org software uses the triplet to test binary compatibility.
-  # Explicitly setting target ensures code can be compiled against a skalibs
-  # binary built on a different version of darwin.
-  # http://www.skarnet.org/cgi-bin/archive.cgi?1:mss:623:heiodchokfjdkonfhdph
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6-portable-utils/
-    mv doc $doc/share/doc/s6-portable-utils/html
+    # remove all s6 executables from build directory
+    rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable)
+    rm seekablepipe
+
+    mv doc $doc/share/doc/${pname}/html
   '';
 
-  meta = {
-    homepage = http://www.skarnet.org/software/s6-portable-utils/;
-    description = "A set of tiny general Unix utilities optimized for simplicity and small size";
-    platforms = platforms.all;
-    license = licenses.isc;
-    maintainers = with maintainers; [ pmahoney Profpatsch ];
-  };
 
 }
diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix
index ee669b8f928..6d514d56ed3 100644
--- a/pkgs/tools/networking/s6-dns/default.nix
+++ b/pkgs/tools/networking/s6-dns/default.nix
@@ -1,27 +1,17 @@
-{ stdenv, fetchgit, skalibs }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "s6-dns";
   version = "2.3.0.1";
+  sha256 = "0flxkrnff2c28514k2nxv2y41k38pbiwd8dxlqaxgs2cl27i0ggb";
 
-in stdenv.mkDerivation rec {
-
-  name = "s6-dns-${version}";
-
-  src = fetchgit {
-    url = "git://git.skarnet.org/s6-dns";
-    rev = "refs/tags/v${version}";
-    sha256 = "0flxkrnff2c28514k2nxv2y41k38pbiwd8dxlqaxgs2cl27i0ggb";
-  };
+  description = "A suite of DNS client programs and libraries for Unix systems";
 
   outputs = [ "bin" "lib" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   configureFlags = [
-    "--enable-absolute-paths"
     "--libdir=\${lib}/lib"
     "--libexecdir=\${lib}/libexec"
     "--dynlibdir=\${lib}/lib"
@@ -31,21 +21,15 @@ in stdenv.mkDerivation rec {
     "--with-include=${skalibs.dev}/include"
     "--with-lib=${skalibs.lib}/lib"
     "--with-dynlib=${skalibs.lib}/lib"
-  ]
-  ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ])
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6-dns/
+    # remove all s6-dns executables from build directory
+    rm $(find -type f -mindepth 1 -maxdepth 1 -executable)
+    rm libs6dns.*
+    rm libskadns.*
+
     mv doc $doc/share/doc/s6-dns/html
   '';
 
-  meta = {
-    homepage = http://www.skarnet.org/software/s6-dns/;
-    description = "A suite of DNS client programs and libraries for Unix systems";
-    platforms = stdenv.lib.platforms.all;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix
index d96cff167d9..032287ece83 100644
--- a/pkgs/tools/networking/s6-networking/default.nix
+++ b/pkgs/tools/networking/s6-networking/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, execline, fetchgit, s6, s6-dns, skalibs
+{ stdenv, skawarePackages
 
 # Whether to build the TLS/SSL tools and what library to use
 # acceptable values: "libressl", false
@@ -6,11 +6,9 @@
 , sslSupport ? "libressl" , libressl
 }:
 
+with skawarePackages;
 let
   inherit (stdenv) lib;
-
-  version = "2.3.0.3";
-
   sslSupportEnabled = sslSupport != false;
   sslLibs = {
     "libressl" = libressl;
@@ -19,25 +17,18 @@ let
 in
 assert sslSupportEnabled -> sslLibs ? ${sslSupport};
 
-stdenv.mkDerivation rec {
 
-  name = "s6-networking-${version}";
+buildPackage {
+  pname = "s6-networking";
+  version = "2.3.0.3";
+  sha256 = "06kv2l31ch0zw538bpivgnwymb056x5hpmqafglffgkbq3izp7wc";
 
-  src = fetchgit {
-    url = "git://git.skarnet.org/s6-networking";
-    rev = "refs/tags/v${version}";
-    sha256 = "06kv2l31ch0zw538bpivgnwymb056x5hpmqafglffgkbq3izp7wc";
-  };
+  description = "A suite of small networking utilities for Unix systems";
 
   outputs = [ "bin" "lib" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   # TODO: nsss support
   configureFlags = [
-    "--enable-absolute-paths"
     "--libdir=\${lib}/lib"
     "--libexecdir=\${lib}/libexec"
     "--dynlibdir=\${lib}/lib"
@@ -61,20 +52,16 @@ stdenv.mkDerivation rec {
        "--enable-ssl=${sslSupport}"
        "--with-include=${lib.getDev sslLibs.${sslSupport}}/include"
        "--with-lib=${lib.getLib sslLibs.${sslSupport}}/lib"
-     ])
-  ++ (lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+       "--with-dynlib=${lib.getLib sslLibs.${sslSupport}}/lib"
+     ]);
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6-networking/
+    # remove all s6 executables from build directory
+    rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable)
+    rm minidentd
+    rm libs6net.* libstls.*
+
     mv doc $doc/share/doc/s6-networking/html
   '';
 
-  meta = {
-    homepage = http://www.skarnet.org/software/s6-networking/;
-    description = "A suite of small networking utilities for Unix systems";
-    platforms = lib.platforms.all;
-    license = lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/tools/system/s6-rc/default.nix b/pkgs/tools/system/s6-rc/default.nix
index b5cfa8ea442..3edb0c0fb60 100644
--- a/pkgs/tools/system/s6-rc/default.nix
+++ b/pkgs/tools/system/s6-rc/default.nix
@@ -1,27 +1,18 @@
-{ stdenv, execline, fetchgit, skalibs, s6 }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "s6-rc";
   version = "0.4.1.0";
+  sha256 = "1as7jhlp4cvh1bzvcli1hk1pbdzkac8gys1h379blymfy8hmp805";
 
-in stdenv.mkDerivation rec {
-
-  name = "s6-rc-${version}";
-
-  src = fetchgit {
-    url = "git://git.skarnet.org/s6-rc";
-    rev = "refs/tags/v${version}";
-    sha256 = "1as7jhlp4cvh1bzvcli1hk1pbdzkac8gys1h379blymfy8hmp805";
-  };
+  description = "A service manager for s6-based systems";
+  platforms = stdenv.lib.platforms.linux;
 
   outputs = [ "bin" "lib" "dev" "doc" "out" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   configureFlags = [
-    "--enable-absolute-paths"
     "--libdir=\${lib}/lib"
     "--libexecdir=\${lib}/libexec"
     "--dynlibdir=\${lib}/lib"
@@ -37,22 +28,15 @@ in stdenv.mkDerivation rec {
     "--with-dynlib=${skalibs.lib}/lib"
     "--with-dynlib=${execline.lib}/lib"
     "--with-dynlib=${s6.out}/lib"
-  ]
-  ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ])
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6-rc/
+    # remove all s6 executables from build directory
+    rm $(find -name "s6-rc-*" -type f -mindepth 1 -maxdepth 1 -executable)
+    rm s6-rc libs6rc.*
+
     mv doc $doc/share/doc/s6-rc/html
     mv examples $doc/share/doc/s6-rc/examples
   '';
 
-  meta = {
-    homepage = http://skarnet.org/software/s6-rc/;
-    description = "A service manager for s6-based systems";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/tools/system/s6/default.nix b/pkgs/tools/system/s6/default.nix
index 85140bce1ec..f459c624260 100644
--- a/pkgs/tools/system/s6/default.nix
+++ b/pkgs/tools/system/s6/default.nix
@@ -1,32 +1,21 @@
-{ stdenv, execline, fetchgit, skalibs }:
+{ stdenv, skawarePackages }:
 
-let
+with skawarePackages;
 
+buildPackage {
+  pname = "s6";
   version = "2.7.2.0";
+  sha256 = "07j4is7kxkynschwbf83q5rw1872kg3ij2vhxyfp3bg71k5pw1az";
 
-in stdenv.mkDerivation rec {
-
-  name = "s6-${version}";
-
-  src = fetchgit {
-    url = "git://git.skarnet.org/s6";
-    rev = "refs/tags/v${version}";
-    sha256 = "07j4is7kxkynschwbf83q5rw1872kg3ij2vhxyfp3bg71k5pw1az";
-  };
+  description = "skarnet.org's small & secure supervision software suite";
 
   # NOTE lib: cannot split lib from bin at the moment,
   # since some parts of lib depend on executables in bin.
   # (the `*_startf` functions in `libs6`)
-
   outputs = [ /*"bin" "lib"*/ "out" "dev" "doc" ];
 
-  dontDisableStatic = true;
-
-  enableParallelBuilding = true;
-
   # TODO: nsss support
   configureFlags = [
-    "--enable-absolute-paths"
     "--libdir=\${out}/lib"
     "--libexecdir=\${out}/libexec"
     "--dynlibdir=\${out}/lib"
@@ -39,22 +28,15 @@ in stdenv.mkDerivation rec {
     "--with-lib=${execline.lib}/lib"
     "--with-dynlib=${skalibs.lib}/lib"
     "--with-dynlib=${execline.lib}/lib"
-  ]
-  ++ (if stdenv.isDarwin then [ "--disable-shared" ] else [ "--enable-shared" ])
-  ++ (stdenv.lib.optional stdenv.isDarwin "--build=${stdenv.hostPlatform.system}");
+  ];
 
   postInstall = ''
-    mkdir -p $doc/share/doc/s6/
+    # remove all s6 executables from build directory
+    rm $(find -type f -mindepth 1 -maxdepth 1 -executable)
+    rm libs6.*
+
     mv doc $doc/share/doc/s6/html
     mv examples $doc/share/doc/s6/examples
   '';
 
-  meta = {
-    homepage = http://www.skarnet.org/software/s6/;
-    description = "skarnet.org's small & secure supervision software suite";
-    platforms = stdenv.lib.platforms.all;
-    license = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ pmahoney Profpatsch ];
-  };
-
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index dccad6918ca..7d5e65e4d4b 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12006,6 +12006,8 @@ with pkgs;
   skalibs = skawarePackages.skalibs;
 
   skawarePackages = recurseIntoAttrs {
+    buildPackage = callPackage ../build-support/skaware/build-skaware-package.nix { };
+
     skalibs = callPackage ../development/libraries/skalibs { };
     execline = callPackage ../tools/misc/execline { };