summaryrefslogtreecommitdiff
path: root/packages/komodo/komodo.scm
diff options
context:
space:
mode:
Diffstat (limited to 'packages/komodo/komodo.scm')
-rw-r--r--packages/komodo/komodo.scm178
1 files changed, 178 insertions, 0 deletions
diff --git a/packages/komodo/komodo.scm b/packages/komodo/komodo.scm
new file mode 100644
index 0000000..7ee7eae
--- /dev/null
+++ b/packages/komodo/komodo.scm
@@ -0,0 +1,178 @@
+(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 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 qt)
+ #:use-module (guix download)
+ #:use-module (guix gexp)
+ #:use-module (guix git-download)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (libsodium-komodo))
+
+(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/")))