[Nix-dev] ZeroTier-One service

stewart mackenzie setori88 at gmail.com
Wed Jun 24 07:26:51 CEST 2015


So, I'm setting up a service for ZeroTier-One, the issue arises when
the ZeroTierOne service tries to start.

After doing a `sudo nixos-rebuild build-vm -I
nixpkgs=~/nixdev/nixpkgs/ --fallback -j 8 --cores 8 --fast`
then `./result/bin/run-rivergod-vm`

once logged in to the vm I issue `sudo systemctl status zerotierone.service`
* zerotierone.service - ZeroTierOne
    Loaded: loaded
(/nix/store/nn7...-unit-zerotierone.service/zerotierone.service)
    Active: active (exited) (Result: exit-code) since Wed <the date>; 43s ago
    Process: 592
ExecStart=/nix/store/sxzz...-zerotierone/bin/zerotier-one -d home
/var/zerotierone (code=exited, status=226/NAMESPACE)
  Main PID: 592 (code=exited, status=226/NAMESPACE)
    CGroup: /system.slice/zerotierone.service

Jun 24 <time> <host> systemd[1]: Started ZeroTierOne.
Jun 24 <time> <host> systemd[592]: Failed at step NAMESPACE spawning
/nix/store/sxzz....-zerotierone/bin/zerotier-one: No such file or
directory
Jun 24 <time> <host> systemd[1]: zerotierone.service: main process
exited, code=exited, status=226/NAMESPACE

------ </snip>

Now to prove the directory exists I `cd /nix/store/sxzz*` without a problem

The below is the
nixdev/nixpkgs/nixos/modules/services/networking/zerotierone.nix
Please note the zerotier-one binary needs to be run as root.

What is the cause of the above 226/NAMESPACE error?


{ config, lib, pkgs, ... }:

with lib;

let
  cfg = config.services.zerotierone;
in
{
  options.services.zerotierone = {
    enable = mkOption {
      default = false;
      type = types.bool;
      description = "Whether to enable ZeroTierOne, the flat virtual
Ethernet networks of almost unlimited size.";
    };

    stateDir = mkOption {
      default = "/var/zerotierone";
      description = "Directory holding all state for zerotier-one to run.";
    };
  };

  config = mkIf cfg.enable {
    #environment.systemPackages = [ pkgs.zerotierone ];
    systemd.services.zerotierone = {
      description = "ZeroTierOne";
      path = [ pkgs.zerotierone ];
      after = [ "network.target" ];
      wantedBy = [ "multi-user.target" ];
#      preStart =
#        ''
#        mkdir -p ${cfg.stateDir}
#        chmod 700 ${cfg.stateDir}
#        chown -R root:root ${cfg.stateDir}
#        '';
      serviceConfig = {
#        Type = "oneshot";
        RemainAfterExit = true;
        ReadWriteDirectories = cfg.stateDir;
        User = "root";
        PIDFile = "/run/zerotier-one.pid";
        ExecStart = "${pkgs.zerotierone}/bin/zerotier-one -d home
${cfg.stateDir}";
        Restart = "on-failure";
        RestartSec = "10s";
        StartLimitInterval = "1min";
      };
    };
  };
}


More information about the nix-dev mailing list