Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2024-03-12 06:01:24 +00:00 committed by GitHub
commit 0917422ffe
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
36 changed files with 1485 additions and 382 deletions

View File

@ -262,6 +262,10 @@ or
***
```
This function should only be used by non-redistributable software with an unfree license that we need to require the user to download manually.
It produces packages that cannot be built automatically.
## `fetchtorrent` {#fetchtorrent}
`fetchtorrent` expects two arguments. `url` which can either be a Magnet URI (Magnet Link) such as `magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c` or an HTTP URL pointing to a `.torrent` file. It can also take a `config` argument which will craft a `settings.json` configuration file and give it to `transmission`, the underlying program that is performing the fetch. The available config options for `transmission` can be found [here](https://github.com/transmission/transmission/blob/main/docs/Editing-Configuration-Files.md#options)

View File

@ -7,7 +7,9 @@ Like [`stdenv.mkDerivation`](#sec-using-stdenv), each of these build helpers cre
`runCommand :: String -> AttrSet -> String -> Derivation`
`runCommand name drvAttrs buildCommand` returns a derivation that is built by running the specified shell commands.
The result of `runCommand name drvAttrs buildCommand` is a derivation that is built by running the specified shell commands.
By default `runCommand` runs in a stdenv with no compiler environment, whereas [`runCommandCC`](#trivial-builder-runCommandCC) uses the default stdenv, `pkgs.stdenv`.
`name :: String`
: The name that Nix will append to the store path in the same way that `stdenv.mkDerivation` uses its `name` attribute.
@ -153,6 +155,12 @@ Write a text file to the Nix store.
Default: `true`
`derivationArgs` (Attribute set, _optional_)
: Extra arguments to pass to the underlying call to `stdenv.mkDerivation`.
Default: `{}`
The resulting store path will include some variation of the name, and it will be a file unless `destination` is used, in which case it will be a directory.
::: {.example #ex-writeTextFile}

View File

@ -164,19 +164,24 @@ in
"network-online.target"
"lxcfs.service"
"incus.socket"
];
]
++ lib.optional config.virtualisation.vswitch.enable "ovs-vswitchd.service";
requires = [
"lxcfs.service"
"incus.socket"
];
]
++ lib.optional config.virtualisation.vswitch.enable "ovs-vswitchd.service";
wants = [
"network-online.target"
];
path = lib.mkIf config.boot.zfs.enabled [
path = lib.optional config.boot.zfs.enabled [
config.boot.zfs.package
"${config.boot.zfs.package}/lib/udev"
];
]
++ lib.optional config.virtualisation.vswitch.enable config.virtualisation.vswitch.package;
environment = lib.mkMerge [ {
# Override Path to the LXC template configuration directory

View File

@ -11,6 +11,7 @@
boot.initrd.systemd.enable = true;
}; };
lxd-to-incus = import ./lxd-to-incus.nix { inherit system pkgs; };
openvswitch = import ./openvswitch.nix { inherit system pkgs; };
preseed = import ./preseed.nix { inherit system pkgs; };
socket-activated = import ./socket-activated.nix { inherit system pkgs; };
ui = import ./ui.nix {inherit system pkgs;};

View File

@ -0,0 +1,65 @@
import ../make-test-python.nix ({ pkgs, lib, ... } :
{
name = "incus-openvswitch";
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = { lib, ... }: {
virtualisation = {
incus.enable = true;
vswitch.enable = true;
incus.preseed = {
networks = [
{
name = "nixostestbr0";
type = "bridge";
config = {
"bridge.driver" = "openvswitch";
"ipv4.address" = "10.0.100.1/24";
"ipv4.nat" = "true";
};
}
];
profiles = [
{
name = "nixostest_default";
devices = {
eth0 = {
name = "eth0";
network = "nixostestbr0";
type = "nic";
};
root = {
path = "/";
pool = "default";
size = "35GiB";
type = "disk";
};
};
}
];
storage_pools = [
{
name = "nixostest_pool";
driver = "dir";
}
];
};
};
networking.nftables.enable = true;
};
testScript = ''
machine.wait_for_unit("incus.service")
machine.wait_for_unit("incus-preseed.service")
with subtest("Verify openvswitch bridge"):
machine.succeed("incus network info nixostestbr0")
with subtest("Verify openvswitch bridge"):
machine.succeed("ovs-vsctl br-exists nixostestbr0")
'';
})

View File

@ -40,13 +40,13 @@
stdenv.mkDerivation rec {
pname = "keepassxc";
version = "2.7.6";
version = "2.7.7";
src = fetchFromGitHub {
owner = "keepassxreboot";
repo = "keepassxc";
rev = version;
hash = "sha256-xgrkMz7BCBxjfxHsAz/CFLv1d175LnrAJIOZMM3GmU0=";
hash = "sha256-HjDzb1H3eMSraKbfHgg9S+w4TXNt40lQkDz+EChb5Ks=";
};
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang (toString [

View File

@ -57,6 +57,7 @@ let
"8.17.1".sha256 = "sha256-x+RwkbxMg9aR0L3WSCtpIz8jwA5cJA4tXAtHMZb20y4=";
"8.18.0".sha256 = "sha256-WhiBs4nzPHQ0R24xAdM49kmxSCPOxiOVMA1iiMYunz4=";
"8.19.0".sha256 = "sha256-ixsYCvCXpBHqJ71hLQklphlwoOO3i/6w2PJjllKqf9k=";
"8.19.1".sha256 = "sha256-kmZ8Uk8jpzjOd67aAPp3C+vU2oNaBw9pr7+Uixcgg94=";
};
releaseRev = v: "V${v}";
fetched = import ../../../../build-support/coq/meta-fetch/default.nix

View File

@ -3,13 +3,13 @@
buildKodiAddon rec {
pname = "orftvthek";
namespace = "plugin.video.orftvthek";
version = "0.12.6";
version = "0.12.9";
src = fetchFromGitHub {
owner = "s0faking";
repo = namespace;
rev = version;
sha256 = "sha256-r18vQ+2TSeflwByEAX33vIZG5qIGneraf5rLBugl5BU=";
sha256 = "sha256-bqGY9PPukn5/HJa3OqU5NM+ReeDJdVn60jXh1+2Qef8=";
};
propagatedBuildInputs = [

View File

@ -1200,6 +1200,7 @@ rec {
# Root certificates for internet access
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
NIX_SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
# https://github.com/NixOS/nix/blob/2.8.0/src/libstore/build/local-derivation-goal.cc#L1027-L1030
# PATH = "/path-not-set";

View File

@ -9,55 +9,24 @@ in
rec {
/*
Run the shell command `buildCommand` to produce a store path named `name`.
The attributes in `env` are added to the environment prior to running the command.
Environment variables set by `stdenv.mkDerivation` take precedence.
By default `runCommand` runs in a stdenv with no compiler environment.
`runCommandCC` uses the default stdenv, `pkgs.stdenv`.
Example:
```nix
runCommand "name" {envVariable = true;} ''echo hello > $out'';
```
```nix
runCommandCC "name" {} ''gcc -o myfile myfile.c; cp myfile $out'';
```
The `*Local` variants force a derivation to be built locally,
it is not substituted.
This is intended for very cheap commands (<1s execution time).
It saves on the network roundrip and can speed up a build.
It is the same as adding the special fields
```nix
{
preferLocalBuild = true;
allowSubstitutes = false;
}
```
to a derivations attributes.
*/
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-runCommand
runCommand = name: env: runCommandWith {
stdenv = stdenvNoCC;
runLocal = false;
inherit name;
derivationArgs = env;
};
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-runCommandLocal
runCommandLocal = name: env: runCommandWith {
stdenv = stdenvNoCC;
runLocal = true;
inherit name;
derivationArgs = env;
};
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-runCommandCC
runCommandCC = name: env: runCommandWith {
stdenv = stdenv;
runLocal = false;
@ -67,6 +36,7 @@ rec {
# `runCommandCCLocal` left out on purpose.
# We shouldnt force the user to have a cc in scope.
# TODO: Move documentation for runCommandWith to the Nixpkgs manual
/*
Generalized version of the `runCommand`-variants
which does customized behavior via a single
@ -112,47 +82,18 @@ rec {
// builtins.removeAttrs derivationArgs [ "passAsFile" ]);
/*
Writes a text file to the nix store.
The contents of text is added to the file in the store.
Example:
# Writes my-file to /nix/store/<store path>
writeTextFile {
name = "my-file";
text = ''
Contents of File
'';
}
See also the `writeText` helper function below.
# Writes executable my-file to /nix/store/<store path>/bin/my-file
writeTextFile {
name = "my-file";
text = ''
Contents of File
'';
executable = true;
destination = "/bin/my-file";
}
*/
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeTextFile
writeTextFile =
{ name # the name of the derivation
{ name
, text
, executable ? false # run chmod +x ?
, destination ? "" # relative path appended to $out eg "/bin/foo"
, checkPhase ? "" # syntax checks, e.g. for scripts
, executable ? false
, destination ? ""
, checkPhase ? ""
, meta ? { }
, allowSubstitutes ? false
, preferLocalBuild ? true
, derivationArgs ? { } # Extra arguments to pass to `stdenv.mkDerivation`
, derivationArgs ? { }
}:
let
matches = builtins.match "/bin/([^/]+)" destination;
@ -240,8 +181,9 @@ rec {
meta.mainProgram = name;
};
# TODO: move parameter documentation to the Nixpkgs manual
# See doc/build-helpers/trivial-build-helpers.chapter.md
# or https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-text-writing
# or https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeShellApplication
writeShellApplication =
{
/*
@ -357,6 +299,7 @@ rec {
};
# Create a C binary
# TODO: add to writers? pkgs/build-support/writers
writeCBin = pname: code:
runCommandCC pname
{
@ -377,7 +320,9 @@ rec {
$CC -x c code.c -o "$n"
'';
# TODO: deduplicate with documentation in doc/build-helpers/trivial-build-helpers.chapter.md
# see also https://github.com/NixOS/nixpkgs/pull/249721
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-concatText
/* concat a list of files to the nix store.
The contents of files are added to the file in the store.
@ -426,7 +371,9 @@ rec {
eval "$checkPhase"
'';
# TODO: deduplicate with documentation in doc/build-helpers/trivial-build-helpers.chapter.md
# see also https://github.com/NixOS/nixpkgs/pull/249721
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-concatText
/*
Writes a text file to nix store with no optional parameters available.
@ -440,6 +387,9 @@ rec {
*/
concatText = name: files: concatTextFile { inherit name files; };
# TODO: deduplicate with documentation in doc/build-helpers/trivial-build-helpers.chapter.md
# see also https://github.com/NixOS/nixpkgs/pull/249721
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-concatText
/*
Writes a text file to nix store with and mark it as executable.
@ -452,6 +402,10 @@ rec {
/*
TODO: Deduplicate this documentation.
More docs in doc/build-helpers/trivial-build-helpers.chapter.md
See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-symlinkJoin
Create a forest of symlinks to the files in `paths`.
This creates a single derivation that replicates the directory structure
@ -528,6 +482,7 @@ rec {
${postBuild}
'';
# TODO: move linkFarm docs to the Nixpkgs manual
/*
Quickly create a set of symlinks to derivations.
@ -584,6 +539,7 @@ rec {
${lib.concatStrings linkCommands}
'';
# TODO: move linkFarmFromDrvs docs to the Nixpkgs manual
/*
Easily create a linkFarm from a set of derivations.
@ -609,6 +565,7 @@ rec {
let mkEntryFromDrv = drv: { name = drv.name; path = drv; };
in linkFarm name (map mkEntryFromDrv drvs);
# TODO: move onlyBin docs to the Nixpkgs manual
/*
Produce a derivation that links to the target derivation's `/bin`,
and *only* `/bin`.
@ -623,7 +580,8 @@ rec {
'';
# docs in doc/builders/special/makesetuphook.section.md
# Docs in doc/builders/special/makesetuphook.section.md
# See https://nixos.org/manual/nixpkgs/unstable/#sec-pkgs.makeSetupHook
makeSetupHook =
{ name ? lib.warn "calling makeSetupHook without passing a name is deprecated." "hook"
, deps ? [ ]
@ -665,8 +623,8 @@ rec {
'');
# Write the references (i.e. the runtime dependencies in the Nix store) of `path` to a file.
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeReferencesToFile
writeReferencesToFile = path: runCommand "runtime-deps"
{
exportReferencesGraph = [ "graph" path ];
@ -681,11 +639,8 @@ rec {
done < graph
'';
/*
Write the set of references to a file, that is, their immediate dependencies.
This produces the equivalent of `nix-store -q --references`.
*/
# Docs in doc/build-helpers/trivial-build-helpers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#trivial-builder-writeDirectReferencesToFile
writeDirectReferencesToFile = path: runCommand "runtime-references"
{
exportReferencesGraph = [ "graph" path ];
@ -710,7 +665,7 @@ rec {
sort ./references >$out
'';
# TODO: move writeStringReferencesToFile docs to the Nixpkgs manual
/*
Extract a string's references to derivations and paths (its
context) and write them to a text file, removing the input string
@ -793,21 +748,8 @@ rec {
writeDirectReferencesToFile (writeText "string-file" string);
/* Print an error message if the file with the specified name and
hash doesn't exist in the Nix store. This function should only
be used by non-redistributable software with an unfree license
that we need to require the user to download manually. It produces
packages that cannot be built automatically.
Example:
requireFile {
name = "my-file";
url = "http://example.com/download/";
sha256 = "ffffffffffffffffffffffffffffffffffffffffffffffffffff";
}
*/
# Docs in doc/build-helpers/fetchers.chapter.md
# See https://nixos.org/manual/nixpkgs/unstable/#requirefile
requireFile =
{ name ? null
, sha256 ? null
@ -863,6 +805,7 @@ rec {
};
# TODO: move copyPathToStore docs to the Nixpkgs manual
/*
Copy a path to the Nix store.
Nix automatically copies files to the store before stringifying paths.
@ -872,11 +815,13 @@ rec {
copyPathToStore = builtins.filterSource (p: t: true);
# TODO: move copyPathsToStore docs to the Nixpkgs manual
/*
Copy a list of paths to the Nix store.
*/
copyPathsToStore = builtins.map copyPathToStore;
# TODO: move applyPatches docs to the Nixpkgs manual
/* Applies a list of patches to a source directory.
Example:
@ -922,6 +867,7 @@ rec {
// (optionalAttrs (src?meta) { inherit (src) meta; })
// (removeAttrs args [ "src" "name" "patches" "prePatch" "postPatch" ]));
# TODO: move docs to Nixpkgs manual
/* An immutable file in the store with a length of 0 bytes. */
emptyFile = runCommand "empty-file"
{
@ -931,6 +877,7 @@ rec {
preferLocalBuild = true;
} "touch $out";
# TODO: move docs to Nixpkgs manual
/* An immutable empty directory in the store. */
emptyDirectory = runCommand "empty-directory"
{

View File

@ -0,0 +1,66 @@
{ lib, stdenv, fetchFromGitHub, fetchzip, pkg-config, wine64, enableJackAssWine64 ? false }:
let
# equal to vst-sdk in ../oxefmsynth/default.nix
vst-sdk = stdenv.mkDerivation (finalAttrs: {
name = "vstsdk3610_11_06_2018_build_37";
src = fetchzip {
url = "https://web.archive.org/web/20181016150224if_/https://download.steinberg.net/sdk_downloads/${finalAttrs.name}.zip";
hash = "sha256-cjYakxnqSDqSZ32FPK3OUhDpslOlavHh5SAVpng0QTU=";
};
installPhase = ''
runHook preInstall
cp -r . $out
runHook postInstall
'';
});
in
stdenv.mkDerivation (finalAttrs: {
pname = "jackass";
version = "1.1";
src = fetchFromGitHub {
owner = "falkTX";
repo = "JackAss";
rev = "v${finalAttrs.version}";
hash = "sha256-6mqG4H6iGvDbGnmMeP/vcvSnvUGClZUl06XpKovt50E=";
};
postPatch = ''
cp -r ${vst-sdk}/VST2_SDK/{public.sdk,pluginterfaces} vstsdk2.4
'';
nativeBuildInputs = [ pkg-config ] ++ lib.optionals enableJackAssWine64 [ wine64 ];
makeFlags = [ "linux" ] ++ lib.optionals enableJackAssWine64 [ "wine64" ];
installPhase = ''
runHook preInstall
install_dir="$out/lib/vst"
mkdir -p $install_dir
for file in JackAss.so JackAssWine64.dll; do
if test -f "$file"; then
cp $file $install_dir
fi
done
runHook postInstall
'';
enableParallelBuilding = true;
meta = with lib; {
description = "JackAss is a VST plugin that provides JACK-MIDI support for VST hosts.";
longDescription = ''
Simply load the plugin in your favourite host to get a JACK-MIDI port.
Optionally includes a special Wine build for running in Wine
applications. Set enableJackAssWine64 to true to enable this output.
'';
homepage = "https://github.com/falkTX/JackAss";
maintainers = with maintainers; [ PowerUser64 ];
license = with licenses; [ mit unfree ];
platforms = platforms.linux;
};
})

View File

@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "pqiv";
version = "2.13";
version = "2.13.1";
src = fetchFromGitHub {
owner = "phillipberndt";
repo = "pqiv";
rev = finalAttrs.version;
hash = "sha256-Jlc6sd9lRWUC1/2GZnJ0EmVRHxCXP8dTZNZEhJBS7oQ=";
hash = "sha256-Op+N4zzq7MazjFvx5VisjsRXbIqLtWPv4hdVjmS7lPY=";
};
nativeBuildInputs = [ pkg-config ];

View File

@ -5,14 +5,14 @@ then throw "camlpdf is not available for OCaml ${ocaml.version}"
else
stdenv.mkDerivation rec {
version = "2.6";
version = "2.7";
pname = "ocaml${ocaml.version}-camlpdf";
src = fetchFromGitHub {
owner = "johnwhitington";
repo = "camlpdf";
rev = "v${version}";
hash = "sha256-CJWVvZSbvSzG3PIr7w0vmbmY6tH59AgBAWRfDpQ9MCk=";
hash = "sha256-SVmLWffB7GF+Bu0tj5fIvQVMRh6uV3u2G3rC4cVH2Gw=";
};
nativeBuildInputs = [ which ocaml findlib ];

View File

@ -6,13 +6,13 @@ else
stdenv.mkDerivation rec {
pname = "ocaml${ocaml.version}-cpdf";
version = "2.6";
version = "2.7";
src = fetchFromGitHub {
owner = "johnwhitington";
repo = "cpdf-source";
rev = "v${version}";
hash = "sha256-5gEv/lmca3FR16m4uxbCJ3y/XtTSBvoIojeKszc24ss=";
hash = "sha256-Tm+xvL2HNdQsD04I9eR9tLL0bs5Ls2q+IndLV/p9sHs=";
};
nativeBuildInputs = [ ocaml findlib ];

View File

@ -16,7 +16,7 @@ php.buildComposerProject (finalAttrs: {
# use together with the version from this package to keep the
# bootstrap phar file up-to-date together with the end user composer
# package.
passthru.pharHash = "sha256-H/0L4/J+I3sa5H+ejyn5asf1CgvZ7vT4jNvpTdBL//A=";
passthru.pharHash = "sha256-BJuODtnyZNdwoFEIWM/7w1QBUQdZ7cmnhLOlxuAgvKw=";
composer = callPackage ../../../build-support/php/pkgs/composer-phar.nix {
inherit (finalAttrs) version;
@ -24,13 +24,13 @@ php.buildComposerProject (finalAttrs: {
};
pname = "composer";
version = "2.7.1";
version = "2.7.2";
src = fetchFromGitHub {
owner = "composer";
repo = "composer";
rev = finalAttrs.version;
hash = "sha256-OThWqY3m/pIas4qvR/kiYgc/2QrAbnsYEOxpHxKhDfM=";
hash = "sha256-Rev3OW1G+LVgJmHLwuV5u0s7F7lKrvtI43eS7y9SAYA=";
};
nativeBuildInputs = [ makeBinaryWrapper ];
@ -40,7 +40,7 @@ php.buildComposerProject (finalAttrs: {
--prefix PATH : ${lib.makeBinPath [ _7zz cacert curl git unzip xz ]}
'';
vendorHash = "sha256-NJa6nu60HQeBJr7dd79ATptjcekgY35Jq9V40SrN9Ds";
vendorHash = "sha256-JLMhjOradyo64mPNos0qtM5bTnAYTRvSWnFUQrLQNjw=";
meta = {
changelog = "https://github.com/composer/composer/releases/tag/${finalAttrs.version}";

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "vallox-websocket-api";
version = "5.1.0";
version = "5.1.1";
pyproject = true;
disabled = pythonOlder "3.9";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "yozik04";
repo = "vallox_websocket_api";
rev = "refs/tags/${version}";
hash = "sha256-ZYcLoOYwQK1+txiBuCEIDp+tYM3eXFtOSR0iNIrIP0w=";
hash = "sha256-BhAI/bGzaSckyZJq7GYUldziotr2bMlA5cWgQEwiUcQ=";
};
nativeBuildInputs = [

View File

@ -37,12 +37,12 @@ in
stdenv.mkDerivation rec {
pname = "frama-c";
version = "28.0";
version = "28.1";
slang = "Nickel";
src = fetchurl {
url = "https://frama-c.com/download/frama-c-${version}-${slang}.tar.gz";
hash = "sha256-KWEogjMOy27d0LTKOvwEkrcND+szeaG46JMZTG4XOYM=";
hash = "sha256-AiC8dDt9okaM65JvMx7cfd+qfGA7pHli3j4zyOHj9ZM=";
};
preConfigure = ''

View File

@ -8,7 +8,7 @@
buildGoModule rec {
pname = "telegraf";
version = "1.29.5";
version = "1.30.0";
subPackages = [ "cmd/telegraf" ];
@ -16,10 +16,10 @@ buildGoModule rec {
owner = "influxdata";
repo = "telegraf";
rev = "v${version}";
hash = "sha256-yVxpUKEmy7pllZQq6A0zIDekewh4BQX+/kaeLcZ2aLg=";
hash = "sha256-+dQMQsieer0/BfvAKnT35bjNjPjC0Z1houUqFBVIWDE=";
};
vendorHash = "sha256-amcI5X/xLOjItraG+twsv7sn5ei3mkZsclEd4TGiXwM=";
vendorHash = "sha256-6RfhSrb9mTt2IzEv3zzj26gChz7XKV5uazfwanNe7Pc=";
proxyVendor = true;
ldflags = [

View File

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, autoPatchelfHook
, makeWrapper
, buildNpmPackage
@ -39,29 +40,42 @@
, vulkan-loader
, libappindicator
, libnotify
, miniupnpc
, config
, cudaSupport ? config.cudaSupport
, cudaPackages ? {}
, cudaPackages ? { }
}:
stdenv.mkDerivation rec {
let
stdenv' = if cudaSupport then cudaPackages.backendStdenv else stdenv;
in
stdenv'.mkDerivation rec {
pname = "sunshine";
version = "0.21.0";
version = "0.22.0";
src = fetchFromGitHub {
owner = "LizardByte";
repo = "Sunshine";
rev = "v${version}";
sha256 = "sha256-uvQAJkoKazFLz5iTpYSAGYJQZ2EprQ+p9+tryqorFHM=";
sha256 = "sha256-O9U4zP1o6yWtzk+2DW7ueimvsTuajLY8IETlvCT4jTE=";
fetchSubmodules = true;
};
# fetch node_modules needed for webui
patches = [
# remove npm install as it needs internet access -- handled separately below
./dont-build-webui.patch
# revert https://github.com/LizardByte/Sunshine/pull/2046 - let cmake install handle udev and systemd files
(fetchpatch {
url = "https://github.com/LizardByte/Sunshine/commit/0d4dfcd708c0027b7d8827a03163858800fa79fa.patch";
hash = "sha256-77NtfX0zB7ty92AyFOz9wJoa1jHshlNbPQ7NOpqUuYo=";
revert = true;
})
];
# build webui
ui = buildNpmPackage {
inherit src version;
pname = "sunshine-ui";
npmDepsHash = "sha256-+T1XAf4SThoJLOFpnVxDa2qiKFLIKQPGewjA83GQovM=";
dontNpmBuild = true;
npmDepsHash = "sha256-jAZUu2CfcqhC2xMiZYpY7KPCRVFQgT/kgUvSI+5Cpkc=";
# use generated package-lock.json as upstream does not provide one
postPatch = ''
@ -70,7 +84,7 @@ stdenv.mkDerivation rec {
installPhase = ''
mkdir -p $out
cp -r node_modules $out/
cp -r * $out/
'';
};
@ -121,6 +135,7 @@ stdenv.mkDerivation rec {
svt-av1
libappindicator
libnotify
miniupnpc
] ++ lib.optionals cudaSupport [
cudaPackages.cudatoolkit
] ++ lib.optionals stdenv.isx86_64 [
@ -146,13 +161,13 @@ stdenv.mkDerivation rec {
substituteInPlace packaging/linux/sunshine.desktop \
--replace '@PROJECT_NAME@' 'Sunshine' \
--replace '@PROJECT_DESCRIPTION@' 'Self-hosted game stream host for Moonlight'
--replace '@PROJECT_DESCRIPTION@' 'Self-hosted game stream host for Moonlight' \
--replace '/usr/bin/env systemctl start --u sunshine' 'sunshine'
'';
preBuild = ''
# copy node_modules where they can be picked up by build
mkdir -p ../node_modules
cp -r ${ui}/node_modules/* ../node_modules
# copy webui where it can be picked up by build
cp -r ${ui}/build ../
'';
# allow Sunshine to find libvulkan

View File

@ -0,0 +1,14 @@
diff --git a/cmake/targets/common.cmake b/cmake/targets/common.cmake
index 3dd629e..acec58d 100644
--- a/cmake/targets/common.cmake
+++ b/cmake/targets/common.cmake
@@ -37,8 +37,4 @@ endif()
target_compile_options(sunshine PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${SUNSHINE_COMPILE_OPTIONS}>;$<$<COMPILE_LANGUAGE:CUDA>:${SUNSHINE_COMPILE_OPTIONS_CUDA};-std=c++17>) # cmake-lint: disable=C0301
-#WebUI build
-add_custom_target(web-ui ALL
- WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
- COMMENT "Installing NPM Dependencies and Building the Web UI"
- COMMAND bash -c \"npm install && SUNSHINE_SOURCE_ASSETS_DIR=${SUNSHINE_SOURCE_ASSETS_DIR} SUNSHINE_ASSETS_DIR=${CMAKE_BINARY_DIR} npm run build\") # cmake-lint: disable=C0301
+

View File

@ -1,38 +1,513 @@
{
"name": "sunshine",
"name": "Sunshine",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
"@fortawesome/fontawesome-free": "6.4.2",
"bootstrap": "5.3.2",
"vue": "2.6.12"
"@fortawesome/fontawesome-free": "6.5.1",
"@popperjs/core": "2.11.8",
"@vitejs/plugin-vue": "4.6.2",
"bootstrap": "5.3.3",
"vite": "4.5.2",
"vite-plugin-ejs": "1.6.4",
"vue": "3.4.5"
}
},
"node_modules/@babel/parser": {
"version": "7.24.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
"integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
"integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
"integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
"integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
"integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
"integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
"integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
"integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
"integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
"integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
"integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
"integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
"cpu": [
"loong64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
"integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
"cpu": [
"mips64el"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
"integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
"cpu": [
"ppc64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
"integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
"cpu": [
"riscv64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
"integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
"cpu": [
"s390x"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
"integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
"integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
"integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
"integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
"integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
"integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
"integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@fortawesome/fontawesome-free": {
"version": "6.4.2",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz",
"integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==",
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.1.tgz",
"integrity": "sha512-CNy5vSwN3fsUStPRLX7fUYojyuzoEMSXPl7zSLJ8TgtRfjv24LOnOWKT2zYwaHZCJGkdyRnTmstR0P+Ah503Gw==",
"hasInstallScript": true,
"engines": {
"node": ">=6"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
"integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@vitejs/plugin-vue": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz",
"integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==",
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
"vite": "^4.0.0 || ^5.0.0",
"vue": "^3.2.25"
}
},
"node_modules/@vue/compiler-core": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.5.tgz",
"integrity": "sha512-Daka7P1z2AgKjzuueWXhwzIsKu0NkLB6vGbNVEV2iJ8GJTrzraZo/Sk4GWCMRtd/qVi3zwnk+Owbd/xSZbwHtQ==",
"dependencies": {
"@babel/parser": "^7.23.6",
"@vue/shared": "3.4.5",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.5.tgz",
"integrity": "sha512-J8YlxknJVd90SXFJ4HwGANSAXsx5I0lK30sO/zvYV7s5gXf7gZR7r/1BmZ2ju7RGH1lnc6bpBc6nL61yW+PsAQ==",
"dependencies": {
"@vue/compiler-core": "3.4.5",
"@vue/shared": "3.4.5"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.5.tgz",
"integrity": "sha512-jauvkDuSSUbP0ebhfNqljhShA90YEfX/0wZ+w40oZF43IjGyWYjqYaJbvMJwGOd+9+vODW6eSvnk28f0SGV7OQ==",
"dependencies": {
"@babel/parser": "^7.23.6",
"@vue/compiler-core": "3.4.5",
"@vue/compiler-dom": "3.4.5",
"@vue/compiler-ssr": "3.4.5",
"@vue/shared": "3.4.5",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.5",
"postcss": "^8.4.32",
"source-map-js": "^1.0.2"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.5.tgz",
"integrity": "sha512-DDdEcDzj2lWTMfUMMtEpLDhURai9LhM0zSZ219jCt7b2Vyl0/jy3keFgCPMitG0V1S1YG4Cmws3lWHWdxHQOpg==",
"dependencies": {
"@vue/compiler-dom": "3.4.5",
"@vue/shared": "3.4.5"
}
},
"node_modules/@vue/reactivity": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.5.tgz",
"integrity": "sha512-BcWkKvjdvqJwb7BhhFkXPLDCecX4d4a6GATvCduJQDLv21PkPowAE5GKuIE5p6RC07/Lp9FMkkq4AYCTVF5KlQ==",
"dependencies": {
"@vue/shared": "3.4.5"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.5.tgz",
"integrity": "sha512-wh9ELIOQKeWT9SaUPdLrsxRkZv14jp+SJm9aiQGWio+/MWNM3Lib0wE6CoKEqQ9+SCYyGjDBhTOTtO47kCgbkg==",
"dependencies": {
"@vue/reactivity": "3.4.5",
"@vue/shared": "3.4.5"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.5.tgz",
"integrity": "sha512-n5ewvOjyG3IEpqGBahdPXODFSpVlSz3H4LF76Sx0XAqpIOqyJ5bIb2PrdYuH2ogBMAQPh+o5tnoH4nJpBr8U0Q==",
"dependencies": {
"@vue/runtime-core": "3.4.5",
"@vue/shared": "3.4.5",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.5.tgz",
"integrity": "sha512-jOFc/VE87yvifQpNju12VcqimH8pBLxdcT+t3xMeiED1K6DfH9SORyhFEoZlW5TG2Vwfn3Ul5KE+1aC99xnSBg==",
"dependencies": {
"@vue/compiler-ssr": "3.4.5",
"@vue/shared": "3.4.5"
},
"peerDependencies": {
"vue": "3.4.5"
}
},
"node_modules/@vue/shared": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.5.tgz",
"integrity": "sha512-6XptuzlMvN4l4cDnDw36pdGEV+9njYkQ1ZE0Q6iZLwrKefKaOJyiFmcP3/KBDHbt72cJZGtllAc1GaHe6XGAyg=="
},
"node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dependencies": {
"color-convert": "^2.0.1"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
"node_modules/async": {
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
"integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/bootstrap": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz",
"integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==",
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
"integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==",
"funding": [
{
"type": "github",
@ -47,10 +522,373 @@
"@popperjs/core": "^2.11.8"
}
},
"node_modules/brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dependencies": {
"color-name": "~1.1.4"
},
"engines": {
"node": ">=7.0.0"
}
},
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/ejs": {
"version": "3.1.9",
"resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
"integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
"dependencies": {
"jake": "^10.8.5"
},
"bin": {
"ejs": "bin/cli.js"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/esbuild": {
"version": "0.18.20",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
"integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
"hasInstallScript": true,
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=12"
},
"optionalDependencies": {
"@esbuild/android-arm": "0.18.20",
"@esbuild/android-arm64": "0.18.20",
"@esbuild/android-x64": "0.18.20",
"@esbuild/darwin-arm64": "0.18.20",
"@esbuild/darwin-x64": "0.18.20",
"@esbuild/freebsd-arm64": "0.18.20",
"@esbuild/freebsd-x64": "0.18.20",
"@esbuild/linux-arm": "0.18.20",
"@esbuild/linux-arm64": "0.18.20",
"@esbuild/linux-ia32": "0.18.20",
"@esbuild/linux-loong64": "0.18.20",
"@esbuild/linux-mips64el": "0.18.20",
"@esbuild/linux-ppc64": "0.18.20",
"@esbuild/linux-riscv64": "0.18.20",
"@esbuild/linux-s390x": "0.18.20",
"@esbuild/linux-x64": "0.18.20",
"@esbuild/netbsd-x64": "0.18.20",
"@esbuild/openbsd-x64": "0.18.20",
"@esbuild/sunos-x64": "0.18.20",
"@esbuild/win32-arm64": "0.18.20",
"@esbuild/win32-ia32": "0.18.20",
"@esbuild/win32-x64": "0.18.20"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
},
"node_modules/filelist": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
"dependencies": {
"minimatch": "^5.0.1"
}
},
"node_modules/filelist/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/filelist/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"engines": {
"node": ">=8"
}
},
"node_modules/jake": {
"version": "10.8.7",
"resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
"integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
"filelist": "^1.0.4",
"minimatch": "^3.1.2"
},
"bin": {
"jake": "bin/cli.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/magic-string": {
"version": "0.30.8",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz",
"integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
"engines": {
"node": ">=12"
}
},
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/nanoid": {
"version": "3.3.7",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
},
"node_modules/postcss": {
"version": "8.4.35",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz",
"integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
"nanoid": "^3.3.7",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/rollup": {
"version": "3.29.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=14.18.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
}
},
"node_modules/source-map-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dependencies": {
"has-flag": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/vite": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz",
"integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==",
"dependencies": {
"esbuild": "^0.18.10",
"postcss": "^8.4.27",
"rollup": "^3.27.1"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.2"
},
"peerDependencies": {
"@types/node": ">= 14",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.4.0"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
}
}
},
"node_modules/vite-plugin-ejs": {
"version": "1.6.4",
"resolved": "https://registry.npmjs.org/vite-plugin-ejs/-/vite-plugin-ejs-1.6.4.tgz",
"integrity": "sha512-23p1RS4PiA0veXY5/gHZ60pl3pPvd8NEqdBsDgxNK8nM1rjFFDcVb0paNmuipzCgNP/Y0f/Id22M7Il4kvZ2jA==",
"dependencies": {
"ejs": "^3.1.8"
}
},
"node_modules/vue": {
"version": "2.6.12",
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
"integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.5.tgz",
"integrity": "sha512-VH6nHFhLPjgu2oh5vEBXoNZxsGHuZNr3qf4PHClwJWw6IDqw6B3x+4J+ABdoZ0aJuT8Zi0zf3GpGlLQCrGWHrw==",
"dependencies": {
"@vue/compiler-dom": "3.4.5",
"@vue/compiler-sfc": "3.4.5",
"@vue/runtime-dom": "3.4.5",
"@vue/server-renderer": "3.4.5",
"@vue/shared": "3.4.5"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
}
}
}

View File

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "croc";
version = "9.6.13";
version = "9.6.14";
src = fetchFromGitHub {
owner = "schollz";
repo = pname;
rev = "v${version}";
sha256 = "sha256-uuE3Ci0JeWhYMHj5xO5UNZR4BOuaD15nMqFQFZIQCkY=";
sha256 = "sha256-0FtzPjaWJ1Q94rsx2WF7n24mQu2IsVBSQfddbPzQZ84=";
};
vendorHash = "sha256-pUWUYV1Ts/dFXUzufIWt5ETRQVpxIGzxRFq9jviG0Fs=";
vendorHash = "sha256-IsecKLKPJgM4IoKAn8k8ipSWamdTVXcfF9V3r87eApE=";
subPackages = [ "." ];

View File

@ -18,15 +18,15 @@ in
openssh_hpn = common rec {
pname = "openssh-with-hpn";
version = "9.5p1";
version = "9.7p1";
extraDesc = " with high performance networking patches";
src = fetchurl {
url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
hash = "sha256-8Cbnt5un+1QPdRgq+W3IqPHbOV+SK7yfbKYDZyaGCGs=";
hash = "sha256-SQQm92bYKidj/KzY2D6j1weYdQx70q/y5X3FZg93P/0=";
};
extraPatches = let url = "https://raw.githubusercontent.com/freebsd/freebsd-ports/700625bcd86b74cf3fb9536aeea250d7f8cd1fd5/security/openssh-portable/files/extra-patch-hpn"; in
extraPatches = let url = "https://raw.githubusercontent.com/freebsd/freebsd-ports/b3f86656fc67aa397f60747c85f7f7b967c3279d/security/openssh-portable/files/extra-patch-hpn"; in
[
./ssh-keysign-8.5.patch
@ -36,7 +36,7 @@ in
inherit url;
stripLen = 1;
excludes = [ "channels.c" ];
hash = "sha256-hYB3i0ifNOgGLYwElMJFcT+ktczLKciq3qw1tTHZHcc=";
hash = "sha256-MydulQvz8sDVQ6Up9U1yrsiyI5EGmyKl/stUk7DvVOU=";
})
(fetchpatch {

View File

@ -42,6 +42,7 @@ in
, docbook5
, editline
, flex
, git
, gnutar
, gtest
, gzip
@ -54,6 +55,7 @@ in
, libxml2
, libxslt
, lowdown
, man
, mdbook
, mdbook-linkcheck
, nlohmann_json
@ -142,6 +144,11 @@ self = stdenv.mkDerivation {
aws-sdk-cpp
];
installCheckInputs = lib.optionals atLeast221 [
git
man
];
propagatedBuildInputs = [
boehmgc
] ++ lib.optionals (atLeast27) [

View File

@ -267,6 +267,11 @@ in lib.makeExtensible (self: ({
hash = "sha256-bfFe38BkoQws7om4gBtBWoNTLkt9piMXdLLoHYl+vBQ=";
};
nix_2_21 = common {
version = "2.21.0";
hash = "sha256-9b9qJ+7rGjLKbIswMf0/2pgUWH/xOlYLk7P4WYNcGDs=";
};
# The minimum Nix version supported by Nixpkgs
# Note that some functionality *might* have been backported into this Nix version,
# making this package an inaccurate representation of what features are available
@ -286,7 +291,7 @@ in lib.makeExtensible (self: ({
stable = addFallbackPathsCheck self.nix_2_18;
unstable = self.nix_2_20;
unstable = self.nix_2_21;
} // lib.optionalAttrs config.allowAliases {
nix_2_4 = throw "nixVersions.nix_2_4 has been removed";

View File

@ -2,14 +2,20 @@
{ config, lib, ... }:
with lib;
let
inherit (lib)
literalExpression
mapAttrsToList
mdDoc
mkOption
optionals
types
;
mkMassRebuild = args: mkOption (builtins.removeAttrs args [ "feature" ] // {
type = args.type or (types.uniq types.bool);
default = args.default or false;
description = lib.mdDoc ((args.description or ''
description = mdDoc ((args.description or ''
Whether to ${args.feature} while building nixpkgs packages.
'') + ''
Changing the default may cause a mass rebuild.
@ -34,7 +40,7 @@ let
/* Config options */
warnUndeclaredOptions = mkOption {
description = lib.mdDoc "Whether to warn when `config` contains an unrecognized attribute.";
description = mdDoc "Whether to warn when `config` contains an unrecognized attribute.";
type = types.bool;
default = false;
};
@ -66,7 +72,7 @@ let
allowAliases = mkOption {
type = types.bool;
default = true;
description = lib.mdDoc ''
description = mdDoc ''
Whether to expose old attribute names for compatibility.
The recommended setting is to enable this, as it
@ -86,7 +92,7 @@ let
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_UNFREE" == "1"'';
description = lib.mdDoc ''
description = mdDoc ''
Whether to allow unfree packages.
See [Installing unfree packages](https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree) in the NixOS manual.
@ -98,7 +104,7 @@ let
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_BROKEN" == "1"'';
description = lib.mdDoc ''
description = mdDoc ''
Whether to allow broken packages.
See [Installing broken packages](https://nixos.org/manual/nixpkgs/stable/#sec-allow-broken) in the NixOS manual.
@ -110,7 +116,7 @@ let
default = false;
# getEnv part is in check-meta.nix
defaultText = literalExpression ''false || builtins.getEnv "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM" == "1"'';
description = lib.mdDoc ''
description = mdDoc ''
Whether to allow unsupported packages.
See [Installing packages on unsupported systems](https://nixos.org/manual/nixpkgs/stable/#sec-allow-unsupported-system) in the NixOS manual.
@ -132,7 +138,7 @@ let
showDerivationWarnings = mkOption {
type = types.listOf (types.enum [ "maintainerless" ]);
default = [];
description = lib.mdDoc ''
description = mdDoc ''
Which warnings to display for potentially dangerous
or deprecated values passed into `stdenv.mkDerivation`.
@ -147,7 +153,7 @@ let
checkMeta = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
description = mdDoc ''
Whether to check that the `meta` attribute of derivations are correct during evaluation time.
'';
};
@ -156,7 +162,7 @@ let
in {
freeformType =
let t = lib.types.lazyAttrsOf lib.types.raw;
let t = types.lazyAttrsOf types.raw;
in t // {
merge = loc: defs:
let r = t.merge loc defs;
@ -166,8 +172,8 @@ in {
inherit options;
config = {
warnings = lib.optionals config.warnUndeclaredOptions (
lib.mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or {}
warnings = optionals config.warnUndeclaredOptions (
mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or {}
);
};

View File

@ -1,29 +1,18 @@
{ config, lib, newScope, kodi, libretro }:
with lib;
let
inherit (lib)
catAttrs
concatLists
filter
optionalAttrs
unique
;
inherit (libretro) fuse genesis-plus-gx mgba nestopia snes9x twenty-fortyeight;
in
let self = rec {
addonDir = "/share/kodi/addons";
rel = "Nexus";
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;
@ -34,170 +23,186 @@ let self = rec {
in
unique (modules ++ concatLists (catAttrs "requiredKodiAddons" modules));
# package update scripts
self = {
addonDir = "/share/kodi/addons";
addonUpdateScript = callPackage ../applications/video/kodi/addons/addon-update-script { };
rel = "Nexus";
# package builders
inherit callPackage kodi hasKodiAddon requiredKodiAddons;
buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
# 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;
};
});
buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
# package update scripts
# regular packages
addonUpdateScript = callPackage ../applications/video/kodi/addons/addon-update-script { };
kodi-platform = callPackage ../applications/video/kodi/addons/kodi-platform { };
# package builders
# addon packages
buildKodiAddon = callPackage ../applications/video/kodi/build-kodi-addon.nix { };
a4ksubtitles = callPackage ../applications/video/kodi/addons/a4ksubtitles { };
buildKodiBinaryAddon = callPackage ../applications/video/kodi/build-kodi-binary-addon.nix { };
arteplussept = callPackage ../applications/video/kodi/addons/arteplussept { };
# regular packages
controller-topology-project = callPackage ../applications/video/kodi/addons/controller-topology-project { };
kodi-platform = callPackage ../applications/video/kodi/addons/kodi-platform { };
iagl = callPackage ../applications/video/kodi/addons/iagl { };
# addon packages
invidious = callPackage ../applications/video/kodi/addons/invidious { };
a4ksubtitles = callPackage ../applications/video/kodi/addons/a4ksubtitles { };
libretro = callPackage ../applications/video/kodi/addons/libretro { };
arteplussept = callPackage ../applications/video/kodi/addons/arteplussept { };
libretro-2048 = callPackage ../applications/video/kodi/addons/libretro-2048 { inherit twenty-fortyeight; };
controller-topology-project = callPackage ../applications/video/kodi/addons/controller-topology-project { };
libretro-fuse = callPackage ../applications/video/kodi/addons/libretro-fuse { inherit fuse; };
iagl = callPackage ../applications/video/kodi/addons/iagl { };
libretro-genplus = callPackage ../applications/video/kodi/addons/libretro-genplus { inherit genesis-plus-gx; };
invidious = callPackage ../applications/video/kodi/addons/invidious { };
libretro-mgba = callPackage ../applications/video/kodi/addons/libretro-mgba { inherit mgba; };
libretro = callPackage ../applications/video/kodi/addons/libretro { };
libretro-nestopia = callPackage ../applications/video/kodi/addons/libretro-nestopia { inherit nestopia; };
libretro-2048 = callPackage ../applications/video/kodi/addons/libretro-2048 { inherit twenty-fortyeight; };
libretro-snes9x = callPackage ../applications/video/kodi/addons/libretro-snes9x { inherit snes9x; };
libretro-fuse = callPackage ../applications/video/kodi/addons/libretro-fuse { inherit fuse; };
jellyfin = callPackage ../applications/video/kodi/addons/jellyfin { };
libretro-genplus = callPackage ../applications/video/kodi/addons/libretro-genplus { inherit genesis-plus-gx; };
joystick = callPackage ../applications/video/kodi/addons/joystick { };
libretro-mgba = callPackage ../applications/video/kodi/addons/libretro-mgba { inherit mgba; };
keymap = callPackage ../applications/video/kodi/addons/keymap { };
libretro-nestopia = callPackage ../applications/video/kodi/addons/libretro-nestopia { inherit nestopia; };
mediacccde = callPackage ../applications/video/kodi/addons/mediacccde { };
libretro-snes9x = callPackage ../applications/video/kodi/addons/libretro-snes9x { inherit snes9x; };
mediathekview = callPackage ../applications/video/kodi/addons/mediathekview { };
jellyfin = callPackage ../applications/video/kodi/addons/jellyfin { };
netflix = callPackage ../applications/video/kodi/addons/netflix { };
joystick = callPackage ../applications/video/kodi/addons/joystick { };
orftvthek = callPackage ../applications/video/kodi/addons/orftvthek { };
keymap = callPackage ../applications/video/kodi/addons/keymap { };
radioparadise = callPackage ../applications/video/kodi/addons/radioparadise { };
mediacccde = callPackage ../applications/video/kodi/addons/mediacccde { };
svtplay = callPackage ../applications/video/kodi/addons/svtplay { };
mediathekview = callPackage ../applications/video/kodi/addons/mediathekview { };
steam-controller = callPackage ../applications/video/kodi/addons/steam-controller { };
netflix = callPackage ../applications/video/kodi/addons/netflix { };
steam-launcher = callPackage ../applications/video/kodi/addons/steam-launcher { };
orftvthek = callPackage ../applications/video/kodi/addons/orftvthek { };
steam-library = callPackage ../applications/video/kodi/addons/steam-library { };
radioparadise = callPackage ../applications/video/kodi/addons/radioparadise { };
somafm = callPackage ../applications/video/kodi/addons/somafm { };
svtplay = callPackage ../applications/video/kodi/addons/svtplay { };
pdfreader = callPackage ../applications/video/kodi/addons/pdfreader { };
steam-controller = callPackage ../applications/video/kodi/addons/steam-controller { };
pvr-hts = callPackage ../applications/video/kodi/addons/pvr-hts { };
steam-launcher = callPackage ../applications/video/kodi/addons/steam-launcher { };
pvr-hdhomerun = callPackage ../applications/video/kodi/addons/pvr-hdhomerun { };
steam-library = callPackage ../applications/video/kodi/addons/steam-library { };
pvr-iptvsimple = callPackage ../applications/video/kodi/addons/pvr-iptvsimple { };
somafm = callPackage ../applications/video/kodi/addons/somafm { };
pvr-vdr-vnsi = callPackage ../applications/video/kodi/addons/pvr-vdr-vnsi { };
pdfreader = callPackage ../applications/video/kodi/addons/pdfreader { };
osmc-skin = callPackage ../applications/video/kodi/addons/osmc-skin { };
pvr-hts = callPackage ../applications/video/kodi/addons/pvr-hts { };
vfs-libarchive = callPackage ../applications/video/kodi/addons/vfs-libarchive { };
pvr-hdhomerun = callPackage ../applications/video/kodi/addons/pvr-hdhomerun { };
vfs-rar = callPackage ../applications/video/kodi/addons/vfs-rar { };
pvr-iptvsimple = callPackage ../applications/video/kodi/addons/pvr-iptvsimple { };
vfs-sftp = callPackage ../applications/video/kodi/addons/vfs-sftp { };
pvr-vdr-vnsi = callPackage ../applications/video/kodi/addons/pvr-vdr-vnsi { };
visualization-fishbmc = callPackage ../applications/video/kodi/addons/visualization-fishbmc { };
osmc-skin = callPackage ../applications/video/kodi/addons/osmc-skin { };
visualization-goom = callPackage ../applications/video/kodi/addons/visualization-goom { };
vfs-libarchive = callPackage ../applications/video/kodi/addons/vfs-libarchive { };
visualization-matrix = callPackage ../applications/video/kodi/addons/visualization-matrix { };
vfs-rar = callPackage ../applications/video/kodi/addons/vfs-rar { };
visualization-pictureit = callPackage ../applications/video/kodi/addons/visualization-pictureit { };
vfs-sftp = callPackage ../applications/video/kodi/addons/vfs-sftp { };
visualization-projectm = callPackage ../applications/video/kodi/addons/visualization-projectm { };
visualization-fishbmc = callPackage ../applications/video/kodi/addons/visualization-fishbmc { };
visualization-shadertoy = callPackage ../applications/video/kodi/addons/visualization-shadertoy { };
visualization-goom = callPackage ../applications/video/kodi/addons/visualization-goom { };
visualization-spectrum = callPackage ../applications/video/kodi/addons/visualization-spectrum { };
visualization-matrix = callPackage ../applications/video/kodi/addons/visualization-matrix { };
visualization-starburst = callPackage ../applications/video/kodi/addons/visualization-starburst { };
visualization-pictureit = callPackage ../applications/video/kodi/addons/visualization-pictureit { };
visualization-waveform = callPackage ../applications/video/kodi/addons/visualization-waveform { };
visualization-projectm = callPackage ../applications/video/kodi/addons/visualization-projectm { };
youtube = callPackage ../applications/video/kodi/addons/youtube { };
visualization-shadertoy = callPackage ../applications/video/kodi/addons/visualization-shadertoy { };
# addon packages (dependencies)
visualization-spectrum = callPackage ../applications/video/kodi/addons/visualization-spectrum { };
archive_tool = callPackage ../applications/video/kodi/addons/archive_tool { };
visualization-starburst = callPackage ../applications/video/kodi/addons/visualization-starburst { };
certifi = callPackage ../applications/video/kodi/addons/certifi { };
visualization-waveform = callPackage ../applications/video/kodi/addons/visualization-waveform { };
chardet = callPackage ../applications/video/kodi/addons/chardet { };
youtube = callPackage ../applications/video/kodi/addons/youtube { };
dateutil = callPackage ../applications/video/kodi/addons/dateutil { };
# addon packages (dependencies)
defusedxml = callPackage ../applications/video/kodi/addons/defusedxml { };
archive_tool = callPackage ../applications/video/kodi/addons/archive_tool { };
future = callPackage ../applications/video/kodi/addons/future { };
certifi = callPackage ../applications/video/kodi/addons/certifi { };
idna = callPackage ../applications/video/kodi/addons/idna { };
chardet = callPackage ../applications/video/kodi/addons/chardet { };
infotagger = callPackage ../applications/video/kodi/addons/infotagger { };
dateutil = callPackage ../applications/video/kodi/addons/dateutil { };
inputstream-adaptive = callPackage ../applications/video/kodi/addons/inputstream-adaptive { };
defusedxml = callPackage ../applications/video/kodi/addons/defusedxml { };
inputstream-ffmpegdirect = callPackage ../applications/video/kodi/addons/inputstream-ffmpegdirect { };
future = callPackage ../applications/video/kodi/addons/future { };
inputstream-rtmp = callPackage ../applications/video/kodi/addons/inputstream-rtmp { };
idna = callPackage ../applications/video/kodi/addons/idna { };
inputstreamhelper = callPackage ../applications/video/kodi/addons/inputstreamhelper { };
infotagger = callPackage ../applications/video/kodi/addons/infotagger { };
kodi-six = callPackage ../applications/video/kodi/addons/kodi-six { };
inputstream-adaptive = callPackage ../applications/video/kodi/addons/inputstream-adaptive { };
myconnpy = callPackage ../applications/video/kodi/addons/myconnpy { };
inputstream-ffmpegdirect = callPackage ../applications/video/kodi/addons/inputstream-ffmpegdirect { };
requests = callPackage ../applications/video/kodi/addons/requests { };
inputstream-rtmp = callPackage ../applications/video/kodi/addons/inputstream-rtmp { };
requests-cache = callPackage ../applications/video/kodi/addons/requests-cache { };
inputstreamhelper = callPackage ../applications/video/kodi/addons/inputstreamhelper { };
routing = callPackage ../applications/video/kodi/addons/routing { };
kodi-six = callPackage ../applications/video/kodi/addons/kodi-six { };
sendtokodi = callPackage ../applications/video/kodi/addons/sendtokodi { };
myconnpy = callPackage ../applications/video/kodi/addons/myconnpy { };
signals = callPackage ../applications/video/kodi/addons/signals { };
requests = callPackage ../applications/video/kodi/addons/requests { };
simplejson = callPackage ../applications/video/kodi/addons/simplejson { };
requests-cache = callPackage ../applications/video/kodi/addons/requests-cache { };
six = callPackage ../applications/video/kodi/addons/six { };
routing = callPackage ../applications/video/kodi/addons/routing { };
sponsorblock = callPackage ../applications/video/kodi/addons/sponsorblock { };
sendtokodi = callPackage ../applications/video/kodi/addons/sendtokodi { };
urllib3 = callPackage ../applications/video/kodi/addons/urllib3 { };
signals = callPackage ../applications/video/kodi/addons/signals { };
websocket = callPackage ../applications/video/kodi/addons/websocket { };
simplejson = callPackage ../applications/video/kodi/addons/simplejson { };
xbmcswift2 = callPackage ../applications/video/kodi/addons/xbmcswift2 { };
six = callPackage ../applications/video/kodi/addons/six { };
typing_extensions = callPackage ../applications/video/kodi/addons/typing_extensions { };
sponsorblock = callPackage ../applications/video/kodi/addons/sponsorblock { };
arrow = callPackage ../applications/video/kodi/addons/arrow { };
urllib3 = callPackage ../applications/video/kodi/addons/urllib3 { };
trakt-module = callPackage ../applications/video/kodi/addons/trakt-module { };
websocket = callPackage ../applications/video/kodi/addons/websocket { };
trakt = callPackage ../applications/video/kodi/addons/trakt { };
}; in self // lib.optionalAttrs config.allowAliases {
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 // 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

@ -19,7 +19,15 @@
, octave
}:
with lib;
let
inherit (lib)
catAttrs
concatLists
filter
makeScope
unique
;
in
makeScope newScope (self:
let

View File

@ -20,9 +20,40 @@
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; };
let
release-lib = import ./release-lib.nix {
inherit supportedSystems scrubJobs nixpkgsArgs;
};
inherit (release-lib)
all
assertTrue
darwin
forMatchingSystems
hydraJob'
linux
mapTestOnCross
pkgsForCross
unix
;
inherit (release-lib.lib)
mapAttrs
addMetaAttrs
elem
getAttrFromPath
isDerivation
maintainers
mapAttrsRecursive
mapAttrsRecursiveCond
recursiveUpdate
systems
;
inherit (release-lib.lib.attrsets)
removeAttrs
;
nativePlatforms = all;
embedded = {
@ -42,14 +73,14 @@ let
cargo = nativePlatforms;
};
gnuCommon = lib.recursiveUpdate common {
gnuCommon = recursiveUpdate common {
buildPackages.gcc = nativePlatforms;
coreutils = nativePlatforms;
haskell.packages.ghcHEAD.hello = nativePlatforms;
haskellPackages.hello = nativePlatforms;
};
linuxCommon = lib.recursiveUpdate gnuCommon {
linuxCommon = recursiveUpdate gnuCommon {
buildPackages.gdb = nativePlatforms;
bison = nativePlatforms;
@ -60,7 +91,7 @@ let
patch = nativePlatforms;
};
windowsCommon = lib.recursiveUpdate gnuCommon {
windowsCommon = recursiveUpdate gnuCommon {
boehmgc = nativePlatforms;
guile_1_8 = nativePlatforms;
libffi = nativePlatforms;
@ -120,7 +151,7 @@ in
# 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));
f = path: crossSystem: system: toString (getAttrFromPath path (pkgsForCross crossSystem system));
in assertTrue (
f path null system
==
@ -129,7 +160,7 @@ in
testEqual = path: systems: forMatchingSystems systems (testEqualOne path);
mapTestEqual = lib.mapAttrsRecursive testEqual;
mapTestEqual = mapAttrsRecursive testEqual;
in mapTestEqual {
boehmgc = nativePlatforms;
@ -142,105 +173,107 @@ in
guile = nativePlatforms;
};
crossIphone64 = mapTestOnCross lib.systems.examples.iphone64 darwinCommon;
crossIphone64 = mapTestOnCross systems.examples.iphone64 darwinCommon;
crossIphone32 = mapTestOnCross lib.systems.examples.iphone32 darwinCommon;
crossIphone32 = mapTestOnCross systems.examples.iphone32 darwinCommon;
/* Test some cross builds to the Sheevaplug */
crossSheevaplugLinux = mapTestOnCross lib.systems.examples.sheevaplug (linuxCommon // {
crossSheevaplugLinux = mapTestOnCross systems.examples.sheevaplug (linuxCommon // {
ubootSheevaplug = nativePlatforms;
});
/* Test some cross builds on 32 bit mingw-w64 */
crossMingw32 = mapTestOnCross lib.systems.examples.mingw32 windowsCommon;
crossMingw32 = mapTestOnCross systems.examples.mingw32 windowsCommon;
/* Test some cross builds on 64 bit mingw-w64 */
crossMingwW64 = mapTestOnCross lib.systems.examples.mingwW64 windowsCommon;
crossMingwW64 = mapTestOnCross systems.examples.mingwW64 windowsCommon;
/* Linux on mipsel */
fuloongminipc = mapTestOnCross lib.systems.examples.fuloongminipc linuxCommon;
ben-nanonote = mapTestOnCross lib.systems.examples.ben-nanonote linuxCommon;
fuloongminipc = mapTestOnCross systems.examples.fuloongminipc linuxCommon;
ben-nanonote = mapTestOnCross systems.examples.ben-nanonote linuxCommon;
/* Javacript */
ghcjs = mapTestOnCross lib.systems.examples.ghcjs {
ghcjs = mapTestOnCross systems.examples.ghcjs {
haskell.packages.ghcjs.hello = nativePlatforms;
haskell.packages.native-bignum.ghcHEAD.hello = nativePlatforms;
haskellPackages.hello = nativePlatforms;
};
/* Linux on Raspberrypi */
rpi = mapTestOnCross lib.systems.examples.raspberryPi rpiCommon;
rpi-musl = mapTestOnCross lib.systems.examples.muslpi rpiCommon;
rpi = mapTestOnCross systems.examples.raspberryPi rpiCommon;
rpi-musl = mapTestOnCross systems.examples.muslpi rpiCommon;
/* Linux on the Remarkable */
remarkable1 = mapTestOnCross lib.systems.examples.remarkable1 linuxCommon;
remarkable2 = mapTestOnCross lib.systems.examples.remarkable2 linuxCommon;
remarkable1 = mapTestOnCross systems.examples.remarkable1 linuxCommon;
remarkable2 = mapTestOnCross systems.examples.remarkable2 linuxCommon;
/* Linux on armv7l-hf */
armv7l-hf = mapTestOnCross lib.systems.examples.armv7l-hf-multiplatform linuxCommon;
armv7l-hf = mapTestOnCross systems.examples.armv7l-hf-multiplatform linuxCommon;
pogoplug4 = mapTestOnCross lib.systems.examples.pogoplug4 linuxCommon;
pogoplug4 = mapTestOnCross 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;
aarch64 = mapTestOnCross systems.examples.aarch64-multiplatform linuxCommon;
aarch64-musl = mapTestOnCross systems.examples.aarch64-multiplatform-musl linuxCommon;
/* Linux on RISCV */
riscv64 = mapTestOnCross lib.systems.examples.riscv64 linuxCommon;
riscv32 = mapTestOnCross lib.systems.examples.riscv32 linuxCommon;
riscv64 = mapTestOnCross systems.examples.riscv64 linuxCommon;
riscv32 = mapTestOnCross systems.examples.riscv32 linuxCommon;
/* Linux on LoongArch */
loongarch64-linux = mapTestOnCross lib.systems.examples.loongarch64-linux linuxCommon;
loongarch64-linux = mapTestOnCross systems.examples.loongarch64-linux linuxCommon;
m68k = mapTestOnCross lib.systems.examples.m68k linuxCommon;
s390x = mapTestOnCross lib.systems.examples.s390x linuxCommon;
m68k = mapTestOnCross systems.examples.m68k linuxCommon;
s390x = mapTestOnCross 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;
x86_64-musl = mapTestOnCross systems.examples.musl64 linuxCommon;
x86_64-gnu = mapTestOnCross systems.examples.gnu64 linuxCommon;
i686-musl = mapTestOnCross systems.examples.musl32 linuxCommon;
i686-gnu = mapTestOnCross systems.examples.gnu32 linuxCommon;
ppc64le = mapTestOnCross lib.systems.examples.powernv linuxCommon;
ppc64le-musl = mapTestOnCross lib.systems.examples.musl-power linuxCommon;
ppc64le = mapTestOnCross systems.examples.powernv linuxCommon;
ppc64le-musl = mapTestOnCross systems.examples.musl-power linuxCommon;
android64 = mapTestOnCross lib.systems.examples.aarch64-android-prebuilt linuxCommon;
android32 = mapTestOnCross lib.systems.examples.armv7a-android-prebuilt linuxCommon;
android64 = mapTestOnCross systems.examples.aarch64-android-prebuilt linuxCommon;
android32 = mapTestOnCross systems.examples.armv7a-android-prebuilt linuxCommon;
wasi32 = mapTestOnCross lib.systems.examples.wasi32 wasiCommon;
wasi32 = mapTestOnCross 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;
msp430 = mapTestOnCross systems.examples.msp430 embedded;
mmix = mapTestOnCross systems.examples.mmix embedded;
vc4 = mapTestOnCross systems.examples.vc4 embedded;
or1k = mapTestOnCross systems.examples.or1k embedded;
avr = mapTestOnCross systems.examples.avr embedded;
arm-embedded = mapTestOnCross systems.examples.arm-embedded embedded;
armhf-embedded = mapTestOnCross systems.examples.armhf-embedded embedded;
aarch64-embedded = mapTestOnCross systems.examples.aarch64-embedded embedded;
aarch64be-embedded = mapTestOnCross systems.examples.aarch64be-embedded embedded;
powerpc-embedded = mapTestOnCross systems.examples.ppc-embedded embedded;
powerpcle-embedded = mapTestOnCross systems.examples.ppcle-embedded embedded;
i686-embedded = mapTestOnCross systems.examples.i686-embedded embedded;
x86_64-embedded = mapTestOnCross systems.examples.x86_64-embedded embedded;
riscv64-embedded = mapTestOnCross systems.examples.riscv64-embedded embedded;
riscv32-embedded = mapTestOnCross systems.examples.riscv32-embedded embedded;
rx-embedded = mapTestOnCross systems.examples.rx-embedded embedded;
x86_64-freebsd = mapTestOnCross lib.systems.examples.x86_64-freebsd common;
x86_64-netbsd = mapTestOnCross lib.systems.examples.x86_64-netbsd common;
x86_64-freebsd = mapTestOnCross systems.examples.x86_64-freebsd common;
x86_64-netbsd = mapTestOnCross 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;
x86_64-redox = mapTestOnCross 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 ];
meta = {
maintainers = [ 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)
assert elem drv.system supportedSystems;
hydraJob' (addMetaAttrs meta drv);
in mapAttrsRecursiveCond (as: !isDerivation as) (name: mkBootstrapToolsJob)
# The `bootstrapTools.${platform}.bootstrapTools` derivation
# *unpacks* the bootstrap-files using their own `busybox` binary,
# so it will fail unless buildPlatform.canExecute hostPlatform.
@ -248,9 +281,9 @@ in
# attribute, so there is no way to detect this -- we must add it
# as a special case. We filter the "test" attribute (only from
# *cross*-built bootstrapTools) for the same reason.
(builtins.mapAttrs (_: v: builtins.removeAttrs v ["bootstrapTools" "test"]) tools);
(mapAttrs (_: v: removeAttrs v ["bootstrapTools" "test"]) tools);
# Cross-built nixStatic for platforms for enabled-but-unsupported platforms
mips64el-nixCrossStatic = mapTestOnCross lib.systems.examples.mips64el-linux-gnuabi64 nixCrossStatic;
powerpc64le-nixCrossStatic = mapTestOnCross lib.systems.examples.powernv nixCrossStatic;
mips64el-nixCrossStatic = mapTestOnCross systems.examples.mips64el-linux-gnuabi64 nixCrossStatic;
powerpc64le-nixCrossStatic = mapTestOnCross systems.examples.powernv nixCrossStatic;
}

View File

@ -18,10 +18,15 @@
nixpkgsArgs ? { config = { allowUnfree = true; inHydra = true; }; }
}:
with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
with lib;
let
release-lib = import ./release-lib.nix {
inherit supportedSystems nixpkgsArgs;
};
inherit (release-lib) linux mapTestOn packagePlatforms pkgs;
inherit (release-lib.lib) genAttrs;
# Package sets to evaluate
packageSets = [
"cudaPackages_10_0"

View File

@ -7,13 +7,33 @@
let
lib = import ../../lib;
in with lib;
rec {
pkgs = packageSet (lib.recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs);
inherit lib;
inherit (lib)
addMetaAttrs
any
derivations
filter
flip
genAttrs
getAttrFromPath
hydraJob
id
isDerivation
lists
maintainers
mapAttrs
mapAttrs'
mapAttrsRecursive
matchAttrs
meta
nameValuePair
platforms
recursiveUpdate
subtractLists
systems
;
pkgs = packageSet (recursiveUpdate { system = "x86_64-linux"; config.allowUnsupportedSystem = true; } nixpkgsArgs);
hydraJob' = if scrubJobs then hydraJob else id;
@ -57,8 +77,8 @@ rec {
# More poor man's memoisation
pkgsForCross = let
examplesByConfig = lib.flip lib.mapAttrs'
lib.systems.examples
examplesByConfig = flip mapAttrs'
systems.examples
(_: crossSystem: nameValuePair crossSystem.config {
inherit crossSystem;
pkgsFor = mkPkgsFor crossSystem;
@ -68,7 +88,7 @@ rec {
candidate = examplesByConfig.${crossSystem.config} or null;
in if crossSystem == null
then native
else if candidate != null && lib.matchAttrs crossSystem candidate.crossSystem
else if candidate != null && matchAttrs crossSystem candidate.crossSystem
then candidate.pkgsFor
else mkPkgsFor crossSystem; # uncached fallback
@ -80,12 +100,12 @@ rec {
# 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; })
(system: systems.elaborate { inherit system; })
supportedSystems;
in metaPatterns: let
anyMatch = platform:
lib.any (lib.meta.platformMatch platform) metaPatterns;
matchingPlatforms = lib.filter anyMatch supportedPlatforms;
any (meta.platformMatch platform) metaPatterns;
matchingPlatforms = filter anyMatch supportedPlatforms;
in map ({ system, ...}: system) matchingPlatforms;
@ -135,7 +155,6 @@ rec {
(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. */
@ -148,7 +167,7 @@ rec {
packagePlatforms = mapAttrs (name: value:
if isDerivation value then
value.meta.hydraPlatforms
or (lib.subtractLists (value.meta.badPlatforms or [])
or (subtractLists (value.meta.badPlatforms or [])
(value.meta.platforms or [ "x86_64-linux" ]))
else if value.recurseForDerivations or false || value.recurseForRelease or false then
packagePlatforms value
@ -156,8 +175,24 @@ rec {
[]
);
in {
/* Common platform groups on which to test packages. */
inherit (platforms) unix linux darwin cygwin all mesaPlatforms;
inherit
assertTrue
forAllSystems
forMatchingSystems
hydraJob'
lib
mapTestOn
mapTestOnCross
packagePlatforms
pkgs
pkgsFor
pkgsForCross
supportedMatches
testOn
testOnCross
;
}

View File

@ -21,10 +21,15 @@
}; }
}:
with import ./release-lib.nix {inherit supportedSystems nixpkgsArgs; };
with lib;
let
release-lib = import ./release-lib.nix {
inherit supportedSystems nixpkgsArgs;
};
inherit (release-lib) mapTestOn pkgs;
inherit (release-lib.lib) isDerivation mapAttrs optionals;
packagePython = mapAttrs (name: value:
let res = builtins.tryEval (
if isDerivation value then
@ -33,7 +38,7 @@ let
packagePython value
else
[]);
in lib.optionals res.success res.value
in optionals res.success res.value
);
jobs = {

View File

@ -6,7 +6,13 @@
*/
{ supportedSystems ? [ "x86_64-linux" "aarch64-linux" ] }:
with import ./release-lib.nix { inherit supportedSystems; };
let
inherit (import ./release-lib.nix { inherit supportedSystems; })
mapTestOn
packagePlatforms
pkgs
;
in
mapTestOn {
rPackages = packagePlatforms pkgs.rPackages;

View File

@ -7,7 +7,13 @@
nixpkgsArgs ? { config = { allowUnfree = false; inHydra = true; }; }
}:
with import ./release-lib.nix { inherit supportedSystems nixpkgsArgs; };
let
release-lib = import ./release-lib.nix {
inherit supportedSystems nixpkgsArgs;
};
inherit (release-lib) all linux darwin mapTestOn unix;
in
{

View File

@ -52,15 +52,30 @@
, attrNamesOnly ? false
}:
let release-lib = import ./release-lib.nix { inherit supportedSystems scrubJobs nixpkgsArgs; }; in
with release-lib;
let
release-lib = import ./release-lib.nix {
inherit supportedSystems scrubJobs nixpkgsArgs;
};
supportDarwin = lib.genAttrs [
inherit (release-lib) mapTestOn pkgs;
inherit (release-lib.lib)
collect
elem
genAttrs
hasInfix
hasSuffix
id
isDerivation
optionals
;
inherit (release-lib.lib.attrsets) unionOfDisjoint;
supportDarwin = genAttrs [
"x86_64"
"aarch64"
] (arch: builtins.elem "${arch}-darwin" supportedSystems);
] (arch: elem "${arch}-darwin" supportedSystems);
nonPackageJobs =
{ tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; };
@ -162,8 +177,8 @@ let
jobs.tests.stdenv.hooks.patch-shebangs.x86_64-linux
*/
]
++ lib.collect lib.isDerivation jobs.stdenvBootstrapTools
++ lib.optionals supportDarwin.x86_64 [
++ collect isDerivation jobs.stdenvBootstrapTools
++ optionals supportDarwin.x86_64 [
jobs.stdenv.x86_64-darwin
jobs.cargo.x86_64-darwin
jobs.cachix.x86_64-darwin
@ -190,7 +205,7 @@ let
jobs.tests.stdenv.hooks.patch-shebangs.x86_64-darwin
*/
]
++ lib.optionals supportDarwin.aarch64 [
++ optionals supportDarwin.aarch64 [
jobs.stdenv.aarch64-darwin
jobs.cargo.aarch64-darwin
jobs.cachix.aarch64-darwin
@ -210,8 +225,7 @@ let
];
};
stdenvBootstrapTools = with lib;
genAttrs bootstrapConfigs (config:
stdenvBootstrapTools = genAttrs bootstrapConfigs (config:
if hasInfix "-linux-" config then
let
bootstrap = import ../stdenv/linux/make-bootstrap-tools.nix {
@ -244,13 +258,13 @@ let
# Conflicts usually cause silent job drops like in
# https://github.com/NixOS/nixpkgs/pull/182058
jobs = let
packagePlatforms = if attrNamesOnly then lib.id else release-lib.packagePlatforms;
packagePlatforms = if attrNamesOnly then id else release-lib.packagePlatforms;
packageJobs = {
haskell.compiler = packagePlatforms pkgs.haskell.compiler;
haskellPackages = packagePlatforms pkgs.haskellPackages;
# Build selected packages (HLS) for multiple Haskell compilers to rebuild
# the cache after a staging merge
haskell.packages = lib.genAttrs [
haskell.packages = genAttrs [
# TODO: share this list between release.nix and release-haskell.nix
"ghc90"
"ghc92"
@ -285,8 +299,6 @@ let
then pkgs // packageJobs
else mapTestOn ((packagePlatforms pkgs) // packageJobs);
in
lib.attrsets.unionOfDisjoint
nonPackageJobs
mapTestOn-packages;
unionOfDisjoint nonPackageJobs mapTestOn-packages;
in jobs

View File

@ -10,9 +10,14 @@
# instance, if your program needs to use "ps", just list it as a build
# input, not "procps" which requires Linux.
with lib;
let
inherit (lib)
getBin
getOutput
mapAttrs
platforms
;
version = "1003.1-2008";
singleBinary = cmd: providers: let
@ -23,7 +28,7 @@ let
meta = {
mainProgram = cmd;
priority = 10;
platforms = lib.platforms.${stdenv.hostPlatform.parsed.kernel.name} or lib.platforms.all;
platforms = platforms.${stdenv.hostPlatform.parsed.kernel.name} or platforms.all;
};
passthru = { inherit provider; };
preferLocalBuild = true;
@ -187,7 +192,7 @@ let
# Compatibility derivations
# Provided for old usage of these commands.
compat = with bins; lib.mapAttrs makeCompat {
compat = with bins; mapAttrs makeCompat {
procps = [ ps sysctl top watch ];
util-linux = [ fsck fdisk getopt hexdump mount
script umount whereis write col column ];