From 4d0761beb22ef28d007ecf21b69eec01fb0568fd Mon Sep 17 00:00:00 2001 From: Marc Weber Date: Fri, 6 Mar 2009 12:26:43 +0000 Subject: [PATCH] Convert "vsftpd" svn path=/nixos/branches/fix-style/; revision=14383 --- system/options.nix | 38 +------- upstart-jobs/default.nix | 8 -- upstart-jobs/vsftpd.nix | 184 ++++++++++++++++++++++++--------------- 3 files changed, 113 insertions(+), 117 deletions(-) diff --git a/system/options.nix b/system/options.nix index ad7f28c5484..f70abacc359 100644 --- a/system/options.nix +++ b/system/options.nix @@ -479,43 +479,6 @@ in }; - vsftpd = { - enable = mkOption { - default = false; - description = " - Whether to enable the vsftpd FTP server. - "; - }; - - anonymousUser = mkOption { - default = false; - description = " - Whether to enable the anonymous FTP user. - "; - }; - - writeEnable = mkOption { - default = false; - description = " - Whether any write activity is permitted to users. - "; - }; - - anonymousUploadEnable = mkOption { - default = false; - description = " - Whether any uploads are permitted to anonymous users. - "; - }; - - anonymousMkdirEnable = mkOption { - default = false; - description = " - Whether mkdir is permitted to anonymous users. - "; - }; - }; - printing = { enable = mkOption { @@ -1062,6 +1025,7 @@ in (import ../upstart-jobs/tomcat.nix) # untested, too lazy to get that jdk (import ../upstart-jobs/httpd.nix) # Apache httpd (probably this can be removed ?) (import ../upstart-jobs/apache-httpd) # Apache httpd (new style). + (import ../upstart-jobs/vsftpd.nix) # nix (import ../upstart-jobs/nix.nix) # nix options and daemon diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 347af40204e..1ca038c9221 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -172,14 +172,6 @@ let inherit config pkgs modprobe; }) - # VSFTPd server - ++ optional config.services.vsftpd.enable - (import ../upstart-jobs/vsftpd.nix { - inherit (pkgs) vsftpd; - inherit (config.services.vsftpd) anonymousUser - writeEnable anonymousUploadEnable anonymousMkdirEnable; - }) - # X Font Server ++ optional config.services.xfs.enable (import ../upstart-jobs/xfs.nix { diff --git a/upstart-jobs/vsftpd.nix b/upstart-jobs/vsftpd.nix index 01a509ea679..22d11eab51b 100644 --- a/upstart-jobs/vsftpd.nix +++ b/upstart-jobs/vsftpd.nix @@ -1,80 +1,120 @@ -{ vsftpd, anonymousUser -, anonymousUploadEnable, anonymousMkdirEnable, writeEnable -}: +{pkgs, config, ...}: -{ - name = "vsftpd"; +###### interface +let + inherit (pkgs.lib) mkOption mkIf; - groups = [ - { name = "ftp"; - gid = (import ../system/ids.nix).gids.ftp; - } + options = { + services = { + vsftpd = { + enable = mkOption { + default = false; + description = " + Whether to enable the vsftpd FTP server. + "; + }; + + anonymousUser = mkOption { + default = false; + description = " + Whether to enable the anonymous FTP user. + "; + }; + + writeEnable = mkOption { + default = false; + description = " + Whether any write activity is permitted to users. + "; + }; + + anonymousUploadEnable = mkOption { + default = false; + description = " + Whether any uploads are permitted to anonymous users. + "; + }; + + anonymousMkdirEnable = mkOption { + default = false; + description = " + Whether mkdir is permitted to anonymous users. + "; + }; + }; + }; + }; +in + +###### implementation + +let + + inherit (config.services.vsftpd) anonymousUser writeEnable anonymousUploadEnable anonymousMkdirEnable; + inherit (pkgs) vsftpd; + + yesNoOption = p : name : + "${name}=${if p then "YES" else "NO"}"; + +in + +mkIf config.services.vsftpd.enable { + require = [ + options ]; - - users = [ - { name = "vsftpd"; - uid = (import ../system/ids.nix).uids.vsftpd; - description = "VSFTPD user"; - home = "/homeless-shelter"; - } - ] ++ - (if anonymousUser then [ - { name = "ftp"; - uid = (import ../system/ids.nix).uids.ftp; - group = "ftp"; - description = "Anonymous ftp user"; - home = "/home/ftp"; - } - ] - else - []); - - job = " -description \"vsftpd server\" -start on network-interfaces/started -stop on network-interfaces/stop + users = { + extraUsers = [ + { name = "vsftpd"; + uid = (import ../system/ids.nix).uids.vsftpd; + description = "VSFTPD user"; + home = "/homeless-shelter"; + } + ] ++ pkgs.lib.optional anonymousUser + { name = "ftp"; + uid = (import ../system/ids.nix).uids.ftp; + group = "ftp"; + description = "Anonymous ftp user"; + home = "/home/ftp"; + }; -start script - cat > /etc/vsftpd.conf < /etc/vsftpd.conf <