Merge release-24.05 into staging-next-24.05

This commit is contained in:
github-actions[bot]
2024-08-27 00:15:40 +00:00
committed by GitHub
34 changed files with 594 additions and 136 deletions

View File

@@ -310,6 +310,120 @@ See `node2nix` [docs](https://github.com/svanderburg/node2nix) for more info.
- `node2nix` has some [bugs](https://github.com/svanderburg/node2nix/issues/238) related to working with lock files from npm distributed with `nodejs_16`.
- `node2nix` does not like missing packages from npm. If you see something like `Cannot resolve version: vue-loader-v16@undefined` then you might want to try another tool. The package might have been pulled off of npm.
### pnpm {#javascript-pnpm}
Pnpm is available as the top-level package `pnpm`. Additionally, there are variants pinned to certain major versions, like `pnpm_8` and `pnpm_9`, which support different sets of lock file versions.
When packaging an application that includes a `pnpm-lock.yaml`, you need to fetch the pnpm store for that project using a fixed-output-derivation. The functions `pnpm_8.fetchDeps` and `pnpm_9.fetchDeps` can create this pnpm store derivation. In conjunction, the setup hooks `pnpm_8.configHook` and `pnpm_9.configHook` will prepare the build environment to install the prefetched dependencies store. Here is an example for a package that contains a `package.json` and a `pnpm-lock.yaml` files using the above `pnpm_` attributes:
```nix
{
stdenv,
nodejs,
# This is pinned as { pnpm = pnpm_9; }
pnpm
}:
stdenv.mkDerivation (finalAttrs: {
pname = "foo";
version = "0-unstable-1980-01-01";
src = ...;
nativeBuildInputs = [
nodejs
pnpm.configHook
];
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
hash = "...";
};
})
```
NOTE: It is highly recommended to use a pinned version of pnpm (i.e. `pnpm_8` or `pnpm_9`), to increase future reproducibility. It might also be required to use an older version, if the package needs support for a certain lock file version.
In case you are patching `package.json` or `pnpm-lock.yaml`, make sure to pass `finalAttrs.patches` to the function as well (i.e. `inherit (finalAttrs) patches`.
`pnpm.configHook` supports adding additional `pnpm install` flags via `pnpmInstallFlags` which can be set to a Nix string array.
#### Dealing with `sourceRoot` {#javascript-pnpm-sourceRoot}
If the pnpm project is in a subdirectory, you can just define `sourceRoot` or `setSourceRoot` for `fetchDeps`.
If `sourceRoot` is different between the parent derivation and `fetchDeps`, you will have to set `pnpmRoot` to effectively be the same location as it is in `fetchDeps`.
Assuming the following directory structure, we can define `sourceRoot` and `pnpmRoot` as follows:
```
.
├── frontend
│   ├── ...
│   ├── package.json
│   └── pnpm-lock.yaml
└── ...
```
```nix
...
pnpmDeps = pnpm.fetchDeps {
...
sourceRoot = "${finalAttrs.src.name}/frontend";
};
# by default the working directory is the extracted source
pnpmRoot = "frontend";
```
#### PNPM Workspaces {#javascript-pnpm-workspaces}
If you need to use a PNPM workspace for your project, then set `pnpmWorkspace = "<workspace project name>"` in your `pnpm.fetchDeps` call,
which will make PNPM only install dependencies for that workspace package.
For example:
```nix
...
pnpmWorkspace = "@astrojs/language-server";
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pnpmWorkspace;
...
}
```
The above would make `pnpm.fetchDeps` call only install dependencies for the `@astrojs/language-server` workspace package.
Note that you do not need to set `sourceRoot` to make this work.
Usually in such cases, you'd want to use `pnpm --filter=$pnpmWorkspace build` to build your project, as `npmHooks.npmBuildHook` probably won't work. A `buildPhase` based on the following example will probably fit most workspace projects:
```nix
buildPhase = ''
runHook preBuild
pnpm --filter=@astrojs/language-server build
runHook postBuild
'';
```
#### Additional PNPM Commands and settings {#javascript-pnpm-extraCommands}
If you require setting an additional PNPM configuration setting (such as `dedupe-peer-dependents` or similar),
set `prePnpmInstall` to the right commands to run. For example:
```nix
prePnpmInstall = ''
pnpm config set dedupe-peer-dependants false
'';
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) prePnpmInstall;
...
};
```
In this example, `prePnpmInstall` will be run by both `pnpm.configHook` and by the `pnpm.fetchDeps` builder.
### yarn2nix {#javascript-yarn2nix}
#### Preparation {#javascript-yarn2nix-preparation}

View File

@@ -255,6 +255,22 @@ let
if final.isMacOS then "MACOSX_DEPLOYMENT_TARGET"
else if final.isiOS then "IPHONEOS_DEPLOYMENT_TARGET"
else null;
# Remove before 25.05
androidSdkVersion =
if (args ? sdkVer && !args ? androidSdkVersion) then
throw "For android `sdkVer` has been renamed to `androidSdkVersion`"
else if (args ? androidSdkVersion) then
args.androidSdkVersion
else
null;
androidNdkVersion =
if (args ? ndkVer && !args ? androidNdkVersion) then
throw "For android `ndkVer` has been renamed to `androidNdkVersion`"
else if (args ? androidSdkVersion) then
args.androidNdkVersion
else
null;
} // (
let
selectEmulator = pkgs:

View File

@@ -60,23 +60,23 @@ rec {
armv7a-android-prebuilt = {
config = "armv7a-unknown-linux-androideabi";
rustc.config = "armv7-linux-androideabi";
sdkVer = "28";
ndkVer = "24";
androidSdkVersion = "28";
androidNdkVersion = "24";
useAndroidPrebuilt = true;
} // platforms.armv7a-android;
aarch64-android-prebuilt = {
config = "aarch64-unknown-linux-android";
rustc.config = "aarch64-linux-android";
sdkVer = "28";
ndkVer = "24";
androidSdkVersion = "28";
androidNdkVersion = "24";
useAndroidPrebuilt = true;
};
aarch64-android = {
config = "aarch64-unknown-linux-android";
sdkVer = "30";
ndkVer = "24";
androidSdkVersion = "30";
androidNdkVersion = "24";
libc = "bionic";
useAndroidPrebuilt = false;
useLLVM = true;

View File

@@ -19051,13 +19051,6 @@
githubId = 2666479;
name = "Y Nguyen";
};
superherointj = {
email = "sergiomarcelo@yandex.com";
github = "superherointj";
githubId = 5861043;
matrix = "@superherointj:matrix.org";
name = "Sérgio Marcelo";
};
SuperSandro2000 = {
email = "sandro.jaeckel@gmail.com";
matrix = "@sandro:supersandro.de";

View File

@@ -3919,7 +3919,7 @@ let
downloadPage = "https://marketplace.visualstudio.com/items?itemName=signageos.signageos-vscode-sops";
homepage = "https://github.com/signageos/vscode-sops";
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.superherointj ];
maintainers = [ ];
};
};

View File

@@ -51,13 +51,13 @@ in
stdenv.mkDerivation (finalAttrs: {
pname = "imagemagick";
version = "7.1.1-36";
version = "7.1.1-37";
src = fetchFromGitHub {
owner = "ImageMagick";
repo = "ImageMagick";
rev = finalAttrs.version;
hash = "sha256-Y/tj8IAhsCFK7Yd0MXZ8X6AOLxICyVOIaSaQveMf17k=";
hash = "sha256-dlcyCJw/tytb6z5VaogblUlzBRYBtijUJbkX3vZdeEU=";
};
outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big

View File

@@ -6,7 +6,7 @@ rec {
inherit (src) packageVersion firefox source;
extraPatches = [ ];
extraPatches = [ "${source}/patches/pref-pane/pref-pane-small.patch" ];
extraConfigureFlags = [
"--with-app-name=librewolf"
@@ -26,6 +26,12 @@ rec {
cp ${source}/assets/search-config.json services/settings/dumps/main/search-config.json
sed -i '/MOZ_SERVICES_HEALTHREPORT/ s/True/False/' browser/moz.configure
sed -i '/MOZ_NORMANDY/ s/True/False/' browser/moz.configure
cp ${source}/patches/pref-pane/category-librewolf.svg browser/themes/shared/preferences
cp ${source}/patches/pref-pane/librewolf.css browser/themes/shared/preferences
cp ${source}/patches/pref-pane/librewolf.inc.xhtml browser/components/preferences
cp ${source}/patches/pref-pane/librewolf.js browser/components/preferences
cat ${source}/patches/pref-pane/preferences.ftl >> browser/locales/en-US/browser/preferences/preferences.ftl
'';
extraPrefsFiles = [ "${source}/settings/librewolf.cfg" ];

View File

@@ -1,11 +1,11 @@
{
"packageVersion": "129.0.1-1",
"packageVersion": "129.0.2-1",
"source": {
"rev": "129.0.1-1",
"sha256": "0pvv3v23q31hdjvqi1f3cqfyjrb8dbrrbfwxj2wacak1g0mzbxf4"
"rev": "129.0.2-1",
"sha256": "1zghj91bqy2746x4x6cwn503dkw1fmfv0wgq02wv2cwlp8mmd7j7"
},
"firefox": {
"version": "129.0.1",
"sha512": "27c463e8277994c62bab85cf0e2f0cea16a9b272694b61fa56a6b3bd7c70d6481774288386094836a54df54c1b1144d61be67f4f5eac418c05479d452221c027"
"version": "129.0.2",
"sha512": "f6805a87e5cb4e437583916e3ec1b312dc73eec5fc06ce7a038b13bd7c6827b18cf383c30645d96623ce41675351f3023ec6b9f89d676f1c889994eae79f2c13"
}
}

View File

@@ -42,7 +42,7 @@ buildGoModule rec {
description = "CLI to install, manage & troubleshoot Kubernetes clusters running Cilium";
license = lib.licenses.asl20;
homepage = "https://www.cilium.io/";
maintainers = with lib.maintainers; [ bryanasdev000 humancalico qjoly superherointj ];
maintainers = with lib.maintainers; [ bryanasdev000 humancalico qjoly ];
mainProgram = "cilium";
};
}

View File

@@ -95,7 +95,6 @@ let
maintainers = with maintainers; [
euank
mic92
superherointj
wrmilling
yajo
];

View File

@@ -52,6 +52,6 @@ buildGoModule rec {
homepage = "https://www.vcluster.com/";
license = lib.licenses.asl20;
mainProgram = "vcluster";
maintainers = with lib.maintainers; [ berryp peterromfeldhk qjoly superherointj ];
maintainers = with lib.maintainers; [ berryp peterromfeldhk qjoly ];
};
}

View File

@@ -2,30 +2,30 @@
let
versions =
if stdenv.isLinux then {
stable = "0.0.63";
ptb = "0.0.98";
canary = "0.0.465";
stable = "0.0.65";
ptb = "0.0.101";
canary = "0.0.475";
development = "0.0.24";
} else {
stable = "0.0.313";
ptb = "0.0.127";
canary = "0.0.574";
development = "0.0.45";
stable = "0.0.316";
ptb = "0.0.130";
canary = "0.0.583";
development = "0.0.46";
};
version = versions.${branch};
srcs = rec {
x86_64-linux = {
stable = fetchurl {
url = "https://dl.discordapp.net/apps/linux/${version}/discord-${version}.tar.gz";
hash = "sha256-KtVX9EJPYmzDQd2beV/dDW8jjLDjacKZDrD72kLUwKo=";
hash = "sha256-kzYLZcjuG7k8RSjc5ooDlMKaAlMHvm0yCl5Krnhqq8A=";
};
ptb = fetchurl {
url = "https://dl-ptb.discordapp.net/apps/linux/${version}/discord-ptb-${version}.tar.gz";
hash = "sha256-aJx5ruZRCnBTf/Qon1uFfxMX2a25Xg2AzbnN/UtDe8w=";
hash = "sha256-JesxPoYybVLVwTrDwG2kO6Pikq7qvn7CO8j+24dwjBc=";
};
canary = fetchurl {
url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
hash = "sha256-h4ULLPRhtGy6FZHKfj3AF0hjPhidVvJEbHOVgCh+6JQ=";
hash = "sha256-suVIDCZhI6DwUVizBmTm104Clr6pH/olAIbOMNzFNss=";
};
development = fetchurl {
url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
@@ -35,19 +35,19 @@ let
x86_64-darwin = {
stable = fetchurl {
url = "https://dl.discordapp.net/apps/osx/${version}/Discord.dmg";
hash = "sha256-eQLPtwSX24+DOxvQcS2tFOMI6HNYedycl/U5GnzR6w0=";
hash = "sha256-ZJ2ybvKGGCm8CZhwGxmLXZWNUD1eAyg17zD/sBwViB4=";
};
ptb = fetchurl {
url = "https://dl-ptb.discordapp.net/apps/osx/${version}/DiscordPTB.dmg";
hash = "sha256-Z2b4I8WzBaubb5oGEGpqC6VlVvObyQwKOH+mxCPMuMw=";
hash = "sha256-mLfeMx5dQNpoLUyoOSCj8XtNxWjsBpVWdFv1obtHJak=";
};
canary = fetchurl {
url = "https://dl-canary.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
hash = "sha256-ZKjZf716RPOcXkZEFzvb4ojafafccVpjlLoEZv/GGec=";
hash = "sha256-eIjkXOW07sR26iBttT0mGDxNnpLFKlVJtzSAtFcicBg=";
};
development = fetchurl {
url = "https://dl-development.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
hash = "sha256-KvomKLcDnHyRSGwKDxwb5AZbJqMwKpvP4BC0Sn7IVsk=";
hash = "sha256-nMihtf/xLIxwqAVrF1BSRewdS2WThx0LZ5HZUI+OzM0=";
};
};
aarch64-darwin = x86_64-darwin;

View File

@@ -1,15 +1,15 @@
{
"version": "17.2.2",
"repo_hash": "1gk29bwd6vzikjg28p30wgdq9a46l4qbnac5r0h2mwih1sm8hlbc",
"version": "17.2.4",
"repo_hash": "0hj1v7w68axzdy2lwwc320zpg2r2qv2f9rl23yisni6975p03ayi",
"yarn_hash": "10y540bxwaz355p9r4q34199aibadrd5p4d9ck2y3n6735k0hm74",
"owner": "gitlab-org",
"repo": "gitlab",
"rev": "v17.2.2-ee",
"rev": "v17.2.4-ee",
"passthru": {
"GITALY_SERVER_VERSION": "17.2.2",
"GITLAB_PAGES_VERSION": "17.2.2",
"GITALY_SERVER_VERSION": "17.2.4",
"GITLAB_PAGES_VERSION": "17.2.4",
"GITLAB_SHELL_VERSION": "14.37.0",
"GITLAB_ELASTICSEARCH_INDEXER_VERSION": "5.2.0",
"GITLAB_WORKHORSE_VERSION": "17.2.2"
"GITLAB_WORKHORSE_VERSION": "17.2.4"
}
}

View File

@@ -7,7 +7,7 @@
}:
let
version = "17.2.2";
version = "17.2.4";
package_version = "v${lib.versions.major version}";
gitaly_package = "gitlab.com/gitlab-org/gitaly/${package_version}";
@@ -21,7 +21,7 @@ let
owner = "gitlab-org";
repo = "gitaly";
rev = "v${version}";
hash = "sha256-4K0unlvhAnTIiuyRUNm0dXG5sJsxIuo8HkUQvUK7ws4=";
hash = "sha256-Y+Yi5kH/0s+yMuD/90Tdxeshp9m0Mrx080jmWnq/zZ0=";
};
vendorHash = "sha256-FqnGVRldhevJgBBvJcvGXzRaYWqSHzZiXIQmCNzJv+4=";

View File

@@ -2,14 +2,14 @@
buildGoModule rec {
pname = "gitlab-pages";
version = "17.2.2";
version = "17.2.4";
# nixpkgs-update: no auto update
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitlab-pages";
rev = "v${version}";
hash = "sha256-AtLsy2hHxqr3XyTItLfMoTmrUsM707Kme7jE2jAAfyc=";
hash = "sha256-7sB2MjU1iwqrOK8dNb7a14NFtrJ/7yoT07tzYVyCSJ8=";
};
vendorHash = "sha256-yNHeM8MExcLwv2Ga4vtBmPFBt/Rj7Gd4QQYDlnAIo+c=";

View File

@@ -5,7 +5,7 @@ in
buildGoModule rec {
pname = "gitlab-workhorse";
version = "17.2.2";
version = "17.2.4";
# nixpkgs-update: no auto update
src = fetchFromGitLab {

View File

@@ -0,0 +1,39 @@
{
lib,
stdenv,
fetchurl,
meson,
ninja,
gtk4,
gnome,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "adwaita-icon-theme-legacy";
version = "46.2";
src = fetchurl {
url = "mirror://gnome/sources/adwaita-icon-theme-legacy/${lib.versions.major finalAttrs.version}/adwaita-icon-theme-legacy-${finalAttrs.version}.tar.xz";
hash = "sha256-VISA9YWJpUty0Ygzt1WxX/vVZ+MYcknXTi4fj5nyL7Q=";
};
nativeBuildInputs = [
meson
ninja
gtk4 # for gtk4-update-icon-cache
];
passthru = {
updateScript = gnome.updateScript {
packageName = "adwaita-icon-theme-legacy";
};
};
meta = with lib; {
description = "Fullcolor icon theme providing fallback for legacy apps";
homepage = "https://gitlab.gnome.org/GNOME/adwaita-icon-theme-legacy";
license = licenses.cc-by-sa-30;
maintainers = teams.gnome.members;
platforms = platforms.all;
};
})

View File

@@ -3,7 +3,7 @@
, cargo
, copyDesktopItems
, dbus
, electron_29
, electron_31
, fetchFromGitHub
, glib
, gnome
@@ -12,7 +12,6 @@
, libsecret
, makeDesktopItem
, makeWrapper
, moreutils
, napi-rs-cli
, nodejs_20
, patchutils_0_4_2
@@ -26,41 +25,28 @@
let
description = "Secure and free password manager for all of your devices";
icon = "bitwarden";
electron = electron_29;
electron = electron_31;
in buildNpmPackage rec {
pname = "bitwarden-desktop";
version = "2024.6.4";
version = "2024.8.0";
src = fetchFromGitHub {
owner = "bitwarden";
repo = "clients";
rev = "desktop-v${version}";
hash = "sha256-oQ2VZoxePdYUC+xMKlRMpvPubSPULvt31XSh/OBw3Ec=";
hash = "sha256-szIa7fASDmeWKZPc6HtHKeXKerCAXrYZQWTVFMugAxk=";
};
patches = [
./electron-builder-package-lock.patch
];
# The nested package-lock.json from upstream is out-of-date, so copy the
# lock metadata from the root package-lock.json.
postPatch = ''
cat {,apps/desktop/src/}package-lock.json \
| ${lib.getExe jq} -s '
.[1].packages."".dependencies.argon2 = .[0].packages."".dependencies.argon2
| .[0].packages."" = .[1].packages.""
| .[1].packages = .[0].packages
| .[1]
' \
| ${moreutils}/bin/sponge apps/desktop/src/package-lock.json
'';
nodejs = nodejs_20;
makeCacheWritable = true;
npmFlags = [ "--engine-strict" "--legacy-peer-deps" ];
npmWorkspace = "apps/desktop";
npmDepsHash = "sha256-9d9pWrFYelAx/PPDHY3m92Frp8RSQuBqpiOjmWtm/1g=";
npmDepsHash = "sha256-5neEpU7ZhVO5OR181owsvAnFfl7lr0MymvqbRFCPs3M=";
cargoDeps = rustPlatform.fetchCargoTarball {
name = "${pname}-${version}";
@@ -76,7 +62,7 @@ in buildNpmPackage rec {
patches;
patchFlags = [ "-p4" ];
sourceRoot = "${src.name}/${cargoRoot}";
hash = "sha256-ZmblY1APVa8moAR1waVBZPhrf5Wt1Gi6dvAxkhizckQ=";
hash = "sha256-ya/5z5XpsyuWayziLxuETu/dY8LzZspaAMqL2p8jYN8=";
};
cargoRoot = "apps/desktop/desktop_native";
@@ -87,10 +73,9 @@ in buildNpmPackage rec {
copyDesktopItems
jq
makeWrapper
moreutils
napi-rs-cli
pkg-config
python3
(python3.withPackages (ps: with ps; [ setuptools ]))
rustc
rustPlatform.cargoCheckHook
rustPlatform.cargoSetupHook
@@ -102,18 +87,36 @@ in buildNpmPackage rec {
libsecret
];
# node-argon2 builds with LTO, but that causes missing symbols. So disable it
# and rebuild. Then we need to copy it into the build output for
# electron-builder, as `apps/desktop/src/package.json` specifies `argon2` as
# a dependency and electron-builder will otherwise install a fresh (and
# broken) argon2. See https://github.com/ranisalt/node-argon2/pull/415
preConfigure = ''
pushd node_modules/argon2
substituteInPlace binding.gyp --replace-fail '"-flto", ' ""
"$npm_config_node_gyp" rebuild
popd
mkdir -p apps/desktop/build/node_modules
cp -r ./{,apps/desktop/build/}node_modules/argon2
'';
preBuild = ''
if [[ $(jq --raw-output '.devDependencies.electron' < package.json | grep -E --only-matching '^[0-9]+') != ${lib.escapeShellArg (lib.versions.major electron.version)} ]]; then
echo 'ERROR: electron version mismatch'
exit 1
fi
pushd apps/desktop/desktop_native/napi
npm run build
popd
'';
postBuild = ''
pushd apps/desktop
# desktop_native/index.js loads a file of that name regarldess of the libc being used
mv desktop_native/desktop_native.* desktop_native/desktop_native.linux-x64-musl.node
mv desktop_native/napi/desktop_napi.* desktop_native/napi/desktop_napi.linux-x64-musl.node
npm exec electron-builder -- \
--dir \

View File

@@ -0,0 +1,34 @@
{
lib,
stdenv,
fetchFromGitHub,
rustPlatform,
darwin,
}:
rustPlatform.buildRustPackage {
pname = "deploy-rs";
version = "0-unstable-2024-06-12";
src = fetchFromGitHub {
owner = "serokell";
repo = "deploy-rs";
rev = "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a";
hash = "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=";
};
cargoHash = "sha256-lsW810bktMzHZIbuN3pz9N+IUcjNtE5J2AuB/G6pGWI=";
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.CoreServices
darwin.apple_sdk.frameworks.SystemConfiguration
];
meta = {
description = "Multi-profile Nix-flake deploy tool";
homepage = "https://github.com/serokell/deploy-rs";
license = lib.licenses.mpl20;
maintainers = with lib.maintainers; [ teutat3s ];
mainProgram = "deploy";
};
}

View File

@@ -8,17 +8,17 @@
buildGoModule rec {
pname = "forgejo-runner";
version = "3.4.1";
version = "3.5.1";
src = fetchFromGitea {
domain = "code.forgejo.org";
owner = "forgejo";
repo = "runner";
rev = "v${version}";
hash = "sha256-c8heIHt+EJ6LnZT4/6TTWd7v85VRHjH72bdje12un4M=";
hash = "sha256-LRMkwSrBU5/IPXMhRT05pE487nmSffXvmfbwBiqpyj8=";
};
vendorHash = "sha256-FCCQZdAYRtJR3DGQIEvUzv+1kqvxVTGkwJwZSohq28s=";
vendorHash = "sha256-XLDtWYFHwBqbkzj4yRyr3uC1FnpS0bn1ia8i6m+CTBM=";
ldflags = [
"-s"

View File

@@ -44,7 +44,7 @@ let
buildInfo = ndkBuildInfoFun stdenv.buildPlatform;
targetInfo = ndkTargetInfoFun stdenv.targetPlatform;
inherit (stdenv.targetPlatform) sdkVer;
androidSdkVersion = if (stdenv.targetPlatform ? androidSdkVersion && stdenv.targetPlatform.androidSdkVersion != null) then stdenv.targetPlatform.androidSdkVersion else (throw "`androidSdkVersion` is not set during the importing of nixpkgs");
suffixSalt = lib.replaceStrings ["-" "."] ["_" "_"] stdenv.targetPlatform.config;
# targetInfo.triple is what Google thinks the toolchain should be, this is a little
@@ -76,8 +76,8 @@ rec {
cp -r ${androidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double} $out/toolchain
find $out/toolchain -type d -exec chmod 777 {} \;
if [ ! -d $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer} ]; then
echo "NDK does not contain libraries for SDK version ${sdkVer}";
if [ ! -d $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion} ]; then
echo "NDK does not contain libraries for SDK version ${androidSdkVersion}";
exit 1
fi
@@ -85,8 +85,8 @@ rec {
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.so $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/*.a $out/lib/
chmod +w $out/lib/*
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer}/*.so $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${sdkVer}/*.o $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}/*.so $out/lib/
ln -s $out/toolchain/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}/*.o $out/lib/
echo "INPUT(-lc++_static)" > $out/lib/libc++.a
@@ -129,7 +129,7 @@ rec {
bintools = binutils;
libc = targetAndroidndkPkgs.libraries;
extraBuildCommands = ''
echo "-D__ANDROID_API__=${stdenv.targetPlatform.sdkVer}" >> $out/nix-support/cc-cflags
echo "-D__ANDROID_API__=${stdenv.targetPlatform.androidSdkVersion}" >> $out/nix-support/cc-cflags
# Android needs executables linked with -pie since version 5.0
# Use -fPIC for compilation, and link with -pie if no -shared flag used in ldflags
echo "-target ${targetInfo.triple} -fPIC" >> $out/nix-support/cc-cflags
@@ -150,9 +150,9 @@ rec {
# cross-compiling packages to wrap incorrectly wrap binaries we don't include
# anyways.
libraries = runCommand "bionic-prebuilt" {} ''
lpath=${buildAndroidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double}/sysroot/usr/lib/${targetInfo.triple}/${sdkVer}
lpath=${buildAndroidndk}/libexec/android-sdk/ndk-bundle/toolchains/llvm/prebuilt/${buildInfo.double}/sysroot/usr/lib/${targetInfo.triple}/${androidSdkVersion}
if [ ! -d $lpath ]; then
echo "NDK does not contain libraries for SDK version ${sdkVer} <$lpath>"
echo "NDK does not contain libraries for SDK version ${androidSdkVersion} <$lpath>"
exit 1
fi
mkdir -p $out/lib

View File

@@ -109,7 +109,7 @@ let
);
# Recursively composes the dependencies of a package
composePackage = { name, packageName, src, dependencies ? [], ... }@args:
composePackage = { name, packageName, src, dependencies ? [], ... }:
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
installPackage "${packageName}" "${src}"
${includeDependencies { inherit dependencies; }}
@@ -194,7 +194,7 @@ let
# dependencies in the package.json file to the versions that are actually
# being used.
pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }:
''
if [ -d "${packageName}" ]
then
@@ -496,7 +496,7 @@ let
let
extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
in
stdenv.mkDerivation ({
stdenv.mkDerivation (finalAttrs: {
name = "${name}${if version == null then "" else "-${version}"}";
buildInputs = [ tarWrapper python nodejs ]
++ lib.optional (stdenv.isLinux) utillinux
@@ -508,8 +508,9 @@ let
inherit dontStrip; # Stripping may fail a build for some package deployments
inherit dontNpmInstall preRebuild unpackPhase buildPhase;
compositionScript = composePackage args;
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
# TODO: enable overriding dependencies too?
compositionScript = composePackage { inherit packageName dependencies; inherit (finalAttrs) name src; };
pinpointDependenciesScript = pinpointDependenciesOfPackage { inherit packageName dependencies production; };
passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];

View File

@@ -155,7 +155,7 @@ stdenv.mkDerivation rec {
description = "Free and Open Source 2D and 3D game engine";
license = lib.licenses.mit;
platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ];
maintainers = with lib.maintainers; [ shiryel superherointj ];
maintainers = with lib.maintainers; [ shiryel ];
mainProgram = "godot4";
};
}

View File

@@ -0,0 +1,20 @@
{ lib, callPackage }:
let
inherit (lib) mapAttrs' nameValuePair;
variants = {
"8" = {
version = "8.15.9";
hash = "sha256-2qJ6C1QbxjUyP/lsLe2ZVGf/n+bWn/ZwIVWKqa2dzDY=";
};
"9" = {
version = "9.7.0";
hash = "sha256-s1AY+/qPWDZosmSeQHkipyE1XNgfYb7rSsHUJY5YVVk=";
};
};
callPnpm = variant: callPackage ./generic.nix {inherit (variant) version hash;};
mkPnpm = versionSuffix: variant: nameValuePair "pnpm_${versionSuffix}" (callPnpm variant);
in
mapAttrs' mkPnpm variants

View File

@@ -0,0 +1,107 @@
{
lib,
stdenvNoCC,
callPackage,
jq,
moreutils,
cacert,
makeSetupHook,
pnpm,
yq,
}:
{
fetchDeps =
{
hash ? "",
pname,
pnpmWorkspace ? "",
prePnpmInstall ? "",
...
}@args:
let
args' = builtins.removeAttrs args [
"hash"
"pname"
];
hash' =
if hash != "" then
{ outputHash = hash; }
else
{
outputHash = "";
outputHashAlgo = "sha256";
};
installFlags = lib.optionalString (pnpmWorkspace != "") "--filter=${pnpmWorkspace}";
in
stdenvNoCC.mkDerivation (finalAttrs: (
args'
// {
name = "${pname}-pnpm-deps";
nativeBuildInputs = [
cacert
jq
moreutils
pnpm
yq
];
installPhase = ''
runHook preInstall
lockfileVersion="$(yq -r .lockfileVersion pnpm-lock.yaml)"
if [[ ''${lockfileVersion:0:1} -gt ${lib.versions.major pnpm.version} ]]; then
echo "ERROR: lockfileVersion $lockfileVersion in pnpm-lock.yaml is too new for the provided pnpm version ${lib.versions.major pnpm.version}!"
exit 1
fi
export HOME=$(mktemp -d)
pnpm config set store-dir $out
# Some packages produce platform dependent outputs. We do not want to cache those in the global store
pnpm config set side-effects-cache false
# As we pin pnpm versions, we don't really care about updates
pnpm config set update-notifier false
# Run any additional pnpm configuration commands that users provide.
${prePnpmInstall}
# pnpm is going to warn us about using --force
# --force allows us to fetch all dependencies including ones that aren't meant for our host platform
pnpm install \
--force \
--ignore-scripts \
${installFlags} \
--frozen-lockfile
runHook postInstall
'';
fixupPhase = ''
runHook preFixup
# Remove timestamp and sort the json files
rm -rf $out/v3/tmp
for f in $(find $out -name "*.json"); do
jq --sort-keys "del(.. | .checkedAt?)" $f | sponge $f
done
runHook postFixup
'';
passthru = {
serve = callPackage ./serve.nix {
inherit pnpm;
pnpmDeps = finalAttrs.finalPackage;
};
};
dontConfigure = true;
dontBuild = true;
outputHashMode = "recursive";
}
// hash'
));
configHook = makeSetupHook {
name = "pnpm-config-hook";
propagatedBuildInputs = [ pnpm ];
} ./pnpm-config-hook.sh;
}

View File

@@ -0,0 +1,50 @@
# shellcheck shell=bash
pnpmConfigHook() {
echo "Executing pnpmConfigHook"
if [ -n "${pnpmRoot-}" ]; then
pushd "$pnpmRoot"
fi
if [ -z "${pnpmDeps-}" ]; then
echo "Error: 'pnpmDeps' must be set when using pnpmConfigHook."
exit 1
fi
echo "Configuring pnpm store"
export HOME=$(mktemp -d)
export STORE_PATH=$(mktemp -d)
cp -Tr "$pnpmDeps" "$STORE_PATH"
chmod -R +w "$STORE_PATH"
pnpm config set store-dir "$STORE_PATH"
echo "Installing dependencies"
if [[ -n "$pnpmWorkspace" ]]; then
pnpmInstallFlags+=("--filter=$pnpmWorkspace")
fi
runHook prePnpmInstall
pnpm install \
--offline \
--ignore-scripts \
"${pnpmInstallFlags[@]}" \
--frozen-lockfile
echo "Patching scripts"
patchShebangs node_modules/{*,.*}
if [ -n "${pnpmRoot-}" ]; then
popd
fi
echo "Finished pnpmConfigHook"
}
postConfigureHooks+=(pnpmConfigHook)

View File

@@ -0,0 +1,30 @@
{ writeShellApplication, pnpm, pnpmDeps }:
writeShellApplication {
name = "serve-pnpm-store";
runtimeInputs = [
pnpm
];
text = ''
storePath=$(mktemp -d)
clean() {
echo "Cleaning up temporary store at '$storePath'..."
rm -rf "$storePath"
}
echo "Copying pnpm store '${pnpmDeps}' to temporary store..."
cp -Tr "${pnpmDeps}" "$storePath"
chmod -R +w "$storePath"
echo "Run 'pnpm install --store-dir \"$storePath\"' to install packages from this store."
trap clean EXIT
pnpm server start \
--store-dir "$storePath"
'';
}

View File

@@ -0,0 +1,80 @@
{
lib,
stdenvNoCC,
callPackages,
fetchurl,
installShellFiles,
nodejs,
testers,
withNode ? true,
version,
hash,
}: stdenvNoCC.mkDerivation (finalAttrs: {
pname = "pnpm";
inherit version;
src = fetchurl {
url = "https://registry.npmjs.org/pnpm/-/pnpm-${finalAttrs.version}.tgz";
inherit hash;
};
# Remove binary files from src, we don't need them, and this way we make sure
# our distribution is free of binaryNativeCode
preConfigure = ''
rm -r dist/reflink.*node dist/vendor
'';
buildInputs = lib.optionals withNode [ nodejs ];
nativeBuildInputs = [ installShellFiles nodejs ];
installPhase = ''
runHook preInstall
install -d $out/{bin,libexec}
cp -R . $out/libexec/pnpm
ln -s $out/libexec/pnpm/bin/pnpm.cjs $out/bin/pnpm
ln -s $out/libexec/pnpm/bin/pnpx.cjs $out/bin/pnpx
runHook postInstall
'';
postInstall =
if lib.toInt (lib.versions.major version) < 9 then ''
export HOME="$PWD"
node $out/bin/pnpm install-completion bash
node $out/bin/pnpm install-completion fish
node $out/bin/pnpm install-completion zsh
sed -i '1 i#compdef pnpm' .config/tabtab/zsh/pnpm.zsh
installShellCompletion \
.config/tabtab/bash/pnpm.bash \
.config/tabtab/fish/pnpm.fish \
.config/tabtab/zsh/pnpm.zsh
'' else ''
node $out/bin/pnpm completion bash >pnpm.bash
node $out/bin/pnpm completion fish >pnpm.fish
node $out/bin/pnpm completion zsh >pnpm.zsh
sed -i '1 i#compdef pnpm' pnpm.zsh
installShellCompletion pnpm.{bash,fish,zsh}
'';
passthru = let
fetchDepsAttrs = callPackages ./fetch-deps { pnpm = finalAttrs.finalPackage; };
in {
inherit (fetchDepsAttrs) fetchDeps configHook;
tests.version = lib.optionalAttrs withNode (
testers.testVersion { package = finalAttrs.finalPackage; }
);
};
meta = with lib; {
description = "Fast, disk space efficient package manager for JavaScript";
homepage = "https://pnpm.io/";
changelog = "https://github.com/pnpm/pnpm/releases/tag/v${finalAttrs.version}";
license = licenses.mit;
maintainers = with maintainers; [ Scrumplex ];
platforms = platforms.all;
mainProgram = "pnpm";
};
})

View File

@@ -1,7 +1,7 @@
{
"testing": {
"version": "6.11-rc4",
"hash": "sha256:1cjvsmnnzm2gc8m56jbn07r8zfz6b96701njhy2bbd4a800zx1hi"
"version": "6.11-rc5",
"hash": "sha256:06qq6y7cryq0xy4b68ky2hr44cw2nqhbna0dbzfbmr9d5sh9c0gn"
},
"6.1": {
"version": "6.1.106",

View File

@@ -20,7 +20,7 @@ let
description = "Distributed reliable key-value store for the most critical data of a distributed system";
license = licenses.asl20;
homepage = "https://etcd.io/";
maintainers = with maintainers; [ offline superherointj ];
maintainers = with maintainers; [ offline ];
platforms = platforms.darwin ++ platforms.linux;
};

View File

@@ -64,7 +64,7 @@ in lib.init bootStages ++ [
cc = if crossSystem.useiOSPrebuilt or false
then buildPackages.darwin.iosSdkPkgs.clang
else if crossSystem.useAndroidPrebuilt or false
then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang
then buildPackages."androidndkPkgs_${crossSystem.androidNdkVersion}".clang
else if targetPlatform.isGhcjs
# Need to use `throw` so tryEval for splicing works, ugh. Using
# `null` or skipping the attribute would cause an eval failure

View File

@@ -1,34 +0,0 @@
{ lib
, stdenv
, fetchFromGitHub
, rustPlatform
, CoreServices
, SystemConfiguration
}:
rustPlatform.buildRustPackage {
pname = "deploy-rs";
version = "unstable-2024-02-16";
src = fetchFromGitHub {
owner = "serokell";
repo = "deploy-rs";
rev = "0a0187794ac7f7a1e62cda3dabf8dc041f868790";
hash = "sha256-dTGGw2y8wvfjr+J9CjQbfdulOq72hUG17HXVNxpH1yE=";
};
cargoHash = "sha256-Vo/45cZM/sBAaoikhEwCvduhMQjurwSZwCjwrIQn7IA=";
buildInputs = lib.optionals stdenv.isDarwin [
CoreServices
SystemConfiguration
];
meta = with lib; {
description = "Multi-profile Nix-flake deploy tool";
homepage = "https://github.com/serokell/deploy-rs";
license = licenses.mpl20;
maintainers = with maintainers; [ teutat3s ];
mainProgram = "deploy";
};
}

View File

@@ -11891,6 +11891,10 @@ with pkgs;
pngquant = callPackage ../tools/graphics/pngquant { };
inherit (callPackages ../development/tools/pnpm { })
pnpm_8 pnpm_9;
pnpm = pnpm_9;
po4a = perlPackages.Po4a;
poac = callPackage ../development/tools/poac {
@@ -20101,7 +20105,7 @@ with pkgs;
# TODO(@Ericson2314): Build bionic libc from source
bionic = if stdenv.hostPlatform.useAndroidPrebuilt
then pkgs."androidndkPkgs_${stdenv.hostPlatform.ndkVer}".libraries
then pkgs."androidndkPkgs_${stdenv.hostPlatform.androidNdkVer}".libraries
else callPackage ../os-specific/linux/bionic-prebuilt { };
boolstuff = callPackage ../development/libraries/boolstuff { };
@@ -39173,10 +39177,6 @@ with pkgs;
dell-530cdn = callPackage ../misc/drivers/dell-530cdn { };
deploy-rs = callPackage ../tools/package-management/deploy-rs {
inherit (darwin.apple_sdk.frameworks) CoreServices SystemConfiguration;
};
dockutil = callPackage ../os-specific/darwin/dockutil { };
eiciel = callPackage ../tools/filesystems/eiciel { };

View File

@@ -7288,10 +7288,10 @@ with self; {
DBI = buildPerlPackage {
pname = "DBI";
version = "1.643";
version = "1.644";
src = fetchurl {
url = "mirror://cpan/authors/id/T/TI/TIMB/DBI-1.643.tar.gz";
hash = "sha256-iiuZPbVgosNzwXTul2pRAn3XgOx2auF2IMIDk9LoNvo=";
url = "mirror://cpan/authors/id/H/HM/HMBRAND/DBI-1.644.tar.gz";
hash = "sha256-Ipe5neCeZwhmQLWQaZ4OmC+0adpjqT/ijcFHgtt6U8g=";
};
postInstall = lib.optionalString (perl ? crossVersion) ''
mkdir -p $out/${perl.libPrefix}/cross_perl/${perl.version}/DBI