First, we show that $f(y)\leq 0 , \forall y $ is impossible. Suppose this is the case then $y=1, x=|f(1)|+1 $ gives $ f(2|f(1)|+1)=1>0 $ so there is some $x_0 = 2|f(1)|+1 $ such that $f(x_0)>0$.
Now let inf$\{ x\in \mathbb{N} | f(x)>0 \}=c$ and let $f(c)=y$ then we claim $f(x)=x , \forall x > y$ as any $x>y$ can be written as $x=y+t $ then putting this in the first equation we get $f(x)=f(t+y)=f(t+f(c))=t+f(c)=t+y=x$. Now since c is infimum we get $f(k)\leq 0 , k<c$. Now for some $k<c$ if $|f(k)|\geq 1$ then $f(x+|f(k)|)=x+f(k)<x+|f(k)| $ Now we can choose x large enough so that $x+|f(k)|>y$ which gives contradiction.
So all possible solutions are
$f(x)=0 , x<k$ and $ f(x)=x , x\geq k$, where $k \in \mathbb{N}.$
Thanks for pointing out the mistake in the previous proof. I hope this is correct.