default.nix (1254B)
1 # generate s6-rc database, by generating closure of all 2 # config.services and calling s6-rc-compile on them 3 4 { 5 stdenvNoCC, 6 buildPackages, 7 closureInfo, 8 writeText, 9 services ? [ ], 10 }: 11 let 12 closure-info = closureInfo { rootPaths = services; }; 13 in 14 stdenvNoCC.mkDerivation { 15 name = "s6-rc-database"; 16 nativeBuildInputs = [ buildPackages.s6-rc ]; 17 builder = writeText "find-s6-services" '' 18 source $stdenv/setup 19 mkdir -p $out 20 srcs="" 21 shopt -s nullglob 22 for i in $(cat ${closure-info}/store-paths ); do 23 if test -d $i; then 24 for j in $i/* ; do 25 if test -f $j/type ; then 26 if test -e $j/restart-on-upgrade; then 27 flag=force-restart 28 else 29 unset flag 30 fi 31 case $(cat $j/type) in 32 longrun|oneshot) 33 # s6-rc-update only wants atomics in its 34 # restarts file 35 echo $(basename $j) " " ''${flag-$i} >> $out/hashes 36 ;; 37 *) 38 ;; 39 esac 40 srcs="$srcs $i" 41 fi 42 done 43 fi 44 done 45 s6-rc-compile $out/compiled $srcs 46 s6-rc-db -c $out/compiled contents default 47 mv $out/hashes $out/compiled 48 ''; 49 }