Add spark-wallet

This commit is contained in:
Jonas Nick 2018-12-10 16:34:41 +00:00
parent c3cd4657fb
commit 25d52c4d10
8 changed files with 113 additions and 1 deletions

View File

@ -20,6 +20,9 @@ Profiles
* [lightning charge](https://github.com/ElementsProject/lightning-charge) * [lightning charge](https://github.com/ElementsProject/lightning-charge)
* [nanopos](https://github.com/ElementsProject/nanopos) * [nanopos](https://github.com/ElementsProject/nanopos)
* adds an index page using nginx to display node information and link to nanopos * adds an index page using nginx to display node information and link to nanopos
* [spark-wallet](https://github.com/shesek/spark-wallet)
* Notes: run `nodeinfo` to get its onion address and `systemctl status spark-wallet` to get the access key.
When entering the onion address on the Android app don't forgot to prepend "http://"
The data directories can be found in `/var/lib`. The data directories can be found in `/var/lib`.

View File

@ -8,6 +8,7 @@ let
nodeinfo = (import pkgs/nodeinfo.nix); nodeinfo = (import pkgs/nodeinfo.nix);
lightning-charge = import pkgs/lightning-charge.nix { inherit pkgs; }; lightning-charge = import pkgs/lightning-charge.nix { inherit pkgs; };
nanopos = import pkgs/nanopos.nix { inherit pkgs; }; nanopos = import pkgs/nanopos.nix { inherit pkgs; };
spark-wallet = import pkgs/spark-wallet.nix { inherit pkgs; };
liquidd = import pkgs/liquidd.nix; liquidd = import pkgs/liquidd.nix;
in { in {
imports = imports =
@ -20,6 +21,7 @@ in {
inherit nodeinfo; inherit nodeinfo;
inherit lightning-charge; inherit lightning-charge;
inherit nanopos; inherit nanopos;
inherit spark-wallet;
liquidd = (pkgs.callPackage liquidd { }); liquidd = (pkgs.callPackage liquidd { });
}; };
services.nixbitcoin.enable = true; services.nixbitcoin.enable = true;

View File

@ -15,6 +15,7 @@ echo Write secrets to $SECRETSFILE
echo " bitcoinrpcpassword = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";" echo " bitcoinrpcpassword = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";"
echo " lightning-charge-api-token = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";" echo " lightning-charge-api-token = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";"
echo " liquidrpcpassword = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";" echo " liquidrpcpassword = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";"
echo " spark-wallet-password = \"$(apg -m 20 -x 20 -M Ncl -n 1)\";"
echo \} echo \}
} >> $SECRETSFILE } >> $SECRETSFILE
echo Done echo Done

View File

@ -15,6 +15,7 @@ let
liquidd liquidd
lightning-charge.package lightning-charge.package
nanopos.package nanopos.package
spark-wallet.package
nodejs-8_x nodejs-8_x
nginx nginx
]; ];
@ -27,6 +28,7 @@ in {
./nanopos.nix ./nanopos.nix
./nixbitcoin-webindex.nix ./nixbitcoin-webindex.nix
./liquid.nix ./liquid.nix
./spark-wallet.nix
]; ];
options.services.nixbitcoin = { options.services.nixbitcoin = {
@ -125,6 +127,13 @@ in {
services.nanopos.enable = cfg.modules == "all"; services.nanopos.enable = cfg.modules == "all";
services.nixbitcoin-webindex.enable = cfg.modules == "all"; services.nixbitcoin-webindex.enable = cfg.modules == "all";
services.clightning.autolisten = cfg.modules == "all"; services.clightning.autolisten = cfg.modules == "all";
services.spark-wallet.enable = cfg.modules == "all";
services.tor.hiddenServices.spark-wallet = {
map = [{
port = 80; toPort = 9737;
}];
version = 3;
};
environment.systemPackages = if (cfg.modules == "all") then (minimalPackages ++ allPackages) else minimalPackages; environment.systemPackages = if (cfg.modules == "all") then (minimalPackages ++ allPackages) else minimalPackages;
}; };
} }

44
modules/spark-wallet.nix Normal file
View File

@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.spark-wallet;
in {
options.services.spark-wallet = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
If enabled, the spark-wallet service will be installed.
'';
};
ln-path = mkOption {
type = types.path;
default = "/var/lib/clightning";
description = ''
"The path of the clightning data directory.";
'';
};
};
config = mkIf cfg.enable {
systemd.services.spark-wallet =
{ description = "Run spark-wallet";
wantedBy = [ "multi-user.target" ];
requires = [ "clightning.service" ];
after = [ "clightning.service" ];
serviceConfig =
{
ExecStart = "${pkgs.spark-wallet.package}/bin/spark-wallet --ln-path ${cfg.ln-path} -k -c /secrets/spark-wallet-password";
User = "clightning";
Restart = "on-failure";
RestartSec = "10s";
PrivateTmp = "true";
ProtectSystem = "full";
NoNewPrivileges = "true";
PrivateDevices = "true";
};
};
};
}

View File

@ -29,6 +29,13 @@ let
group = "liquid"; group = "liquid";
permissions = "0440"; permissions = "0440";
}; };
spark-wallet-login = {
text = "login=" + "spark-wallet:" + secrets.spark-wallet-password;
destDir = "/secrets/";
user = "clightning";
group = "clightning";
permissions = "0440";
};
in { in {
network.description = "Bitcoin Core node"; network.description = "Bitcoin Core node";
@ -41,6 +48,7 @@ in {
inherit bitcoin-rpcpassword lightning-charge-api-token; inherit bitcoin-rpcpassword lightning-charge-api-token;
} }
// (if (config.services.nanopos.enable) then { inherit lightning-charge-api-token-for-nanopos; } else { }) // (if (config.services.nanopos.enable) then { inherit lightning-charge-api-token-for-nanopos; } else { })
// (if (config.services.liquidd.enable) then { inherit liquid-rpcpassword; } else { }); // (if (config.services.liquidd.enable) then { inherit liquid-rpcpassword; } else { })
// (if (config.services.spark-wallet.enable) then { inherit spark-wallet-login; } else { });
} // (bitcoin-node { inherit config pkgs; }); } // (bitcoin-node { inherit config pkgs; });
} }

View File

@ -16,3 +16,15 @@ if [ -e "$NGINX_ONION_FILE" ]; then
NGINX_ONION="$(cat $NGINX_ONION_FILE)" NGINX_ONION="$(cat $NGINX_ONION_FILE)"
echo NGINX_ONION="$NGINX_ONION" echo NGINX_ONION="$NGINX_ONION"
fi fi
NGINX_ONION_FILE=/var/lib/tor/onion/nginx/hostname
if [ -e "$NGINX_ONION_FILE" ]; then
NGINX_ONION="$(cat $NGINX_ONION_FILE)"
echo NGINX_ONION="$NGINX_ONION"
fi
SPARKWALLET_ONION_FILE=/var/lib/tor/onion/spark-wallet/hostname
if [ -e "$SPARKWALLET_ONION_FILE" ]; then
SPARKWALLET_ONION="$(cat $SPARKWALLET_ONION_FILE)"
echo SPARKWALLET_ONION="http://$SPARKWALLET_ONION"
fi

33
pkgs/spark-wallet.nix Normal file
View File

@ -0,0 +1,33 @@
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-8_x"}:
with pkgs;
let
d1 = stdenv.mkDerivation {
name = "spark-wallet-sources";
src = fetchurl {
url = "https://registry.npmjs.org/spark-wallet/-/spark-wallet-0.2.0-rc.3.tgz";
sha256 = "991855f6c103c3e2abfd6421597db31948bc3fb967d9066f0d804a88c22390fd";
};
buildInputs = [ nodePackages.node2nix git ];
unpackPhase = ''
mkdir -p $out
tar -xzf $src -C $out
'';
installPhase = ''
mkdir -p $out
cd $out/package
${nodePackages.node2nix}/bin/node2nix -8 package.json
'';
};
# import from derivation (IFD)
packages = import (d1 + "/package/default.nix") {
inherit pkgs system;
};
in
packages