anchor.diff:  
   with lib;
   
  -{
  +let
   
  -  ###### interface
  +  cfg = config.services.freefall;
   
  -  options = with types; {
  +in {
   
  -    services.freefall = {
  +  options.services.freefall = {
   
  -      enable = mkOption {
  -        default = false;
  -        description = ''
  -          Whether to protect HP/Dell laptop hard drives (not SSDs) in free fall.
  -        '';
  -        type = bool;
  -      };
  +    enable = mkOption {
  +      type = types.bool;
  +      default = false;
  +      description = ''
  +        Whether to protect HP/Dell laptop hard drives (not SSDs) in free fall.
  +      '';
  +    };
   
  -      devices = mkOption {
  -        default = [ "/dev/sda" ];
  -        description = ''
  -          Device paths to all internal spinning hard drives.
  -        '';
  -        type = listOf string;
  -      };
  +    package = mkOption {
  +      type = types.package;
  +      default = pkgs.freefall;
  +      description = ''
  +        freefall derivation to use.
  +      '';
  +    };
   
  +    devices = mkOption {
  +      type = types.listOf types.string;
  +      default = [ "/dev/sda" ];
  +      description = ''
  +        Device paths to all internal spinning hard drives.
  +      '';
       };
   
     };
   
  -  ###### implementation
  -
     config = let
  -
  -    cfg = config.services.freefall;
   
       mkService = dev:
         assert dev != "";
  
positive.code: 
    in mkIf cfg.enable {
  
      environment.systemPackages = [ pkgs.freefall ];
  
      systemd.services = listToAttrs (map mkService cfg.devices);
  
    };
  
  
negative.code:         description = "Free-fall protection for ${dev}";
          after = [ "${dev'}.device" ];
          wantedBy = [ "${dev'}.device" ];
          serviceConfig = {
            ExecStart = "${cfg.package}/bin/freefall ${dev}";
            Restart = "on-failure";
            Type = "forking";
          };
  