Skip to content
Daedalus - cryptocurrency wallet
Branch: develop
Clone or download
Pull request Compare This branch is 2630 commits behind input-output-hk:develop.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.buildkite
.github
.storybook
features
flow
installers
scripts
source
storybook
tests
tls
translations
.babelrc
.editorconfig
.eslintignore
.eslintrc
.flowconfig
.gitignore
.nonsense
.nvmrc
CHANGELOG.md
LICENSE
README.md
appveyor.yml
cardano-sl-src.json
cardano-sl.nix
default.nix
fetch-nixpkgs.nix
fetchNixpkgs.nix
gulpfile.js
installer-clusters.cfg
launcher-config.yaml
lib.nix
nixpkgs-src.json
nodemon.json
package-lock.json
package.json
release.nix
shell.nix
yarn.lock
yarn2nix.nix

README.md

Document maintainer: Nikola Glumac
Document status: Active

Daedalus

Build status Windows build status Release

Daedalus - cryptocurrency wallet

Automated build

CI/dev build scripts

Platform-specific build scripts facilitate building Daedalus the way it is built by the IOHK CI:

Linux/macOS

This script requires Nix, (optionally) configured with the IOHK binary cache.

scripts/build-installer-unix.sh [OPTIONS..]

The result can be found at installers/csl-daedalus/daedalus-*.pkg.

Pure Nix installer build

This will use nix to build a Linux installer. Using the IOHK binary cache will speed things up.

nix build -f ./release.nix mainnet.installer

The result can be found at ./result/daedalus-*.bin.

Nix Shell

shell.nix provides a way to load a shell with all the correct versions of all the required dependencies for development. Run nix-shell in the daedalus directory to start the shell.

shell.nix also provides a script for updating yarn.lock. Run nix-shell -A fixYarnLock to update yarn.lock file.

Windows

This batch file requires Node.js and 7zip.

scripts/build-installer-win64.bat

The result will can be found at .\daedalus-*.exe.

Stepwise build

Install Node.js dependencies.

To ensure secure and reproducible builds we are using yarn to manage dependencies.

$ yarn install

Development

Run with:

$ export CARDANO_TLS_PATH={path-to-cardano-sl}/run/tls-files/
$ yarn run dev

Note: requires a node version >= 8 and an yarn version >= 1.7.0.

Development - with Cardano Wallet

Build and run Cardano SL

Build with:

$ brew install haskell-stack # OR curl -ssl https://get.haskellstack.org/ | sh
$ stack setup
$ stack install cpphs
$ brew install xz # OR sudo apt-get install xz-utils
$ brew install rocksdb # OR sudo apt-get install librocksdb-dev
$ git clone git@github.com:input-output-hk/cardano-sl.git
$ cd cardano-sl/
$ ./scripts/build/cardano-sl.sh

Run with:

$ tmux new-session -s cardano
$ WALLET_CLIENT_AUTH_DISABLE=1 ./scripts/launch/demo-with-wallet-api.sh

Stop with:

$ tmux kill-session -t cardano

Development - network options

There are three different network options you can run Daedalus in: mainnet, testnet and development (default). To set desired network option use NETWORK environment variable:

$ export NETWORK=testnet
$ yarn run dev

Testing

You can run the test suite in two different modes:

One-time run: For running tests once using the application in production mode:

$ yarn run test

Watch & Rerun on file changes: For development purposes run the tests continuously in watch mode which will re-run tests when source code changes:

$ yarn run test:watch

You can find more details regarding tests setup within Running Daedalus acceptance tests README file.

CSS Modules

This boilerplate out of the box is configured to use css-modules.

All .css file extensions will use css-modules unless it has .global.css.

If you need global styles, stylesheets with .global.css will not go through the css-modules loader. e.g. app.global.css

Externals

If you use any 3rd party libraries which can't or won't be built with webpack, you must list them in your webpack.config.base.js

externals: [
  // put your node 3rd party libraries which can't be built with webpack here (mysql, mongodb, and so on..)
]

For a common example, to install Bootstrap, yarn install --save bootstrap and link them in the head of app.html

<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.css" />
<link rel="image/svg+xml" href="../node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.eot" />
...

Make sure to list bootstrap in externals in webpack.config.base.js or the app won't include them in the package:

externals: ['bootstrap']

Packaging

$ yarn run package

To package apps for all platforms:

$ yarn run package:all

To package apps with options:

$ yarn run package -- --[option]

Options

  • --name, -n: Application name (default: ElectronReact)
  • --version, -v: Electron version (default: latest version)
  • --asar, -a: asar support (default: false)
  • --icon, -i: Application icon
  • --all: pack for all platforms

Use electron-packager to pack your app with --all options for darwin (osx), linux and win32 (windows) platform. After build, you will find them in release folder. Otherwise, you will only find one for your os.

You can’t perform that action at this time.