exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

flake.nix (4361B)


      1 {
      2   inputs = {
      3     nixpkgs.url = "nixpkgs/release-26.05";
      4     systems.url = "github:nix-systems/default";
      5     gnunet.url = "git+https://git.gnunet.org/gnunet?ref=refs/tags/v0.29.1";
      6     self.submodules = true;
      7   };
      8 
      9   outputs = { self, nixpkgs, gnunet, systems, ... } @ inputs:
     10     let
     11       supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
     12       forEachSystem = nixpkgs.lib.genAttrs supportedSystems;
     13       nixpkgsFor = forEachSystem (system: import nixpkgs { inherit system; });
     14     in
     15     {
     16       # This defines (installable) package derivations
     17       # For use in flakes that use this flake as input in order
     18       # to specify/use this package from git as a dependency
     19       packages = forEachSystem (system:
     20         let
     21           pkgs = nixpkgsFor.${system};
     22           gnunetpkgs = gnunet.packages.${system};
     23         in {
     24           exchange = pkgs.stdenv.mkDerivation {
     25             name = "exchange";
     26             src = ./.;
     27             nativeBuildInputs = [
     28               pkgs.gnumake
     29               pkgs.meson
     30               pkgs.ninja
     31               pkgs.autoconf
     32               pkgs.pkg-config
     33               pkgs.python3
     34               pkgs.texinfo
     35               pkgs.typst # optional
     36               pkgs.pdftk # optional
     37               pkgs.doxygen
     38               pkgs.libfaketime
     39               pkgs.git
     40             ];
     41             buildInputs = [
     42               pkgs.libtool
     43               pkgs.jansson
     44               pkgs.gettext
     45               pkgs.postgresql
     46               (pkgs.python3.withPackages (python-pkgs: [
     47                 python-pkgs.jinja2
     48               ]))
     49               pkgs.libmicrohttpd
     50               pkgs.libsodium
     51               pkgs.libgcrypt
     52               pkgs.libgpg-error
     53               pkgs.libgpg-error-gen-posix-lock-obj
     54               pkgs.libunistring
     55               pkgs.curlWithGnuTls
     56               pkgs.jq
     57               gnunetpkgs.gnunet
     58              ];
     59             preConfigure = ''
     60               patchShebangs --build contrib/check-prebuilt
     61               ./bootstrap
     62             '';
     63           };
     64         }
     65       );
     66       defaultPackage = forEachSystem (system: self.packages.${system}.exchange);
     67       # This defines a development shell in which you can compile
     68       # (and use) exchange
     69        devShells = forEachSystem
     70         (system:
     71           let
     72             pkgs = nixpkgsFor.${system};
     73             gnunetpkgs = gnunet.packages.${system};
     74           in
     75           {
     76             default = pkgs.mkShell {
     77               packages = [
     78                 pkgs.gcc
     79                 pkgs.meson
     80                 pkgs.ninja
     81                 pkgs.gnumake
     82                 pkgs.automake
     83                 pkgs.autoconf
     84                 pkgs.texinfo
     85                 pkgs.pkg-config
     86                 pkgs.libtool
     87                 pkgs.jansson
     88                 pkgs.git
     89                 pkgs.gettext
     90                 pkgs.postgresql
     91                 (pkgs.python3.withPackages (python-pkgs: [
     92                   python-pkgs.jinja2
     93                 ]))
     94                 pkgs.libmicrohttpd
     95                 pkgs.libsodium
     96                 pkgs.libgcrypt
     97                 pkgs.libgpg-error
     98                 pkgs.libgpg-error-gen-posix-lock-obj
     99                 pkgs.libunistring
    100                 pkgs.curlWithGnuTls
    101                 pkgs.jq
    102                 gnunetpkgs.gnunet
    103                 pkgs.codespell
    104                 pkgs.clang-tools
    105                 pkgs.uncrustify
    106                 pkgs.typst # optional
    107                 pkgs.pdftk # optional
    108                 pkgs.doxygen
    109                 pkgs.libfaketime
    110             ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [
    111                 pkgs.valgrind
    112               ];
    113 
    114               shellHook = ''
    115                 echo "taler-exchange environment loaded."
    116                 export CC=gcc
    117                 export CFLAGS="-O"
    118                 mkdir -p default
    119                 export PGHOST=localhost
    120                 export PGPORT=5432
    121                 export PGUSER=$USER
    122                 export PGDATABASE=talercheck
    123                 export PGDATA="$PWD/default/.pg"
    124                 echo $PWD
    125                 [ ! -d $PGDATA ] && PGHOST="$PGDATA" pg_ctl initdb -o "-U $PGUSER"
    126 
    127                 pg_ctl -o "-p $PGPORT -k $PGDATA" start && createdb talercheck && {
    128                   trap 'pg_ctl stop && rm -r $PGDATA' EXIT
    129                 }
    130                '';
    131             };
    132           });
    133     };
    134 }