Struggling to override dotnet package as part of larger Safe Stack attempts

Hello!

NixOS 19.09 stable channel with some unstable packages here.

I’ve been trying to override Fake, a dotnet package that’s super out of date in nixpkgs. I based my code on https://nixos.org/nixpkgs/manual/#how-to-override-a-python-package-from-configuration.nix, but I keep getting errors. Here’s what I currently have in my configuration.nix:

nixpkgs.config.packageOverrides = super: {
    unstable = import unstableTarball { config = config.nixpkgs.config; };

    dotnetPackages = super.dotnetPackages.override {
      override = dotnetPackages-self: dotnetPackages-super: {
        Fake = dotnetPackages-super.Fake.overrideAttrs (oldAttrs: {
          version = 5.19.0;
          sha256 = "c12195c60ddaacfb18eb1c20a04a47b9f83ad248f9b64e12708dc3662dcd37a3";
        });
      };
    };
  };

The unstable override works fine but the dotnetPackages override gives me:

error: anonymous function at /nix/store/lim8ddl05xpgivjsg7ccvbxfm7l0xsjd-nixos-19.09.1970.6d9a4a615ee/nixos/pkgs/top-level/dotnet-packages.nix:1:1
  called with unexpected argument 'override', at /nix/store/lim8ddl05xpgivjsg7ccvbxfm7l0xsjd-nixos-19.09.1970.6d9a4a615ee/nixos/lib/customisation.nix:69:12

It seems to me that I have to override the dotnetPackages top-level.nix https://github.com/NixOS/nixpkgs/blob/0c960262d159d3a884dadc3d4e4b131557dad116/pkgs/top-level/dotnet-packages.nix#L27
because it has an override attribute whereas Fake, what I’m really after, does not. Is this correct? If I load Fake into nix repl, I get

Fake = «derivation /nix/store/kqrp1k0vrfl8ry7zz2qikkib6sfbxbxf-FAKE-3.33.0.drv»;

but if I load dotnetPackages, I get:

...
override = «lambda @ /nix/store/lim8ddl05xpgivjsg7ccvbxfm7l0xsjd-nixos-19.09.1970.6d9a4a615ee/nixos/lib/customisation.nix:73:20»; 
overrideDerivation = «lambda @ /nix/store/lim8ddl05xpgivjsg7ccvbxfm7l0xsjd-nixos-19.09.1970.6d9a4a615ee/nixos/lib/customisation.nix:74:30»;
...

and if I just try:

nixpkgs.config.packageOverrides = super: {
  unstable = import unstableTarball { config = config.nixpkgs.config; };

  Fake = pkgs.dotnetPackages.Fake.override {
    version = 5.19.0;
    sha256 = "c12195c60ddaacfb18eb1c20a04a47b9f83ad248f9b64e12708dc3662dcd37a3";
  };
};

I get:

error: attribute 'override' missing, at /etc/nixos/configuration.nix:212:12

I’m really stuck on this one. What am I doing wrong? Any help would be greatly appreciated.

Thanks!