certs = mkOption {
description = "Default websites configuration for certificates as accepted by acme";
};
- webappDirs = mkOption {
- description = ''
- Defines a symlink between /run/current-system/webapps and a store
- app directory to be used in http configuration. Permits to avoid
- restarting httpd when only the folder name changes.
- '';
- type = types.attrsOf types.path;
- default = {};
- };
- webappDirsName = mkOption {
- type = str;
- default = "webapps";
- description = ''
- Name of the webapp dir to create in /run/current-system
- '';
- };
env = mkOption {
default = {};
description = "Each type of website to enable will target a distinct httpd server";
};
});
};
- # Readonly variables
- webappDirsPaths = mkOption {
- type = attrsOf path;
- readOnly = true;
- description = ''
- Full paths of the webapp dir
- '';
- default = attrsets.mapAttrs' (name: icfg: attrsets.nameValuePair
- name "/run/current-system/${cfg.webappDirsName}/${name}"
- ) cfg.webappDirs;
- };
};
config.services.httpd = let
}
) groupedCerts;
- config.system.extraSystemBuilderCmds = lib.mkIf (builtins.length (builtins.attrValues cfg.webappDirs) > 0) ''
- mkdir -p $out/${cfg.webappDirsName}
- ${builtins.concatStringsSep "\n"
- (attrsets.mapAttrsToList
- (name: path: "ln -s ${path} $out/${cfg.webappDirsName}/${name}") cfg.webappDirs)
- }
- '';
-
config.systemd.services = let
package = httpdName: config.services.httpd.${httpdName}.package.out;
cfgFile = httpdName: config.services.httpd.${httpdName}.configFile;