diff --git a/nixproc/derive-dysnomia-process-type.nix b/nixproc/derive-dysnomia-process-type.nix index 54e5339..bcd86d9 100644 --- a/nixproc/derive-dysnomia-process-type.nix +++ b/nixproc/derive-dysnomia-process-type.nix @@ -9,4 +9,5 @@ else if processManager == "cygrunsrv" then "cygrunsrv-service" else if processManager == "launchd" then "launchd-daemon" else if processManager == "disnix" then "process" else if processManager == "docker" then "docker-container" +else if processManager == "s6-rc" then "s6-rc-service" else throw "Unknown process manager: ${processManager}" diff --git a/tools/s6-rc/default.nix b/tools/s6-rc/default.nix index 2ea55a2..beaf866 100644 --- a/tools/s6-rc/default.nix +++ b/tools/s6-rc/default.nix @@ -13,7 +13,7 @@ stdenv.mkDerivation { sed -e "s|/bin/bash|$SHELL|" \ -e "s|@getopt@|${getopt}/bin/getopt|" \ - -e "s|@readlink@|$(type -p readlink)|" \ + -e "s|@readlink@|$(type -p readlink)|g" \ -e "s|@commonchecks@|${../commonchecks}|" \ -e "s|@s6rcchecks@|${./s6-rc-checks}|" \ ${./nixproc-s6-rc-deploy.in} > $out/bin/nixproc-s6-rc-deploy diff --git a/tools/s6-rc/nixproc-s6-rc-deploy.in b/tools/s6-rc/nixproc-s6-rc-deploy.in index 40b800a..94935c8 100644 --- a/tools/s6-rc/nixproc-s6-rc-deploy.in +++ b/tools/s6-rc/nixproc-s6-rc-deploy.in @@ -127,8 +127,12 @@ fi if [ -d "$liveDir" ] then - s6-rc-update -l $liveDir $compileDir/$compiledDatabaseName - rm -rf $(@readlink@ -f $compileDir/compiled) + # Only update when the database to be deployed is different + if [ ! -e "$compileDir/compiled" ] || [ "$(@readlink@ -f $compileDir/$compiledDatabaseName)" != "$(@readlink@ -f $compileDir/compiled)" ] + then + s6-rc-update -l $liveDir $compileDir/$compiledDatabaseName + rm -rf $(@readlink@ -f $compileDir/compiled) + fi else s6-rc-init -c $compileDir/$compiledDatabaseName -l $liveDir $scanDir fi