We present NEP-PACK a novel open-source library for the solution of nonlinear eigenvalue problems (NEPs). The package provides a framework to represent NEPs, as well as efficient implementations of many state-of-the-art algorithms. The package makes full use of the efficiency of Julia, yet maintains usability, and integrates well with other software packages. The package is designed to be easy to use for application researchers as well as algorithm developers. Particular attention is paid to algorithm neutrality, in order to make performance comparisons between algorithms easier. This paper describes the main functionality of NEP-PACK, as well as design decisions and theory needed for the design.