anastasis-gtk

Demonstrator GUI for Anastasis
Log | Files | Refs | README | LICENSE

flake.nix (5324B)


      1 # This is a nix flake. To use it, you need nix (with flake support) installed.
      2 # If you do not have nix and do not intend to use it, you can ignore this file.
      3 # Why should you use it? Using this flake will allow you to enter a developer shell
      4 # which has all necessary packages for this repository already installed.
      5 # The shell will allow you to code against the specific revisions of the dependencies
      6 # pinned in this file.
      7 # This is useful when git HEAD of your dependencies already contains breaking changes
      8 # you should not (yet) code against.
      9 # OTOH, if you should code against a newer, not yet released revision, you can specify
     10 # this revision in this file.
     11 # You can use this file in three ways:
     12 # 1. Build: $ nix build
     13 # this will build the package (it runs make for you in an environment with the dependencies installed)
     14 # 2. Develop: $ nix develop
     15 # This will drop you inside a shell in which you can develop and compile (and test) your code.
     16 # It even starts and sets up the test database for you.
     17 # 3. Use this repository in a new project
     18 # Should you create a new project that depends on this project you are in luck. You can create a flake.nix
     19 # in your repository and include this packages as a dependency just like the dependencies of this package are
     20 # included here.
     21 
     22 {
     23   inputs = {
     24     nixpkgs.url = "nixpkgs/release-25.11";
     25     systems.url = "github:nix-systems/default";
     26     gnunet.url = "git+https://git.gnunet.org/gnunet?rev=7c6b613e37e301b0e81fb94af5878d00c98e5b75";
     27     exchange.url = "git+https://git.gnunet.org/exchange?rev=92da4e81006404494f6443781c8f55249e723847";
     28     merchant.url = "git+https://git.gnunet.org/merchant?rev=b174138726171601b666fff346762502be5150a1";
     29     donau.url = "git+https://git.gnunet.org/donau?rev=4f609168fe263891f134eff01f86288066acdd81";
     30     anastasis.url = "git+https://git.gnunet.org/anastasis?rev=c55bf5de869065cafbd4b05edcd16980f7f1abae";
     31     self.submodules = true;
     32   };
     33 
     34   outputs = { self, nixpkgs, gnunet, exchange, donau, merchant, anastasis, systems, ... } @ inputs:
     35     let
     36       supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];
     37       forEachSystem = nixpkgs.lib.genAttrs supportedSystems;
     38       nixpkgsFor = forEachSystem (system: import nixpkgs { inherit system; });
     39     in
     40     {
     41       # This defines (installable) package derivations
     42       # For use in flakes that use this flake as input in order
     43       # to specify/use this package from git as a dependency
     44       packages = forEachSystem (system:
     45         let
     46           pkgs = nixpkgsFor.${system};
     47           gnunetpkgs = gnunet.packages.${system};
     48           exchangepkgs = exchange.packages.${system};
     49           donaupkgs = donau.packages.${system};
     50           merchantpkgs = merchant.packages.${system};
     51           anastasispkgs = anastasis.packages.${system};
     52         in {
     53           anastasisgtk = pkgs.stdenv.mkDerivation {
     54             name = "anastasis-gtk";
     55             src = ./.;
     56             nativeBuildInputs = [
     57               pkgs.gnumake
     58               pkgs.meson
     59               pkgs.ninja
     60               pkgs.pkg-config
     61              ];
     62             buildInputs = [
     63               pkgs.libtool
     64               pkgs.jansson
     65               pkgs.git
     66               pkgs.gettext
     67               pkgs.libmicrohttpd
     68               pkgs.curlWithGnuTls
     69               pkgs.qrencode
     70               pkgs.libharu
     71               pkgs.glade
     72               pkgs.glib
     73               pkgs.gtk3
     74               gnunetpkgs.gnunet
     75               exchangepkgs.exchange
     76               donaupkgs.donau
     77               merchantpkgs.merchant
     78               anastasispkgs.anastasis
     79              ];
     80             preConfigure = ''
     81               patchShebangs --build contrib/check-prebuilt
     82               ./bootstrap
     83             '';
     84           };
     85         }
     86       );
     87       defaultPackage = forEachSystem (system: self.packages.${system}.anastasis);
     88       # This defines a development shell in which you can compile
     89       # (and use) exchange
     90        devShells = forEachSystem
     91         (system:
     92           let
     93             pkgs = nixpkgsFor.${system};
     94             gnunetpkgs = gnunet.packages.${system};
     95             exchangepkgs = exchange.packages.${system};
     96             donaupkgs = donau.packages.${system};
     97             merchantpkgs = merchant.packages.${system};
     98             anastasispkgs = anastasis.packages.${system};
     99           in
    100           {
    101             default = pkgs.mkShell {
    102               packages = [
    103                 pkgs.gcc
    104                 pkgs.meson
    105                 pkgs.ninja
    106                 pkgs.gnumake
    107                 pkgs.pkg-config
    108                 pkgs.libtool
    109                 pkgs.git
    110                 pkgs.gettext
    111                 pkgs.curlWithGnuTls
    112                 gnunetpkgs.gnunet
    113                 pkgs.codespell
    114                 pkgs.clang-tools
    115                 pkgs.uncrustify
    116                 pkgs.qrencode
    117                 pkgs.libharu
    118                 pkgs.glade
    119                 pkgs.glib
    120                 pkgs.gtk3
    121                 exchangepkgs.exchange
    122                 donaupkgs.donau
    123                 merchantpkgs.merchant
    124                 anastasispkgs.anastasis
    125               ];
    126 
    127               shellHook = ''
    128                 echo "anastasis-gtk environment loaded."
    129                 export CC=gcc
    130                 export CFLAGS="-O"
    131                '';
    132             };
    133           });
    134     };
    135 }