citadel

My dotfiles, scripts and nix configs
git clone git://jb55.com/citadel
Log | Files | Refs | README | LICENSE

default.nix (3100B)


      1 extra:
      2 { config, lib, pkgs, ... }:
      3 
      4 let
      5   jb55pkgs = import <jb55pkgs> { inherit pkgs; };
      6 
      7   nostril = jb55pkgs.nostril;
      8 
      9   nix-bitcoin = import (pkgs.fetchFromGitHub {
     10     owner  = "fort-nix";
     11     repo   = "nix-bitcoin";
     12     rev    = "v0.0.89";
     13     sha256 = "sha256-SMJW+QZt3iRuoezjE12sopBsdLHDihXe/RerLfRpqoI=";
     14   }) { inherit pkgs; };
     15 
     16   plugins = ["summary"];
     17 
     18   mkPluginCfg = name:
     19     "plugin=${builtins.getAttr name (nix-bitcoin.clightning-plugins)}/${name}.py";
     20 
     21   bitcoinDataDir = "/titan/bitcoin";
     22 
     23   base-bitcoin-conf = extra.private.bitcoin;
     24 
     25   bcli = "${pkgs.bitcoind}/bin/bitcoin-cli --datadir=${bitcoinDataDir} --conf=${base-bitcoin-conf-file} --rpcuser=${extra.private.btc-user} --rpcpassword=${extra.private.btc-pass}";
     26 
     27   bitcoin-conf = ''
     28     ${base-bitcoin-conf}
     29     walletnotify=${walletemail} %s %w
     30   '';
     31 
     32   base-bitcoin-conf-file = pkgs.writeText "bitcoin-base.conf" base-bitcoin-conf;
     33   bitcoin-conf-file = pkgs.writeText "bitcoin.conf" bitcoin-conf;
     34 
     35   dca = import ./dca.nix {
     36     inherit pkgs bcli;
     37     to = "jb55 ${extra.private.btc-supplier}";
     38     addr = extra.private.btc-supplier-addr;
     39   };
     40 
     41   walletemail = import ./walletemail.nix {
     42     inherit pkgs bcli nostril;
     43     inherit (extra) private;
     44   };
     45 
     46   spark-module = import ./modules/spark-wallet.nix nix-bitcoin.spark-wallet;
     47   spark-port = 9962;
     48 in
     49 {
     50   imports = [ spark-module ];
     51 
     52   services.spark-wallet.enable = false;
     53   services.spark-wallet.address = extra.machine.ztip;
     54   services.spark-wallet.port = spark-port;
     55   services.spark-wallet.publicUrl = "http://wallet.jb55.com";
     56 
     57   services.nginx.httpConfig = ''
     58     server {
     59       listen 80;
     60       listen 10.100.0.1:80;
     61       listen 192.168.87.26:80;
     62 
     63       server_name wallet.jb55.com;
     64 
     65       location /core/ {
     66         alias /var/www/lnlink-core/;
     67       }
     68 
     69       location /cln/ {
     70         alias /var/www/btcmerchant/;
     71       }
     72 
     73       location / {
     74         proxy_pass  http://127.0.0.1:9962;
     75 
     76         proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
     77         proxy_redirect off;
     78         proxy_buffering off;
     79         proxy_set_header        Host            $host;
     80         proxy_set_header        X-Real-IP       $remote_addr;
     81         proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
     82       }
     83     }
     84 
     85   '';
     86 
     87   services.bitcoind = {
     88     mainnet = {
     89       enable = if extra.is-minimal then false else true;
     90       dataDir = bitcoinDataDir;
     91       configFile = bitcoin-conf-file;
     92       user = "jb55";
     93       group = "users";
     94     };
     95   };
     96 
     97   #services.clightning.networks = {
     98   #  mainnet = {
     99   #    dataDir = "/home/jb55/.lightning-bitcoin";
    100 
    101   #    config = ''
    102   #      bitcoin-rpcuser=rpcuser
    103   #      bitcoin-rpcpassword=rpcpass
    104   #      bitcoin-rpcconnect=127.0.0.1
    105   #      bitcoin-rpcport=8332
    106   #      fee-per-satoshi=900
    107   #      bind-addr=0.0.0.0:9735
    108   #      announce-addr=24.84.152.187:9735
    109   #      network=bitcoin
    110   #      alias=jb55.com
    111   #      rgb=ff0000
    112   #      proxy=127.0.0.1:9050
    113   #      experimental-offers
    114   #      ${lib.concatStringsSep "\n" (map mkPluginCfg plugins)}
    115   #    '';
    116   #  };
    117   #};
    118 }