This repository has been archived by the owner on Apr 9, 2023. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
release.nix
68 lines (61 loc) · 2.15 KB
/
release.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
{ image_name ? "plone.server",
image_tag ? "master", image_entrypoint ? "/bin/server"
, supportedSystems ? [ "x86_64-linux" ]
, pkgs ? import (builtins.fetchTarball
"https://github.com/nixos/nixpkgs-channels/archive/nixos-16.09.tar.gz") {}
}:
let
pkgFor = system: import ./default.nix {
pkgs = import pkgs.path { inherit system; };
};
in rec {
build = pkgs.lib.genAttrs supportedSystems (system: pkgs.lib.hydraJob (
pkgFor system
));
python = pkgs.lib.genAttrs supportedSystems (system: pkgs.lib.hydraJob (
let package = pkgFor system;
syspkgs = import pkgs.path { inherit system; };
in syspkgs.python35Packages.python.buildEnv.override {
extraLibs = package.nativeBuildInputs
++ package.propagatedNativeBuildInputs;
ignoreCollisions = true;
}
));
tarball = pkgs.lib.hydraJob((pkgFor "x86_64-linux")
.overrideDerivation(args: {
phases = [ "unpackPhase" "buildPhase" ];
buildPhase = ''
${python."x86_64-linux"}/bin/python3 setup.py sdist --formats=gztar
mkdir -p $out/tarballs $out/nix-support
mv dist/${args.name}.tar.gz $out/tarballs
echo "file source-dist $out/tarballs/${args.name}.tar.gz" > \
$out/nix-support/hydra-build-products
echo ${args.name} > $out/nix-support/hydra-release-name
'';
}));
image = pkgs.lib.hydraJob (
let package = pkgFor "x86_64-linux";
syspkgs = import pkgs.path { system = "x86_64-linux"; };
python = syspkgs.python35.buildEnv.override {
extraLibs = [ package ];
ignoreCollisions = true;
};
in pkgs.dockerTools.buildImage {
name = image_name;
tag = image_tag;
contents = [ syspkgs.busybox python ];
runAsRoot = ''
#!${pkgs.stdenv.shell}
${pkgs.dockerTools.shadowSetup}
groupadd --system --gid 65534 nobody
useradd --system --uid 65534 --gid 65534 -d / -s /sbin/nologin nobody
echo "hosts: files dns" > /etc/nsswitch.conf
mkdir -p /usr/bin && ln -s /bin/env /usr/bin
'';
config = {
EntryPoint = [ "${image_entrypoint}" ];
User = "nobody";
};
}
);
}