package management system whose package builds depend only on the declared inputs and not on the state of the system