@ -39,6 +39,36 @@ let
inherit ( config . system ) stateVersion ;
hydra-package =
let
makeWrapperArgs = concatStringsSep " " ( mapAttrsToList ( key : value : " - - s e t \" ${ key } \" \" ${ value } \" " ) hydraEnv ) ;
in pkgs . buildEnv rec {
name = " h y d r a - e n v " ;
buildInputs = [ pkgs . makeWrapper ] ;
paths = [ cfg . package ] ;
postBuild = ''
if [ - L " $ o u t / b i n " ] ; then
unlink " $ o u t / b i n "
fi
mkdir - p " $ o u t / b i n "
for path in $ { concatStringsSep " " paths } ; do
if [ - d " $ p a t h / b i n " ] ; then
cd " $ p a t h / b i n "
for prg in * ; do
if [ - f " $ p r g " ] ; then
rm - f " $ o u t / b i n / $ p r g "
if [ - x " $ p r g " ] ; then
makeWrapper " $ p a t h / b i n / $ p r g " " $ o u t / b i n / $ p r g " $ { makeWrapperArgs }
fi
fi
done
fi
done
'' ;
} ;
in
{
@ -266,7 +296,7 @@ in
use-substitutes = $ { if cfg . useSubstitutes then " 1 " else " 0 " }
'' ;
environment . systemPackages = [ cfg . package ] ;
environment . systemPackages = [ hydra- package ] ;
environment . variables = hydraEnv ;
@ -327,7 +357,7 @@ in
chown hydra . hydra $ { cfg . gcRootsDir }
chmod 2775 $ { cfg . gcRootsDir }
'' ;
serviceConfig . ExecStart = " ${ cfg . package } / b i n / h y d r a - i n i t " ;
serviceConfig . ExecStart = " ${ hydra- package} / b i n / h y d r a - i n i t " ;
serviceConfig . PermissionsStartOnly = true ;
serviceConfig . User = " h y d r a " ;
serviceConfig . Type = " o n e s h o t " ;
@ -342,7 +372,7 @@ in
restartTriggers = [ hydraConf ] ;
serviceConfig =
{ ExecStart =
" @ ${ cfg . package } / b i n / h y d r a - s e r v e r h y d r a - s e r v e r - f - h ' ${ cfg . listenHost } ' "
" @ ${ hydra- package} / b i n / h y d r a - s e r v e r h y d r a - s e r v e r - f - h ' ${ cfg . listenHost } ' "
+ " - p ${ toString cfg . port } - - m a x _ s p a r e _ s e r v e r s 5 - - m a x _ s e r v e r s 2 5 "
+ " - - m a x _ r e q u e s t s 1 0 0 ${ optionalString cfg . debugServer " - d " } " ;
User = " h y d r a - w w w " ;
@ -355,15 +385,15 @@ in
{ wantedBy = [ " m u l t i - u s e r . t a r g e t " ] ;
requires = [ " h y d r a - i n i t . s e r v i c e " ] ;
after = [ " h y d r a - i n i t . s e r v i c e " " n e t w o r k . t a r g e t " ] ;
path = [ cfg . package pkgs . nettools pkgs . openssh pkgs . bzip2 config . nix . package ] ;
path = [ hydra- package pkgs . nettools pkgs . openssh pkgs . bzip2 config . nix . package ] ;
restartTriggers = [ hydraConf ] ;
environment = env // {
PGPASSFILE = " ${ baseDir } / p g p a s s - q u e u e - r u n n e r " ; # grrr
IN_SYSTEMD = " 1 " ; # to get log severity levels
} ;
serviceConfig =
{ ExecStart = " @ ${ cfg . package } / b i n / h y d r a - q u e u e - r u n n e r h y d r a - q u e u e - r u n n e r - v " ;
ExecStopPost = " ${ cfg . package } / b i n / h y d r a - q u e u e - r u n n e r - - u n l o c k " ;
{ ExecStart = " @ ${ hydra- package} / b i n / h y d r a - q u e u e - r u n n e r h y d r a - q u e u e - r u n n e r - v " ;
ExecStopPost = " ${ hydra- package} / b i n / h y d r a - q u e u e - r u n n e r - - u n l o c k " ;
User = " h y d r a - q u e u e - r u n n e r " ;
Restart = " a l w a y s " ;
@ -377,11 +407,11 @@ in
{ wantedBy = [ " m u l t i - u s e r . t a r g e t " ] ;
requires = [ " h y d r a - i n i t . s e r v i c e " ] ;
after = [ " h y d r a - i n i t . s e r v i c e " " n e t w o r k . t a r g e t " ] ;
path = with pkgs ; [ cfg . package nettools jq ] ;
path = with pkgs ; [ hydra- package nettools jq ] ;
restartTriggers = [ hydraConf ] ;
environment = env ;
serviceConfig =
{ ExecStart = " @ ${ cfg . package } / b i n / h y d r a - e v a l u a t o r h y d r a - e v a l u a t o r " ;
{ ExecStart = " @ ${ hydra- package} / b i n / h y d r a - e v a l u a t o r h y d r a - e v a l u a t o r " ;
User = " h y d r a " ;
Restart = " a l w a y s " ;
WorkingDirectory = baseDir ;
@ -393,7 +423,7 @@ in
after = [ " h y d r a - i n i t . s e r v i c e " ] ;
environment = env ;
serviceConfig =
{ ExecStart = " @ ${ cfg . package } / b i n / h y d r a - u p d a t e - g c - r o o t s h y d r a - u p d a t e - g c - r o o t s " ;
{ ExecStart = " @ ${ hydra- package} / b i n / h y d r a - u p d a t e - g c - r o o t s h y d r a - u p d a t e - g c - r o o t s " ;
User = " h y d r a " ;
} ;
startAt = " 2 , 1 4 : 1 5 " ;
@ -404,7 +434,7 @@ in
after = [ " h y d r a - i n i t . s e r v i c e " ] ;
environment = env ;
serviceConfig =
{ ExecStart = " @ ${ cfg . package } / b i n / h y d r a - s e n d - s t a t s h y d r a - s e n d - s t a t s " ;
{ ExecStart = " @ ${ hydra- package} / b i n / h y d r a - s e n d - s t a t s h y d r a - s e n d - s t a t s " ;
User = " h y d r a " ;
} ;
} ;
@ -418,7 +448,7 @@ in
PGPASSFILE = " ${ baseDir } / p g p a s s - q u e u e - r u n n e r " ;
} ;
serviceConfig =
{ ExecStart = " @ ${ cfg . package } / b i n / h y d r a - n o t i f y h y d r a - n o t i f y " ;
{ ExecStart = " @ ${ hydra- package} / b i n / h y d r a - n o t i f y h y d r a - n o t i f y " ;
# FIXME: run this under a less privileged user?
User = " h y d r a - q u e u e - r u n n e r " ;
Restart = " a l w a y s " ;