Output all of printable ASCII using all of printable ASCII Output all 95 bytes from 0x20 to 0x7E inclusive (printable ASCII including space), in any order, each at least once. The source code of your program must use all of those bytes, each at least once.

Your program must be irreducible (meaning you cannot strictly remove some characters from the program and then have it still function correctly), so you can't just add a comment containing the remaining characters
Your program, and its output, can contain any additional bytes outside this range if you like (bytes, not characters), such as newlines
You must output them as bytes, not decimal code-points or anything else like that
Standard rules and loopholes apply
This is Code Golf, so the shortest program in bytes wins (even though all programs will be at least 95 characters)
Husk, 95 95 bytes
Edit: adjusted to fix bug pointed-out by Neil.  Same bytes
mcW=2`R\.5+46L&quot; !#$%&amp;'()*,-/013789:;&lt;=?@ABCDEFGHIJKMNOPQSTUVXYZ[]^_abdefghijklnopqrstuvwxyz{|}~

Try it online!
Well, 96 bytes in Husk is trivial as a literal string, but 95 bytes was much more tricky.
The strategy that I've used is to (1) output all 95 printable ASCII characters using a program written using only non-repeating ASCII characters (this isn't completely straightforward, since many of the useful commands in Husk are encoded by non-ASCII characters), and then (2) to adjust it so that output is dependent on the length of a literal string containing all the unused characters: this second bit will ensure that all the characters are used, and also that the program is irreducible.
Here's how it works:
mcW=2`R\.5+46L&quot;...
m                   # map this function:
 c                  # ASCII character
                    # across all the elements in this list:
  W                 # indexes of all elements that satisfy:
   =2               # are equal to 2
                    # among all the elements in this list:
     `R             # repeat this value:
       \            # reciprocal of
        .5          # .5
                    # this number of times:
          +46       # add 46 to
             L      # the length of
              &quot;...  # this string
                    # the string consists of all the printable ASCII characters,
                    # with the characters of the program removed.  There are 15
                    # characters in the program, so the remaining 95-15=80 characters
                    # are all present in the string.
                    # So, to output all the ASCII characters up to 
                    # 126, we need to add 126-80 = 46.