Packsnap allows you to build any type of project by passing your own derivations and configuration to buildCustomPlan
.
buildCustomPlan : {
name: ?string,
tag: ?string,
variables: ?[string],
contents: [derivation],
libraries: ?[string],
start: string
} -> ?
See an example here.