Missing Emacs packages?

Complete NixOS noob here, just trying to get my system up and running.

I’m trying to port my existing multi-file Emacs configuration over in the most naive way imaginable using Home-Manager, because I currently have no other idea of how to do it:

{ pkgs, ... }:

{
  programs.emacs = {
    enable = true;
    extraPackages = (epkgs: (with epkgs.elpaPackages; [
         
    ]) ++ (with epkgs.melpaPackages; [
      use-package 
      gcmh

      # etc ...
    ]) ++ (with epkgs; [
      
    ])); 
  };

  home.file.".emacs.d/init.el".source = ./emacs/init.el;
  home.file.".emacs.d/lisp/init-sysinfo.el".source = ./emacs/lisp/init-sysinfo.el;
  home.file.".emacs.d/lisp/init-package.el".source = ./emacs/lisp/init-package.el;

  # etc ...
}

However, whenover I do a home-manager build with this configuration, I get the error:

error: undefined variable ‘gcmh’

Which is odd, because gcmh is available right here on MELPA.

Am I doing something wrong? Is there a reason why certain packages are simply missing?

Thanks!

Are you on the stable channel (or an outdated unstable channel)?

New Emacs and updated packages are not backported to stable release.

I think that most users probably want to grab Emacs packages from the unstable channels as these are generally much more up to date and complete.

You can accomplish this either by building your entire system off the unstable channel or by mixing channels.
A way to do so is described on the NixOS wiki: Cheatsheet - NixOS Wiki.

I’m on stable right now, pretty much a freshly installed system, haven’t touched many things.

Is Unstable something that is going to give me any trouble as a Nix noob?

EDIT: I’m still not quite sure I understand. Shouldn’t the stable 19.03 channel be no less than a few days old?