| 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. |