Skip to content

distribution-nixpkgs 1.7.0 #506

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jun 14, 2022
Merged

distribution-nixpkgs 1.7.0 #506

merged 5 commits into from
Jun 14, 2022

Conversation

sternenseemann
Copy link
Member

@sternenseemann sternenseemann commented Jun 26, 2021

Mostly using the new stuff in NixOS/distribution-nixpkgs#13:

  • Emit badPlatforms instead of subtracting from allKnownPlatforms
  • Use lib.platforms.{linux,windows,darwin} in PostProcess.hs instead of filtering allKnownPlatforms

To do:

  • Support nixpkgs platforms in hackage2nix's unsupported-platforms
  • Add supported-platforms directive to hackage2nix config

@sternenseemann
Copy link
Member Author

sternenseemann commented Jun 27, 2021

This is the diff to hackage-package.nix this currently generates. Note that we can improve this further by adding support for lib.platforms to the hackage2nix configuration. All usage of lib.platforms in this diff so far is hardcoded post processing in cabal2nix.

Also note that the generic builder needs to get badPlatforms support as well.

diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix
index b23a2304728..7451735281c 100644
--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -596,7 +596,10 @@ self: {
        libraryHaskellDepends = [ base regex-compat Win32 ];
        description = "A binding to a part of the ANSI escape code for the console";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "AbortT-monadstf" = callPackage
@@ -992,9 +995,7 @@ self: {
        ];
        description = "Near-future Sci-Fi roguelike and tactical squad combat game";
        license = lib.licenses.agpl3Plus;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "AndroidViewHierarchyImporter" = callPackage
@@ -4691,7 +4692,10 @@ self: {
        librarySystemDepends = [ dsound ];
        description = "Partial binding to the Microsoft DirectSound API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {dsound = null;};
 
   "DisTract" = callPackage
@@ -5566,9 +5570,7 @@ self: {
        ];
        description = "Library for computer music research and education";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "EventSocket" = callPackage
@@ -5710,9 +5712,7 @@ self: {
        librarySystemDepends = [ ftgl ];
        description = "Portable TrueType font rendering for OpenGL using the Freetype2 library";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) ftgl;};
 
   "FTGL-bytestring" = callPackage
@@ -8164,9 +8164,7 @@ self: {
        '';
        description = "HFuse is a binding for the Linux FUSE library";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) fuse;};
 
   "HGE2D" = callPackage
@@ -9290,9 +9288,7 @@ self: {
        ];
        description = "Library for computer music education";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "HSoundFile" = callPackage
@@ -12289,9 +12285,7 @@ self: {
        ];
        description = "A game engine library for tactical squad ASCII roguelike dungeon crawlers";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "LambdaINet" = callPackage
@@ -12825,7 +12819,7 @@ self: {
        description = "an adapter for LogicGrowsOnTrees that uses MPI";
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
-     }) {openmpi = null;};
+     }) {inherit (pkgs) openmpi;};
 
   "LogicGrowsOnTrees-network" = callPackage
     ({ mkDerivation, base, cereal, cmdtheline, composition, containers
@@ -15969,9 +15963,7 @@ self: {
        librarySystemDepends = [ alsa-lib ];
        description = "A binding for PortMedia/PortMidi";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) alsa-lib;};
 
   "PortMidi-simple" = callPackage
@@ -15985,9 +15977,7 @@ self: {
        libraryHaskellDepends = [ base PortMidi ];
        description = "Simplified PortMidi wrapper";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "PostgreSQL" = callPackage
@@ -16841,9 +16831,7 @@ self: {
        ];
        description = "A puzzle game written in Haskell with a cat in lead role";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "Random123" = callPackage
@@ -20450,9 +20438,7 @@ self: {
        libraryHaskellDepends = [ base unix ];
        description = "A simple interface to shadow passwords (aka, shadow.h)";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "Updater" = callPackage
@@ -20765,7 +20751,7 @@ self: {
        ];
        description = "Bindings to the VulkanMemoryAllocator library";
        license = lib.licenses.bsd3;
-       platforms = [ "aarch64-linux" "x86_64-linux" ];
+       badPlatforms = [ "armv7l-linux" "i686-linux" "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ expipiplus1 ];
      }) {};
 
@@ -21117,7 +21103,11 @@ self: {
        editedCabalFile = "1ia6dk2fvxg3gzqdmcypdka6fcnnrza23hq1rhslj53jy3qzs3kn";
        description = "A binding to part of the Win32 library";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       platforms = [ ] ++ lib.platforms.windows;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32_2_12_0_0" = callPackage
@@ -21128,7 +21118,12 @@ self: {
        sha256 = "068k26s1vxwz94w7bkqs9xbkh0z2mp1mimyklarr8rh26v978qin";
        description = "A binding to Windows Win32 API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       platforms = [ ] ++ lib.platforms.windows;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
+       hydraPlatforms = lib.platforms.none;
      }) {};
 
   "Win32-console" = callPackage
@@ -21140,7 +21135,10 @@ self: {
        libraryHaskellDepends = [ base Win32 ];
        description = "Binding to the Win32 console API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-dhcp-server" = callPackage
@@ -21152,7 +21150,10 @@ self: {
        libraryHaskellDepends = [ base text Win32 Win32-errors ];
        description = "Win32 DHCP Server Management API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-errors" = callPackage
@@ -21169,7 +21170,10 @@ self: {
        testHaskellDepends = [ base hspec QuickCheck Win32 ];
        description = "Alternative error handling for Win32 foreign calls";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-extras" = callPackage
@@ -21184,7 +21188,10 @@ self: {
        librarySystemDepends = [ imm32 msimg32 ];
        description = "Provides missing Win32 API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {imm32 = null; msimg32 = null;};
 
   "Win32-junction-point" = callPackage
@@ -21196,7 +21203,10 @@ self: {
        libraryHaskellDepends = [ base text Win32 Win32-errors ];
        description = "Support for manipulating NTFS junction points";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-notify" = callPackage
@@ -21210,7 +21220,10 @@ self: {
        libraryHaskellDepends = [ base containers directory Win32 ];
        description = "A binding to part of the Win32 library for file notification";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-security" = callPackage
@@ -21224,7 +21237,10 @@ self: {
        libraryHaskellDepends = [ base text Win32 Win32-errors ];
        description = "Haskell bindings to a security-related functions of the Windows API";
        license = lib.licenses.mit;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-services" = callPackage
@@ -21237,7 +21253,10 @@ self: {
        librarySystemDepends = [ Advapi32 ];
        description = "Windows service applications";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {Advapi32 = null;};
 
   "Win32-services-wrapper" = callPackage
@@ -21253,7 +21272,10 @@ self: {
        ];
        description = "Wrapper code for making a Win32 service";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "Win32-shortcut" = callPackage
@@ -21268,7 +21290,7 @@ self: {
        librarySystemDepends = [ libossp_uuid ole32 ];
        description = "Support for manipulating shortcuts (.lnk files) on Windows";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       platforms = [ ] ++ lib.platforms.windows;
      }) {inherit (pkgs) libossp_uuid; ole32 = null;};
 
   "Wired" = callPackage
@@ -21544,7 +21566,10 @@ self: {
        librarySystemDepends = [ xinput ];
        description = "Bindings for the DirectX XInput library";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {inherit (pkgs.xorg) xinput;};
 
   "XML" = callPackage
@@ -26773,9 +26798,7 @@ self: {
        libraryPkgconfigDepends = [ alsa-lib ];
        description = "Binding to the ALSA Library API (Exceptions)";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       platforms = [ ] ++ lib.platforms.linux;
      }) {inherit (pkgs) alsa-lib;};
 
   "alsa-gui" = callPackage
@@ -26829,9 +26852,7 @@ self: {
        libraryToolDepends = [ c2hs ];
        description = "Bindings to the ALSA simple mixer API";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) alsa-lib;};
 
   "alsa-pcm" = callPackage
@@ -26851,9 +26872,7 @@ self: {
        libraryPkgconfigDepends = [ alsa-lib ];
        description = "Binding to the ALSA Library API (PCM audio)";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) alsa-lib;};
 
   "alsa-pcm-tests" = callPackage
@@ -26888,9 +26907,7 @@ self: {
        libraryPkgconfigDepends = [ alsa-lib ];
        description = "Binding to the ALSA Library API (MIDI sequencer)";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) alsa-lib;};
 
   "alsa-seq-tests" = callPackage
@@ -37840,7 +37857,9 @@ self: {
        ];
        description = "Create status bar menus for macOS from executables";
        license = lib.licenses.bsd3;
-       platforms = [ "x86_64-darwin" ];
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
+       ];
      }) {};
 
   "barchart" = callPackage
@@ -39147,9 +39166,7 @@ self: {
        ];
        description = "BDCS API Server";
        license = lib.licenses.gpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
      }) {inherit (pkgs) libgit2-glib;};
 
@@ -41298,9 +41315,7 @@ self: {
        libraryPkgconfigDepends = [ directfb ];
        description = "Low level bindings to DirectFB";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) directfb;};
 
   "bindings-eskit" = callPackage
@@ -41466,7 +41481,7 @@ self: {
        license = "unknown";
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {inherit (pkgs) blas; liblapack = null;};
+     }) {inherit (pkgs) blas; inherit (pkgs) liblapack;};
 
   "bindings-libcddb" = callPackage
     ({ mkDerivation, base, bindings-DSL, libcddb }:
@@ -41627,9 +41642,7 @@ self: {
        librarySystemDepends = [ lxc ];
        description = "Direct Haskell bindings to LXC (Linux containers) C API";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       platforms = [ ] ++ lib.platforms.linux;
      }) {inherit (pkgs) lxc;};
 
   "bindings-mmap" = callPackage
@@ -41775,9 +41788,7 @@ self: {
        libraryPkgconfigDepends = [ sane-backends ];
        description = "FFI bindings to libsane";
        license = lib.licenses.lgpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) sane-backends;};
 
   "bindings-sc3" = callPackage
@@ -47108,9 +47119,7 @@ self: {
        testPkgconfigDepends = [ gio-unix ];
        description = "Draw sequence diagrams of D-Bus traffic";
        license = lib.licenses.lgpl21Plus;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {gio-unix = null; inherit (pkgs) libpcap; 
          system-glib = pkgs.glib;};
 
@@ -53388,9 +53397,7 @@ self: {
        libraryHaskellDepends = [ base bytestring ];
        description = "Character set detection using Mozilla's Universal Character Set Detector";
        license = "LGPL";
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {};
 
   "charsetdetect-ae" = callPackage
@@ -64815,7 +64822,7 @@ self: {
        license = lib.licenses.gpl3Only;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {python3 = null;};
+     }) {inherit (pkgs) python3;};
 
   "cql" = callPackage
     ({ mkDerivation, base, bytestring, cereal, containers, Decimal
@@ -65087,9 +65094,7 @@ self: {
        executableHaskellDepends = [ array base FloatingHex ];
        description = "Crack various integer, floating-point data formats";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
        hydraPlatforms = lib.platforms.none;
      }) {};
 
@@ -65108,9 +65113,7 @@ self: {
        ];
        description = "Crack various integer and floating-point data formats";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {};
 
   "craft" = callPackage
@@ -67921,9 +67924,7 @@ self: {
        testToolDepends = [ c2hs ];
        description = "Cuts out uninteresting parts of videos by detecting silences";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) pocketsphinx; inherit (pkgs) sphinxbase;};
 
   "cutter" = callPackage
@@ -68085,7 +68086,10 @@ self: {
        executableHaskellDepends = [ base c-storable-deriving vect Win32 ];
        description = "A raw binding for the directX 11";
        license = lib.licenses.mit;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {D3DCompiler = null; d3d11 = null; d3dx11 = null; 
          d3dxof = null; dxgi = null; dxguid = null;};
 
@@ -80589,7 +80593,10 @@ self: {
        libraryHaskellDepends = [ base Win32 ];
        description = "Backend for a binding to the Microsoft DirectX 9 API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "dx9d3d" = callPackage
@@ -80602,7 +80609,10 @@ self: {
        librarySystemDepends = [ d3d9 ];
        description = "A binding to the Microsoft DirectX 9 API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {d3d9 = null;};
 
   "dx9d3dx" = callPackage
@@ -80615,7 +80625,10 @@ self: {
        librarySystemDepends = [ d3dx9 ];
        description = "A binding to the Microsoft DirectX 9 D3DX API";
        license = lib.licenses.bsd3;
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {d3dx9 = null;};
 
   "dyckword" = callPackage
@@ -86678,7 +86691,7 @@ self: {
        ];
        description = "EventStore TCP Client";
        license = lib.licenses.bsd3;
-       platforms = [ "x86_64-darwin" "x86_64-linux" ];
+       platforms = [ ] ++ lib.platforms.x86_64;
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -94024,9 +94037,7 @@ self: {
        ];
        description = "Be notified when a file gets appended, solely with what was added. Warning - only works on linux and for files that are strictly appended, like log files.";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "follower" = callPackage
@@ -95572,9 +95583,7 @@ self: {
        libraryPkgconfigDepends = [ libfreenect ];
        description = "Interface to the Kinect device";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) freenect; freenect_sync = null; 
          libfreenect = null;};
 
@@ -102706,9 +102715,7 @@ self: {
        ];
        description = "GHCJS DOM Hello World, an example package";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "ghcjs-dom-jsaddle" = callPackage
@@ -103116,9 +103123,7 @@ self: {
        libraryPkgconfigDepends = [ libdbusmenu ];
        description = "Dbusmenu bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) libdbusmenu;};
 
   "gi-dbusmenugtk3" = callPackage
@@ -103143,9 +103148,7 @@ self: {
        libraryPkgconfigDepends = [ gtk3 libdbusmenu-gtk3 ];
        description = "DbusmenuGtk bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) gtk3; inherit (pkgs) libdbusmenu-gtk3;};
 
   "gi-gdk" = callPackage
@@ -103282,9 +103285,7 @@ self: {
        libraryPkgconfigDepends = [ libgit2-glib ];
        description = "libgit2-glib bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) libgit2-glib;};
 
   "gi-gio" = callPackage
@@ -103690,7 +103691,7 @@ self: {
        license = lib.licenses.lgpl21Only;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {gtk-mac-integration-gtk3 = null;};
+     }) {inherit (pkgs) gtk-mac-integration-gtk3;};
 
   "gi-gtksheet" = callPackage
     ({ mkDerivation, base, bytestring, Cabal, containers, gi-atk
@@ -103806,9 +103807,7 @@ self: {
        libraryPkgconfigDepends = [ ibus ];
        description = "IBus bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) ibus;};
 
   "gi-javascriptcore" = callPackage
@@ -103870,9 +103869,7 @@ self: {
        libraryPkgconfigDepends = [ ostree ];
        description = "OSTree bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) ostree;};
 
   "gi-pango" = callPackage
@@ -104032,9 +104029,7 @@ self: {
        libraryPkgconfigDepends = [ vte_291 ];
        description = "Vte bindings";
        license = lib.licenses.lgpl21Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {vte_291 = pkgs.vte;};
 
   "gi-webkit" = callPackage
@@ -106669,9 +106664,7 @@ self: {
        libraryToolDepends = [ c2hs ];
        description = "Bindings for libgnome-keyring";
        license = lib.licenses.gpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs.gnome) gnome-keyring; 
          inherit (pkgs) libgnome-keyring;};
 
@@ -112246,7 +112239,9 @@ self: {
        libraryPkgconfigDepends = [ gtk-mac-integration-gtk2 ];
        description = "Bindings for the Gtk/OS X integration library";
        license = lib.licenses.lgpl21Only;
-       platforms = [ "x86_64-darwin" ];
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
+       ];
      }) {inherit (pkgs) gtk-mac-integration-gtk2;};
 
   "gtk-serialized-event" = callPackage
@@ -112306,9 +112301,7 @@ self: {
        ];
        description = "A standalone StatusNotifierItem/AppIndicator tray";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) gtk3;};
 
   "gtk-strut" = callPackage
@@ -112563,7 +112556,7 @@ self: {
        license = lib.licenses.lgpl21Only;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {gtk-mac-integration-gtk3 = null;};
+     }) {inherit (pkgs) gtk-mac-integration-gtk3;};
 
   "gtkglext" = callPackage
     ({ mkDerivation, base, Cabal, glib, gtk, gtk2, gtk2hs-buildtools
@@ -113353,7 +113346,7 @@ self: {
        license = "GPL";
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {inherit (pkgs) blas; liblapack = null;};
+     }) {inherit (pkgs) blas; inherit (pkgs) liblapack;};
 
   "hXmixer" = callPackage
     ({ mkDerivation, base, directory, gtk3, process, split, text }:
@@ -119323,7 +119316,7 @@ self: {
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {open-pal = null; open-rte = null; openmpi = null;};
+     }) {open-pal = null; open-rte = null; inherit (pkgs) openmpi;};
 
   "haskell-names" = callPackage
     ({ mkDerivation, aeson, base, bytestring, containers
@@ -119678,9 +119671,7 @@ self: {
        ];
        description = "Snake game implemetation in Haskell using SDL2";
        license = lib.licenses.gpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -123518,7 +123509,7 @@ self: {
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {inherit (pkgs) blas; liblapack = null;};
+     }) {inherit (pkgs) blas; inherit (pkgs) liblapack;};
 
   "hblock" = callPackage
     ({ mkDerivation, aeson, base, blaze-markup, bytestring, cereal
@@ -123924,9 +123915,7 @@ self: {
        librarySystemDepends = [ bluetooth cwiid ];
        description = "Library to interface with the wiimote";
        license = lib.licenses.gpl2Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {bluetooth = null; inherit (pkgs) cwiid;};
 
   "hdaemonize" = callPackage
@@ -127070,7 +127059,7 @@ self: {
        libraryToolDepends = [ CoreServices ];
        description = "File/folder watching for OS X";
        license = lib.licenses.bsd3;
-       platforms = [ "x86_64-darwin" ];
+       platforms = [ ] ++ lib.platforms.darwin;
      }) {inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa; 
          inherit (pkgs.darwin.apple_sdk.frameworks) CoreServices;};
 
@@ -127753,9 +127742,7 @@ self: {
        librarySystemDepends = [ systemd ];
        description = "Haskell bindings to HIDAPI";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) systemd;};
 
   "hidden-char" = callPackage
@@ -128629,9 +128616,7 @@ self: {
        ];
        description = "Haskell binding to inotify, using ByteString filepaths";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "hinquire" = callPackage
@@ -130813,7 +130798,7 @@ self: {
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {liblapack = null;};
+     }) {inherit (pkgs) liblapack;};
 
   "hmatrix-csv" = callPackage
     ({ mkDerivation, base, bytestring, cassava, hmatrix, vector }:
@@ -130900,7 +130885,7 @@ self: {
        benchmarkHaskellDepends = [ base criterion hmatrix ];
        description = "Low-level machine learning auxiliary functions";
        license = lib.licenses.bsd3;
-     }) {inherit (pkgs) blas; liblapack = null;};
+     }) {inherit (pkgs) blas; inherit (pkgs) liblapack;};
 
   "hmatrix-nipals" = callPackage
     ({ mkDerivation, base, hmatrix }:
@@ -132209,7 +132194,10 @@ self: {
        ];
        description = "DirectSound extension (Windows) for the Hommage sound library";
        license = "GPL";
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "homoiconic" = callPackage
@@ -132311,9 +132299,7 @@ self: {
        libraryHaskellDepends = [ base ];
        description = "Cross-platform interface to the PC speaker";
        license = lib.licenses.asl20;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "hoobuddy" = callPackage
@@ -133565,9 +133551,7 @@ self: {
        librarySystemDepends = [ papi ];
        description = "Binding for the PAPI library";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {inherit (pkgs) papi;};
@@ -136866,7 +136850,8 @@ self: {
        libraryPkgconfigDepends = [ gsl ];
        description = "Signal processing and EEG data analysis";
        license = lib.licenses.bsd3;
-     }) {inherit (pkgs) blas; inherit (pkgs) gsl; liblapack = null;};
+     }) {inherit (pkgs) blas; inherit (pkgs) gsl; 
+         inherit (pkgs) liblapack;};
 
   "hsilop" = callPackage
     ({ mkDerivation, base, directory, filepath, haskeline, xdg-basedir
@@ -151057,9 +151042,7 @@ self: {
        librarySystemDepends = [ wirelesstools ];
        description = "Bindings for the iw C library";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) wirelesstools;};
 
   "ix" = callPackage
@@ -152487,9 +152470,7 @@ self: {
        ];
        description = "Interface for JavaScript that works with GHCJS and GHC";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "jsaddle-webkitgtk" = callPackage
@@ -153029,7 +153010,7 @@ self: {
        license = lib.licenses.mit;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {python = null;};
+     }) {inherit (pkgs) python;};
 
   "json-qq" = callPackage
     ({ mkDerivation, base, haskell-src-meta, parsec, template-haskell
@@ -159305,7 +159286,7 @@ self: {
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {liblapack = null;};
+     }) {inherit (pkgs) liblapack;};
 
   "lapack-ffi-tools" = callPackage
     ({ mkDerivation, base, bytestring, cassava, containers
@@ -159357,9 +159338,7 @@ self: {
        ];
        description = "Efficiently hash (large) Haskell values";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
        maintainers = with lib.maintainers; [ sternenseemann ];
      }) {};
 
@@ -162078,9 +162057,7 @@ self: {
        librarySystemDepends = [ modbus ];
        description = "Haskell bindings to the C modbus library";
        license = lib.licenses.bsd2;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {modbus = null;};
 
   "libmolude" = callPackage
@@ -162517,9 +162494,7 @@ self: {
        libraryPkgconfigDepends = [ systemd ];
        description = "Haskell bindings to libsystemd-journal";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) systemd;};
 
   "libtagc" = callPackage
@@ -162552,9 +162527,7 @@ self: {
        libraryPkgconfigDepends = [ libtelnet ];
        description = "Bindings to libtelnet";
        license = lib.licenses.gpl3Plus;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) libtelnet;};
 
   "libversion" = callPackage
@@ -162691,9 +162664,7 @@ self: {
        executableSystemDepends = [ nvpair zfs ];
        description = "Bindings to libzfs, for dealing with the Z File System and Zpools";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {nvpair = null; inherit (pkgs) zfs;};
 
   "licensor" = callPackage
@@ -163586,9 +163557,7 @@ self: {
        libraryHaskellDepends = [ base sbv ];
        description = "Use SMT solvers to solve linear systems over integers and rationals";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {};
 
   "linearmap-category" = callPackage
@@ -163999,9 +163968,7 @@ self: {
        libraryHaskellDepends = [ base bytestring time unix ];
        description = "Bindings to Linux evdev input device interface";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "linux-file-extents" = callPackage
@@ -164015,9 +163982,7 @@ self: {
        libraryHaskellDepends = [ base unix ];
        description = "Retrieve file fragmentation information under Linux";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "linux-framebuffer" = callPackage
@@ -164041,9 +164006,7 @@ self: {
        libraryHaskellDepends = [ base bytestring hashable unix ];
        description = "Thinner binding to the Linux Kernel's inotify interface";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "linux-kmod" = callPackage
@@ -164069,9 +164032,7 @@ self: {
        libraryHaskellDepends = [ base bytestring ];
        description = "Mount and unmount filesystems";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "linux-namespaces" = callPackage
@@ -164083,9 +164044,7 @@ self: {
        libraryHaskellDepends = [ base bytestring unix ];
        description = "Work with linux namespaces: create new or enter existing ones";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "linux-perf" = callPackage
@@ -164204,9 +164163,7 @@ self: {
        ];
        description = "Labeled File System interface for LIO";
        license = "GPL";
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "lio-simple" = callPackage
@@ -166563,9 +166520,7 @@ self: {
        ];
        description = "Journald back-end for logging-facade";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "logging-facade-syslog" = callPackage
@@ -168436,7 +168391,7 @@ self: {
        doHaddock = false;
        description = "liblzma C library and headers for use by LZMA bindings";
        license = lib.licenses.publicDomain;
-       platforms = lib.platforms.none;
+       platforms = [ ] ++ lib.platforms.windows;
      }) {};
 
   "lzma-conduit" = callPackage
@@ -174122,9 +174077,7 @@ self: {
        ];
        description = "Convert between datatypes of the midi and the alsa packages";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "midi-music-box" = callPackage
@@ -179484,7 +179437,7 @@ self: {
        testSystemDepends = [ mpich ];
        description = "MPI bindings for Haskell";
        license = lib.licenses.asl20;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {inherit (pkgs) mpich;};
 
   "mpi-hs-binary" = callPackage
@@ -179502,7 +179455,7 @@ self: {
        testHaskellDepends = [ base ];
        description = "MPI bindings for Haskell";
        license = lib.licenses.asl20;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {};
 
   "mpi-hs-cereal" = callPackage
@@ -179520,7 +179473,7 @@ self: {
        testHaskellDepends = [ base ];
        description = "MPI bindings for Haskell";
        license = lib.licenses.asl20;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {};
 
   "mpi-hs-store" = callPackage
@@ -179538,7 +179491,7 @@ self: {
        testHaskellDepends = [ base ];
        description = "MPI bindings for Haskell";
        license = lib.licenses.asl20;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {};
 
   "mplayer-spot" = callPackage
@@ -179559,9 +179512,7 @@ self: {
        executableHaskellDepends = [ base ];
        description = "Save your spot when watching movies with @mplayer@";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {};
 
   "mpppc" = callPackage
@@ -179693,9 +179644,7 @@ self: {
        testHaskellDepends = [ base HUnit ip text ];
        description = "A Multipath TCP path manager";
        license = lib.licenses.gpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -184495,9 +184444,7 @@ self: {
        executableHaskellDepends = [ base ];
        description = "Netlink communication for Haskell";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "netlist" = callPackage
@@ -189863,9 +189810,7 @@ self: {
        librarySystemDepends = [ libGL libX11 libXinerama ovr systemd ];
        description = "Oculus Rift ffi providing head tracking data";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
      }) {inherit (pkgs) libGL; inherit (pkgs.xorg) libX11; 
          inherit (pkgs.xorg) libXinerama; ovr = null; 
@@ -194309,10 +194254,8 @@ self: {
        libraryToolDepends = [ c2hs ];
        description = "Haskell binding for C PAM API";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
-     }) {pam = null;};
+       badPlatforms = [ "x86_64-darwin" ];
+     }) {inherit (pkgs) pam;};
 
   "pan-os-syslog" = callPackage
     ({ mkDerivation, base, byteslice, bytesmith, chronos, gauge, ip
@@ -196087,9 +196030,7 @@ self: {
        libraryHaskellDepends = [ array base ];
        description = "Simply interfacing the parallel port on linux";
        license = "GPL";
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "parquet-hs" = callPackage
@@ -197028,7 +196969,7 @@ self: {
        ];
        description = "Hashing and checking of passwords";
        license = lib.licenses.bsd3;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
        maintainers = with lib.maintainers; [ cdepillabout ];
      }) {};
 
@@ -197053,7 +196994,7 @@ self: {
        ];
        description = "typeclass instances for password package";
        license = lib.licenses.bsd3;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
        maintainers = with lib.maintainers; [ cdepillabout ];
      }) {};
 
@@ -199191,7 +199132,7 @@ self: {
        ];
        description = "Serialization library with state and leb128 encoding";
        license = lib.licenses.bsd3;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
      }) {};
 
   "persist2er" = callPackage
@@ -203237,9 +203178,7 @@ self: {
        ];
        description = "Haskell game engine like fantasy console";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "pkcs1" = callPackage
@@ -206103,9 +206042,7 @@ self: {
        ];
        description = "posix bindings";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {inherit (pkgs) systemd;};
@@ -212995,7 +212932,7 @@ self: {
        license = lib.licenses.mit;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {python = null;};
+     }) {inherit (pkgs) python;};
 
   "pyfi" = callPackage
     ({ mkDerivation, aeson, base, bytestring, containers, pureMD5
@@ -213013,7 +212950,7 @@ self: {
        license = lib.licenses.mit;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {python = null;};
+     }) {inherit (pkgs) python;};
 
   "python-pickle" = callPackage
     ({ mkDerivation, attoparsec, base, bytestring, cereal, cmdargs
@@ -217148,9 +217085,7 @@ self: {
        ];
        description = "Programmatically edit MIDI events via ALSA and reactive-banana";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "reactive-banana" = callPackage
@@ -217416,7 +217351,10 @@ self: {
        ];
        description = "An alternate implementation of push-pull FRP";
        license = "GPL";
-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];
      }) {};
 
   "reactor" = callPackage
@@ -218401,7 +218339,7 @@ self: {
        license = lib.licenses.bsd3;
        hydraPlatforms = lib.platforms.none;
        broken = true;
-     }) {raptor2 = null; redland = null;};
+     }) {raptor2 = null; inherit (pkgs) redland;};
 
   "redo" = callPackage
     ({ mkDerivation, base, bytestring, containers, directory, filepath
@@ -218919,7 +218857,7 @@ self: {
        ];
        description = "Functional Reactive Web Apps with Reflex";
        license = lib.licenses.bsd3;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ maralorn ];
      }) {};
 
@@ -219033,7 +218971,7 @@ self: {
        executableHaskellDepends = [ base reflex-dom text ];
        description = "A reflex-dom widget to draw on a canvas with a fragment shader program";
        license = lib.licenses.mit;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {};
 
   "reflex-dom-helpers" = callPackage
@@ -219355,7 +219293,7 @@ self: {
        ];
        description = "Helper widgets for reflex-localize";
        license = lib.licenses.mit;
-       platforms = [ "armv7l-linux" "i686-linux" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "x86_64-darwin" ];
      }) {};
 
   "reflex-monad-auth" = callPackage
@@ -225906,9 +225844,7 @@ self: {
        libraryToolDepends = [ c2hs ];
        description = "Bindings to librtlsdr";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) rtl-sdr;};
 
   "rtnetlink" = callPackage
@@ -226009,9 +225945,7 @@ self: {
        testHaskellDepends = [ base ];
        description = "Binding to the C++ audio stretching library Rubber Band";
        license = lib.licenses.gpl3Only;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) rubberband;};
 
   "ruby-marshal" = callPackage
@@ -228041,9 +227975,7 @@ self: {
        testSystemDepends = [ z3 ];
        description = "SMT Based Verification: Symbolic Haskell theorem prover using SMT solving";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
        hydraPlatforms = lib.platforms.none;
      }) {inherit (pkgs) z3;};
 
@@ -228076,9 +228008,7 @@ self: {
        ];
        description = "SMT Based Verification: Symbolic Haskell theorem prover using SMT solving";
        license = lib.licenses.bsd3;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {inherit (pkgs) z3;};
 
   "sbvPlugin" = callPackage
@@ -228440,7 +228370,7 @@ self: {
        ];
        description = "Generates unique passwords for various websites from a single password";
        license = lib.licenses.bsd3;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
      }) {};
 
   "scc" = callPackage
@@ -229599,7 +229529,7 @@ self: {
        ];
        description = "Stronger password hashing via sequential memory-hard functions";
        license = lib.licenses.bsd3;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
      }) {};
 
   "scrz" = callPackage
@@ -229885,9 +229815,7 @@ self: {
        libraryPkgconfigDepends = [ SDL2_mixer ];
        description = "Bindings to SDL2_mixer";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) SDL2_mixer;};
 
   "sdl2-sprite" = callPackage
@@ -229927,9 +229855,7 @@ self: {
        libraryPkgconfigDepends = [ SDL2 SDL2_ttf ];
        description = "Bindings to SDL2_ttf";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) SDL2; inherit (pkgs) SDL2_ttf;};
 
   "sdnv" = callPackage
@@ -230115,7 +230041,7 @@ self: {
        ];
        description = "A software defined radio library";
        license = lib.licenses.bsd3;
-       platforms = [ "x86_64-darwin" "x86_64-linux" ];
+       platforms = [ ] ++ lib.platforms.x86_64;
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -253980,9 +253906,7 @@ self: {
        ];
        description = "Control synthesizer effects via ALSA/MIDI";
        license = "GPL";
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {};
@@ -254867,9 +254791,7 @@ self: {
        executablePkgconfigDepends = [ gtk3 ];
        description = "A desktop bar similar to xmobar, but with more GUI";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ rvl ];
      }) {inherit (pkgs) gtk3;};
 
@@ -258452,9 +258374,7 @@ self: {
        ];
        description = "Terminal emulator configurable in Haskell";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ cdepillabout ];
      }) {inherit (pkgs) gtk3; inherit (pkgs) pcre2; 
          vte_291 = pkgs.vte;};
@@ -264183,9 +264103,7 @@ self: {
        librarySystemDepends = [ tokyocabinet tokyotyrant ];
        description = "FFI bindings to libtokyotyrant";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        hydraPlatforms = lib.platforms.none;
        broken = true;
      }) {inherit (pkgs) tokyocabinet; inherit (pkgs) tokyotyrant;};
@@ -270064,9 +269982,8 @@ self: {
        libraryPkgconfigDepends = [ systemd ];
        description = "libudev bindings";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       platforms = [ ] ++ lib.platforms.linux;
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) systemd;};
 
   "udp-conduit" = callPackage
@@ -275988,9 +275905,7 @@ self: {
        ];
        description = "An intermediate language for Hoare logic style verification";
        license = lib.licenses.asl20;
-       platforms = [
-         "armv7l-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"
-       ];
+       badPlatforms = [ "aarch64-linux" ];
      }) {};
 
   "verify" = callPackage
@@ -277082,9 +276997,7 @@ self: {
        executableSystemDepends = [ quat vrpn ];
        description = "Bindings to VRPN";
        license = lib.licenses.mit;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {quat = null; inherit (pkgs) vrpn;};
 
   "vt-utils" = callPackage
@@ -277268,7 +277181,7 @@ self: {
        libraryPkgconfigDepends = [ vulkan ];
        description = "Bindings to the Vulkan graphics API";
        license = lib.licenses.bsd3;
-       platforms = [ "aarch64-linux" "x86_64-linux" ];
+       badPlatforms = [ "armv7l-linux" "i686-linux" "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ expipiplus1 ];
      }) {vulkan = null;};
 
@@ -277302,9 +277215,7 @@ self: {
        testHaskellDepends = [ base doctest ];
        description = "Utils for the vulkan package";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
        maintainers = with lib.maintainers; [ expipiplus1 ];
      }) {};
 
@@ -280835,9 +280746,7 @@ self: {
        libraryPkgconfigDepends = [ webkitgtk ];
        description = "JavaScriptCore FFI from webkitgtk";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) webkitgtk;};
 
   "webkitgtk3" = callPackage
@@ -284036,9 +283945,7 @@ self: {
        ];
        description = "Haskell extended file attributes interface";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs) attr;};
 
   "xbattbar" = callPackage
@@ -284303,7 +284210,7 @@ self: {
        executableSystemDepends = [ xgboost ];
        description = "XGBoost library for Haskell";
        license = lib.licenses.mit;
-       platforms = [ "i686-linux" "x86_64-darwin" "x86_64-linux" ];
+       badPlatforms = [ "aarch64-linux" "armv7l-linux" ];
      }) {inherit (pkgs) xgboost;};
 
   "xhaskell-library" = callPackage
@@ -285544,9 +285451,7 @@ self: {
        benchmarkHaskellDepends = [ base gauge mtl time ];
        description = "A Minimalistic Text Based Status Bar";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {inherit (pkgs.xorg) libXpm; inherit (pkgs.xorg) libXrandr; 
          inherit (pkgs.xorg) libXrender; inherit (pkgs) wirelesstools;};
 
@@ -285722,9 +285627,7 @@ self: {
        ];
        description = "Third party extensions for xmonad with wacky dependencies";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "xmonad-screenshot" = callPackage
@@ -285802,9 +285705,7 @@ self: {
        ];
        description = "XMonad volume controls";
        license = lib.licenses.bsd3;
-       platforms = [
-         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-linux"
-       ];
+       badPlatforms = [ "x86_64-darwin" ];
      }) {};
 
   "xmonad-wallpaper" = callPackage

@maralorn
Copy link
Member

maralorn commented Jun 27, 2021

Can you give a bit more motivation why we want this? When I look at something like:

-       platforms = lib.platforms.none;
+       badPlatforms = [
+         "aarch64-linux" "armv7l-linux" "i686-linux" "x86_64-darwin"
+         "x86_64-linux"
+       ];

I am not sure that this is an improvement.

(Minor nitpick: How hard would it be to get rid of the [] ++ pieces?)

@sternenseemann
Copy link
Member Author

sternenseemann commented Jun 27, 2021

Can you give a bit more motivation why we want this? When I look at something like:

This is a tremendous improvement already, since it allow cross compiling to Windows without setting NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM. My plan is to go one better still — via an supported-platforms field we could explicitly set lib.platforms.windows.

Also background is #497 of course.

(Minor nitpick: How hard would it be to get rid of the [] ++ pieces?)

Probably, but then it would line up less nicely if multiple ones were given (I think).

@maralorn
Copy link
Member

Okay, I have stared at this for quite a while now and I have written multiple lengthy responses. But every questioned I asked solved itself by staring at it a while longer. This looks all very sensible.

Obviously currently a lot of entries should be using platform: windows instead of a long deny list, but I guess that’s the plan, when we are there.

(Minor nitpick: How hard would it be to get rid of the [] ++ pieces?)

Probably, but then it would line up less nicely if multiple ones were given (I think).

I am not sure what you are saying here. What wouldn‘t line up?

@sternenseemann
Copy link
Member Author

sternenseemann commented Jun 27, 2021

With lining up I meant the following (although I haven't tested if the first one works as intended yet):

{
  platforms = [
    "foo" "bar" "baz"
  ] ++ lib.platforms.xyz
    ++ lib.platforms.zyx;

  badPlatforms = [ ]
    ++ lib.platforms.bar
    ++ lib.platforms.baz;
}

Overall, the pretty printing of the new platform attributes needs more testing and probably some additional work.

@sternenseemann sternenseemann force-pushed the meta-badplatforms branch 2 times, most recently from 71d1de4 to b06966f Compare October 20, 2021 19:37
@sternenseemann
Copy link
Member Author

sternenseemann commented Oct 20, 2021

I think I've covered everything I wanted to with this PR:

  • Instead of subtracting from allKnownPlatforms, we use badPlatforms
  • We can specify platforms explicitly via supported-platforms in the hackage2nix config file
  • We can mix and match single platforms (like x86_64-netbsd) and platform groups (like platforms.darwin) in supported-platforms and unsupported-platforms.

A hint of the potential of this can be gathered from this commit where I converted some of the individually listed platforms into groups and moved some platform specifications into the more appropriate supported-platforms: sternenseemann/nixpkgs@ee8604e

Next step would be reviewing and merging NixOS/distribution-nixpkgs#19 and the releasing distribution-nixpkgs 1.7.0.

@sternenseemann sternenseemann force-pushed the meta-badplatforms branch 2 times, most recently from dcbda20 to ed54797 Compare May 8, 2022 20:31
@Profpatsch
Copy link
Member

Profpatsch commented May 11, 2022

So conceptually, actuallySupportedPlatforms = supportedPlatforms ``setDifference`` badPlatforms?

@sternenseemann
Copy link
Member Author

So conceptually, actuallySupportedPlatforms = supportedPlatformssetDifferencebadPlatforms?

Yes, although it is not quite implemented that way: https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix#L58-L60

@Profpatsch
Copy link
Member

that function can be sped up by first doing the the check for bad plattforms I guess cause the list of supported Platforms is usually longer, and both lists have to be traversed anyway in the worst case.

@sternenseemann
Copy link
Member Author

that function can be sped up by first doing the the check for bad plattforms I guess cause the list of supported Platforms is usually longer, and both lists have to be traversed anyway in the worst case.

That's quite an orthogonal problem though :)

@sternenseemann sternenseemann changed the title WIP: platform handling refactors distribution-nixpkgs 1.7.0 May 28, 2022
@sternenseemann
Copy link
Member Author

Includes all changes for now released distribution-nixpkgs 1.7.0

Also include #555 which should probably be reviewed/merged separately.

@sternenseemann sternenseemann force-pushed the meta-badplatforms branch 2 times, most recently from 3d7b96e to 4e36af5 Compare May 28, 2022 19:30
@sternenseemann sternenseemann marked this pull request as ready for review May 28, 2022 21:06
@sternenseemann sternenseemann added this to the 2.19.0 milestone May 30, 2022
Copy link
Member

@maralorn maralorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

I have a minor nitpick to prove that I actually read the code. I haven‘t tested anything but the code looks fine and apparently it compiles. ;-)

Thank you so much for seeing this through!

@sternenseemann sternenseemann force-pushed the meta-badplatforms branch 2 times, most recently from 3182dde to 49e0643 Compare June 14, 2022 14:44
`supported-platforms` gets mapped to the individual packages'
`platforms` meta field, so that, for a given package,

  supported-platforms.${name} - unsupported-platform.${name}

is the effective platform set.
This change no longer exclusively produces `NixpkgsPlatformSinge`s. The
main hurdle for this was parsing: We need to be able to denote platform
groups in the yaml configuration somehow. nixpkgsPlatformFromString
which was added in <NixOS/distribution-nixpkgs#19>
fills in this gap: Any string prefixed with either `platforms.` or
`lib.platforms.` will be interpreted as a platform group, all other
strings will (roughly) be treated as before.
If a there is a single executable, it is obviously the mainProgram.
We'll see a lot of example binaries this way, of course, but these being
built is not exactly a new problem.

Fixes: #541
@sternenseemann sternenseemann merged commit fd65bee into master Jun 14, 2022
@sternenseemann sternenseemann deleted the meta-badplatforms branch June 14, 2022 14:55
sternenseemann added a commit to sternenseemann/cabal2nix that referenced this pull request Jun 20, 2022
Distribution.Nixpkgs.Haskell.FromCabal.PostProcess defines logic that in
some cases prescribes a list of platforms. Currently this gets discarded
in hackage2nix which is a bug introduced in NixOS#506.

Before said PR, hackage2nix used a fairly elaborate logic involving Set
subtraction which was necessary because the default value would be
allKnownPlatforms. Instead of that we can now use a very simple logic:
We use whatever is set or not set by PostProcess / cabal2nix in general
and then allow whatever is yielded by that to be overwritten by the
configuration passed to hackage2nix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants