[Nix-dev] Two declarative ways to install a package?

Nick Sabalausky bus_nixos_list at semitwist.com
Thu Aug 11 21:11:00 CEST 2016


I'm noticing that when installing packages declaratively via 
configuration.nix and nixos-rebuild, some packages are install one way, 
but others are installed another way. For example:

# Some packages are installed via environment.systemPackages
environment.systemPackages = with pkgs; [
   wget firefox thunderbird git
];

# Others are installed via *.enabled = true;
services.openssh.enable = true;
services.printing.enable = true;
services.xserver.enable = true;
services.xserver.displayManager.kdm.enable = true;
services.xserver.desktopManager.kde4.enable = true;
services.vmwareGuest.enable = true;

What exactly is the difference? Is there any more nuance to it than 
"Services are installed one way, non-services are installed the other way"?

How do I know which way to install a given package? Especially if I'm 
not sure offhand whether a given package involves a service component.

Can all packages be installed wither way? Are all packages ONLY one way 
or the other?

How can I find what packages are available via one method or the other?


More information about the nix-dev mailing list