anchor.diff:        default = false;
         description = "Use TOR for all zeronet traffic.";
       };
  -
  -    extraConfig = mkOption {
  -      type = types.lines;
  -      default = "";
  -
  -      description = ''
  -        Extra configuration. Contents will be added verbatim to the
  -        configuration file at the end.
  -      '';
  -    };
     };
   
     config = mkIf cfg.enable {
       services.tor = mkIf cfg.tor {
         enable = true;
         controlPort = 9051;
  +
         extraConfig = ''
           CacheDirectoryGroupReadable 1
           CookieAuthentication 1
  
positive.code: { config, lib, pkgs, ... }:
  
  let
    cfg = config.services.zeronet;
  
    zConfFile = pkgs.writeTextFile {
      name = "zeronet.conf";
  
      text = ''
        [global]
        data_dir = ${cfg.dataDir}
        log_dir = ${cfg.logDir}
      '' + lib.optionalString (cfg.port != null) ''
        ui_port = ${toString cfg.port}
      '' + lib.optionalString (cfg.fileserverPort != null) ''
        fileserver_port = ${toString cfg.fileserverPort}
      '' + lib.optionalString (cfg.torAlways) ''
        tor = always
      '' + cfg.extraConfig;
    };
  in with lib; {
    options.services.zeronet = {
      enable = mkEnableOption "zeronet";
  
      dataDir = mkOption {
        type = types.path;
        default = "/var/lib/zeronet";
        example = "/home/okina/zeronet";
        description = "Path to the zeronet data directory.";
      };
  
      logDir = mkOption {
        type = types.path;
        default = "/var/log/zeronet";
        example = "/home/okina/zeronet/log";
        description = "Path to the zeronet log directory.";
      };
  
      port = mkOption {
        type = types.nullOr types.int;
        default = null;
        example = 43110;
        description = "Optional zeronet web UI port.";
      };
  
negative.code:       '';
      };
  
      systemd.services.zeronet = {
        description = "zeronet";
        after = [ "network.target" (optionalString cfg.tor "tor.service") ];
        wantedBy = [ "multi-user.target" ];
  
        serviceConfig = {
          User = "zeronet";
          DynamicUser = true;
          StateDirectory = "zeronet";
          SupplementaryGroups = mkIf cfg.tor [ "tor" ];
          ExecStart = "${pkgs.zeronet}/bin/zeronet --config_file ${configFile}";
        };
      };
    };
  
    imports = [
      (mkRemovedOptionModule [ "services" "zeronet" "dataDir" ] "Zeronet will store data by default in /var/lib/zeronet")
      (mkRemovedOptionModule [ "services" "zeronet" "logDir" ] "Zeronet will log by default in /var/lib/zeronet")
    ];
  
    meta.maintainers = with maintainers; [ chiiruno ];
  }
  