Many packages have some kind of flag indicating whether or not to build with
systemd support. Most of these default to `stdenv.isLinux`, but systemd does
not build on (and is marked `broken` for) `isStatic`. Only a few packages have
the needed `&& !isStatic` in the default value for their parameter.
This commit moves the logic for the default value of these flags into
`systemd.meta.{platforms,badPlatforms}` and evaluates those conditions using
`lib.meta.availableOn`.
This provides three benefits:
1. The default values are set correctly (i.e. including `&& isStatic`)
2. The default values are set consistently
3. The way is paved for any future non-Linux systemd platforms (FreeBSD is
reported to have experimental systemd support)
Without the fix build on ncurses-6.3 fails as:
musikcube/cursespp/cursespp/curses_config.h:54:36:
error: format not a string literal and no format arguments [-Werror=format-security]
54 | if (window && format) { wprintw(window, format, ##__VA_ARGS__); }
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
musikcube/src/musikcube/app/window/TransportWindow.cpp:640:5: note: in expansion of macro 'checked_wprintw'
640 | checked_wprintw(c, shuffleLabel.c_str(
After making `ffmpeg` point to the latest `ffmpeg_4`, all packages that
used `ffmpeg` without requiring a specific version now use ffmpeg_3
explicitly so they shouldn't change.