Title: NixOS optional features in packages Author: Solène Date: 14 October 2020 Tags: nixos linux nix Description: As a claws-mail user, I like to have calendar support in the mail client to be able to "accept" invitations. In the default NixOS claws-mail package, the vcalendar module isn't installed with the package. Still, it is possible to add support for the vcalendar module without ugly hack. It turns out, by default, the claws-mail package in Nixpkg has an optional build option for the vcalendar module, we need to tell nixpkg we want this module and claws-mail will be compiled. As stated in the [NixOS manual](https://nixos.org/manual/nixos/stable/#sec-customising-packages ), the optionals features can't be searched yet. So what's possible is to search for your package in the [NixOS packages search](https://search.nixos.org/packages), click on the package name to get to the details and click on the link named "Nix expression" that will open a link to the package definition on GitHUB, [claws-mail nix expression](https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/a pplications/networking/mailreaders/claws-mail/default.nix#L111) As you can see on the claws-mail nix expression code, there are lot of lines with **optional**, those are features we can enable. Here is a sample: [..] ++ optional (!enablePluginArchive) "--disable-archive-plugin" ++ optional (!enablePluginLitehtmlViewer) "--disable-litehtml_viewer-plugin" ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin" ++ optional (!enablePluginPython) "--disable-python-plugin" [..] In your `configuration.nix` file, where you define the package list you want, you can tell you want to enable the plugin vcalendar, this is done as in the following example: environment.systemPackages = with pkgs; [ kakoune git firefox irssi minetest (pkgs.claws-mail.override { enablePluginVcalendar = true;}) ]; When you rebuild your system to match the configuration definition, claws-mail will be compiled with the extras options you defined. Now, I have claws-mail with vCalendar support. |