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