Ammonia is the best cleaner of stale cigarette smoke - it degreases and because cigarette smoke leaves an oily residue, the ammonia breaks right through it.
If you want to try it, add 1/4cup to a full cup to your washing machine or bathtub soak and your detergent. Don't mix with chlorine - that's deadly.
I've never had ammonia do anything bad to my fabrics - even my vintage quilt tops came through the washer just fine - fresh and clean and no trace of cigarettes or ammonia.
Ammonia removes some kinds of yellowing and other stains, too. Truly a miracle worker and one of the cheapest cleaners you can buy. :)