diff --git a/dev/dev-scenarios.nix b/dev/dev-scenarios.nix index e6716ca..b633303 100644 --- a/dev/dev-scenarios.nix +++ b/dev/dev-scenarios.nix @@ -111,7 +111,10 @@ with lib; ]; services.mempool = { enable = true; - frontend.address = "0.0.0.0"; + frontend = { + address = "0.0.0.0"; + settings.LIQUID_ENABLED = true; + }; }; nix-bitcoin.nodeinfo.enable = true; }; diff --git a/modules/mempool.nix b/modules/mempool.nix index 86648ad..b120380 100644 --- a/modules/mempool.nix +++ b/modules/mempool.nix @@ -50,9 +50,23 @@ let default = 60845; # A random private port description = "HTTP server port."; }; + settings = mkOption { + type = with types; attrsOf anything; + default = {}; + example = { + TESTNET_ENABLED = true; + MEMPOOL_WEBSITE_URL = "mempool.mynode.org"; + }; + description = '' + Mempool frontend settings. + See here for available options: + https://github.com/mempool/mempool/blob/master/frontend/src/app/services/state.service.ts + (`interface Env` and `defaultEnv`) + ''; + }; staticContentRoot = mkOption { type = types.path; - default = nbPkgs.mempool-frontend; + default = nbPkgs.mempool-frontend.withConfig cfg.frontend.settings; defaultText = "config.nix-bitcoin.pkgs.mempool-frontend"; description = " Path of the static frontend content root. @@ -106,7 +120,7 @@ let }; description = '' Mempool backend settings. - See here for possible options: + See here for available options: https://github.com/mempool/mempool/blob/master/backend/src/config.ts ''; }; diff --git a/pkgs/mempool/default.nix b/pkgs/mempool/default.nix index 9ba4aba..bf7cc83 100644 --- a/pkgs/mempool/default.nix +++ b/pkgs/mempool/default.nix @@ -79,7 +79,14 @@ rec { }; }; - mempool-frontend = mkDerivationMempool { + mempool-frontend = mkFrontend {}; + + # Argument `config` (type: attrset) defines the mempool frontend config. + # If `{}`, the default config is used. + # See here for available options: + # https://github.com/mempool/mempool/blob/master/frontend/src/app/services/state.service.ts + # (`interface Env` and `defaultEnv`) + mkFrontend = config: mkDerivationMempool { pname = "mempool-frontend"; buildPhase = '' @@ -92,6 +99,10 @@ rec { # internet. Disable this script and instead add the assets manually after building. : > sync-assets.js + ${lib.optionalString (config != {}) '' + ln -s ${builtins.toFile "mempool-frontend-config" (builtins.toJSON config)} mempool-frontend-config.json + ''} + npm run build # Add assets that would otherwise be downloaded by sync-assets.js @@ -107,6 +118,7 @@ rec { ''; passthru = { + withConfig = mkFrontend; assets = frontendAssets; nodeModules = nodeModules.frontend; };