anchor.diff:      mapAttrsToList (k: v: "alias ${k}='${v}'") cfg.shellAliases
     );
   
  -  fileType = types.submodule (
  +  fileType = textGen: types.submodule (
       { name, config, ... }: {
         options = {
           body = mkOption {
             default = null;
             type = types.nullOr types.lines;
  -          description = "Body of the function.";
  +          description = "Body of the file.";
           };
   
           source = mkOption {
  
positive.code:         source = mkIf (config.body != null) (
            mkDefault (pkgs.writeTextFile {
              inherit name;
              text = ''
              function ${name}
                ${config.body}
              end
              '';
              executable = true;
            })
          );
  
negative.code:     };
  
      programs.fish.functions = mkOption {
        type = types.attrsOf (fileType (name: body: ''
              function ${name}
                ${body}
              end
              ''));
        default = {};
        description = ''
          Functions to add to fish.
        '';
      };
  
      programs.fish.completions = mkOption {
        type = types.attrsOf (fileType (name: body: body));
        default = {};
        description = ''
          Completions to add to fish.
        '';
      };
    };
  