Solution 1:

In case you still don't have an answer: You want to use the GAP command SemidirectProduct( <g>, <hom>, <n> ). Here, <hom> is a group homomorphism from the group <g> to the automorphism group of the group <n>. In GAP this might look like this (for $p=7$):

gap> h := CyclicGroup(7);;
gap> g := DirectProduct( h, h );;
gap> aut := AutomorphismGroup( g );;
gap> iso := IsomorphismGroups( GL(2,7), aut );;
gap> s := SymmetricGroup(3);;
gap> GeneratorsOfGroup( s );
[ (1,2,3), (1,2) ]
gap> hom := GroupHomomorphismByImages( s, GL(2,7), GeneratorsOfGroup( s ), [ a, b ] );
[ (1,2,3), (1,2) ] -> [ [ [ Z(7)^0, 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ], [ [ Z(7)^0, 0*Z(7) ], [ 0*Z(7), Z(7)^0 ] ] ]

a and b are your favourite images of (1,2,3) and (1,2), respectively. I chose One(GL(2,7)) because I'm lazy. Note that you have to tell GAP that your matrices are over $\mathbb{F}_p$. Fortunately, that can be done like this:

gap> a := [ [ 1, 2 ], [ 3, 4 ] ] * One( GF(7) ); 
[ [ Z(7)^0, Z(7)^2 ], [ Z(7), Z(7)^4 ] ]
gap> a in GL(2,7);
true

Now you can compose hom and iso and define your semidirect product:

gap> semi := SemidirectProduct( s, CompositionMapping( iso, hom ), g );
<pc group with 4 generators>