So when using set --universal name value it saves to .config/fish/fish_variables. If that file is a symlink it removes the symlink and just stores as a new file instead.
This for me is a problem because both my root partition and my home partition is on a tmpfs filesystem, so when this happens the change isn't persistent to any filesystem and gets lost on next reboot.
I've lost things more than once due to this, such as abbreviations that I've saved.
Recording: https://asciinema.org/a/Y3QcT1kfZcVC8tIv5I5quHy4p
System info:
$ fish --version
fish, version 3.1.2
$ echo $version
3.1.2
$ uname -a
Linux agrajag 5.9.2 #1-NixOS SMP Thu Oct 29 09:12:22 UTC 2020 x86_64 GNU/Linux
$ echo $TERM
xterm-256color # (but it's really kitty)
I tried to run with a separate home directory:
$ sh -c 'env HOME=$(mktemp -d) fish'
And could perform the same actions to get the same problem.
More about my setup: https://elis.nu/blog/2020/05/nixos-tmpfs-as-root/ https://elis.nu/blog/2020/06/nixos-tmpfs-as-home/