diff --git a/modules/lnd.nix b/modules/lnd.nix index 8093bc9..950b3b0 100644 --- a/modules/lnd.nix +++ b/modules/lnd.nix @@ -198,7 +198,10 @@ in { RestartSec = "10s"; ReadWritePaths = cfg.dataDir; ExecStartPost = let - curl = "${pkgs.curl}/bin/curl -s --show-error"; + # Retrying is necessary because it can happen that the lnd socket is + # existing, but the RPC service isn't yet, which results in error + # "waiting to start, RPC services not available". + curl = "${pkgs.curl}/bin/curl -s --show-error --retry 10"; restUrl = "https://${cfg.restAddress}:${toString cfg.restPort}/v1"; in [ (nbLib.script "lnd-create-wallet" '' @@ -239,9 +242,14 @@ in { -d "{\"wallet_password\": \"$(cat ${secretsDir}/lnd-wallet-password | tr -d '\n' | base64 -w0)\"}" \ ${restUrl}/unlockwallet fi - - # Wait until the RPC port is open - while ! { exec 3>/dev/tcp/${cfg.rpcAddress}/${toString cfg.rpcPort}; } &>/dev/null; do + state="" + while [ "$state" != "RPC_ACTIVE" ]; do + state=$(${curl} \ + --cacert ${secretsDir}/lnd-cert \ + -d '{}' \ + -X POST \ + ${restUrl}/state |\ + ${pkgs.jq}/bin/jq -r '.state') sleep 0.1 done '') diff --git a/pkgs/nixpkgs-pinned.nix b/pkgs/nixpkgs-pinned.nix index 12c0f86..37b0722 100644 --- a/pkgs/nixpkgs-pinned.nix +++ b/pkgs/nixpkgs-pinned.nix @@ -8,11 +8,11 @@ in { # To update, run ../helper/fetch-channel REV nixpkgs = fetch { - rev = "dc326c78a93862efb30a76216f527a56496e6284"; - sha256 = "094zb1p5i5f2nlxny3dc814jvs90nimdj6wwd80495hgs9z76wgp"; + rev = "359e6542e1d41eb18df55c82bdb08bf738fae2cf"; + sha256 = "05v28njaas9l26ibc6vy6imvy7grbkli32bmv0n32x6x9cf68gf9"; }; nixpkgs-unstable = fetch { - rev = "4518794ee53d109d551c210a6d195b79e9995a90"; - sha256 = "1h86bqrkiydn5nwpndg8k5apdjxff5qigbrrwfam3893vgb7hws2"; + rev = "036dc0c709650e0c833822307af801f576d67273"; + sha256 = "0pnrygs6xf7id63zi17pq5379hfppwbb5cfazhypcqz6l3dfk00g"; }; }