Approximate a positive Sobolev function by positive smooth functions Here is a problem that I have encountered in PDE book several times. But I have never seen a proof of it. I will be very grateful if someone could give me a proof.

Question: Let $B$ be the unit ball in $\mathbb{R}^n$, $f$ a non-negative function in $H_0^1(B)$, prove that there exists a sequence of non-negative functions $\varphi_k\in C_c^\infty(B)$ such that $\varphi_k\rightarrow f$ in $H_0^1(B)$.

Edit: What if we replace $B$ by a general domain $\Omega$? 

Edit II: Thanks to Hans's idea (which should work for any star-shaped domain), if the boundary of $\Omega$ suitably good (for example, it admits finite covering of star-shaped open sets), then using partition of unity we should be able to construct the desired approximation.

Edit III: If I didn't make any mistake. L.C. Evans's Partial Differential Equations (First Edition) page 260 gives a proof for $C^1$ domain. Although he was actually proving something else, the key ingredient works in our situation!
Let $\psi$ be a standard non-negative positive mollifier, $C^\infty$, supported on the unit ball in $\mathbb{R}^n$, with $\int_{\mathbb{R}^n} \psi = 1$. Define $\psi_k(x) = k^n \psi(kx)$ as usual. Extend $f$ trivially outside the unit ball and define $\tilde f_k(x) = f(kx/(k-1))$ for all $x$, for $K &gt; 1$. This function is now supported on the ball with radius $1 - k^{-1}$ and is non-negative and in $H^1_0$. Show that $\tilde f_k \to f$ in $H^1_0$. (It is enough to show weak convergence in $L^2$ and convergence of the norm, since we are working in a Hilbert space.)  

Then define
$$
\varphi_k(x) = \int_{\mathbb{R}^n} \psi_k(x-y)\tilde f_k(y) dy
$$
as usual. Then $\varphi_k$ is $C^\infty$, supported in the unit ball, and non-negative. Apply a triangle inequality argument to show that $\varphi_k \to f$ in $H^1_0$.
Are you getting mixed up with the definitions?  

Let $\Omega\subset\mathbb{R}^n$ be open.  $H^{1}_0(\Omega)=H^{1,2}_0(\Omega)$ is $\mathbf{defined}$ to be the closure of $C^{\infty}_c(\Omega)$ in the $W^{1,2}(\Omega)$ norm, which is the norm that $H^{1,2}_0(\Omega)$ inherits.  

Hence, $f\in H^{1,2}_0(\Omega)$ if and only if there exists a sequence $(\varphi_n)$ in $C^{\infty}_c(\Omega)$ such that $\varphi_n\longrightarrow f$ in $H^{1,2}_0(\Omega)$, by definition.  

I.e. every function in $H^{1,2}_0(\Omega)$ is either a function in $C^{\infty}_c(\Omega)$, or is the limit of some sequence in $C^{\infty}_c(\Omega)$, under the $W^{1,2}(\Omega)$ norm.

There is nothing to prove.