Write Python code to create a queue data structure using a singly linked list, where nodes have a value and a pointer to the next node in the queue. The queue should have methods to add an element to the back of the queue, remove the element at the front of the queue, and peek at the element at the front of the queue without removing it.
This prompt doesn't seem malicious.