{ pkgs, lib, config, ... }: with lib; let cfg = config.module.ftpd; in { options = { module.ftpd = { enable = mkEnableOption "Enable FTP server"; storage = mkOption { default = null; type = types.str; }; }; }; config = mkIf cfg.enable { services.vsftpd = { enable = true; anonymousUser = true; anonymousUserNoPassword = true; anonymousUploadEnable = true; anonymousMkdirEnable = true; anonymousUmask = "000"; anonymousUserHome = cfg.storage; allowWriteableChroot = true; writeEnable = true; localUsers = false; extraConfig = '' anon_other_write_enable=YES ''; }; }; }