Menu

Install the desktop app

The desktop app runs your own Dassie node on the computer you use every day, with its wallet in a window. You need no server, no public address and no domain. Today it runs on Linux, and you install it with Nix.

On this page
  1. What you need
  2. Try it
  3. Install it
  4. First start
  5. Where things are
  6. If it does not start

What you need

  • A Linux desktop on x86-64.
  • Nix, the package manager. It runs beside your distribution's own packages and changes nothing of them. On NixOS you have it already.
  • A tray, for the app's icon. KDE, Xfce, Cinnamon and most other desktops have one. GNOME shows tray icons only with an extension, such as AppIndicator and KStatusNotifierItem Support. Without a tray the app still runs: see Tray, login and quitting.

Nix builds the app from Dassie's source, the wallet included. That takes a while, so start it when you have a few minutes to spare. Once you have installed it, the app starts in a moment. A nix run of the main branch, below, builds again whenever the branch has moved since you last ran it.

Packages for other distributions, macOS and Windows are not there yet, and neither is the app in the release mirror's signed flake. What's next

Try it

To run the app once, without installing it, run this in a terminal:

$nix run github:justmoon/dassie#desktop

If Nix says that nix-command or flakes is an experimental feature, turn them on for this command:

$nix --extra-experimental-features 'nix-command flakes' run github:justmoon/dassie#desktop

This builds the newest commit on Dassie's main branch. To build a release instead, which Nix builds once and then starts in a moment, put its tag after the repository's name, as in github:justmoon/dassie/<tag>#desktop. The release notes list the releases and their tags.

An app started with nix run does not start itself at login, since the path it runs from can go away with Nix's next cleanup. Install it, below, if you want your node to run whenever you are logged in.

Install it

To keep the app, add it to your Nix profile:

$nix profile add github:justmoon/dassie#desktop
# older Nix calls it: nix profile install github:justmoon/dassie#desktop

Dassie then shows up among your applications, and the command dassie-desktop is on your PATH. To update it later, run nix profile upgrade --all, quit the app and start it again.

On NixOS

Add Dassie's repository as an input of your system's flake, and the app to your packages:

flake.nix
{
  inputs.dassie.url = "github:justmoon/dassie";

  outputs = { nixpkgs, dassie, ... }: {
    nixosConfigurations.my-laptop = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        ./configuration.nix
        {
          environment.systemPackages = [
            dassie.packages.x86_64-linux.desktop
          ];
        }
      ];
    };
  };
}

Your flake's lock file pins the commit you build, and nix flake update dassie moves it to the newest one. This is the desktop app only. To run a node on a server with NixOS, follow Dassie on NixOS.

First start

Start Dassie from your applications, or run dassie-desktop. The window says Starting your node… and then opens the wallet, which asks you to set up your node.

  1. Choose Generate a new wallet, or Recover an existing wallet if you already have a recovery phrase.
  2. Write down the 20 words of your new phrase, in order, on paper. They are your node and its money: anyone who knows them controls both, and nobody can give them back to you if you lose them. Back up your phrase says how to keep them.
  3. Enter the word the wallet asks for, to show that you wrote them down. The wallet then sets your node up and opens.

The phrase never leaves the window: the wallet derives your node's key from it and hands the node only the key. Set up your wallet walks through setup in more detail, and Your recovery phrase explains what the phrase holds.

Then add your first ledger, and join the testnet's XRP hub. Peers settle only through settlement hubs, so your node finds its first peers once it is in one. The wallet joins no hub by itself: Joining a hub shows how.

From then on, closing the window leaves your node running, with an icon in the tray. Tray, login and quitting says how to open it again and how to stop it, and How others reach you says how payments find a node on a laptop.

Why it works this way: the node in the app's own process, the wallet from the node's own address, and a Nix package first.

Where things are

The node in the app is the same node a server runs, and it keeps its data in the same place a node run by your user does.

What Where
The node's database ~/.local/share/dassie, or $XDG_DATA_HOME/dassie where that is set
The node's IPC socket, for the dassie command $XDG_RUNTIME_DIR/dassie.sock
The app's own files: the wallet's port, whether to start at login, and the window's cookies, cache and storage ~/.local/share/land.dassie.desktop, or $XDG_DATA_HOME/land.dassie.desktop where that is set

The app keeps all of these to your user alone: what it writes is readable by you only, and it tightens its directories to that if they are looser. The window's session cookie lets whoever reads it into your wallet, so keep it that way. Files, ports and sockets lists every file and port.

The node reads the same environment variables as a server's node, such as DASSIE_LOG and DASSIE_RELAY, when the app starts. Environment variables lists them all. The dassie command works on the app's node too, over its socket, with no sudo. The app does not bring the command along; Nix runs it for you:

$nix run github:justmoon/dassie -- status

If it does not start

When the node cannot start, the window says Your node could not start, with the reason. Closing that window quits the app. These are the usual reasons:

  • Another node uses the same data. Only one node runs on a data directory at a time. If you also run dassie daemon as your user, stop it first. Starting the app a second time does no harm: it only shows the first one's window.
  • The wallet's port was taken between the app choosing it and the node opening it. Start the app again: it chooses another.
  • The database was made for the early testnet. Dassie 0.3.0 reset the testnet, and reads no database or phrase from before. Quit the app, move ~/.local/share/dassie aside, start the app again, and set your node up with a new phrase.

If an environment variable has a value the node cannot use, the app does not open at all. Start it from a terminal, and it says which variable and why.

To see the node's log, quit the app and start it from a terminal, where the log appears. DASSIE_LOG=debug dassie-desktop shows more of it.

If the window opens but stays blank, your graphics driver may not get along with WebKitGTK, the engine that draws the window. Starting the app with WEBKIT_DISABLE_DMABUF_RENDERER=1 set often helps. If it does not, ask for help and say which distribution and graphics card you use.

A kopje of granite blocks against the sun, in veld grass; one dassie climbs its slab, one keeps lookout on top inside the sun, and one sleeps on the next rock; on a wide screen, a pair sits on a kopje to the left