(define-module (komodo) #:use-module (cpprestsdk) #:use-module (gnu packages) #:use-module (gnu packages boost) #:use-module (gnu packages calendar) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages crypto) #:use-module (gnu packages game-development) #:use-module (gnu packages logging) #:use-module (gnu packages pretty-print) #:use-module (gnu packages qt) #:use-module (gnu packages tls) #:use-module (gnu packages version-control) #:use-module (guix build utils) #:use-module (guix build-system cmake) #:use-module (guix build-system qt) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) (define-public libsodium-komodo (package (inherit libsodium) (build-system cmake-build-system) (arguments (list #:phases #~ (modify-phases %standard-phases (add-after 'unpack 'add-cmakelists (lambda _ (copy-recursively #+ (local-file "komodo-libsodium-cmakelists.txt") "CMakeLists.txt") (copy-recursively #+ (local-file "komodo-libsodium-sodiumconfig.cmake.in") "sodiumConfig.cmake.in")))))))) (define komodo-wallet-version "0.7.0-beta") ;;; Git References (define expected-git-reference (git-reference (url "https://github.com/TartanLlama/expected") (commit "v1.1.0") (recursive? #t))) (define komodo-wallet-git-reference (git-reference (url "https://github.com/KomodoPlatform/komodo-wallet-desktop") (commit komodo-wallet-version))) ;;; Hashes (define expected-hash (content-hash "17akrv80h0n4cfmxwvlvbb8ycqza7y3qqygjyphv95rrabqm9r02")) (define jl777-coins-hash (content-hash "1icbd6f8nridzc93vz7hsr5dnkrf328zfsw6rrzifc7nvsr559w8")) (define komodo-wallet-hash (content-hash "0pfkgas0xkixf99zqzyri80ksp89b7dw7hbcgpp60ni2cnchxk2n")) (define mm2-hash (content-hash "1bn2sjcrp9ih44h3p96prnwg74aids7fgzcnlv3c68nan6y2lysi")) ;;; Package Origins (define expected-file-name (git-file-name "libexpected" "1.1.0")) (define expected-patches (search-patches "libexpected-use-provided-catch2.patch")) (define expected-origin (origin (uri expected-git-reference) (method git-fetch) (hash expected-hash) (file-name expected-file-name) (patches expected-patches))) (define jl777-coins-origin (origin (uri "https://github.com/KomodoPlatform/coins/archive/master.zip") (method url-fetch) (hash jl777-coins-hash))) (define komodo-wallet-origin (origin (uri komodo-wallet-git-reference) (method git-fetch) (hash komodo-wallet-hash))) (define mm2-origin (origin (uri "https://sdk.devbuilds.komodo.earth/main/mm2_b0fd99e-linux-x86-64.zip") (method url-fetch) (hash mm2-hash))) ;;; Path Constructors (define build-deps-prefix "../build/_deps/") (define expected-src "expected-src/") (define jl777-coins-src "jl777-coins-src/") (define mm2-src "mm2-src/") (define build-path-mm2 (string-append build-deps-prefix mm2-src)) (define build-path-jl777-coins (string-append build-deps-prefix jl777-coins-src)) (define build-path-expected (string-append build-deps-prefix expected-src)) ;;; Phase Definitions (define prepare-build-paths `(string-append "file(MAKE_DIRECTORY \"" ,build-path-expected "\")\n" "file(MAKE_DIRECTORY \"" ,build-path-jl777-coins "\")\n" "file(MAKE_DIRECTORY \"" ,build-path-mm2 "\")\n")) (define prepare-expected-src `(string-append "file(COPY " ,expected-origin "/ " "DESTINATION " ,build-path-expected " " "NO_SOURCE_PERMISSIONS FOLLOW_SYMLINK_CHAIN)\n")) (define prepare-jl777-coins-src `(string-append "file(ARCHIVE_EXTRACT INPUT " ,jl777-coins-origin " " "DESTINATION " ,build-path-jl777-coins ")\n" "file(COPY " ,build-path-jl777-coins "/coins-master/ " "DESTINATION " ,build-path-jl777-coins ")\n")) (define prepare-mm2-src `(string-append "file(ARCHIVE_EXTRACT INPUT " ,mm2-origin " " "DESTINATION " ,build-path-mm2 ")\n")) (define vcpkg-replacement `(string-append "\n" ,prepare-build-paths ,prepare-expected-src ,prepare-jl777-coins-src ,prepare-mm2-src "\n")) (define replace-vcpkg `(substitute* "CMakeLists.txt" (("include\\(vcpkg_prerequisites\\)") ,vcpkg-replacement))) ;;; Build Arguments (define komodo-wallet-configure-flags '(list "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" "-Wno-dev")) (define komodo-wallet-phases #~ (modify-phases %standard-phases (add-after 'unpack 'delete-vcpkg (lambda _ #+ replace-vcpkg)))) ;;; Package Definitions (define komodo-wallet-arguments (list #:phases komodo-wallet-phases #:configure-flags komodo-wallet-configure-flags)) (define komodo-wallet-description (string-append "Komodo Wallet is a secure wallet and non-custodial " "decentralized exchange rolled into one application. Store " "your coins, trade peer-to-peer with minimal fees and never " "give up control over your digital assets.")) (define komodo-wallet-native-inputs (list boost cpprestsdk date doctest entt fmt git libsodium-komodo nlohmann-json openssl qtcharts qtdeclarative-5 qttools-5 qtsvg-5 qtwebengine-5 range-v3 spdlog zlib)) (define-public komodo-wallet (package (name "komodo-wallet") (version komodo-wallet-version) (source komodo-wallet-origin) (build-system qt-build-system) (arguments komodo-wallet-arguments) (native-inputs komodo-wallet-native-inputs) (synopsis "Komodo Wallet Desktop GUI") (description komodo-wallet-description) (license license:gpl2) (home-page "https://atomicdex.io/")))