You combat Inactive[Integrate]
with Activate
and backsubstitution:
solU0[x_] = DSolveValue[eqn1, u[x], x]
solP0[x_] =
DSolveValue[Simplify[eqn2 /. u -> Function[x, Evaluate[solU0[x]]]],
P[x], x] // Simplify
solMu[x_] =
DSolveValue[
Simplify[
eqn3 /. u -> Function[x, Evaluate[solU0[x]]] /.
P -> Function[x, Evaluate[solP0[x]]]],
\[Mu][x], x] // Activate // Simplify
FreeQ[solMu[x], Integrate]
solP[x_] =
Simplify[solP0[x] /. \[Mu] -> Function[x, Evaluate[solMu[x]]]] //
Activate
FreeQ[solP[x], Integrate]
solU[x_] =
Simplify[
solP0[x] /. \[Mu] -> Function[x, Evaluate[solMu[x]]] /.
P -> Function[x, Evaluate[solP0[x]]]] // Activate
FreeQ[solU[x], Integrate]
Beware that you get very large expressions.