For the combinations, do you want this:
combinations <- lapply(seq_along(weights), function(x) combn(weights, x))
Then for the sums:
sums <- lapply(combinations, colSums)
inds <- lapply(sums, function(x) which(x == 1))
lapply(seq_along(inds), function(x) combinations[[x]][, inds[[x]]])