From 2c7acc6731ad4b05b1bbc3e632cdfcad4560ac22 Mon Sep 17 00:00:00 2001
From: Eelco Dolstra <eelco.dolstra@logicblox.com>
Date: Thu, 25 Sep 2014 00:22:27 +0200
Subject: [PATCH] Add a jobset for a "nixos-small" channel

This channel only builds a small subset of Nixpkgs, mostly suitable
for servers. Since the channel update doesn't require thousands of
packages to be built first, it should provide much faster turnaround
in case of security updates.
---
 nixos/release-small.nix | 85 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 85 insertions(+)
 create mode 100644 nixos/release-small.nix

diff --git a/nixos/release-small.nix b/nixos/release-small.nix
new file mode 100644
index 000000000000..1f789a499aa5
--- /dev/null
+++ b/nixos/release-small.nix
@@ -0,0 +1,85 @@
+# This jobset is used to generate a NixOS channel that contains a
+# small subset of Nixpkgs, mostly useful for servers that need fast
+# security updates.
+
+{ nixpkgs ? { outPath = ./..; revCount = 56789; shortRev = "gfedcba"; }
+, stableBranch ? false
+, supportedSystems ? [ "x86_64-linux" ] # no i686-linux
+}:
+
+let
+
+  nixpkgsSrc = nixpkgs; # urgh
+
+  pkgs = import ./.. {};
+
+  lib = pkgs.lib;
+
+  nixos' = import ./release.nix {
+    inherit stableBranch supportedSystems;
+    nixpkgs = nixpkgsSrc;
+  };
+
+  nixpkgs' = builtins.removeAttrs (import ../pkgs/top-level/release.nix {
+    inherit supportedSystems;
+    nixpkgs = nixpkgsSrc;
+  }) [ "unstable" ];
+
+in rec {
+
+  nixos = {
+    inherit (nixos') channel manual iso_minimal dummy;
+    tests = {
+      inherit (nixos'.tests)
+        containers
+        firewall
+        ipv6
+        login
+        misc
+        nat
+        nfs3
+        openssh
+        proxy
+        simple;
+      installer = {
+        inherit (nixos'.tests.installer)
+          grub1
+          lvm
+          separateBoot
+          simple;
+      };
+    };
+  };
+
+  nixpkgs = {
+    inherit (nixpkgs')
+      apacheHttpd_2_2
+      apacheHttpd_2_4
+      emacs
+      gd
+      mysql51
+      mysql55
+      nginx
+      openssh
+      php
+      postgresql92
+      postgresql93
+      python
+      rsyslog
+      stdenv
+      tarball
+      vim;
+  };
+
+  tested = pkgs.releaseTools.aggregate {
+    name = "nixos-${nixos.channel.version}";
+    meta = {
+      description = "Release-critical builds for the NixOS channel";
+      maintainers = [ lib.maintainers.eelco ];
+    };
+    constituents =
+      let all = x: map (system: x.${system}) supportedSystems; in
+      [ nixpkgs.tarball ] ++ lib.collect lib.isDerivation nixos;
+  };
+
+}