liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }