gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

flake.nix (3106B)


      1 {
      2   inputs = {
      3     nixpkgs.url = "nixpkgs/release-26.05";
      4     systems.url = "github:nix-systems/default";
      5     self.submodules = true;
      6   };
      7 
      8   outputs = { self, nixpkgs, systems, ... } @ inputs:
      9     let
     10       supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
     11       forEachSystem = nixpkgs.lib.genAttrs supportedSystems;
     12       nixpkgsFor = forEachSystem (system: import nixpkgs { inherit system; });
     13     in
     14     {
     15       # This defines (installable) package derivations
     16       # For use in flakes that use this flake as input in order
     17       # to specify/use gnunet from git as a dependency
     18       packages = forEachSystem (system:
     19         let
     20           pkgs = nixpkgsFor.${system};
     21         in {
     22           gnunet = pkgs.stdenv.mkDerivation {
     23             name = "gnunet";
     24             src = ./.;
     25             nativeBuildInputs = [
     26               pkgs.gcc
     27               pkgs.gnumake
     28               pkgs.meson
     29               pkgs.ninja
     30               pkgs.pkg-config
     31               pkgs.libtool
     32               pkgs.git
     33              ];
     34             propagatedBuildInputs = [
     35               pkgs.libsodium
     36               pkgs.libtool
     37               pkgs.libunistring
     38               pkgs.libgcrypt
     39               pkgs.sqlite
     40               pkgs.curlWithGnuTls
     41               pkgs.libmicrohttpd
     42               pkgs.zlib
     43               pkgs.jansson
     44               pkgs.gmp
     45               pkgs.gnutls
     46               pkgs.libidn2
     47               pkgs.gettext
     48               pkgs.postgresql
     49               pkgs.jose
     50               pkgs.zbar
     51              ];
     52             preConfigure = ''
     53               ./bootstrap
     54             '';
     55           };
     56         }
     57       );
     58       defaultPackage = forEachSystem (system: self.packages.${system}.gnunet);
     59       # This defines a development shell in which you can compile
     60       # (and use) gnunet
     61        devShells = forEachSystem
     62         (system:
     63           let
     64             pkgs = nixpkgsFor.${system};
     65           in
     66           {
     67             default = pkgs.mkShell {
     68               packages = [
     69                 pkgs.gcc
     70                 pkgs.gnumake
     71                 pkgs.meson
     72                 pkgs.ninja
     73                 pkgs.pkg-config
     74                 pkgs.libsodium
     75                 pkgs.libtool
     76                 pkgs.libunistring
     77                 pkgs.libgcrypt
     78                 pkgs.sqlite
     79                 pkgs.curlWithGnuTls
     80                 pkgs.libmicrohttpd
     81                 pkgs.zlib
     82                 pkgs.jansson
     83                 pkgs.gmp
     84                 pkgs.gnutls
     85                 pkgs.libidn2
     86                 pkgs.codespell
     87                 pkgs.clang-tools
     88                 pkgs.gettext
     89                 pkgs.postgresql
     90                 pkgs.jose
     91                 pkgs.zbar
     92                 pkgs.uncrustify
     93                 pkgs.syft
     94                 pkgs.ngtcp2
     95                 pkgs.nghttp3
     96                 pkgs.bear
     97                 pkgs.fd
     98                 pkgs.gdb
     99               ];
    100 
    101               shellHook = ''
    102                 echo "GNUnet environment loaded."
    103                 export CC=gcc
    104                 export CFLAGS="-O"
    105                '';
    106             };
    107           });
    108     };
    109 }