Add custom Addons to Firefox (directly from https://addons.mozilla.org)

Thanks for your reply and the detailed explanation.
Ironically enough, I wrote an answer in which something was still missing because the error was still there.
But I fixed it by copying the nix files over and saw the line that was missing ^^.

So this is my working setup:
flake.nix:

{
  description = "My dotfiles";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
    flake-utils.url = "github:numtide/flake-utils";
    nixos-hardware.url = "github:NixOS/nixos-hardware/master";
    sops-nix = {
      url = "github:Mic92/sops-nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    home-manager = {
      url = "github:nix-community/home-manager";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    firefox-addons = {
      url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    stylix = {
      url = "github:danth/stylix";
      inputs.nixpkgs.follows = "nixpkgs";
    }; 
    arkenfox = {
      url = "github:dwarfmaster/arkenfox-nixos";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = inputs @ {
    self,
    nixpkgs,
    flake-utils,
    nixos-hardware,
    sops-nix,
    home-manager,
    firefox-addons,
    stylix,
    arkenfox,
      }: let
      system = "x86_64-linux";

      sharedModules = [
        sops-nix.nixosModules.sops
        stylix.nixosModules.stylix
        home-manager.nixosModules.home-manager
        # arkenfox.hmModules.default
        {
          home-manager = {
            useGlobalPkgs = true;
            useUserPackages = true;
            users.stew.imports = [ 
              ./nixos/home-manager/home.nix
            ];
            extraSpecialArgs = {inherit inputs;};
          };
        }
      ];
  in {
    nixosConfigurations.nixtop = nixpkgs.lib.nixosSystem {
      modules =
        [
          ./nixos/nixtop
        ]
        ++ sharedModules;
    };
  };
}

browser.nix (minimal):

{
  config,
  pkgs,
  inputs,
  lib,
  specialArgs,
  system,
  ...
}: let

  customAddons = pkgs.callPackage ./addons.nix {
    inherit lib;
    inherit (inputs.firefox-addons.lib."x86_64-linux") buildFirefoxXpiAddon;
  };

in 
{
  programs.firefox = {
    enable = true;

    profiles."defaultUser" = {
      id = 0;

      extensions = with inputs.firefox-addons.packages."x86_64-linux"; [
        ublock-origin
        darkreader
      ] ++ (with customAddons; [ old-github-feed ]);
    };
  };
}

addons.nix:

{ buildFirefoxXpiAddon, lib }:

{
  old-github-feed = buildFirefoxXpiAddon rec {
    pname = "return-old-github-feed";
    version = "1.0.1";
    addonId = "{9dfcb52a-5322-4d42-9924-9d3b8871ad90}";
    url = "https://addons.mozilla.org/firefox/downloads/file/4166201/${pname}-${version}.xpi";
    sha256 = "sha256-age3Nj2n4X3Zg1bTElChOpgDDGCQd4nOqHebW8zNsBQ=";
    meta = with lib;
      {
        homepage = "https://github.com/Siriusmart/return-github-feed";
        description = "This extension replaces the new and ugly GitHub feed with the real one from github.com/dashboard-feed";
        license = licenses.gpl3;
        platforms = platforms.all;
      };
  };
}
1 Like