uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead

https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948
this can do it nicely.

Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
Anton Arapov 2021-04-03 12:58:10 +02:00 committed by Alan Daniels
commit 56de2bcd43
30691 changed files with 3076956 additions and 0 deletions

View file

@ -0,0 +1,40 @@
{ pkgs, lib, callPackage, newScope, Agda }:
let
mkAgdaPackages = Agda: lib.makeScope newScope (mkAgdaPackages' Agda);
mkAgdaPackages' = Agda: self: let
callPackage = self.callPackage;
inherit (callPackage ../build-support/agda {
inherit Agda self;
inherit (pkgs.haskellPackages) ghcWithPackages;
}) withPackages mkDerivation;
in {
inherit mkDerivation;
lib = lib.extend (final: prev: import ../build-support/agda/lib.nix { lib = prev; });
agda = withPackages [] // {
inherit withPackages;
passthru.tests.allPackages = withPackages (lib.filter (pkg: self.lib.isUnbrokenAgdaPackage pkg) (lib.attrValues self));
};
standard-library = callPackage ../development/libraries/agda/standard-library {
inherit (pkgs.haskellPackages) ghcWithPackages;
};
iowa-stdlib = callPackage ../development/libraries/agda/iowa-stdlib { };
agda-prelude = callPackage ../development/libraries/agda/agda-prelude { };
agda-categories = callPackage ../development/libraries/agda/agda-categories { };
cubical = callPackage ../development/libraries/agda/cubical { };
functional-linear-algebra = callPackage
../development/libraries/agda/functional-linear-algebra { };
generic = callPackage ../development/libraries/agda/generic { };
agdarsec = callPackage ../development/libraries/agda/agdarsec { };
};
in mkAgdaPackages Agda

1649
pkgs/top-level/aliases.nix Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,129 @@
{ beam, callPackage, wxGTK30, buildPackages, stdenv
, wxSupport ? true
, systemdSupport ? stdenv.isLinux
}:
with beam; {
lib = callPackage ../development/beam-modules/lib.nix { };
# R24 is the default version.
# The main switch to change default Erlang version.
defaultVersion = "erlangR24";
# Each
interpreters = with beam.interpreters; {
erlang = beam.interpreters.${defaultVersion};
erlang_odbc = beam.interpreters."${defaultVersion}_odbc";
erlang_javac = beam.interpreters."${defaultVersion}_javac";
erlang_odbc_javac = beam.interpreters."${defaultVersion}_odbc_javac";
# Standard Erlang versions, using the generic builder.
# R25
erlangR25 = lib.callErlang ../development/interpreters/erlang/R25.nix {
wxGTK = wxGTK30;
parallelBuild = true;
autoconf = buildPackages.autoconf269;
inherit wxSupport systemdSupport;
};
erlangR25_odbc = erlangR25.override { odbcSupport = true; };
erlangR25_javac = erlangR25.override { javacSupport = true; };
erlangR25_odbc_javac = erlangR25.override {
javacSupport = true;
odbcSupport = true;
};
# R24
erlangR24 = lib.callErlang ../development/interpreters/erlang/R24.nix {
wxGTK = wxGTK30;
# Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
parallelBuild = true;
autoconf = buildPackages.autoconf269;
inherit wxSupport systemdSupport;
};
erlangR24_odbc = erlangR24.override { odbcSupport = true; };
erlangR24_javac = erlangR24.override { javacSupport = true; };
erlangR24_odbc_javac = erlangR24.override {
javacSupport = true;
odbcSupport = true;
};
# R23
erlangR23 = lib.callErlang ../development/interpreters/erlang/R23.nix {
wxGTK = wxGTK30;
# Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
parallelBuild = true;
autoconf = buildPackages.autoconf269;
inherit wxSupport systemdSupport;
};
erlangR23_odbc = erlangR23.override { odbcSupport = true; };
erlangR23_javac = erlangR23.override { javacSupport = true; };
erlangR23_odbc_javac = erlangR23.override {
javacSupport = true;
odbcSupport = true;
};
# R22
erlangR22 = lib.callErlang ../development/interpreters/erlang/R22.nix {
wxGTK = wxGTK30;
# Can be enabled since the bug has been fixed in https://github.com/erlang/otp/pull/2508
parallelBuild = true;
autoconf = buildPackages.autoconf269;
inherit wxSupport systemdSupport;
};
erlangR22_odbc = erlangR22.override { odbcSupport = true; };
erlangR22_javac = erlangR22.override { javacSupport = true; };
erlangR22_odbc_javac = erlangR22.override {
javacSupport = true;
odbcSupport = true;
};
# R21
erlangR21 = lib.callErlang ../development/interpreters/erlang/R21.nix {
wxGTK = wxGTK30;
autoconf = buildPackages.autoconf269;
inherit wxSupport systemdSupport;
};
erlangR21_odbc = erlangR21.override { odbcSupport = true; };
erlangR21_javac = erlangR21.override { javacSupport = true; };
erlangR21_odbc_javac = erlangR21.override {
javacSupport = true;
odbcSupport = true;
};
# Basho fork, using custom builder.
erlang_basho_R16B02 =
lib.callErlang ../development/interpreters/erlang/R16B02-basho.nix {
autoconf = buildPackages.autoconf269;
inherit wxSupport;
};
erlang_basho_R16B02_odbc =
erlang_basho_R16B02.override { odbcSupport = true; };
# Other Beam languages. These are built with `beam.interpreters.erlang`. To
# access for example elixir built with different version of Erlang, use
# `beam.packages.erlangR24.elixir`.
inherit (packages.erlang)
elixir elixir_1_13 elixir_1_12 elixir_1_11 elixir_1_10 elixir_1_9 elixir_ls;
inherit (packages.erlang) lfe lfe_1_3;
};
# Helper function to generate package set with a specific Erlang version.
packagesWith = erlang:
callPackage ../development/beam-modules { inherit erlang; };
# Each field in this tuple represents all Beam packages in nixpkgs built with
# appropriate Erlang/OTP version.
packages = {
# Packages built with default Erlang version.
erlang = packages.${defaultVersion};
erlangR25 = packagesWith interpreters.erlangR25;
erlangR24 = packagesWith interpreters.erlangR24;
erlangR23 = packagesWith interpreters.erlangR23;
erlangR22 = packagesWith interpreters.erlangR22;
erlangR21 = packagesWith interpreters.erlangR21;
};
}

146
pkgs/top-level/config.nix Normal file
View file

@ -0,0 +1,146 @@
# This file defines the structure of the `config` nixpkgs option.
{ config, lib, ... }:
with lib;
let
mkMassRebuild = args: mkOption (builtins.removeAttrs args [ "feature" ] // {
type = args.type or (types.uniq types.bool);
default = args.default or false;
description = (args.description or ''
Whether to ${args.feature} while building nixpkgs packages.
'') + ''
Changing the default may cause a mass rebuild.
'';
});
options = {
/* Internal stuff */
# Hide built-in module system options from docs.
_module.args = mkOption {
internal = true;
};
warnings = mkOption {
type = types.listOf types.str;
default = [];
internal = true;
};
/* Config options */
warnUndeclaredOptions = mkOption {
description = "Whether to warn when <literal>config</literal> contains an unrecognized attribute.";
default = false;
};
doCheckByDefault = mkMassRebuild {
feature = "run <literal>checkPhase</literal> by default";
};
strictDepsByDefault = mkMassRebuild {
feature = "set <literal>strictDeps</literal> to true by default";
};
enableParallelBuildingByDefault = mkMassRebuild {
feature = "set <literal>enableParallelBuilding</literal> to true by default";
};
contentAddressedByDefault = mkMassRebuild {
feature = "set <literal>__contentAddressed</literal> to true by default";
};
allowAliases = mkOption {
type = types.bool;
default = true;
description = ''
Whether to expose old attribute names for compatibility.
The recommended setting is to enable this, as it
improves backward compatibity, easing updates.
The only reason to disable aliases is for continuous
integration purposes. For instance, Nixpkgs should
not depend on aliases in its internal code. Projects
that aren't Nixpkgs should be cautious of instantly
removing all usages of aliases, as migrating too soon
can break compatibility with the stable Nixpkgs releases.
'';
};
allowUnfree = mkOption {
type = types.bool;
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_UNFREE" == "1"'';
description = ''
Whether to allow unfree packages.
See <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree">Installing unfree packages</link> in the NixOS manual.
'';
};
allowBroken = mkOption {
type = types.bool;
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_BROKEN" == "1"'';
description = ''
Whether to allow broken packages.
See <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#sec-allow-broken">Installing broken packages</link> in the NixOS manual.
'';
};
allowUnsupportedSystem = mkOption {
type = types.bool;
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM" == "1"'';
description = ''
Whether to allow unsupported packages.
See <link xlink:href="https://nixos.org/manual/nixpkgs/stable/#sec-allow-unsupported-system">Installing packages on unsupported systems</link> in the NixOS manual.
'';
};
showDerivationWarnings = mkOption {
type = types.listOf (types.enum [ "maintainerless" ]);
default = [];
description = ''
Which warnings to display for potentially dangerous
or deprecated values passed into `stdenv.mkDerivation`.
A list of warnings can be found in
<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix">/pkgs/stdenv/generic/check-meta.nix</link>.
This is not a stable interface; warnings may be added, changed
or removed without prior notice.
'';
};
};
in {
freeformType =
let t = lib.types.lazyAttrsOf lib.types.raw;
in t // {
merge = loc: defs:
let r = t.merge loc defs;
in r // { _undeclared = r; };
};
inherit options;
config = {
warnings = lib.optionals config.warnUndeclaredOptions (
lib.mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or {}
);
};
}

View file

@ -0,0 +1,169 @@
{ lib, stdenv, fetchzip
, callPackage, newScope, recurseIntoAttrs, ocamlPackages_4_05, ocamlPackages_4_09
, ocamlPackages_4_10, ocamlPackages_4_12, fetchpatch, makeWrapper, coq2html
}@args:
let lib = import ../build-support/coq/extra-lib.nix {inherit (args) lib;}; in
let
mkCoqPackages' = self: coq:
let callPackage = self.callPackage; in {
inherit coq lib;
coqPackages = self;
metaFetch = import ../build-support/coq/meta-fetch/default.nix
{inherit lib stdenv fetchzip; };
mkCoqDerivation = callPackage ../build-support/coq {};
contribs = recurseIntoAttrs
(callPackage ../development/coq-modules/contribs {});
aac-tactics = callPackage ../development/coq-modules/aac-tactics {};
addition-chains = callPackage ../development/coq-modules/addition-chains {};
autosubst = callPackage ../development/coq-modules/autosubst {};
bignums = if lib.versionAtLeast coq.coq-version "8.6"
then callPackage ../development/coq-modules/bignums {}
else null;
category-theory = callPackage ../development/coq-modules/category-theory { };
ceres = callPackage ../development/coq-modules/ceres {};
Cheerios = callPackage ../development/coq-modules/Cheerios {};
CoLoR = callPackage ../development/coq-modules/CoLoR {};
compcert = callPackage ../development/coq-modules/compcert {
inherit fetchpatch makeWrapper coq2html lib stdenv;
};
coq-bits = callPackage ../development/coq-modules/coq-bits {};
coq-elpi = callPackage ../development/coq-modules/coq-elpi {};
coq-ext-lib = callPackage ../development/coq-modules/coq-ext-lib {};
coq-haskell = callPackage ../development/coq-modules/coq-haskell { };
coq-record-update = callPackage ../development/coq-modules/coq-record-update { };
coqeal = callPackage ../development/coq-modules/coqeal {};
coqhammer = callPackage ../development/coq-modules/coqhammer {};
coqprime = callPackage ../development/coq-modules/coqprime {};
coqtail-math = callPackage ../development/coq-modules/coqtail-math {};
coquelicot = callPackage ../development/coq-modules/coquelicot {};
corn = callPackage ../development/coq-modules/corn {};
deriving = callPackage ../development/coq-modules/deriving {};
dpdgraph = callPackage ../development/coq-modules/dpdgraph {};
equations = callPackage ../development/coq-modules/equations { };
extructures = callPackage ../development/coq-modules/extructures { };
fiat_HEAD = callPackage ../development/coq-modules/fiat/HEAD.nix {};
flocq = callPackage ../development/coq-modules/flocq {};
fourcolor = callPackage ../development/coq-modules/fourcolor {};
gaia = callPackage ../development/coq-modules/gaia {};
gaia-hydras = callPackage ../development/coq-modules/gaia-hydras {};
gappalib = callPackage ../development/coq-modules/gappalib {};
goedel = callPackage ../development/coq-modules/goedel {};
graph-theory = callPackage ../development/coq-modules/graph-theory {};
heq = callPackage ../development/coq-modules/heq {};
hierarchy-builder = callPackage ../development/coq-modules/hierarchy-builder {};
HoTT = callPackage ../development/coq-modules/HoTT {};
hydra-battles = callPackage ../development/coq-modules/hydra-battles {};
interval = callPackage ../development/coq-modules/interval {};
InfSeqExt = callPackage ../development/coq-modules/InfSeqExt {};
iris = callPackage ../development/coq-modules/iris {};
itauto = callPackage ../development/coq-modules/itauto { };
ITree = callPackage ../development/coq-modules/ITree { };
LibHyps = callPackage ../development/coq-modules/LibHyps {};
ltac2 = callPackage ../development/coq-modules/ltac2 {};
math-classes = callPackage ../development/coq-modules/math-classes { };
mathcomp = callPackage ../development/coq-modules/mathcomp {};
ssreflect = self.mathcomp.ssreflect;
mathcomp-ssreflect = self.mathcomp.ssreflect;
mathcomp-fingroup = self.mathcomp.fingroup;
mathcomp-algebra = self.mathcomp.algebra;
mathcomp-solvable = self.mathcomp.solvable;
mathcomp-field = self.mathcomp.field;
mathcomp-character = self.mathcomp.character;
mathcomp-abel = callPackage ../development/coq-modules/mathcomp-abel {};
mathcomp-analysis = callPackage ../development/coq-modules/mathcomp-analysis {};
mathcomp-finmap = callPackage ../development/coq-modules/mathcomp-finmap {};
mathcomp-bigenough = callPackage ../development/coq-modules/mathcomp-bigenough {};
mathcomp-real-closed = callPackage ../development/coq-modules/mathcomp-real-closed {};
mathcomp-word = callPackage ../development/coq-modules/mathcomp-word {};
mathcomp-zify = callPackage ../development/coq-modules/mathcomp-zify {};
mathcomp-tarjan = callPackage ../development/coq-modules/mathcomp-tarjan {};
metacoq = callPackage ../development/coq-modules/metacoq { };
metalib = callPackage ../development/coq-modules/metalib { };
multinomials = callPackage ../development/coq-modules/multinomials {};
odd-order = callPackage ../development/coq-modules/odd-order { };
paco = callPackage ../development/coq-modules/paco {};
paramcoq = callPackage ../development/coq-modules/paramcoq {};
parsec = callPackage ../development/coq-modules/parsec {};
pocklington = callPackage ../development/coq-modules/pocklington {};
QuickChick = callPackage ../development/coq-modules/QuickChick {};
reglang = callPackage ../development/coq-modules/reglang {};
relation-algebra = callPackage ../development/coq-modules/relation-algebra {};
semantics = callPackage ../development/coq-modules/semantics {};
serapi = callPackage ../development/coq-modules/serapi {};
simple-io = callPackage ../development/coq-modules/simple-io { };
smpl = callPackage ../development/coq-modules/smpl { };
smtcoq = callPackage ../development/coq-modules/smtcoq { };
stdpp = callPackage ../development/coq-modules/stdpp { };
StructTact = callPackage ../development/coq-modules/StructTact {};
tlc = callPackage ../development/coq-modules/tlc {};
topology = callPackage ../development/coq-modules/topology {};
trakt = callPackage ../development/coq-modules/trakt {};
Velisarios = callPackage ../development/coq-modules/Velisarios {};
Verdi = callPackage ../development/coq-modules/Verdi {};
VST = callPackage ../development/coq-modules/VST {};
zorns-lemma = callPackage ../development/coq-modules/zorns-lemma {};
filterPackages = doesFilter: if doesFilter then filterCoqPackages self else self;
};
filterCoqPackages = set:
lib.listToAttrs (
lib.concatMap (name: let v = set.${name} or null; in
lib.optional (! v.meta.coqFilter or false)
(lib.nameValuePair name (
if lib.isAttrs v && v.recurseForDerivations or false
then filterCoqPackages v
else v))
) (lib.attrNames set)
);
mkCoq = version: callPackage ../applications/science/logic/coq {
inherit version
ocamlPackages_4_05
ocamlPackages_4_09
ocamlPackages_4_10
ocamlPackages_4_12
;
};
in rec {
/* The function `mkCoqPackages` takes as input a derivation for Coq and produces
* a set of libraries built with that specific Coq. More libraries are known to
* this function than what is compatible with that version of Coq. Therefore,
* libraries that are not known to be compatible are removed (filtered out) from
* the resulting set. For meta-programming purposes (inpecting the derivations
* rather than building the libraries) this filtering can be disabled by setting
* a `dontFilter` attribute into the Coq derivation.
*/
mkCoqPackages = coq:
let self = lib.makeScope newScope (lib.flip mkCoqPackages' coq); in
self.filterPackages (! coq.dontFilter or false);
coq_8_5 = mkCoq "8.5";
coq_8_6 = mkCoq "8.6";
coq_8_7 = mkCoq "8.7";
coq_8_8 = mkCoq "8.8";
coq_8_9 = mkCoq "8.9";
coq_8_10 = mkCoq "8.10";
coq_8_11 = mkCoq "8.11";
coq_8_12 = mkCoq "8.12";
coq_8_13 = mkCoq "8.13";
coq_8_14 = mkCoq "8.14";
coq_8_15 = mkCoq "8.15";
coqPackages_8_5 = mkCoqPackages coq_8_5;
coqPackages_8_6 = mkCoqPackages coq_8_6;
coqPackages_8_7 = mkCoqPackages coq_8_7;
coqPackages_8_8 = mkCoqPackages coq_8_8;
coqPackages_8_9 = mkCoqPackages coq_8_9;
coqPackages_8_10 = mkCoqPackages coq_8_10;
coqPackages_8_11 = mkCoqPackages coq_8_11;
coqPackages_8_12 = mkCoqPackages coq_8_12;
coqPackages_8_13 = mkCoqPackages coq_8_13;
coqPackages_8_14 = mkCoqPackages coq_8_14;
coqPackages_8_15 = mkCoqPackages coq_8_15;
coqPackages = recurseIntoAttrs coqPackages_8_15;
coq = coqPackages.coq;
}

View file

@ -0,0 +1,94 @@
{ newScope, lxqt, lib, libsForQt5 }:
let
packages = self: with self; {
# Libs
libcprime = libsForQt5.callPackage ../applications/misc/cubocore-packages/libcprime { };
libcsys = libsForQt5.callPackage ../applications/misc/cubocore-packages/libcsys { };
# Apps
coreaction = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreaction {
inherit libcprime libcsys;
};
corearchiver = libsForQt5.callPackage ../applications/misc/cubocore-packages/corearchiver {
inherit libcprime libcsys;
};
corefm = libsForQt5.callPackage ../applications/misc/cubocore-packages/corefm {
inherit libcprime libcsys;
};
coregarage = libsForQt5.callPackage ../applications/misc/cubocore-packages/coregarage {
inherit libcprime libcsys;
};
corehunt = libsForQt5.callPackage ../applications/misc/cubocore-packages/corehunt {
inherit libcprime libcsys;
};
coreimage = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreimage {
inherit libcprime libcsys;
};
coreinfo = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreinfo {
inherit libcprime libcsys;
};
corekeyboard = libsForQt5.callPackage ../applications/misc/cubocore-packages/corekeyboard {
inherit libcprime libcsys;
};
corepad = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepad {
inherit libcprime libcsys;
};
corepaint = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepaint {
inherit libcprime libcsys;
};
corepdf = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepdf {
inherit libcprime libcsys;
};
corepins = libsForQt5.callPackage ../applications/misc/cubocore-packages/corepins {
inherit libcprime libcsys;
};
corerenamer = libsForQt5.callPackage ../applications/misc/cubocore-packages/corerenamer {
inherit libcprime libcsys;
};
coreshot = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreshot {
inherit libcprime libcsys;
};
corestats = libsForQt5.callPackage ../applications/misc/cubocore-packages/corestats {
inherit libcprime libcsys;
};
corestuff = libsForQt5.callPackage ../applications/misc/cubocore-packages/corestuff {
inherit libcprime libcsys;
};
coreterminal = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreterminal {
inherit (lxqt) qtermwidget;
inherit libcprime libcsys;
};
coretime = libsForQt5.callPackage ../applications/misc/cubocore-packages/coretime {
inherit libcprime libcsys;
};
coretoppings = libsForQt5.callPackage ../applications/misc/cubocore-packages/coretoppings {
inherit libcprime libcsys;
};
coreuniverse = libsForQt5.callPackage ../applications/misc/cubocore-packages/coreuniverse {
inherit libcprime libcsys;
};
};
in
lib.makeScope newScope packages

View file

@ -0,0 +1,72 @@
{ lib
, pkgs
, cudaVersion
}:
with lib;
let
scope = makeScope pkgs.newScope (final: {
# Here we put package set configuration and utility functions.
inherit cudaVersion;
cudaMajorVersion = versions.major final.cudaVersion;
cudaMajorMinorVersion = lib.versions.majorMinor final.cudaVersion;
inherit lib pkgs;
addBuildInputs = drv: buildInputs: drv.overrideAttrs (oldAttrs: {
buildInputs = (oldAttrs.buildInputs or []) ++ buildInputs;
});
});
cutensorExtension = final: prev: let
### CuTensor
buildCuTensorPackage = final.callPackage ../development/libraries/science/math/cutensor/generic.nix;
cuTensorVersions = {
"1.2.2.5" = {
hash = "sha256-lU7iK4DWuC/U3s1Ct/rq2Gr3w4F2U7RYYgpmF05bibY=";
};
"1.3.1.3" = {
hash = "sha256-mNlVnabB2IC3HnYY0mb06RLqQzDxN9ePGVeBy3hkBC8=";
};
};
inherit (final) cudaMajorMinorVersion cudaMajorVersion;
cutensor = buildCuTensorPackage rec {
version = if cudaMajorMinorVersion == "10.1" then "1.2.2.5" else "1.3.1.3";
inherit (cuTensorVersions.${version}) hash;
# This can go into generic.nix
libPath = "lib/${if cudaMajorVersion == "10" then cudaMajorMinorVersion else cudaMajorVersion}";
};
in { inherit cutensor; };
extraPackagesExtension = final: prev: {
nccl = final.callPackage ../development/libraries/science/math/nccl { };
autoAddOpenGLRunpathHook = final.callPackage ( { makeSetupHook, addOpenGLRunpath }:
makeSetupHook {
name = "auto-add-opengl-runpath-hook";
deps = [
addOpenGLRunpath
];
} ../development/compilers/cudatoolkit/auto-add-opengl-runpath-hook.sh
) {};
};
composedExtension = composeManyExtensions [
extraPackagesExtension
(import ../development/compilers/cudatoolkit/extension.nix)
(import ../development/compilers/cudatoolkit/redist/extension.nix)
(import ../development/compilers/cudatoolkit/redist/overrides.nix)
(import ../development/libraries/science/math/cudnn/extension.nix)
(import ../test/cuda/cuda-samples/extension.nix)
(import ../test/cuda/cuda-library-samples/extension.nix)
cutensorExtension
];
in (scope.overrideScope' composedExtension)

View file

@ -0,0 +1,202 @@
{ lib
, buildPackages, pkgs, targetPackages
, pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget, pkgsHostHost, pkgsTargetTarget
, stdenv, splicePackages, newScope
, preLibcCrossHeaders
}:
let
otherSplices = {
selfBuildBuild = pkgsBuildBuild.darwin;
selfBuildHost = pkgsBuildHost.darwin;
selfBuildTarget = pkgsBuildTarget.darwin;
selfHostHost = pkgsHostHost.darwin;
selfTargetTarget = pkgsTargetTarget.darwin or {}; # might be missing
};
# Prefix for binaries. Customarily ends with a dash separator.
#
# TODO(@Ericson2314) Make unconditional, or optional but always true by
# default.
targetPrefix = lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
(stdenv.targetPlatform.config + "-");
in
lib.makeScopeWithSplicing splicePackages newScope otherSplices (_: {}) (spliced: spliced.apple_sdk.frameworks) (self: let
inherit (self) mkDerivation callPackage;
# Must use pkgs.callPackage to avoid infinite recursion.
# Open source packages that are built from source
appleSourcePackages = pkgs.callPackage ../os-specific/darwin/apple-source-releases { } self;
impure-cmds = pkgs.callPackage ../os-specific/darwin/impure-cmds { };
# macOS 10.12 SDK
apple_sdk_10_12 = pkgs.callPackage ../os-specific/darwin/apple-sdk {
inherit (buildPackages.darwin) print-reexports;
inherit (self) darwin-stubs;
};
# macOS 11.0 SDK
apple_sdk_11_0 = pkgs.callPackage ../os-specific/darwin/apple-sdk-11.0 { };
# Pick an SDK
apple_sdk = if stdenv.hostPlatform.isAarch64 then apple_sdk_11_0 else apple_sdk_10_12;
# Pick the source of libraries: either Apple's open source releases, or the
# SDK.
useAppleSDKLibs = stdenv.hostPlatform.isAarch64;
selectAttrs = attrs: names:
lib.listToAttrs (lib.concatMap (n: if attrs ? "${n}" then [(lib.nameValuePair n attrs."${n}")] else []) names);
chooseLibs = (
# There are differences in which libraries are exported. Avoid evaluation
# errors when a package is not provided.
selectAttrs (
if useAppleSDKLibs
then apple_sdk
else appleSourcePackages
) ["Libsystem" "LibsystemCross" "libcharset" "libunwind" "objc4" "configd" "IOKit"]
) // {
inherit (
if useAppleSDKLibs
then apple_sdk.frameworks
else appleSourcePackages
) Security;
};
in
impure-cmds // appleSourcePackages // chooseLibs // {
inherit apple_sdk;
stdenvNoCF = stdenv.override {
extraBuildInputs = [];
};
binutils-unwrapped = callPackage ../os-specific/darwin/binutils {
inherit (pkgs) binutils-unwrapped;
inherit (pkgs.llvmPackages) llvm clang-unwrapped;
};
binutils = pkgs.wrapBintoolsWith {
libc =
if stdenv.targetPlatform != stdenv.hostPlatform
then pkgs.libcCross
else pkgs.stdenv.cc.libc;
bintools = self.binutils-unwrapped;
};
binutilsNoLibc = pkgs.wrapBintoolsWith {
libc = preLibcCrossHeaders;
bintools = self.binutils-unwrapped;
};
cctools = callPackage ../os-specific/darwin/cctools/port.nix {
stdenv = if stdenv.isDarwin then stdenv else pkgs.libcxxStdenv;
};
# TODO: remove alias.
cf-private = self.apple_sdk.frameworks.CoreFoundation;
DarwinTools = callPackage ../os-specific/darwin/DarwinTools { };
darwin-stubs = callPackage ../os-specific/darwin/darwin-stubs { };
print-reexports = callPackage ../os-specific/darwin/print-reexports { };
rewrite-tbd = callPackage ../os-specific/darwin/rewrite-tbd { };
checkReexportsHook = pkgs.makeSetupHook {
deps = [ pkgs.darwin.print-reexports ];
} ../os-specific/darwin/print-reexports/setup-hook.sh;
sigtool = callPackage ../os-specific/darwin/sigtool { };
postLinkSignHook = pkgs.writeTextFile {
name = "post-link-sign-hook";
executable = true;
text = ''
CODESIGN_ALLOCATE=${targetPrefix}codesign_allocate \
${self.sigtool}/bin/codesign -f -s - "$linkerOutput"
'';
};
signingUtils = callPackage ../os-specific/darwin/signing-utils { };
autoSignDarwinBinariesHook = pkgs.makeSetupHook {
deps = [ self.signingUtils ];
} ../os-specific/darwin/signing-utils/auto-sign-hook.sh;
maloader = callPackage ../os-specific/darwin/maloader {
};
insert_dylib = callPackage ../os-specific/darwin/insert_dylib { };
iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix {
buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk;
targetIosSdkPkgs = targetPackages.darwin.iosSdkPkgs;
inherit (pkgs.llvmPackages) clang-unwrapped;
};
iproute2mac = callPackage ../os-specific/darwin/iproute2mac { };
libobjc = self.objc4;
lsusb = callPackage ../os-specific/darwin/lsusb { };
moltenvk = callPackage ../os-specific/darwin/moltenvk { };
opencflite = callPackage ../os-specific/darwin/opencflite { };
stubs = pkgs.callPackages ../os-specific/darwin/stubs { };
trash = callPackage ../os-specific/darwin/trash { };
xattr = pkgs.python3Packages.callPackage ../os-specific/darwin/xattr { };
inherit (pkgs.callPackages ../os-specific/darwin/xcode { })
xcode_8_1 xcode_8_2
xcode_9_1 xcode_9_2 xcode_9_4 xcode_9_4_1
xcode_10_2 xcode_10_2_1 xcode_10_3
xcode_11
xcode;
CoreSymbolication = callPackage ../os-specific/darwin/CoreSymbolication { };
# TODO: make swift-corefoundation build with apple_sdk_11_0.Libsystem
CF = if useAppleSDKLibs
then
# This attribute (CF) is included in extraBuildInputs in the stdenv. This
# is typically the open source project. When a project refers to
# "CoreFoundation" it has an extra setup hook to force impure system
# CoreFoundation into the link step.
#
# In this branch, we only have a single "CoreFoundation" to choose from.
# To be compatible with the existing convention, we define
# CoreFoundation with the setup hook, and CF as the same package but
# with the setup hook removed.
#
# This may seem unimportant, but without it packages (e.g., bacula) will
# fail with linker errors referring ___CFConstantStringClassReference.
# It's not clear to me why some packages need this extra setup.
lib.overrideDerivation apple_sdk.frameworks.CoreFoundation (drv: {
setupHook = null;
})
else callPackage ../os-specific/darwin/swift-corelibs/corefoundation.nix { };
# As the name says, this is broken, but I don't want to lose it since it's a direction we want to go in
# libdispatch-broken = callPackage ../os-specific/darwin/swift-corelibs/libdispatch.nix { };
darling = callPackage ../os-specific/darwin/darling/default.nix { };
libtapi = callPackage ../os-specific/darwin/libtapi {};
ios-deploy = callPackage ../os-specific/darwin/ios-deploy {};
discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
})

131
pkgs/top-level/default.nix Normal file
View file

@ -0,0 +1,131 @@
/* This function composes the Nix Packages collection. It:
1. Elaborates `localSystem` and `crossSystem` with defaults as needed.
2. Applies the final stage to the given `config` if it is a function
3. Defaults to no non-standard config and no cross-compilation target
4. Uses the above to infer the default standard environment's (stdenv's)
stages if no stdenv's are provided
5. Folds the stages to yield the final fully booted package set for the
chosen stdenv
Use `impure.nix` to also infer the `system` based on the one on which
evaluation is taking place, and the configuration from environment variables
or dot-files. */
{ # The system packages will be built on. See the manual for the
# subtle division of labor between these two `*System`s and the three
# `*Platform`s.
localSystem
, # The system packages will ultimately be run on.
crossSystem ? localSystem
, # Allow a configuration attribute set to be passed in as an argument.
config ? {}
, # List of overlays layers used to extend Nixpkgs.
overlays ? []
, # List of overlays to apply to target packages only.
crossOverlays ? []
, # A function booting the final package set for a specific standard
# environment. See below for the arguments given to that function, the type of
# list it returns.
stdenvStages ? import ../stdenv
, # Ignore unexpected args.
...
} @ args:
let # Rename the function arguments
config0 = config;
crossSystem0 = crossSystem;
in let
lib = import ../../lib;
inherit (lib) throwIfNot;
checked =
throwIfNot (lib.isList overlays) "The overlays argument to nixpkgs must be a list."
lib.foldr (x: throwIfNot (lib.isFunction x) "All overlays passed to nixpkgs must be functions.") (r: r) overlays
throwIfNot (lib.isList crossOverlays) "The crossOverlays argument to nixpkgs must be a list."
lib.foldr (x: throwIfNot (lib.isFunction x) "All crossOverlays passed to nixpkgs must be functions.") (r: r) crossOverlays
;
localSystem = lib.systems.elaborate args.localSystem;
# Condition preserves sharing which in turn affects equality.
crossSystem =
if crossSystem0 == null || crossSystem0 == args.localSystem
then localSystem
else lib.systems.elaborate crossSystem0;
# Allow both:
# { /* the config */ } and
# { pkgs, ... } : { /* the config */ }
config1 =
if lib.isFunction config0
then config0 { inherit pkgs; }
else config0;
configEval = lib.evalModules {
modules = [
./config.nix
({ options, ... }: {
_file = "nixpkgs.config";
config = config1;
})
];
};
# take all the rest as-is
config = lib.showWarnings configEval.config.warnings configEval.config;
# A few packages make a new package set to draw their dependencies from.
# (Currently to get a cross tool chain, or forced-i686 package.) Rather than
# give `all-packages.nix` all the arguments to this function, even ones that
# don't concern it, we give it this function to "re-call" nixpkgs, inheriting
# whatever arguments it doesn't explicitly provide. This way,
# `all-packages.nix` doesn't know more than it needs too.
#
# It's OK that `args` doesn't include default arguments from this file:
# they'll be deterministically inferred. In fact we must *not* include them,
# because it's important that if some parameter which affects the default is
# substituted with a different argument, the default is re-inferred.
#
# To put this in concrete terms, this function is basically just used today to
# use package for a different platform for the current platform (namely cross
# compiling toolchains and 32-bit packages on x86_64). In both those cases we
# want the provided non-native `localSystem` argument to affect the stdenv
# chosen.
#
# NB!!! This thing gets its `config` argument from `args`, i.e. it's actually
# `config0`. It is important to keep it to `config0` format (as opposed to the
# result of `evalModules`, i.e. the `config` variable above) throughout all
# nixpkgs evaluations since the above function `config0 -> config` implemented
# via `evalModules` is not idempotent. In other words, if you add `config` to
# `newArgs`, expect strange very hard to debug errors! (Yes, I'm speaking from
# experience here.)
nixpkgsFun = newArgs: import ./. (args // newArgs);
# Partially apply some arguments for building bootstraping stage pkgs
# sets. Only apply arguments which no stdenv would want to override.
allPackages = newArgs: import ./stage.nix ({
inherit lib nixpkgsFun;
} // newArgs);
boot = import ../stdenv/booter.nix { inherit lib allPackages; };
stages = stdenvStages {
inherit lib localSystem crossSystem config overlays crossOverlays;
};
pkgs = boot stages;
in checked pkgs

View file

@ -0,0 +1,49 @@
{ lib
, newScope
, overrides ? (self: super: {})
}:
let
packages = self:
let
callPackage = newScope self;
buildDhallPackage =
callPackage ../development/interpreters/dhall/build-dhall-package.nix { };
buildDhallGitHubPackage =
callPackage ../development/interpreters/dhall/build-dhall-github-package.nix { };
buildDhallDirectoryPackage =
callPackage ../development/interpreters/dhall/build-dhall-directory-package.nix { };
buildDhallUrl =
callPackage ../development/interpreters/dhall/build-dhall-url.nix { };
generateDhallDirectoryPackage =
callPackage ../development/interpreters/dhall/generate-dhall-directory-package.nix { };
in
{ inherit
callPackage
buildDhallPackage
buildDhallGitHubPackage
buildDhallDirectoryPackage
buildDhallUrl
generateDhallDirectoryPackage
;
lib = import ../development/dhall-modules/lib.nix { inherit lib; };
dhall-grafana =
callPackage ../development/dhall-modules/dhall-grafana.nix { };
dhall-kubernetes =
callPackage ../development/dhall-modules/dhall-kubernetes.nix { };
Prelude =
callPackage ../development/dhall-modules/Prelude.nix { };
};
in
lib.fix' (lib.extends overrides packages)

View file

@ -0,0 +1,315 @@
{ stdenv
, lib
, pkgs
, buildDotnetPackage
, fetchurl
, fetchFromGitHub
, fetchNuGet
, glib
, mono
, overrides ? {}
}:
let self = dotnetPackages // overrides; dotnetPackages = with self; {
# BINARY PACKAGES
NUnit3 = fetchNuGet {
pname = "NUnit";
version = "3.0.1";
sha256 = "1g3j3kvg9vrapb1vjgq65nvn1vg7bzm66w7yjnaip1iww1yn1b0p";
outputFiles = [ "lib/*" ];
};
NUnit2 = fetchNuGet {
pname = "NUnit";
version = "2.6.4";
sha256 = "1acwsm7p93b1hzfb83ia33145x0w6fvdsfjm9xflsisljxpdx35y";
outputFiles = [ "lib/*" ];
};
NUnit = NUnit2;
NUnitConsole = fetchNuGet {
pname = "NUnit.Console";
version = "3.0.1";
sha256 = "154bqwm2n95syv8nwd67qh8qsv0b0h5zap60sk64z3kd3a9ffi5p";
outputFiles = [ "tools/*" ];
};
MaxMindDb = fetchNuGet {
pname = "MaxMind.Db";
version = "1.1.0.0";
sha256 = "0lixl76f7k3ldiqzg94zh13gn82w5mm5dx72y97fcqvp8g6nj3ds";
outputFiles = [ "lib/*" ];
};
MaxMindGeoIP2 = fetchNuGet {
pname = "MaxMind.GeoIP2";
version = "2.3.1";
sha256 = "1s44dvjnmj1aimbrgkmpj6h5dn1w6acgqjch1axc76yz6hwknqgf";
outputFiles = [ "lib/*" ];
};
SharpZipLib = fetchNuGet {
pname = "SharpZipLib";
version = "0.86.0";
sha256 = "01w2038gckfnq31pncrlgm7d0c939pwr1x4jj5450vcqpd4c41jr";
outputFiles = [ "lib/*" ];
};
StyleCopMSBuild = fetchNuGet {
pname = "StyleCop.MSBuild";
version = "4.7.49.0";
sha256 = "0rpfyvcggm881ynvgr17kbx5hvj7ivlms0bmskmb2zyjlpddx036";
outputFiles = [ "tools/*" ];
};
StyleCopPlusMSBuild = fetchNuGet {
pname = "StyleCopPlus.MSBuild";
version = "4.7.49.5";
sha256 = "1hv4lfxw72aql8siyqc4n954vzdz8p6jx9f2wrgzz0jy1k98x2mr";
outputFiles = [ "tools/*" ];
};
RestSharp = fetchNuGet {
pname = "RestSharp";
version = "105.2.3";
sha256 = "1br48124ppz80x92m84sfyil1gn23hxg2ml9i9hsd0lp86vlaa1m";
outputFiles = [ "lib/*" ];
};
SharpFont = fetchNuGet {
pname = "SharpFont";
version = "4.0.1";
sha256 = "1yd3cm4ww0hw2k3aymf792hp6skyg8qn491m2a3fhkzvsl8z7vs8";
outputFiles = [ "lib/*" "config/*" ];
};
SmartIrc4net = fetchNuGet {
pname = "SmartIrc4net";
version = "0.4.5.1";
sha256 = "1d531sj39fvwmj2wgplqfify301y3cwp7kwr9ai5hgrq81jmjn2b";
outputFiles = [ "lib/*" ];
};
FuzzyLogicLibrary = fetchNuGet {
pname = "FuzzyLogicLibrary";
version = "1.2.0";
sha256 = "0x518i8d3rw9n51xwawa4sywvqd722adj7kpcgcm63r66s950r5l";
outputFiles = [ "bin/*" ];
};
OpenNAT = fetchNuGet {
pname = "Open.NAT";
version = "2.1.0";
sha256 = "1jyd30fwycdwx5ck96zhp2xf20yz0sp7g3pjbqhmay4kd322mfwk";
outputFiles = [ "lib/*" ];
};
MonoNat = fetchNuGet {
pname = "Mono.Nat";
version = "1.2.24";
sha256 = "0vfkach11kkcd9rcqz3s38m70d5spyb21gl99iqnkljxj5555wjs";
outputFiles = [ "lib/*" ];
};
NUnitRunners = fetchNuGet {
pname = "NUnit.Runners";
version = "2.6.4";
sha256 = "11nmi7vikn9idz8qcad9z7f73arsh5rw18fc1sri9ywz77mpm1s4";
outputFiles = [ "tools/*" ];
preInstall = "mv -v tools/lib/* tools && rmdir -v tools/lib";
};
# SOURCE PACKAGES
Boogie = buildDotnetPackage rec {
pname = "Boogie";
version = "2.4.1";
src = fetchFromGitHub {
owner = "boogie-org";
repo = "boogie";
rev = "v${version}";
sha256 = "13f6ifkh6gpy4bvx5zhgwmk3wd5rfxzl9wxwfhcj1c90fdrhwh1b";
};
# emulate `nuget restore Source/Boogie.sln`
# which installs in $srcdir/Source/packages
preBuild = ''
mkdir -p Source/packages/NUnit.2.6.3
ln -sn ${dotnetPackages.NUnit}/lib/dotnet/NUnit Source/packages/NUnit.2.6.3/lib
'';
buildInputs = [
dotnetPackages.NUnit
dotnetPackages.NUnitRunners
];
xBuildFiles = [ "Source/Boogie.sln" ];
outputFiles = [ "Binaries/*" ];
postInstall = ''
mkdir -pv "$out/lib/dotnet/${pname}"
ln -sv "${pkgs.z3}/bin/z3" "$out/lib/dotnet/${pname}/z3.exe"
# so that this derivation can be used as a vim plugin to install syntax highlighting
vimdir=$out/share/vim-plugins/boogie
install -Dt $vimdir/syntax/ Util/vim/syntax/boogie.vim
mkdir $vimdir/ftdetect
echo 'au BufRead,BufNewFile *.bpl set filetype=boogie' > $vimdir/ftdetect/bpl.vim
'';
meta = with lib; {
description = "An intermediate verification language";
homepage = "https://github.com/boogie-org/boogie";
longDescription = ''
Boogie is an intermediate verification language (IVL), intended as a
layer on which to build program verifiers for other languages.
This derivation may be used as a vim plugin to provide syntax highlighting.
'';
license = licenses.mspl;
maintainers = [ maintainers.taktoa ];
platforms = with platforms; (linux ++ darwin);
};
};
Dafny = let
z3 = pkgs.z3.overrideAttrs (oldAttrs: rec {
version = "4.8.4";
name = "z3-${version}";
src = fetchFromGitHub {
owner = "Z3Prover";
repo = "z3";
rev = "z3-${version}";
sha256 = "014igqm5vwswz0yhz0cdxsj3a6dh7i79hvhgc3jmmmz3z0xm1gyn";
};
});
self' = pkgs.dotnetPackages.override ({
pkgs = pkgs // { inherit z3; };
});
Boogie = assert self'.Boogie.version == "2.4.1"; self'.Boogie;
in buildDotnetPackage rec {
pname = "Dafny";
version = "2.3.0";
src = fetchurl {
url = "https://github.com/Microsoft/dafny/archive/v${version}.tar.gz";
sha256 = "0s6ihx32kda7400lvdrq60l46c11nki8b6kalir2g4ic508f6ypa";
};
postPatch = ''
sed -i \
-e 's/ Visible="False"//' \
-e "s/Exists(\$(CodeContractsInstallDir))/Exists('\$(CodeContractsInstallDir)')/" \
Source/*/*.csproj
'';
preBuild = ''
ln -s ${z3} Binaries/z3
'';
buildInputs = [ Boogie ];
xBuildFiles = [ "Source/Dafny.sln" ];
xBuildFlags = [ "/p:Configuration=Checked" "/p:Platform=Any CPU" "/t:Rebuild" ];
outputFiles = [ "Binaries/*" ];
# Do not wrap the z3 executable, only dafny-related ones.
exeFiles = [ "Dafny*.exe" ];
# Dafny needs mono in its path.
makeWrapperArgs = "--set PATH ${mono}/bin";
# Boogie as an input is not enough. Boogie libraries need to be at the same
# place as Dafny ones. Same for "*.dll.mdb". No idea why or how to fix.
postFixup = ''
for lib in ${Boogie}/lib/dotnet/${Boogie.pname}/*.dll{,.mdb}; do
ln -s $lib $out/lib/dotnet/${pname}/
done
# We generate our own executable scripts
rm -f $out/lib/dotnet/${pname}/dafny{,-server}
'';
meta = with lib; {
description = "A programming language with built-in specification constructs";
homepage = "https://research.microsoft.com/dafny";
maintainers = with maintainers; [ layus ];
license = licenses.mit;
platforms = with platforms; (linux ++ darwin);
};
};
MonoAddins = buildDotnetPackage rec {
pname = "Mono.Addins";
version = "1.2";
xBuildFiles = [
"Mono.Addins/Mono.Addins.csproj"
"Mono.Addins.Setup/Mono.Addins.Setup.csproj"
"Mono.Addins.Gui/Mono.Addins.Gui.csproj"
"Mono.Addins.CecilReflector/Mono.Addins.CecilReflector.csproj"
];
outputFiles = [ "bin/*" ];
src = fetchFromGitHub {
owner = "mono";
repo = "mono-addins";
rev = "mono-addins-${version}";
sha256 = "1hnn0a2qsjcjprsxas424bzvhsdwy0yc2jj5xbp698c0m9kfk24y";
};
buildInputs = [ pkgs.gtk-sharp-2_0 ];
meta = {
description = "A generic framework for creating extensible applications";
homepage = "https://www.mono-project.com/Mono.Addins";
longDescription = ''
A generic framework for creating extensible applications,
and for creating libraries which extend those applications.
'';
license = lib.licenses.mit;
};
};
NewtonsoftJson = fetchNuGet {
pname = "Newtonsoft.Json";
version = "11.0.2";
sha256 = "07na27n4mlw77f3hg5jpayzxll7f4gyna6x7k9cybmxpbs6l77k7";
outputFiles = [ "*" ];
};
Nuget = buildDotnetPackage rec {
pname = "Nuget";
version = "5.6.0.6489";
src = fetchFromGitHub {
owner = "mono";
repo = "linux-packaging-nuget";
rev = "upstream/${version}.bin";
sha256 = "sha256-71vjM7a+F0DNTY+dML3UBSkrVyXv/k5rdl7iXBKSpNM=";
};
# configurePhase breaks the binary and results in
# `File does not contain a valid CIL image.`
dontConfigure = true;
dontBuild = true;
dontPlacateNuget = true;
outputFiles = [ "*" ];
exeFiles = [ "nuget.exe" ];
};
Paket = fetchNuGet {
pname = "Paket";
version = "5.179.1";
sha256 = "11rzna03i145qj08hwrynya548fwk8xzxmg65swyaf19jd7gzg82";
outputFiles = [ "*" ];
};
}; in self

View file

@ -0,0 +1,101 @@
# package.el-based emacs packages
## FOR USERS
#
# Recommended: simply use `emacsWithPackages` with the packages you want.
#
# Alternative: use `emacs`, install everything to a system or user profile
# and then add this at the start your `init.el`:
/*
(require 'package)
;; optional. makes unpure packages archives unavailable
(setq package-archives nil)
;; optional. use this if you install emacs packages to the system profile
(add-to-list 'package-directory-list "/run/current-system/sw/share/emacs/site-lisp/elpa")
;; optional. use this if you install emacs packages to user profiles (with nix-env)
(add-to-list 'package-directory-list "~/.nix-profile/share/emacs/site-lisp/elpa")
(package-initialize)
*/
{ pkgs'
, emacs'
, makeScope
, makeOverridable
, dontRecurseIntoAttrs
}:
let
mkElpaPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/elpa-packages.nix {
inherit (pkgs) stdenv texinfo writeText gcc pkgs buildPackages;
inherit lib;
};
mkNongnuPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/nongnu-packages.nix {
inherit (pkgs) buildPackages;
inherit lib;
};
# Contains both melpa stable & unstable
melpaGeneric = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/melpa-packages.nix {
inherit lib pkgs;
};
mkManualPackages = { pkgs, lib }: import ../applications/editors/emacs/elisp-packages/manual-packages.nix {
inherit lib pkgs;
};
emacsWithPackages = { pkgs, lib }: import ../build-support/emacs/wrapper.nix {
inherit (pkgs) makeWrapper runCommand gcc;
inherit (pkgs.xorg) lndir;
inherit lib;
};
in makeScope pkgs'.newScope (self: makeOverridable ({
pkgs ? pkgs'
, lib ? pkgs.lib
, elpaPackages ? mkElpaPackages { inherit pkgs lib; } self
, nongnuPackages ? mkNongnuPackages { inherit pkgs lib; } self
, melpaStablePackages ? melpaGeneric { inherit pkgs lib; } "stable" self
, melpaPackages ? melpaGeneric { inherit pkgs lib; } "unstable" self
, manualPackages ? mkManualPackages { inherit pkgs lib; } self
}: ({}
// elpaPackages // { inherit elpaPackages; }
// nongnuPackages // { inherit nongnuPackages; }
// melpaStablePackages // { inherit melpaStablePackages; }
// melpaPackages // { inherit melpaPackages; }
// manualPackages // { inherit manualPackages; }
// {
# Propagate overriden scope
emacs = emacs'.overrideAttrs(old: {
passthru = (old.passthru or {}) // {
pkgs = dontRecurseIntoAttrs self;
};
});
trivialBuild = pkgs.callPackage ../build-support/emacs/trivial.nix {
inherit (self) emacs;
};
melpaBuild = pkgs.callPackage ../build-support/emacs/melpa.nix {
inherit (self) emacs;
};
emacsWithPackages = emacsWithPackages { inherit pkgs lib; } self;
withPackages = emacsWithPackages { inherit pkgs lib; } self;
} // {
# Package specific priority overrides goes here
# Telega uploads packages incompatible with stable tdlib to melpa
# Prefer the one from melpa stable
inherit (melpaStablePackages) telega;
})
) {})

View file

@ -0,0 +1,183 @@
{ pkgs }:
with pkgs;
# emscripten toolchain abstraction for nix
# https://github.com/NixOS/nixpkgs/pull/16208
rec {
json_c = (pkgs.json_c.override {
stdenv = pkgs.emscriptenStdenv;
}).overrideDerivation
(old: {
nativeBuildInputs = [ pkg-config cmake ];
propagatedBuildInputs = [ zlib ];
configurePhase = ''
HOME=$TMPDIR
mkdir -p .emscriptencache
export EM_CACHE=$(pwd)/.emscriptencache
emcmake cmake . $cmakeFlags -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_INSTALL_INCLUDEDIR=$dev/include
'';
checkPhase = ''
echo "================= testing json_c using node ================="
echo "Compiling a custom test"
set -x
emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 tests/test1.c \
`pkg-config zlib --cflags` \
`pkg-config zlib --libs` \
-I . \
libjson-c.a \
-o ./test1.js
echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
${pkgs.nodejs}/bin/node ./test1.js
set +x
if [ $? -ne 0 ]; then
echo "test1.js execution failed -> unit test failed, please fix"
exit 1;
else
echo "test1.js execution seems to work! very good."
fi
echo "================= /testing json_c using node ================="
'';
});
libxml2 = (pkgs.libxml2.override {
stdenv = emscriptenStdenv;
pythonSupport = false;
}).overrideDerivation
(old: {
propagatedBuildInputs = [ zlib ];
buildInputs = old.buildInputs ++ [ pkg-config ];
# just override it with nothing so it does not fail
autoreconfPhase = "echo autoreconfPhase not used...";
configurePhase = ''
HOME=$TMPDIR
mkdir -p .emscriptencache
export EM_CACHE=$(pwd)/.emscriptencache
emconfigure ./configure --prefix=$out --without-python
'';
checkPhase = ''
echo "================= testing libxml2 using node ================="
echo "Compiling a custom test"
set -x
emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 xmllint.o \
./.libs/libxml2.a `pkg-config zlib --cflags` `pkg-config zlib --libs` -o ./xmllint.test.js \
--embed-file ./test/xmlid/id_err1.xml
echo "Using node to execute the test which basically outputs an error on stderr which we grep for"
${pkgs.nodejs}/bin/node ./xmllint.test.js --noout test/xmlid/id_err1.xml 2>&1 | grep 0bar
set +x
if [ $? -ne 0 ]; then
echo "xmllint unit test failed, please fix this package"
exit 1;
else
echo "since there is no stupid text containing 'foo xml:id' it seems to work! very good."
fi
echo "================= /testing libxml2 using node ================="
'';
});
xmlmirror = pkgs.buildEmscriptenPackage rec {
pname = "xmlmirror";
version = "unstable-2016-06-05";
buildInputs = [ pkg-config libtool gnumake libxml2 nodejs openjdk json_c ];
nativeBuildInputs = [ pkg-config zlib autoconf automake ];
src = pkgs.fetchgit {
url = "https://gitlab.com/odfplugfest/xmlmirror.git";
rev = "4fd7e86f7c9526b8f4c1733e5c8b45175860a8fd";
sha256 = "1jasdqnbdnb83wbcnyrp32f36w3xwhwp0wq8lwwmhqagxrij1r4b";
};
configurePhase = ''
rm -f fastXmlLint.js*
# a fix for ERROR:root:For asm.js, TOTAL_MEMORY must be a multiple of 16MB, was 234217728
# https://gitlab.com/odfplugfest/xmlmirror/issues/8
sed -e "s/TOTAL_MEMORY=234217728/TOTAL_MEMORY=268435456/g" -i Makefile.emEnv
# https://github.com/kripken/emscripten/issues/6344
# https://gitlab.com/odfplugfest/xmlmirror/issues/9
sed -e "s/\$(JSONC_LDFLAGS) \$(ZLIB_LDFLAGS) \$(LIBXML20_LDFLAGS)/\$(JSONC_LDFLAGS) \$(LIBXML20_LDFLAGS) \$(ZLIB_LDFLAGS) /g" -i Makefile.emEnv
# https://gitlab.com/odfplugfest/xmlmirror/issues/11
sed -e "s/-o fastXmlLint.js/-s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]' -o fastXmlLint.js/g" -i Makefile.emEnv
mkdir -p .emscriptencache
export EM_CACHE=$(pwd)/.emscriptencache
'';
buildPhase = ''
HOME=$TMPDIR
make -f Makefile.emEnv
'';
outputs = [ "out" "doc" ];
installPhase = ''
mkdir -p $out/share
mkdir -p $doc/share/${pname}
cp Demo* $out/share
cp -R codemirror-5.12 $out/share
cp fastXmlLint.js* $out/share
cp *.xsd $out/share
cp *.js $out/share
cp *.xhtml $out/share
cp *.html $out/share
cp *.json $out/share
cp *.rng $out/share
cp README.md $doc/share/${pname}
'';
checkPhase = ''
'';
};
zlib = (pkgs.zlib.override {
stdenv = pkgs.emscriptenStdenv;
}).overrideDerivation
(old: {
buildInputs = old.buildInputs ++ [ pkg-config ];
# we need to reset this setting!
NIX_CFLAGS_COMPILE="";
dontStrip = true;
outputs = [ "out" ];
buildPhase = ''
emmake make
'';
installPhase = ''
emmake make install
'';
checkPhase = ''
echo "================= testing zlib using node ================="
echo "Compiling a custom test"
set -x
emcc -O2 -s EMULATE_FUNCTION_POINTER_CASTS=1 test/example.c -DZ_SOLO \
-L. libz.a -I . -o example.js
echo "Using node to execute the test"
${pkgs.nodejs}/bin/node ./example.js
set +x
if [ $? -ne 0 ]; then
echo "test failed for some reason"
exit 1;
else
echo "it seems to work! very good."
fi
echo "================= /testing zlib using node ================="
'';
postPatch = pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
substituteInPlace configure \
--replace '/usr/bin/libtool' 'ar' \
--replace 'AR="libtool"' 'AR="ar"' \
--replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
'';
});
}

View file

@ -0,0 +1,54 @@
{ lib
, stdenv
, newScope
, gnuradio # unwrapped gnuradio
}:
lib.makeScope newScope ( self:
let
# Modeled after qt's
mkDerivationWith = import ../development/gnuradio-modules/mkDerivation.nix {
inherit lib;
unwrapped = gnuradio;
};
mkDerivation = mkDerivationWith stdenv.mkDerivation;
callPackage = self.newScope ({
inherit (gnuradio)
# Packages that are potentially overriden and used as deps here.
boost
volk
;
inherit mkDerivationWith mkDerivation;
} // lib.optionalAttrs (gnuradio.hasFeature "gr-uhd") {
inherit (gnuradio) uhd;
} // (if (lib.versionAtLeast gnuradio.versionAttr.major "3.10") then {
inherit (gnuradio) spdlog;
} else {
inherit (gnuradio) log4cpp;
}));
in {
inherit callPackage mkDerivation mkDerivationWith;
### Packages
inherit gnuradio;
inherit (gnuradio) python;
osmosdr = callPackage ../development/gnuradio-modules/osmosdr/default.nix { };
ais = callPackage ../development/gnuradio-modules/ais/default.nix { };
grnet = callPackage ../development/gnuradio-modules/grnet/default.nix { };
gsm = callPackage ../development/gnuradio-modules/gsm/default.nix { };
nacl = callPackage ../development/gnuradio-modules/nacl/default.nix { };
rds = callPackage ../development/gnuradio-modules/rds/default.nix { };
limesdr = callPackage ../development/gnuradio-modules/limesdr/default.nix { };
})

View file

@ -0,0 +1,283 @@
{ buildPackages, pkgsBuildTarget, pkgs, newScope, stdenv }:
let
# These are attributes in compiler and packages that don't support integer-simple.
integerSimpleExcludes = [
"ghc865Binary"
"ghc8102Binary"
"ghc8102BinaryMinimal"
"ghc8107Binary"
"ghc8107BinaryMinimal"
"ghcjs"
"ghcjs810"
"integer-simple"
"native-bignum"
"ghc902"
"ghc923"
"ghcHEAD"
];
nativeBignumIncludes = [
"ghc902"
"ghc923"
"ghcHEAD"
];
haskellLibUncomposable = import ../development/haskell-modules/lib {
inherit (pkgs) lib;
inherit pkgs;
};
callPackage = newScope {
haskellLib = haskellLibUncomposable.compose;
overrides = pkgs.haskell.packageOverrides;
};
bootstrapPackageSet = self: super: {
mkDerivation = drv: super.mkDerivation (drv // {
doCheck = false;
doHaddock = false;
enableExecutableProfiling = false;
enableLibraryProfiling = false;
enableSharedExecutables = false;
enableSharedLibraries = false;
});
};
# Use this rather than `rec { ... }` below for sake of overlays.
inherit (pkgs.haskell) compiler packages;
in {
lib = haskellLibUncomposable;
package-list = callPackage ../development/haskell-modules/package-list.nix {};
compiler = {
ghc865Binary = callPackage ../development/compilers/ghc/8.6.5-binary.nix {
llvmPackages = pkgs.llvmPackages_6;
};
ghc8102Binary = callPackage ../development/compilers/ghc/8.10.2-binary.nix {
llvmPackages = pkgs.llvmPackages_9;
};
ghc8102BinaryMinimal = callPackage ../development/compilers/ghc/8.10.2-binary.nix {
llvmPackages = pkgs.llvmPackages_9;
minimal = true;
};
ghc8107Binary = callPackage ../development/compilers/ghc/8.10.7-binary.nix {
llvmPackages = pkgs.llvmPackages_12;
};
ghc8107BinaryMinimal = callPackage ../development/compilers/ghc/8.10.7-binary.nix {
llvmPackages = pkgs.llvmPackages_12;
minimal = true;
};
ghc884 = callPackage ../development/compilers/ghc/8.8.4.nix {
bootPkgs =
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
# 8.10.2 is needed as using 8.10.7 is broken due to RTS-incompatibilities
if stdenv.isAarch64 then
packages.ghc8102BinaryMinimal
# Musl bindists do not exist for ghc 8.6.5, so we use 8.10.* for them
else if stdenv.hostPlatform.isMusl then
packages.ghc8102Binary
else
packages.ghc865Binary;
inherit (buildPackages.python3Packages) sphinx;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_7;
llvmPackages = pkgs.llvmPackages_7;
};
ghc8107 = callPackage ../development/compilers/ghc/8.10.7.nix {
bootPkgs =
# aarch64 ghc865Binary gets SEGVs due to haskell#15449 or similar
# the oldest ghc with aarch64-darwin support is 8.10.5
# Musl bindists do not exist for ghc 8.6.5, so we use 8.10.* for them
if stdenv.isAarch64 || stdenv.isAarch32 then
packages.ghc8107BinaryMinimal
else
packages.ghc8107Binary;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghc902 = callPackage ../development/compilers/ghc/9.0.2.nix {
bootPkgs =
# aarch64 ghc8107Binary exceeds max output size on hydra
# the oldest ghc with aarch64-darwin support is 8.10.5
if stdenv.isAarch64 || stdenv.isAarch32 then
packages.ghc8107BinaryMinimal
else
packages.ghc8107Binary;
inherit (buildPackages.python3Packages) sphinx;
inherit (buildPackages.darwin) autoSignDarwinBinariesHook xattr;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghc923 = callPackage ../development/compilers/ghc/9.2.3.nix {
bootPkgs =
# aarch64 ghc8107Binary exceeds max output size on hydra
if stdenv.isAarch64 || stdenv.isAarch32 then
packages.ghc8107BinaryMinimal
else
packages.ghc8107Binary;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
};
ghcHEAD = callPackage ../development/compilers/ghc/head.nix {
bootPkgs = packages.ghc8107Binary;
inherit (buildPackages.python3Packages) sphinx;
# Need to use apple's patched xattr until
# https://github.com/xattr/xattr/issues/44 and
# https://github.com/xattr/xattr/issues/55 are solved.
inherit (buildPackages.darwin) xattr autoSignDarwinBinariesHook;
buildTargetLlvmPackages = pkgsBuildTarget.llvmPackages_12;
llvmPackages = pkgs.llvmPackages_12;
libffi = pkgs.libffi;
};
ghcjs = compiler.ghcjs810;
ghcjs810 = callPackage ../development/compilers/ghcjs/8.10 {
bootPkgs = packages.ghc8107;
ghcjsSrcJson = ../development/compilers/ghcjs/8.10/git.json;
stage0 = ../development/compilers/ghcjs/8.10/stage0.nix;
};
# The integer-simple attribute set contains all the GHC compilers
# build with integer-simple instead of integer-gmp.
integer-simple = let
integerSimpleGhcNames = pkgs.lib.filter
(name: ! builtins.elem name integerSimpleExcludes)
(pkgs.lib.attrNames compiler);
in pkgs.recurseIntoAttrs (pkgs.lib.genAttrs
integerSimpleGhcNames
(name: compiler.${name}.override { enableIntegerSimple = true; }));
# Starting from GHC 9, integer-{simple,gmp} is replaced by ghc-bignum
# with "native" and "gmp" backends.
native-bignum = let
nativeBignumGhcNames = pkgs.lib.filter
(name: builtins.elem name nativeBignumIncludes)
(pkgs.lib.attrNames compiler);
in pkgs.recurseIntoAttrs (pkgs.lib.genAttrs
nativeBignumGhcNames
(name: compiler.${name}.override { enableNativeBignum = true; }));
};
# Default overrides that are applied to all package sets.
packageOverrides = self : super : {};
# Always get compilers from `buildPackages`
packages = let bh = buildPackages.haskell; in {
ghc865Binary = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc865Binary;
ghc = bh.compiler.ghc865Binary;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.6.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc8102Binary = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8102Binary;
ghc = bh.compiler.ghc8102Binary;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc8102BinaryMinimal = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8102BinaryMinimal;
ghc = bh.compiler.ghc8102BinaryMinimal;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc8107Binary = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8107Binary;
ghc = bh.compiler.ghc8107Binary;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc8107BinaryMinimal = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8107BinaryMinimal;
ghc = bh.compiler.ghc8107BinaryMinimal;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = bootstrapPackageSet;
};
ghc884 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc884;
ghc = bh.compiler.ghc884;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.8.x.nix { };
};
ghc8107 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc8107;
ghc = bh.compiler.ghc8107;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
};
ghc902 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc902;
ghc = bh.compiler.ghc902;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.0.x.nix { };
};
ghc923 = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghc923;
ghc = bh.compiler.ghc923;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-9.2.x.nix { };
};
ghcHEAD = callPackage ../development/haskell-modules {
buildHaskellPackages = bh.packages.ghcHEAD;
ghc = bh.compiler.ghcHEAD;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-head.nix { };
};
ghcjs = packages.ghcjs810;
ghcjs810 = callPackage ../development/haskell-modules rec {
buildHaskellPackages = ghc.bootPkgs;
ghc = bh.compiler.ghcjs810;
compilerConfig = callPackage ../development/haskell-modules/configuration-ghc-8.10.x.nix { };
packageSetConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
};
# The integer-simple attribute set contains package sets for all the GHC compilers
# using integer-simple instead of integer-gmp.
integer-simple =
let
integerSimpleGhcNames = pkgs.lib.filter
(name: ! builtins.elem name integerSimpleExcludes)
(pkgs.lib.attrNames packages);
in
pkgs.lib.genAttrs integerSimpleGhcNames
(name:
packages.${name}.override (oldAttrs: {
ghc = bh.compiler.integer-simple.${name};
buildHaskellPackages = bh.packages.integer-simple.${name};
overrides =
pkgs.lib.composeExtensions
(oldAttrs.overrides or (_: _: {}))
(_: _: { integer-simple = null; });
})
);
native-bignum =
let
nativeBignumGhcNames = pkgs.lib.filter
(name: builtins.elem name nativeBignumIncludes)
(pkgs.lib.attrNames compiler);
in
pkgs.lib.genAttrs nativeBignumGhcNames
(name:
packages.${name}.override {
ghc = bh.compiler.native-bignum.${name};
buildHaskellPackages = bh.packages.native-bignum.${name};
}
);
};
}

View file

@ -0,0 +1,119 @@
{ stdenv, lib, fetchzip, fetchFromGitHub, haxe, neko, jdk, mono }:
let
self = haxePackages;
haxePackages = with self; {
withCommas = lib.replaceChars ["."] [","];
# simulate "haxelib dev $libname ."
simulateHaxelibDev = libname: ''
devrepo=$(mktemp -d)
mkdir -p "$devrepo/${withCommas libname}"
echo $(pwd) > "$devrepo/${withCommas libname}/.dev"
export HAXELIB_PATH="$HAXELIB_PATH:$devrepo"
'';
installLibHaxe = { libname, version, files ? "*" }: ''
mkdir -p "$out/lib/haxe/${withCommas libname}/${withCommas version}"
echo -n "${version}" > $out/lib/haxe/${withCommas libname}/.current
cp -dpR ${files} "$out/lib/haxe/${withCommas libname}/${withCommas version}/"
'';
buildHaxeLib = {
libname,
version,
sha256,
meta,
...
} @ attrs:
stdenv.mkDerivation (attrs // {
name = "${libname}-${version}";
buildInputs = (attrs.buildInputs or []) ++ [ haxe neko ]; # for setup-hook.sh to work
src = fetchzip rec {
name = "${libname}-${version}";
url = "http://lib.haxe.org/files/3.0/${withCommas name}.zip";
inherit sha256;
stripRoot = false;
};
installPhase = attrs.installPhase or ''
runHook preInstall
(
if [ $(ls $src | wc -l) == 1 ]; then
cd $src/* || cd $src
else
cd $src
fi
${installLibHaxe { inherit libname version; }}
)
runHook postInstall
'';
meta = {
homepage = "http://lib.haxe.org/p/${libname}";
license = lib.licenses.bsd2;
platforms = lib.platforms.all;
description = throw "please write meta.description";
} // attrs.meta;
});
hxcpp = buildHaxeLib rec {
libname = "hxcpp";
version = "4.1.15";
sha256 = "1ybxcvwi4655563fjjgy6xv5c78grjxzadmi3l1ghds48k1rh50p";
postFixup = ''
for f in $out/lib/haxe/${withCommas libname}/${withCommas version}/{,project/libs/nekoapi/}bin/Linux{,64}/*; do
chmod +w "$f"
patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) "$f" || true
patchelf --set-rpath ${ lib.makeLibraryPath [ stdenv.cc.cc ] } "$f" || true
done
'';
meta.description = "Runtime support library for the Haxe C++ backend";
};
hxjava = buildHaxeLib {
libname = "hxjava";
version = "3.2.0";
sha256 = "1vgd7qvsdxlscl3wmrrfi5ipldmr4xlsiwnj46jz7n6izff5261z";
meta.description = "Support library for the Java backend of the Haxe compiler";
propagatedBuildInputs = [ jdk ];
};
hxcs = buildHaxeLib {
libname = "hxcs";
version = "3.4.0";
sha256 = "0f5vgp2kqnpsbbkn2wdxmjf7xkl0qhk9lgl9kb8d5wdy89nac6q6";
meta.description = "Support library for the C# backend of the Haxe compiler";
propagatedBuildInputs = [ mono ];
};
hxnodejs_4 = buildHaxeLib {
libname = "hxnodejs";
version = "4.0.9";
sha256 = "0b7ck48nsxs88sy4fhhr0x1bc8h2ja732zzgdaqzxnh3nir0bajm";
meta.description = "Extern definitions for node.js 4.x";
};
hxnodejs_6 = let
libname = "hxnodejs";
version = "6.9.0";
in stdenv.mkDerivation {
name = "${libname}-${version}";
src = fetchFromGitHub {
owner = "HaxeFoundation";
repo = "hxnodejs";
rev = "cf80c6a";
sha256 = "0mdiacr5b2m8jrlgyd2d3vp1fha69lcfb67x4ix7l7zfi8g460gs";
};
installPhase = installLibHaxe { inherit libname version; };
meta = {
homepage = "http://lib.haxe.org/p/${libname}";
license = lib.licenses.bsd2;
platforms = lib.platforms.all;
description = "Extern definitions for node.js 6.9";
};
};
};
in self

84
pkgs/top-level/impure.nix Normal file
View file

@ -0,0 +1,84 @@
/* Impure default args for `pkgs/top-level/default.nix`. See that file
for the meaning of each argument. */
let
homeDir = builtins.getEnv "HOME";
# Return x if it evaluates, or def if it throws an exception.
try = x: def: let res = builtins.tryEval x; in if res.success then res.value else def;
in
{ # We put legacy `system` into `localSystem`, if `localSystem` was not passed.
# If neither is passed, assume we are building packages on the current
# (build, in GNU Autotools parlance) platform.
localSystem ? { system = args.system or builtins.currentSystem; }
# These are needed only because nix's `--arg` command-line logic doesn't work
# with unnamed parameters allowed by ...
, system ? localSystem.system
, crossSystem ? localSystem
, # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or
# $HOME/.config/nixpkgs/config.nix.
config ? let
configFile = builtins.getEnv "NIXPKGS_CONFIG";
configFile2 = homeDir + "/.config/nixpkgs/config.nix";
configFile3 = homeDir + "/.nixpkgs/config.nix"; # obsolete
in
if configFile != "" && builtins.pathExists configFile then import configFile
else if homeDir != "" && builtins.pathExists configFile2 then import configFile2
else if homeDir != "" && builtins.pathExists configFile3 then import configFile3
else {}
, # Overlays are used to extend Nixpkgs collection with additional
# collections of packages. These collection of packages are part of the
# fix-point made by Nixpkgs.
overlays ? let
isDir = path: builtins.pathExists (path + "/.");
pathOverlays = try (toString <nixpkgs-overlays>) "";
homeOverlaysFile = homeDir + "/.config/nixpkgs/overlays.nix";
homeOverlaysDir = homeDir + "/.config/nixpkgs/overlays";
overlays = path:
# check if the path is a directory or a file
if isDir path then
# it's a directory, so the set of overlays from the directory, ordered lexicographically
let content = builtins.readDir path; in
map (n: import (path + ("/" + n)))
(builtins.filter (n: builtins.match ".*\\.nix" n != null || builtins.pathExists (path + ("/" + n + "/default.nix")))
(builtins.attrNames content))
else
# it's a file, so the result is the contents of the file itself
import path;
in
if pathOverlays != "" && builtins.pathExists pathOverlays then overlays pathOverlays
else if builtins.pathExists homeOverlaysFile && builtins.pathExists homeOverlaysDir then
throw ''
Nixpkgs overlays can be specified with ${homeOverlaysFile} or ${homeOverlaysDir}, but not both.
Please remove one of them and try again.
''
else if builtins.pathExists homeOverlaysFile then
if isDir homeOverlaysFile then
throw (homeOverlaysFile + " should be a file")
else overlays homeOverlaysFile
else if builtins.pathExists homeOverlaysDir then
if !(isDir homeOverlaysDir) then
throw (homeOverlaysDir + " should be a directory")
else overlays homeOverlaysDir
else []
, crossOverlays ? []
, ...
} @ args:
# If `localSystem` was explicitly passed, legacy `system` should
# not be passed, and vice-versa.
assert args ? localSystem -> !(args ? system);
assert args ? system -> !(args ? localSystem);
import ./. (builtins.removeAttrs args [ "system" ] // {
inherit config overlays localSystem;
})

View file

@ -0,0 +1,490 @@
{ pkgs }:
with pkgs;
let
mavenbuild = callPackage ../development/java-modules/build-maven-package.nix { };
fetchMaven = callPackage ../development/java-modules/m2install.nix { };
openjfx11 = callPackage ../development/compilers/openjdk/openjfx/11.nix { };
openjfx15 = callPackage ../development/compilers/openjdk/openjfx/15.nix { };
openjfx17 = callPackage ../development/compilers/openjdk/openjfx/17.nix { };
mavenfod = callPackage ../development/java-modules/maven-fod.nix { };
in {
inherit mavenbuild mavenfod fetchMaven openjfx11 openjfx15 openjfx17;
compiler = let
gnomeArgs = {
inherit (gnome2) GConf gnome_vfs;
};
bootstrapArgs = gnomeArgs // {
openjfx = openjfx11; /* need this despite next line :-( */
enableJavaFX = false;
headless = true;
};
mkAdoptopenjdk = path-linux: path-darwin: let
package-linux = import path-linux { inherit lib; };
package-darwin = import path-darwin { inherit lib; };
package = if stdenv.isLinux
then package-linux
else package-darwin;
in rec {
inherit package-linux package-darwin;
jdk-hotspot = callPackage package.jdk-hotspot {};
jre-hotspot = callPackage package.jre-hotspot {};
jdk-openj9 = callPackage package.jdk-openj9 {};
jre-openj9 = callPackage package.jre-openj9 {};
};
mkBootstrap = adoptopenjdk: path: args:
/* adoptopenjdk not available for i686, so fall back to our old builds for bootstrapping */
if adoptopenjdk.jdk-hotspot.meta.available
then adoptopenjdk.jdk-hotspot
else callPackage path args;
mkOpenjdk = path-linux: path-darwin: args:
if stdenv.isLinux
then mkOpenjdkLinuxOnly path-linux args
else let
openjdk = callPackage path-darwin {};
in openjdk // { headless = openjdk; };
mkOpenjdkLinuxOnly = path-linux: args: let
openjdk = callPackage path-linux (gnomeArgs // args);
in openjdk // {
headless = openjdk.override { headless = true; };
};
openjdkDarwinMissing = version:
abort "OpenJDK ${builtins.toString version} is currently not supported on Darwin by nixpkgs.";
in rec {
adoptopenjdk-8 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk8-linux.nix
../development/compilers/adoptopenjdk-bin/jdk8-darwin.nix;
adoptopenjdk-11 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk11-linux.nix
../development/compilers/adoptopenjdk-bin/jdk11-darwin.nix;
adoptopenjdk-13 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk13-linux.nix
../development/compilers/adoptopenjdk-bin/jdk13-darwin.nix;
adoptopenjdk-14 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk14-linux.nix
../development/compilers/adoptopenjdk-bin/jdk14-darwin.nix;
adoptopenjdk-15 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk15-linux.nix
../development/compilers/adoptopenjdk-bin/jdk15-darwin.nix;
adoptopenjdk-16 = mkAdoptopenjdk
../development/compilers/adoptopenjdk-bin/jdk16-linux.nix
../development/compilers/adoptopenjdk-bin/jdk16-darwin.nix;
openjdk8-bootstrap = mkBootstrap adoptopenjdk-8
../development/compilers/openjdk/bootstrap.nix
{ version = "8"; };
openjdk11-bootstrap = mkBootstrap adoptopenjdk-11
../development/compilers/openjdk/bootstrap.nix
{ version = "10"; };
openjdk13-bootstrap = mkBootstrap adoptopenjdk-13
../development/compilers/openjdk/12.nix
(bootstrapArgs // {
/* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
stdenv = gcc8Stdenv;
});
openjdk14-bootstrap = mkBootstrap adoptopenjdk-14
../development/compilers/openjdk/13.nix
(bootstrapArgs // {
inherit openjdk13-bootstrap;
});
openjdk15-bootstrap = mkBootstrap adoptopenjdk-15
../development/compilers/openjdk/14.nix
(bootstrapArgs // {
inherit openjdk14-bootstrap;
});
openjdk16-bootstrap = mkBootstrap adoptopenjdk-16
../development/compilers/openjdk/15.nix
(bootstrapArgs // {
inherit openjdk15-bootstrap;
});
openjdk17-bootstrap = mkBootstrap adoptopenjdk-16
../development/compilers/openjdk/16.nix
(bootstrapArgs // {
inherit openjdk16-bootstrap;
});
openjdk8 = mkOpenjdk
../development/compilers/openjdk/8.nix
../development/compilers/openjdk/darwin/8.nix
{ };
openjdk11 = mkOpenjdk
../development/compilers/openjdk/11.nix
../development/compilers/openjdk/darwin/11.nix
{ openjfx = openjfx11; };
openjdk12 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/12.nix {
/* build segfaults with gcc9 or newer, so use gcc8 like Debian does */
stdenv = gcc8Stdenv;
openjfx = openjfx11;
};
openjdk13 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/13.nix {
inherit openjdk13-bootstrap;
openjfx = openjfx11;
};
openjdk14 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/14.nix {
inherit openjdk14-bootstrap;
openjfx = openjfx11;
};
openjdk15 = mkOpenjdkLinuxOnly ../development/compilers/openjdk/15.nix {
inherit openjdk15-bootstrap;
openjfx = openjfx15;
};
openjdk16 = mkOpenjdk
../development/compilers/openjdk/16.nix
../development/compilers/openjdk/darwin/16.nix
{
inherit openjdk16-bootstrap;
openjfx = openjfx15;
};
openjdk17 = mkOpenjdk
../development/compilers/openjdk/17.nix
../development/compilers/openjdk/darwin/17.nix
{
inherit openjdk17-bootstrap;
openjfx = openjfx17;
};
};
mavenPlugins = recurseIntoAttrs (callPackage ../development/java-modules/mavenPlugins.nix { });
inherit (callPackage ../development/java-modules/eclipse/aether-util.nix { inherit fetchMaven; })
aetherUtil_0_9_0_M2;
inherit (callPackage ../development/java-modules/apache/ant.nix { inherit fetchMaven; })
ant_1_8_2;
inherit (callPackage ../development/java-modules/apache/ant-launcher.nix { inherit fetchMaven; })
antLauncher_1_8_2;
inherit (callPackage ../development/java-modules/beanshell/bsh.nix { inherit fetchMaven; })
bsh_2_0_b4;
inherit (callPackage ../development/java-modules/classworlds/classworlds.nix { inherit fetchMaven; })
classworlds_1_1_alpha2
classworlds_1_1;
inherit (callPackage ../development/java-modules/apache/commons-cli.nix { inherit fetchMaven; })
commonsCli_1_0
commonsCli_1_2;
inherit (callPackage ../development/java-modules/apache/commons-io.nix { inherit fetchMaven; })
commonsIo_2_1;
inherit (callPackage ../development/java-modules/apache/commons-lang.nix { inherit fetchMaven; })
commonsLang_2_1
commonsLang_2_3
commonsLang_2_6;
inherit (callPackage ../development/java-modules/apache/commons-lang3.nix { inherit fetchMaven; })
commonsLang3_3_1;
inherit (callPackage ../development/java-modules/apache/commons-logging-api.nix { inherit fetchMaven; })
commonsLoggingApi_1_1;
inherit (callPackage ../development/java-modules/findbugs/jsr305.nix { inherit fetchMaven; })
findbugsJsr305_2_0_1;
inherit (callPackage ../development/java-modules/google/collections.nix { inherit fetchMaven; })
googleCollections_1_0;
inherit (callPackage ../development/java-modules/hamcrest/all.nix { inherit fetchMaven; })
hamcrestAll_1_3;
inherit (callPackage ../development/java-modules/hamcrest/core.nix { inherit fetchMaven; })
hamcrestCore_1_3;
inherit (callPackage ../development/java-modules/junit { inherit mavenbuild fetchMaven; })
junit_3_8_1
junit_3_8_2
junit_4_12;
inherit (callPackage ../development/java-modules/jogl { })
jogl_2_3_2;
inherit (callPackage ../development/java-modules/log4j { inherit fetchMaven; })
log4j_1_2_12;
inherit (callPackage ../development/java-modules/maven/archiver.nix { inherit fetchMaven; })
mavenArchiver_2_5;
inherit (callPackage ../development/java-modules/maven/artifact.nix { inherit fetchMaven; })
mavenArtifact_2_0_1
mavenArtifact_2_0_6
mavenArtifact_2_0_8
mavenArtifact_2_0_9
mavenArtifact_2_2_1
mavenArtifact_3_0_3;
inherit (callPackage ../development/java-modules/maven/artifact-manager.nix { inherit fetchMaven; })
mavenArtifactManager_2_0_1
mavenArtifactManager_2_0_6
mavenArtifactManager_2_0_9
mavenArtifactManager_2_2_1;
inherit (callPackage ../development/java-modules/maven/common-artifact-filters.nix { inherit fetchMaven; })
mavenCommonArtifactFilters_1_2
mavenCommonArtifactFilters_1_3
mavenCommonArtifactFilters_1_4;
inherit (callPackage ../development/java-modules/maven/compiler-plugin.nix { inherit fetchMaven; })
mavenCompiler_3_2;
inherit (callPackage ../development/java-modules/maven/core.nix { inherit fetchMaven; })
mavenCore_2_0_1
mavenCore_2_0_6
mavenCore_2_0_9
mavenCore_2_2_1;
inherit (callPackage ../development/java-modules/maven/dependency-tree.nix { inherit fetchMaven; })
mavenDependencyTree_2_1;
inherit (callPackage ../development/java-modules/maven/doxia-sink-api.nix { inherit fetchMaven; })
mavenDoxiaSinkApi_1_0_alpha6
mavenDoxiaSinkApi_1_0_alpha7
mavenDoxiaSinkApi_1_0_alpha10;
inherit (callPackage ../development/java-modules/maven/enforcer.nix { inherit fetchMaven; })
mavenEnforcerApi_1_3_1
mavenEnforcerRules_1_3_1;
inherit (callPackage ../development/java-modules/maven/error-diagnostics.nix { inherit fetchMaven; })
mavenErrorDiagnostics_2_0_1
mavenErrorDiagnostics_2_0_6
mavenErrorDiagnostics_2_0_9
mavenErrorDiagnostics_2_2_1;
inherit (callPackage ../development/java-modules/maven/filtering.nix { inherit fetchMaven; })
mavenFiltering_1_1;
inherit (callPackage ../development/java-modules/maven-hello { inherit mavenbuild; })
mavenHello_1_0
mavenHello_1_1;
inherit (callPackage ../development/java-modules/maven/model.nix { inherit fetchMaven; })
mavenModel_2_0_1
mavenModel_2_0_6
mavenModel_2_0_9
mavenModel_2_2_1
mavenModel_3_0_3;
inherit (callPackage ../development/java-modules/maven/monitor.nix { inherit fetchMaven; })
mavenMonitor_2_0_1
mavenMonitor_2_0_6
mavenMonitor_2_0_9
mavenMonitor_2_2_1;
inherit (callPackage ../development/java-modules/maven/plugin-annotations.nix { inherit fetchMaven; })
mavenPluginAnnotations_3_1
mavenPluginAnnotations_3_2;
inherit (callPackage ../development/java-modules/maven/plugin-api.nix { inherit fetchMaven; })
mavenPluginApi_2_0_1
mavenPluginApi_2_0_6
mavenPluginApi_2_0_9
mavenPluginApi_2_2_1
mavenPluginApi_3_0_3;
inherit (callPackage ../development/java-modules/maven/plugin-descriptor.nix { inherit fetchMaven; })
mavenPluginDescriptor_2_0_1
mavenPluginDescriptor_2_0_6
mavenPluginDescriptor_2_0_9
mavenPluginDescriptor_2_2_1;
inherit (callPackage ../development/java-modules/maven/plugin-parameter-documenter.nix { inherit fetchMaven; })
mavenPluginParameterDocumenter_2_0_1
mavenPluginParameterDocumenter_2_0_6
mavenPluginParameterDocumenter_2_0_9
mavenPluginParameterDocumenter_2_2_1;
inherit (callPackage ../development/java-modules/maven/plugin-registry.nix { inherit fetchMaven; })
mavenPluginRegistry_2_0_1
mavenPluginRegistry_2_0_6
mavenPluginRegistry_2_0_9
mavenPluginRegistry_2_2_1;
inherit (callPackage ../development/java-modules/maven/plugin-testing-harness.nix { inherit fetchMaven; })
mavenPluginTestingHarness_1_1;
inherit (callPackage ../development/java-modules/maven/profile.nix { inherit fetchMaven; })
mavenProfile_2_0_1
mavenProfile_2_0_6
mavenProfile_2_0_9
mavenProfile_2_2_1;
inherit (callPackage ../development/java-modules/maven/project.nix { inherit fetchMaven; })
mavenProject_2_0_1
mavenProject_2_0_6
mavenProject_2_0_8
mavenProject_2_0_9
mavenProject_2_2_1;
inherit (callPackage ../development/java-modules/maven/reporting-api.nix { inherit fetchMaven; })
mavenReportingApi_2_0_1
mavenReportingApi_2_0_6
mavenReportingApi_2_0_9
mavenReportingApi_2_2_1;
inherit (callPackage ../development/java-modules/maven/repository-metadata.nix { inherit fetchMaven; })
mavenRepositoryMetadata_2_0_1
mavenRepositoryMetadata_2_0_6
mavenRepositoryMetadata_2_0_9
mavenRepositoryMetadata_2_2_1;
inherit (callPackage ../development/java-modules/maven/settings.nix { inherit fetchMaven; })
mavenSettings_2_0_1
mavenSettings_2_0_6
mavenSettings_2_0_9
mavenSettings_2_2_1;
inherit (callPackage ../development/java-modules/maven/shared-incremental.nix { inherit fetchMaven; })
mavenSharedIncremental_1_1;
inherit (callPackage ../development/java-modules/maven/shared-utils.nix { inherit fetchMaven; })
mavenSharedUtils_0_1;
inherit (callPackage ../development/java-modules/maven/surefire-api.nix { inherit fetchMaven; })
mavenSurefireApi_2_12_4
mavenSurefireApi_2_17;
inherit (callPackage ../development/java-modules/maven/surefire-booter.nix { inherit fetchMaven; })
mavenSurefireBooter_2_12_4
mavenSurefireBooter_2_17;
inherit (callPackage ../development/java-modules/maven/surefire-common.nix { inherit fetchMaven; })
mavenSurefireCommon_2_12_4
mavenSurefireCommon_2_17;
inherit (callPackage ../development/java-modules/maven/surefire-junit4.nix { inherit fetchMaven; })
mavenSurefireJunit4_2_12_4;
inherit (callPackage ../development/java-modules/maven/toolchain.nix { inherit fetchMaven; })
mavenToolchain_1_0
mavenToolchain_2_0_9
mavenToolchain_2_2_1;
inherit (callPackage ../development/java-modules/mojo/animal-sniffer.nix { inherit fetchMaven; })
mojoAnimalSniffer_1_11;
inherit (callPackage ../development/java-modules/mojo/java-boot-classpath-detector.nix { inherit fetchMaven; })
mojoJavaBootClasspathDetector_1_11;
inherit (callPackage ../development/java-modules/ow2/asm-all.nix { inherit fetchMaven; })
ow2AsmAll_4_0;
inherit (callPackage ../development/java-modules/plexus/archiver.nix { inherit fetchMaven; })
plexusArchiver_1_0_alpha7
plexusArchiver_2_1;
inherit (callPackage ../development/java-modules/plexus/build-api.nix { inherit fetchMaven; })
plexusBuildApi_0_0_4;
inherit (callPackage ../development/java-modules/plexus/classworlds.nix { inherit fetchMaven; })
plexusClassworlds_2_2_2
plexusClassworlds_2_4;
inherit (callPackage ../development/java-modules/plexus/compiler-api.nix { inherit fetchMaven; })
plexusCompilerApi_2_2
plexusCompilerApi_2_4;
inherit (callPackage ../development/java-modules/plexus/compiler-javac.nix { inherit fetchMaven; })
plexusCompilerJavac_2_2
plexusCompilerJavac_2_4;
inherit (callPackage ../development/java-modules/plexus/compiler-manager.nix { inherit fetchMaven; })
plexusCompilerManager_2_2
plexusCompilerManager_2_4;
inherit (callPackage ../development/java-modules/plexus/component-annotations.nix { inherit fetchMaven; })
plexusComponentAnnotations_1_5_5;
inherit (callPackage ../development/java-modules/plexus/container-default.nix { inherit fetchMaven; })
plexusContainerDefault_1_0_alpha9
plexusContainerDefault_1_0_alpha9_stable1
plexusContainerDefault_1_5_5;
inherit (callPackage ../development/java-modules/plexus/digest.nix { inherit fetchMaven; })
plexusDigest_1_0;
inherit (callPackage ../development/java-modules/plexus/i18n.nix { inherit fetchMaven; })
plexusI18n_1_0_beta6;
inherit (callPackage ../development/java-modules/plexus/interactivity-api.nix { inherit fetchMaven; })
plexusInteractivityApi_1_0_alpha4;
inherit (callPackage ../development/java-modules/plexus/interpolation.nix { inherit fetchMaven; })
plexusInterpolation_1_11
plexusInterpolation_1_12
plexusInterpolation_1_13
plexusInterpolation_1_15;
inherit (callPackage ../development/java-modules/plexus/io.nix { inherit fetchMaven; })
plexusIo_2_0_2;
inherit (callPackage ../development/java-modules/plexus/utils.nix { inherit fetchMaven; })
plexusUtils_1_0_4
plexusUtils_1_0_5
plexusUtils_1_1
plexusUtils_1_4_1
plexusUtils_1_4_5
plexusUtils_1_4_9
plexusUtils_1_5_1
plexusUtils_1_5_5
plexusUtils_1_5_6
plexusUtils_1_5_8
plexusUtils_1_5_15
plexusUtils_2_0_5
plexusUtils_2_0_6
plexusUtils_3_0
plexusUtils_3_0_5
plexusUtils_3_0_8;
inherit (callPackage ../development/java-modules/sisu/guice.nix { inherit fetchMaven; })
sisuGuice_2_9_4;
inherit (callPackage ../development/java-modules/sisu/inject-bean.nix { inherit fetchMaven; })
sisuInjectBean_2_1_1;
inherit (callPackage ../development/java-modules/sisu/inject-plexus.nix { inherit fetchMaven; })
sisuInjectPlexus_2_1_1;
inherit (callPackage ../development/java-modules/apache/xbean-reflect.nix { inherit fetchMaven; })
xbeanReflect_3_4;
inherit (callPackage ../development/java-modules/xerces/impl.nix { inherit fetchMaven; })
xercesImpl_2_8_0;
inherit (callPackage ../development/java-modules/xml-apis { inherit fetchMaven; })
xmlApis_1_3_03;
}

View file

@ -0,0 +1,160 @@
{ config, lib, newScope, kodi, libretro }:
with lib;
let
inherit (libretro) genesis-plus-gx mgba snes9x;
in
let self = rec {
addonDir = "/share/kodi/addons";
rel = "Matrix";
callPackage = newScope self;
inherit kodi;
# Convert derivation to a kodi module. Stolen from ../../../top-level/python-packages.nix
toKodiAddon = drv: drv.overrideAttrs (oldAttrs: {
# Use passthru in order to prevent rebuilds when possible.
passthru = (oldAttrs.passthru or {}) // {
kodiAddonFor = kodi;
requiredKodiAddons = requiredKodiAddons drv.propagatedBuildInputs;
};
});
# Check whether a derivation provides a Kodi addon.
hasKodiAddon = drv: drv ? kodiAddonFor && drv.kodiAddonFor == kodi;
# Get list of required Kodi addons given a list of derivations.
requiredKodiAddons = drvs:
let
modules = filter hasKodiAddon drvs;
in
unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
# package update scripts
addonUpdateScript = callPackage ../applications/video/kodi/addons/addon-update-script { };
# package builders
buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
# regular packages
kodi-platform = callPackage ../applications/video/kodi/addons/kodi-platform { };
# addon packages
a4ksubtitles = callPackage ../applications/video/kodi/addons/a4ksubtitles { };
arteplussept = callPackage ../applications/video/kodi/addons/arteplussept { };
controller-topology-project = callPackage ../applications/video/kodi/addons/controller-topology-project { };
iagl = callPackage ../applications/video/kodi/addons/iagl { };
libretro = callPackage ../applications/video/kodi/addons/libretro { };
libretro-genplus = callPackage ../applications/video/kodi/addons/libretro-genplus { inherit genesis-plus-gx; };
libretro-mgba = callPackage ../applications/video/kodi/addons/libretro-mgba { inherit mgba; };
libretro-snes9x = callPackage ../applications/video/kodi/addons/libretro-snes9x { inherit snes9x; };
jellyfin = callPackage ../applications/video/kodi/addons/jellyfin { };
joystick = callPackage ../applications/video/kodi/addons/joystick { };
keymap = callPackage ../applications/video/kodi/addons/keymap { };
netflix = callPackage ../applications/video/kodi/addons/netflix { };
orftvthek = callPackage ../applications/video/kodi/addons/orftvthek { };
svtplay = callPackage ../applications/video/kodi/addons/svtplay { };
steam-controller = callPackage ../applications/video/kodi/addons/steam-controller { };
steam-launcher = callPackage ../applications/video/kodi/addons/steam-launcher { };
steam-library = callPackage ../applications/video/kodi/addons/steam-library { };
pdfreader = callPackage ../applications/video/kodi/addons/pdfreader { };
pvr-hts = callPackage ../applications/video/kodi/addons/pvr-hts { };
pvr-hdhomerun = callPackage ../applications/video/kodi/addons/pvr-hdhomerun { };
pvr-iptvsimple = callPackage ../applications/video/kodi/addons/pvr-iptvsimple { };
osmc-skin = callPackage ../applications/video/kodi/addons/osmc-skin { };
vfs-sftp = callPackage ../applications/video/kodi/addons/vfs-sftp { };
vfs-libarchive = callPackage ../applications/video/kodi/addons/vfs-libarchive { };
youtube = callPackage ../applications/video/kodi/addons/youtube { };
# addon packages (dependencies)
archive_tool = callPackage ../applications/video/kodi/addons/archive_tool { };
certifi = callPackage ../applications/video/kodi/addons/certifi { };
chardet = callPackage ../applications/video/kodi/addons/chardet { };
dateutil = callPackage ../applications/video/kodi/addons/dateutil { };
defusedxml = callPackage ../applications/video/kodi/addons/defusedxml { };
future = callPackage ../applications/video/kodi/addons/future { };
idna = callPackage ../applications/video/kodi/addons/idna { };
inputstream-adaptive = callPackage ../applications/video/kodi/addons/inputstream-adaptive { };
inputstream-ffmpegdirect = callPackage ../applications/video/kodi/addons/inputstream-ffmpegdirect { };
inputstream-rtmp = callPackage ../applications/video/kodi/addons/inputstream-rtmp { };
inputstreamhelper = callPackage ../applications/video/kodi/addons/inputstreamhelper { };
kodi-six = callPackage ../applications/video/kodi/addons/kodi-six { };
myconnpy = callPackage ../applications/video/kodi/addons/myconnpy { };
requests = callPackage ../applications/video/kodi/addons/requests { };
requests-cache = callPackage ../applications/video/kodi/addons/requests-cache { };
routing = callPackage ../applications/video/kodi/addons/routing { };
signals = callPackage ../applications/video/kodi/addons/signals { };
simplejson = callPackage ../applications/video/kodi/addons/simplejson { };
six = callPackage ../applications/video/kodi/addons/six { };
urllib3 = callPackage ../applications/video/kodi/addons/urllib3 { };
websocket = callPackage ../applications/video/kodi/addons/websocket { };
xbmcswift2 = callPackage ../applications/video/kodi/addons/xbmcswift2 { };
typing_extensions = callPackage ../applications/video/kodi/addons/typing_extensions { };
arrow = callPackage ../applications/video/kodi/addons/arrow { };
trakt-module = callPackage ../applications/video/kodi/addons/trakt-module { };
trakt = callPackage ../applications/video/kodi/addons/trakt { };
}; in self // lib.optionalAttrs config.allowAliases {
# deprecated or renamed packages
controllers = throw "kodi.packages.controllers has been replaced with kodi.packages.controller-topology-project - a package which contains a large number of controller profiles." { };
}

View file

@ -0,0 +1,611 @@
{ pkgs
, linuxKernel
, config
, buildPackages
, callPackage
, makeOverridable
, recurseIntoAttrs
, dontRecurseIntoAttrs
, stdenv
, stdenvNoCC
, newScope
, lib
, fetchurl
, gcc10Stdenv
}:
# When adding a kernel:
# - Update packageAliases.linux_latest to the latest version
# - Update the rev in ../os-specific/linux/kernel/linux-libre.nix to the latest one.
# - Update linux_latest_hardened when the patches become available
with linuxKernel;
let
deblobKernel = kernel: callPackage ../os-specific/linux/kernel/linux-libre.nix {
linux = kernel;
};
# Hardened Linux
hardenedKernelFor = kernel': overrides:
let
kernel = kernel'.override overrides;
version = kernelPatches.hardened.${kernel.meta.branch}.version;
major = lib.versions.major version;
sha256 = kernelPatches.hardened.${kernel.meta.branch}.sha256;
modDirVersion' = builtins.replaceStrings [ kernel.version ] [ version ] kernel.modDirVersion;
in kernel.override {
structuredExtraConfig = import ../os-specific/linux/kernel/hardened/config.nix {
inherit lib version;
};
argsOverride = {
inherit version;
src = fetchurl {
url = "mirror://kernel/linux/kernel/v${major}.x/linux-${version}.tar.xz";
inherit sha256;
};
};
kernelPatches = kernel.kernelPatches ++ [
kernelPatches.hardened.${kernel.meta.branch}
];
modDirVersionArg = modDirVersion' + (kernelPatches.hardened.${kernel.meta.branch}).extra;
isHardened = true;
};
in {
kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { };
kernels = recurseIntoAttrs (lib.makeExtensible (self: with self;
let callPackage = newScope self; in {
linux_mptcp_95 = callPackage ../os-specific/linux/kernel/linux-mptcp-95.nix {
kernelPatches = linux_4_19.kernelPatches;
};
linux_rpi1 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
kernelPatches = with kernelPatches; [
bridge_stp_helper
request_key_helper
];
rpiVersion = 1;
};
linux_rpi2 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
kernelPatches = with kernelPatches; [
bridge_stp_helper
request_key_helper
];
rpiVersion = 2;
};
linux_rpi3 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
kernelPatches = with kernelPatches; [
bridge_stp_helper
request_key_helper
];
rpiVersion = 3;
};
linux_rpi4 = callPackage ../os-specific/linux/kernel/linux-rpi.nix {
kernelPatches = with kernelPatches; [
bridge_stp_helper
request_key_helper
];
rpiVersion = 4;
};
linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream";
linux_4_9 = callPackage ../os-specific/linux/kernel/linux-4.9.nix {
kernelPatches =
[ kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper_updated
kernelPatches.cpu-cgroup-v2."4.9"
kernelPatches.modinst_arg_list_too_long
];
};
linux_4_14 = callPackage ../os-specific/linux/kernel/linux-4.14.nix {
kernelPatches =
[ kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
# See pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/README.md
# when adding a new linux version
kernelPatches.cpu-cgroup-v2."4.11"
kernelPatches.modinst_arg_list_too_long
];
};
linux_4_19 = callPackage ../os-specific/linux/kernel/linux-4.19.nix {
kernelPatches =
[ kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.modinst_arg_list_too_long
];
};
linux_5_4 = callPackage ../os-specific/linux/kernel/linux-5.4.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.rtl8761b_support
];
};
linux_rt_5_4 = callPackage ../os-specific/linux/kernel/linux-rt-5.4.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_5_10 = callPackage ../os-specific/linux/kernel/linux-5.10.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_rt_5_10 = callPackage ../os-specific/linux/kernel/linux-rt-5.10.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.export-rt-sched-migrate
];
};
linux_5_15 = callPackage ../os-specific/linux/kernel/linux-5.15.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_5_16 = throw "linux 5.16 was removed because it has reached its end of life upstream";
linux_5_17 = callPackage ../os-specific/linux/kernel/linux-5.17.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_5_18 = callPackage ../os-specific/linux/kernel/linux-5.18.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_testing = let
testing = callPackage ../os-specific/linux/kernel/linux-testing.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
latest = packageAliases.linux_latest.kernel;
in if latest.kernelAtLeast testing.baseVersion
then latest
else testing;
linux_testing_bcachefs = callPackage ../os-specific/linux/kernel/linux-testing-bcachefs.nix rec {
kernel = linux_5_17;
kernelPatches = kernel.kernelPatches;
};
linux_hardkernel_4_14 = callPackage ../os-specific/linux/kernel/linux-hardkernel-4.14.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.modinst_arg_list_too_long
];
};
linux_zen = callPackage ../os-specific/linux/kernel/linux-zen.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
linux_lqx = callPackage ../os-specific/linux/kernel/linux-lqx.nix {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
};
# This contains both the STABLE and EDGE variants of the XanMod kernel
xanmodKernels = callPackage ../os-specific/linux/kernel/xanmod-kernels.nix;
linux_xanmod = (xanmodKernels {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
}).stable;
linux_xanmod_latest = (xanmodKernels {
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
];
}).edge;
linux_libre = deblobKernel packageAliases.linux_default.kernel;
linux_latest_libre = deblobKernel packageAliases.linux_latest.kernel;
linux_hardened = hardenedKernelFor packageAliases.linux_default.kernel { };
linux_4_14_hardened = hardenedKernelFor kernels.linux_4_14 { };
linux_4_19_hardened = hardenedKernelFor kernels.linux_4_19 { };
linux_5_4_hardened = hardenedKernelFor kernels.linux_5_4 { };
linux_5_10_hardened = hardenedKernelFor kernels.linux_5_10 { };
linux_5_15_hardened = hardenedKernelFor kernels.linux_5_15 { };
linux_5_17_hardened = hardenedKernelFor kernels.linux_5_17 { };
}));
/* Linux kernel modules are inherently tied to a specific kernel. So
rather than provide specific instances of those packages for a
specific kernel, we have a function that builds those packages
for a specific kernel. This function can then be called for
whatever kernel you're using. */
packagesFor = kernel_: lib.makeExtensible (self: with self;
let callPackage = newScope self; in {
inherit callPackage;
kernel = kernel_;
inherit (kernel) stdenv; # in particular, use the same compiler by default
# to help determine module compatibility
inherit (kernel) isZen isHardened isLibre;
inherit (kernel) kernelOlder kernelAtLeast;
# Obsolete aliases (these packages do not depend on the kernel).
inherit (pkgs) odp-dpdk pktgen; # added 2018-05
inherit (pkgs) bcc bpftrace; # added 2021-12
acpi_call = callPackage ../os-specific/linux/acpi-call {};
akvcam = callPackage ../os-specific/linux/akvcam { };
amdgpu-pro = callPackage ../os-specific/linux/amdgpu-pro {
libffi = pkgs.libffi.overrideAttrs (orig: rec {
version = "3.3";
src = fetchurl {
url = "https://github.com/libffi/libffi/releases/download/v${version}/${orig.pname}-${version}.tar.gz";
sha256 = "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj";
};
});
};
apfs = callPackage ../os-specific/linux/apfs { };
batman_adv = callPackage ../os-specific/linux/batman-adv {};
bbswitch = callPackage ../os-specific/linux/bbswitch {};
chipsec = callPackage ../tools/security/chipsec {
inherit kernel;
withDriver = true;
};
cryptodev = callPackage ../os-specific/linux/cryptodev { };
cpupower = callPackage ../os-specific/linux/cpupower { };
ddcci-driver = callPackage ../os-specific/linux/ddcci { };
dddvb = callPackage ../os-specific/linux/dddvb { };
digimend = callPackage ../os-specific/linux/digimend { };
dpdk-kmods = callPackage ../os-specific/linux/dpdk-kmods { };
dpdk = pkgs.dpdk.override { inherit kernel; };
exfat-nofuse = callPackage ../os-specific/linux/exfat { };
evdi = callPackage ../os-specific/linux/evdi { };
fwts-efi-runtime = callPackage ../os-specific/linux/fwts/module.nix { };
gcadapter-oc-kmod = callPackage ../os-specific/linux/gcadapter-oc-kmod { };
hid-nintendo = callPackage ../os-specific/linux/hid-nintendo { };
hyperv-daemons = callPackage ../os-specific/linux/hyperv-daemons { };
e1000e = if lib.versionOlder kernel.version "4.10" then callPackage ../os-specific/linux/e1000e {} else null;
intel-speed-select = if lib.versionAtLeast kernel.version "5.3" then callPackage ../os-specific/linux/intel-speed-select { } else null;
ixgbevf = callPackage ../os-specific/linux/ixgbevf {};
it87 = callPackage ../os-specific/linux/it87 {};
asus-ec-sensors = callPackage ../os-specific/linux/asus-ec-sensors {};
asus-wmi-sensors = callPackage ../os-specific/linux/asus-wmi-sensors {};
ena = callPackage ../os-specific/linux/ena {};
kvdo = callPackage ../os-specific/linux/kvdo {};
liquidtux = callPackage ../os-specific/linux/liquidtux {};
v4l2loopback = callPackage ../os-specific/linux/v4l2loopback { };
lttng-modules = callPackage ../os-specific/linux/lttng-modules { };
broadcom_sta = callPackage ../os-specific/linux/broadcom-sta { };
tbs = callPackage ../os-specific/linux/tbs { };
mbp2018-bridge-drv = callPackage ../os-specific/linux/mbp-modules/mbp2018-bridge-drv { };
new-lg4ff = callPackage ../os-specific/linux/new-lg4ff { };
nvidiabl = callPackage ../os-specific/linux/nvidiabl { };
nvidiaPackages = dontRecurseIntoAttrs (lib.makeExtensible (_: callPackage ../os-specific/linux/nvidia-x11 { }));
nvidia_x11_legacy340 = nvidiaPackages.legacy_340;
nvidia_x11_legacy390 = nvidiaPackages.legacy_390;
nvidia_x11_legacy470 = nvidiaPackages.legacy_470;
nvidia_x11_beta = nvidiaPackages.beta;
nvidia_x11_vulkan_beta = nvidiaPackages.vulkan_beta;
nvidia_x11 = nvidiaPackages.stable;
openrazer = callPackage ../os-specific/linux/openrazer/driver.nix { };
ply = callPackage ../os-specific/linux/ply { };
r8125 = callPackage ../os-specific/linux/r8125 { };
r8168 = callPackage ../os-specific/linux/r8168 { };
rtl8188eus-aircrack = callPackage ../os-specific/linux/rtl8188eus-aircrack { };
rtl8192eu = callPackage ../os-specific/linux/rtl8192eu { };
rtl8189es = callPackage ../os-specific/linux/rtl8189es { };
rtl8723bs = callPackage ../os-specific/linux/rtl8723bs { };
rtl8812au = callPackage ../os-specific/linux/rtl8812au { };
rtl8814au = callPackage ../os-specific/linux/rtl8814au { };
rtl88xxau-aircrack = callPackage ../os-specific/linux/rtl88xxau-aircrack {};
rtl8821au = callPackage ../os-specific/linux/rtl8821au { };
rtl8821ce = callPackage ../os-specific/linux/rtl8821ce { };
rtl88x2bu = callPackage ../os-specific/linux/rtl88x2bu { };
rtl8821cu = callPackage ../os-specific/linux/rtl8821cu { };
rtw88 = callPackage ../os-specific/linux/rtw88 { };
rtlwifi_new = rtw88;
rtw89 = if lib.versionOlder kernel.version "5.16" then callPackage ../os-specific/linux/rtw89 { } else null;
openafs_1_8 = callPackage ../servers/openafs/1.8/module.nix { };
openafs_1_9 = callPackage ../servers/openafs/1.9/module.nix { };
# Current stable release; don't backport release updates!
openafs = openafs_1_8;
facetimehd = callPackage ../os-specific/linux/facetimehd { };
tuxedo-keyboard = if lib.versionAtLeast kernel.version "4.14" then callPackage ../os-specific/linux/tuxedo-keyboard { } else null;
jool = callPackage ../os-specific/linux/jool { };
kvmfr = callPackage ../os-specific/linux/kvmfr { };
mba6x_bl = callPackage ../os-specific/linux/mba6x_bl { };
mwprocapture = callPackage ../os-specific/linux/mwprocapture { };
mxu11x0 = callPackage ../os-specific/linux/mxu11x0 { };
# compiles but has to be integrated into the kernel somehow
# Let's have it uncommented and finish it..
ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { };
netatop = callPackage ../os-specific/linux/netatop { };
oci-seccomp-bpf-hook = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/oci-seccomp-bpf-hook { } else null;
perf = callPackage ../os-specific/linux/kernel/perf.nix { };
phc-intel = if lib.versionAtLeast kernel.version "4.10" then callPackage ../os-specific/linux/phc-intel { } else null;
# Disable for kernels 4.15 and above due to compatibility issues
prl-tools = if lib.versionOlder kernel.version "4.15" then callPackage ../os-specific/linux/prl-tools { } else null;
sch_cake = callPackage ../os-specific/linux/sch_cake { };
isgx = callPackage ../os-specific/linux/isgx { };
rr-zen_workaround = callPackage ../development/tools/analysis/rr/zen_workaround.nix { };
sysdig = callPackage ../os-specific/linux/sysdig {};
systemtap = callPackage ../development/tools/profiling/systemtap { };
system76 = callPackage ../os-specific/linux/system76 { };
system76-acpi = callPackage ../os-specific/linux/system76-acpi { };
system76-power = callPackage ../os-specific/linux/system76-power { };
system76-io = callPackage ../os-specific/linux/system76-io { };
tmon = callPackage ../os-specific/linux/tmon { };
tp_smapi = callPackage ../os-specific/linux/tp_smapi { };
turbostat = callPackage ../os-specific/linux/turbostat { };
usbip = callPackage ../os-specific/linux/usbip { };
v86d = callPackage ../os-specific/linux/v86d { };
veikk-linux-driver = callPackage ../os-specific/linux/veikk-linux-driver { };
vendor-reset = callPackage ../os-specific/linux/vendor-reset { };
vhba = callPackage ../applications/emulators/cdemu/vhba.nix { };
virtio_vmmci = callPackage ../os-specific/linux/virtio_vmmci { };
virtualbox = callPackage ../os-specific/linux/virtualbox {
virtualbox = pkgs.virtualboxHardened;
};
virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions {
virtualbox = pkgs.virtualboxHardened;
};
vm-tools = callPackage ../os-specific/linux/vm-tools { };
vmm_clock = callPackage ../os-specific/linux/vmm_clock { };
vmware = callPackage ../os-specific/linux/vmware { };
wireguard = if lib.versionOlder kernel.version "5.6" then callPackage ../os-specific/linux/wireguard { } else null;
x86_energy_perf_policy = callPackage ../os-specific/linux/x86_energy_perf_policy { };
xmm7360-pci = callPackage ../os-specific/linux/xmm7360-pci { };
xone = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/xone { } else null;
xpadneo = callPackage ../os-specific/linux/xpadneo { };
zenpower = callPackage ../os-specific/linux/zenpower { };
inherit (callPackage ../os-specific/linux/zfs {
configFile = "kernel";
inherit pkgs kernel;
}) zfsStable zfsUnstable;
zfs = zfsStable;
can-isotp = callPackage ../os-specific/linux/can-isotp { };
} // lib.optionalAttrs config.allowAliases {
ati_drivers_x11 = throw "ati drivers are no longer supported by any kernel >=4.1"; # added 2021-05-18;
});
hardenedPackagesFor = kernel: overrides: packagesFor (hardenedKernelFor kernel overrides);
vanillaPackages = {
# recurse to build modules for the kernels
linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream"; # Added 2022-02-11
linux_4_9 = recurseIntoAttrs (packagesFor kernels.linux_4_9);
linux_4_14 = recurseIntoAttrs (packagesFor kernels.linux_4_14);
linux_4_19 = recurseIntoAttrs (packagesFor kernels.linux_4_19);
linux_5_4 = recurseIntoAttrs (packagesFor kernels.linux_5_4);
linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10);
linux_5_15 = recurseIntoAttrs (packagesFor kernels.linux_5_15);
linux_5_16 = throw "linux 5.16 was removed because it reached its end of life upstream"; # Added 2022-04-23
linux_5_17 = recurseIntoAttrs (packagesFor kernels.linux_5_17);
linux_5_18 = recurseIntoAttrs (packagesFor kernels.linux_5_18);
};
rtPackages = {
# realtime kernel packages
linux_rt_5_4 = packagesFor kernels.linux_rt_5_4;
linux_rt_5_10 = packagesFor kernels.linux_rt_5_10;
};
rpiPackages = {
linux_rpi1 = packagesFor kernels.linux_rpi1;
linux_rpi2 = packagesFor kernels.linux_rpi2;
linux_rpi3 = packagesFor kernels.linux_rpi3;
linux_rpi4 = packagesFor kernels.linux_rpi4;
};
packages = recurseIntoAttrs (vanillaPackages // rtPackages // rpiPackages // {
linux_mptcp_95 = packagesFor kernels.linux_mptcp_95;
# Intentionally lacks recurseIntoAttrs, as -rc kernels will quite likely break out-of-tree modules and cause failed Hydra builds.
linux_testing = packagesFor kernels.linux_testing;
linux_testing_bcachefs = recurseIntoAttrs (packagesFor kernels.linux_testing_bcachefs);
linux_hardened = recurseIntoAttrs (hardenedPackagesFor packageAliases.linux_default.kernel { });
linux_4_14_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_4_14 {
stdenv = gcc10Stdenv;
buildPackages = buildPackages // { stdenv = buildPackages.gcc10Stdenv; };
});
linux_4_19_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_4_19 {
stdenv = gcc10Stdenv;
buildPackages = buildPackages // { stdenv = buildPackages.gcc10Stdenv; };
});
linux_5_4_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_4 {
stdenv = gcc10Stdenv;
buildPackages = buildPackages // { stdenv = buildPackages.gcc10Stdenv; };
});
linux_5_10_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_10 { });
linux_5_15_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_15 { });
linux_5_17_hardened = recurseIntoAttrs (hardenedPackagesFor kernels.linux_5_17 { });
linux_zen = recurseIntoAttrs (packagesFor kernels.linux_zen);
linux_lqx = recurseIntoAttrs (packagesFor kernels.linux_lqx);
linux_xanmod = recurseIntoAttrs (packagesFor kernels.linux_xanmod);
linux_xanmod_latest = recurseIntoAttrs (packagesFor kernels.linux_xanmod_latest);
hardkernel_4_14 = recurseIntoAttrs (packagesFor kernels.linux_hardkernel_4_14);
linux_libre = recurseIntoAttrs (packagesFor kernels.linux_libre);
linux_latest_libre = recurseIntoAttrs (packagesFor kernels.linux_latest_libre);
});
packageAliases = {
linux_default = if stdenv.hostPlatform.isi686 then packages.linux_5_10 else packages.linux_5_15;
# Update this when adding the newest kernel major version!
linux_latest = packages.linux_5_18;
linux_mptcp = packages.linux_mptcp_95;
linux_rt_default = packages.linux_rt_5_4;
linux_rt_latest = packages.linux_rt_5_10;
linux_hardkernel_latest = packages.hardkernel_4_14;
};
manualConfig = makeOverridable (callPackage ../os-specific/linux/kernel/manual-config.nix {});
customPackage = { version, src, configfile, allowImportFromDerivation ? true }:
recurseIntoAttrs (packagesFor (manualConfig {
inherit version src configfile lib stdenv allowImportFromDerivation;
}));
# Derive one of the default .config files
linuxConfig = {
src,
version ? (builtins.parseDrvName src.name).version,
makeTarget ? "defconfig",
name ? "kernel.config",
}: stdenvNoCC.mkDerivation {
inherit name src;
depsBuildBuild = [ buildPackages.stdenv.cc ]
++ lib.optionals (lib.versionAtLeast version "4.16") [ buildPackages.bison buildPackages.flex ];
postPatch = ''
patchShebangs scripts/
'';
buildPhase = ''
set -x
make \
ARCH=${stdenv.hostPlatform.linuxArch} \
HOSTCC=${buildPackages.stdenv.cc.targetPrefix}gcc \
${makeTarget}
'';
installPhase = ''
cp .config $out
'';
};
buildLinux = attrs: callPackage ../os-specific/linux/kernel/generic.nix attrs;
}

View file

@ -0,0 +1,136 @@
/* This file defines the composition for Lua packages. It has
been factored out of all-packages.nix because there are many of
them. Also, because most Nix expressions for Lua packages are
trivial, most are actually defined here. I.e. there's no function
for each package in a separate file: the call to the function would
be almost as must code as the function itself. */
{ fetchurl, stdenv, lua, unzip, pkg-config
, pcre, oniguruma, gnulib, tre, glibc, sqlite, openssl, expat
, autoreconfHook, gnum4
, postgresql, cyrus_sasl
, fetchFromGitHub, which, writeText
, pkgs
, lib
}@args:
let
packages = ( self:
let
callPackage = pkgs.newScope self;
buildLuaApplication = args: buildLuarocksPackage ({namePrefix="";} // args );
buildLuarocksPackage = lib.makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix {
inherit lua;
inherit (pkgs) lib;
inherit (luaLib) toLuaModule;
});
luaLib = import ../development/lua-modules/lib.nix {
inherit (pkgs) lib;
inherit pkgs lua;
};
#define build lua package function
buildLuaPackage = callPackage ../development/lua-modules/generic {
inherit writeText;
};
getPath = drv: pathListForVersion:
lib.concatMapStringsSep ";" (path: "${drv}/${path}") pathListForVersion;
in
{
# helper functions for dealing with LUA_PATH and LUA_CPATH
lib = luaLib;
getLuaPath = drv: getPath drv luaLib.luaPathList;
getLuaCPath = drv: getPath drv luaLib.luaCPathList;
inherit (callPackage ../development/interpreters/lua-5/hooks { inherit (args) lib;})
lua-setup-hook;
inherit lua callPackage;
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
inherit (luaLib) luaOlder luaAtLeast isLua51 isLua52 isLua53 isLuaJIT
requiredLuaModules toLuaModule hasLuaModule;
# wraps programs in $out/bin with valid LUA_PATH/LUA_CPATH
wrapLua = callPackage ../development/interpreters/lua-5/wrap-lua.nix {
inherit lua lib;
inherit (pkgs) makeSetupHook makeWrapper;
};
luarocks = callPackage ../development/tools/misc/luarocks/default.nix {
inherit lua lib;
};
# a fork of luarocks used to generate nix lua derivations from rockspecs
luarocks-nix = callPackage ../development/tools/misc/luarocks/luarocks-nix.nix { };
luxio = buildLuaPackage {
pname = "luxio";
version = "13";
src = fetchurl {
url = "https://git.gitano.org.uk/luxio.git/snapshot/luxio-luxio-13.tar.bz2";
sha256 = "1hvwslc25q7k82rxk461zr1a2041nxg7sn3sw3w0y5jxf0giz2pz";
};
nativeBuildInputs = [ which pkg-config ];
postPatch = ''
patchShebangs .
'';
preBuild = ''
makeFlagsArray=(
INST_LIBDIR="$out/lib/lua/${lua.luaversion}"
INST_LUADIR="$out/share/lua/${lua.luaversion}"
LUA_BINDIR="$out/bin"
INSTALL=install
);
'';
meta = with lib; {
broken = stdenv.isDarwin;
description = "Lightweight UNIX I/O and POSIX binding for Lua";
homepage = "https://www.gitano.org.uk/luxio/";
license = licenses.mit;
maintainers = with maintainers; [ richardipsum ];
platforms = platforms.unix;
};
};
vicious = luaLib.toLuaModule( stdenv.mkDerivation rec {
pname = "vicious";
version = "2.5.1";
src = fetchFromGitHub {
owner = "vicious-widgets";
repo = "vicious";
rev = "v${version}";
sha256 = "sha256-geu/g/dFAVxtY1BuJYpZoVtFS/oL66NFnqiLAnJELtI=";
};
buildInputs = [ lua ];
installPhase = ''
mkdir -p $out/lib/lua/${lua.luaversion}/
cp -r . $out/lib/lua/${lua.luaversion}/vicious/
printf "package.path = '$out/lib/lua/${lua.luaversion}/?/init.lua;' .. package.path\nreturn require((...) .. '.init')\n" > $out/lib/lua/${lua.luaversion}/vicious.lua
'';
meta = with lib; {
description = "A modular widget library for the awesome window manager";
homepage = "https://vicious.rtfd.io";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ makefu mic92 McSinyx ];
platforms = platforms.linux;
};
});
});
in packages

View file

@ -0,0 +1,86 @@
/* Hydra job to build a tarball for Nixpkgs from a Git checkout. It
also builds the documentation and tests whether the Nix expressions
evaluate correctly. */
{ nixpkgs
, officialRelease
, supportedSystems
, pkgs ? import nixpkgs.outPath {}
, nix ? pkgs.nix
, lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }
}:
pkgs.releaseTools.sourceTarball {
name = "nixpkgs-tarball";
src = nixpkgs;
inherit officialRelease;
version = pkgs.lib.fileContents ../../.version;
versionSuffix = "pre${
if nixpkgs ? lastModified
then builtins.substring 0 8 (nixpkgs.lastModifiedDate or nixpkgs.lastModified)
else toString nixpkgs.revCount}.${nixpkgs.shortRev or "dirty"}";
buildInputs = with pkgs; [ nix.out jq lib-tests brotli ];
configurePhase = ''
eval "$preConfigure"
releaseName=nixpkgs-$VERSION$VERSION_SUFFIX
echo -n $VERSION_SUFFIX > .version-suffix
echo -n ${nixpkgs.rev or nixpkgs.shortRev or "dirty"} > .git-revision
echo "release name is $releaseName"
echo "git-revision is $(cat .git-revision)"
'';
nixpkgs-basic-release-checks = import ./nixpkgs-basic-release-checks.nix
{ inherit nix pkgs nixpkgs supportedSystems; };
dontBuild = false;
doCheck = true;
checkPhase = ''
set -o pipefail
export NIX_STATE_DIR=$TMPDIR
export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
opts=(--option build-users-group "")
nix-store --init
header "checking eval-release.nix"
nix-instantiate --eval --strict --show-trace ./maintainers/scripts/eval-release.nix > /dev/null
header "checking find-tarballs.nix"
nix-instantiate --readonly-mode --eval --strict --show-trace --json \
./maintainers/scripts/find-tarballs.nix \
--arg expr 'import ./maintainers/scripts/all-tarballs.nix' > $TMPDIR/tarballs.json
nrUrls=$(jq -r '.[].url' < $TMPDIR/tarballs.json | wc -l)
echo "found $nrUrls URLs"
if [ "$nrUrls" -lt 10000 ]; then
echo "suspiciously low number of URLs"
exit 1
fi
header "generating packages.json"
mkdir -p $out/nix-support
echo -n '{"version":2,"packages":' > tmp
nix-env -f . -I nixpkgs=$src -qa --meta --json --arg config 'import ${./packages-config.nix}' "''${opts[@]}" >> tmp
echo -n '}' >> tmp
packages=$out/packages.json.br
< tmp sed "s|$(pwd)/||g" | jq -c | brotli -9 > $packages
rm tmp
echo "file json-br $packages" >> $out/nix-support/hydra-build-products
'';
distPhase = ''
mkdir -p $out/tarballs
mkdir ../$releaseName
cp -prd . ../$releaseName
(cd .. && tar cfa $out/tarballs/$releaseName.tar.xz $releaseName) || false
'';
meta = {
maintainers = [ pkgs.lib.maintainers.all ];
};
}

View file

@ -0,0 +1,79 @@
{ nixpkgs, pkgs }:
with pkgs;
runCommand "nixpkgs-metrics"
{ nativeBuildInputs = with pkgs.lib; map getBin [ nix time jq ];
# see https://github.com/NixOS/nixpkgs/issues/52436
#requiredSystemFeatures = [ "benchmark" ]; # dedicated `t2a` machine, by @vcunat
}
''
export NIX_STORE_DIR=$TMPDIR/store
export NIX_STATE_DIR=$TMPDIR/state
export NIX_PAGER=
nix-store --init
mkdir -p $out/nix-support
touch $out/nix-support/hydra-build-products
run() {
local name="$1"
shift
echo "running $@"
case "$name" in
# Redirect stdout to /dev/null to avoid hitting "Output Limit
# Exceeded" on Hydra.
nix-env.qaDrv|nix-env.qaDrvAggressive)
NIX_SHOW_STATS=1 NIX_SHOW_STATS_PATH=stats-nix time -o stats-time "$@" >/dev/null ;;
*)
NIX_SHOW_STATS=1 NIX_SHOW_STATS_PATH=stats-nix time -o stats-time "$@" ;;
esac
cat stats-nix; echo; cat stats-time; echo
x=$(jq '.cpuTime' < stats-nix)
[[ -n $x ]] || exit 1
echo "$name.time $x s" >> $out/nix-support/hydra-metrics
x=$(sed -e 's/.* \([0-9]\+\)maxresident.*/\1/ ; t ; d' < stats-time)
[[ -n $x ]] || exit 1
echo "$name.maxresident $x KiB" >> $out/nix-support/hydra-metrics
# nix-2.2 also outputs .symbols.bytes but that wasn't summed originally
# https://github.com/NixOS/nix/pull/2392/files#diff-8e6ba8c21672fc1a5f6f606e1e101c74L1762
x=$(jq '[.envs,.list,.values,.sets] | map(.bytes) | add' < stats-nix)
[[ -n $x ]] || exit 1
echo "$name.allocations $x B" >> $out/nix-support/hydra-metrics
x=$(jq '.values.number' < stats-nix)
[[ -n $x ]] || exit 1
echo "$name.values $x" >> $out/nix-support/hydra-metrics
}
run nixos.smallContainer nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
-A closures.smallContainer.x86_64-linux --show-trace
run nixos.kde nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
-A closures.kde.x86_64-linux --show-trace
run nixos.lapp nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
-A closures.lapp.x86_64-linux --show-trace
run nix-env.qa nix-env -f ${nixpkgs} -qa
run nix-env.qaDrv nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
# It's slightly unclear which of the set to track: qaCount, qaCountDrv, qaCountBroken.
num=$(nix-env -f ${nixpkgs} -qa | wc -l)
echo "nix-env.qaCount $num" >> $out/nix-support/hydra-metrics
qaCountDrv=$(nix-env -f ${nixpkgs} -qa --drv-path | wc -l)
num=$((num - $qaCountDrv))
echo "nix-env.qaCountBroken $num" >> $out/nix-support/hydra-metrics
# TODO: this has been ignored for some time
# GC Warning: Bad initial heap size 128k - ignoring it.
#export GC_INITIAL_HEAP_SIZE=128k
run nix-env.qaAggressive nix-env -f ${nixpkgs} -qa
run nix-env.qaDrvAggressive nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
lines=$(find ${nixpkgs} -name "*.nix" -type f | xargs cat | wc -l)
echo "loc $lines" >> $out/nix-support/hydra-metrics
''

View file

@ -0,0 +1,92 @@
{ lib, pkgs, stdenv, newScope, nim, fetchFromGitHub }:
lib.makeScope newScope (self:
let callPackage = self.callPackage;
in {
inherit nim;
nim_builder = callPackage ../development/nim-packages/nim_builder { };
buildNimPackage =
callPackage ../development/nim-packages/build-nim-package { };
fetchNimble = callPackage ../development/nim-packages/fetch-nimble { };
astpatternmatching =
callPackage ../development/nim-packages/astpatternmatching { };
bumpy = callPackage ../development/nim-packages/bumpy { };
chroma = callPackage ../development/nim-packages/chroma { };
c2nim = callPackage ../development/nim-packages/c2nim { };
docopt = callPackage ../development/nim-packages/docopt { };
flatty = callPackage ../development/nim-packages/flatty { };
frosty = callPackage ../development/nim-packages/frosty { };
hts-nim = callPackage ../development/nim-packages/hts-nim { };
jester = callPackage ../development/nim-packages/jester { };
jsonschema = callPackage ../development/nim-packages/jsonschema { };
jsony = callPackage ../development/nim-packages/jsony { };
karax = callPackage ../development/nim-packages/karax { };
lscolors = callPackage ../development/nim-packages/lscolors { };
markdown = callPackage ../development/nim-packages/markdown { };
nimcrypto = callPackage ../development/nim-packages/nimcrypto { };
nimbox = callPackage ../development/nim-packages/nimbox { };
nimsimd = callPackage ../development/nim-packages/nimsimd { };
noise = callPackage ../development/nim-packages/noise { };
packedjson = callPackage ../development/nim-packages/packedjson { };
pixie = callPackage ../development/nim-packages/pixie { };
redis = callPackage ../development/nim-packages/redis { };
redpool = callPackage ../development/nim-packages/redpool { };
regex = callPackage ../development/nim-packages/regex { };
rocksdb = callPackage ../development/nim-packages/rocksdb {
inherit (pkgs) rocksdb;
};
sass = callPackage ../development/nim-packages/sass { };
sdl2 = callPackage ../development/nim-packages/sdl2 { };
segmentation = callPackage ../development/nim-packages/segmentation { };
snappy =
callPackage ../development/nim-packages/snappy { inherit (pkgs) snappy; };
spry = callPackage ../development/nim-packages/spry { };
spryvm = callPackage ../development/nim-packages/spryvm { };
stew = callPackage ../development/nim-packages/stew { };
supersnappy = callPackage ../development/nim-packages/supersnappy { };
tempfile = callPackage ../development/nim-packages/tempfile { };
ui = callPackage ../development/nim-packages/ui { inherit (pkgs) libui; };
unicodedb = callPackage ../development/nim-packages/unicodedb { };
unicodeplus = callPackage ../development/nim-packages/unicodeplus { };
vmath = callPackage ../development/nim-packages/vmath { };
zippy = callPackage ../development/nim-packages/zippy { };
})

View file

@ -0,0 +1,84 @@
{ supportedSystems, nixpkgs, pkgs, nix }:
pkgs.runCommand "nixpkgs-release-checks" { src = nixpkgs; buildInputs = [nix]; } ''
set -o pipefail
export NIX_STORE_DIR=$TMPDIR/store
export NIX_STATE_DIR=$TMPDIR/state
export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
opts=(--option build-users-group "")
nix-store --init
echo 'abort "Illegal use of <nixpkgs> in Nixpkgs."' > $TMPDIR/barf.nix
# Make sure that Nixpkgs does not use <nixpkgs>.
badFiles=$(find $src/pkgs -type f -name '*.nix' -print | xargs grep -l '^[^#]*<nixpkgs\/' || true)
if [[ -n $badFiles ]]; then
echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
echo "The offending files: $badFiles"
exit 1
fi
src2=$TMPDIR/foo
cp -rd $src $src2
# Check that all-packages.nix evaluates on a number of platforms without any warnings.
for platform in ${pkgs.lib.concatStringsSep " " supportedSystems}; do
header "checking Nixpkgs on $platform"
# To get a call trace; see https://nixos.org/manual/nixpkgs/stable/#function-library-lib.trivial.warn
# Relies on impure eval
export NIX_ABORT_ON_WARN=true
set +e
(
set -x
nix-env -f $src \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system \
"''${opts[@]}" 2> eval-warnings.log > packages1
)
rc=$?
set -e
if [ "$rc" != "0" ]; then
cat eval-warnings.log
exit $rc
fi
s1=$(sha1sum packages1 | cut -c1-40)
echo $s1
nix-env -f $src2 \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system \
"''${opts[@]}" > packages2
s2=$(sha1sum packages2 | cut -c1-40)
if [[ $s1 != $s2 ]]; then
echo "Nixpkgs evaluation depends on Nixpkgs path"
diff packages1 packages2
exit 1
fi
# Catch any trace calls not caught by NIX_ABORT_ON_WARN (lib.warn)
if [ -s eval-warnings.log ]; then
echo "Nixpkgs on $platform evaluated with warnings, aborting"
exit 1
fi
rm eval-warnings.log
nix-env -f $src \
--show-trace --argstr system "$platform" \
--arg config '{ allowAliases = false; }' \
--option experimental-features 'no-url-literals' \
-qa --drv-path --system-filter \* --system --meta --xml \
"''${opts[@]}" > /dev/null
done
touch $out
''

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,220 @@
# This file contains the GNU Octave add-on packages set.
# Each attribute is an Octave library.
# Expressions for the Octave libraries are supposed to be in `pkgs/development/octave-modules/<name>/default.nix`.
# When contributing a new package, if that package has a dependency on another
# octave package, then you DO NOT need to explicitly list it as such when
# performing the callPackage. It will be passed implicitly.
# In addition, try to use the same dependencies as the ones octave needs, which
# should ensure greater compatibility between Octave itself and its packages.
# Like python-packages.nix, packages from top-level.nix are not in the scope
# of the `callPackage` used for packages here. So, when we do need packages
# from outside, we can `inherit` them from `pkgs`.
{ pkgs
, lib
, stdenv
, fetchurl
, newScope
, octave
}:
with lib;
makeScope newScope (self:
let
inherit (octave) blas lapack gfortran python texinfo gnuplot;
callPackage = self.callPackage;
buildOctavePackage = callPackage ../development/interpreters/octave/build-octave-package.nix {
inherit lib stdenv;
inherit octave;
inherit computeRequiredOctavePackages;
};
wrapOctave = callPackage ../development/interpreters/octave/wrap-octave.nix {
inherit octave;
inherit (pkgs) makeSetupHook makeWrapper;
};
# Given a list of required Octave package derivations, get a list of
# ALL required Octave packages needed for the ones specified to run.
computeRequiredOctavePackages = drvs: let
# Check whether a derivation is an octave package
hasOctavePackage = drv: drv?isOctavePackage;
packages = filter hasOctavePackage drvs;
in unique (packages ++ concatLists (catAttrs "requiredOctavePackages" packages));
in {
inherit callPackage buildOctavePackage computeRequiredOctavePackages;
inherit (callPackage ../development/interpreters/octave/hooks { })
writeRequiredOctavePackagesHook;
arduino = callPackage ../development/octave-modules/arduino {
inherit (pkgs) arduino-core-unwrapped;
};
audio = callPackage ../development/octave-modules/audio { };
bim = callPackage ../development/octave-modules/bim { };
bsltl = callPackage ../development/octave-modules/bsltl { };
cgi = callPackage ../development/octave-modules/cgi { };
communications = callPackage ../development/octave-modules/communications { };
control = callPackage ../development/octave-modules/control { };
data-smoothing = callPackage ../development/octave-modules/data-smoothing { };
database = callPackage ../development/octave-modules/database { };
dataframe = callPackage ../development/octave-modules/dataframe { };
dicom = callPackage ../development/octave-modules/dicom { };
divand = callPackage ../development/octave-modules/divand { };
doctest = callPackage ../development/octave-modules/doctest { };
econometrics = callPackage ../development/octave-modules/econometrics { };
fem-fenics = callPackage ../development/octave-modules/fem-fenics {
# PLACEHOLDER until KarlJoad gets dolfin packaged.
dolfin = null;
ffc = null;
};
fits = callPackage ../development/octave-modules/fits { };
financial = callPackage ../development/octave-modules/financial { };
fpl = callPackage ../development/octave-modules/fpl { };
fuzzy-logic-toolkit = callPackage ../development/octave-modules/fuzzy-logic-toolkit { };
ga = callPackage ../development/octave-modules/ga { };
general = callPackage ../development/octave-modules/general {
nettle = pkgs.nettle;
};
generate_html = callPackage ../development/octave-modules/generate_html { };
geometry = callPackage ../development/octave-modules/geometry { };
gsl = callPackage ../development/octave-modules/gsl {
inherit (pkgs) gsl;
};
image = callPackage ../development/octave-modules/image { };
image-acquisition = callPackage ../development/octave-modules/image-acquisition { };
instrument-control = callPackage ../development/octave-modules/instrument-control { };
io = callPackage ../development/octave-modules/io {
inherit (octave) enableJava;
};
interval = callPackage ../development/octave-modules/interval { };
level-set = callPackage ../development/octave-modules/level-set { };
linear-algebra = callPackage ../development/octave-modules/linear-algebra { };
lssa = callPackage ../development/octave-modules/lssa { };
ltfat = callPackage ../development/octave-modules/ltfat {
inherit (octave) fftw fftwSinglePrec portaudio jdk;
inherit (pkgs) fftwFloat fftwLongDouble;
};
mapping = callPackage ../development/octave-modules/mapping { };
matgeom = callPackage ../development/octave-modules/matgeom { };
miscellaneous = callPackage ../development/octave-modules/miscellaneous { };
msh = callPackage ../development/octave-modules/msh {
# PLACEHOLDER until KarlJoad gets dolfin packaged.
dolfin = null;
};
mvn = callPackage ../development/octave-modules/mvn { };
nan = callPackage ../development/octave-modules/nan { };
ncarray = callPackage ../development/octave-modules/ncarray { };
netcdf = callPackage ../development/octave-modules/netcdf {
inherit (pkgs) netcdf;
};
nurbs = callPackage ../development/octave-modules/nurbs { };
ocl = callPackage ../development/octave-modules/ocl { };
octclip = callPackage ../development/octave-modules/octclip { };
octproj = callPackage ../development/octave-modules/octproj { };
optics = callPackage ../development/octave-modules/optics { };
optim = callPackage ../development/octave-modules/optim { };
optiminterp = callPackage ../development/octave-modules/optiminterp { };
parallel = callPackage ../development/octave-modules/parallel { };
quaternion = callPackage ../development/octave-modules/quaternion { };
queueing = callPackage ../development/octave-modules/queueing { };
signal = callPackage ../development/octave-modules/signal { };
sockets = callPackage ../development/octave-modules/sockets { };
sparsersb = callPackage ../development/octave-modules/sparsersb { };
stk = callPackage ../development/octave-modules/stk { };
splines = callPackage ../development/octave-modules/splines { };
statistics = callPackage ../development/octave-modules/statistics { };
strings = callPackage ../development/octave-modules/strings { };
struct = callPackage ../development/octave-modules/struct { };
symbolic = callPackage ../development/octave-modules/symbolic {
inherit (octave) python;
};
tisean = callPackage ../development/octave-modules/tisean { };
tsa = callPackage ../development/octave-modules/tsa { };
vibes = callPackage ../development/octave-modules/vibes {
vibes = null;
# TODO: Need to package vibes:
# https://github.com/ENSTABretagneRobotics/VIBES
};
video = callPackage ../development/octave-modules/video { };
vrml = callPackage ../development/octave-modules/vrml {
freewrl = null;
};
windows = callPackage ../development/octave-modules/windows { };
zeromq = callPackage ../development/octave-modules/zeromq {
inherit (pkgs) zeromq autoreconfHook;
};
})

View file

@ -0,0 +1,52 @@
# Used in the generation of package search database.
{
# Ensures no aliases are in the results.
allowAliases = false;
# Enable recursion into attribute sets that nix-env normally doesn't look into
# so that we can get a more complete picture of the available packages for the
# purposes of the index.
packageOverrides = super: with super; lib.mapAttrs (_: set: recurseIntoAttrs set) {
inherit (super)
apacheHttpdPackages
atomPackages
fdbPackages
fusePackages
gns3Packages
idrisPackages
nodePackages
nodePackages_latest
platformioPackages
quicklispPackagesClisp
quicklispPackagesSBCL
rPackages
roundcubePlugins
sconsPackages
sourceHanPackages
steamPackages
ut2004Packages
zabbix40
zabbix50
zeroadPackages
;
haskellPackages = super.haskellPackages // {
# mesos, which this depends on, has been removed from nixpkgs. We are keeping
# the error message for now, so users will get an error message they can make
# sense of, but need to work around it here.
# TODO(@sternenseemann): remove this after branch-off of 22.05, along with the
# override in configuration-nix.nix
hs-mesos = null;
};
# Make sure haskell.compiler is included, so alternative GHC versions show up,
# but don't add haskell.packages.* since they contain the same packages (at
# least by name) as haskellPackages.
haskell = super.haskell // {
compiler = recurseIntoAttrs super.haskell.compiler;
};
# This is an alias which we disallow by default; explicitly allow it
emacs28Packages = emacs28.pkgs;
};
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,620 @@
{ stdenv
, lib
, pkgs
, fetchgit
, phpPackage
, autoconf
, pkg-config
, aspell
, bzip2
, curl
, cyrus_sasl
, enchant1
, fetchpatch
, freetds
, freetype
, gd
, gettext
, gmp
, html-tidy
, icu64
, libXpm
, libffi
, libiconv
, libjpeg
, libpng
, libsodium
, libwebp
, libxml2
, libxslt
, libzip
, net-snmp
, oniguruma
, openldap
, openssl
, pam
, pcre2
, postgresql
, re2c
, readline
, rsync
, sqlite
, unixODBC
, uwimap
, valgrind
, zlib
}:
lib.makeScope pkgs.newScope (self: with self; {
buildPecl = import ../build-support/build-pecl.nix {
php = php.unwrapped;
inherit lib;
inherit (pkgs) stdenv autoreconfHook fetchurl re2c;
};
# Wrap mkDerivation to prepend pname with "php-" to make names consistent
# with how buildPecl does it and make the file easier to overview.
mkDerivation = { pname, ... }@args: pkgs.stdenv.mkDerivation (args // {
pname = "php-${pname}";
});
# Function to build an extension which is shipped as part of the php
# source, based on the php version.
#
# Name passed is the name of the extension and is automatically used
# to add the configureFlag "--enable-${name}", which can be overriden.
#
# Build inputs is used for extra deps that may be needed. And zendExtension
# will mark the extension as a zend extension or not.
mkExtension =
{ name
, configureFlags ? [ "--enable-${name}" ]
, internalDeps ? [ ]
, postPhpize ? ""
, buildInputs ? [ ]
, zendExtension ? false
, doCheck ? true
, ...
}@args: stdenv.mkDerivation ((builtins.removeAttrs args [ "name" ]) // {
pname = "php-${name}";
extensionName = name;
outputs = [ "out" "dev" ];
inherit (php.unwrapped) version src;
enableParallelBuilding = true;
nativeBuildInputs = [
php.unwrapped
autoconf
pkg-config
re2c
];
inherit configureFlags internalDeps buildInputs zendExtension doCheck;
preConfigurePhases = [
"cdToExtensionRootPhase"
];
cdToExtensionRootPhase = ''
# Go to extension source root.
cd "ext/${name}"
'';
preConfigure = ''
nullglobRestore=$(shopt -p nullglob)
shopt -u nullglob # To make ?-globbing work
# Some extensions have a config0.m4 or config9.m4
if [ -f config?.m4 ]; then
mv config?.m4 config.m4
fi
$nullglobRestore
phpize
${postPhpize}
${lib.concatMapStringsSep
"\n"
(dep: "mkdir -p ext; ln -s ${dep.dev}/include ext/${dep.extensionName}")
internalDeps
}
'';
checkPhase = ''
runHook preCheck
NO_INTERACTON=yes SKIP_PERF_SENSITIVE=yes make test
runHook postCheck
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib/php/extensions
cp modules/${name}.so $out/lib/php/extensions/${name}.so
mkdir -p $dev/include
${rsync}/bin/rsync -r --filter="+ */" \
--filter="+ *.h" \
--filter="- *" \
--prune-empty-dirs \
. $dev/include/
runHook postInstall
'';
meta = {
description = "PHP upstream extension: ${name}";
inherit (php.meta) maintainers homepage license;
};
});
php = phpPackage;
# This is a set of interactive tools based on PHP.
tools = {
box = callPackage ../development/php-packages/box { };
composer = callPackage ../development/php-packages/composer { };
deployer = callPackage ../development/php-packages/deployer { };
grumphp = callPackage ../development/php-packages/grumphp { };
phing = callPackage ../development/php-packages/phing { };
phive = callPackage ../development/php-packages/phive { };
php-cs-fixer = callPackage ../development/php-packages/php-cs-fixer { };
php-parallel-lint = callPackage ../development/php-packages/php-parallel-lint { };
phpcbf = callPackage ../development/php-packages/phpcbf { };
phpcs = callPackage ../development/php-packages/phpcs { };
phpmd = callPackage ../development/php-packages/phpmd { };
phpstan = callPackage ../development/php-packages/phpstan { };
psalm = callPackage ../development/php-packages/psalm { };
psysh = callPackage ../development/php-packages/psysh { };
};
# This is a set of PHP extensions meant to be used in php.buildEnv
# or php.withExtensions to extend the functionality of the PHP
# interpreter.
extensions = {
amqp = callPackage ../development/php-packages/amqp { };
apcu = callPackage ../development/php-packages/apcu { };
apcu_bc = callPackage ../development/php-packages/apcu_bc { };
ast = callPackage ../development/php-packages/ast { };
blackfire = pkgs.callPackage ../development/tools/misc/blackfire/php-probe.nix { inherit php; };
couchbase = callPackage ../development/php-packages/couchbase { };
datadog_trace = callPackage ../development/php-packages/datadog_trace { };
ds = callPackage ../development/php-packages/ds { };
event = callPackage ../development/php-packages/event { };
gnupg = callPackage ../development/php-packages/gnupg { };
grpc = callPackage ../development/php-packages/grpc { };
igbinary = callPackage ../development/php-packages/igbinary { };
imagick = callPackage ../development/php-packages/imagick { };
mailparse = callPackage ../development/php-packages/mailparse { };
maxminddb = callPackage ../development/php-packages/maxminddb { };
memcached = callPackage ../development/php-packages/memcached { };
mongodb = callPackage ../development/php-packages/mongodb { };
oci8 = callPackage ../development/php-packages/oci8 ({
version = "2.2.0";
sha256 = "0jhivxj1nkkza4h23z33y7xhffii60d7dr51h1czjk10qywl7pyd";
} // lib.optionalAttrs (lib.versionAtLeast php.version "8.0") {
version = "3.0.1";
sha256 = "108ds92620dih5768z19hi0jxfa7wfg5hdvyyvpapir87c0ap914";
});
openswoole = callPackage ../development/php-packages/openswoole { };
pdlib = callPackage ../development/php-packages/pdlib { };
pcov = callPackage ../development/php-packages/pcov { };
pdo_oci = buildPecl rec {
inherit (php.unwrapped) src version;
pname = "pdo_oci";
sourceRoot = "php-${version}/ext/pdo_oci";
buildInputs = [ pkgs.oracle-instantclient ];
configureFlags = [ "--with-pdo-oci=instantclient,${pkgs.oracle-instantclient.lib}/lib" ];
internalDeps = [ php.extensions.pdo ];
postPatch = ''
sed -i -e 's|OCISDKMANINC=`.*$|OCISDKMANINC="${pkgs.oracle-instantclient.dev}/include"|' config.m4
'';
meta.maintainers = lib.teams.php.members;
};
pdo_sqlsrv = callPackage ../development/php-packages/pdo_sqlsrv { };
php_excel = callPackage ../development/php-packages/php_excel { };
pinba = callPackage ../development/php-packages/pinba { };
protobuf = callPackage ../development/php-packages/protobuf { };
rdkafka = callPackage ../development/php-packages/rdkafka { };
redis = callPackage ../development/php-packages/redis { };
smbclient = callPackage ../development/php-packages/smbclient { };
snuffleupagus = callPackage ../development/php-packages/snuffleupagus { };
sqlsrv = callPackage ../development/php-packages/sqlsrv { };
swoole = callPackage ../development/php-packages/swoole { };
xdebug = callPackage ../development/php-packages/xdebug { };
yaml = callPackage ../development/php-packages/yaml { };
} // (
let
# This list contains build instructions for different modules that one may
# want to build.
#
# These will be passed as arguments to mkExtension above.
extensionData = [
{ name = "bcmath"; }
{ name = "bz2"; buildInputs = [ bzip2 ]; configureFlags = [ "--with-bz2=${bzip2.dev}" ]; }
{ name = "calendar"; }
{ name = "ctype"; }
{
name = "curl";
buildInputs = [ curl ];
configureFlags = [ "--with-curl=${curl.dev}" ];
doCheck = false;
}
{ name = "dba"; }
{
name = "dom";
buildInputs = [ libxml2 ];
configureFlags = [
"--enable-dom"
];
}
{
name = "enchant";
buildInputs = [ enchant1 ];
configureFlags = [ "--with-enchant=${enchant1}" ];
# enchant1 doesn't build on darwin.
enable = (!stdenv.isDarwin);
doCheck = false;
}
{ name = "exif"; doCheck = false; }
{ name = "ffi"; buildInputs = [ libffi ]; }
{ name = "fileinfo"; buildInputs = [ pcre2 ]; }
{ name = "filter"; buildInputs = [ pcre2 ]; }
{ name = "ftp"; buildInputs = [ openssl ]; }
{
name = "gd";
buildInputs = [ zlib gd ];
configureFlags = [
"--enable-gd"
"--with-external-gd=${gd.dev}"
"--enable-gd-jis-conv"
];
doCheck = false;
}
{
name = "gettext";
buildInputs = [ gettext ];
postPhpize = ''substituteInPlace configure --replace 'as_fn_error $? "Cannot locate header file libintl.h" "$LINENO" 5' ':' '';
configureFlags = [ "--with-gettext=${gettext}" ];
}
{
name = "gmp";
buildInputs = [ gmp ];
configureFlags = [ "--with-gmp=${gmp.dev}" ];
}
{
name = "iconv";
configureFlags = [
"--with-iconv${lib.optionalString stdenv.isDarwin "=${libiconv}"}"
];
patches = lib.optionals (lib.versionOlder php.version "8.0") [
# Header path defaults to FHS location, preventing the configure script from detecting errno support.
(fetchpatch {
url = "https://github.com/fossar/nix-phps/raw/263861a8c9bdafd7abe44db6db4ef0179643680c/pkgs/iconv-header-path.patch";
sha256 = "7GHnEUu+hcsQ4h3itDwk6p46ZKfib9JZ2XpWlXrdn6E=";
})
];
doCheck = false;
}
{
name = "imap";
buildInputs = [ uwimap openssl pam pcre2 ];
configureFlags = [ "--with-imap=${uwimap}" "--with-imap-ssl" ];
# uwimap doesn't build on darwin.
enable = (!stdenv.isDarwin);
}
{
name = "intl";
buildInputs = [ icu64 ];
}
{ name = "json"; enable = lib.versionOlder php.version "8.0"; }
{
name = "ldap";
buildInputs = [ openldap cyrus_sasl ];
configureFlags = [
"--with-ldap"
"LDAP_DIR=${openldap.dev}"
"LDAP_INCDIR=${openldap.dev}/include"
"LDAP_LIBDIR=${openldap.out}/lib"
] ++ lib.optionals stdenv.isLinux [
"--with-ldap-sasl=${cyrus_sasl.dev}"
];
doCheck = false;
}
{
name = "mbstring";
buildInputs = [ oniguruma ] ++ lib.optionals (lib.versionAtLeast php.version "8.0") [
pcre2
];
doCheck = false;
}
{
name = "mysqli";
internalDeps = [ php.extensions.mysqlnd ];
configureFlags = [ "--with-mysqli=mysqlnd" "--with-mysql-sock=/run/mysqld/mysqld.sock" ];
doCheck = false;
}
{
name = "mysqlnd";
buildInputs = [ zlib openssl ];
# The configure script doesn't correctly add library link
# flags, so we add them to the variable used by the Makefile
# when linking.
MYSQLND_SHARED_LIBADD = "-lssl -lcrypto";
# The configure script builds a config.h which is never
# included. Let's include it in the main header file
# included by all .c-files.
patches = [
(pkgs.writeText "mysqlnd_config.patch" ''
--- a/ext/mysqlnd/mysqlnd.h
+++ b/ext/mysqlnd/mysqlnd.h
@@ -1,3 +1,6 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
/*
+----------------------------------------------------------------------+
| Copyright (c) The PHP Group |
'')
];
}
# oci8 (7.4, 7.3, 7.2)
# odbc (7.4, 7.3, 7.2)
{
name = "opcache";
buildInputs = [ pcre2 ] ++ lib.optionals (!stdenv.isDarwin && lib.versionAtLeast php.version "8.0") [
valgrind.dev
];
zendExtension = true;
# Tests launch the builtin webserver.
__darwinAllowLocalNetworking = true;
}
{
name = "openssl";
buildInputs = [ openssl ];
configureFlags = [ "--with-openssl" ];
doCheck = false;
}
{ name = "pcntl"; }
{ name = "pdo"; doCheck = false; }
{
name = "pdo_dblib";
internalDeps = [ php.extensions.pdo ];
configureFlags = [ "--with-pdo-dblib=${freetds}" ];
# Doesn't seem to work on darwin.
enable = (!stdenv.isDarwin);
doCheck = false;
}
# pdo_firebird (7.4, 7.3, 7.2)
{
name = "pdo_mysql";
internalDeps = with php.extensions; [ pdo mysqlnd ];
configureFlags = [ "--with-pdo-mysql=mysqlnd" "PHP_MYSQL_SOCK=/run/mysqld/mysqld.sock" ];
doCheck = false;
}
# pdo_oci (7.4, 7.3, 7.2)
{
name = "pdo_odbc";
internalDeps = [ php.extensions.pdo ];
configureFlags = [ "--with-pdo-odbc=unixODBC,${unixODBC}" ];
doCheck = false;
}
{
name = "pdo_pgsql";
internalDeps = [ php.extensions.pdo ];
configureFlags = [ "--with-pdo-pgsql=${postgresql}" ];
doCheck = false;
}
{
name = "pdo_sqlite";
internalDeps = [ php.extensions.pdo ];
buildInputs = [ sqlite ];
configureFlags = [ "--with-pdo-sqlite=${sqlite.dev}" ];
doCheck = false;
}
{
name = "pgsql";
buildInputs = [ pcre2 ];
configureFlags = [ "--with-pgsql=${postgresql}" ];
doCheck = false;
}
{ name = "posix"; doCheck = false; }
{ name = "pspell"; configureFlags = [ "--with-pspell=${aspell}" ]; }
{
name = "readline";
buildInputs = [
readline
];
configureFlags = [
"--with-readline=${readline.dev}"
];
postPatch = ''
# Fix `--with-readline` option not being available.
# `PHP_ALWAYS_SHARED` generated by phpize enables all options
# without the possibility to override them. But when `--with-libedit`
# is enabled, `--with-readline` is not registered.
echo '
AC_DEFUN([PHP_ALWAYS_SHARED],[
test "[$]$1" != "no" && ext_shared=yes
])dnl
' | cat - ext/readline/config.m4 > ext/readline/config.m4.tmp
mv ext/readline/config.m4{.tmp,}
'';
doCheck = false;
}
{ name = "session"; doCheck = lib.versionOlder php.version "8.0"; }
{ name = "shmop"; }
{
name = "simplexml";
buildInputs = [ libxml2 pcre2 ];
configureFlags = [
"--enable-simplexml"
];
}
{
name = "snmp";
buildInputs = [ net-snmp openssl ];
configureFlags = [ "--with-snmp" ];
# net-snmp doesn't build on darwin.
enable = (!stdenv.isDarwin);
doCheck = false;
}
{
name = "soap";
buildInputs = [ libxml2 ];
configureFlags = [
"--enable-soap"
];
doCheck = false;
}
{
name = "sockets";
doCheck = false;
}
{ name = "sodium"; buildInputs = [ libsodium ]; }
{ name = "sqlite3"; buildInputs = [ sqlite ]; }
{ name = "sysvmsg"; }
{ name = "sysvsem"; }
{ name = "sysvshm"; }
{ name = "tidy"; configureFlags = [ "--with-tidy=${html-tidy}" ]; doCheck = false; }
{
name = "tokenizer";
patches = lib.optional (lib.versionAtLeast php.version "8.1")
../development/interpreters/php/fix-tokenizer-php81.patch;
}
{
name = "xml";
buildInputs = [ libxml2 ];
configureFlags = [
"--enable-xml"
];
doCheck = false;
}
{
name = "xmlreader";
buildInputs = [ libxml2 ];
internalDeps = [ php.extensions.dom ];
NIX_CFLAGS_COMPILE = [ "-I../.." "-DHAVE_DOM" ];
doCheck = false;
configureFlags = [
"--enable-xmlreader"
];
}
{
name = "xmlrpc";
buildInputs = [ libxml2 libiconv ];
# xmlrpc was unbundled in 8.0 https://php.watch/versions/8.0/xmlrpc
enable = lib.versionOlder php.version "8.0";
configureFlags = [
"--with-xmlrpc"
];
}
{
name = "xmlwriter";
buildInputs = [ libxml2 ];
configureFlags = [
"--enable-xmlwriter"
];
}
{
name = "xsl";
buildInputs = [ libxslt libxml2 ];
doCheck = lib.versionOlder php.version "8.0";
configureFlags = [ "--with-xsl=${libxslt.dev}" ];
}
{ name = "zend_test"; }
{
name = "zip";
buildInputs = [ libzip pcre2 ];
configureFlags = [
"--with-zip"
];
doCheck = false;
}
{
name = "zlib";
buildInputs = [ zlib ];
configureFlags = [
"--with-zlib"
];
}
];
# Convert the list of attrs:
# [ { name = <name>; ... } ... ]
# to a list of
# [ { name = <name>; value = <extension drv>; } ... ]
#
# which we later use listToAttrs to make all attrs available by name.
#
# Also filter out extensions based on the enable property.
namedExtensions = builtins.map
(drv: {
name = drv.name;
value = mkExtension drv;
})
(builtins.filter (i: i.enable or true) extensionData);
# Produce the final attribute set of all extensions defined.
in
builtins.listToAttrs namedExtensions
);
})

View file

@ -0,0 +1,174 @@
lib: self: super:
with self;
let
# Removing recurseForDerivation prevents derivations of aliased attribute
# set to appear while listing all the packages available.
removeRecurseForDerivations = alias: with lib;
if alias.recurseForDerivations or false then
removeAttrs alias ["recurseForDerivations"]
else alias;
# Disabling distribution prevents top-level aliases for non-recursed package
# sets from building on Hydra.
removeDistribute = alias: with lib;
if isDerivation alias then
dontDistribute alias
else alias;
# Make sure that we are not shadowing something from
# python-packages.nix.
checkInPkgs = n: alias: if builtins.hasAttr n super
then throw "Alias ${n} is still in python-packages.nix"
else alias;
mapAliases = aliases:
lib.mapAttrs (n: alias: removeDistribute
(removeRecurseForDerivations
(checkInPkgs n alias)))
aliases;
in
### Deprecated aliases - for backward compatibility
mapAliases ({
aioh2 = throw "aioh2 has been removed because it is abandoned and broken."; # Added 2022-03-30
ansible-base = throw "ansible-base has been removed, because it is end of life"; # added 2022-03-30
anyjson = throw "anyjson has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
argon2_cffi = argon2-cffi; # added 2022-05-09
asyncio-nats-client = nats-py; # added 2022-02-08
Babel = babel; # added 2022-05-06
bitcoin-price-api = throw "bitcoin-price-api has been removed, it was using setuptools 2to3 translation feautre, which has been removed in setuptools 58"; # added 2022-02-15
blockdiagcontrib-cisco = throw "blockdiagcontrib-cisco is not compatible with blockdiag 2.0.0 and has been removed."; # added 2020-11-29
bt_proximity = bt-proximity; # added 2021-07-02
carrot = throw "carrot has been removed, as its development was discontinued in 2012"; # added 2022-01-18
class-registry = phx-class-registry; # added 2021-10-05
ConfigArgParse = configargparse; # added 2021-03-18
cozy = throw "cozy was removed because it was not actually https://pypi.org/project/Cozy/."; # added 2022-01-14
cryptography_vectors = "cryptography_vectors is no longer exposed in python*Packages because it is used for testing cryptography only."; # Added 2022-03-23
dask-xgboost = throw "dask-xgboost was removed because its features are available in xgboost"; # added 2022-05-24
dateutil = python-dateutil; # added 2021-07-03
demjson = throw "demjson has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
detox = throw "detox is no longer maintained, and was broken since may 2019"; # added 2020-07-04
dftfit = throw "dftfit dependency lammps-cython no longer builds"; # added 2021-07-04
diff_cover = diff-cover; # added 2021-07-02
discogs_client = discogs-client; # added 2021-07-02
djangorestframework-jwt = drf-jwt; # added 2021-07-20
django_2 = throw "Django 2 has reached it's projected EOL in 2022/04 and has therefore been removed."; # added 2022-03-05
django_appconf = django-appconf; # added 2022-03-03
django_environ = django-environ; # added 2021-12-25
django_extensions = django-extensions; # added 2022-01-09
django_guardian = django-guardian; # added 2022-05-19
django_modelcluster = django-modelcluster; # added 2022-04-02
django_polymorphic = django-polymorphic; # added 2022-05-24
django_redis = django-redis; # added 2021-10-11
django_taggit = django-taggit; # added 2021-10-11
dns = dnspython; # added 2017-12-10
dogpile_cache = dogpile-cache; # added 2021-10-28
dogpile-core = throw "dogpile-core is no longer maintained, use dogpile-cache instead"; # added 2021-11-20
eebrightbox = throw "eebrightbox is unmaintained upstream and has therefore been removed"; # added 2022-02-03
fake_factory = throw "fake_factory has been removed because it is unused and deprecated by upstream since 2016."; # added 2022-05-30
faulthandler = throw "faulthandler is built into ${python.executable}"; # added 2021-07-12
flask_testing = flask-testing; # added 2022-04-25
flask_wtf = flask-wtf; # added 2022-05-24
garminconnect-ha = garminconnect; # added 2022-02-05
gitdb2 = throw "gitdb2 has been deprecated, use gitdb instead."; # added 2020-03-14
glances = throw "glances has moved to pkgs.glances"; # added 2020-20-28
google_api_python_client = google-api-python-client; # added 2021-03-19
googleapis_common_protos = googleapis-common-protos; # added 2021-03-19
grpc_google_iam_v1 = grpc-google-iam-v1; # added 2021-08-21
ha-av = throw "ha-av was removed, because it is no longer maintained"; # added 2022-04-06
HAP-python = hap-python; # added 2021-06-01
hbmqtt = throw "hbmqtt was removed because it is no longer maintained"; # added 2021-11-07
hdlparse = throw "hdlparse has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
hyperkitty = throw "Please use pkgs.mailmanPackages.hyperkitty"; # added 2022-04-29
IMAPClient = imapclient; # added 2021-10-28
jupyter_client = jupyter-client; # added 2021-10-15
Keras = keras; # added 2021-11-25
lammps-cython = throw "lammps-cython no longer builds and is unmaintained"; # added 2021-07-04
loo-py = loopy; # added 2022-05-03
Markups = markups; # added 2022-02-14
MechanicalSoup = mechanicalsoup; # added 2021-06-01
memcached = python-memcached; # added 2022-05-06
mailman = throw "Please use pkgs.mailman"; # added 2022-04-29
mailman-hyperkitty = throw "Please use pkgs.mailmanPackages.mailman-hyperkitty"; # added 2022-04-29
mailman-web = throw "Please use pkgs.mailman-web"; # added 2022-04-29
net2grid = gridnet; # add 2022-04-22
nose-cover3 = throw "nose-cover3 has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-02-16
pam = python-pam; # added 2020-09-07.
PasteDeploy = pastedeploy; # added 2021-10-07
pathpy = path; # added 2022-04-12
pdfminer = pdfminer-six; # added 2022-05-25
pep257 = pydocstyle; # added 2022-04-12
poster3 = throw "poster3 is unmaintained and source is no longer available"; # added 2023-05-29
postorius = throw "Please use pkgs.mailmanPackages.postorius"; # added 2022-04-29
powerlineMemSegment = powerline-mem-segment; # added 2021-10-08
privacyidea = throw "privacyidea has been renamed to pkgs.privacyidea"; # added 2021-06-20
prometheus_client = prometheus-client; # added 2021-06-10
prompt_toolkit = prompt-toolkit; # added 2021-07-22
pur = throw "pur has been renamed to pkgs.pur"; # added 2021-11-08
pydrive = throw "pydrive is broken and deprecated and has been replaced with pydrive2."; # added 2022-06-01
pyGtkGlade = throw "Glade support for pygtk has been removed"; # added 2022-01-15
pycallgraph = throw "pycallgraph has been removed, it was using setuptools 2to3 translation feature, which has been removed in setuptools 58"; # added 2022-01-18
pyialarmxr = pyialarmxr-homeassistant; # added 2022-06-07
pylibgen = throw "pylibgen is unmaintained upstreamed, and removed from nixpkgs"; # added 2020-06-20
pymc3 = pymc; # added 2022-06-05, module was rename starting with 4.0.0
pymssql = throw "pymssql has been abandoned upstream."; # added 2020-05-04
pyreadability = readability-lxml; # added 2022-05-24
pysmart-smartx = pysmart; # added 2021-10-22
pyspotify = throw "pyspotify has been removed because Spotify stopped supporting libspotify"; # added 2022-05-29
pytest_6 = pytest; # added 2022-02-10
pytestcov = pytest-cov; # added 2021-01-04
pytest-pep8 = pytestpep8; # added 2021-01-04
pytest-pep257 = throw "pytest-pep257 was removed, as the pep257 package was migrated into pycodestyle"; # added 2022-04-12
pytest-pythonpath = throw "pytest-pythonpath is obsolete as of pytest 7.0.0 and has been removed"; # added 2022-03-09
pytestpep8 = throw "pytestpep8 was removed because it is abandoned and no longer compatible with pytest v6.0"; # added 2020-12-10
pytestquickcheck = pytest-quickcheck; # added 2021-07-20
pytestrunner = pytest-runner; # added 2021-01-04
python-igraph = igraph; # added 2021-11-11
python-lz4 = lz4; # added 2018-06-01
python_magic = python-magic; # added 2022-05-07
python_mimeparse = python-mimeparse; # added 2021-10-31
python-subunit = subunit; # added 2021-09-10
pytest_xdist = pytest-xdist; # added 2021-01-04
python_simple_hipchat = python-simple-hipchat; # added 2021-07-21
pytwitchapi = twitchapi; # added 2022-03-07
qasm2image = throw "qasm2image is no longer maintained (since November 2018), and is not compatible with the latest pythonPackages.qiskit versions."; # added 2020-12-09
qiskit-aqua = throw "qiskit-aqua has been removed due to deprecation, with its functionality moved to different qiskit packages";
rdflib-jsonld = throw "rdflib-jsonld is not compatible with rdflib 6"; # added 2021-11-05
repeated_test = throw "repeated_test is no longer maintained"; # added 2022-01-11
requests_oauthlib = requests-oauthlib; # added 2022-02-12
requests_toolbelt = requests-toolbelt; # added 2017-09-26
roboschool = throw "roboschool is deprecated in favor of PyBullet and has been removed"; # added 2022-01-15
ROPGadget = ropgadget; # added 2021-07-06
rotate-backups = throw "rotate-backups was removed in favor of the top-level rotate-backups"; # added 2021-07-01
ruamel_base = ruamel-base; # added 2021-11-01
ruamel_yaml = ruamel-yaml; # added 2021-11-01
ruamel_yaml_clib = ruamel-yaml-clib; # added 2021-11-01
sapi-python-client = kbcstorage; # added 2022-04-20
scikitlearn = scikit-learn; # added 2021-07-21
selectors34 = throw "selectors34 has been removed: functionality provided by Python itself; archived by upstream."; # added 2021-06-10
setuptools_scm = setuptools-scm; # added 2021-06-03
sharkiqpy = sharkiq; # added 2022-05-21
smart_open = smart-open; # added 2021-03-14
smmap2 = throw "smmap2 has been deprecated, use smmap instead."; # added 2020-03-14
SPARQLWrapper = sparqlwrapper;
sphinxcontrib_plantuml = sphinxcontrib-plantuml; # added 2021-08-02
sqlalchemy_migrate = sqlalchemy-migrate; # added 2021-10-28
SQLAlchemy-ImageAttach = throw "sqlalchemy-imageattach has been removed as it is incompatible with sqlalchemy 1.4 and unmaintained"; # added 2022-04-23
tensorflow-bin_2 = tensorflow-bin; # added 2021-11-25
tensorflow-build_2 = tensorflow-build; # added 2021-11-25
tensorflow-estimator_2 = tensorflow-estimator; # added 2021-11-25
tensorflow-tensorboard = tensorboard; # added 2022-03-06
tensorflow-tensorboard_2 = tensorflow-tensorboard; # added 2021-11-25
tvnamer = throw "tvnamer was moved to pkgs.tvnamer"; # added 2021-07-05
types-cryptography = throw "types-cryptography has been removed because it is obsolete since cryptography version 3.4.4."; # added 2022-05-30
types-paramiko = throw "types-paramiko has been removed because it was unused."; # added 2022-05-30
WazeRouteCalculator = wazeroutecalculator; # added 2021-09-29
webapp2 = throw "webapp2 is unmaintained since 2012"; # added 2022-05-29
websocket_client = websocket-client; # added 2021-06-15
xenomapper = throw "xenomapper was moved to pkgs.xenomapper"; # added 2021-12-31
zc-buildout221 = zc-buildout; # added 2021-07-21
zc_buildout_nix = throw "zc_buildout_nix was pinned to a version no longer compatible with other modules";
})

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,147 @@
# Extension with Python 2 packages that is overlayed on top
# of the Python 3 packages set. This way, Python 2+3 compatible
# packages can still be used.
self: super:
with self; with super; {
bootstrapped-pip = callPackage ../development/python2-modules/bootstrapped-pip { };
boto3 = callPackage ../development/python2-modules/boto3 {};
botocore = callPackage ../development/python2-modules/botocore {};
certifi = callPackage ../development/python2-modules/certifi { };
chardet = callPackage ../development/python2-modules/chardet { };
cheetah = callPackage ../development/python2-modules/cheetah { };
configparser = callPackage ../development/python2-modules/configparser { };
construct = callPackage ../development/python2-modules/construct { };
contextlib2 = callPackage ../development/python2-modules/contextlib2 { };
coverage = callPackage ../development/python2-modules/coverage { };
enum = callPackage ../development/python2-modules/enum { };
filelock = callPackage ../development/python2-modules/filelock { };
futures = callPackage ../development/python2-modules/futures { };
google-apputils = callPackage ../development/python2-modules/google-apputils { };
gtkme = callPackage ../development/python2-modules/gtkme { };
httpretty = callPackage ../development/python2-modules/httpretty { };
hypothesis = callPackage ../development/python2-modules/hypothesis { };
idna = callPackage ../development/python2-modules/idna { };
importlib-metadata = callPackage ../development/python2-modules/importlib-metadata { };
jinja2 = callPackage ../development/python2-modules/jinja2 { };
marisa = callPackage ../development/python2-modules/marisa {
inherit (pkgs) marisa;
};
markdown = callPackage ../development/python2-modules/markdown { };
markupsafe = callPackage ../development/python2-modules/markupsafe { };
mock = callPackage ../development/python2-modules/mock { };
more-itertools = callPackage ../development/python2-modules/more-itertools { };
mutagen = callPackage ../development/python2-modules/mutagen { };
numpy = callPackage ../development/python2-modules/numpy { };
packaging = callPackage ../development/python2-modules/packaging { };
pillow = callPackage ../development/python2-modules/pillow {
inherit (pkgs) freetype libjpeg zlib libtiff libwebp tcl lcms2 tk;
inherit (pkgs.xorg) libX11;
};
pip = callPackage ../development/python2-modules/pip { };
pluggy = callPackage ../development/python2-modules/pluggy { };
prettytable = callPackage ../development/python2-modules/prettytable { };
protobuf = callPackage ../development/python2-modules/protobuf {
disabled = isPyPy;
protobuf = pkgs.protobuf3_17; # last version compatible with Python 2
};
pycairo = callPackage ../development/python2-modules/pycairo {
inherit (pkgs.buildPackages) meson;
};
pygments = callPackage ../development/python2-modules/Pygments { };
pygobject3 = callPackage ../development/python2-modules/pygobject {
inherit (pkgs) meson;
};
pygtk = callPackage ../development/python2-modules/pygtk { };
pyparsing = callPackage ../development/python2-modules/pyparsing { };
pyroma = callPackage ../development/python2-modules/pyroma { };
pysqlite = callPackage ../development/python2-modules/pysqlite { };
pytest = pytest_4;
pytest_4 = callPackage
../development/python2-modules/pytest {
# hypothesis tests require pytest that causes dependency cycle
hypothesis = self.hypothesis.override {
doCheck = false;
};
};
pytest-runner = callPackage ../development/python2-modules/pytest-runner { };
pytest-xdist = callPackage ../development/python2-modules/pytest-xdist { };
pyyaml = callPackage ../development/python2-modules/pyyaml { };
qpid-python = callPackage ../development/python2-modules/qpid-python { };
recoll = disabled super.recoll;
rivet = disabled super.rivet;
rpm = disabled super.rpm;
s3transfer = callPackage ../development/python2-modules/s3transfer { };
scandir = callPackage ../development/python2-modules/scandir { };
sequoia = disabled super.sequoia;
setuptools = callPackage ../development/python2-modules/setuptools { };
setuptools-scm = callPackage ../development/python2-modules/setuptools-scm { };
sphinxcontrib-websupport = callPackage ../development/python2-modules/sphinxcontrib-websupport { };
sphinx = callPackage ../development/python2-modules/sphinx { };
TurboCheetah = callPackage ../development/python2-modules/TurboCheetah { };
typing = callPackage ../development/python2-modules/typing { };
zeek = disabled super.zeek;
zipp = callPackage ../development/python2-modules/zipp { };
}

View file

@ -0,0 +1,239 @@
# Qt packages set.
#
# Attributes in this file are packages requiring Qt and will be made available
# for every Qt version. Qt applications are called from `all-packages.nix` via
# this file.
{ lib
, pkgs
, qt5
}:
(lib.makeScope pkgs.newScope ( self:
let
libsForQt5 = self;
callPackage = self.callPackage;
kdeFrameworks = let
mkFrameworks = import ../development/libraries/kde-frameworks;
attrs = {
inherit libsForQt5;
inherit (pkgs) lib fetchurl;
};
in (lib.makeOverridable mkFrameworks attrs);
plasma5 = let
mkPlasma5 = import ../desktops/plasma-5;
attrs = {
inherit libsForQt5;
inherit (pkgs) config lib fetchurl;
gconf = pkgs.gnome2.GConf;
inherit (pkgs) gsettings-desktop-schemas;
};
in (lib.makeOverridable mkPlasma5 attrs);
kdeGear = let
mkGear = import ../applications/kde;
attrs = {
inherit libsForQt5;
inherit (pkgs) lib fetchurl;
};
in (lib.makeOverridable mkGear attrs);
plasmaMobileGear = let
mkPlamoGear = import ../applications/plasma-mobile;
attrs = {
inherit libsForQt5;
inherit (pkgs) lib fetchurl;
};
in (lib.makeOverridable mkPlamoGear attrs);
mauiPackages = let
mkMaui = import ../applications/maui;
attrs = {
inherit libsForQt5;
inherit (pkgs) lib fetchurl;
};
in (lib.makeOverridable mkMaui attrs);
in (kdeFrameworks // plasmaMobileGear // plasma5 // plasma5.thirdParty // kdeGear // mauiPackages // qt5 // {
inherit kdeFrameworks plasmaMobileGear plasma5 kdeGear mauiPackages qt5;
# Alias for backwards compatibility. Added 2021-05-07.
kdeApplications = kdeGear;
### LIBRARIES
accounts-qt = callPackage ../development/libraries/accounts-qt { };
alkimia = callPackage ../development/libraries/alkimia { };
applet-window-buttons = callPackage ../development/libraries/applet-window-buttons { };
appstream-qt = callPackage ../development/libraries/appstream/qt.nix { };
dxflib = callPackage ../development/libraries/dxflib {};
drumstick = callPackage ../development/libraries/drumstick { };
fcitx-qt5 = callPackage ../tools/inputmethods/fcitx/fcitx-qt5.nix { };
fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { };
qgpgme = callPackage ../development/libraries/gpgme { };
grantlee = callPackage ../development/libraries/grantlee/5 { };
qtcurve = callPackage ../data/themes/qtcurve {};
herqq = callPackage ../development/libraries/herqq { };
kdb = callPackage ../development/libraries/kdb { };
kde2-decoration = callPackage ../data/themes/kde2 { };
kcolorpicker = callPackage ../development/libraries/kcolorpicker { };
kdiagram = callPackage ../development/libraries/kdiagram { };
kdsoap = callPackage ../development/libraries/kdsoap { };
kf5gpgmepp = callPackage ../development/libraries/kf5gpgmepp { };
kirigami-addons = libsForQt5.callPackage ../development/libraries/kirigami-addons { };
kimageannotator = callPackage ../development/libraries/kimageannotator { };
kproperty = callPackage ../development/libraries/kproperty { };
kpeoplevcard = callPackage ../development/libraries/kpeoplevcard { };
kreport = callPackage ../development/libraries/kreport { };
kquickimageedit = callPackage ../development/libraries/kquickimageedit { };
kweathercore = libsForQt5.callPackage ../development/libraries/kweathercore { };
ldutils = callPackage ../development/libraries/ldutils { };
libcommuni = callPackage ../development/libraries/libcommuni { };
libdbusmenu = callPackage ../development/libraries/libdbusmenu-qt/qt-5.5.nix { };
liblastfm = callPackage ../development/libraries/liblastfm { };
libopenshot = callPackage ../applications/video/openshot-qt/libopenshot.nix { };
packagekit-qt = callPackage ../tools/package-management/packagekit/qt.nix { };
libopenshot-audio = callPackage ../applications/video/openshot-qt/libopenshot-audio.nix {
inherit (pkgs.darwin.apple_sdk.frameworks) AGL Cocoa Foundation;
};
libqglviewer = callPackage ../development/libraries/libqglviewer {
inherit (pkgs.darwin.apple_sdk.frameworks) AGL;
};
libqofono = callPackage ../development/libraries/libqofono { };
libqtav = callPackage ../development/libraries/libqtav { };
libqaccessibilityclient = callPackage ../development/libraries/libqaccessibilityclient { };
kpmcore = callPackage ../development/libraries/kpmcore { };
mapbox-gl-native = libsForQt5.callPackage ../development/libraries/mapbox-gl-native { };
mapbox-gl-qml = libsForQt5.callPackage ../development/libraries/mapbox-gl-qml { };
maplibre-gl-native = callPackage ../development/libraries/maplibre-gl-native { };
mlt = callPackage ../development/libraries/mlt/qt-5.nix { };
phonon = callPackage ../development/libraries/phonon { };
phonon-backend-gstreamer = callPackage ../development/libraries/phonon/backends/gstreamer.nix { };
phonon-backend-vlc = callPackage ../development/libraries/phonon/backends/vlc.nix { };
plasma-wayland-protocols = callPackage ../development/libraries/plasma-wayland-protocols { };
polkit-qt = callPackage ../development/libraries/polkit-qt-1 { };
poppler = callPackage ../development/libraries/poppler {
lcms = pkgs.lcms2;
qt5Support = true;
suffix = "qt5";
};
pulseaudio-qt = callPackage ../development/libraries/pulseaudio-qt { };
qca-qt5 = callPackage ../development/libraries/qca-qt5 { };
# Until macOS SDK allows for Qt 5.15, darwin is limited to 2.3.2
qca-qt5_2_3_2 = callPackage ../development/libraries/qca-qt5/2.3.2.nix { };
qcoro = callPackage ../development/libraries/qcoro { };
qcsxcad = callPackage ../development/libraries/science/electronics/qcsxcad { };
qjson = callPackage ../development/libraries/qjson { };
qmltermwidget = callPackage ../development/libraries/qmltermwidget {
inherit (pkgs.darwin.apple_sdk.libs) utmp;
};
qmlbox2d = callPackage ../development/libraries/qmlbox2d { };
qoauth = callPackage ../development/libraries/qoauth { };
qscintilla = callPackage ../development/libraries/qscintilla { };
qt5ct = callPackage ../tools/misc/qt5ct { };
qtfeedback = callPackage ../development/libraries/qtfeedback { };
qtforkawesome = callPackage ../development/libraries/qtforkawesome { };
qtutilities = callPackage ../development/libraries/qtutilities { };
qtinstaller = callPackage ../development/libraries/qtinstaller { };
qtkeychain = callPackage ../development/libraries/qtkeychain {
inherit (pkgs.darwin.apple_sdk.frameworks) CoreFoundation Security;
};
qtmpris = callPackage ../development/libraries/qtmpris { };
qtpbfimageplugin = callPackage ../development/libraries/qtpbfimageplugin { };
qtstyleplugins = callPackage ../development/libraries/qtstyleplugins { };
qtstyleplugin-kvantum = callPackage ../development/libraries/qtstyleplugin-kvantum { };
quazip = callPackage ../development/libraries/quazip { };
qwt = callPackage ../development/libraries/qwt/default.nix { };
qwt6_1 = callPackage ../development/libraries/qwt/6_1.nix { };
soqt = callPackage ../development/libraries/soqt { };
telepathy = callPackage ../development/libraries/telepathy/qt { };
qtwebkit-plugins = callPackage ../development/libraries/qtwebkit-plugins { };
# Not a library, but we do want it to be built for every qt version there
# is, to allow users to choose the right build if needed.
sddm = callPackage ../applications/display-managers/sddm { };
signond = callPackage ../development/libraries/signond {};
soundkonverter = callPackage ../applications/audio/soundkonverter {};
yuview = callPackage ../applications/video/yuview { };
})))

View file

@ -0,0 +1,23 @@
# Qt packages set.
#
# Attributes in this file are packages requiring Qt and will be made available
# for every Qt version. Qt applications are called from `all-packages.nix` via
# this file.
{ lib
, pkgs
, qt6
}:
(lib.makeScope pkgs.newScope ( self:
let
libsForQt6 = self;
callPackage = self.callPackage;
in
(qt6 // {
# LIBRARIES
quazip = callPackage ../development/libraries/quazip { };
})))

View file

@ -0,0 +1,91 @@
{ pkgsFun ? import ../..
, lib ? import ../../lib
, supportedSystems ? ["x86_64-linux"]
, allowUnfree ? false }:
let
# called BLAS here, but also tests LAPACK
blasUsers = [
# "julia_07" "julia_10" "julia_11" "julia_13" "octave" "octaveFull"
"fflas-ffpack" "linbox" "R" "ipopt" "hpl" "rspamd" "octopus"
"superlu" "suitesparse_5_3" "suitesparse_4_4"
"suitesparse_4_2" "scs" "scalapack" "petsc" "cholmod-extra"
"arpack" "qrupdate" "libcint" "iml" "globalarrays" "arrayfire" "armadillo"
"xfitter" "lammps" "plink-ng" "quantum-espresso" "siesta"
"siesta-mpi" "shogun" "calculix" "csdp" "getdp" "giac" "gmsh" "jags"
"lammps" "lammps-mpi"
# requires openblas
# "caffe" "mxnet" "flint" "sage" "sageWithDoc"
# broken
# "gnss-sdr" "octave-jit" "openmodelica" "torch"
# subpackages
["pythonPackages" "numpy"] ["pythonPackages" "prox-tv"] ["pythonPackages" "scs"]
["pythonPackages" "pysparse"] ["pythonPackages" "cvxopt"]
# ["pythonPackages" "fenics"]
["rPackages" "slfm"] ["rPackages" "SamplerCompare"]
# ["rPackages" "EMCluster"]
# ["ocamlPackages" "lacaml"]
# ["ocamlPackages" "owl"]
["haskellPackages" "bindings-levmar"]
] ++ lib.optionals allowUnfree [ "magma" ];
blas64Users = [
"rspamd" "sundials" "suitesparse_5_3" "suitesparse_4_4"
"suitesparse_4_2" "petsc" "cholmod-extra"
"arpack" "qrupdate" "iml" "globalarrays" "arrayfire"
"lammps" "plink-ng" "quantum-espresso"
"calculix" "csdp" "getdp" "jags"
"lammps" "lammps-mpi"
# ["ocamlPackages" "lacaml"]
["haskellPackages" "bindings-levmar"]
] ++ lib.optionals allowUnfree [ "magma" ];
blasProviders = system: [ "openblasCompat" "lapack-reference" "openblas" ]
++ lib.optionals (allowUnfree && system.isx86) ["mkl" "mkl64"];
blas64Providers = [ "mkl64" "openblas"];
mapListToAttrs = xs: f: builtins.listToAttrs (map (name: {
name = if builtins.isList name
then builtins.elemAt name (builtins.length name - 1)
else name;
value = f name;
}) xs);
in
{
blas = mapListToAttrs supportedSystems (system': let system = lib.systems.elaborate { system = system'; };
in mapListToAttrs (blasProviders system) (provider: let
isILP64 = builtins.elem provider (["mkl64"] ++ lib.optional system.is64bit "openblas");
pkgs = pkgsFun {
config = { inherit allowUnfree; };
system = system';
overlays = [(self: super: {
lapack = super.lapack.override {
lapackProvider = if provider == "mkl64"
then super.mkl
else builtins.getAttr provider super;
inherit isILP64;
};
blas = super.blas.override {
blasProvider = if provider == "mkl64"
then super.mkl
else builtins.getAttr provider super;
inherit isILP64;
};
})];
};
in mapListToAttrs (if builtins.elem provider blas64Providers
then blas64Users else blasUsers)
(attr: if builtins.isList attr
then lib.getAttrFromPath attr pkgs
else builtins.getAttr attr pkgs)
// { recurseForDerivations = true; })
// { recurseForDerivations = true; })
// { recurseForDerivations = true; };
recurseForDerivations = true;
}

View file

@ -0,0 +1,215 @@
/* This file defines some basic smoke tests for cross compilation.
*/
{ # The platforms *from* which we cross compile.
supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ]
, # Strip most of attributes when evaluating to spare memory usage
scrubJobs ? true
, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
let
nativePlatforms = all;
embedded = {
buildPackages.binutils = nativePlatforms;
buildPackages.gcc = nativePlatforms;
libcCross = nativePlatforms;
};
common = {
buildPackages.binutils = nativePlatforms;
gmp = nativePlatforms;
libcCross = nativePlatforms;
nix = nativePlatforms;
nixUnstable = nativePlatforms;
mesa = nativePlatforms;
};
gnuCommon = lib.recursiveUpdate common {
buildPackages.gcc = nativePlatforms;
coreutils = nativePlatforms;
haskell.packages.ghcHEAD.hello = nativePlatforms;
haskellPackages.hello = nativePlatforms;
};
linuxCommon = lib.recursiveUpdate gnuCommon {
buildPackages.gdb = nativePlatforms;
bison = nativePlatforms;
busybox = nativePlatforms;
dropbear = nativePlatforms;
ed = nativePlatforms;
ncurses = nativePlatforms;
patch = nativePlatforms;
};
windowsCommon = lib.recursiveUpdate gnuCommon {
boehmgc = nativePlatforms;
guile_1_8 = nativePlatforms;
libffi = nativePlatforms;
libtool = nativePlatforms;
libunistring = nativePlatforms;
windows.wxMSW = nativePlatforms;
windows.mingw_w64_pthreads = nativePlatforms;
};
wasiCommon = {
gmp = nativePlatforms;
boehmgc = nativePlatforms;
hello = nativePlatforms;
zlib = nativePlatforms;
};
darwinCommon = {
buildPackages.binutils = darwin;
};
rpiCommon = linuxCommon // {
vim = nativePlatforms;
unzip = nativePlatforms;
ddrescue = nativePlatforms;
lynx = nativePlatforms;
patchelf = nativePlatforms;
buildPackages.binutils = nativePlatforms;
mpg123 = nativePlatforms;
};
in
{
# These derivations from a cross package set's `buildPackages` should be
# identical to their vanilla equivalents --- none of these package should
# observe the target platform which is the only difference between those
# package sets.
ensureUnaffected = let
# Absurd values are fine here, as we are not building anything. In fact,
# there probably a good idea to try to be "more parametric" --- i.e. avoid
# any special casing.
crossSystem = {
config = "mips64el-apple-windows-gnu";
libc = "glibc";
};
# Converting to a string (drv path) before checking equality is probably a
# good idea lest there be some irrelevant pass-through debug attrs that
# cause false negatives.
testEqualOne = path: system: let
f = path: crossSystem: system: builtins.toString (lib.getAttrFromPath path (pkgsForCross crossSystem system));
in assertTrue (
f path null system
==
f (["buildPackages"] ++ path) crossSystem system
);
testEqual = path: systems: forMatchingSystems systems (testEqualOne path);
mapTestEqual = lib.mapAttrsRecursive testEqual;
in mapTestEqual {
boehmgc = nativePlatforms;
libffi = nativePlatforms;
libiconv = nativePlatforms;
libtool = nativePlatforms;
zlib = nativePlatforms;
readline = nativePlatforms;
libxml2 = nativePlatforms;
guile = nativePlatforms;
};
crossIphone64 = mapTestOnCross lib.systems.examples.iphone64 darwinCommon;
crossIphone32 = mapTestOnCross lib.systems.examples.iphone32 darwinCommon;
/* Test some cross builds to the Sheevaplug */
crossSheevaplugLinux = mapTestOnCross lib.systems.examples.sheevaplug (linuxCommon // {
ubootSheevaplug = nativePlatforms;
});
/* Test some cross builds on 32 bit mingw-w64 */
crossMingw32 = mapTestOnCross lib.systems.examples.mingw32 windowsCommon;
/* Test some cross builds on 64 bit mingw-w64 */
crossMingwW64 = mapTestOnCross lib.systems.examples.mingwW64 windowsCommon;
/* Linux on mipsel */
fuloongminipc = mapTestOnCross lib.systems.examples.fuloongminipc linuxCommon;
ben-nanonote = mapTestOnCross lib.systems.examples.ben-nanonote linuxCommon;
/* Javacript */
ghcjs = mapTestOnCross lib.systems.examples.ghcjs {
haskell.packages.ghcjs.hello = nativePlatforms;
};
/* Linux on Raspberrypi */
rpi = mapTestOnCross lib.systems.examples.raspberryPi rpiCommon;
rpi-musl = mapTestOnCross lib.systems.examples.muslpi rpiCommon;
/* Linux on the Remarkable */
remarkable1 = mapTestOnCross lib.systems.examples.remarkable1 linuxCommon;
remarkable2 = mapTestOnCross lib.systems.examples.remarkable2 linuxCommon;
/* Linux on armv7l-hf */
armv7l-hf = mapTestOnCross lib.systems.examples.armv7l-hf-multiplatform linuxCommon;
pogoplug4 = mapTestOnCross lib.systems.examples.pogoplug4 linuxCommon;
/* Linux on aarch64 */
aarch64 = mapTestOnCross lib.systems.examples.aarch64-multiplatform linuxCommon;
aarch64-musl = mapTestOnCross lib.systems.examples.aarch64-multiplatform-musl linuxCommon;
/* Linux on RISCV */
riscv64 = mapTestOnCross lib.systems.examples.riscv64 linuxCommon;
riscv32 = mapTestOnCross lib.systems.examples.riscv32 linuxCommon;
m68k = mapTestOnCross lib.systems.examples.m68k linuxCommon;
s390x = mapTestOnCross lib.systems.examples.s390x linuxCommon;
/* (Cross-compiled) Linux on x86 */
x86_64-musl = mapTestOnCross lib.systems.examples.musl64 linuxCommon;
x86_64-gnu = mapTestOnCross lib.systems.examples.gnu64 linuxCommon;
i686-musl = mapTestOnCross lib.systems.examples.musl32 linuxCommon;
i686-gnu = mapTestOnCross lib.systems.examples.gnu32 linuxCommon;
ppc64le = mapTestOnCross lib.systems.examples.powernv linuxCommon;
ppc64le-musl = mapTestOnCross lib.systems.examples.musl-power linuxCommon;
android64 = mapTestOnCross lib.systems.examples.aarch64-android-prebuilt linuxCommon;
android32 = mapTestOnCross lib.systems.examples.armv7a-android-prebuilt linuxCommon;
wasi32 = mapTestOnCross lib.systems.examples.wasi32 wasiCommon;
msp430 = mapTestOnCross lib.systems.examples.msp430 embedded;
mmix = mapTestOnCross lib.systems.examples.mmix embedded;
vc4 = mapTestOnCross lib.systems.examples.vc4 embedded;
or1k = mapTestOnCross lib.systems.examples.or1k embedded;
avr = mapTestOnCross lib.systems.examples.avr embedded;
arm-embedded = mapTestOnCross lib.systems.examples.arm-embedded embedded;
armhf-embedded = mapTestOnCross lib.systems.examples.armhf-embedded embedded;
aarch64-embedded = mapTestOnCross lib.systems.examples.aarch64-embedded embedded;
aarch64be-embedded = mapTestOnCross lib.systems.examples.aarch64be-embedded embedded;
powerpc-embedded = mapTestOnCross lib.systems.examples.ppc-embedded embedded;
powerpcle-embedded = mapTestOnCross lib.systems.examples.ppcle-embedded embedded;
i686-embedded = mapTestOnCross lib.systems.examples.i686-embedded embedded;
x86_64-embedded = mapTestOnCross lib.systems.examples.x86_64-embedded embedded;
riscv64-embedded = mapTestOnCross lib.systems.examples.riscv64-embedded embedded;
riscv32-embedded = mapTestOnCross lib.systems.examples.riscv32-embedded embedded;
rx-embedded = mapTestOnCross lib.systems.examples.rx-embedded embedded;
x86_64-netbsd = mapTestOnCross lib.systems.examples.x86_64-netbsd common;
# we test `embedded` instead of `linuxCommon` because very few packages
# successfully cross-compile to Redox so far
x86_64-redox = mapTestOnCross lib.systems.examples.x86_64-unknown-redox embedded;
/* Cross-built bootstrap tools for every supported platform */
bootstrapTools = let
tools = import ../stdenv/linux/make-bootstrap-tools-cross.nix { system = "x86_64-linux"; };
maintainers = [ lib.maintainers.dezgeg ];
mkBootstrapToolsJob = drv:
assert lib.elem drv.system supportedSystems;
hydraJob' (lib.addMetaAttrs { inherit maintainers; } drv);
in lib.mapAttrsRecursiveCond (as: !lib.isDerivation as) (name: mkBootstrapToolsJob) tools;
}

View file

@ -0,0 +1,55 @@
/*
Test CUDA packages.
This release file will not be tested on hydra.nixos.org
because it requires unfree software.
Test for example like this:
$ hydra-eval-jobs pkgs/top-level/release-cuda.nix --option restrict-eval false -I foo=. --arg nixpkgs '{ outPath = ./.; revCount = 0; shortRev = "aabbcc"; }'
*/
{ # The platforms for which we build Nixpkgs.
supportedSystems ? [
"x86_64-linux"
]
, # Attributes passed to nixpkgs.
nixpkgsArgs ? { config = { allowUnfree = true; inHydra = true; }; }
}:
with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
with lib;
let
# Package sets to evaluate
packageSets = [
"cudaPackages_10_0"
"cudaPackages_10_1"
"cudaPackages_10_2"
"cudaPackages_10"
"cudaPackages_11_0"
"cudaPackages_11_1"
"cudaPackages_11_2"
"cudaPackages_11_3"
"cudaPackages_11_4"
"cudaPackages_11_5"
"cudaPackages_11_6"
"cudaPackages_11"
"cudaPackages"
];
evalPackageSet = pset: mapTestOn { ${pset} = packagePlatforms pkgs.${pset}; };
jobs = (mapTestOn ({
# Packages to evaluate
python3.pkgs.caffeWithCuda = linux;
python3.pkgs.jaxlibWithCuda = linux;
python3.pkgs.libgpuarray = linux;
python3.pkgs.tensorflowWithCuda = linux;
python3.pkgs.pyrealsense2WithCuda = linux;
python3.pkgs.pytorchWithCuda = linux;
python3.pkgs.jaxlib = linux;
}) // (genAttrs packageSets evalPackageSet));
in jobs

View file

@ -0,0 +1,485 @@
/*
This is the Hydra jobset for the `haskell-updates` branch in Nixpkgs.
You can see the status of this jobset at
https://hydra.nixos.org/jobset/nixpkgs/haskell-updates.
To debug this expression you can use `hydra-eval-jobs` from
`pkgs.hydra_unstable` which prints the jobset description
to `stdout`:
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
*/
{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ] }:
let
releaseLib = import ./release-lib.nix {
inherit supportedSystems;
};
inherit (releaseLib)
lib
mapTestOn
packagePlatforms
pkgs
;
# Helper function which traverses a (nested) set
# of derivations produced by mapTestOn and flattens
# it to a list of derivations suitable to be passed
# to `releaseTools.aggregate` as constituents.
# Removes all non derivations from the input jobList.
#
# accumulateDerivations :: [ Either Derivation AttrSet ] -> [ Derivation ]
#
# > accumulateDerivations [ drv1 "string" { foo = drv2; bar = { baz = drv3; }; } ]
# [ drv1 drv2 drv3 ]
accumulateDerivations = jobList:
lib.concatMap (
attrs:
if lib.isDerivation attrs
then [ attrs ]
else if lib.isAttrs attrs
then accumulateDerivations (lib.attrValues attrs)
else []
) jobList;
# names of all subsets of `pkgs.haskell.packages`
compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
# list of all compilers to test specific packages on
released = with compilerNames; [
ghc884
ghc8107
ghc902
ghc923
];
# packagePlatforms applied to `haskell.packages.*`
compilerPlatforms = lib.mapAttrs
(_: v: packagePlatforms v)
pkgs.haskell.packages;
# This function lets you specify specific packages
# which are to be tested on a list of specific GHC
# versions and returns a job set for all specified
# combinations. See `jobs` below for an example.
versionedCompilerJobs = config: mapTestOn {
haskell.packages =
(lib.mapAttrs (
ghc: jobs:
lib.filterAttrs (
jobName: platforms:
lib.elem ghc (config."${jobName}" or [])
) jobs
) compilerPlatforms);
};
# hydra jobs for `pkgs` of which we import a subset of
pkgsPlatforms = packagePlatforms pkgs;
# names of packages in an attribute set that are maintained
maintainedPkgNames = set: builtins.attrNames
(lib.filterAttrs (
_: v: builtins.length (v.meta.maintainers or []) > 0
) set);
recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate {};
# Remove multiple elements from a list at once.
#
# removeMany
# :: [a] -- list of elements to remove
# -> [a] -- list of elements from which to remove
# -> [a]
#
# > removeMany ["aarch64-linux" "x86_64-darwin"] ["aarch64-linux" "x86_64-darwin" "x86_64-linux"]
# ["x86_64-linux"]
removeMany = itemsToRemove: list: lib.foldr lib.remove list itemsToRemove;
# Recursively remove platforms from the values in an attribute set.
#
# removePlatforms
# :: [String]
# -> AttrSet
# -> AttrSet
#
# > attrSet = {
# foo = ["aarch64-linux" "x86_64-darwin" "x86_64-linux"];
# bar.baz = ["aarch64-linux" "x86_64-linux"];
# bar.quux = ["aarch64-linux" "x86_64-darwin"];
# }
# > removePlatforms ["aarch64-linux" "x86_64-darwin"] attrSet
# {
# foo = ["x86_64-linux"];
# bar = {
# baz = ["x86_64-linux"];
# quux = [];
# };
# }
removePlatforms = platformsToRemove: packageSet:
lib.mapAttrsRecursive
(_: val:
if lib.isList val
then removeMany platformsToRemove val
else val
)
packageSet;
jobs = recursiveUpdateMany [
(mapTestOn {
haskellPackages = packagePlatforms pkgs.haskellPackages;
haskell.compiler = packagePlatforms pkgs.haskell.compiler // (lib.genAttrs [
"ghcjs"
"ghcjs810"
] (ghcjsName: {
# We can't build ghcjs itself, since it exceeds 3GB (Hydra's output limit) due
# to the size of its bundled libs. We can however save users a bit of compile
# time by building the bootstrap ghcjs on Hydra. For this reason, we overwrite
# the ghcjs attributes in haskell.compiler with a reference to the bootstrap
# ghcjs attribute in their bootstrap package set (exposed via passthru) which
# would otherwise be ignored by Hydra.
bootGhcjs = (packagePlatforms pkgs.haskell.compiler.${ghcjsName}.passthru).bootGhcjs;
}));
tests.haskell = packagePlatforms pkgs.tests.haskell;
nixosTests = {
inherit (packagePlatforms pkgs.nixosTests)
agda
xmonad
xmonad-xdg-autostart
;
};
agdaPackages = packagePlatforms pkgs.agdaPackages;
# top-level packages that depend on haskellPackages
inherit (pkgsPlatforms)
agda
arion
bench
bustle
blucontrol
cabal-install
cabal2nix
cachix
carp
cedille
client-ip-echo
darcs
dconf2nix
dhall
dhall-bash
dhall-docs
dhall-lsp-server
dhall-json
dhall-nix
diagrams-builder
elm2nix
fffuu
futhark
ghcid
git-annex
git-brunch
gitit
glirc
hadolint
haskell-ci
haskell-language-server
hasura-graphql-engine
hci
hercules-ci-agent
hinit
hedgewars
hledger
hledger-check-fancyassertions
hledger-iadd
hledger-interest
hledger-ui
hledger-web
hlint
hpack
# hyper-haskell # depends on electron-10.4.7 which is marked as insecure
hyper-haskell-server-with-packages
icepeak
idris
ihaskell
jacinda
jl
koka
krank
lambdabot
lhs2tex
madlang
matterhorn
mueval
naproche
neuron-notes
niv
nix-delegate
nix-deploy
nix-diff
nix-linter
nix-output-monitor
nix-script
nix-tree
nixfmt
nota
nvfetcher
ormolu
pandoc
pakcs
petrinizer
place-cursor-at
pinboard-notes-backup
pretty-simple
shake
shellcheck
sourceAndTags
spacecookie
spago
splot
stack
stack2nix
stutter
stylish-haskell
taffybar
tamarin-prover
taskell
termonad-with-packages
tldr-hs
tweet-hs
update-nix-fetchgit
uusi
uqm
uuagc
vaultenv
wstunnel
xmobar
xmonad-with-packages
yi
zsh-git-prompt
;
# Members of the elmPackages set that are Haskell derivations
elmPackages = {
inherit (pkgsPlatforms.elmPackages)
elm
elm-format
elm-instrument
elmi-to-json
;
};
# GHCs linked to musl.
pkgsMusl.haskell.compiler = lib.recursiveUpdate
(packagePlatforms pkgs.pkgsMusl.haskell.compiler)
{
# remove musl ghc865Binary since it is known to be broken and
# causes an evaluation error on darwin.
# TODO: remove ghc865Binary altogether and use ghc8102Binary
ghc865Binary = {};
ghcjs = {};
ghcjs810 = {};
# Can't be built with musl, see meta.broken comment in the drv
integer-simple.ghc884 = {};
};
# Get some cache going for MUSL-enabled GHC.
pkgsMusl.haskellPackages =
removePlatforms
[
# pkgsMusl is compiled natively with musl. It is not
# cross-compiled (unlike pkgsStatic). We can only
# natively bootstrap GHC with musl on x86_64-linux because
# upstream doesn't provide a musl bindist for aarch64.
"aarch64-linux"
# musl only supports linux, not darwin.
"x86_64-darwin"
]
{
inherit (packagePlatforms pkgs.pkgsMusl.haskellPackages)
hello
lens
random
;
};
# Test some statically linked packages to catch regressions
# and get some cache going for static compilation with GHC.
# Use integer-simple to avoid GMP linking problems (LGPL)
pkgsStatic =
removePlatforms
[
"aarch64-linux" # times out on Hydra
"x86_64-darwin" # TODO: reenable when static libiconv works on darwin
] {
haskellPackages = {
inherit (packagePlatforms pkgs.pkgsStatic.haskellPackages)
hello
lens
random
QuickCheck
cabal2nix
xhtml # isn't bundled for cross
;
};
haskell.packages.native-bignum.ghc923 = {
inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc923)
hello
lens
random
QuickCheck
cabal2nix
xhtml # isn't bundled for cross
;
};
};
})
(versionedCompilerJobs {
# Packages which should be checked on more than the
# default GHC version. This list can be used to test
# the state of the package set with newer compilers
# and to confirm that critical packages for the
# package sets (like Cabal, jailbreak-cabal) are
# working as expected.
cabal-install = released;
Cabal_3_6_3_0 = released;
cabal2nix = released;
cabal2nix-unstable = released;
funcmp = released;
haskell-language-server = released;
hoogle = released;
hlint = released;
hsdns = released;
jailbreak-cabal = released;
language-nix = released;
nix-paths = released;
titlecase = released;
ghc-api-compat = [
compilerNames.ghc884
compilerNames.ghc8107
compilerNames.ghc902
];
ghc-bignum = [
compilerNames.ghc884
compilerNames.ghc8107
];
ghc-lib = released;
ghc-lib-parser = released;
ghc-lib-parser-ex = released;
spectacle = [
compilerNames.ghc8107
];
weeder = [
compilerNames.ghc8107
compilerNames.ghc902
compilerNames.ghc923
];
purescript = [
compilerNames.ghc8107
];
purescript-cst = [
compilerNames.ghc8107
];
purescript-ast = [
compilerNames.ghc8107
];
})
{
mergeable = pkgs.releaseTools.aggregate {
name = "haskell-updates-mergeable";
meta = {
description = ''
Critical haskell packages that should work at all times,
serves as minimum requirement for an update merge
'';
maintainers = lib.teams.haskell.members;
};
constituents = accumulateDerivations [
# haskell specific tests
jobs.tests.haskell
# important top-level packages
jobs.cabal-install
jobs.cabal2nix
jobs.cachix
jobs.darcs
jobs.haskell-language-server
jobs.hledger
jobs.hledger-ui
jobs.hpack
jobs.niv
jobs.pandoc
jobs.stack
jobs.stylish-haskell
# important haskell (library) packages
jobs.haskellPackages.cabal-plan
jobs.haskellPackages.distribution-nixpkgs
jobs.haskellPackages.hackage-db
jobs.haskellPackages.xmonad
jobs.haskellPackages.xmonad-contrib
# haskell packages maintained by @peti
# imported from the old hydra jobset
jobs.haskellPackages.hopenssl
jobs.haskellPackages.hsemail
jobs.haskellPackages.hsyslog
];
};
maintained = pkgs.releaseTools.aggregate {
name = "maintained-haskell-packages";
meta = {
description = "Aggregate jobset of all haskell packages with a maintainer";
maintainers = lib.teams.haskell.members;
};
constituents = accumulateDerivations
(builtins.map
(name: jobs.haskellPackages."${name}")
(maintainedPkgNames pkgs.haskellPackages));
};
muslGHCs = pkgs.releaseTools.aggregate {
name = "haskell-pkgsMusl-ghcs";
meta = {
description = "GHCs built with musl";
maintainers = with lib.maintainers; [
nh2
];
};
constituents = accumulateDerivations [
jobs.pkgsMusl.haskell.compiler.ghc8102Binary
jobs.pkgsMusl.haskell.compiler.ghc8107Binary
jobs.pkgsMusl.haskell.compiler.ghc884
jobs.pkgsMusl.haskell.compiler.ghc8107
jobs.pkgsMusl.haskell.compiler.ghc902
jobs.pkgsMusl.haskell.compiler.ghc923
jobs.pkgsMusl.haskell.compiler.ghcHEAD
jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc923
jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
];
};
staticHaskellPackages = pkgs.releaseTools.aggregate {
name = "static-haskell-packages";
meta = {
description = "Static haskell builds using the pkgsStatic infrastructure";
maintainers = [
lib.maintainers.sternenseemann
lib.maintainers.rnhmjoj
];
};
constituents = accumulateDerivations [
jobs.pkgsStatic.haskellPackages
jobs.pkgsStatic.haskell.packages.native-bignum.ghc923
];
};
}
];
in jobs

View file

@ -0,0 +1,160 @@
{ supportedSystems
, packageSet ? (import ../..)
, scrubJobs ? true
, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
let
lib = import ../../lib;
in with lib;
rec {
pkgs = packageSet (lib.recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs);
inherit lib;
hydraJob' = if scrubJobs then hydraJob else id;
/* !!! Hack: poor man's memoisation function. Necessary to prevent
Nixpkgs from being evaluated again and again for every
job/platform pair. */
mkPkgsFor = crossSystem: let
packageSet' = args: packageSet (args // { inherit crossSystem; } // nixpkgsArgs);
pkgs_x86_64_linux = packageSet' { system = "x86_64-linux"; };
pkgs_i686_linux = packageSet' { system = "i686-linux"; };
pkgs_aarch64_linux = packageSet' { system = "aarch64-linux"; };
pkgs_aarch64_darwin = packageSet' { system = "aarch64-darwin"; };
pkgs_armv6l_linux = packageSet' { system = "armv6l-linux"; };
pkgs_armv7l_linux = packageSet' { system = "armv7l-linux"; };
pkgs_x86_64_darwin = packageSet' { system = "x86_64-darwin"; };
pkgs_x86_64_freebsd = packageSet' { system = "x86_64-freebsd"; };
pkgs_i686_freebsd = packageSet' { system = "i686-freebsd"; };
pkgs_i686_cygwin = packageSet' { system = "i686-cygwin"; };
pkgs_x86_64_cygwin = packageSet' { system = "x86_64-cygwin"; };
in system:
if system == "x86_64-linux" then pkgs_x86_64_linux
else if system == "i686-linux" then pkgs_i686_linux
else if system == "aarch64-linux" then pkgs_aarch64_linux
else if system == "aarch64-darwin" then pkgs_aarch64_darwin
else if system == "armv6l-linux" then pkgs_armv6l_linux
else if system == "armv7l-linux" then pkgs_armv7l_linux
else if system == "x86_64-darwin" then pkgs_x86_64_darwin
else if system == "x86_64-freebsd" then pkgs_x86_64_freebsd
else if system == "i686-freebsd" then pkgs_i686_freebsd
else if system == "i686-cygwin" then pkgs_i686_cygwin
else if system == "x86_64-cygwin" then pkgs_x86_64_cygwin
else abort "unsupported system type: ${system}";
pkgsFor = pkgsForCross null;
# More poor man's memoisation
pkgsForCross = let
examplesByConfig = lib.flip lib.mapAttrs'
lib.systems.examples
(_: crossSystem: nameValuePair crossSystem.config {
inherit crossSystem;
pkgsFor = mkPkgsFor crossSystem;
});
native = mkPkgsFor null;
in crossSystem: let
candidate = examplesByConfig.${crossSystem.config} or null;
in if crossSystem == null
then native
else if candidate != null && lib.matchAttrs crossSystem candidate.crossSystem
then candidate.pkgsFor
else mkPkgsFor crossSystem; # uncached fallback
# Given a list of 'meta.platforms'-style patterns, return the sublist of
# `supportedSystems` containing systems that matches at least one of the given
# patterns.
#
# This is written in a funny way so that we only elaborate the systems once.
supportedMatches = let
supportedPlatforms = map
(system: lib.systems.elaborate { inherit system; })
supportedSystems;
in metaPatterns: let
anyMatch = platform:
lib.any (lib.meta.platformMatch platform) metaPatterns;
matchingPlatforms = lib.filter anyMatch supportedPlatforms;
in map ({ system, ...}: system) matchingPlatforms;
assertTrue = bool:
if bool
then pkgs.runCommand "evaluated-to-true" {} "touch $out"
else pkgs.runCommand "evaluated-to-false" {} "false";
/* The working or failing mails for cross builds will be sent only to
the following maintainers, as most package maintainers will not be
interested in the result of cross building a package. */
crossMaintainers = [ maintainers.viric ];
# Generate attributes for all supported systems.
forAllSystems = genAttrs supportedSystems;
# Generate attributes for all systems matching at least one of the given
# patterns
forMatchingSystems = metaPatterns: genAttrs (supportedMatches metaPatterns);
/* Build a package on the given set of platforms. The function `f'
is called for each supported platform with Nixpkgs for that
platform as an argument . We return an attribute set containing
a derivation for each supported platform, i.e. { x86_64-linux =
f pkgs_x86_64_linux; i686-linux = f pkgs_i686_linux; ... }. */
testOn = testOnCross null;
/* Similar to the testOn function, but with an additional
'crossSystem' parameter for packageSet', defining the target
platform for cross builds. */
testOnCross = crossSystem: metaPatterns: f: forMatchingSystems metaPatterns
(system: hydraJob' (f (pkgsForCross crossSystem system)));
/* Given a nested set where the leaf nodes are lists of platforms,
map each leaf node to `testOn [platforms...] (pkgs:
pkgs.<attrPath>)'. */
mapTestOn = _mapTestOnHelper id null;
_mapTestOnHelper = f: crossSystem: mapAttrsRecursive
(path: metaPatterns: testOnCross crossSystem metaPatterns
(pkgs: f (getAttrFromPath path pkgs)));
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for packageSet', defining the target platform for cross builds,
* and triggering the build of the host derivation. */
mapTestOnCross = _mapTestOnHelper
(addMetaAttrs { maintainers = crossMaintainers; });
/* Recursively map a (nested) set of derivations to an isomorphic
set of meta.platforms values. */
packagePlatforms = mapAttrs (name: value:
if isDerivation value then
value.meta.hydraPlatforms
or (value.meta.platforms or [ "x86_64-linux" ])
else if value.recurseForDerivations or false || value.recurseForRelease or false then
packagePlatforms value
else
[]
);
/* Common platform groups on which to test packages. */
inherit (platforms) unix linux darwin cygwin all mesaPlatforms;
}

View file

@ -0,0 +1,48 @@
/*
test for example like this
$ hydra-eval-jobs pkgs/top-level/release-python.nix
*/
{ # The platforms for which we build Nixpkgs.
supportedSystems ? [
"aarch64-linux"
"x86_64-linux"
]
, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
with lib;
let
packagePython = mapAttrs (name: value:
let res = builtins.tryEval (
if isDerivation value then
value.meta.isBuildPythonPackage or []
else if value.recurseForDerivations or false || value.recurseForRelease or false then
packagePython value
else
[]);
in if res.success then res.value else []
);
jobs = {
lib-tests = import ../../lib/tests/release.nix { inherit pkgs; };
pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; };
tested = pkgs.releaseTools.aggregate {
name = "python-tested";
meta.description = "Release-critical packages from the python package sets";
constituents = [
jobs.remarshal.x86_64-linux # Used in pkgs.formats helper
jobs.python39Packages.buildcatrust.x86_64-linux # Used in pkgs.cacert
jobs.python39Packages.colorama.x86_64-linux # Used in nixos test-driver
jobs.python39Packages.ptpython.x86_64-linux # Used in nixos test-driver
jobs.python39Packages.requests.x86_64-linux # Almost ubiquous package
jobs.python39Packages.sphinx.x86_64-linux # Document creation for many packages
];
};
} // (mapTestOn (packagePython pkgs));
in jobs

View file

@ -0,0 +1,13 @@
/*
This is the Hydra jobset for the `r-updates` branch in Nixpkgs.
The jobset can be tested by:
$ hydra-eval-jobs -I . pkgs/top-level/release-r.nix
*/
{ supportedSystems ? [ "x86_64-linux" "aarch64-linux" ] }:
with import ./release-lib.nix { inherit supportedSystems; };
mapTestOn {
rPackages = packagePlatforms pkgs.rPackages;
}

View file

@ -0,0 +1,154 @@
/* A small release file, with few packages to be built. The aim is to reduce
the load on Hydra when testing the `stdenv-updates' branch. */
{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; }
, supportedSystems ? [ "x86_64-linux" "x86_64-darwin" ]
, # Attributes passed to nixpkgs. Don't build packages marked as unfree.
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix { inherit supportedSystems nixpkgsArgs; };
{
tarball = import ./make-tarball.nix {
inherit nixpkgs supportedSystems;
officialRelease = false;
};
} // (mapTestOn ({
aspell = all;
at = linux;
autoconf = all;
automake = all;
avahi = unix; # Cygwin builds fail
bash = all;
bashInteractive = all;
bc = all;
binutils = linux;
bind = linux;
bsdiff = all;
bzip2 = all;
cmake = all;
coreutils = all;
cpio = all;
cron = linux;
cups = linux;
dbus = linux;
dhcp = linux;
diffutils = all;
e2fsprogs = linux;
emacs = linux;
file = all;
findutils = all;
flex = all;
gcc = all;
glibc = linux;
glibcLocales = linux;
gnugrep = all;
gnum4 = all;
gnumake = all;
gnupatch = all;
gnupg = linux;
gnuplot = unix; # Cygwin builds fail
gnused = all;
gnutar = all;
gnutls = linux;
grub = linux;
grub2 = linux;
guile = linux; # tests fail on Cygwin
gzip = all;
hddtemp = linux;
hdparm = linux;
hello = all;
host = linux;
iana-etc = linux;
icewm = linux;
idutils = all;
inetutils = linux;
iputils = linux;
kvm = linux;
qemu = linux;
qemu_kvm = linux;
lapack-reference = linux;
less = all;
lftp = all;
libtool = all;
libtool_2 = all;
libxml2 = all;
libxslt = all;
lout = linux;
lsh = linux;
lsof = linux;
ltrace = linux;
lvm2 = linux;
lynx = linux;
xz = linux;
man = linux;
man-pages = linux;
mc = all;
mdadm = linux;
mesa = mesaPlatforms;
mingetty = linux;
mktemp = all;
monotone = linux;
mutt = linux;
mysql = linux;
# netcat broken on darwin
netcat = linux;
nfs-utils = linux;
nix = all;
nixUnstable = all;
nss_ldap = linux;
nssmdns = linux;
ntfs3g = linux;
ntp = linux;
openssh = linux;
openssl = all;
pan = linux;
pciutils = linux;
pdf2xml = all;
perl = all;
pkg-config = all;
pmccabe = linux;
procps = linux;
python3 = unix; # Cygwin builds fail
readline = all;
rlwrap = all;
rpcbind = linux;
rsync = linux;
screen = linux ++ darwin;
scrot = linux;
sdparm = linux;
smartmontools = all;
sqlite = unix; # Cygwin builds fail
squid = linux;
msmtp = linux;
stdenv = all;
strace = linux;
su = linux;
sudo = linux;
sysklogd = linux;
syslinux = ["i686-linux"];
tcl = linux;
tcpdump = linux;
texinfo = all;
time = linux;
tinycc = linux;
udev = linux;
unzip = all;
usbutils = linux;
util-linux = linux;
util-linuxMinimal = linux;
w3m = all;
webkitgtk = linux;
wget = all;
which = all;
wirelesstools = linux;
wpa_supplicant = linux;
xfsprogs = linux;
xkeyboard_config = linux;
zip = all;
} ))

221
pkgs/top-level/release.nix Normal file
View file

@ -0,0 +1,221 @@
/* This file defines the builds that constitute the Nixpkgs.
Everything defined here ends up in the Nixpkgs channel. Individual
jobs can be tested by running:
$ nix-build pkgs/top-level/release.nix -A <jobname>.<system>
e.g.
$ nix-build pkgs/top-level/release.nix -A coreutils.x86_64-linux
*/
{ nixpkgs ? { outPath = (import ../../lib).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; revision = "0000000000000000000000000000000000000000"; }
, officialRelease ? false
# The platforms for which we build Nixpkgs.
, supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" ]
, limitedSupportedSystems ? [ "i686-linux" ]
# Strip most of attributes when evaluating to spare memory usage
, scrubJobs ? true
# Attributes passed to nixpkgs. Don't build packages marked as unfree.
, nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
let
systemsWithAnySupport = supportedSystems ++ limitedSupportedSystems;
supportDarwin = lib.genAttrs [
"x86_64"
"aarch64"
] (arch: builtins.elem "${arch}-darwin" systemsWithAnySupport);
jobs =
{ tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; };
metrics = import ./metrics.nix { inherit pkgs nixpkgs; };
manual = import ../../doc { inherit pkgs nixpkgs; };
lib-tests = import ../../lib/tests/release.nix { inherit pkgs; };
pkgs-lib-tests = import ../pkgs-lib/tests { inherit pkgs; };
darwin-tested = if supportDarwin.x86_64 then pkgs.releaseTools.aggregate
{ name = "nixpkgs-darwin-${jobs.tarball.version}";
meta.description = "Release-critical builds for the Nixpkgs darwin channel";
constituents =
[ jobs.tarball
jobs.cabal2nix.x86_64-darwin
jobs.ghc.x86_64-darwin
jobs.git.x86_64-darwin
jobs.go.x86_64-darwin
jobs.mariadb.x86_64-darwin
jobs.nix.x86_64-darwin
jobs.nixpkgs-review.x86_64-darwin
jobs.nix-info.x86_64-darwin
jobs.nix-info-tested.x86_64-darwin
jobs.openssh.x86_64-darwin
jobs.openssl.x86_64-darwin
jobs.pandoc.x86_64-darwin
jobs.postgresql.x86_64-darwin
jobs.python3.x86_64-darwin
jobs.ruby.x86_64-darwin
jobs.rustc.x86_64-darwin
# blocking ofBorg CI 2020-02-28
# jobs.stack.x86_64-darwin
jobs.stdenv.x86_64-darwin
jobs.vim.x86_64-darwin
jobs.cachix.x86_64-darwin
# UI apps
# jobs.firefox-unwrapped.x86_64-darwin
jobs.qt5.qtmultimedia.x86_64-darwin
jobs.inkscape.x86_64-darwin
jobs.gimp.x86_64-darwin
jobs.emacs.x86_64-darwin
jobs.wireshark.x86_64-darwin
jobs.transmission-gtk.x86_64-darwin
# Tests
/*
jobs.tests.cc-wrapper.x86_64-darwin
jobs.tests.cc-wrapper-clang.x86_64-darwin
jobs.tests.cc-wrapper-libcxx.x86_64-darwin
jobs.tests.stdenv-inputs.x86_64-darwin
jobs.tests.macOSSierraShared.x86_64-darwin
jobs.tests.patch-shebangs.x86_64-darwin
*/
];
} else null;
unstable = pkgs.releaseTools.aggregate
{ name = "nixpkgs-${jobs.tarball.version}";
meta.description = "Release-critical builds for the Nixpkgs unstable channel";
constituents =
[ jobs.tarball
jobs.metrics
jobs.manual
jobs.lib-tests
jobs.pkgs-lib-tests
jobs.stdenv.x86_64-linux
jobs.cargo.x86_64-linux
jobs.go.x86_64-linux
jobs.linux.x86_64-linux
jobs.pandoc.x86_64-linux
jobs.python3.x86_64-linux
# Needed by contributors to test PRs (by inclusion of the PR template)
jobs.nixpkgs-review.x86_64-linux
# Needed for support
jobs.nix-info.x86_64-linux
jobs.nix-info-tested.x86_64-linux
# Ensure that X11/GTK are in order.
jobs.firefox-unwrapped.x86_64-linux
jobs.cachix.x86_64-linux
/*
jobs.tests.cc-wrapper.x86_64-linux
jobs.tests.cc-wrapper-gcc7.x86_64-linux
jobs.tests.cc-wrapper-gcc8.x86_64-linux
# broken see issue #40038
jobs.tests.cc-wrapper-clang.x86_64-linux
jobs.tests.cc-wrapper-libcxx.x86_64-linux
jobs.tests.cc-wrapper-clang-5.x86_64-linux
jobs.tests.cc-wrapper-libcxx-5.x86_64-linux
jobs.tests.cc-wrapper-clang-6.x86_64-linux
jobs.tests.cc-wrapper-libcxx-6.x86_64-linux
jobs.tests.cc-multilib-gcc.x86_64-linux
jobs.tests.cc-multilib-clang.x86_64-linux
jobs.tests.stdenv-inputs.x86_64-linux
jobs.tests.patch-shebangs.x86_64-linux
*/
]
++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools
++ lib.optionals supportDarwin.x86_64 [
jobs.stdenv.x86_64-darwin
jobs.cargo.x86_64-darwin
jobs.cachix.x86_64-darwin
jobs.go.x86_64-darwin
jobs.python3.x86_64-darwin
jobs.nixpkgs-review.x86_64-darwin
jobs.nix-info.x86_64-darwin
jobs.nix-info-tested.x86_64-darwin
jobs.git.x86_64-darwin
jobs.mariadb.x86_64-darwin
jobs.vim.x86_64-darwin
jobs.inkscape.x86_64-darwin
jobs.qt5.qtmultimedia.x86_64-darwin
/*
jobs.tests.cc-wrapper.x86_64-darwin
jobs.tests.cc-wrapper-gcc7.x86_64-darwin
# jobs.tests.cc-wrapper-gcc8.x86_64-darwin
jobs.tests.cc-wrapper-clang.x86_64-darwin
jobs.tests.cc-wrapper-libcxx.x86_64-darwin
jobs.tests.cc-wrapper-clang-5.x86_64-darwin
jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin
jobs.tests.cc-wrapper-clang-6.x86_64-darwin
jobs.tests.cc-wrapper-libcxx-6.x86_64-darwin
jobs.tests.stdenv-inputs.x86_64-darwin
jobs.tests.macOSSierraShared.x86_64-darwin
jobs.tests.patch-shebangs.x86_64-darwin
*/
];
};
stdenvBootstrapTools = with lib;
genAttrs systemsWithAnySupport
(system: {
inherit
(import ../stdenv/linux/make-bootstrap-tools.nix {
localSystem = { inherit system; };
})
dist test;
})
# darwin is special in this
// optionalAttrs supportDarwin.x86_64 {
x86_64-darwin =
let
bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; };
in {
# Lightweight distribution and test
inherit (bootstrap) dist test;
# Test a full stdenv bootstrap from the bootstrap tools definition
inherit (bootstrap.test-pkgs) stdenv;
};
} // optionalAttrs supportDarwin.aarch64 {
# Cross compiled bootstrap tools
aarch64-darwin =
let
bootstrap = import ../stdenv/darwin/make-bootstrap-tools.nix { system = "x86_64-darwin"; crossSystem = "aarch64-darwin"; };
in {
# Distribution only for now
inherit (bootstrap) dist;
};
};
} // (mapTestOn ((packagePlatforms pkgs) // {
haskell.compiler = packagePlatforms pkgs.haskell.compiler;
haskellPackages = packagePlatforms pkgs.haskellPackages;
idrisPackages = packagePlatforms pkgs.idrisPackages;
agdaPackages = packagePlatforms pkgs.agdaPackages;
pkgsLLVM.stdenv = [ "x86_64-linux" "aarch64-linux" ];
pkgsMusl.stdenv = [ "x86_64-linux" "aarch64-linux" ];
pkgsStatic.stdenv = [ "x86_64-linux" "aarch64-linux" ];
tests = packagePlatforms pkgs.tests;
# Language packages disabled in https://github.com/NixOS/nixpkgs/commit/ccd1029f58a3bb9eca32d81bf3f33cb4be25cc66
#emacsPackages = packagePlatforms pkgs.emacsPackages;
#rPackages = packagePlatforms pkgs.rPackages;
ocamlPackages = { };
perlPackages = { };
darwin = packagePlatforms pkgs.darwin // {
cf-private = {};
xcode = {};
};
} ));
in jobs

File diff suppressed because it is too large Load diff

137
pkgs/top-level/splice.nix Normal file
View file

@ -0,0 +1,137 @@
# The `splicedPackages' package set, and its use by `callPackage`
#
# The `buildPackages` pkg set is a new concept, and the vast majority package
# expression (the other *.nix files) are not designed with it in mind. This
# presents us with a problem with how to get the right version (build-time vs
# run-time) of a package to a consumer that isn't used to thinking so cleverly.
#
# The solution is to splice the package sets together as we do below, so every
# `callPackage`d expression in fact gets both versions. Each# derivation (and
# each derivation's outputs) consists of the run-time version, augmented with a
# `nativeDrv` field for the build-time version, and `crossDrv` field for the
# run-time version.
#
# We could have used any names we want for the disambiguated versions, but
# `crossDrv` and `nativeDrv` were somewhat similarly used for the old
# cross-compiling infrastructure. The names are mostly invisible as
# `mkDerivation` knows how to pull out the right ones for `buildDepends` and
# friends, but a few packages use them directly, so it seemed efficient (to
# @Ericson2314) to reuse those names, at least initially, to minimize breakage.
#
# For performance reasons, rather than uniformally splice in all cases, we only
# do so when `pkgs` and `buildPackages` are distinct. The `actuallySplice`
# parameter there the boolean value of that equality check.
lib: pkgs: actuallySplice:
let
spliceReal = { pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
, pkgsHostHost, pkgsHostTarget
, pkgsTargetTarget
}: let
mash =
# Other pkgs sets
pkgsBuildBuild // pkgsBuildTarget // pkgsHostHost // pkgsTargetTarget
# The same pkgs sets one probably intends
// pkgsBuildHost // pkgsHostTarget;
merge = name: {
inherit name;
value = let
defaultValue = mash.${name};
# `or {}` is for the non-derivation attsert splicing case, where `{}` is the identity.
valueBuildBuild = pkgsBuildBuild.${name} or {};
valueBuildHost = pkgsBuildHost.${name} or {};
valueBuildTarget = pkgsBuildTarget.${name} or {};
valueHostHost = pkgsHostHost.${name} or {};
valueHostTarget = pkgsHostTarget.${name} or {};
valueTargetTarget = pkgsTargetTarget.${name} or {};
augmentedValue = defaultValue
# TODO(@Ericson2314): Stop using old names after transition period
// (lib.optionalAttrs (pkgsBuildHost ? ${name}) { nativeDrv = valueBuildHost; })
// (lib.optionalAttrs (pkgsHostTarget ? ${name}) { crossDrv = valueHostTarget; })
// {
__spliced =
(lib.optionalAttrs (pkgsBuildBuild ? ${name}) { buildBuild = valueBuildBuild; })
// (lib.optionalAttrs (pkgsBuildTarget ? ${name}) { buildTarget = valueBuildTarget; })
// (lib.optionalAttrs (pkgsHostHost ? ${name}) { hostHost = valueHostHost; })
// (lib.optionalAttrs (pkgsTargetTarget ? ${name}) { targetTarget = valueTargetTarget;
});
};
# Get the set of outputs of a derivation. If one derivation fails to
# evaluate we don't want to diverge the entire splice, so we fall back
# on {}
tryGetOutputs = value0: let
inherit (builtins.tryEval value0) success value;
in getOutputs (lib.optionalAttrs success value);
getOutputs = value: lib.genAttrs
(value.outputs or (lib.optional (value ? out) "out"))
(output: value.${output});
in
# The derivation along with its outputs, which we recur
# on to splice them together.
if lib.isDerivation defaultValue then augmentedValue // spliceReal {
pkgsBuildBuild = tryGetOutputs valueBuildBuild;
pkgsBuildHost = tryGetOutputs valueBuildHost;
pkgsBuildTarget = tryGetOutputs valueBuildTarget;
pkgsHostHost = tryGetOutputs valueHostHost;
pkgsHostTarget = getOutputs valueHostTarget;
pkgsTargetTarget = tryGetOutputs valueTargetTarget;
# Just recur on plain attrsets
} else if lib.isAttrs defaultValue then spliceReal {
pkgsBuildBuild = valueBuildBuild;
pkgsBuildHost = valueBuildHost;
pkgsBuildTarget = valueBuildTarget;
pkgsHostHost = valueHostHost;
pkgsHostTarget = valueHostTarget;
pkgsTargetTarget = valueTargetTarget;
# Don't be fancy about non-derivations. But we could have used used
# `__functor__` for functions instead.
} else defaultValue;
};
in lib.listToAttrs (map merge (lib.attrNames mash));
splicePackages = { pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
, pkgsHostHost, pkgsHostTarget
, pkgsTargetTarget
} @ args:
if actuallySplice then spliceReal args else pkgsHostTarget;
splicedPackages = splicePackages {
inherit (pkgs)
pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
pkgsHostHost pkgsHostTarget
pkgsTargetTarget
;
} // {
# These should never be spliced under any circumstances
inherit (pkgs)
pkgsBuildBuild pkgsBuildHost pkgsBuildTarget
pkgsHostHost pkgsHostTarget
pkgsTargetTarget
buildPackages pkgs targetPackages
;
inherit (pkgs.stdenv) buildPlatform targetPlatform hostPlatform;
};
splicedPackagesWithXorg = splicedPackages // builtins.removeAttrs splicedPackages.xorg [
"callPackage" "newScope" "overrideScope" "packages"
];
in
{
inherit splicePackages;
# We use `callPackage' to be able to omit function arguments that can be
# obtained `pkgs` or `buildPackages` and their `xorg` package sets. Use
# `newScope' for sets of packages in `pkgs' (see e.g. `gnome' below).
callPackage = pkgs.newScope {};
callPackages = lib.callPackagesWith splicedPackagesWithXorg;
newScope = extra: lib.callPackageWith (splicedPackagesWithXorg // extra);
# Haskell package sets need this because they reimplement their own
# `newScope`.
__splicedPackages = splicedPackages // { recurseForDerivations = false; };
}

284
pkgs/top-level/stage.nix Normal file
View file

@ -0,0 +1,284 @@
/* This file composes a single bootstrapping stage of the Nix Packages
collection. That is, it imports the functions that build the various
packages, and calls them with appropriate arguments. The result is a set of
all the packages in the Nix Packages collection for some particular platform
for some particular stage.
Default arguments are only provided for bootstrapping
arguments. Normal users should not import this directly but instead
import `pkgs/default.nix` or `default.nix`. */
{ ## Misc parameters kept the same for all stages
##
# Utility functions, could just import but passing in for efficiency
lib
, # Use to reevaluate Nixpkgs
nixpkgsFun
## Other parameters
##
, # Either null or an object in the form:
#
# {
# pkgsBuildBuild = ...;
# pkgsBuildHost = ...;
# pkgsBuildTarget = ...;
# pkgsHostHost = ...;
# # pkgsHostTarget skipped on purpose.
# pkgsTargetTarget ...;
# }
#
# These are references to adjacent bootstrapping stages. The more familiar
# `buildPackages` and `targetPackages` are defined in terms of them. If null,
# they are instead defined internally as the current stage. This allows us to
# avoid expensive splicing. `pkgsHostTarget` is skipped because it is always
# defined as the current stage.
adjacentPackages
, # The standard environment to use for building packages.
stdenv
, # This is used because stdenv replacement and the stdenvCross do benefit from
# the overridden configuration provided by the user, as opposed to the normal
# bootstrapping stdenvs.
allowCustomOverrides
, # Non-GNU/Linux OSes are currently "impure" platforms, with their libc
# outside of the store. Thus, GCC, GFortran, & co. must always look for files
# in standard system directories (/usr/include, etc.)
noSysDirs ? stdenv.buildPlatform.system != "x86_64-freebsd"
&& stdenv.buildPlatform.system != "i686-freebsd"
&& stdenv.buildPlatform.system != "x86_64-solaris"
&& stdenv.buildPlatform.system != "x86_64-kfreebsd-gnu"
, # The configuration attribute set
config
, # A list of overlays (Additional `self: super: { .. }` customization
# functions) to be fixed together in the produced package set
overlays
} @args:
let
# This is a function from parsed platforms (like
# stdenv.hostPlatform.parsed) to parsed platforms.
makeMuslParsedPlatform = parsed:
# The following line guarantees that the output of this function
# is a well-formed platform with no missing fields. It will be
# uncommented in a separate PR, in case it breaks the build.
#(x: lib.trivial.pipe x [ (x: builtins.removeAttrs x [ "_type" ]) lib.systems.parse.mkSystem ])
(parsed // {
abi = {
gnu = lib.systems.parse.abis.musl;
gnueabi = lib.systems.parse.abis.musleabi;
gnueabihf = lib.systems.parse.abis.musleabihf;
gnuabin32 = lib.systems.parse.abis.muslabin32;
gnuabi64 = lib.systems.parse.abis.muslabi64;
# The following two entries ensure that this function is idempotent.
musleabi = lib.systems.parse.abis.musleabi;
musleabihf = lib.systems.parse.abis.musleabihf;
muslabin32 = lib.systems.parse.abis.muslabin32;
muslabi64 = lib.systems.parse.abis.muslabi64;
}.${parsed.abi.name}
or lib.systems.parse.abis.musl;
});
stdenvAdapters = self: super:
let
res = import ../stdenv/adapters.nix {
inherit lib config;
pkgs = self;
};
in res // {
stdenvAdapters = res;
};
trivialBuilders = self: super:
import ../build-support/trivial-builders.nix {
inherit lib;
inherit (self) runtimeShell stdenv stdenvNoCC;
inherit (self.pkgsBuildHost) shellcheck;
inherit (self.pkgsBuildHost.xorg) lndir;
};
stdenvBootstappingAndPlatforms = self: super: let
withFallback = thisPkgs:
(if adjacentPackages == null then self else thisPkgs)
// { recurseForDerivations = false; };
in {
# Here are package sets of from related stages. They are all in the form
# `pkgs{theirHost}{theirTarget}`. For example, `pkgsBuildHost` means their
# host platform is our build platform, and their target platform is our host
# platform. We only care about their host/target platforms, not their build
# platform, because the the former two alone affect the interface of the
# final package; the build platform is just an implementation detail that
# should not leak.
pkgsBuildBuild = withFallback adjacentPackages.pkgsBuildBuild;
pkgsBuildHost = withFallback adjacentPackages.pkgsBuildHost;
pkgsBuildTarget = withFallback adjacentPackages.pkgsBuildTarget;
pkgsHostHost = withFallback adjacentPackages.pkgsHostHost;
pkgsHostTarget = self // { recurseForDerivations = false; }; # always `self`
pkgsTargetTarget = withFallback adjacentPackages.pkgsTargetTarget;
# Older names for package sets. Use these when only the host platform of the
# package set matter (i.e. use `buildPackages` where any of `pkgsBuild*`
# would do, and `targetPackages` when any of `pkgsTarget*` would do (if we
# had more than just `pkgsTargetTarget`).)
buildPackages = self.pkgsBuildHost;
pkgs = self.pkgsHostTarget;
targetPackages = self.pkgsTargetTarget;
inherit stdenv;
};
# The old identifiers for cross-compiling. These should eventually be removed,
# and the packages that rely on them refactored accordingly.
platformCompat = self: super: let
inherit (super.stdenv) buildPlatform hostPlatform targetPlatform;
in {
inherit buildPlatform hostPlatform targetPlatform;
};
splice = self: super: import ./splice.nix lib self (adjacentPackages != null);
allPackages = self: super:
let res = import ./all-packages.nix
{ inherit lib noSysDirs config overlays; }
res self super;
in res;
aliases = self: super: lib.optionalAttrs config.allowAliases (import ./aliases.nix lib self super);
# stdenvOverrides is used to avoid having multiple of versions
# of certain dependencies that were used in bootstrapping the
# standard environment.
stdenvOverrides = self: super:
(super.stdenv.overrides or (_: _: {})) self super;
# Allow packages to be overridden globally via the `packageOverrides'
# configuration option, which must be a function that takes `pkgs'
# as an argument and returns a set of new or overridden packages.
# The `packageOverrides' function is called with the *original*
# (un-overridden) set of packages, allowing packageOverrides
# attributes to refer to the original attributes (e.g. "foo =
# ... pkgs.foo ...").
configOverrides = self: super:
lib.optionalAttrs allowCustomOverrides
((config.packageOverrides or (super: {})) super);
# Convenience attributes for instantitating package sets. Each of
# these will instantiate a new version of allPackages. Currently the
# following package sets are provided:
#
# - pkgsCross.<system> where system is a member of lib.systems.examples
# - pkgsMusl
# - pkgsi686Linux
otherPackageSets = self: super: {
# This maps each entry in lib.systems.examples to its own package
# set. Each of these will contain all packages cross compiled for
# that target system. For instance, pkgsCross.raspberryPi.hello,
# will refer to the "hello" package built for the ARM6-based
# Raspberry Pi.
pkgsCross = lib.mapAttrs (n: crossSystem:
nixpkgsFun { inherit crossSystem; })
lib.systems.examples;
pkgsLLVM = nixpkgsFun {
overlays = [
(self': super': {
pkgsLLVM = super';
})
] ++ overlays;
# Bootstrap a cross stdenv using the LLVM toolchain.
# This is currently not possible when compiling natively,
# so we don't need to check hostPlatform != buildPlatform.
crossSystem = stdenv.hostPlatform // {
useLLVM = true;
linker = "lld";
};
};
# All packages built with the Musl libc. This will override the
# default GNU libc on Linux systems. Non-Linux systems are not
# supported.
pkgsMusl = if stdenv.hostPlatform.isLinux then nixpkgsFun {
overlays = [ (self': super': {
pkgsMusl = super';
})] ++ overlays;
${if stdenv.hostPlatform == stdenv.buildPlatform
then "localSystem" else "crossSystem"} = {
parsed = makeMuslParsedPlatform stdenv.hostPlatform.parsed;
};
} else throw "Musl libc only supports Linux systems.";
# All packages built for i686 Linux.
# Used by wine, firefox with debugging version of Flash, ...
pkgsi686Linux = if stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86 then nixpkgsFun {
overlays = [ (self': super': {
pkgsi686Linux = super';
})] ++ overlays;
${if stdenv.hostPlatform == stdenv.buildPlatform
then "localSystem" else "crossSystem"} = {
parsed = stdenv.hostPlatform.parsed // {
cpu = lib.systems.parse.cpuTypes.i686;
};
};
} else throw "i686 Linux package set can only be used with the x86 family.";
# Extend the package set with zero or more overlays. This preserves
# preexisting overlays. Prefer to initialize with the right overlays
# in one go when calling Nixpkgs, for performance and simplicity.
appendOverlays = extraOverlays:
if extraOverlays == []
then self
else nixpkgsFun { overlays = args.overlays ++ extraOverlays; };
# NOTE: each call to extend causes a full nixpkgs rebuild, adding ~130MB
# of allocations. DO NOT USE THIS IN NIXPKGS.
#
# Extend the package set with a single overlay. This preserves
# preexisting overlays. Prefer to initialize with the right overlays
# in one go when calling Nixpkgs, for performance and simplicity.
# Prefer appendOverlays if used repeatedly.
extend = f: self.appendOverlays [f];
# Fully static packages.
# Currently uses Musl on Linux (couldnt get static glibc to work).
pkgsStatic = nixpkgsFun ({
overlays = [ (self': super': {
pkgsStatic = super';
})] ++ overlays;
} // lib.optionalAttrs stdenv.hostPlatform.isLinux {
crossSystem = {
isStatic = true;
parsed = makeMuslParsedPlatform stdenv.hostPlatform.parsed;
} // lib.optionalAttrs (stdenv.hostPlatform.system == "powerpc64-linux") {
gcc.abi = "elfv2";
};
});
};
# The complete chain of package set builders, applied from top to bottom.
# stdenvOverlays must be last as it brings package forward from the
# previous bootstrapping phases which have already been overlayed.
toFix = lib.foldl' (lib.flip lib.extends) (self: {}) ([
stdenvBootstappingAndPlatforms
platformCompat
stdenvAdapters
trivialBuilders
splice
allPackages
otherPackageSets
aliases
configOverrides
] ++ overlays ++ [
stdenvOverrides ]);
in
# Return the complete set of packages.
lib.fix toFix

View file

@ -0,0 +1,196 @@
{ pkgs, buildEnv, runCommand, lib, stdenv }:
# These are some unix tools that are commonly included in the /usr/bin
# and /usr/sbin directory under more normal distributions. Along with
# coreutils, these are commonly assumed to be available by build
# systems, but we can't assume they are available. In Nix, we list
# each program by name directly through this unixtools attribute.
# You should always try to use single binaries when available. For
# instance, if your program needs to use "ps", just list it as a build
# input, not "procps" which requires Linux.
with lib;
let
version = "1003.1-2008";
singleBinary = cmd: providers: let
provider = providers.${stdenv.hostPlatform.parsed.kernel.name} or providers.linux;
bin = "${getBin provider}/bin/${cmd}";
manpage = "${getOutput "man" provider}/share/man/man1/${cmd}.1.gz";
in runCommand "${cmd}-${provider.name}" {
meta = {
mainProgram = cmd;
priority = 10;
platforms = lib.platforms.${stdenv.hostPlatform.parsed.kernel.name} or lib.platforms.all;
};
passthru = { inherit provider; };
preferLocalBuild = true;
} ''
if ! [ -x ${bin} ]; then
echo Cannot find command ${cmd}
exit 1
fi
mkdir -p $out/bin
ln -s ${bin} $out/bin/${cmd}
if [ -f ${manpage} ]; then
mkdir -p $out/share/man/man1
ln -s ${manpage} $out/share/man/man1/${cmd}.1.gz
fi
'';
# more is unavailable in darwin
# so we just use less
more_compat = runCommand "more-${pkgs.less.name}" {} ''
mkdir -p $out/bin
ln -s ${pkgs.less}/bin/less $out/bin/more
'';
bins = mapAttrs singleBinary {
# singular binaries
arp = {
linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds;
};
col = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.text_cmds;
};
column = {
linux = pkgs.util-linux;
darwin = pkgs.netbsd.column;
};
eject = {
linux = pkgs.util-linux;
};
getconf = {
linux = if stdenv.hostPlatform.libc == "glibc" then pkgs.stdenv.cc.libc
else pkgs.netbsd.getconf;
darwin = pkgs.darwin.system_cmds;
};
getent = {
linux = if stdenv.hostPlatform.libc == "glibc" then pkgs.stdenv.cc.libc
else pkgs.netbsd.getent;
darwin = pkgs.netbsd.getent;
};
getopt = {
linux = pkgs.util-linux;
darwin = pkgs.getopt;
};
fdisk = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.diskdev_cmds;
};
fsck = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.diskdev_cmds;
};
hexdump = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.shell_cmds;
};
hostname = {
linux = pkgs.nettools;
darwin = pkgs.darwin.shell_cmds;
};
ifconfig = {
linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds;
};
killall = {
linux = pkgs.psmisc;
darwin = pkgs.darwin.shell_cmds;
};
locale = {
linux = pkgs.glibc;
darwin = pkgs.netbsd.locale;
};
logger = {
linux = pkgs.util-linux;
};
more = {
linux = pkgs.util-linux;
darwin = more_compat;
};
mount = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.diskdev_cmds;
};
netstat = {
linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds;
};
ping = {
linux = pkgs.iputils;
darwin = pkgs.darwin.network_cmds;
};
ps = {
linux = pkgs.procps;
darwin = pkgs.darwin.ps;
};
quota = {
linux = pkgs.linuxquota;
darwin = pkgs.darwin.diskdev_cmds;
};
route = {
linux = pkgs.nettools;
darwin = pkgs.darwin.network_cmds;
};
script = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.shell_cmds;
};
sysctl = {
linux = pkgs.procps;
darwin = pkgs.darwin.system_cmds;
};
top = {
linux = pkgs.procps;
darwin = pkgs.darwin.top;
};
umount = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.diskdev_cmds;
};
whereis = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.shell_cmds;
};
wall = {
linux = pkgs.util-linux;
};
watch = {
linux = pkgs.procps;
# watch is the only command from procps that builds currently on
# Darwin. Unfortunately no other implementations exist currently!
darwin = pkgs.callPackage ../os-specific/linux/procps-ng {};
};
write = {
linux = pkgs.util-linux;
darwin = pkgs.darwin.basic_cmds;
};
xxd = {
linux = pkgs.vim;
darwin = pkgs.vim;
};
};
makeCompat = pname: paths:
buildEnv {
name = "${pname}-${version}";
inherit paths;
};
# Compatibility derivations
# Provided for old usage of these commands.
compat = with bins; lib.mapAttrs makeCompat {
procps = [ ps sysctl top watch ];
util-linux = [ fsck fdisk getopt hexdump mount
script umount whereis write col column ];
nettools = [ arp hostname ifconfig netstat route ];
};
in bins // compat

View file

@ -0,0 +1,60 @@
{ stdenv, config, callPackage, wineBuild }:
rec {
fonts = callPackage ../applications/emulators/wine/fonts.nix {};
minimal = callPackage ../applications/emulators/wine {
wineRelease = config.wine.release or "stable";
inherit wineBuild;
};
base = minimal.override {
gettextSupport = true;
fontconfigSupport = stdenv.isLinux;
alsaSupport = stdenv.isLinux;
openglSupport = true;
# Works on Darwin but disabled by default to prevent Hydra build failures due to MoltenVK.
vulkanSupport = stdenv.isLinux;
tlsSupport = true;
cupsSupport = true;
dbusSupport = stdenv.isLinux;
cairoSupport = stdenv.isLinux;
cursesSupport = true;
saneSupport = stdenv.isLinux;
pulseaudioSupport = config.pulseaudio or stdenv.isLinux;
udevSupport = stdenv.isLinux;
xineramaSupport = stdenv.isLinux;
sdlSupport = true;
mingwSupport = true;
usbSupport = true;
};
full = base.override {
gtkSupport = stdenv.isLinux;
gstreamerSupport = true;
openalSupport = true;
openclSupport = true;
odbcSupport = true;
netapiSupport = stdenv.isLinux;
vaSupport = stdenv.isLinux;
pcapSupport = true;
v4lSupport = stdenv.isLinux;
gphoto2Support = true;
krb5Support = true;
ldapSupport = true;
# Works on Darwin but disabled by default to prevent Hydra build failures due to MoltenVK.
vkd3dSupport = stdenv.isLinux;
embedInstallers = true;
};
stable = base.override { wineRelease = "stable"; };
stableFull = full.override { wineRelease = "stable"; };
unstable = base.override { wineRelease = "unstable"; };
unstableFull = full.override { wineRelease = "unstable"; };
staging = base.override { wineRelease = "staging"; };
stagingFull = full.override { wineRelease = "staging"; };
wayland = base.override { wineRelease = "wayland"; };
waylandFull = full.override { wineRelease = "wayland"; };
}