I use NixOS , so my system configuration lives in one single etcnixosconfiguration . nix file which my system gets built from , whatever changes I made and whichever updates are available . Here ' s a snippet that describes part of . my X . org setup . services . xserver enable true layout us useGlamor false deviceSection '' Option AccelMethod uxa '' videoDrivers intel displayManager . lightdm . enable true synaptics enable true palmDetect true twoFingerScroll true windowManager . default xmonad windowManager . xmonad . enable true Similarly , the globally available programs are defined in this file environment . systemPackages with pkgs gnome 3 . gdm vim tmux git networkmanagerapplet networkmanageropenvpn If for instance I added a package to this list and ran nixosrebuild switch , my entire system would be made to be in that state where it is installed and available .