-
-
Save jasoncarr0/8a745d70b84331382795f37020884ebc to your computer and use it in GitHub Desktop.
{ pkgs ? import <nixpkgs> {} }: | |
with pkgs; | |
let | |
su_exec = pkgs.stdenv.mkDerivation { | |
name = "su-exec-0.2"; | |
src = fetchurl { | |
url = https://github.com/ncopa/su-exec/archive/v0.2.tar.gz; | |
sha256 = "09ayhm4w7ahvwk6wpjimvgv8lx89qx31znkywqmypkp6rpccnjpc"; | |
}; | |
preBuild = '' | |
makeFlagsArray=(CC="${musl.dev}/bin/musl-gcc -static" | |
CFLAGS="-I${musl.dev}/include" | |
LDFLAGS="-L${musl.dev}/lib") | |
''; | |
buildFlags = "su-exec-static"; | |
installPhase = ''mkdir -p $out/bin && cp su-exec-static $out/bin/su-exec''; | |
}; | |
redis_2_8_23 = pkgs.redis.overrideDerivation (attrs: rec { | |
version = "2.8.23"; | |
name = "redis-${version}"; | |
src = fetchurl { | |
url = "http://download.redis.io/releases/${name}.tar.gz"; | |
sha256 = "1kjsx79jhhssh5k9v17s9mifaclkl6mfsrsv0cvi583qyiw9gizk"; | |
}; | |
}); | |
redis_3_0_7 = pkgs.redis.overrideDerivation (attrs: rec { | |
version = "3.0.7"; | |
name = "redis-${version}"; | |
src = fetchurl { | |
url = "http://download.redis.io/releases/${name}.tar.gz"; | |
sha256 = "08vzfdr67gp3lvk770qpax2c5g2sx8hn6p64jn3jddrvxb2939xj"; | |
}; | |
postInstall = '' | |
rm -f $out/bin/redis-{benchmark,check-aof,check-dump,cli} | |
''; | |
}); | |
redis_3_0_7_musl = redis_3_0_7.overrideDerivation (attrs: rec { | |
version = "3.0.7-mini"; | |
preBuild = '' | |
makeFlagsArray=(PREFIX="$out" | |
CC="${musl.dev}/bin/musl-gcc -static" | |
CFLAGS="-I${musl.dev}/include" | |
LDFLAGS="-L${musl.dev}/lib") | |
''; | |
}); | |
redisImage = redis: baseImage: dockerTools.buildImage { | |
name = "redis"; | |
tag = redis.version; | |
fromImage = baseImage; | |
runAsRoot = '' | |
#!${stdenv.shell} | |
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PATH | |
${if baseImage == null then dockerTools.shadowSetup else ""} | |
groupadd -r redis | |
useradd -r -g redis -d /data -M redis | |
mkdir /data | |
chown redis:redis /data | |
${gnused}/bin/sed -i 's:/nix/.*bash.*::' etc/passwd | |
${gnused}/bin/sed -i 's:/nix/.*bash.*::' etc/passwd- | |
''; | |
config = { | |
Cmd = [ "${su_exec}/bin/su-exec" "redis" "${redis}/bin/redis-server" ]; | |
ExposedPorts = { | |
"6379/tcp" = {}; | |
}; | |
WorkingDir = "/data"; | |
Volumes = { | |
"/data" = {}; | |
}; | |
}; | |
}; | |
debianImage = dockerTools.pullImage { | |
imageName = "debian"; | |
sha256 = "08w22gx6hmmq75rybqzrxs03nzq2k39lrcj291yhsc08p9d9l9cj"; | |
}; | |
in { | |
redisDocker_3_0_7 = redisImage redis_3_0_7 null; | |
redisDocker_2_8_23 = redisImage redis_2_8_23 null; | |
redisOnDebian = redisImage redis_3_0_7 debianImage; | |
redisMini = redisImage redis_3_0_7_musl null; | |
} |
Updated for newer nixpkgs, musl -> musl.dev, add sed lines to remove bash from /etc/passwd
Thanks for the patch:
Had this working past the old version which errored:
build flags: SHELL=/nix/store/cwnwyy82wrq53820z6yg7869z8dl5s7g-bash-4.4-p23/bin/bash CC=/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/bin/musl-gcc\ -static CFLAGS=-I/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/include LDFLAGS=-L/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/lib su-exec-static
/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/bin/musl-gcc -static -I/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/include -o su-exec-static su-exec.c -static -L/nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/lib
/nix/store/cwnwyy82wrq53820z6yg7869z8dl5s7g-bash-4.4-p23/bin/bash: /nix/store/s8j344acf7af9pwc0sfqm7pzimdhva44-musl-1.2.1/bin/musl-gcc: No such file or directory
make: *** [Makefile:14: su-exec-static] Error 127
Updated for newer nixpkgs, musl -> musl.dev, add sed lines to remove bash from /etc/passwd