Faits : A. Propriétaire des parcelles n os 6087 et 6912 de la commune de Versoix, l'État de Genève y a réalisé une aire d'accueil, dite de la Bécassière, destinée aux forains et gens du voyage contraints de quitter le site dit du Molard. Exploitée depuis le 1 er septembre 2012, la nouvelle aire d'accueil compte 97 emplacements tracés au sol et numérotés. Le 31 octobre 2012, l'État de Genève, par le Département de l'urbanisme, a passé avec A.A._ et B.A._ un contrat de séjour portant sur les emplacements xxx, yyy et zzz, d'une surface totale de 684 m 2. Le contrat a été conclu pour une durée d'un an à partir du 1 er janvier 2013; il se renouvelait tacitement d'année en année, sauf préavis de départ de trois mois avant l'échéance. Le loyer mensuel a été fixé à 855 fr. Faisait partie intégrante du contrat le règlement intérieur de l'aire d'accueil de la Bécassière, établi par arrêté du 21 juin 2012 du Département cantonal des constructions et des technologies de l'information. Ce règlement prévoit notamment que seuls les usagers avec des véhicules en état de marche peuvent séjourner sur le terrain en question, strictement réservé à des installations mobiles (caravanes et mobile-homes), que toute construction non autorisée fera l'objet d'une dénonciation auprès des services compétents et que tout manquement au règlement entraînera en dernier lieu la résiliation du contrat de séjour. Par circulaire du 24 janvier 2013 aux forains et gens du voyage, le Département de l'urbanisme, par son Service de la gérance, a précisé que toute installation qui ne s'apparente pas directement à une structure de type mobile-home, caravane ou bloc-container doit faire l'objet d'une autorisation délivrée par les services compétents; cela concernait notamment les structures préfabriquées de type chalet, maison ou bungalow, même démontables ou dépourvues d'ancrages et/ou de fondations au sol. Cette circulaire sera complétée le 28 mars 2013 par l'indication des gabarits des mobile-homes acceptés sur le site de la Bécassière; il devait s'agir de structures de plain-pied et d'un seul niveau, avec un retrait de sécurité d'un mètre des limites tracées de l'emplacement, sans fondations ni ancrage au sol, déplaçables et démontables en tout temps. A.A._ envisageait de passer commande d'une maison de maître en bois. Par lettre du 1 er février 2013, le collaborateur du Département de l'urbanisme chargé du site lui recommanda alors de demander préalablement une autorisation à l'Office des autorisations de construire, car l'installation projetée s'éloignait passablement des véhicules de type mobile-home et caravane prévus sur l'aire d'accueil. A.A._ allègue avoir effectué des démarches auprès des autorités compétentes, sans jamais avoir reçu de réponse explicite. Devant évacuer rapidement le site du Molard, il a commandé un chalet en Pologne et commencé sa construction sur le site de la Bécassière. A la mi-août 2013, l'État de Genève a constaté les travaux en cours, effectués sans autorisation. Il en a informé les époux A._ par lettre du 26 août 2013. Il précisait que la construction constituait une infraction à la loi cantonale sur les constructions et installations diverses du 14 avril 1988 et qu'elle ne respectait ni les indications adressées aux titulaires d'emplacements ni le règlement intérieur; les intéressés étaient sommés de remettre le terrain dans son état d'origine dans un délai de trente jours, faute de quoi le contrat de séjour serait résilié. Par courrier du 4 septembre 2013, A.A._ a expliqué qu'il avait tenté de clarifier la situation avant d'entreprendre la construction, mais qu'il n'avait obtenu aucune réponse lui permettant de s'organiser différemment avant la date à laquelle il avait dû quitter le site du Molard avec son épouse et ses quatre enfants; il observait par ailleurs que le chalet respectait les conditions de surface au sol et qu'une construction similaire avait été transférée du terrain du Molard au site de la Bécassière. Par lettre du 26 septembre 2013, l'État de Genève a résilié le contrat de séjour des époux A._, avec effet au 31 décembre 2013. Par décision du 27 septembre 2013, l'Office de l'urbanisme a ordonné aux époux A._ de rétablir la situation conforme à la circulaire du 28 mars 2013 dans un délai de soixante jours. Le 8 février 2014, les époux A._ ont retiré le recours qu'ils avaient déposé contre cette décision. B. A.A._ et B.A._ ont contesté la résiliation du contrat de séjour à la fois devant la Commission de conciliation en matière de baux et loyers et devant la Chambre administrative de la Cour de justice. Cette dernière autorité s'estimera incompétente et déclarera le recours irrecevable. Le 17 février 2014, la Commission de conciliation a déclaré l'affaire non conciliée. Les époux A._ ont ouvert action devant le Tribunal des baux et loyers du canton de Genève, concluant à la nullité du congé, voire à son annulation et, subsidiairement, à l'octroi d'une première prolongation de bail de quatre ans. Par jugement du 5 juin 2014, le Tribunal des baux et loyers a rejeté "la contestation de congé" formée par les époux A._ et débouté les parties de toutes autres conclusions. Statuant le 12 janvier 2015 sur appel des demandeurs, la Chambre des baux et loyers de la Cour de justice du canton de Genève a confirmé le jugement de première instance. En substance, elle a considéré que le contrat conclu par les parties n'a pas pour objet une habitation au sens où le code des obligations l'entend, car il porte sur des emplacements aménagés pour des personnes par essence non sédentaires, réservés exclusivement à des installations mobiles sauf autorisation contraire. Ni les dispositions concernant la forme des congés pour les baux d'habitations (art. 266l et 266o CO), ni celles relatives à la protection contre les congés (art. 271 ss CO) n'étaient ainsi applicables dans le cas particulier. C. A.A._ et B.A._ interjettent un recours en matière civile. Ils demandent au Tribunal fédéral d'annuler l'arrêt cantonal, puis de dire et constater que le titre VIII du code des obligations, en particulier les art. 266l, 266o et 271 ss CO, est applicable en l'occurrence, tout au moins par analogie, et de renvoyer la cause à la Chambre des baux et loyers pour qu'elle statue sur leurs conclusions en nullité, subsidiairement en annulation du congé ou en prolongation du bail. L'État de Genève propose le rejet du recours. Les recourants ont déposé des observations supplémentaires. Pour sa part, la cour cantonale se réfère aux considérants de son arrêt. Par ordonnance du 1 er mai 2015, la Présidente de la cour de céans a accordé au recours l'effet suspensif requis par les recourants.