mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-14 06:00:33 +03:00
Merge remote-tracking branch 'origin/staging-next' into staging
This commit is contained in:
commit
936f4e016d
72 changed files with 1220 additions and 391 deletions
2
.github/workflows/codeowners-v2.yml
vendored
2
.github/workflows/codeowners-v2.yml
vendored
|
@ -19,6 +19,8 @@ name: Codeowners v2
|
||||||
#
|
#
|
||||||
# This split is done because checking code owners requires handling untrusted PR input,
|
# This split is done because checking code owners requires handling untrusted PR input,
|
||||||
# while requesting code owners requires PR write access, and those shouldn't be mixed.
|
# while requesting code owners requires PR write access, and those shouldn't be mixed.
|
||||||
|
#
|
||||||
|
# Note that the latter is also used for ./eval.yml requesting reviewers.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
|
|
33
.github/workflows/eval.yml
vendored
33
.github/workflows/eval.yml
vendored
|
@ -133,6 +133,7 @@ jobs:
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
with:
|
with:
|
||||||
ref: ${{ needs.get-merge-commit.outputs.mergedSha }}
|
ref: ${{ needs.get-merge-commit.outputs.mergedSha }}
|
||||||
|
fetch-depth: 2
|
||||||
path: nixpkgs
|
path: nixpkgs
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
|
@ -194,12 +195,18 @@ jobs:
|
||||||
- name: Compare against the base branch
|
- name: Compare against the base branch
|
||||||
if: steps.baseRunId.outputs.baseRunId
|
if: steps.baseRunId.outputs.baseRunId
|
||||||
run: |
|
run: |
|
||||||
nix-build nixpkgs/ci -A eval.compare \
|
git -C nixpkgs worktree add ../base ${{ needs.attrs.outputs.baseSha }}
|
||||||
|
git -C nixpkgs diff --name-only ${{ needs.attrs.outputs.baseSha }} ${{ needs.attrs.outputs.mergedSha }} \
|
||||||
|
| jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json
|
||||||
|
|
||||||
|
# Use the base branch to get accurate maintainer info
|
||||||
|
nix-build base/ci -A eval.compare \
|
||||||
--arg beforeResultDir ./baseResult \
|
--arg beforeResultDir ./baseResult \
|
||||||
--arg afterResultDir ./prResult \
|
--arg afterResultDir ./prResult \
|
||||||
|
--arg touchedFilesJson ./touched-files.json \
|
||||||
-o comparison
|
-o comparison
|
||||||
|
|
||||||
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
|
cat comparison/step-summary.md >> "$GITHUB_STEP_SUMMARY"
|
||||||
# TODO: Request reviews from maintainers for packages whose files are modified in the PR
|
|
||||||
|
|
||||||
- name: Upload the combined results
|
- name: Upload the combined results
|
||||||
if: steps.baseRunId.outputs.baseRunId
|
if: steps.baseRunId.outputs.baseRunId
|
||||||
|
@ -218,6 +225,14 @@ jobs:
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
statuses: write
|
statuses: write
|
||||||
steps:
|
steps:
|
||||||
|
# See ./codeowners-v2.yml, reuse the same App because we need the same permissions
|
||||||
|
# Can't use the token received from permissions above, because it can't get enough permissions
|
||||||
|
- uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0
|
||||||
|
id: app-token
|
||||||
|
with:
|
||||||
|
app-id: ${{ vars.OWNER_APP_ID }}
|
||||||
|
private-key: ${{ secrets.OWNER_APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Download process result
|
- name: Download process result
|
||||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||||
with:
|
with:
|
||||||
|
@ -252,6 +267,20 @@ jobs:
|
||||||
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels \
|
/repos/"$REPOSITORY"/issues/"$NUMBER"/labels \
|
||||||
-f "labels[]=$toAdd"
|
-f "labels[]=$toAdd"
|
||||||
done < <(comm -13 before after)
|
done < <(comm -13 before after)
|
||||||
|
|
||||||
|
# maintainers.json contains GitHub IDs. Look up handles to request reviews from.
|
||||||
|
# There appears to be no API to request reviews based on GitHub IDs
|
||||||
|
jq -r 'keys[]' comparison/maintainers.json \
|
||||||
|
| while read -r id; do gh api /user/"$id"; done \
|
||||||
|
| jq -s '{ reviewers: map(.login) }' \
|
||||||
|
> reviewers.json
|
||||||
|
|
||||||
|
# Request reviewers from maintainers of changed output paths
|
||||||
|
GH_TOKEN=${{ steps.app-token.outputs.token }} gh api \
|
||||||
|
--method POST \
|
||||||
|
/repos/${{ github.repository }}/pulls/${{ github.event.number }}/requested_reviewers \
|
||||||
|
--input reviewers.json
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
REPOSITORY: ${{ github.repository }}
|
REPOSITORY: ${{ github.repository }}
|
||||||
|
|
|
@ -5,7 +5,11 @@
|
||||||
writeText,
|
writeText,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{ beforeResultDir, afterResultDir }:
|
{
|
||||||
|
beforeResultDir,
|
||||||
|
afterResultDir,
|
||||||
|
touchedFilesJson,
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
/*
|
/*
|
||||||
Derivation that computes which packages are affected (added, changed or removed) between two revisions of nixpkgs.
|
Derivation that computes which packages are affected (added, changed or removed) between two revisions of nixpkgs.
|
||||||
|
@ -77,11 +81,11 @@ let
|
||||||
# - values: lists of `packagePlatformPath`s
|
# - values: lists of `packagePlatformPath`s
|
||||||
diffAttrs = diff beforeAttrs afterAttrs;
|
diffAttrs = diff beforeAttrs afterAttrs;
|
||||||
|
|
||||||
changed-paths =
|
|
||||||
let
|
|
||||||
rebuilds = uniqueStrings (diffAttrs.added ++ diffAttrs.changed);
|
rebuilds = uniqueStrings (diffAttrs.added ++ diffAttrs.changed);
|
||||||
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds;
|
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs rebuilds;
|
||||||
|
|
||||||
|
changed-paths =
|
||||||
|
let
|
||||||
rebuildsByPlatform = groupByPlatform rebuildsPackagePlatformAttrs;
|
rebuildsByPlatform = groupByPlatform rebuildsPackagePlatformAttrs;
|
||||||
rebuildsByKernel = groupByKernel rebuildsPackagePlatformAttrs;
|
rebuildsByKernel = groupByKernel rebuildsPackagePlatformAttrs;
|
||||||
rebuildCountByKernel = lib.mapAttrs (
|
rebuildCountByKernel = lib.mapAttrs (
|
||||||
|
@ -104,10 +108,17 @@ let
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
maintainers = import ./maintainers.nix {
|
||||||
|
changedattrs = lib.unique (map (a: a.packagePath) rebuildsPackagePlatformAttrs);
|
||||||
|
changedpathsjson = touchedFilesJson;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
runCommand "compare"
|
runCommand "compare"
|
||||||
{
|
{
|
||||||
nativeBuildInputs = [ jq ];
|
nativeBuildInputs = [ jq ];
|
||||||
|
maintainers = builtins.toJSON maintainers;
|
||||||
|
passAsFile = [ "maintainers" ];
|
||||||
}
|
}
|
||||||
''
|
''
|
||||||
mkdir $out
|
mkdir $out
|
||||||
|
@ -115,5 +126,8 @@ runCommand "compare"
|
||||||
cp ${changed-paths} $out/changed-paths.json
|
cp ${changed-paths} $out/changed-paths.json
|
||||||
|
|
||||||
jq -r -f ${./generate-step-summary.jq} < ${changed-paths} > $out/step-summary.md
|
jq -r -f ${./generate-step-summary.jq} < ${changed-paths} > $out/step-summary.md
|
||||||
|
|
||||||
|
cp "$maintainersPath" "$out/maintainers.json"
|
||||||
|
|
||||||
# TODO: Compare eval stats
|
# TODO: Compare eval stats
|
||||||
''
|
''
|
||||||
|
|
123
ci/eval/compare/maintainers.nix
Normal file
123
ci/eval/compare/maintainers.nix
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
# Almost directly vendored from https://github.com/NixOS/ofborg/blob/5a4e743f192fb151915fcbe8789922fa401ecf48/ofborg/src/maintainers.nix
|
||||||
|
{ changedattrs, changedpathsjson }:
|
||||||
|
let
|
||||||
|
pkgs = import ../../.. {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
config = { };
|
||||||
|
overlays = [ ];
|
||||||
|
};
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
|
changedpaths = builtins.fromJSON (builtins.readFile changedpathsjson);
|
||||||
|
|
||||||
|
anyMatchingFile =
|
||||||
|
filename:
|
||||||
|
let
|
||||||
|
matching = builtins.filter (changed: lib.strings.hasSuffix changed filename) changedpaths;
|
||||||
|
in
|
||||||
|
(builtins.length matching) > 0;
|
||||||
|
|
||||||
|
anyMatchingFiles = files: (builtins.length (builtins.filter anyMatchingFile files)) > 0;
|
||||||
|
|
||||||
|
enrichedAttrs = builtins.map (path: {
|
||||||
|
path = path;
|
||||||
|
name = builtins.concatStringsSep "." path;
|
||||||
|
}) changedattrs;
|
||||||
|
|
||||||
|
validPackageAttributes = builtins.filter (
|
||||||
|
pkg:
|
||||||
|
if (lib.attrsets.hasAttrByPath pkg.path pkgs) then
|
||||||
|
(
|
||||||
|
if (builtins.tryEval (lib.attrsets.attrByPath pkg.path null pkgs)).success then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
builtins.trace "Failed to access ${pkg.name} even though it exists" false
|
||||||
|
)
|
||||||
|
else
|
||||||
|
builtins.trace "Failed to locate ${pkg.name}." false
|
||||||
|
) enrichedAttrs;
|
||||||
|
|
||||||
|
attrsWithPackages = builtins.map (
|
||||||
|
pkg: pkg // { package = lib.attrsets.attrByPath pkg.path null pkgs; }
|
||||||
|
) validPackageAttributes;
|
||||||
|
|
||||||
|
attrsWithMaintainers = builtins.map (
|
||||||
|
pkg: pkg // { maintainers = (pkg.package.meta or { }).maintainers or [ ]; }
|
||||||
|
) attrsWithPackages;
|
||||||
|
|
||||||
|
attrsWeCanPing = builtins.filter (
|
||||||
|
pkg:
|
||||||
|
if (builtins.length pkg.maintainers) > 0 then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
builtins.trace "Package has no maintainers: ${pkg.name}" false
|
||||||
|
) attrsWithMaintainers;
|
||||||
|
|
||||||
|
relevantFilenames =
|
||||||
|
drv:
|
||||||
|
(lib.lists.unique (
|
||||||
|
builtins.map (pos: lib.strings.removePrefix (toString ../..) pos.file) (
|
||||||
|
builtins.filter (x: x != null) [
|
||||||
|
(builtins.unsafeGetAttrPos "maintainers" (drv.meta or { }))
|
||||||
|
(builtins.unsafeGetAttrPos "src" drv)
|
||||||
|
# broken because name is always set by stdenv:
|
||||||
|
# # A hack to make `nix-env -qa` and `nix search` ignore broken packages.
|
||||||
|
# # TODO(@oxij): remove this assert when something like NixOS/nix#1771 gets merged into nix.
|
||||||
|
# name = assert validity.handled; name + lib.optionalString
|
||||||
|
#(builtins.unsafeGetAttrPos "name" drv)
|
||||||
|
(builtins.unsafeGetAttrPos "pname" drv)
|
||||||
|
(builtins.unsafeGetAttrPos "version" drv)
|
||||||
|
|
||||||
|
# Use ".meta.position" for cases when most of the package is
|
||||||
|
# defined in a "common" section and the only place where
|
||||||
|
# reference to the file with a derivation the "pos"
|
||||||
|
# attribute.
|
||||||
|
#
|
||||||
|
# ".meta.position" has the following form:
|
||||||
|
# "pkgs/tools/package-management/nix/default.nix:155"
|
||||||
|
# We transform it to the following:
|
||||||
|
# { file = "pkgs/tools/package-management/nix/default.nix"; }
|
||||||
|
{ file = lib.head (lib.splitString ":" (drv.meta.position or "")); }
|
||||||
|
]
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
attrsWithFilenames = builtins.map (
|
||||||
|
pkg: pkg // { filenames = relevantFilenames pkg.package; }
|
||||||
|
) attrsWithMaintainers;
|
||||||
|
|
||||||
|
attrsWithModifiedFiles = builtins.filter (pkg: anyMatchingFiles pkg.filenames) attrsWithFilenames;
|
||||||
|
|
||||||
|
listToPing = lib.lists.flatten (
|
||||||
|
builtins.map (
|
||||||
|
pkg:
|
||||||
|
builtins.map (maintainer: {
|
||||||
|
id = maintainer.githubId;
|
||||||
|
packageName = pkg.name;
|
||||||
|
dueToFiles = pkg.filenames;
|
||||||
|
}) pkg.maintainers
|
||||||
|
) attrsWithModifiedFiles
|
||||||
|
);
|
||||||
|
|
||||||
|
byMaintainer = lib.lists.foldr (
|
||||||
|
ping: collector:
|
||||||
|
collector
|
||||||
|
// {
|
||||||
|
"${toString ping.id}" = [
|
||||||
|
{ inherit (ping) packageName dueToFiles; }
|
||||||
|
] ++ (collector."${toString ping.id}" or [ ]);
|
||||||
|
}
|
||||||
|
) { } listToPing;
|
||||||
|
|
||||||
|
textForPackages =
|
||||||
|
packages: lib.strings.concatStringsSep ", " (builtins.map (pkg: pkg.packageName) packages);
|
||||||
|
|
||||||
|
textPerMaintainer = lib.attrsets.mapAttrs (
|
||||||
|
maintainer: packages: "- @${maintainer} for ${textForPackages packages}"
|
||||||
|
) byMaintainer;
|
||||||
|
|
||||||
|
packagesPerMaintainer = lib.attrsets.mapAttrs (
|
||||||
|
maintainer: packages: builtins.map (pkg: pkg.packageName) packages
|
||||||
|
) byMaintainer;
|
||||||
|
in
|
||||||
|
packagesPerMaintainer
|
|
@ -11,6 +11,7 @@ rec {
|
||||||
into
|
into
|
||||||
{
|
{
|
||||||
name = "hello";
|
name = "hello";
|
||||||
|
packagePath = [ "hello" ];
|
||||||
platform = "aarch64-linux";
|
platform = "aarch64-linux";
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
@ -30,6 +31,9 @@ rec {
|
||||||
null
|
null
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
# [ "python312Packages" "numpy" ]
|
||||||
|
inherit packagePath;
|
||||||
|
|
||||||
# python312Packages.numpy
|
# python312Packages.numpy
|
||||||
inherit name;
|
inherit name;
|
||||||
|
|
||||||
|
@ -52,12 +56,12 @@ rec {
|
||||||
]
|
]
|
||||||
into
|
into
|
||||||
[
|
[
|
||||||
{ name = "hello"; platform = "aarch64-linux"; }
|
{ name = "hello"; platform = "aarch64-linux"; packagePath = [ "hello" ]; }
|
||||||
{ name = "hello"; platform = "x86_64-linux"; }
|
{ name = "hello"; platform = "x86_64-linux"; packagePath = [ "hello" ]; }
|
||||||
{ name = "hello"; platform = "aarch64-darwin"; }
|
{ name = "hello"; platform = "aarch64-darwin"; packagePath = [ "hello" ]; }
|
||||||
{ name = "hello"; platform = "x86_64-darwin"; }
|
{ name = "hello"; platform = "x86_64-darwin"; packagePath = [ "hello" ]; }
|
||||||
{ name = "bye"; platform = "aarch64-darwin"; }
|
{ name = "bye"; platform = "aarch64-darwin"; packagePath = [ "hello" ]; }
|
||||||
{ name = "bye"; platform = "x86_64-darwin"; }
|
{ name = "bye"; platform = "x86_64-darwin"; packagePath = [ "hello" ]; }
|
||||||
]
|
]
|
||||||
*/
|
*/
|
||||||
convertToPackagePlatformAttrs =
|
convertToPackagePlatformAttrs =
|
||||||
|
@ -120,12 +124,12 @@ rec {
|
||||||
|
|
||||||
Turns
|
Turns
|
||||||
[
|
[
|
||||||
{ name = "hello"; platform = "aarch64-linux"; }
|
{ name = "hello"; platform = "aarch64-linux"; ... }
|
||||||
{ name = "hello"; platform = "x86_64-linux"; }
|
{ name = "hello"; platform = "x86_64-linux"; ... }
|
||||||
{ name = "hello"; platform = "aarch64-darwin"; }
|
{ name = "hello"; platform = "aarch64-darwin"; ... }
|
||||||
{ name = "hello"; platform = "x86_64-darwin"; }
|
{ name = "hello"; platform = "x86_64-darwin"; ... }
|
||||||
{ name = "bye"; platform = "aarch64-darwin"; }
|
{ name = "bye"; platform = "aarch64-darwin"; ... }
|
||||||
{ name = "bye"; platform = "x86_64-darwin"; }
|
{ name = "bye"; platform = "x86_64-darwin"; ... }
|
||||||
]
|
]
|
||||||
into
|
into
|
||||||
{
|
{
|
||||||
|
@ -145,12 +149,12 @@ rec {
|
||||||
|
|
||||||
# Turns
|
# Turns
|
||||||
# [
|
# [
|
||||||
# { name = "hello"; platform = "aarch64-linux"; }
|
# { name = "hello"; platform = "aarch64-linux"; ... }
|
||||||
# { name = "hello"; platform = "x86_64-linux"; }
|
# { name = "hello"; platform = "x86_64-linux"; ... }
|
||||||
# { name = "hello"; platform = "aarch64-darwin"; }
|
# { name = "hello"; platform = "aarch64-darwin"; ... }
|
||||||
# { name = "hello"; platform = "x86_64-darwin"; }
|
# { name = "hello"; platform = "x86_64-darwin"; ... }
|
||||||
# { name = "bye"; platform = "aarch64-darwin"; }
|
# { name = "bye"; platform = "aarch64-darwin"; ... }
|
||||||
# { name = "bye"; platform = "x86_64-darwin"; }
|
# { name = "bye"; platform = "x86_64-darwin"; ... }
|
||||||
# ]
|
# ]
|
||||||
#
|
#
|
||||||
# into
|
# into
|
||||||
|
|
|
@ -15661,6 +15661,12 @@
|
||||||
githubId = 9636071;
|
githubId = 9636071;
|
||||||
name = "Myrl Hex";
|
name = "Myrl Hex";
|
||||||
};
|
};
|
||||||
|
myypo = {
|
||||||
|
email = "nikirsmcgl@gmail.com";
|
||||||
|
github = "myypo";
|
||||||
|
githubId = 110892040;
|
||||||
|
name = "Mykyta Polchanov";
|
||||||
|
};
|
||||||
mzacho = {
|
mzacho = {
|
||||||
email = "nixpkgs@martinzacho.net";
|
email = "nixpkgs@martinzacho.net";
|
||||||
github = "mzacho";
|
github = "mzacho";
|
||||||
|
|
|
@ -724,9 +724,6 @@ let
|
||||||
# __noChroot for example).
|
# __noChroot for example).
|
||||||
export HOME=$TMPDIR
|
export HOME=$TMPDIR
|
||||||
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
||||||
|
|
||||||
# The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
|
|
||||||
rm -f $mountPoint/etc/machine-id
|
|
||||||
''}
|
''}
|
||||||
|
|
||||||
# Set the ownerships of the contents. The modes are set in preVM.
|
# Set the ownerships of the contents. The modes are set in preVM.
|
||||||
|
|
|
@ -80,9 +80,10 @@ in
|
||||||
let
|
let
|
||||||
args = lib.map lib.escapeShellArg (
|
args = lib.map lib.escapeShellArg (
|
||||||
[
|
[
|
||||||
"-l"
|
"--verbose"
|
||||||
|
"--user"
|
||||||
cfg.username
|
cfg.username
|
||||||
"-i"
|
"--identity-file"
|
||||||
cfg.identityFilePath
|
cfg.identityFilePath
|
||||||
cfg.host
|
cfg.host
|
||||||
cfg.remoteFilesystem
|
cfg.remoteFilesystem
|
||||||
|
|
|
@ -159,7 +159,7 @@ def copy_from_file(file: str, dry_run: bool = False) -> str:
|
||||||
|
|
||||||
|
|
||||||
def write_entry(profile: str | None, generation: int, specialisation: str | None,
|
def write_entry(profile: str | None, generation: int, specialisation: str | None,
|
||||||
machine_id: str, bootspec: BootSpec, current: bool) -> None:
|
machine_id: str | None, bootspec: BootSpec, current: bool) -> None:
|
||||||
if specialisation:
|
if specialisation:
|
||||||
bootspec = bootspec.specialisations[specialisation]
|
bootspec = bootspec.specialisations[specialisation]
|
||||||
kernel = copy_from_file(bootspec.kernel)
|
kernel = copy_from_file(bootspec.kernel)
|
||||||
|
@ -281,11 +281,7 @@ def install_bootloader(args: argparse.Namespace) -> None:
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
if e.errno != errno.ENOENT:
|
if e.errno != errno.ENOENT:
|
||||||
raise
|
raise
|
||||||
# Since systemd version 232 a machine ID is required and it might not
|
machine_id = None
|
||||||
# be there on newly installed systems, so let's generate one so that
|
|
||||||
# bootctl can find it and we can also pass it to write_entry() later.
|
|
||||||
cmd = [f"{SYSTEMD}/bin/systemd-machine-id-setup", "--print"]
|
|
||||||
machine_id = run(cmd, stdout=subprocess.PIPE).stdout.rstrip()
|
|
||||||
|
|
||||||
if os.getenv("NIXOS_INSTALL_GRUB") == "1":
|
if os.getenv("NIXOS_INSTALL_GRUB") == "1":
|
||||||
warnings.warn("NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER", DeprecationWarning)
|
warnings.warn("NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER", DeprecationWarning)
|
||||||
|
|
|
@ -144,6 +144,7 @@ in {
|
||||||
audiobookshelf = handleTest ./audiobookshelf.nix {};
|
audiobookshelf = handleTest ./audiobookshelf.nix {};
|
||||||
auth-mysql = handleTest ./auth-mysql.nix {};
|
auth-mysql = handleTest ./auth-mysql.nix {};
|
||||||
authelia = handleTest ./authelia.nix {};
|
authelia = handleTest ./authelia.nix {};
|
||||||
|
auto-cpufreq = handleTest ./auto-cpufreq.nix {};
|
||||||
avahi = handleTest ./avahi.nix {};
|
avahi = handleTest ./avahi.nix {};
|
||||||
avahi-with-resolved = handleTest ./avahi.nix { networkd = true; };
|
avahi-with-resolved = handleTest ./avahi.nix { networkd = true; };
|
||||||
ayatana-indicators = runTest ./ayatana-indicators.nix;
|
ayatana-indicators = runTest ./ayatana-indicators.nix;
|
||||||
|
|
33
nixos/tests/auto-cpufreq.nix
Normal file
33
nixos/tests/auto-cpufreq.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
import ./make-test-python.nix (
|
||||||
|
{ pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
name = "auto-cpufreq-server";
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
machine =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
# service will still start but since vm inside qemu cpufreq adjustments
|
||||||
|
# cannot be made. This will resource in the following error but the service
|
||||||
|
# remains up:
|
||||||
|
# ERROR:
|
||||||
|
# Couldn't find any of the necessary scaling governors.
|
||||||
|
services.auto-cpufreq = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
charger = {
|
||||||
|
turbo = "auto";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.start()
|
||||||
|
machine.wait_for_unit("auto-cpufreq.service")
|
||||||
|
machine.succeed("auto-cpufreq --force reset")
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
|
@ -6062,6 +6062,18 @@ final: prev:
|
||||||
meta.homepage = "https://github.com/junegunn/limelight.vim/";
|
meta.homepage = "https://github.com/junegunn/limelight.vim/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
linediff-vim = buildVimPlugin {
|
||||||
|
pname = "linediff.vim";
|
||||||
|
version = "2024-04-22";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "AndrewRadev";
|
||||||
|
repo = "linediff.vim";
|
||||||
|
rev = "ddae71ef5f94775d101c1c70032ebe8799f32745";
|
||||||
|
sha256 = "01dshpxm1svfhw9l447mz224qbvlbvywd7ai4wxwyjzgkhp36937";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/AndrewRadev/linediff.vim/";
|
||||||
|
};
|
||||||
|
|
||||||
lingua-franca-vim = buildVimPlugin {
|
lingua-franca-vim = buildVimPlugin {
|
||||||
pname = "lingua-franca.vim";
|
pname = "lingua-franca.vim";
|
||||||
version = "2021-09-05";
|
version = "2021-09-05";
|
||||||
|
@ -9389,6 +9401,18 @@ final: prev:
|
||||||
meta.homepage = "https://github.com/LhKipp/nvim-nu/";
|
meta.homepage = "https://github.com/LhKipp/nvim-nu/";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nvim-numbertoggle = buildVimPlugin {
|
||||||
|
pname = "nvim-numbertoggle";
|
||||||
|
version = "2024-03-29";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "sitiom";
|
||||||
|
repo = "nvim-numbertoggle";
|
||||||
|
rev = "c5827153f8a955886f1b38eaea6998c067d2992f";
|
||||||
|
sha256 = "18nxqi3a3xamrjzpsabww411ix6vr44smprqi9prd47238lpshi2";
|
||||||
|
};
|
||||||
|
meta.homepage = "https://github.com/sitiom/nvim-numbertoggle/";
|
||||||
|
};
|
||||||
|
|
||||||
nvim-osc52 = buildVimPlugin {
|
nvim-osc52 = buildVimPlugin {
|
||||||
pname = "nvim-osc52";
|
pname = "nvim-osc52";
|
||||||
version = "2024-05-24";
|
version = "2024-05-24";
|
||||||
|
|
|
@ -502,6 +502,7 @@ https://github.com/spywhere/lightline-lsp/,,
|
||||||
https://github.com/itchyny/lightline.vim/,,
|
https://github.com/itchyny/lightline.vim/,,
|
||||||
https://github.com/ggandor/lightspeed.nvim/,,
|
https://github.com/ggandor/lightspeed.nvim/,,
|
||||||
https://github.com/junegunn/limelight.vim/,,
|
https://github.com/junegunn/limelight.vim/,,
|
||||||
|
https://github.com/AndrewRadev/linediff.vim/,HEAD,
|
||||||
https://github.com/lf-lang/lingua-franca.vim/,,
|
https://github.com/lf-lang/lingua-franca.vim/,,
|
||||||
https://github.com/tamago324/lir.nvim/,,
|
https://github.com/tamago324/lir.nvim/,,
|
||||||
https://github.com/kkharji/lispdocs.nvim/,,
|
https://github.com/kkharji/lispdocs.nvim/,,
|
||||||
|
@ -779,6 +780,7 @@ https://github.com/nvim-neotest/nvim-nio/,HEAD,
|
||||||
https://github.com/ya2s/nvim-nonicons/,,
|
https://github.com/ya2s/nvim-nonicons/,,
|
||||||
https://github.com/rcarriga/nvim-notify/,,
|
https://github.com/rcarriga/nvim-notify/,,
|
||||||
https://github.com/LhKipp/nvim-nu/,HEAD,
|
https://github.com/LhKipp/nvim-nu/,HEAD,
|
||||||
|
https://github.com/sitiom/nvim-numbertoggle/,HEAD,
|
||||||
https://github.com/ojroques/nvim-osc52/,,
|
https://github.com/ojroques/nvim-osc52/,,
|
||||||
https://github.com/julienvincent/nvim-paredit/,,
|
https://github.com/julienvincent/nvim-paredit/,,
|
||||||
https://github.com/gpanders/nvim-parinfer/,HEAD,
|
https://github.com/gpanders/nvim-parinfer/,HEAD,
|
||||||
|
|
|
@ -1,48 +1,14 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
|
||||||
vscode-utils,
|
vscode-utils,
|
||||||
fetchurl,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
version = "0.13.4";
|
|
||||||
|
|
||||||
sources = {
|
|
||||||
"x86_64-linux" = {
|
|
||||||
arch = "linux-x64";
|
|
||||||
url = "https://download.visualjj.com/visualjj-linux-x64-${version}.vsix";
|
|
||||||
hash = "sha256-q9ubYkhrV28sB9CV1dyBEIFEkTrkGHRXdz5+4xjeVzI=";
|
|
||||||
};
|
|
||||||
"x86_64-darwin" = {
|
|
||||||
arch = "darwin-x64";
|
|
||||||
url = "https://download.visualjj.com/visualjj-darwin-x64-${version}.vsix";
|
|
||||||
hash = "sha256-vV5u1QBICz3GIYRgH9UWM38a8YXtvW0u8r7c1SaKwxM=";
|
|
||||||
};
|
|
||||||
"aarch64-linux" = {
|
|
||||||
arch = "linux-arm64";
|
|
||||||
url = "https://download.visualjj.com/visualjj-linux-arm64-${version}.vsix";
|
|
||||||
hash = "sha256-fgT4brIhHI6gNCcsbHpz+v4/diyox2VoFlvCnhPIbPM=";
|
|
||||||
};
|
|
||||||
"aarch64-darwin" = {
|
|
||||||
arch = "darwin-arm64";
|
|
||||||
url = "https://download.visualjj.com/visualjj-darwin-arm64-${version}.vsix";
|
|
||||||
hash = "sha256-/uuLRkEY430R5RS7B6972iginpA3pWpApjI6RUTxcHM=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
vscode-utils.buildVscodeMarketplaceExtension {
|
vscode-utils.buildVscodeMarketplaceExtension {
|
||||||
vsix = fetchurl {
|
|
||||||
url = sources.${stdenv.hostPlatform.system}.url;
|
|
||||||
hash = sources.${stdenv.hostPlatform.system}.hash;
|
|
||||||
name = "visualjj-visualjj-${version}.zip";
|
|
||||||
};
|
|
||||||
|
|
||||||
mktplcRef = {
|
mktplcRef = {
|
||||||
inherit version;
|
|
||||||
name = "visualjj";
|
name = "visualjj";
|
||||||
publisher = "visualjj";
|
publisher = "visualjj";
|
||||||
arch = sources.${stdenv.hostPlatform.system}.arch;
|
version = "0.13.4";
|
||||||
|
hash = "sha256-/uuLRkEY430R5RS7B6972iginpA3pWpApjI6RUTxcHM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -29,13 +29,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "dosbox-x";
|
pname = "dosbox-x";
|
||||||
version = "2024.12.04";
|
version = "2025.01.01";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "joncampbell123";
|
owner = "joncampbell123";
|
||||||
repo = "dosbox-x";
|
repo = "dosbox-x";
|
||||||
rev = "dosbox-x-v${finalAttrs.version}";
|
rev = "dosbox-x-v${finalAttrs.version}";
|
||||||
hash = "sha256-wZCLwEInUfzuOCcUsz8W+Gi00lp4Nwc0QZjLF8/e9iM=";
|
hash = "sha256-3zE/VDCFNQRgqpIL5hRAafDoc7agX2LIsiL4xwDBLJY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# sips is unavailable in sandbox, replacing with imagemagick breaks build due to wrong Foundation propagation(?) so don't generate resolution variants
|
# sips is unavailable in sandbox, replacing with imagemagick breaks build due to wrong Foundation propagation(?) so don't generate resolution variants
|
||||||
|
|
|
@ -16,13 +16,13 @@
|
||||||
|
|
||||||
mkDerivation rec {
|
mkDerivation rec {
|
||||||
pname = "yacreader";
|
pname = "yacreader";
|
||||||
version = "9.14.2";
|
version = "9.15.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "YACReader";
|
owner = "YACReader";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-gQ4Aaapini6j3lCtowFbrfwbe91aFl50hp1EfxTO8uY=";
|
sha256 = "sha256-5vCjr8WRwa7Q/84Itgg07K1CJKGnWA1z53et2IxxReE=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -117,7 +117,7 @@ in
|
||||||
|
|
||||||
export GIT_SSL_CAINFO=$NIX_SSL_CERT_FILE
|
export GIT_SSL_CAINFO=$NIX_SSL_CERT_FILE
|
||||||
${if finalAttrs.proxyVendor then ''
|
${if finalAttrs.proxyVendor then ''
|
||||||
mkdir -p "''${GOPATH}/pkg/mod/cache/download"
|
mkdir -p "$GOPATH/pkg/mod/cache/download"
|
||||||
go mod download
|
go mod download
|
||||||
'' else ''
|
'' else ''
|
||||||
if (( "''${NIX_DEBUG:-0}" >= 1 )); then
|
if (( "''${NIX_DEBUG:-0}" >= 1 )); then
|
||||||
|
@ -135,8 +135,8 @@ in
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
${if finalAttrs.proxyVendor then ''
|
${if finalAttrs.proxyVendor then ''
|
||||||
rm -rf "''${GOPATH}/pkg/mod/cache/download/sumdb"
|
rm -rf "$GOPATH/pkg/mod/cache/download/sumdb"
|
||||||
cp -r --reflink=auto "''${GOPATH}/pkg/mod/cache/download" $out
|
cp -r --reflink=auto "$GOPATH/pkg/mod/cache/download" $out
|
||||||
'' else ''
|
'' else ''
|
||||||
cp -r --reflink=auto vendor $out
|
cp -r --reflink=auto vendor $out
|
||||||
''}
|
''}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
wrapGAppsHook3,
|
wrapGAppsHook3,
|
||||||
gtk3,
|
gtk3,
|
||||||
getent,
|
getent,
|
||||||
|
nixosTests,
|
||||||
}:
|
}:
|
||||||
python3Packages.buildPythonPackage rec {
|
python3Packages.buildPythonPackage rec {
|
||||||
pname = "auto-cpufreq";
|
pname = "auto-cpufreq";
|
||||||
|
@ -92,6 +93,10 @@ python3Packages.buildPythonPackage rec {
|
||||||
cp scripts/org.auto-cpufreq.pkexec.policy $out/share/polkit-1/actions
|
cp scripts/org.auto-cpufreq.pkexec.policy $out/share/polkit-1/actions
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
inherit (nixosTests) auto-cpufreq;
|
||||||
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
mainProgram = "auto-cpufreq";
|
mainProgram = "auto-cpufreq";
|
||||||
homepage = "https://github.com/AdnanHodzic/auto-cpufreq";
|
homepage = "https://github.com/AdnanHodzic/auto-cpufreq";
|
||||||
|
|
|
@ -44,6 +44,10 @@ stdenv.mkDerivation rec {
|
||||||
url = "mirror://kernel/linux/daemons/autofs/v5/patches-5.2.0/autofs-5.1.9-fix-crash-in-make_options_string.patch";
|
url = "mirror://kernel/linux/daemons/autofs/v5/patches-5.2.0/autofs-5.1.9-fix-crash-in-make_options_string.patch";
|
||||||
hash = "sha256-YjTdJ50iNhJ2UjFdrKYEFNt04z0PfmElbFa4GuSskLA=";
|
hash = "sha256-YjTdJ50iNhJ2UjFdrKYEFNt04z0PfmElbFa4GuSskLA=";
|
||||||
})
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
url = "mirror://kernel/linux/daemons/autofs/v5/patches-5.2.0/autofs-5.1.9-Fix-incompatible-function-pointer-types-in-cyrus-sasl-module.patch";
|
||||||
|
hash = "sha256-erLlqZtVmYqUOsk3S7S50yA0VB8Gzibsv+X50+gcA58=";
|
||||||
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
|
|
|
@ -645,10 +645,10 @@
|
||||||
},
|
},
|
||||||
"managednetworkfabric": {
|
"managednetworkfabric": {
|
||||||
"pname": "managednetworkfabric",
|
"pname": "managednetworkfabric",
|
||||||
"version": "6.4.0",
|
"version": "7.0.0",
|
||||||
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/managednetworkfabric-6.4.0-py3-none-any.whl",
|
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/managednetworkfabric-7.0.0-py3-none-any.whl",
|
||||||
"hash": "sha256-nUEHjgZUqq42pfDyg/Ud6YzENgWCkgU2VCVG7TTKC8Q=",
|
"hash": "sha256-I+K24xxpm8DoyNsvqjv9Yi1ewVZeCDCVIizYUB7TKW8=",
|
||||||
"description": "Support for managednetworkfabric commands based on 2023-06-15 API version"
|
"description": "Support for managednetworkfabric commands based on 2024-02-15-preview API version"
|
||||||
},
|
},
|
||||||
"managementpartner": {
|
"managementpartner": {
|
||||||
"pname": "managementpartner",
|
"pname": "managementpartner",
|
||||||
|
@ -729,9 +729,9 @@
|
||||||
},
|
},
|
||||||
"networkcloud": {
|
"networkcloud": {
|
||||||
"pname": "networkcloud",
|
"pname": "networkcloud",
|
||||||
"version": "2.0.0b6",
|
"version": "2.0.0",
|
||||||
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/networkcloud-2.0.0b6-py3-none-any.whl",
|
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/networkcloud-2.0.0-py3-none-any.whl",
|
||||||
"hash": "sha256-1T+IepVTU7DLHQ7CfcEltQG+/lryktzUFB7RY9O9hzM=",
|
"hash": "sha256-8ntKTSkGJwdhHJCeClEd7A0cUgRed8sV/l7qP5jAQhQ=",
|
||||||
"description": "Support for Azure Operator Nexus network cloud commands based on 2024-07-01 API version"
|
"description": "Support for Azure Operator Nexus network cloud commands based on 2024-07-01 API version"
|
||||||
},
|
},
|
||||||
"new-relic": {
|
"new-relic": {
|
||||||
|
@ -841,9 +841,9 @@
|
||||||
},
|
},
|
||||||
"qumulo": {
|
"qumulo": {
|
||||||
"pname": "qumulo",
|
"pname": "qumulo",
|
||||||
"version": "1.0.0",
|
"version": "2.0.0",
|
||||||
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/qumulo-1.0.0-py3-none-any.whl",
|
"url": "https://azcliprod.blob.core.windows.net/cli-extensions/qumulo-2.0.0-py3-none-any.whl",
|
||||||
"hash": "sha256-mXP1gKP8IMwv5VWKHP3BDd/GVnmC0S83AIu/7Hqvz5s=",
|
"hash": "sha256-fsUZyd0s+Rv1Sy6Lm2iq2xNMsrv+xU6KLLCOo6DkfmI=",
|
||||||
"description": "Microsoft Azure Command-Line Tools Qumulo Extension"
|
"description": "Microsoft Azure Command-Line Tools Qumulo Extension"
|
||||||
},
|
},
|
||||||
"quota": {
|
"quota": {
|
||||||
|
@ -953,9 +953,9 @@
|
||||||
},
|
},
|
||||||
"stack-hci-vm": {
|
"stack-hci-vm": {
|
||||||
"pname": "stack-hci-vm",
|
"pname": "stack-hci-vm",
|
||||||
"version": "1.4.3",
|
"version": "1.5.0",
|
||||||
"url": "https://hciarcvmsstorage.z13.web.core.windows.net/cli-extensions/stack_hci_vm-1.4.3-py3-none-any.whl",
|
"url": "https://hciarcvmsstorage.z13.web.core.windows.net/cli-extensions/stack_hci_vm-1.5.0-py3-none-any.whl",
|
||||||
"hash": "sha256-T1ulOOgw3O8ZUUfIunHHObK9SUy7moq1HoMcQLwfMyk=",
|
"hash": "sha256-otixJPDbQp0+eugYFcVEzgAjGrFkDCHdqRUwT3WQ+Pg=",
|
||||||
"description": "Microsoft Azure Command-Line Tools Stack-HCi-VM Extension"
|
"description": "Microsoft Azure Command-Line Tools Stack-HCi-VM Extension"
|
||||||
},
|
},
|
||||||
"standbypool": {
|
"standbypool": {
|
||||||
|
|
|
@ -10,13 +10,13 @@
|
||||||
}:
|
}:
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "btrfs-list";
|
pname = "btrfs-list";
|
||||||
version = "2.3";
|
version = "2.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "speed47";
|
owner = "speed47";
|
||||||
repo = "btrfs-list";
|
repo = "btrfs-list";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-cWzDRop0cyrjVIJzuZxTqELgec66GiPAUJY1xIBr3OY=";
|
hash = "sha256-K6/xFR4Qmr6ynH5rZfOTN8nkl99iqcJPmKPwtp9FYyc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ perl ];
|
buildInputs = [ perl ];
|
||||||
|
|
|
@ -1,33 +1,50 @@
|
||||||
{ lib, stdenv, fetchurl, zlib, bzip2, openssl, fetchpatch }:
|
{
|
||||||
|
bzip2,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
openssl,
|
||||||
|
stdenv,
|
||||||
|
unstableGitUpdater,
|
||||||
|
zlib,
|
||||||
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "dmg2img";
|
pname = "dmg2img";
|
||||||
version = "1.6.7";
|
version = "1.6.7-unstable-2020-12-27";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "http://vu1tur.eu.org/tools/dmg2img-${version}.tar.gz";
|
owner = "Lekensteyn";
|
||||||
sha256 = "066hqhg7k90xcw5aq86pgr4l7apzvnb4559vj5s010avbk8adbh2";
|
repo = "dmg2img";
|
||||||
|
rev = "a3e413489ccdd05431401357bf21690536425012";
|
||||||
|
hash = "sha256-DewU5jz2lRjIRiT0ebjPRArsoye33xlEGfhzd4xnT4A=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ zlib bzip2 openssl ];
|
buildInputs = [
|
||||||
|
bzip2
|
||||||
patches = [
|
openssl
|
||||||
(fetchpatch {
|
zlib
|
||||||
url = "https://raw.githubusercontent.com/Homebrew/formula-patches/85fa66a9/dmg2img/openssl-1.1.diff";
|
|
||||||
sha256 = "076sz69hf3ryylplg025vl8sj991cb81g3yazsmrf8anrd7ffmxx";
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
|
|
||||||
patchFlags = [ "-p0" ];
|
preBuild = ''
|
||||||
|
sed -i "s/1.6.5/${finalAttrs.version}/" dmg2img.c
|
||||||
installPhase = ''
|
|
||||||
install -D dmg2img $out/bin/dmg2img
|
|
||||||
install -D vfdecrypt $out/bin/vfdecrypt
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
install -Dm755 dmg2img vfdecrypt -t $out/bin
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.updateScript = unstableGitUpdater { };
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
description = "Tool which allows converting Apple compressed dmg archives to standard (hfsplus) image disk files";
|
||||||
|
homepage = "https://github.com/Lekensteyn/dmg2img";
|
||||||
|
license = lib.licenses.gpl2Only;
|
||||||
platforms = lib.platforms.unix;
|
platforms = lib.platforms.unix;
|
||||||
description = "Apple's compressed dmg to standard (hfsplus) image disk file convert tool";
|
maintainers = with lib.maintainers; [ KSJ2000 ];
|
||||||
license = lib.licenses.gpl3;
|
mainProgram = "dmg2img";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
44
pkgs/by-name/dp/dprint/plugins/default.nix
Normal file
44
pkgs/by-name/dp/dprint/plugins/default.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{ lib, fetchurl }:
|
||||||
|
let
|
||||||
|
mkDprintPlugin =
|
||||||
|
{
|
||||||
|
url,
|
||||||
|
hash,
|
||||||
|
pname,
|
||||||
|
version,
|
||||||
|
description,
|
||||||
|
initConfig,
|
||||||
|
updateUrl,
|
||||||
|
license ? lib.licenses.mit,
|
||||||
|
maintainers ? [ lib.maintainers.phanirithvij ],
|
||||||
|
}:
|
||||||
|
fetchurl {
|
||||||
|
inherit hash url;
|
||||||
|
name = "${pname}-${version}.wasm";
|
||||||
|
meta = {
|
||||||
|
inherit
|
||||||
|
description
|
||||||
|
license
|
||||||
|
maintainers
|
||||||
|
;
|
||||||
|
};
|
||||||
|
passthru = {
|
||||||
|
updateScript = ./update-plugins.py;
|
||||||
|
inherit initConfig updateUrl;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
inherit (lib)
|
||||||
|
filterAttrs
|
||||||
|
mapAttrs'
|
||||||
|
nameValuePair
|
||||||
|
removeSuffix
|
||||||
|
;
|
||||||
|
files = filterAttrs (
|
||||||
|
name: type: type == "regular" && name != "default.nix" && lib.hasSuffix ".nix" name
|
||||||
|
) (builtins.readDir ./.);
|
||||||
|
plugins = mapAttrs' (
|
||||||
|
name: _:
|
||||||
|
nameValuePair (removeSuffix ".nix" name) (import (./. + "/${name}") { inherit mkDprintPlugin; })
|
||||||
|
) files;
|
||||||
|
in
|
||||||
|
plugins // { inherit mkDprintPlugin; }
|
21
pkgs/by-name/dp/dprint/plugins/dprint-plugin-biome.nix
Normal file
21
pkgs/by-name/dp/dprint/plugins/dprint-plugin-biome.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "Biome (JS/TS) wrapper plugin.";
|
||||||
|
hash = "sha256-+zY+myazFAUxeNuWFigkvF4zpKBs+jzVYQT09jRWFKI=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ "**/node_modules" ];
|
||||||
|
configKey = "biome";
|
||||||
|
fileExtensions = [
|
||||||
|
"ts"
|
||||||
|
"tsx"
|
||||||
|
"js"
|
||||||
|
"jsx"
|
||||||
|
"cjs"
|
||||||
|
"mjs"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-biome";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/biome/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/biome-0.7.1.wasm";
|
||||||
|
version = "0.7.1";
|
||||||
|
}
|
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-dockerfile.nix
Normal file
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-dockerfile.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "Dockerfile code formatter.";
|
||||||
|
hash = "sha256-gsfMLa4zw8AblOS459ZS9OZrkGCQi5gBN+a3hvOsspk=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "dockerfile";
|
||||||
|
fileExtensions = [ "dockerfile" ];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-dockerfile";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/dockerfile/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/dockerfile-0.3.2.wasm";
|
||||||
|
version = "0.3.2";
|
||||||
|
}
|
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-json.nix
Normal file
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-json.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "JSON/JSONC code formatter.";
|
||||||
|
hash = "sha256-Sw+HkUb4K2wrLuQRZibr8gOCR3Rz36IeId4Vd4LijmY=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ "**/*-lock.json" ];
|
||||||
|
configKey = "json";
|
||||||
|
fileExtensions = [ "json" ];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-json";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/json/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/json-0.19.4.wasm";
|
||||||
|
version = "0.19.4";
|
||||||
|
}
|
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-jupyter.nix
Normal file
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-jupyter.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "Jupyter notebook code block formatter.";
|
||||||
|
hash = "sha256-877CEZbMlj9cHkFtl16XCnan37SeEGUL3BHaUKUv8S4=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "jupyter";
|
||||||
|
fileExtensions = [ "ipynb" ];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-jupyter";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/jupyter/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/jupyter-0.1.5.wasm";
|
||||||
|
version = "0.1.5";
|
||||||
|
}
|
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-markdown.nix
Normal file
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-markdown.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "Markdown code formatter.";
|
||||||
|
hash = "sha256-PIEN9UnYC8doJpdzS7M6QEHQNQtj7WwXAgvewPsTjqs=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "markdown";
|
||||||
|
fileExtensions = [ "md" ];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-markdown";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/markdown/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/markdown-0.17.8.wasm";
|
||||||
|
version = "0.17.8";
|
||||||
|
}
|
17
pkgs/by-name/dp/dprint/plugins/dprint-plugin-ruff.nix
Normal file
17
pkgs/by-name/dp/dprint/plugins/dprint-plugin-ruff.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "Ruff (Python) wrapper plugin.";
|
||||||
|
hash = "sha256-15InHQgF9c0Js4yUJxmZ1oNj1O16FBU12u/GOoaSAJ8=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "ruff";
|
||||||
|
fileExtensions = [
|
||||||
|
"py"
|
||||||
|
"pyi"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-ruff";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/ruff/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/ruff-0.3.9.wasm";
|
||||||
|
version = "0.3.9";
|
||||||
|
}
|
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-toml.nix
Normal file
14
pkgs/by-name/dp/dprint/plugins/dprint-plugin-toml.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "TOML code formatter.";
|
||||||
|
hash = "sha256-aDfo/sKfOeNpyfd/4N1LgL1bObTTnviYrA8T7M/1KNs=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "toml";
|
||||||
|
fileExtensions = [ "toml" ];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-toml";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/toml/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/toml-0.6.3.wasm";
|
||||||
|
version = "0.6.3";
|
||||||
|
}
|
21
pkgs/by-name/dp/dprint/plugins/dprint-plugin-typescript.nix
Normal file
21
pkgs/by-name/dp/dprint/plugins/dprint-plugin-typescript.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "TypeScript/JavaScript code formatter.";
|
||||||
|
hash = "sha256-urgKQOjgkoDJCH/K7DWLJCkD0iH0Ok+rvrNDI0i4uS0=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ "**/node_modules" ];
|
||||||
|
configKey = "typescript";
|
||||||
|
fileExtensions = [
|
||||||
|
"ts"
|
||||||
|
"tsx"
|
||||||
|
"js"
|
||||||
|
"jsx"
|
||||||
|
"cjs"
|
||||||
|
"mjs"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "dprint-plugin-typescript";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/dprint/typescript/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/typescript-0.93.3.wasm";
|
||||||
|
version = "0.93.3";
|
||||||
|
}
|
19
pkgs/by-name/dp/dprint/plugins/g-plane-malva.nix
Normal file
19
pkgs/by-name/dp/dprint/plugins/g-plane-malva.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "CSS, SCSS, Sass and Less formatter.";
|
||||||
|
hash = "sha256-zt7F1tgPhPAn+gtps6+JB5RtvjIZw2n/G85Bv6kazgU=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ "**/node_modules" ];
|
||||||
|
configKey = "malva";
|
||||||
|
fileExtensions = [
|
||||||
|
"css"
|
||||||
|
"scss"
|
||||||
|
"sass"
|
||||||
|
"less"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "g-plane-malva";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/g-plane/malva/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/g-plane/malva-v0.11.1.wasm";
|
||||||
|
version = "0.11.1";
|
||||||
|
}
|
24
pkgs/by-name/dp/dprint/plugins/g-plane-markup_fmt.nix
Normal file
24
pkgs/by-name/dp/dprint/plugins/g-plane-markup_fmt.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "HTML, Vue, Svelte, Astro, Angular, Jinja, Twig, Nunjucks, and Vento formatter.";
|
||||||
|
hash = "sha256-G8UnJbc+oZ60V3oi8W2SS6H06zEYfY3wpmSUp+1GF8k=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "markup";
|
||||||
|
fileExtensions = [
|
||||||
|
"html"
|
||||||
|
"vue"
|
||||||
|
"svelte"
|
||||||
|
"astro"
|
||||||
|
"jinja"
|
||||||
|
"jinja2"
|
||||||
|
"twig"
|
||||||
|
"njk"
|
||||||
|
"vto"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "g-plane-markup_fmt";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/g-plane/markup_fmt/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/g-plane/markup_fmt-v0.18.0.wasm";
|
||||||
|
version = "0.18.0";
|
||||||
|
}
|
17
pkgs/by-name/dp/dprint/plugins/g-plane-pretty_graphql.nix
Normal file
17
pkgs/by-name/dp/dprint/plugins/g-plane-pretty_graphql.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "GraphQL formatter.";
|
||||||
|
hash = "sha256-PlQwpR0tMsghMrOX7is+anN57t9xa9weNtoWpc0E9ec=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "graphql";
|
||||||
|
fileExtensions = [
|
||||||
|
"graphql"
|
||||||
|
"gql"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "g-plane-pretty_graphql";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/g-plane/pretty_graphql/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/g-plane/pretty_graphql-v0.2.1.wasm";
|
||||||
|
version = "0.2.1";
|
||||||
|
}
|
17
pkgs/by-name/dp/dprint/plugins/g-plane-pretty_yaml.nix
Normal file
17
pkgs/by-name/dp/dprint/plugins/g-plane-pretty_yaml.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ mkDprintPlugin }:
|
||||||
|
mkDprintPlugin {
|
||||||
|
description = "YAML formatter.";
|
||||||
|
hash = "sha256-6ua021G7ZW7Ciwy/OHXTA1Joj9PGEx3SZGtvaA//gzo=";
|
||||||
|
initConfig = {
|
||||||
|
configExcludes = [ ];
|
||||||
|
configKey = "yaml";
|
||||||
|
fileExtensions = [
|
||||||
|
"yaml"
|
||||||
|
"yml"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
pname = "g-plane-pretty_yaml";
|
||||||
|
updateUrl = "https://plugins.dprint.dev/g-plane/pretty_yaml/latest.json";
|
||||||
|
url = "https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm";
|
||||||
|
version = "0.5.0";
|
||||||
|
}
|
156
pkgs/by-name/dp/dprint/plugins/update-plugins.py
Executable file
156
pkgs/by-name/dp/dprint/plugins/update-plugins.py
Executable file
|
@ -0,0 +1,156 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i python -p nix nixfmt-rfc-style 'python3.withPackages (pp: [ pp.requests ])'
|
||||||
|
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
import requests
|
||||||
|
|
||||||
|
USAGE = """Usage: {0} [ | plugin-name | plugin-file-path]
|
||||||
|
|
||||||
|
eg.
|
||||||
|
{0}
|
||||||
|
{0} dprint-plugin-json
|
||||||
|
{0} /path/to/dprint-plugin-json.nix"""
|
||||||
|
|
||||||
|
FILE_PATH = Path(os.path.realpath(__file__))
|
||||||
|
SCRIPT_DIR = FILE_PATH.parent
|
||||||
|
|
||||||
|
pname = ""
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
if "-help" in "".join(sys.argv):
|
||||||
|
print(USAGE.format(FILE_PATH.name))
|
||||||
|
exit(0)
|
||||||
|
pname = sys.argv[1]
|
||||||
|
else:
|
||||||
|
pname = os.environ.get("UPDATE_NIX_PNAME", "")
|
||||||
|
|
||||||
|
|
||||||
|
# get sri hash for a url, no unpack
|
||||||
|
def nix_prefetch_url(url, name, algo="sha256"):
|
||||||
|
hash = (
|
||||||
|
subprocess.check_output(
|
||||||
|
["nix-prefetch-url", "--type", algo, "--name", name, url]
|
||||||
|
)
|
||||||
|
.decode("utf-8")
|
||||||
|
.rstrip()
|
||||||
|
)
|
||||||
|
sri = (
|
||||||
|
subprocess.check_output(
|
||||||
|
# split by space is enough for this command
|
||||||
|
"nix --extra-experimental-features nix-command "
|
||||||
|
f"hash convert --hash-algo {algo} --to sri {hash}".split(" ")
|
||||||
|
)
|
||||||
|
.decode("utf-8")
|
||||||
|
.rstrip()
|
||||||
|
)
|
||||||
|
return sri
|
||||||
|
|
||||||
|
|
||||||
|
# json object to nix string
|
||||||
|
def json_to_nix(jsondata):
|
||||||
|
# to quote strings, dumps twice does it
|
||||||
|
json_str = json.dumps(json.dumps(jsondata))
|
||||||
|
return (
|
||||||
|
subprocess.check_output(
|
||||||
|
"nix --extra-experimental-features nix-command eval "
|
||||||
|
f"--expr 'builtins.fromJSON ''{json_str}''' --impure | nixfmt",
|
||||||
|
shell=True,
|
||||||
|
)
|
||||||
|
.decode("utf-8")
|
||||||
|
.rstrip()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# nix string to json object
|
||||||
|
def nix_to_json(nixstr):
|
||||||
|
return json.loads(
|
||||||
|
subprocess.check_output(
|
||||||
|
f"nix --extra-experimental-features nix-command eval --json --expr '{nixstr}'",
|
||||||
|
shell=True,
|
||||||
|
)
|
||||||
|
.decode("utf-8")
|
||||||
|
.rstrip()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# nixfmt a file
|
||||||
|
def nixfmt(nixfile):
|
||||||
|
subprocess.run(["nixfmt", nixfile])
|
||||||
|
|
||||||
|
|
||||||
|
def get_update_url(plugin_url):
|
||||||
|
"""Get a single plugin's update url given the plugin's url"""
|
||||||
|
|
||||||
|
# remove -version.wasm at the end
|
||||||
|
url = "-".join(plugin_url.split("-")[:-1])
|
||||||
|
names = url.split("/")[3:]
|
||||||
|
# if single name then -> dprint/<name>
|
||||||
|
if len(names) == 1:
|
||||||
|
names.insert(0, "dprint")
|
||||||
|
return "https://plugins.dprint.dev/" + "/".join(names) + "/latest.json"
|
||||||
|
|
||||||
|
|
||||||
|
def write_plugin_derivation(drv_attrs):
|
||||||
|
drv = f"{{ mkDprintPlugin }}: mkDprintPlugin {json_to_nix(drv_attrs)}"
|
||||||
|
filepath = SCRIPT_DIR / f"{drv_attrs["pname"]}.nix"
|
||||||
|
with open(filepath, "w+", encoding="utf8") as f:
|
||||||
|
f.write(drv)
|
||||||
|
nixfmt(filepath)
|
||||||
|
|
||||||
|
|
||||||
|
def update_plugin_by_name(name):
|
||||||
|
"""Update a single plugin by name"""
|
||||||
|
|
||||||
|
# allow passing in filename as well as pname
|
||||||
|
if name.endswith(".nix"):
|
||||||
|
name = Path(name[:-4]).name
|
||||||
|
try:
|
||||||
|
p = (SCRIPT_DIR / f"{name}.nix").read_text().replace("\n", "")
|
||||||
|
except OSError as e:
|
||||||
|
print(f"failed to update plugin {name}: error: {e}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
start_idx = p.find("mkDprintPlugin {") + len("mkDprintPlugin {")
|
||||||
|
p = nix_to_json("{" + p[start_idx:].strip())
|
||||||
|
|
||||||
|
data = requests.get(p["updateUrl"]).json()
|
||||||
|
p["url"] = data["url"]
|
||||||
|
p["version"] = data["version"]
|
||||||
|
p["hash"] = nix_prefetch_url(data["url"], f"{name}-{data["version"]}.wasm")
|
||||||
|
|
||||||
|
write_plugin_derivation(p)
|
||||||
|
|
||||||
|
|
||||||
|
def update_plugins():
|
||||||
|
"""Update all the plugins"""
|
||||||
|
|
||||||
|
data = requests.get("https://plugins.dprint.dev/info.json").json()["latest"]
|
||||||
|
|
||||||
|
for e in data:
|
||||||
|
update_url = get_update_url(e["url"])
|
||||||
|
pname = e["name"]
|
||||||
|
if "/" in e["name"]:
|
||||||
|
pname = pname.replace("/", "-")
|
||||||
|
drv_attrs = {
|
||||||
|
"url": e["url"],
|
||||||
|
"hash": nix_prefetch_url(e["url"], f"{pname}-{e["version"]}.wasm"),
|
||||||
|
"updateUrl": update_url,
|
||||||
|
"pname": pname,
|
||||||
|
"version": e["version"],
|
||||||
|
"description": e["description"],
|
||||||
|
"initConfig": {
|
||||||
|
"configKey": e["configKey"],
|
||||||
|
"configExcludes": e["configExcludes"],
|
||||||
|
"fileExtensions": e["fileExtensions"],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
write_plugin_derivation(drv_attrs)
|
||||||
|
|
||||||
|
|
||||||
|
if pname != "":
|
||||||
|
update_plugin_by_name(pname)
|
||||||
|
else:
|
||||||
|
update_plugins()
|
|
@ -15,16 +15,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "eza";
|
pname = "eza";
|
||||||
version = "0.20.14";
|
version = "0.20.15";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "eza-community";
|
owner = "eza-community";
|
||||||
repo = "eza";
|
repo = "eza";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-5sZlpJ7xzQsjvECN4pjPndM39qonbgNy4zew6AE06D0=";
|
hash = "sha256-r68zuMCFIccA0cRLC2RNYCWoFh7tYiGu97Kid4hh0Uw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-A8vE2Q/HEMgX6HC+nwR63Kr84gy2iZ5BzYDzaZz/h9Q=";
|
cargoHash = "sha256-hBsb62fcIrSR2w9O5+UaMUadyUUtu2PLODRg70wG/Xc=";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "fluent-bit";
|
pname = "fluent-bit";
|
||||||
version = "3.2.3";
|
version = "3.2.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "fluent";
|
owner = "fluent";
|
||||||
repo = "fluent-bit";
|
repo = "fluent-bit";
|
||||||
rev = "v${finalAttrs.version}";
|
rev = "v${finalAttrs.version}";
|
||||||
hash = "sha256-5Oyw3nHlAyywF+G0UiGyi1v+jAr8eyKt/1cDT5FdJXQ=";
|
hash = "sha256-oTCGjDmGVovsfj+4fjIKy/xpiuYc0Q44LYwYPI4dSF8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# optional only to avoid linux rebuild
|
# optional only to avoid linux rebuild
|
||||||
|
|
|
@ -19,6 +19,14 @@ stdenv.mkDerivation rec {
|
||||||
patches =
|
patches =
|
||||||
[
|
[
|
||||||
./gfan-0.6.2-cddlib-prefix.patch
|
./gfan-0.6.2-cddlib-prefix.patch
|
||||||
|
(fetchpatch {
|
||||||
|
# removes dead code with invalid member reference in gfanlib
|
||||||
|
name = "clang-19.patch";
|
||||||
|
url = "https://github.com/Singular/Singular/commit/d3f73432d73ac0dd041af83cb35301498e9b57d9.patch";
|
||||||
|
stripLen = 2;
|
||||||
|
extraPrefix = "src/";
|
||||||
|
hash = "sha256-jPGMYx/GOFV7Tk3CqaRWeX/UHkzjeL57eZj4r40s8/g=";
|
||||||
|
})
|
||||||
]
|
]
|
||||||
++ lib.optionals (stdenv.cc.isClang) [
|
++ lib.optionals (stdenv.cc.isClang) [
|
||||||
(fetchpatch {
|
(fetchpatch {
|
||||||
|
|
|
@ -56,8 +56,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
sed -i '/examples/d' CMakeLists.txt
|
sed -i '/examples/d' CMakeLists.txt
|
||||||
substituteInPlace libhs.pc.in \
|
substituteInPlace libhs.pc.in \
|
||||||
--replace "libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" "libdir=@CMAKE_INSTALL_LIBDIR@" \
|
--replace-fail "libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" "libdir=@CMAKE_INSTALL_LIBDIR@" \
|
||||||
--replace "includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" "includedir=@CMAKE_INSTALL_INCLUDEDIR@"
|
--replace-fail "includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" "includedir=@CMAKE_INSTALL_INCLUDEDIR@"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
|
@ -1,37 +1,44 @@
|
||||||
{ lib
|
{
|
||||||
, buildPackages
|
lib,
|
||||||
, fetchFromGitHub
|
buildPackages,
|
||||||
, buildNpmPackage
|
fetchFromGitHub,
|
||||||
, fetchFromGitea
|
buildNpmPackage,
|
||||||
, nix-update-script
|
fetchFromGitea,
|
||||||
|
nix-update-script,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
esbuild' = buildPackages.esbuild.override {
|
esbuild' = buildPackages.esbuild.override {
|
||||||
buildGoModule = args: buildPackages.buildGoModule (args // rec {
|
buildGoModule =
|
||||||
version = "0.19.11";
|
args:
|
||||||
|
buildPackages.buildGoModule (
|
||||||
|
args
|
||||||
|
// rec {
|
||||||
|
version = "0.21.5";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "evanw";
|
owner = "evanw";
|
||||||
repo = "esbuild";
|
repo = "esbuild";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-NUwjzOpHA0Ijuh0E69KXx8YVS5GTnKmob9HepqugbIU=";
|
hash = "sha256-FpvXWIlt67G8w3pBKZo/mcp57LunxDmRUaCU/Ne89B8=";
|
||||||
};
|
};
|
||||||
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||||
});
|
}
|
||||||
|
);
|
||||||
};
|
};
|
||||||
in buildNpmPackage rec {
|
in
|
||||||
|
buildNpmPackage rec {
|
||||||
pname = "kaufkauflist";
|
pname = "kaufkauflist";
|
||||||
version = "4.0.0";
|
version = "4.0.2";
|
||||||
|
|
||||||
src = fetchFromGitea {
|
src = fetchFromGitea {
|
||||||
domain = "codeberg.org";
|
domain = "codeberg.org";
|
||||||
owner = "annaaurora";
|
owner = "annaaurora";
|
||||||
repo = "kaufkauflist";
|
repo = "kaufkauflist";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-x30K2dYxawfebdq//9OmCCG48w0V04tDTXpvRW7lfJI=";
|
hash = "sha256-tvkicYFQewQdcz3e+ETLiCK/c3eNPlxxZNzt+OpIbN0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
npmDepsHash = "sha256-E3AXFwiRvrE2Swt7BfSfAoU5mQplSaSJ4q56pVfoEkQ=";
|
npmDepsHash = "sha256-HDv6sW6FmKZpUjymrUjz/WG9XrKgLmM6qHMAxP6gBtU=";
|
||||||
|
|
||||||
ESBUILD_BINARY_PATH = lib.getExe esbuild';
|
ESBUILD_BINARY_PATH = lib.getExe esbuild';
|
||||||
|
|
||||||
|
|
47
pkgs/by-name/nc/ncps/package.nix
Normal file
47
pkgs/by-name/nc/ncps/package.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
buildGoModule,
|
||||||
|
dbmate,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
finalAttrs = {
|
||||||
|
pname = "ncps";
|
||||||
|
version = "v0.1.1";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "kalbasit";
|
||||||
|
repo = "ncps";
|
||||||
|
rev = finalAttrs.version;
|
||||||
|
hash = "sha256-Vr/thppCABdZDl1LEc7l7c7Ih55U/EFwJInWSUWoLJA";
|
||||||
|
};
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-X github.com/kalbasit/ncps/cmd.Version=${finalAttrs.version}"
|
||||||
|
];
|
||||||
|
|
||||||
|
subPackages = [ "." ];
|
||||||
|
|
||||||
|
vendorHash = "sha256-xPrWofNyDFrUPQ42AYDs2x2gGoQ2w3tRrMIsu3SVyHA=";
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
dbmate # used for testing
|
||||||
|
];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/share/ncps
|
||||||
|
cp -r db $out/share/ncps/db
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Nix binary cache proxy service";
|
||||||
|
homepage = "https://github.com/kalbasit/ncps";
|
||||||
|
license = lib.licenses.mit;
|
||||||
|
mainProgram = "ncps";
|
||||||
|
maintainers = [ lib.maintainers.kalbasit ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
buildGoModule finalAttrs
|
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
python3.pkgs.buildPythonApplication {
|
python3.pkgs.buildPythonApplication {
|
||||||
pname = "renode-dts2repl";
|
pname = "renode-dts2repl";
|
||||||
version = "0-unstable-2024-12-20";
|
version = "0-unstable-2024-12-28";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "antmicro";
|
owner = "antmicro";
|
||||||
repo = "dts2repl";
|
repo = "dts2repl";
|
||||||
rev = "323cc41b6864e53cb1b99bf909c779b739a8fccb";
|
rev = "f655a1380364fdab9fa0f72909c19ab8ff16dbb6";
|
||||||
hash = "sha256-CYgQ5CMVkHqOEPPaG74GVNhm8pa6ZpAtt54JrrDn+2M=";
|
hash = "sha256-mErr95/Ew9HwKDJhQy7V86H1MJb5Y7IFzg7Id8Llqy8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
121
pkgs/by-name/re/restate/package.nix
Normal file
121
pkgs/by-name/re/restate/package.nix
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
testers,
|
||||||
|
versionCheckHook,
|
||||||
|
nix-update-script,
|
||||||
|
rustPlatform,
|
||||||
|
fetchFromGitHub,
|
||||||
|
protobuf,
|
||||||
|
restate,
|
||||||
|
pkg-config,
|
||||||
|
openssl,
|
||||||
|
perl,
|
||||||
|
cmake,
|
||||||
|
cacert,
|
||||||
|
rdkafka,
|
||||||
|
}:
|
||||||
|
rustPlatform.buildRustPackage rec {
|
||||||
|
pname = "restate";
|
||||||
|
version = "1.1.6";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "restatedev";
|
||||||
|
repo = "restate";
|
||||||
|
tag = "v${version}";
|
||||||
|
hash = "sha256-uDNPIL9Ox5rwWVzqWe74elHPGy6lSvWR1S7HsY6ATjc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
useFetchCargoVendor = true;
|
||||||
|
cargoHash = "sha256-z7VAKU4bi6pX2z4jCKWDfQt8FFLN7ugnW2LOy6IHz/w=";
|
||||||
|
|
||||||
|
env = {
|
||||||
|
PROTOC = lib.getExe protobuf;
|
||||||
|
PROTOC_INCLUDE = "${protobuf}/include";
|
||||||
|
|
||||||
|
VERGEN_GIT_COMMIT_DATE = "2024-12-23";
|
||||||
|
VERGEN_GIT_SHA = "v${version}";
|
||||||
|
|
||||||
|
# rustflags as defined in the upstream's .cargo/config.toml
|
||||||
|
RUSTFLAGS =
|
||||||
|
let
|
||||||
|
target = stdenv.hostPlatform.config;
|
||||||
|
targetFlags = rec {
|
||||||
|
build = [
|
||||||
|
"-C force-unwind-tables"
|
||||||
|
"-C debug-assertions"
|
||||||
|
"--cfg uuid_unstable"
|
||||||
|
"--cfg tokio_unstable"
|
||||||
|
];
|
||||||
|
|
||||||
|
"aarch64-unknown-linux-gnu" = build ++ [
|
||||||
|
# Enable frame pointers to support Parca (https://github.com/parca-dev/parca-agent/pull/1805)
|
||||||
|
"-C force-frame-pointers=yes"
|
||||||
|
];
|
||||||
|
|
||||||
|
"x86_64-unknown-linux-musl" = build ++ [
|
||||||
|
"-C link-self-contained=yes"
|
||||||
|
];
|
||||||
|
|
||||||
|
"aarch64-unknown-linux-musl" = build ++ [
|
||||||
|
# Enable frame pointers to support Parca (https://github.com/parca-dev/parca-agent/pull/1805)
|
||||||
|
"-C force-frame-pointers=yes"
|
||||||
|
"-C link-self-contained=yes"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
lib.concatStringsSep " " (lib.attrsets.attrByPath [ target ] targetFlags.build targetFlags);
|
||||||
|
|
||||||
|
# Have to be set to dynamically link librdkafka
|
||||||
|
CARGO_FEATURE_DYNAMIC_LINKING = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkg-config
|
||||||
|
openssl
|
||||||
|
perl
|
||||||
|
rustPlatform.bindgenHook
|
||||||
|
cmake
|
||||||
|
];
|
||||||
|
buildInputs = [ rdkafka ];
|
||||||
|
nativeCheckInputs = [
|
||||||
|
cacert
|
||||||
|
];
|
||||||
|
|
||||||
|
useNextest = true;
|
||||||
|
# Feature resolution seems to be failing due to this https://github.com/rust-lang/cargo/issues/7754
|
||||||
|
auditable = false;
|
||||||
|
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
nativeInstallCheckInputs = [
|
||||||
|
versionCheckHook
|
||||||
|
];
|
||||||
|
versionCheckProgramArg = [ "--version" ];
|
||||||
|
doInstallCheck = true;
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
tests.restateCliVersion = testers.testVersion {
|
||||||
|
package = restate;
|
||||||
|
command = "restate --version";
|
||||||
|
};
|
||||||
|
tests.restateServerVersion = testers.testVersion {
|
||||||
|
package = restate;
|
||||||
|
command = "restate-server --version";
|
||||||
|
};
|
||||||
|
tests.restateCtlVersion = testers.testVersion {
|
||||||
|
package = restate;
|
||||||
|
command = "restatectl --version";
|
||||||
|
};
|
||||||
|
updateScript = nix-update-script { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Restate is a platform for developing distributed fault-tolerant applications.";
|
||||||
|
homepage = "https://restate.dev";
|
||||||
|
changelog = "https://github.com/restatedev/restate/releases/tag/v${version}";
|
||||||
|
mainProgram = "restate";
|
||||||
|
license = lib.licenses.bsl11;
|
||||||
|
maintainers = with lib.maintainers; [ myypo ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -10,16 +10,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "rip2";
|
pname = "rip2";
|
||||||
version = "0.9.0";
|
version = "0.9.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "MilesCranmer";
|
owner = "MilesCranmer";
|
||||||
repo = "rip2";
|
repo = "rip2";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-9leLWfPilDQHzQRzTUjAFt9olTPEL4GcQgYFWZu3dug=";
|
hash = "sha256-OZsiAh0sQygLdVdA1QxCf7FTvP5CrlDNeOQLv2G2X3U=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-l6rbeiyIsr1csBcp+428TpQYSs9RvfJutGoL/wtSGR8=";
|
cargoHash = "sha256-9wbHXgjOWyQS8JOMQQTVetMacdjWD9C4NBWxUpcjbdg=";
|
||||||
|
|
||||||
nativeBuildInputs = [ installShellFiles ];
|
nativeBuildInputs = [ installShellFiles ];
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
sqlite,
|
sqlite,
|
||||||
ragel,
|
ragel,
|
||||||
icu,
|
icu,
|
||||||
hyperscan,
|
vectorscan,
|
||||||
jemalloc,
|
jemalloc,
|
||||||
blas,
|
blas,
|
||||||
lapack,
|
lapack,
|
||||||
|
@ -24,13 +24,10 @@
|
||||||
zstd,
|
zstd,
|
||||||
libarchive,
|
libarchive,
|
||||||
withBlas ? true,
|
withBlas ? true,
|
||||||
withHyperscan ? stdenv.hostPlatform.isx86_64,
|
|
||||||
withLuaJIT ? stdenv.hostPlatform.isx86_64,
|
withLuaJIT ? stdenv.hostPlatform.isx86_64,
|
||||||
nixosTests,
|
nixosTests,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert withHyperscan -> stdenv.hostPlatform.isx86_64;
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "rspamd";
|
pname = "rspamd";
|
||||||
version = "3.11.0";
|
version = "3.11.0";
|
||||||
|
@ -48,7 +45,9 @@ stdenv.mkDerivation rec {
|
||||||
cmake
|
cmake
|
||||||
pkg-config
|
pkg-config
|
||||||
perl
|
perl
|
||||||
|
ragel
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[
|
[
|
||||||
doctest
|
doctest
|
||||||
|
@ -64,8 +63,8 @@ stdenv.mkDerivation rec {
|
||||||
xxHash
|
xxHash
|
||||||
zstd
|
zstd
|
||||||
libarchive
|
libarchive
|
||||||
|
vectorscan
|
||||||
]
|
]
|
||||||
++ lib.optional withHyperscan hyperscan
|
|
||||||
++ lib.optionals withBlas [
|
++ lib.optionals withBlas [
|
||||||
blas
|
blas
|
||||||
lapack
|
lapack
|
||||||
|
@ -73,8 +72,7 @@ stdenv.mkDerivation rec {
|
||||||
++ lib.optional withLuaJIT luajit
|
++ lib.optional withLuaJIT luajit
|
||||||
++ lib.optional (!withLuaJIT) lua;
|
++ lib.optional (!withLuaJIT) lua;
|
||||||
|
|
||||||
cmakeFlags =
|
cmakeFlags = [
|
||||||
[
|
|
||||||
# pcre2 jit seems to cause crashes: https://github.com/NixOS/nixpkgs/pull/181908
|
# pcre2 jit seems to cause crashes: https://github.com/NixOS/nixpkgs/pull/181908
|
||||||
"-DENABLE_PCRE2=OFF"
|
"-DENABLE_PCRE2=OFF"
|
||||||
"-DDEBIAN_BUILD=ON"
|
"-DDEBIAN_BUILD=ON"
|
||||||
|
@ -87,9 +85,8 @@ stdenv.mkDerivation rec {
|
||||||
"-DSYSTEM_FMT=ON"
|
"-DSYSTEM_FMT=ON"
|
||||||
"-DSYSTEM_XXHASH=ON"
|
"-DSYSTEM_XXHASH=ON"
|
||||||
"-DSYSTEM_ZSTD=ON"
|
"-DSYSTEM_ZSTD=ON"
|
||||||
]
|
"-DENABLE_HYPERSCAN=ON"
|
||||||
++ lib.optional withHyperscan "-DENABLE_HYPERSCAN=ON"
|
] ++ lib.optional (!withLuaJIT) "-DENABLE_LUAJIT=OFF";
|
||||||
++ lib.optional (!withLuaJIT) "-DENABLE_LUAJIT=OFF";
|
|
||||||
|
|
||||||
passthru.tests.rspamd = nixosTests.rspamd;
|
passthru.tests.rspamd = nixosTests.rspamd;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
|
fetchpatch,
|
||||||
gmp,
|
gmp,
|
||||||
bison,
|
bison,
|
||||||
perl,
|
perl,
|
||||||
|
@ -48,6 +49,15 @@ stdenv.mkDerivation rec {
|
||||||
forceFetchGit = true;
|
forceFetchGit = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
# removes dead code with invalid member reference in gfanlib
|
||||||
|
name = "clang-19.patch";
|
||||||
|
url = "https://github.com/Singular/Singular/commit/d3f73432d73ac0dd041af83cb35301498e9b57d9.patch";
|
||||||
|
hash = "sha256-1KOk+yrTvHWY4aSK9QcByHIwKwe71QIYTMx8zo7XNos=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
configureFlags =
|
configureFlags =
|
||||||
[
|
[
|
||||||
"--enable-gfanlib"
|
"--enable-gfanlib"
|
||||||
|
@ -173,6 +183,7 @@ stdenv.mkDerivation rec {
|
||||||
'';
|
'';
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "CAS for polynomial computations";
|
description = "CAS for polynomial computations";
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
|
fetchpatch,
|
||||||
pkg-config,
|
pkg-config,
|
||||||
SDL2,
|
SDL2,
|
||||||
wxGTK32,
|
wxGTK32,
|
||||||
darwin,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
@ -19,17 +19,31 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
hash = "sha256-cBrTvFoz6WZIsh5qPPiWxQ338Z0OfcIefiI8CZF6nn8=";
|
hash = "sha256-cBrTvFoz6WZIsh5qPPiWxQ338Z0OfcIefiI8CZF6nn8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/freebsd/freebsd-ports/raw/31ec0266e31910c16b0f69e16a2a693aae20abdf/math/sound-of-sorting/files/patch-src_SortAlgo.cpp";
|
||||||
|
extraPrefix = "";
|
||||||
|
hash = "sha256-mOo3GsEZ8r8p9ROoel2TO9Z4yF5SmCN0/fUn/2qUKAo=";
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/freebsd/freebsd-ports/raw/31ec0266e31910c16b0f69e16a2a693aae20abdf/math/sound-of-sorting/files/patch-src_SortAlgo.h";
|
||||||
|
extraPrefix = "";
|
||||||
|
hash = "sha256-NNSPs0gT6ndeMQWHLHAwLR5nMQGP880Qd6kulDYJYF0=";
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
url = "https://github.com/freebsd/freebsd-ports/raw/31ec0266e31910c16b0f69e16a2a693aae20abdf/math/sound-of-sorting/files/patch-src_SortArray.cpp";
|
||||||
|
extraPrefix = "";
|
||||||
|
hash = "sha256-WxqwcZ2L9HPG4QNf1Xi624aKTM3cRBWN+W00htcIJ5k=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkg-config
|
pkg-config
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs =
|
buildInputs = [
|
||||||
[
|
|
||||||
wxGTK32
|
wxGTK32
|
||||||
SDL2
|
SDL2
|
||||||
]
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
||||||
darwin.apple_sdk.frameworks.Cocoa
|
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -23,12 +23,12 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "spacevim";
|
pname = "spacevim";
|
||||||
version = "2.3.0";
|
version = "2.4.0";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "SpaceVim";
|
owner = "SpaceVim";
|
||||||
repo = "SpaceVim";
|
repo = "SpaceVim";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-MHsAA0x/rfwRupe8aW1JVKGiYkySAX0AhOkBuScpn7I=";
|
hash = "sha256-qiNadhQJjU9RY14X8+pd4Ul+NLoNqbxuh3Kenw1dHDc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
|
@ -8,13 +8,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "spectra";
|
pname = "spectra";
|
||||||
version = "1.0.1";
|
version = "1.1.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "yixuan";
|
owner = "yixuan";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-HaJmMo4jYmO/j53/nHrL3bvdQMAvp4Nuhhe8Yc7pL88=";
|
sha256 = "sha256-ut6nEOpzIoFy+IUWQy9x2pJ4+sA0d/Dt8WaNq5AFCFg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake ];
|
nativeBuildInputs = [ cmake ];
|
||||||
|
|
|
@ -28,7 +28,7 @@ let
|
||||||
|
|
||||||
inherit src;
|
inherit src;
|
||||||
sourceRoot = "source/ms-tools";
|
sourceRoot = "source/ms-tools";
|
||||||
vendorHash = "sha256-imHpsos7RDpATSZFWRxug67F7VgjRTT1SkLt7cWk6tU=";
|
vendorHash = null; # dependencies are vendored in the release tarball
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
hidapi
|
hidapi
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
{ lib
|
{
|
||||||
, stdenv
|
lib,
|
||||||
, fetchFromGitHub
|
stdenv,
|
||||||
, cmake
|
fetchFromGitHub,
|
||||||
, pkg-config
|
cmake,
|
||||||
, ragel
|
pkg-config,
|
||||||
, util-linux
|
ragel,
|
||||||
, python3
|
util-linux,
|
||||||
, boost
|
python3,
|
||||||
, sqlite
|
boost,
|
||||||
, pcre
|
sqlite,
|
||||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
pcre,
|
||||||
|
enableShared ? !stdenv.hostPlatform.isStatic,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -23,6 +24,16 @@ stdenv.mkDerivation rec {
|
||||||
hash = "sha256-wz2oIhau/vjnri3LOyPZSCFAWg694FTLVt7+SZYEsL4=";
|
hash = "sha256-wz2oIhau/vjnri3LOyPZSCFAWg694FTLVt7+SZYEsL4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
sed -i '/examples/d' CMakeLists.txt
|
||||||
|
substituteInPlace libhs.pc.in \
|
||||||
|
--replace-fail "libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" "libdir=@CMAKE_INSTALL_LIBDIR@" \
|
||||||
|
--replace-fail "includedir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@" "includedir=@CMAKE_INSTALL_INCLUDEDIR@"
|
||||||
|
substituteInPlace cmake/build_wrapper.sh \
|
||||||
|
--replace-fail 'nm' '${stdenv.cc.targetPrefix}nm' \
|
||||||
|
--replace-fail 'objcopy' '${stdenv.cc.targetPrefix}objcopy'
|
||||||
|
'';
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
cmake
|
cmake
|
||||||
pkg-config
|
pkg-config
|
||||||
|
@ -45,13 +56,30 @@ stdenv.mkDerivation rec {
|
||||||
#
|
#
|
||||||
# For generic builds (e.g. x86_64) this can mean using an implementation not optimized for the
|
# For generic builds (e.g. x86_64) this can mean using an implementation not optimized for the
|
||||||
# potentially available more modern hardware extensions (e.g. x86_64 with AVX512).
|
# potentially available more modern hardware extensions (e.g. x86_64 with AVX512).
|
||||||
cmakeFlags = [ (if enableShared then "-DBUILD_SHARED_LIBS=ON" else "BUILD_STATIC_LIBS=ON") ]
|
cmakeFlags =
|
||||||
++
|
[ (if enableShared then "-DBUILD_SHARED_LIBS=ON" else "BUILD_STATIC_LIBS=ON") ]
|
||||||
(if lib.elem stdenv.hostPlatform.system [ "x86_64-linux" "i686-linux" ] then
|
++ (
|
||||||
[ "-DBUILD_AVX2=ON" "-DBUILD_AVX512=ON" "-DBUILD_AVX512VBMI=ON" "-DFAT_RUNTIME=ON" ]
|
if
|
||||||
|
lib.elem stdenv.hostPlatform.system [
|
||||||
|
"x86_64-linux"
|
||||||
|
"i686-linux"
|
||||||
|
]
|
||||||
|
then
|
||||||
|
[
|
||||||
|
"-DBUILD_AVX2=ON"
|
||||||
|
"-DBUILD_AVX512=ON"
|
||||||
|
"-DBUILD_AVX512VBMI=ON"
|
||||||
|
"-DFAT_RUNTIME=ON"
|
||||||
|
]
|
||||||
else
|
else
|
||||||
(if (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) then
|
(
|
||||||
[ "-DBUILD_SVE=ON" "-DBUILD_SVE2=ON" "-DBUILD_SVE2_BITPERM=ON" "-DFAT_RUNTIME=ON" ]
|
if (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) then
|
||||||
|
[
|
||||||
|
"-DBUILD_SVE=ON"
|
||||||
|
"-DBUILD_SVE2=ON"
|
||||||
|
"-DBUILD_SVE2_BITPERM=ON"
|
||||||
|
"-DFAT_RUNTIME=ON"
|
||||||
|
]
|
||||||
else
|
else
|
||||||
[ "-DFAT_RUNTIME=OFF" ]
|
[ "-DFAT_RUNTIME=OFF" ]
|
||||||
++ lib.optional stdenv.hostPlatform.avx2Support "-DBUILD_AVX2=ON"
|
++ lib.optional stdenv.hostPlatform.avx2Support "-DBUILD_AVX2=ON"
|
||||||
|
@ -85,7 +113,14 @@ stdenv.mkDerivation rec {
|
||||||
homepage = "https://www.vectorcamp.gr/vectorscan/";
|
homepage = "https://www.vectorcamp.gr/vectorscan/";
|
||||||
changelog = "https://github.com/VectorCamp/vectorscan/blob/${src.rev}/CHANGELOG-vectorscan.md";
|
changelog = "https://github.com/VectorCamp/vectorscan/blob/${src.rev}/CHANGELOG-vectorscan.md";
|
||||||
platforms = platforms.unix;
|
platforms = platforms.unix;
|
||||||
license = with licenses; [ bsd3 /* and */ bsd2 /* and */ licenses.boost ];
|
license = with licenses; [
|
||||||
maintainers = with maintainers; [ tnias vlaci ];
|
bsd3 # and
|
||||||
|
bsd2 # and
|
||||||
|
licenses.boost
|
||||||
|
];
|
||||||
|
maintainers = with maintainers; [
|
||||||
|
tnias
|
||||||
|
vlaci
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
libxml2,
|
libxml2,
|
||||||
lz4,
|
lz4,
|
||||||
netcdf,
|
netcdf,
|
||||||
openexr,
|
openexr_3,
|
||||||
openjpeg,
|
openjpeg,
|
||||||
openssl,
|
openssl,
|
||||||
pcre2,
|
pcre2,
|
||||||
|
@ -167,7 +167,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
nonDarwinDeps = lib.optionals (!stdenv.hostPlatform.isDarwin) (
|
nonDarwinDeps = lib.optionals (!stdenv.hostPlatform.isDarwin) (
|
||||||
[
|
[
|
||||||
# tests for formats enabled by these packages fail on macos
|
# tests for formats enabled by these packages fail on macos
|
||||||
openexr
|
openexr_3
|
||||||
xercesc
|
xercesc
|
||||||
]
|
]
|
||||||
++ arrowDeps
|
++ arrowDeps
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
zlib,
|
zlib,
|
||||||
Cocoa,
|
Cocoa,
|
||||||
enablePython ? false,
|
enablePython ? false,
|
||||||
|
enableRtk ? true,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -116,6 +117,8 @@ stdenv.mkDerivation {
|
||||||
"-DModule_MGHIO=ON"
|
"-DModule_MGHIO=ON"
|
||||||
"-DModule_AdaptiveDenoising=ON"
|
"-DModule_AdaptiveDenoising=ON"
|
||||||
"-DModule_GenericLabelInterpolator=ON"
|
"-DModule_GenericLabelInterpolator=ON"
|
||||||
|
]
|
||||||
|
++ lib.optionals enableRtk [
|
||||||
"-DModule_RTK=ON"
|
"-DModule_RTK=ON"
|
||||||
]
|
]
|
||||||
++ lib.optionals enablePython [
|
++ lib.optionals enablePython [
|
||||||
|
@ -153,7 +156,8 @@ stdenv.mkDerivation {
|
||||||
# These deps were propagated from VTK 9 in https://github.com/NixOS/nixpkgs/pull/206935,
|
# These deps were propagated from VTK 9 in https://github.com/NixOS/nixpkgs/pull/206935,
|
||||||
# so we simply propagate them again from ITK.
|
# so we simply propagate them again from ITK.
|
||||||
# This admittedly is a hack and seems like an issue with VTK 9's CMake configuration.
|
# This admittedly is a hack and seems like an issue with VTK 9's CMake configuration.
|
||||||
propagatedBuildInputs = [
|
propagatedBuildInputs =
|
||||||
|
[
|
||||||
# The dependencies we've un-vendored from ITK, such as GDCM, must be propagated,
|
# The dependencies we've un-vendored from ITK, such as GDCM, must be propagated,
|
||||||
# otherwise other software built against ITK fails to configure since ITK headers
|
# otherwise other software built against ITK fails to configure since ITK headers
|
||||||
# refer to these previously vendored libraries:
|
# refer to these previously vendored libraries:
|
||||||
|
@ -166,7 +170,9 @@ stdenv.mkDerivation {
|
||||||
libpng
|
libpng
|
||||||
libtiff
|
libtiff
|
||||||
zlib
|
zlib
|
||||||
] ++ lib.optionals withVtk vtk.propagatedBuildInputs ++ lib.optionals enablePython [ numpy ];
|
]
|
||||||
|
++ lib.optionals withVtk vtk.propagatedBuildInputs
|
||||||
|
++ lib.optionals enablePython [ numpy ];
|
||||||
|
|
||||||
postInstall = lib.optionalString enablePython ''
|
postInstall = lib.optionalString enablePython ''
|
||||||
substitute \
|
substitute \
|
||||||
|
|
|
@ -13,6 +13,10 @@ let
|
||||||
inherit sha256;
|
inherit sha256;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./dont-set-cmake-skip-rpath-${version}.patch
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake doxygen ];
|
nativeBuildInputs = [ cmake doxygen ];
|
||||||
|
|
||||||
buildInputs = [ zlib ]
|
buildInputs = [ zlib ]
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index b4ef61e..7b2f26c 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -29,11 +29,6 @@ if(APPLE)
|
||||||
|
set(PHYSFS_M_SRCS src/physfs_platform_apple.m)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
-if(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
- # Don't use -rpath.
|
||||||
|
- set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
|
||||||
|
-endif()
|
||||||
|
-
|
||||||
|
if(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
|
||||||
|
add_definitions(-erroff=E_EMPTY_TRANSLATION_UNIT)
|
||||||
|
add_definitions(-xldscope=hidden)
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index b3291cc..11e7ad1 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -32,8 +32,6 @@ endif()
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
add_compile_options(-Wall)
|
||||||
|
- # Don't use -rpath.
|
||||||
|
- set(CMAKE_SKIP_RPATH ON CACHE BOOL "Skip RPATH" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_C_COMPILER_ID STREQUAL "SunPro")
|
|
@ -23,14 +23,7 @@
|
||||||
withWebKit ? stdenv.hostPlatform.isDarwin,
|
withWebKit ? stdenv.hostPlatform.isDarwin,
|
||||||
webkitgtk_4_0,
|
webkitgtk_4_0,
|
||||||
setfile,
|
setfile,
|
||||||
AGL,
|
libpng,
|
||||||
Carbon,
|
|
||||||
Cocoa,
|
|
||||||
Kernel,
|
|
||||||
QTKit,
|
|
||||||
AVFoundation,
|
|
||||||
AVKit,
|
|
||||||
WebKit,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -68,20 +61,11 @@ stdenv.mkDerivation rec {
|
||||||
++ lib.optional withCurl curl
|
++ lib.optional withCurl curl
|
||||||
++ lib.optional withMesa libGLU
|
++ lib.optional withMesa libGLU
|
||||||
++ lib.optional (withWebKit && !stdenv.hostPlatform.isDarwin) webkitgtk_4_0
|
++ lib.optional (withWebKit && !stdenv.hostPlatform.isDarwin) webkitgtk_4_0
|
||||||
++ lib.optional (withWebKit && stdenv.hostPlatform.isDarwin) WebKit
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
setfile
|
setfile
|
||||||
Carbon
|
libpng
|
||||||
Cocoa
|
|
||||||
Kernel
|
|
||||||
QTKit
|
|
||||||
AVFoundation
|
|
||||||
AVKit
|
|
||||||
WebKit
|
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = lib.optional stdenv.hostPlatform.isDarwin AGL;
|
|
||||||
|
|
||||||
configureFlags =
|
configureFlags =
|
||||||
[
|
[
|
||||||
"--disable-precomp-headers"
|
"--disable-precomp-headers"
|
||||||
|
|
|
@ -25,14 +25,6 @@
|
||||||
, withWebKit ? true
|
, withWebKit ? true
|
||||||
, webkitgtk_4_0
|
, webkitgtk_4_0
|
||||||
, setfile
|
, setfile
|
||||||
, AGL
|
|
||||||
, Carbon
|
|
||||||
, Cocoa
|
|
||||||
, Kernel
|
|
||||||
, QTKit
|
|
||||||
, AVFoundation
|
|
||||||
, AVKit
|
|
||||||
, WebKit
|
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
catch = fetchFromGitHub {
|
catch = fetchFromGitHub {
|
||||||
|
@ -81,21 +73,11 @@ stdenv.mkDerivation rec {
|
||||||
]
|
]
|
||||||
++ lib.optional withMesa libGLU
|
++ lib.optional withMesa libGLU
|
||||||
++ lib.optional (withWebKit && stdenv.hostPlatform.isLinux) webkitgtk_4_0
|
++ lib.optional (withWebKit && stdenv.hostPlatform.isLinux) webkitgtk_4_0
|
||||||
++ lib.optional (withWebKit && stdenv.hostPlatform.isDarwin) WebKit
|
|
||||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||||
expat
|
expat
|
||||||
setfile
|
setfile
|
||||||
Carbon
|
|
||||||
Cocoa
|
|
||||||
Kernel
|
|
||||||
QTKit
|
|
||||||
AVFoundation
|
|
||||||
AVKit
|
|
||||||
WebKit
|
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = lib.optional stdenv.hostPlatform.isDarwin AGL;
|
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--disable-precomp-headers"
|
"--disable-precomp-headers"
|
||||||
# This is the default option, but be explicit
|
# This is the default option, but be explicit
|
||||||
|
|
|
@ -58,6 +58,7 @@ buildPythonPackage rec {
|
||||||
funcparserlib
|
funcparserlib
|
||||||
pillow
|
pillow
|
||||||
reportlab
|
reportlab
|
||||||
|
setuptools
|
||||||
webcolors
|
webcolors
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/pyproject.toml b/pyproject.toml
|
|
||||||
index 2c93a39..6c800e2 100644
|
|
||||||
--- a/pyproject.toml
|
|
||||||
+++ b/pyproject.toml
|
|
||||||
@@ -24,3 +24,7 @@ isort = "^4.3"
|
|
||||||
|
|
||||||
[tool.black]
|
|
||||||
line-length = 120
|
|
||||||
+
|
|
||||||
+[build-system]
|
|
||||||
+requires = ["poetry_core>=1.0.0"]
|
|
||||||
+build-backend = "poetry.core.masonry.api"
|
|
|
@ -1,47 +1,52 @@
|
||||||
{
|
{
|
||||||
lib,
|
lib,
|
||||||
buildPythonPackage,
|
buildPythonPackage,
|
||||||
pythonOlder,
|
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
|
fetchpatch,
|
||||||
|
graphviz,
|
||||||
|
imagemagick,
|
||||||
|
inkscape,
|
||||||
jinja2,
|
jinja2,
|
||||||
poetry-core,
|
poetry-core,
|
||||||
round,
|
|
||||||
graphviz,
|
|
||||||
inkscape,
|
|
||||||
imagemagick,
|
|
||||||
pytestCheckHook,
|
pytestCheckHook,
|
||||||
typed-ast,
|
pythonOlder,
|
||||||
|
round,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "diagrams";
|
pname = "diagrams";
|
||||||
version = "0.23.4";
|
version = "0.24.2";
|
||||||
format = "pyproject";
|
pyproject = true;
|
||||||
|
|
||||||
disabled = pythonOlder "3.7";
|
disabled = pythonOlder "3.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "mingrammer";
|
owner = "mingrammer";
|
||||||
repo = pname;
|
repo = "diagrams";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-2jRWN2glGEr51fzny8nkqa5c2EdJG5aZPG2eTD7AISY=";
|
hash = "sha256-xdc8qHvLKy5QV/1c87o7H/VhitUhpH/+VgqBHn2a8lg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
patches = [
|
||||||
substituteInPlace pyproject.toml \
|
# Add build-system, https://github.com/mingrammer/diagrams/pull/1089
|
||||||
--replace 'graphviz = ">=0.13.2,<0.20.0"' 'graphviz = "*"'
|
(fetchpatch {
|
||||||
'';
|
name = "add-build-system.patch";
|
||||||
|
url = "https://github.com/mingrammer/diagrams/commit/59b84698b142f5a0998ee9e395df717a1b77e9b2.patch";
|
||||||
|
hash = "sha256-/zV5X4qgHJs+KO9gHyu6LqQ3hB8Zx+BzOFo7K1vQK78=";
|
||||||
|
})
|
||||||
|
./remove-black-requirement.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
pythonRemoveDeps = [ "pre-commit" ];
|
||||||
|
|
||||||
|
pythonRelaxDeps = [ "graphviz" ];
|
||||||
|
|
||||||
preConfigure = ''
|
preConfigure = ''
|
||||||
patchShebangs autogen.sh
|
patchShebangs autogen.sh
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
'';
|
'';
|
||||||
|
|
||||||
patches = [
|
build-system = [ poetry-core ];
|
||||||
# The build-system section is missing
|
|
||||||
./build_poetry.patch
|
|
||||||
./remove-black-requirement.patch
|
|
||||||
];
|
|
||||||
|
|
||||||
# Despite living in 'tool.poetry.dependencies',
|
# Despite living in 'tool.poetry.dependencies',
|
||||||
# these are only used at build time to process the image resource files
|
# these are only used at build time to process the image resource files
|
||||||
|
@ -49,14 +54,10 @@ buildPythonPackage rec {
|
||||||
inkscape
|
inkscape
|
||||||
imagemagick
|
imagemagick
|
||||||
jinja2
|
jinja2
|
||||||
poetry-core
|
|
||||||
round
|
round
|
||||||
];
|
];
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
dependencies = [ graphviz ];
|
||||||
graphviz
|
|
||||||
typed-ast
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeCheckInputs = [ pytestCheckHook ];
|
nativeCheckInputs = [ pytestCheckHook ];
|
||||||
|
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
buildPythonPackage,
|
|
||||||
fetchPypi,
|
|
||||||
flask,
|
|
||||||
gevent,
|
|
||||||
gevent-websocket,
|
|
||||||
}:
|
|
||||||
|
|
||||||
buildPythonPackage rec {
|
|
||||||
pname = "Flask-Sockets";
|
|
||||||
version = "0.2.1";
|
|
||||||
|
|
||||||
src = fetchPypi {
|
|
||||||
inherit pname version;
|
|
||||||
sha256 = "072927da8edca0e81e024f5787e643c87d80b351b714de95d723becb30e0643b";
|
|
||||||
};
|
|
||||||
|
|
||||||
propagatedBuildInputs = [
|
|
||||||
flask
|
|
||||||
gevent
|
|
||||||
gevent-websocket
|
|
||||||
];
|
|
||||||
|
|
||||||
# upstream doesn't have any tests, single file
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
pythonImportsCheck = [ "flask_sockets" ];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Elegant WebSockets for your Flask apps";
|
|
||||||
homepage = "https://github.com/heroku-python/flask-sockets";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ maintainers.prusnak ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -70,7 +70,11 @@ buildPythonPackage rec {
|
||||||
freezegun
|
freezegun
|
||||||
grpcio
|
grpcio
|
||||||
mock
|
mock
|
||||||
|
]
|
||||||
|
++ lib.optionals (pythonOlder "3.13") [
|
||||||
oauth2client
|
oauth2client
|
||||||
|
]
|
||||||
|
++ [
|
||||||
pytest-asyncio
|
pytest-asyncio
|
||||||
pytest-localserver
|
pytest-localserver
|
||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
|
|
|
@ -21,7 +21,6 @@
|
||||||
falcon,
|
falcon,
|
||||||
fastapi,
|
fastapi,
|
||||||
flask,
|
flask,
|
||||||
flask-sockets,
|
|
||||||
gunicorn,
|
gunicorn,
|
||||||
moto,
|
moto,
|
||||||
pyramid,
|
pyramid,
|
||||||
|
@ -73,7 +72,6 @@ buildPythonPackage rec {
|
||||||
falcon
|
falcon
|
||||||
fastapi
|
fastapi
|
||||||
flask
|
flask
|
||||||
flask-sockets
|
|
||||||
gunicorn
|
gunicorn
|
||||||
moto
|
moto
|
||||||
pyramid
|
pyramid
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
buildPythonPackage,
|
buildPythonPackage,
|
||||||
fetchFromGitHub,
|
fetchFromGitHub,
|
||||||
flake8,
|
flake8,
|
||||||
flask-sockets,
|
|
||||||
moto,
|
moto,
|
||||||
psutil,
|
psutil,
|
||||||
pytest-asyncio,
|
pytest-asyncio,
|
||||||
|
@ -49,7 +48,6 @@ buildPythonPackage rec {
|
||||||
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
flake8
|
flake8
|
||||||
flask-sockets
|
|
||||||
moto
|
moto
|
||||||
psutil
|
psutil
|
||||||
pytest-asyncio
|
pytest-asyncio
|
||||||
|
|
|
@ -147,6 +147,7 @@ buildPythonPackage rec {
|
||||||
"tests/cli/"
|
"tests/cli/"
|
||||||
"tests/django/test_dataloaders.py"
|
"tests/django/test_dataloaders.py"
|
||||||
"tests/exceptions/"
|
"tests/exceptions/"
|
||||||
|
"tests/experimental/pydantic/test_fields.py"
|
||||||
"tests/http/"
|
"tests/http/"
|
||||||
"tests/schema/extensions/"
|
"tests/schema/extensions/"
|
||||||
"tests/schema/test_dataloaders.py"
|
"tests/schema/test_dataloaders.py"
|
||||||
|
|
|
@ -7,59 +7,48 @@
|
||||||
numpy,
|
numpy,
|
||||||
lightning-utilities,
|
lightning-utilities,
|
||||||
packaging,
|
packaging,
|
||||||
pretty-errors,
|
|
||||||
|
|
||||||
# buildInputs
|
# buildInputs
|
||||||
torch,
|
torch,
|
||||||
|
|
||||||
# tests
|
# tests
|
||||||
cloudpickle,
|
|
||||||
psutil,
|
|
||||||
pytestCheckHook,
|
pytestCheckHook,
|
||||||
pytest-doctestplus,
|
pytest-doctestplus,
|
||||||
pytest-xdist,
|
pytest-xdist,
|
||||||
pytorch-lightning,
|
pytorch-lightning,
|
||||||
scikit-image,
|
scikit-image,
|
||||||
scikit-learn,
|
|
||||||
|
|
||||||
# passthru
|
# passthru
|
||||||
torchmetrics,
|
torchmetrics,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
buildPythonPackage rec {
|
||||||
pname = "torchmetrics";
|
pname = "torchmetrics";
|
||||||
version = "1.4.3";
|
version = "1.6.1";
|
||||||
in
|
|
||||||
buildPythonPackage {
|
|
||||||
inherit pname version;
|
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Lightning-AI";
|
owner = "Lightning-AI";
|
||||||
repo = "torchmetrics";
|
repo = "torchmetrics";
|
||||||
rev = "refs/tags/v${version}";
|
tag = "v${version}";
|
||||||
hash = "sha256-527cHPFdFw/JajHe7Kkz7+zl4EfePaLx77I2OTjjxaA=";
|
hash = "sha256-itLFJB920hQGX2VLOLolHhmXFVHAOkfRRFtUGB9neKM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
numpy
|
numpy
|
||||||
lightning-utilities
|
lightning-utilities
|
||||||
packaging
|
packaging
|
||||||
pretty-errors
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Let the user bring their own instance
|
# Let the user bring their own instance
|
||||||
buildInputs = [ torch ];
|
buildInputs = [ torch ];
|
||||||
|
|
||||||
nativeCheckInputs = [
|
nativeCheckInputs = [
|
||||||
cloudpickle
|
|
||||||
psutil
|
|
||||||
pytestCheckHook
|
pytestCheckHook
|
||||||
pytest-doctestplus
|
pytest-doctestplus
|
||||||
pytest-xdist
|
pytest-xdist
|
||||||
pytorch-lightning
|
pytorch-lightning
|
||||||
scikit-image
|
scikit-image
|
||||||
scikit-learn
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# A cyclic dependency in: integrations/test_lightning.py
|
# A cyclic dependency in: integrations/test_lightning.py
|
||||||
|
@ -73,16 +62,20 @@ buildPythonPackage {
|
||||||
dontInstall = true;
|
dontInstall = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
disabledTests = [
|
|
||||||
# `IndexError: list index out of range`
|
|
||||||
"test_metric_lightning_log"
|
|
||||||
];
|
|
||||||
|
|
||||||
disabledTestPaths = [
|
disabledTestPaths = [
|
||||||
# These require too many "leftpad-level" dependencies
|
# These require too many "leftpad-level" dependencies
|
||||||
# Also too cross-dependent
|
# Also too cross-dependent
|
||||||
"tests/unittests"
|
"tests/unittests"
|
||||||
|
|
||||||
|
# AttributeError: partially initialized module 'pesq' has no attribute 'pesq' (most likely due to a circular import)
|
||||||
|
"examples/audio/pesq.py"
|
||||||
|
|
||||||
|
# Require internet access
|
||||||
|
"examples/text/bertscore.py"
|
||||||
|
"examples/image/clip_score.py"
|
||||||
|
"examples/text/perplexity.py"
|
||||||
|
"examples/text/rouge.py"
|
||||||
|
|
||||||
# A trillion import path mismatch errors
|
# A trillion import path mismatch errors
|
||||||
"src/torchmetrics"
|
"src/torchmetrics"
|
||||||
];
|
];
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
nix-update-script,
|
nix-update-script,
|
||||||
pnpm,
|
pnpm,
|
||||||
nodejs,
|
nodejs,
|
||||||
|
python3,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
electron,
|
electron,
|
||||||
vulkan-helper,
|
vulkan-helper,
|
||||||
|
@ -33,6 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
nodejs
|
nodejs
|
||||||
pnpm.configHook
|
pnpm.configHook
|
||||||
|
python3
|
||||||
makeWrapper
|
makeWrapper
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -41,21 +43,25 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
./fix-non-steam-shortcuts.patch
|
./fix-non-steam-shortcuts.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||||
# We are not packaging this as an Electron application bundle, so Electron
|
|
||||||
# reports to the application that is is not "packaged", which causes Heroic
|
|
||||||
# to take some incorrect codepaths meant for development environments.
|
|
||||||
substituteInPlace src/**/*.ts --replace-quiet 'app.isPackaged' 'true'
|
|
||||||
'';
|
|
||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
|
# set nodedir to prevent node-gyp from downloading headers
|
||||||
|
# taken from https://nixos.org/manual/nixpkgs/stable/#javascript-tool-specific
|
||||||
|
mkdir -p $HOME/.node-gyp/${nodejs.version}
|
||||||
|
echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
|
||||||
|
ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
|
||||||
|
export npm_config_nodedir=${nodejs}
|
||||||
|
|
||||||
pnpm --offline electron-vite build
|
pnpm --offline electron-vite build
|
||||||
# Remove dev dependencies.
|
pnpm --offline electron-builder \
|
||||||
pnpm --ignore-scripts prune --prod
|
--linux \
|
||||||
# Clean up broken symlinks left behind by `pnpm prune`
|
--dir \
|
||||||
find node_modules/.bin -xtype l -delete
|
-c.asarUnpack="**/*.node" \
|
||||||
|
-c.electronDist=${electron.dist} \
|
||||||
|
-c.electronVersion=${electron.version}
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
|
@ -65,33 +71,32 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
runHook preInstall
|
runHook preInstall
|
||||||
|
|
||||||
mkdir -p $out/share/{applications,heroic}
|
mkdir -p "$out/opt/heroic"
|
||||||
cp -r . $out/share/heroic
|
cp -r dist/linux-unpacked/resources "$out/opt/heroic"
|
||||||
rm -rf $out/share/heroic/{.devcontainer,.vscode,.husky,.idea,.github}
|
|
||||||
|
|
||||||
chmod -R u+w "$out/share/heroic/public/bin" "$out/share/heroic/build/bin"
|
cp -r public "$out/opt/heroic/resources/app.asar.unpacked/build"
|
||||||
rm -rf "$out/share/heroic/public/bin" "$out/share/heroic/build/bin"
|
rm -rf "$out/opt/heroic/resources/app.asar.unpacked/build/bin"
|
||||||
mkdir -p "$out/share/heroic/build/bin/x64/linux"
|
mkdir -p "$out/opt/heroic/resources/app.asar.unpacked/build/bin/x64/linux"
|
||||||
ln -s \
|
ln -s \
|
||||||
"${lib.getExe gogdl}" \
|
"${lib.getExe gogdl}" \
|
||||||
"${lib.getExe legendary-gl}" \
|
"${lib.getExe legendary-gl}" \
|
||||||
"${lib.getExe nile}" \
|
"${lib.getExe nile}" \
|
||||||
"${lib.getExe comet-gog}" \
|
"${lib.getExe comet-gog}" \
|
||||||
"${lib.getExe vulkan-helper}" \
|
"${lib.getExe vulkan-helper}" \
|
||||||
"$out/share/heroic/build/bin/x64/linux/"
|
"$out/opt/heroic/resources/app.asar.unpacked/build/bin/x64/linux"
|
||||||
|
|
||||||
makeWrapper "${electron}/bin/electron" "$out/bin/heroic" \
|
makeWrapper "${electron}/bin/electron" "$out/bin/heroic" \
|
||||||
--inherit-argv0 \
|
--inherit-argv0 \
|
||||||
|
--set ELECTRON_FORCE_IS_PACKAGED 1 \
|
||||||
--add-flags --disable-gpu-compositing \
|
--add-flags --disable-gpu-compositing \
|
||||||
--add-flags $out/share/heroic \
|
--add-flags $out/opt/heroic/resources/app.asar \
|
||||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
|
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
|
||||||
|
|
||||||
substituteInPlace "$out/share/heroic/flatpak/com.heroicgameslauncher.hgl.desktop" \
|
install -D "flatpak/com.heroicgameslauncher.hgl.desktop" "$out/share/applications/com.heroicgameslauncher.hgl.desktop"
|
||||||
|
install -D "src/frontend/assets/heroic-icon.svg" "$out/share/icons/hicolor/scalable/apps/com.heroicgameslauncher.hgl.svg"
|
||||||
|
substituteInPlace "$out/share/applications/com.heroicgameslauncher.hgl.desktop" \
|
||||||
--replace-fail "StartupWMClass=Heroic" "StartupWMClass=heroic" \
|
--replace-fail "StartupWMClass=Heroic" "StartupWMClass=heroic" \
|
||||||
--replace-fail "Exec=heroic-run" "Exec=heroic"
|
--replace-fail "Exec=heroic-run" "Exec=heroic"
|
||||||
mkdir -p "$out/share/applications" "$out/share/icons/hicolor/scalable/apps"
|
|
||||||
ln -s "$out/share/heroic/flatpak/com.heroicgameslauncher.hgl.desktop" "$out/share/applications"
|
|
||||||
ln -s "$out/share/heroic/src/frontend/assets/heroic-icon.svg" "$out/share/icons/hicolor/scalable/apps/com.heroicgameslauncher.hgl.svg"
|
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -5892,6 +5892,8 @@ with pkgs;
|
||||||
|
|
||||||
devpi-server = python3Packages.callPackage ../development/tools/devpi-server { };
|
devpi-server = python3Packages.callPackage ../development/tools/devpi-server { };
|
||||||
|
|
||||||
|
dprint-plugins = recurseIntoAttrs (callPackage ../by-name/dp/dprint/plugins { });
|
||||||
|
|
||||||
elm2nix = haskell.lib.compose.justStaticExecutables haskellPackages.elm2nix;
|
elm2nix = haskell.lib.compose.justStaticExecutables haskellPackages.elm2nix;
|
||||||
|
|
||||||
elmPackages = recurseIntoAttrs (callPackage ../development/compilers/elm { });
|
elmPackages = recurseIntoAttrs (callPackage ../development/compilers/elm { });
|
||||||
|
@ -9476,6 +9478,7 @@ with pkgs;
|
||||||
|
|
||||||
itk_5_2 = callPackage ../development/libraries/itk/5.2.x.nix {
|
itk_5_2 = callPackage ../development/libraries/itk/5.2.x.nix {
|
||||||
inherit (darwin.apple_sdk.frameworks) Cocoa;
|
inherit (darwin.apple_sdk.frameworks) Cocoa;
|
||||||
|
enableRtk = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
itk_5 = callPackage ../development/libraries/itk/5.x.nix {
|
itk_5 = callPackage ../development/libraries/itk/5.x.nix {
|
||||||
|
@ -10950,12 +10953,10 @@ with pkgs;
|
||||||
|
|
||||||
wxGTK31 = callPackage ../development/libraries/wxwidgets/wxGTK31.nix {
|
wxGTK31 = callPackage ../development/libraries/wxwidgets/wxGTK31.nix {
|
||||||
inherit (darwin.stubs) setfile;
|
inherit (darwin.stubs) setfile;
|
||||||
inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit AVFoundation AVKit WebKit;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
wxGTK32 = callPackage ../development/libraries/wxwidgets/wxGTK32.nix {
|
wxGTK32 = callPackage ../development/libraries/wxwidgets/wxGTK32.nix {
|
||||||
inherit (darwin.stubs) setfile;
|
inherit (darwin.stubs) setfile;
|
||||||
inherit (darwin.apple_sdk.frameworks) AGL Carbon Cocoa Kernel QTKit AVFoundation AVKit WebKit;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
wxSVG = callPackage ../development/libraries/wxSVG {
|
wxSVG = callPackage ../development/libraries/wxSVG {
|
||||||
|
|
|
@ -224,6 +224,7 @@ mapAliases ({
|
||||||
flask-autoindex = throw "flask-autoindex was removed, as it is not compatible with flask 3.0 and unmaintained since 2020.";
|
flask-autoindex = throw "flask-autoindex was removed, as it is not compatible with flask 3.0 and unmaintained since 2020.";
|
||||||
flask-basicauth = throw "flask-basicauth was removed, as it is not compatible with flask 3.0 and unmaintained since 2016.";
|
flask-basicauth = throw "flask-basicauth was removed, as it is not compatible with flask 3.0 and unmaintained since 2016.";
|
||||||
flask-sessionstore = throw "flask-sessionstore was removed, as it is not compatible with flask 3.0 and unmaintained since 2017.";
|
flask-sessionstore = throw "flask-sessionstore was removed, as it is not compatible with flask 3.0 and unmaintained since 2017.";
|
||||||
|
flask-sockets = throw "flask-sockets has been removed as the upstream repository was archived in 2022"; # Added 2025-01-01
|
||||||
flowlogs_reader = flowlogs-reader; # added 2024-01-03
|
flowlogs_reader = flowlogs-reader; # added 2024-01-03
|
||||||
flufl_bounce = flufl-bounce; # added 2023-11-03
|
flufl_bounce = flufl-bounce; # added 2023-11-03
|
||||||
flufl_i18n = flufl-i18n; # added 2023-11-03
|
flufl_i18n = flufl-i18n; # added 2023-11-03
|
||||||
|
|
|
@ -4734,8 +4734,6 @@ self: super: with self; {
|
||||||
|
|
||||||
flask-socketio = callPackage ../development/python-modules/flask-socketio { };
|
flask-socketio = callPackage ../development/python-modules/flask-socketio { };
|
||||||
|
|
||||||
flask-sockets = callPackage ../development/python-modules/flask-sockets { };
|
|
||||||
|
|
||||||
flask-sqlalchemy = callPackage ../development/python-modules/flask-sqlalchemy { };
|
flask-sqlalchemy = callPackage ../development/python-modules/flask-sqlalchemy { };
|
||||||
|
|
||||||
flask-sqlalchemy-lite = callPackage ../development/python-modules/flask-sqlalchemy-lite { };
|
flask-sqlalchemy-lite = callPackage ../development/python-modules/flask-sqlalchemy-lite { };
|
||||||
|
@ -6491,6 +6489,7 @@ self: super: with self; {
|
||||||
itk = toPythonModule (pkgs.itk.override {
|
itk = toPythonModule (pkgs.itk.override {
|
||||||
inherit python numpy;
|
inherit python numpy;
|
||||||
enablePython = true;
|
enablePython = true;
|
||||||
|
enableRtk = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue