A variational approach is used to derivate a set of Serre equations for fully nonlinear, dispersive waves in channels of arbitrary cross-section. A family of travelling waves is found, as well as the relation between amplitude and celerity of solitary waves. An upper bound is proposed for the solitary wave amplitude as a function of the Froude number in trapezoidal cross-sectional canals, showing good agreement with an existing theory. For waves of moderate amplitude, cnoidal waves result with a soliton limit; the latter waves and their properties (celerity, wave number) are written as functions of the channel bank slope and channel bank curvature. The theoretical findings are in agreement with well-established results of the literature, in particular with more recent Boussinesq-type theories. A validation is proposed against existing experimental data.