This post explains some algebra related to the remarks made in the previous post. I am confident that you can either find this in the literature (and that it has a name), or that it is completely wrong. Caveat emptor.

Let k be a field of characteristic p. Let G be a finite p-group. Let R = k[G]. Then R is a finite dimensional (possibly noncommutative) local k-algebra. Recall that a left R-module is the same thing as a k-vector space with a left G-action. Set ω_R = Hom_k(R, k) and think of it as a right R-module via the left multiplication of R on R. It is an injective right R-module. Note that both R^G  and ω_R^G are 1-dimensional k-vector spaces. Choose a nondegenerate pairing

< , > : R^G x ω_R^G —> k

This is the only choice we will have to make (the rest will be independent of choices I think). Let F be a finite free left R-module. Set I = Hom(R, k) which is an injective right R-module. Then the pairing above define a canonical pairing

< , > : F^G x I^G —> k

by choosing a basis of F and using < , > for the free rank 1 case and then proving that the resulting pairing is independent of choice of basis. Moreover, this pairing is suitably functorial.

Choose a resolution by finite free left modules

… —> F_1 —> F_0 —> k —> 0

This gives an injective resolution

0 —> k —> Hom(F_0, k) —> Hom(F_1, k) —>

by right modules. We denote I^n = Hom(F_n, k). By the above we have canonical pairings

< , > : F_n^G x (I^n)^G —> k

Hence a perfect pairing between H^i(G, k) and H^{-i}((F_*)^G). This is just an instance of the following more general procedure.

If M, N are right R-modules, then M ⊗_k N is a right R-module by using the diagonal right G-action.  Similarly for left modules. Note that the functor (M, N) —> M ⊗_k N is exact in both variable (so there won’t be any derived functors). For every finite right R-module M the tensor products M ⊗_k I_n are injective right R-modules, and the tensor products Hom(M, k) ⊗_k F_n are finite free left R-modules. (Prove by induction on the length of M). OK, so we see that

A^*  = (M ⊗_k I^0 —> M ⊗_k I^1 —> M ⊗_k I^2 —> …)

is an injective resolution of M. On the other hand

B_* = (… —> Hom(M, k) ⊗_k F_1 —> Hom(M, k) ⊗_k F_0)

is a free resolution of Hom(M, k). Using that Hom(Hom(M, k) ⊗_k F_n, k) = M ⊗_k I^n we see that there are nondegenerate pairings

< , > : (B_n)^G \times (A^n)^G —> k

which are compatible with the differentials in the complexes (B_*)^G and (A^*)^G. This means that H^i(G, M) is canonically dual to H_i((Hom(M, k) ⊗_k F_*)^G) which is “in some sense” equal to H^{-i}(G, Hom(M, k) ⊗_k F_*).

I think this means that morally speaking the complex F_* is a dualizing complex in this situation. Except that you cannot think of it as an object in the derived category (since it would just be k in degree 0), but you have to think of it as an actual complex, and you have to compute the cohomology of Hom(M, k) ⊗_k F_* in the manner described above. Another way to say this is that you might want to think of F_* as the system of stupid truncations

F(n) = (F_n —> F_{n – 1} —> … —> F_0)

sitting in cohomological degrees [-n, 0], The duality above gives canonical pairings between H^i(G, M) and colim_n H^{-i}(G, Hom(M, k) ⊗_k F(n)). This is I think a slightly improved version of what I said in the previous post.