summaryrefslogtreecommitdiff
path: root/release.nix
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-05-20 12:44:06 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-05-20 12:54:47 -0400
commit16a6f5612d065d5a1252debf8f46b9befe6a2d89 (patch)
tree6cb274eeddd6392eb80dd52524ec59daec290255 /release.nix
parent1140534669504850ad1ce8082e440c8241c92b6c (diff)
generic-container: Add customized container image
Diffstat (limited to 'release.nix')
-rw-r--r--release.nix49
1 files changed, 49 insertions, 0 deletions
diff --git a/release.nix b/release.nix
index a4a1746..4fd73d8 100644
--- a/release.nix
+++ b/release.nix
@@ -1,9 +1,58 @@
{ nixpkgs ? (import <nixpkgs> {}) }:
+with nixpkgs.pkgs;
+let
+ pkgs2storeContents = l : map (x: { object = x; symlink = "none"; }) l;
+ makeSystemTarball =
+ { module, maintainers ? ["viric"], system }:
+
+ let
+ versionModule = {
+ system.nixosVersionSuffix = "orbekk";
+ system.nixosRevision = "master";
+ };
+
+ config = (import <nixpkgs/nixos/lib/eval-config.nix> {
+ inherit system;
+ modules = [ module versionModule ];
+ }).config;
+
+ tarball = import <nixpkgs/nixos/lib/make-system-tarball.nix> {
+ inherit (pkgs) stdenv perl xz pathsFromGraph;
+ contents = [];
+ extraArgs = "--owner=0";
+
+ # Add init script to image
+ storeContents = [
+ { object = config.system.build.toplevel + "/init";
+ symlink = "/init";
+ }
+ ] ++ (pkgs2storeContents [ pkgs.stdenv ]);
+
+ # Some container managers like lxc need these
+ extraCommands = writeScript "setup.sh" ''
+ mkdir -p proc sys dev sbin
+ ln -s init sbin/init
+ '';
+ };
+ in
+ tarball //
+ { meta = {
+ description = "NixOS system tarball for ${system} - ${stdenv.platform.name}";
+ maintainers = map (x: lib.maintainers.${x}) maintainers;
+ };
+ inherit config;
+ };
+in
{
containerTarball = (import <nixpkgs/nixos/release.nix> {})
.containerTarball.x86_64-linux;
+ orbekkContainerTarball = makeSystemTarball {
+ module = ./machines/generic-container.nix;
+ system = "x86_64-linux";
+ };
+
tests = {
common = import tests/common.nix;
desktop = import tests/desktop.nix;