anchor.diff:    ###### implementation
   
     config = mkIf cfg.enable {
  -    environment.systemPackages = [ wrapped ];
  +    environment.systemPackages = [ pkgs.ipfs ];
  +    environment.variables.IPFS_PATH = cfg.dataDir;
  +
       programs.fuse = mkIf cfg.autoMount {
         userAllowOther = true;
       };
  
positive.code:       serviceConfig = {
          Type = "oneshot";
          RemainAfterExit = true;
        };
      };
  
      # TODO These 3 definitions possibly be further abstracted through use of a function
      # like: mutexServices "ipfs" [ "", "offline", "norouting" ] { ... shared conf here ... }
  
      systemd.services.ipfs = recursiveUpdate baseService {
        description = "IPFS Daemon";
        wantedBy = mkIf (cfg.defaultMode == "online") [ "multi-user.target" ];
        after = [ "network.target" "ipfs-init.service" ];
        conflicts = [ "ipfs-offline.service" "ipfs-norouting.service"];
      };
  
      systemd.services.ipfs-offline = recursiveUpdate baseService {
        description = "IPFS Daemon (offline mode)";
        wantedBy = mkIf (cfg.defaultMode == "offline") [ "multi-user.target" ];
        after = [ "ipfs-init.service" ];
        conflicts = [ "ipfs.service" "ipfs-norouting.service"];
      };
  
      systemd.services.ipfs-norouting = recursiveUpdate baseService {
        description = "IPFS Daemon (no routing mode)";
        wantedBy = mkIf (cfg.defaultMode == "norouting") [ "multi-user.target" ];
        after = [ "ipfs-init.service" ];
        conflicts = [ "ipfs.service" "ipfs-offline.service"];
      };
  
    };
  
negative.code: { config, lib, pkgs, ... }:
  with lib;
  let
    cfg = config.services.ipfs;
  
    ipfsFlags = toString ([
  