so the problem was i used /user/bin/fish as a shell instead of /usr/bin/fish
so i had to take the laptop down from the 7ft-tall shelf it sits on to plug a usb thing in, boot into live cd and fix /etc/passwd, then put it back up there
and now it works again