Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bandithedoge/nixpkgs-firefox-darwin

Nixpkgs overlay with Firefox binary builds for macOS
https://github.com/bandithedoge/nixpkgs-firefox-darwin

Last synced: 3 months ago
JSON representation

Nixpkgs overlay with Firefox binary builds for macOS

Awesome Lists containing this project

README

        

# nixpkgs-firefox-darwin

The Nixpkgs repository has long struggled with broken `firefox`, `librewolf`, and `floorp` packages on Darwin. Unfortunately, the `-bin` variants do not offer any support for Darwin. To address this issue, this overlay has been created, aiming to provide `-bin` packages for Firefox, Librewolf, and Floorp, generated directly from official builds.

## How to use it

Minimal configuration example using flakes, nix-darwin and home-manager:

```nix
# flake.nix
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
darwin.url = "github:lnl7/nix-darwin/master";
home-manager.url = "github:nix-community/home-manager";
nixpkgs-firefox-darwin.url = "github:bandithedoge/nixpkgs-firefox-darwin";
};

outputs = { self, darwin, home-manager, nixpkgs, ... }@inputs: {
darwinConfigurations."machine" = let
# replace this with your username, obviously
username = "bandithedoge";
in darwin.lib.darwinSystem {
system = "x86_64-darwin";
modules = [
home-manager.darwinModules.home-manager
{
nixpkgs.overlays = [ inputs.nixpkgs-firefox-darwin.overlay ];
home-manager.users.${username} = {
programs.firefox = {
enable = true;

# IMPORTANT: use a package provided by the overlay (ends with `-bin`)
# see overlay.nix for all possible packages
package = pkgs.firefox-bin; # Or use pkgs.librewolf for Librewolf or pkgs.floorp-bin for Floorp
};
};
}
];
};
};
}
```

## How it works

The entire overlay is controlled by a script that fetches release information from Mozilla and puts the version, URL and SHA256 in a JSON file. The JSON gets imported by a Nix expression and the values are used to build a derivation. The script can be run manually or with a GitHub action.