Snake was made for school, I wouldn't write it in pascal for myself. :]
It has all kinds of OOP shenanigans and abstract obstacle class, but its abstracity wasn't used, because I was too lazy to, but it works. :]
nix-build -E '(import <nixpkgs> {}).callPackage (import ./default.nix) {}'
./result/main