Ethersync
Ethersync aims to enable real-time collaborative editing of local text files. Similar to Etherpads, it facilitates multiple users to work on content simultaneously, enabling applications such as shared notes or pair programming.
Declared in: projects/Ethersync/default.nix
Try the program in a shell
- 
    Install Nix
    
- Bash
 - 
  
$ apt install --yes curl git jq nix 
- Bash
 - 
  
$ apt install --yes curl git jq nix 
- Bash
 - 
  
$ pacman --sync --refresh --noconfirm curl git jq nix 
 - 
    Download a configuration file
    
# default.nix { ngipkgs ? import (fetchTarball "https://github.com/ngi-nix/ngipkgs/tarball/main") { }, }: ngipkgs.demo-shell ( { pkgs, ... }: { programs.ethersync.enable = true; programs.vscode = { enable = true; # vscodium because vscode is unfree package = pkgs.vscodium; extensions = [ pkgs.vscode-extensions.ethersync.ethersync ]; }; programs.neovim = { enable = true; configure = { packages.ethersync = { start = [ pkgs.vimPlugins.ethersync ]; }; }; }; } )
 - 
    Enable binary substituters
    
- Bash
 - 
  
$ export NIX_CONFIG='substituters = https://cache.nixos.org/ https://ngi.cachix.org/ trusted-public-keys = cache.nixos.org-1:6nchdd59x431o0gwypbmraurkbj16zpmqfgspcdshjy= ngi.cachix.org-1:n+cal72roc3qqulxihpv+tw5t42whxmmhpragkrsrow=' 
 - 
    Build and run the shell
    
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
- Bash
 - 
  
$ rev=$(nix-instantiate --eval --attr sources.nixpkgs.rev https://github.com/ngi-nix/ngipkgs/archive/master.tar.gz | jq --raw-output)$ nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz --packages nix --run "nix-build ./default.nix && ./result" 
- Bash
 - 
  
$ nix-build ./default.nix && ./result 
 - 
  Usage Instructions
  
- 
First, create a directory with a subdirectory named
.ethersyncand runethersync share, wait a few seconds it will print the secret key that can be used to connect to this server. - 
Next, create another directory with a subdirectory named
.ethersync, runecho peer="<secret-key>" >.ethersync/config, thenethersync join. The two directories are now connected. - 
You can now edit files in one directory and the changes will be synchronized in the other. If you use Neovim, the instance in this shell has also been configured with the Ethersync plugin, so you can try using :EthersyncInfo and :EthersyncJumpToCursor.
 
 - 
 
Options
programs.ethersync
- 
  
  
Whether to enable Ethersync.
- Type:
 boolean- Default:
 false- Declared in:
 - projects/Ethersync/programs/ethersync/module.nix
 
 - 
  
  
The ethersync package to use.
- Type:
 package- Default:
 pkgs.ethersync- Declared in:
 - projects/Ethersync/programs/ethersync/module.nix
 
 
programs.ethersync.enable
programs.ethersync.package
Examples
Enable Ethersync
{ pkgs, ... }: { programs.ethersync.enable = true; programs.vscode = { enable = true; # vscodium because vscode is unfree package = pkgs.vscodium; extensions = [ pkgs.vscode-extensions.ethersync.ethersync ]; }; programs.neovim = { enable = true; configure = { packages.ethersync = { start = [ pkgs.vimPlugins.ethersync ]; }; }; }; }
Declared in: projects/Ethersync/programs/ethersync/examples/basic.nix
This project is funded by NLnet through these subgrants:
Related links: