diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-24 23:15:39 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-04-24 23:18:47 +0200 |
commit | 23297b0edde896f76ca1392d45e3c27b1422bafe (patch) | |
tree | 35ee1fa2c9b486222986417d40e47cf9cea25b91 /nixos/modules/services/system | |
parent | d7a7f80aff92224351ded6e87897ba5286d9f819 (diff) | |
download | nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar.gz nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar.bz2 nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar.lz nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar.xz nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.tar.zst nixlib-23297b0edde896f76ca1392d45e3c27b1422bafe.zip |
Make nscd startup synchronous
Nscd forks into the background before it's ready to accept connections. So explicitly wait until it's ready. http://hydra.nixos.org/build/10661767
Diffstat (limited to 'nixos/modules/services/system')
-rw-r--r-- | nixos/modules/services/system/nscd.nix | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/nixos/modules/services/system/nscd.nix b/nixos/modules/services/system/nscd.nix index f357eb4e1fc8..1ac82064a1f7 100644 --- a/nixos/modules/services/system/nscd.nix +++ b/nixos/modules/services/system/nscd.nix @@ -9,6 +9,8 @@ let inherit (pkgs.lib) singleton; + cfgFile = pkgs.writeText "nscd.conf" cfg.config; + in { @@ -63,7 +65,7 @@ in restartTriggers = [ config.environment.etc.hosts.source ]; serviceConfig = - { ExecStart = "@${pkgs.glibc}/sbin/nscd nscd -f ${pkgs.writeText "nscd.conf" cfg.config}"; + { ExecStart = "@${pkgs.glibc}/sbin/nscd nscd -f ${cfgFile}"; Type = "forking"; PIDFile = "/run/nscd/nscd.pid"; Restart = "always"; @@ -73,6 +75,15 @@ in "${pkgs.glibc}/sbin/nscd --invalidate hosts" ]; }; + + # Urgggggh... Nscd forks before opening its socket and writing + # its pid. So wait until it's ready. + postStart = + '' + while ! ${pkgs.glibc}/sbin/nscd -g -f ${cfgFile} > /dev/null; do + sleep 0.2 + done + ''; }; }; |