flake.nix (4126B)
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 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.libunistring 53 pkgs.curlWithGnuTls 54 pkgs.jq 55 gnunetpkgs.gnunet 56 ]; 57 preConfigure = '' 58 patchShebangs --build contrib/check-prebuilt 59 ./bootstrap 60 ''; 61 }; 62 } 63 ); 64 defaultPackage = forEachSystem (system: self.packages.${system}.exchange); 65 # This defines a development shell in which you can compile 66 # (and use) exchange 67 devShells = forEachSystem 68 (system: 69 let 70 pkgs = nixpkgsFor.${system}; 71 gnunetpkgs = gnunet.packages.${system}; 72 in 73 { 74 default = pkgs.mkShell { 75 packages = [ 76 pkgs.gcc 77 pkgs.meson 78 pkgs.ninja 79 pkgs.gnumake 80 pkgs.automake 81 pkgs.autoconf 82 pkgs.texinfo 83 pkgs.pkg-config 84 pkgs.libtool 85 pkgs.jansson 86 pkgs.git 87 pkgs.gettext 88 pkgs.postgresql 89 (pkgs.python3.withPackages (python-pkgs: [ 90 python-pkgs.jinja2 91 ])) 92 pkgs.libmicrohttpd 93 pkgs.libsodium 94 pkgs.libgcrypt 95 pkgs.libunistring 96 pkgs.curlWithGnuTls 97 pkgs.jq 98 gnunetpkgs.gnunet 99 pkgs.codespell 100 pkgs.clang-tools 101 pkgs.uncrustify 102 pkgs.typst # optional 103 pkgs.pdftk # optional 104 pkgs.doxygen 105 pkgs.libfaketime 106 ]; 107 108 shellHook = '' 109 echo "taler-exchange environment loaded." 110 export CC=gcc 111 export CFLAGS="-O" 112 mkdir -p default 113 export PGHOST=localhost 114 export PGPORT=5432 115 export PGUSER=$USER 116 export PGDATABASE=talercheck 117 export PGDATA="$PWD/default/.pg" 118 echo $PWD 119 [ ! -d $PGDATA ] && PGHOST="$PGDATA" pg_ctl initdb -o "-U $PGUSER" 120 121 pg_ctl -o "-p $PGPORT -k $PGDATA" start && createdb talercheck && { 122 trap 'pg_ctl stop && rm -r $PGDATA' EXIT 123 } 124 ''; 125 }; 126 }); 127 }; 128 }