anchor.diff:      };
     };
   
  -  config = let
  -    localDir = if (cfg.storageBackend == "file" || cfg.storageBackend == "file_transactional") then
  -                 let
  -                   matched = builtins.match ''.*path[ ]*=[ ]*"([^"]+)".*'' (toString cfg.storageConfig);
  -                 in
  -                   if matched == null then
  -                     throw ''`storageBackend` "${cfg.storageBackend}" requires path in `storageConfig`''
  -                   else
  -                     head matched
  -               else
  -                 null;
  -  in mkIf cfg.enable {
  +  config = mkIf cfg.enable {
  +    assertions = [
  +      { assertion = cfg.storageBackend == "inmem" -> (cfg.storagePath == null && cfg.storageConfig == null);
  +        message = ''The "inmem" storage expects no services.vault.storagePath nor services.vault.storageConfig'';
  +      }
  +      { assertion = (cfg.storageBackend == "file" -> (cfg.storagePath != null && cfg.storageConfig == null)) && (cfg.storagePath != null -> cfg.storageBackend == "file");
  +        message = ''You must set services.vault.storagePath only when using the "file" backend'';
  +      }
  +    ];
   
       users.extraUsers.vault = {
         name = "vault";
  
positive.code:       after = [ "network.target" ]
             ++ optional (config.services.consul.enable && cfg.storageBackend == "consul") "consul.service";
  
        preStart = optionalString (localDir != null) ''
          install -d -m0700 -o vault -g vault "${localDir}"
        '';
  
        serviceConfig = {
  
negative.code:       };
  
        storageBackend = mkOption {
          type = types.enum [ "inmem" "file" "consul" "zookeeper" "s3" "azure" "dynamodb" "etcd" "mssql" "mysql" "postgresql" "swift" "gcs" ];
          default = "inmem";
          description = "The name of the type of storage backend";
        };
  
        storagePath = mkOption {
          type = types.nullOr types.path;
          default = if cfg.storageBackend == "file" then "/var/lib/vault" else null;
          description = "Data directory for file backend";
        };
  
        storageConfig = mkOption {
          type = types.nullOr types.lines;
          default = null;
          description = "Storage configuration";
        };
  
        telemetryConfig = mkOption {
  