122 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  description = "totato flake";
 | 
						|
 | 
						|
  # https://youtu.be/7ZeTP_S6ZVI
 | 
						|
 | 
						|
  inputs = {
 | 
						|
    nixpkgs.url = "github:NixOS/nixpkgs/release-24.11";
 | 
						|
    flake-utils.url = "github:numtide/flake-utils";
 | 
						|
  };
 | 
						|
 | 
						|
  outputs = { self, nixpkgs, flake-utils }:
 | 
						|
    flake-utils.lib.eachDefaultSystem (system:
 | 
						|
    let
 | 
						|
      pkgs = import nixpkgs { inherit system; };
 | 
						|
 | 
						|
      # get deps
 | 
						|
      # TODO: move to inputs and lock file
 | 
						|
      toxcore-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "TokTok"; repo = "c-toxcore";
 | 
						|
        fetchSubmodules = true;
 | 
						|
        rev = "v0.2.20";
 | 
						|
        hash = "sha256-jJk3K1wDG84NtMQBmNvSDRMPYUsYIzjE0emiZ4Ugbhk=";
 | 
						|
      };
 | 
						|
      entt-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "skypjack"; repo = "entt";
 | 
						|
        rev = "v3.12.2";
 | 
						|
        hash = "sha256-gzoea3IbmpkIZYrfTZA6YgcnDU5EKdXF5Y7Yz2Uaj4A=";
 | 
						|
      };
 | 
						|
      solanaceae_util-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_util";
 | 
						|
        rev = "6cbcc9463ce3c4344e06d74d7df67175ada83b5f";
 | 
						|
        hash = "sha256-puWLMzCWLBQEsslIJE9sGA7fqp8v93J4zixyu64TqhY=";
 | 
						|
      };
 | 
						|
      solanaceae_contact-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_contact";
 | 
						|
        rev = "e2917c497c91f91f8febcd1f43e462fad8359305";
 | 
						|
        hash = "sha256-gM9aT+lk+TmgiLyIeaGvHSpo55C+RNEnJvzFPLXrVMc=";
 | 
						|
      };
 | 
						|
      solanaceae_message3-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_message3";
 | 
						|
        rev = "e55fb46027f16a1bc078f797ae9fcc7609d15659";
 | 
						|
        hash = "sha256-BdwHBCXWLiVL26djyasQEPW1PbwKCkeXdUivkPaQD3c=";
 | 
						|
      };
 | 
						|
      solanaceae_plugin-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_plugin";
 | 
						|
        rev = "54cd23433df4acedede51e932f27d16fe4f35548";
 | 
						|
        hash = "sha256-Yy58w1PJFzIiN8kjqe7zerG9HewcdlBcN9P/YsjFCQs=";
 | 
						|
      };
 | 
						|
      solanaceae_toxcore-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_toxcore";
 | 
						|
        rev = "727c341899a82c911a27a5cac6d09bb23ce06b1d";
 | 
						|
        hash = "sha256-pI0ZKX6h/DMC9m0z4yC38kqGRP34ES12U9LcuO14fO0=";
 | 
						|
      };
 | 
						|
      solanaceae_tox-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_tox";
 | 
						|
        rev = "8ad10978b96837eb7949f32ef433c5b37c2aa458";
 | 
						|
        hash = "sha256-0eV8tf1CDG1xHxKmDHBMSP/5hMoB2qRagOj1meHcEFY=";
 | 
						|
      };
 | 
						|
      solanaceae_object_store-src = pkgs.fetchFromGitHub {
 | 
						|
        owner = "Green-Sky"; repo = "solanaceae_object_store";
 | 
						|
        rev = "18d2888e3452074245375f329d90520ac250b595";
 | 
						|
        hash = "sha256-vfFepPHj58c8YBSa8G8bJjD6gcCj65T0Kx5aEhqsjok=";
 | 
						|
      };
 | 
						|
 | 
						|
      pname = "totato";
 | 
						|
      version = "0.0.0-dev";
 | 
						|
 | 
						|
      src = ./.;
 | 
						|
 | 
						|
      nativeBuildInputs = with pkgs; [
 | 
						|
        cmake
 | 
						|
        ninja
 | 
						|
        pkg-config
 | 
						|
      ];
 | 
						|
 | 
						|
      cmakeFlags = [
 | 
						|
        #"-DFETCHCONTENT_SOURCE_DIR_TOXCORE=${pkgs.libtoxcore.src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_TOXCORE=${toxcore-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_ENTT=${entt-src}" # the version is important
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_UTIL=${solanaceae_util-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_CONTACT=${solanaceae_contact-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_MESSAGE3=${solanaceae_message3-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_PLUGIN=${solanaceae_plugin-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_TOXCORE=${solanaceae_toxcore-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_TOX=${solanaceae_tox-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_SOLANACEAE_OBJECT_STORE=${solanaceae_object_store-src}"
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_JSON=${pkgs.nlohmann_json.src}" # we care less about version here
 | 
						|
        "-DFETCHCONTENT_SOURCE_DIR_ZSTD=${pkgs.zstd.src}"
 | 
						|
      ];
 | 
						|
 | 
						|
      # TODO: replace with install command
 | 
						|
      installPhase = ''
 | 
						|
        mkdir -p $out/bin
 | 
						|
        mv bin/totato $out/bin
 | 
						|
      '';
 | 
						|
    in {
 | 
						|
      packages.default = pkgs.stdenv.mkDerivation {
 | 
						|
        inherit pname version src nativeBuildInputs cmakeFlags installPhase;
 | 
						|
 | 
						|
        # static libsodium, because I can
 | 
						|
        buildInputs = with pkgs.pkgsStatic; [
 | 
						|
          libsodium
 | 
						|
        ];
 | 
						|
      };
 | 
						|
 | 
						|
      # all static, kinda useless, since dlopen() wont work to load plugins
 | 
						|
      packages.static = pkgs.pkgsStatic.stdenv.mkDerivation {
 | 
						|
        inherit pname version src nativeBuildInputs cmakeFlags installPhase;
 | 
						|
 | 
						|
        buildInputs = with pkgs.pkgsStatic; [
 | 
						|
          libsodium
 | 
						|
        ];
 | 
						|
      };
 | 
						|
 | 
						|
      #apps.default = {
 | 
						|
        #type = "app";
 | 
						|
        #program = "${self.packages.${system}.default}/bin/tomato";
 | 
						|
      #};
 | 
						|
    }
 | 
						|
  );
 | 
						|
}
 |