Compare commits
1 Commits
main
...
module/dbz
Author | SHA1 | Date |
---|---|---|
xenia | e98d1584df |
245
README.md
245
README.md
|
@ -1,8 +1,3 @@
|
|||
---
|
||||
gitea: none
|
||||
include_toc: true
|
||||
---
|
||||
|
||||
# dragnpkgs
|
||||
|
||||
this is my personal nixos modules and packages repository. while it was designed for my own use,
|
||||
|
@ -11,49 +6,18 @@ upstreaming into nixpkgs if there is sufficient interest
|
|||
|
||||
## usage
|
||||
|
||||
dragnpkgs provides a set of nixos modules and a nixpkgs overlay containing custom packages. the
|
||||
modules require the overlay
|
||||
|
||||
### non-flake
|
||||
dragnpkgs provides a set of nixos modules and a nixpkgs overlay containing custom packages
|
||||
(automatically applied). to use, import the top-level module into your system configuration, eg
|
||||
|
||||
```nix
|
||||
{config, lib, pkgs, ...}:
|
||||
{
|
||||
imports = [
|
||||
/path/to/dragnpkgs/module.nix
|
||||
path/to/dragnpkgs
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [ (import /path/to/dragnpkgs/overlay.nix) ];
|
||||
}
|
||||
```
|
||||
|
||||
for standalone nix on other distros, use `~/.config/nixpkgs/overlays.nix` to enable the dragnpkgs
|
||||
overlay
|
||||
```nix
|
||||
[ (import <dragnpkgs/overlay.nix>) ]
|
||||
```
|
||||
|
||||
### flake
|
||||
|
||||
for flake usage, point your `nixpkgs` to this repo
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
# for nixos-24.05
|
||||
nixpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=nixos-24.05";
|
||||
|
||||
# for nixos-unstable
|
||||
nixpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=main";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
note that overriding inputs to the flake won't necessarily work because of the way nixpkgs registers
|
||||
itself with the system. this requires really annoying hacks to get working at all. if you want to
|
||||
depend on `dragnpkgs` with a different version of `nixpkgs` (ie not 24.05 or unstable), clone the
|
||||
repo and recreate `flake.lock`. aren't flakes so cool and fun!!!!
|
||||
|
||||
## options documentation
|
||||
|
||||
documentation for options provided by dragnpkgs
|
||||
|
@ -74,13 +38,13 @@ services.ghidra-server = {
|
|||
|
||||
enables the ghidra server service
|
||||
|
||||
#### services.ghidra-server.enableAdminCli (`true`)
|
||||
#### services.ghidra-server.enableAdminCli
|
||||
|
||||
adds a system package for the CLI tool `ghidra-svrAdmin`, which allows anyone in the `ghidra` group
|
||||
to administer the server (this corresponds to the `server/svrAdmin` tool in the stock ghidra
|
||||
distribution)
|
||||
|
||||
#### services.ghidra-server.{package, jdkPackage} (`ghidra_headless`, `openjdk21_headless`)
|
||||
#### services.ghidra-server.{package, jdkPackage} (`ghidra_headless`, `openjdk17_headless`)
|
||||
|
||||
allows overriding the ghidra package and jdk package used for the server
|
||||
|
||||
|
@ -92,10 +56,9 @@ the server hostname or IP; this is typically required (by java RMI) for correct
|
|||
|
||||
the server will use 3 consecutive TCP ports starting from this port
|
||||
|
||||
#### services.ghidra-server.directory (`ghidra-server`)
|
||||
#### services.ghidra-server.directory (`/var/lib/ghidra-server`)
|
||||
|
||||
the root directory for server files, as a subdirectory of `/var/lib`. this is needed because this
|
||||
option is passed to systemd `StateDirectory=`
|
||||
the root directory for server files
|
||||
|
||||
#### services.ghidra-server.{user,group} (`ghidra`)
|
||||
|
||||
|
@ -106,198 +69,10 @@ the service user and group
|
|||
|
||||
## packages documentation
|
||||
|
||||
### [`ghidra_headless`](./default.nix)
|
||||
### `ghidra_headless`
|
||||
|
||||
a variant of ghidra which does not have a dependency on any jdk, intended to
|
||||
reduce closure size for server operation with a headless jdk (in particular,
|
||||
the ghidra-server nixos module uses `ghidra_headless` with `openjdk21_headless`
|
||||
by default
|
||||
|
||||
### [`ghidra`](./pkgs/ghidra-xenia/build.nix)
|
||||
|
||||
a version of ghidra that uses a split derivation, `lib` contains the core
|
||||
ghidra distribution, `doc` contains all the documentation elements, and `out`
|
||||
contains the bin folder, icons, and desktop file. only `out` has a dependency
|
||||
on the build jdk, so `lib` and `doc` can be used with reduced closure size
|
||||
|
||||
### [`kicad`](./pkgs/kicad-xenia/default.nix)
|
||||
|
||||
preview version of kicad with my patches
|
||||
|
||||
### [`ocamlPackages.ppx_unicode`](./pkgs/ocaml/ppx_unicode)
|
||||
|
||||
opinionated ppx for string literals: <https://git.lain.faith/haskal/ppx_unicode>
|
||||
|
||||
### [`ocamlPackages.xlog`](./pkgs/ocaml/xlog)
|
||||
|
||||
logging for cats, in ocaml: <https://git.lain.faith/haskal/xlog>
|
||||
|
||||
### [`python312Packages.feedvalidator` or `feedvalidator`](./pkgs/python/feedvalidator)
|
||||
|
||||
the W3C atom/RSS feed validator library, <https://github.com/w3c/feedvalidator>
|
||||
|
||||
this package comes with an additional CLI bin, `feedvalidator`, which is a simple wrapper around the
|
||||
library that enables CLI usage
|
||||
|
||||
usage
|
||||
```
|
||||
usage: feedvalidator [-h] [-b BASE] file
|
||||
|
||||
W3C feedvalidator
|
||||
|
||||
positional arguments:
|
||||
file File to validate
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-b BASE, --base BASE Base URL of document
|
||||
```
|
||||
|
||||
example
|
||||
```bash
|
||||
feedvalidator --base "https://my-base-url/atom.xml" path/to/atom.xml
|
||||
```
|
||||
|
||||
### [`outer-wilds-text-adventure`](./pkgs/games/outer-wilds-text-adventure)
|
||||
|
||||
nix packaging for the Outer Wilds text adventure game. it should work by default on NixOS. if using
|
||||
the nix package manager on a non-NixOS computer, you also need the following when using pipewire or
|
||||
another ALSA plugin that lives in a separate package
|
||||
|
||||
```bash
|
||||
export ALSA_PLUGIN_DIR=$(nix eval -f '<nixpkgs>' --raw pipewire)/lib/alsa-lib
|
||||
```
|
||||
|
||||
### [`eta`](./pkgs/cmdline/eta)
|
||||
|
||||
Generic tool for monitoring ETA and progress of an arbitrary process.
|
||||
|
||||
<https://github.com/aioobe/eta>
|
||||
|
||||
### [`rbasefind`](./pkgs/rust/rbasefind)
|
||||
|
||||
A firmware base address search tool.
|
||||
|
||||
<https://github.com/sgayou/rbasefind>
|
||||
|
||||
**broken, do not use yet**
|
||||
|
||||
### [`cado-nfs`](./pkgs/crypto/cado-nfs)
|
||||
|
||||
Cado-NFS, An Implementation of the Number Field Sieve Algorithm
|
||||
|
||||
<https://gitlab.inria.fr/cado-nfs/cado-nfs>
|
||||
|
||||
## lib documentation
|
||||
|
||||
### [`fetchFromSteam`](./lib/fetchsteam)
|
||||
|
||||
a fetcher that downloads binaries from [Steam](https://store.steampowered.com/) using
|
||||
[DepotDownloader](https://github.com/SteamRE/DepotDownloader). this is intended for game servers
|
||||
that are distributed via Steam. use [SteamDB](https://steamdb.info) to get the needed IDs.
|
||||
|
||||
Usage:
|
||||
|
||||
```nix
|
||||
pkgs.fetchFromSteam {
|
||||
name = "..."; # optional
|
||||
appId = "...";
|
||||
depot = {
|
||||
depotId = "...";
|
||||
manifestId = "...";
|
||||
beta = "..."; # optional
|
||||
};
|
||||
|
||||
additionalDepots = [
|
||||
# same format as the main `depot`
|
||||
# use this to include eg the steamworks redistributable depot
|
||||
];
|
||||
|
||||
hash = pkgs.lib.fakeHash;
|
||||
}
|
||||
```
|
||||
|
||||
### [`fetchb4`](./lib/fetchb4)
|
||||
|
||||
A fetcher that uses `b4` to download patchsets from <https://lore.kernel.org> so that they can be applied in `boot.kernelPatches`
|
||||
|
||||
Usage:
|
||||
|
||||
```nix
|
||||
pkgs.fetchb4 {
|
||||
msgid = "2024042069.1337-example@example";
|
||||
hash = pkgs.lib.fakeHash;
|
||||
|
||||
# optional args
|
||||
version = "3"; # default: latest
|
||||
single_message = true; # default: false
|
||||
}
|
||||
```
|
||||
|
||||
note that not specifying a version may make cause future invocations to return different output if a newer version is sent to the thread
|
||||
|
||||
### [`mkNginxServer`](./lib/dev-nginx)
|
||||
|
||||
creates a shell script that launches nginx in the foreground as the current user. the nginx is
|
||||
configured to run an http server on `localhost:8080` with the given `siteConfig`
|
||||
|
||||
example:
|
||||
```nix
|
||||
pkgs.mkNginxServer {
|
||||
siteConfig = ''
|
||||
location / {
|
||||
root path/to/development_site_root;
|
||||
error_page 404 /404.html;
|
||||
}
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
### [`gitSource`](./lib/git-source)
|
||||
|
||||
for development package nix files, computes the source set of files tracked by git at the given root
|
||||
path
|
||||
|
||||
arguments:
|
||||
- `root`: the root of the git repo, where `.git` is located
|
||||
- `subdir`, optional: a subdirectory within the git repo. if provided, only files in this
|
||||
subdirectory will go into the final source set
|
||||
|
||||
example:
|
||||
```nix
|
||||
stdenv.mkDerivation {
|
||||
# ...
|
||||
src = gitSource { root = ./.; };
|
||||
}
|
||||
```
|
||||
|
||||
### [`makeSquashFs`](./lib/make-squashfs)
|
||||
|
||||
builds a squashfs image from the given derivations
|
||||
|
||||
example
|
||||
```nix
|
||||
makeSquashFs {
|
||||
filename = "my-image"; # optional
|
||||
storeContents = [ foo bar ];
|
||||
}
|
||||
```
|
||||
|
||||
### [`makeHpcDist`](./lib/make-hpc-dist)
|
||||
|
||||
create a packaged nix distribution with the given packages in it for weird HPC systems. go read the
|
||||
source to find out what it does; i don't recommend using this if you're not me
|
||||
|
||||
## development
|
||||
|
||||
structure of this repo
|
||||
- `default.nix`: the top level NixOS module, which can also be interpreted as a plain nix file
|
||||
outside of NixOS for access to just the nixpkgs overlay. this contains all definitions for
|
||||
packages, library functions, and NixOS modules
|
||||
- `lib/`: library functions (ie functions that get added to the overlay) go here
|
||||
- `modules/`: NixOS modules go here
|
||||
- `pkgs/`: packages that get added to the overlay go here
|
||||
- `support/`: WIP support tools (eg generating documentation)
|
||||
a variant of ghidra built with a headless openjdk, intended to reduce closure size for server
|
||||
operation
|
||||
|
||||
## licensing
|
||||
|
||||
|
|
16
TODO.md
16
TODO.md
|
@ -1,16 +0,0 @@
|
|||
# TODO
|
||||
|
||||
## upstream
|
||||
- fix kicad desktop file name
|
||||
|
||||
## `ghidra-server`
|
||||
|
||||
create NixOS VM test
|
||||
- test that ghidra starts and the repositories are initialized
|
||||
- test that ghidra-svrAdmin works as an unprivileged user in the `ghidra` group
|
||||
- possibly test remotely importing a binary. however, ghidra-svrAdmin working is a good indicator of
|
||||
the server being functional
|
||||
|
||||
## general
|
||||
|
||||
- meta info / license info for pkgs
|
38
default.nix
38
default.nix
|
@ -1,22 +1,16 @@
|
|||
let
|
||||
lockFile = builtins.fromJSON (builtins.readFile ./flake.lock);
|
||||
nixpkgs = builtins.fetchTarball {
|
||||
url = "";
|
||||
sha256 = lockFile.nodes.nixpkgs.locked.narHash;
|
||||
};
|
||||
lix = builtins.fetchTarball {
|
||||
url = "";
|
||||
sha256 = lockFile.nodes.lix.locked.narHash;
|
||||
};
|
||||
lix-module = builtins.fetchTarball {
|
||||
url = "";
|
||||
sha256 = lockFile.nodes.lix-module.locked.narHash;
|
||||
};
|
||||
in
|
||||
{ overlays ? [], ... } @ args:
|
||||
import "${nixpkgs}" {
|
||||
overlays = [
|
||||
(import ./overlay.nix)
|
||||
(import "${lix-module}/overlay.nix" { inherit lix; })
|
||||
] ++ overlays;
|
||||
} // (builtins.removeAttrs args [ "overlays" ])
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./modules/dragn-ball-zfs
|
||||
./modules/ghidra-server
|
||||
];
|
||||
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
ghidra_headless = prev.ghidra.override {
|
||||
openjdk17 = prev.openjdk17_headless;
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
|
|
57
flake.lock
57
flake.lock
|
@ -1,57 +0,0 @@
|
|||
{
|
||||
"nodes": {
|
||||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1729298361,
|
||||
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
|
||||
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
|
||||
}
|
||||
},
|
||||
"lix-module": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1729360442,
|
||||
"narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=",
|
||||
"rev": "9098ac95768f7006d7e070b88bae76939f6034e6",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz?rev=9098ac95768f7006d7e070b88bae76939f6034e6"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1731139594,
|
||||
"narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"lix": "lix",
|
||||
"lix-module": "lix-module",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
64
flake.nix
64
flake.nix
|
@ -1,64 +0,0 @@
|
|||
{
|
||||
description = "dragnpkgs together with nixpkgs and lix";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
lix-module = {
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz";
|
||||
flake = false;
|
||||
};
|
||||
lix = {
|
||||
url = "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, lix, lix-module }:
|
||||
let
|
||||
overlays = [
|
||||
(import ./overlay.nix)
|
||||
(import "${lix-module}/overlay.nix" { inherit lix; })
|
||||
];
|
||||
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
||||
in {
|
||||
lib = nixpkgs.lib.extend (final: prev: {
|
||||
nixosSystem = args:
|
||||
import "${nixpkgs}/nixos/lib/eval-config.nix" (
|
||||
{
|
||||
lib = final;
|
||||
|
||||
system = null;
|
||||
|
||||
modules = args.modules ++ [
|
||||
({ config, pkgs, lib, ... }: {
|
||||
config.nixpkgs.flake.source = self.outPath;
|
||||
config.nixpkgs.overlays = overlays;
|
||||
})
|
||||
(import ./module.nix)
|
||||
];
|
||||
} // builtins.removeAttrs args [ "modules" ]
|
||||
);
|
||||
mkFlake = flakeDef:
|
||||
let
|
||||
rewritePerSystem = sectionDef: (forAllSystems (system:
|
||||
builtins.mapAttrs (name: value:
|
||||
self.legacyPackages.${system}.callPackage value {}
|
||||
) sectionDef
|
||||
));
|
||||
in
|
||||
builtins.mapAttrs (name: value:
|
||||
if name == "packages" || name == "legacyPackages" || name == "devShells" then
|
||||
rewritePerSystem value
|
||||
else
|
||||
value
|
||||
) flakeDef;
|
||||
});
|
||||
|
||||
legacyPackages = forAllSystems (system:
|
||||
nixpkgs.legacyPackages.${system}.appendOverlays overlays
|
||||
);
|
||||
|
||||
nixosModules = nixpkgs.nixosModules;
|
||||
};
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
writeText,
|
||||
writeShellScriptBin,
|
||||
|
||||
nginx,
|
||||
systemd
|
||||
}:
|
||||
|
||||
{ siteConfig }:
|
||||
let conf = writeText "nginx.conf" ''
|
||||
daemon off;
|
||||
events {}
|
||||
pid /tmp/nginx.pid;
|
||||
http {
|
||||
access_log /dev/stdout;
|
||||
|
||||
client_body_temp_path /tmp;
|
||||
proxy_temp_path /tmp;
|
||||
fastcgi_temp_path /tmp;
|
||||
uwsgi_temp_path /tmp;
|
||||
scgi_temp_path /tmp;
|
||||
|
||||
include ${nginx}/conf/mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
|
||||
types_hash_max_size 4096;
|
||||
types_hash_bucket_size 128;
|
||||
|
||||
server {
|
||||
server_name localhost;
|
||||
listen 127.0.0.1:8080;
|
||||
|
||||
gzip on;
|
||||
gzip_min_length 256;
|
||||
gzip_proxied expired no-cache no-store private auth;
|
||||
gzip_types text/plain application/xml image/svg+xml text/css text/javascript;
|
||||
|
||||
${siteConfig}
|
||||
}
|
||||
}
|
||||
'';
|
||||
in
|
||||
writeShellScriptBin "dev-nginx.sh" ''
|
||||
exec ${systemd}/bin/systemd-run --user -t -pPrivateTmp=true --working-directory="$PWD" ${nginx}/bin/nginx -p "$PWD" -e stderr -c ${conf}
|
||||
''
|
|
@ -1,6 +0,0 @@
|
|||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
|
||||
echo "Downloading kernel patch $msgid into $out"
|
||||
export HOME="$TMP"
|
||||
PYTHONHASHSEED=0 b4 -n am -C -T $b4_flags -o- "$msgid" > "$out"
|
|
@ -1,23 +0,0 @@
|
|||
{ lib, stdenvNoCC, b4, git, cacert }:
|
||||
|
||||
{
|
||||
msgid,
|
||||
hash,
|
||||
single_message ? false,
|
||||
version ? null
|
||||
}: stdenvNoCC.mkDerivation {
|
||||
name = "patch-${msgid}";
|
||||
builder = ./builder.sh;
|
||||
|
||||
inherit msgid;
|
||||
b4_flags = with lib.strings; concatStringsSep " " [
|
||||
(optionalString single_message "--single-message")
|
||||
(optionalString (version != null) "--use-version ${version}")
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ b4 git cacert ];
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
|
||||
outputHash = hash;
|
||||
preferLocalBuild = true;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
if [ -e "$NIX_ATTRS_SH_FILE" ]; then . "$NIX_ATTRS_SH_FILE"; elif [ -f .attrs.sh ]; then . .attrs.sh; fi
|
||||
source $stdenv/setup
|
||||
echo "Downloading Steam depots for appId $appId into $out"
|
||||
|
||||
export HOME="$PWD"
|
||||
mkdir -p "$out"
|
||||
|
||||
for args in "${depotArgs[@]}"; do
|
||||
echo "Downloading component: $args"
|
||||
DepotDownloader $args -dir "$out" -validate
|
||||
done
|
||||
|
||||
rm -rf "$out/.DepotDownloader"
|
|
@ -1,50 +0,0 @@
|
|||
{ lib, stdenvNoCC, system, cacert, depotdownloader }:
|
||||
let
|
||||
checkDepot = depot: with builtins;
|
||||
hasAttr "depotId" depot && hasAttr "manifestId" depot;
|
||||
depotFormat = "{ depotId = ...; manifestId = ...; [beta = ...;] }";
|
||||
in lib.makeOverridable (
|
||||
{
|
||||
name ? null,
|
||||
appId,
|
||||
depot,
|
||||
additionalDepots ? [],
|
||||
hash
|
||||
}:
|
||||
if ! checkDepot depot then
|
||||
throw "Invalid format for depot: must be ${depotFormat}"
|
||||
else if ! builtins.all checkDepot additionalDepots then
|
||||
throw "Invalid format for additionalDepots: must be ${depotFormat}"
|
||||
else
|
||||
let
|
||||
depotOs =
|
||||
if system == "x86_64-linux" then
|
||||
"linux"
|
||||
else
|
||||
throw "fetchFromSteam does not currently support systems other than x86_64-linux";
|
||||
makeDepotArg = depot:
|
||||
"-app ${appId} -depot ${depot.depotId} -manifest ${depot.manifestId} -os ${depotOs}"
|
||||
+ (lib.optionalString (builtins.hasAttr "beta" depot) " -beta ${depot.beta}");
|
||||
depotArgs = builtins.map makeDepotArg [ depot ] ++ additionalDepots;
|
||||
in stdenvNoCC.mkDerivation {
|
||||
name = "steam-depot-${appId}" + (lib.optionalString (name != null) "-${name}");
|
||||
builder = ./builder.sh;
|
||||
|
||||
inherit appId;
|
||||
inherit depotArgs;
|
||||
|
||||
nativeBuildInputs = [
|
||||
depotdownloader
|
||||
cacert
|
||||
];
|
||||
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
|
||||
# impureEnvVars are not handled here
|
||||
# if used in an environment with eg, an http proxy, consult DepotDownloader and/or .NET for how to
|
||||
# configure that sort of thing
|
||||
|
||||
outputHashMode = "recursive";
|
||||
outputHash = hash;
|
||||
|
||||
preferLocalBuild = true;
|
||||
})
|
|
@ -1,14 +0,0 @@
|
|||
{ lib }: { root, subdir ? null }:
|
||||
let
|
||||
fs = lib.fileset;
|
||||
sourceFiles = fs.difference
|
||||
(fs.gitTracked root)
|
||||
(fs.fileFilter (file: file.hasExt "nix") root);
|
||||
finalSourceFiles =
|
||||
if subdir == null then
|
||||
sourceFiles
|
||||
else
|
||||
fs.intersection sourceFiles subdir;
|
||||
finalRoot = if subdir == null then root else subdir;
|
||||
in
|
||||
fs.toSource { root = finalRoot; fileset = finalSourceFiles; }
|
|
@ -1,119 +0,0 @@
|
|||
{
|
||||
mkShell,
|
||||
runCommand,
|
||||
stdenvNoCC,
|
||||
vmTools,
|
||||
writeClosure,
|
||||
writeText,
|
||||
|
||||
bash,
|
||||
cacert,
|
||||
coreutils,
|
||||
lix,
|
||||
singularity,
|
||||
|
||||
makeSquashFs,
|
||||
|
||||
diskSize ? 1024,
|
||||
memSize ? 1024
|
||||
}:
|
||||
{
|
||||
contents,
|
||||
startupScript ? "exec ${bash}/bin/bash -i"
|
||||
}:
|
||||
let
|
||||
base-container = runCommand "empty.sif.d" {
|
||||
buildInputs = [ coreutils ];
|
||||
} ''
|
||||
mkdir "$out"
|
||||
cd "$out"
|
||||
mkdir -p proc sys dev nix etc bin usr/bin .singularity.d
|
||||
ln -s /etc/sh bin/sh
|
||||
ln -s /etc/env usr/bin/env
|
||||
ln -s /etc/runscript .singularity.d/runscript
|
||||
'';
|
||||
container-image = vmTools.runInLinuxVM (
|
||||
runCommand "singularity-empty-image" {
|
||||
buildInputs = [ base-container singularity ];
|
||||
} ''
|
||||
export HOME=/tmp
|
||||
cp -r "${base-container}" "/tmp/container"
|
||||
cd "/tmp"
|
||||
find container -type d -exec chmod 755 {} \;
|
||||
|
||||
mkdir -p /var/lib/singularity/mnt/session
|
||||
echo "root:x:0:0:System administrator:/root:/bin/sh" > /etc/passwd
|
||||
echo > /etc/resolv.conf
|
||||
${singularity}/bin/singularity build "$out/empty.sif" "container/"
|
||||
'');
|
||||
|
||||
deps = [ coreutils bash cacert ];
|
||||
|
||||
startupScriptFile = writeText "singularity-startup-script" startupScript;
|
||||
|
||||
shell = stdenvNoCC.mkDerivation {
|
||||
name = "shell";
|
||||
propagatedBuildInputs = deps ++ contents;
|
||||
unpackPhase = "true";
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
printf '#!${bash}/bin/bash\n' > "$out/bin/startup.sh"
|
||||
export >> "$out/bin/startup.sh"
|
||||
cat "${startupScriptFile}" >> "$out/bin/startup.sh"
|
||||
chmod +x "$out/bin/startup.sh"
|
||||
'';
|
||||
};
|
||||
|
||||
base-etc = runCommand "singularity-etc" {
|
||||
buildInputs = [ coreutils bash cacert ];
|
||||
} ''
|
||||
mkdir "$out"
|
||||
ln -s "${shell}/bin/startup.sh" "$out/runscript"
|
||||
ln -s "${bash}/bin/bash" "$out/sh"
|
||||
ln -s "${coreutils}/bin/env" "$out/env"
|
||||
|
||||
mkdir -p "$out/ssl/certs"
|
||||
ln -s "${cacert}/etc/ssl/certs/ca-bundle.crt" "$out/ssl/certs/ca-bundle.crt"
|
||||
ln -s "${cacert}/etc/ssl/certs/ca-bundle.crt" "$out/ssl/certs/ca-certificates.crt"
|
||||
|
||||
touch "$out/localtime"
|
||||
touch "$out/resolv.conf"
|
||||
'';
|
||||
|
||||
|
||||
squashfs = makeSquashFs { filename = "nix-store"; storeContents = [ shell ]; };
|
||||
|
||||
startCommand = writeText "run-container.sh" ''
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
module load singularity/3.10.3
|
||||
|
||||
temp_dir="$(mktemp -d)"
|
||||
mkdir -p "''${TMPDIR:-/tmp}/empty"
|
||||
function __cleanup {
|
||||
echo cleaning up
|
||||
rsync -r --delete -- "''${TMPDIR:-/tmp}/empty/." "$temp_dir/."
|
||||
rmdir "$temp_dir"
|
||||
echo done
|
||||
}
|
||||
trap __cleanup EXIT
|
||||
|
||||
cp -r etc nix-store.squashfs "$temp_dir"
|
||||
|
||||
chmod +w "$temp_dir/etc"
|
||||
chmod +w "$temp_dir/etc/resolv.conf"
|
||||
chmod +w "$temp_dir/etc/localtime"
|
||||
cat /etc/localtime > $temp_dir/etc/localtime
|
||||
cat /etc/resolv.conf > $temp_dir/etc/resolv.conf
|
||||
|
||||
singularity run -B "/work:/work,/scratch:/scratch,$temp_dir/nix-store.squashfs:/nix/store:image-src=/,$temp_dir/etc:/etc" --pid --uts --ipc container-base.sif
|
||||
'';
|
||||
in runCommand "hpc-files.d" {} ''
|
||||
mkdir "$out"
|
||||
cp "${squashfs}" "$out/nix-store.squashfs"
|
||||
cp -r "${base-etc}" "$out/etc"
|
||||
cp "${container-image}/empty.sif" "$out/container-base.sif"
|
||||
cp "${startCommand}" "$out/run-container.sh"
|
||||
chmod +x "$out/run-container.sh"
|
||||
''
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
squashfsTools,
|
||||
|
||||
closureInfo,
|
||||
runCommand
|
||||
}:
|
||||
{
|
||||
filename ? "image",
|
||||
storeContents ? [],
|
||||
comp ? "xz -Xdict-size 100%"
|
||||
}:
|
||||
let
|
||||
compFlag = if comp == null then "-no-compression" else "-comp ${comp}";
|
||||
in runCommand "${filename}.squashfs" {
|
||||
nativeBuildInputs = [ squashfsTools ];
|
||||
} ''
|
||||
closureInfo=${closureInfo { rootPaths = storeContents; }}
|
||||
cp $closureInfo/registration nix-path-registration
|
||||
|
||||
mksquashfs nix-path-registration $(cat $closureInfo/store-paths) $out \
|
||||
-no-hardlinks -keep-as-directory -all-root -b 1048576 ${compFlag} \
|
||||
-processors $NIX_BUILD_CORES
|
||||
''
|
|
@ -1,5 +0,0 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
./modules/ghidra-server
|
||||
];
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.dbzfs;
|
||||
in {
|
||||
options.dbzfs = {
|
||||
enable = mkEnableOption "dbzfs" // {
|
||||
default = true;
|
||||
};
|
||||
package = mkPackageOption pkgs "zfs" {};
|
||||
managedRoot = mkOption {
|
||||
default = null;
|
||||
example = literalExpression "\"rpool/data\"";
|
||||
description = mdDoc "Root dataset which is managed by dbzfs.";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
datasets = mkOption {
|
||||
default = [];
|
||||
example = literalExpression "TODO";
|
||||
description = mdDoc "List of datasets to set up with dbzfs";
|
||||
type = types.listOf types.anything; # todo
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [{
|
||||
assertion = cfg.managedRoot != null;
|
||||
message = "dbzfs is enabled but dbzfs.managedRoot is not defined!";
|
||||
}];
|
||||
|
||||
system.activationScripts.dbzfs = ''
|
||||
echo meow
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -8,7 +8,7 @@
|
|||
}:
|
||||
|
||||
let
|
||||
server_conf = writeText "server.conf" "ghidra.repositories.dir=/var/lib/${directory}/repositories";
|
||||
server_conf = writeText "server.conf" "ghidra.repositories.dir=${directory}/repositories";
|
||||
in writeShellScriptBin "ghidra-svrAdmin" ''
|
||||
exec ${jdkPackage}/bin/java \
|
||||
-cp ${package}/lib/ghidra/Ghidra/Framework/Utility/lib/Utility.jar \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<Configuration monitorInterval="0" xmlns:xi="http://www.w3.org/2001/XInclude" packages="log">
|
||||
<Configuration monitorInterval="30" xmlns:xi="http://www.w3.org/2001/XInclude" packages="log">
|
||||
<Appenders>
|
||||
<Console name="console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="%-5p %m (%c{1}) %ex %n"/>
|
||||
|
|
|
@ -8,9 +8,9 @@ let
|
|||
in {
|
||||
options.services.ghidra-server = {
|
||||
enable = mkEnableOption "ghidra-server";
|
||||
enableAdminCli = mkEnableOption "ghidra-svrAdmin" // { default = true; };
|
||||
enableAdminCli = mkEnableOption "ghidra-svrAdmin";
|
||||
package = mkPackageOption pkgs "ghidra_headless" { };
|
||||
jdkPackage = mkPackageOption pkgs "openjdk21_headless" { };
|
||||
jdkPackage = mkPackageOption pkgs "openjdk17_headless" { };
|
||||
host = mkOption {
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
|
@ -20,33 +20,31 @@ in {
|
|||
};
|
||||
basePort = mkOption {
|
||||
default = 13100;
|
||||
description = "Ghidra server base port - the server will use 3 consecutive TCP ports starting from the provided port number.";
|
||||
description = mdDoc "Ghidra server base port - the server will use 3 consecutive TCP ports starting from the provided port number.";
|
||||
type = types.port;
|
||||
};
|
||||
directory = mkOption {
|
||||
default = "ghidra-server";
|
||||
description = ''
|
||||
Directory for Ghidra server data, under `/var/lib` (for systemd `StateDirectory`)
|
||||
'';
|
||||
default = "/var/lib/ghidra-server";
|
||||
description = mdDoc "Directory for Ghidra server data.";
|
||||
type = types.str;
|
||||
};
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "ghidra";
|
||||
description = "User account under which ghidra server runs.";
|
||||
description = mdDoc "User account under which ghidra server runs.";
|
||||
};
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "ghidra";
|
||||
description = "Group account under which ghidra server runs.";
|
||||
description = mdDoc "Group account under which ghidra server runs.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.users."${cfg.user}" = {
|
||||
isSystemUser = true;
|
||||
home = "/var/lib/${cfg.directory}";
|
||||
inherit (cfg) group;
|
||||
home = cfg.directory;
|
||||
group = cfg.group;
|
||||
packages = [ cfg.package cfg.jdkPackage ];
|
||||
};
|
||||
|
||||
|
@ -63,13 +61,13 @@ in {
|
|||
paths = map head (filter isList inputSplit);
|
||||
in ghidra_home + (concatStringsSep (":" + ghidra_home) paths);
|
||||
ghidra_mainclass = "ghidra.server.remote.GhidraServer";
|
||||
ghidra_args = "-a0 -u -p${toString cfg.basePort} -ip ${cfg.host} /var/lib/${cfg.directory}/repositories";
|
||||
ghidra_args = "-a0 -u -p${toString cfg.basePort} -ip ${cfg.host} ${cfg.directory}/repositories";
|
||||
in {
|
||||
description = "Ghidra server";
|
||||
after = ["network.target"];
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.jdkPackage}/bin/java ${ghidra_java_opt} -classpath ${ghidra_classpath} ${ghidra_mainclass} ${ghidra_args}";
|
||||
WorkingDirectory = "/var/lib/${cfg.directory}";
|
||||
WorkingDirectory = cfg.directory;
|
||||
Environment = "GHIDRA_HOME=${ghidra_home}";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
|
|
44
overlay.nix
44
overlay.nix
|
@ -1,44 +0,0 @@
|
|||
final: prev: {
|
||||
fetchFromSteam = prev.callPackage ./lib/fetchsteam {};
|
||||
fetchb4 = prev.callPackage ./lib/fetchb4 {};
|
||||
|
||||
gitSource = prev.callPackage ./lib/git-source {};
|
||||
|
||||
makeSquashFs = prev.callPackage ./lib/make-squashfs {};
|
||||
makeHpcDist = final.callPackage ./lib/make-hpc-dist {};
|
||||
|
||||
ghidra_headless = final.ghidra.lib;
|
||||
|
||||
# stuff that tracks upstream
|
||||
ghidra = final.callPackage ./pkgs/ghidra-xenia-v2/build.nix {
|
||||
protobuf = final.protobuf_21;
|
||||
};
|
||||
ghidra-extensions = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/ghidra-xenia-v2/extensions.nix { });
|
||||
|
||||
kicad = final.callPackage ./pkgs/kicad-xenia { };
|
||||
kicadAddons = final.lib.recurseIntoAttrs (final.callPackage ./pkgs/kicad-xenia/addons {});
|
||||
# end stuff that tracks upstream
|
||||
|
||||
|
||||
ocamlPackages = prev.ocamlPackages.overrideScope (ofinal: oprev: {
|
||||
ppx_unicode = ofinal.callPackage ./pkgs/ocaml/ppx_unicode {};
|
||||
xlog = ofinal.callPackage ./pkgs/ocaml/xlog {};
|
||||
});
|
||||
|
||||
python312Packages = prev.python312Packages.overrideScope (pfinal: pprev: {
|
||||
feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {};
|
||||
});
|
||||
|
||||
# add to top level because it has a binary
|
||||
feedvalidator = final.python312Packages.feedvalidator;
|
||||
|
||||
outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {};
|
||||
|
||||
mkNginxServer = prev.callPackage ./lib/dev-nginx {};
|
||||
|
||||
rbasefind = prev.callPackage ./pkgs/rust/rbasefind {};
|
||||
|
||||
eta = prev.callPackage ./pkgs/cmdline/eta {};
|
||||
|
||||
cado-nfs = prev.callPackage ./pkgs/crypto/cado-nfs {};
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "eta";
|
||||
version = "git";
|
||||
src = fetchFromGitHub {
|
||||
owner = "aioobe";
|
||||
repo = "eta";
|
||||
rev = "938f16bd088ce3d2a6f1bafbcdfd9a60d4d671ea";
|
||||
hash = "sha256-rTXy1K4oDM1/NC6qpunDlyrEFyk93hkowrriuXODCMg=";
|
||||
};
|
||||
PREFIX = "";
|
||||
installPhase = ''
|
||||
make DESTDIR="$out" install
|
||||
'';
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
From b5e7381235ed64b58b267af8f796c50b01900464 Mon Sep 17 00:00:00 2001
|
||||
From: xenia <xenia@awoo.systems>
|
||||
Date: Wed, 20 Nov 2024 22:16:47 -0500
|
||||
Subject: [PATCH] use PATH lookup for non-cado programs
|
||||
|
||||
---
|
||||
scripts/cadofactor/cadoprograms.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/scripts/cadofactor/cadoprograms.py b/scripts/cadofactor/cadoprograms.py
|
||||
index 6743480e1..946771f83 100755
|
||||
--- a/scripts/cadofactor/cadoprograms.py
|
||||
+++ b/scripts/cadofactor/cadoprograms.py
|
||||
@@ -1,4 +1,5 @@
|
||||
import os
|
||||
+import shutil
|
||||
import platform
|
||||
import abc
|
||||
import inspect
|
||||
@@ -327,6 +328,8 @@ class Program(object, metaclass=InspectType):
|
||||
# class attributes, which properties can't. Ergo dummy variables
|
||||
binary = None
|
||||
|
||||
+ use_which = False
|
||||
+
|
||||
# This class variable definition should not be here. It gets overwritten
|
||||
# when the InspectType meta-class creates the class object. The only purpose
|
||||
# is to make pylint shut up about the class not having an init_signature
|
||||
@@ -408,6 +411,8 @@ class Program(object, metaclass=InspectType):
|
||||
self.execfile = execsubfile
|
||||
elif os.path.isfile(execfile):
|
||||
self.execfile = execfile
|
||||
+ elif self.use_which and shutil.which(binary) is not None:
|
||||
+ self.execfile = shutil.which(binary)
|
||||
else:
|
||||
self.execfile = os.sep.join([self.subdir, binary])
|
||||
if not skip_check_binary_exists:
|
||||
@@ -1251,6 +1256,7 @@ class SSH(Program):
|
||||
binary = "ssh"
|
||||
name = binary
|
||||
path = "/usr/bin"
|
||||
+ use_which = True
|
||||
def __init__(self,
|
||||
host: PositionalParameter(),
|
||||
*args: PositionalParameter(),
|
||||
@@ -1268,6 +1274,7 @@ class RSync(Program):
|
||||
binary = "rsync"
|
||||
name = binary
|
||||
path = "/usr/bin"
|
||||
+ use_which = True
|
||||
def __init__(self,
|
||||
sourcefile: PositionalParameter(),
|
||||
remotefile: PositionalParameter(),
|
||||
@@ -1278,6 +1285,7 @@ class Ls(Program):
|
||||
binary = "ls"
|
||||
name = binary
|
||||
path = "/bin"
|
||||
+ use_which = True
|
||||
def __init__(self,
|
||||
*args : PositionalParameter(),
|
||||
long : Toggle('l')=None,
|
||||
@@ -1288,6 +1296,7 @@ class Kill(Program):
|
||||
binary = "kill"
|
||||
name = binary
|
||||
path = "/bin"
|
||||
+ use_which = True
|
||||
def __init__(self,
|
||||
*args: PositionalParameter(),
|
||||
signal: Parameter("s"),
|
||||
--
|
||||
2.44.2
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
{
|
||||
fetchFromGitLab,
|
||||
lib,
|
||||
stdenv,
|
||||
|
||||
# library deps
|
||||
ecm,
|
||||
gmp,
|
||||
hwloc,
|
||||
python3,
|
||||
sqlite,
|
||||
|
||||
# runtime deps
|
||||
openssh,
|
||||
rsync,
|
||||
util-linux,
|
||||
coreutils,
|
||||
|
||||
# build deps
|
||||
cmake,
|
||||
curl,
|
||||
inetutils,
|
||||
perl,
|
||||
|
||||
makeBinaryWrapper,
|
||||
|
||||
# options
|
||||
useArch ? "znver4",
|
||||
useTune ? "znver4",
|
||||
}: stdenv.mkDerivation rec {
|
||||
pname = "cado-nfs";
|
||||
git-rev = "bb65fdf0aaee0cea5e2da368bb87651d35d02603";
|
||||
version = builtins.substring 0 7 git-rev;
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.inria.fr";
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = git-rev;
|
||||
hash = "sha256-Ao8nX9rZ0ky7MK5qXGgMe4N160sPN/En6h/YdeI2/JU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./0001-use-PATH-lookup-for-non-cado-programs.patch
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gmp
|
||||
ecm
|
||||
python3
|
||||
sqlite
|
||||
hwloc
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
inetutils
|
||||
curl
|
||||
perl
|
||||
|
||||
makeBinaryWrapper
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-Wno-stringop-overflow"
|
||||
+ (lib.optionalString (useArch != null) " -march=${useArch}")
|
||||
+ (lib.optionalString (useTune != null) " -mtune=${useTune}");
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs --build .
|
||||
'';
|
||||
|
||||
postConfigure = ''
|
||||
patchShebangs --build .
|
||||
'';
|
||||
|
||||
cadoBinPath = lib.makeBinPath [
|
||||
openssh
|
||||
rsync
|
||||
util-linux
|
||||
coreutils
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/cado-nfs-client.py \
|
||||
--prefix PATH : ${cadoBinPath}
|
||||
wrapProgram $out/bin/cado-nfs.py \
|
||||
--prefix PATH : ${cadoBinPath}
|
||||
'';
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchzip,
|
||||
stdenvNoCC,
|
||||
|
||||
bash,
|
||||
jdk11,
|
||||
jogl
|
||||
}:
|
||||
let
|
||||
jdk = jdk11;
|
||||
joglJarFiles = [
|
||||
"gluegen-rt-natives-linux-amd64.jar"
|
||||
"gluegen-rt.jar"
|
||||
"jogl-all-natives-linux-amd64.jar"
|
||||
"jogl-all.jar"
|
||||
"nativewindow-awt.jar"
|
||||
"nativewindow-natives-linux-amd64.jar"
|
||||
"nativewindow-os-drm.jar"
|
||||
"nativewindow-os-x11.jar"
|
||||
"nativewindow.jar"
|
||||
];
|
||||
joglJars = lib.strings.concatMapStringsSep ":" (f: "${jogl}/share/java/${f}") joglJarFiles;
|
||||
in stdenvNoCC.mkDerivation rec {
|
||||
pname = "outer-wilds-text-adventure";
|
||||
version = "1.0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://www.mobiusdigitalgames.com/uploads/4/7/3/2/47328935/outerwildstextadventure.application.windows64.zip";
|
||||
hash = "sha256-DZWjAQmraphpBQEKzMWa327DWA3bc8fiSocHe4hF06k=";
|
||||
};
|
||||
|
||||
propagatedNativeBuildInputs = [ jdk jogl ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r data $out/data
|
||||
mkdir -p $out/share
|
||||
cp -r source $out/share
|
||||
mkdir -p $out/share/doc
|
||||
cp SomeContextForTheThingYouJustDownloaded.txt $out/share/doc/README.txt
|
||||
mkdir -p $out/lib
|
||||
for file in core.jar jl1.0.1.jar jsminim.jar minim.jar mp3spi1.9.5.jar OuterWilds_TextAdventure.jar tritonus_aos.jar tritonus_share.jar; do
|
||||
cp "lib/$file" $out/lib
|
||||
done
|
||||
mkdir -p $out/bin
|
||||
cat > $out/bin/outer-wilds-text-adventure <<EOF
|
||||
#!${bash}/bin/bash
|
||||
cd $out
|
||||
exec ${jdk}/bin/java -Djna.nosys=true -Djava.library.path=$out/lib -cp "$out/lib/OuterWilds_TextAdventure.jar:$out/lib/core.jar:$out/lib/jl1.0.1.jar:$out/lib/jsminim.jar:$out/lib/minim.jar:$out/lib/mp3spi1.9.5.jar:$out/lib/tritonus_aos.jar:$out/lib/tritonus_share.jar:${joglJars}" OuterWilds_TextAdventure
|
||||
EOF
|
||||
chmod +x $out/bin/outer-wilds-text-adventure
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Outer Wilds: A Thrilling Graphical Text Adventure";
|
||||
homepage = "https://www.mobiusdigitalgames.com/outer-wilds-text-adventure.html";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromSteam,
|
||||
|
||||
SDL2
|
||||
}:
|
||||
let
|
||||
appId = "1690800";
|
||||
buildId = "15636842";
|
||||
steamworks_sdk = fetchFromSteam {
|
||||
name = "steamworks-sdk";
|
||||
inherit appId;
|
||||
depot = {
|
||||
depotId = "1006";
|
||||
manifestId = "7138471031118904166";
|
||||
};
|
||||
hash = "sha256-OtPI1kAx6+9G09IEr2kYchyvxlPl3rzx/ai/xEVG4oM=";
|
||||
};
|
||||
server_dist = fetchFromSteam {
|
||||
name = "satisfactory-dedicated-server";
|
||||
inherit appId;
|
||||
depot = {
|
||||
depotId = "1690802";
|
||||
manifestId = "1910179703516567959";
|
||||
};
|
||||
hash = "sha256-TxPegZFAwiAzuHgw9xLGr5sAP7KAVMMfPFYL7TRX1O0=";
|
||||
};
|
||||
in stdenv.mkDerivation {
|
||||
pname = "satisfactory-dedicated-server";
|
||||
version = "build-${buildId}";
|
||||
|
||||
src = server_dist;
|
||||
buildInputs = [ steamworks_sdk ];
|
||||
propagatedBuildInputs = [ SDL2 ];
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r . $out/.
|
||||
cp -r ${steamworks_sdk}/linux64 $out
|
||||
|
||||
mkdir -p $out/FactoryGame/Intermediate
|
||||
mkdir -p $out/FactoryGame/Saved
|
||||
|
||||
rm $out/FactoryServer.sh
|
||||
'';
|
||||
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
dontPatchShebangs = true;
|
||||
dontPruneLibtoolFiles = true;
|
||||
|
||||
preFixup = ''
|
||||
echo patching binaries
|
||||
|
||||
chmod +x $out/Engine/Binaries/Linux/FactoryServer-Linux-Shipping
|
||||
|
||||
patchelf --add-needed ${SDL2}/lib/libSDL2-2.0.so.0 \
|
||||
$out/linux64/steamclient.so
|
||||
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--add-needed $out/linux64/steamclient.so \
|
||||
$out/Engine/Binaries/Linux/FactoryServer-Linux-Shipping
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Satisfactory Dedicated Server";
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
/nix/store/j0r1vyd1hd43rjzaday70wny2lhjkc1p-satisfactory-dedicated-server-build-15636842
|
|
@ -1,214 +0,0 @@
|
|||
From ffb6777d58f068db7e14372415154cd93f77766e Mon Sep 17 00:00:00 2001
|
||||
From: roblabla <unfiltered@roblab.la>
|
||||
Date: Wed, 31 Jan 2024 13:19:55 +0100
|
||||
Subject: [PATCH] Use com.google.protobuf:protobuf-gradle-plugin
|
||||
|
||||
---
|
||||
Ghidra/Debug/Debugger-gadp/build.gradle | 7 +-
|
||||
Ghidra/Debug/Debugger-isf/build.gradle | 8 +-
|
||||
Ghidra/Debug/Debugger-rmi-trace/build.gradle | 14 +--
|
||||
build.gradle | 6 ++
|
||||
gradle/hasProtobuf.gradle | 94 --------------------
|
||||
5 files changed, 26 insertions(+), 103 deletions(-)
|
||||
|
||||
diff --git a/Ghidra/Debug/Debugger-gadp/build.gradle b/Ghidra/Debug/Debugger-gadp/build.gradle
|
||||
index 9e1c57faf..3a3242eb5 100644
|
||||
--- a/Ghidra/Debug/Debugger-gadp/build.gradle
|
||||
+++ b/Ghidra/Debug/Debugger-gadp/build.gradle
|
||||
@@ -18,11 +18,16 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
|
||||
-apply from: "${rootProject.projectDir}/gradle/hasProtobuf.gradle"
|
||||
+apply plugin: 'com.google.protobuf'
|
||||
|
||||
apply plugin: 'eclipse'
|
||||
eclipse.project.name = 'Debug Debugger-gadp'
|
||||
|
||||
+buildscript {
|
||||
+ dependencies {
|
||||
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
+ }
|
||||
+}
|
||||
dependencies {
|
||||
api project(':Framework-AsyncComm')
|
||||
api project(':Framework-Debugging')
|
||||
diff --git a/Ghidra/Debug/Debugger-isf/build.gradle b/Ghidra/Debug/Debugger-isf/build.gradle
|
||||
index d135294a0..785681ca2 100644
|
||||
--- a/Ghidra/Debug/Debugger-isf/build.gradle
|
||||
+++ b/Ghidra/Debug/Debugger-isf/build.gradle
|
||||
@@ -18,11 +18,15 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
|
||||
-apply from: "${rootProject.projectDir}/gradle/hasProtobuf.gradle"
|
||||
-
|
||||
+apply plugin: 'com.google.protobuf'
|
||||
apply plugin: 'eclipse'
|
||||
eclipse.project.name = 'Debug Debugger-isf'
|
||||
|
||||
+buildscript {
|
||||
+ dependencies {
|
||||
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
+ }
|
||||
+}
|
||||
dependencies {
|
||||
api project(':Framework-AsyncComm')
|
||||
api project(':Framework-Debugging')
|
||||
diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
|
||||
index 40fbc17ab..7517ffe6e 100644
|
||||
--- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle
|
||||
+++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
|
||||
@@ -18,12 +18,17 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/jacocoProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/javaTestProject.gradle"
|
||||
apply from: "${rootProject.projectDir}/gradle/distributableGhidraModule.gradle"
|
||||
-apply from: "${rootProject.projectDir}/gradle/hasProtobuf.gradle"
|
||||
+apply plugin: 'com.google.protobuf'
|
||||
apply from: "${rootProject.projectDir}/gradle/hasPythonPackage.gradle"
|
||||
|
||||
apply plugin: 'eclipse'
|
||||
eclipse.project.name = 'Debug Debugger-rmi-trace'
|
||||
|
||||
+buildscript {
|
||||
+ dependencies {
|
||||
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
+ }
|
||||
+}
|
||||
dependencies {
|
||||
api project(':Pty')
|
||||
api project(':Debugger')
|
||||
@@ -44,12 +49,9 @@ task generateProtoPy {
|
||||
ext.outdir = file("build/generated/source/proto/main/py")
|
||||
outputs.dir(outdir)
|
||||
inputs.files(src)
|
||||
- dependsOn(configurations.protocArtifact)
|
||||
+ dependsOn(protobuf.generateProtoTasks.all())
|
||||
doLast {
|
||||
- def exe = configurations.protocArtifact.first()
|
||||
- if (!isCurrentWindows()) {
|
||||
- exe.setExecutable(true)
|
||||
- }
|
||||
+ def exe = protobuf.tools.protoc.path
|
||||
exec {
|
||||
commandLine exe, "--python_out=$outdir", "-I$srcdir"
|
||||
args src
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index b0c717fb1..5f56506a5 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -74,6 +74,12 @@ if (flatRepo.isDirectory()) {
|
||||
jcenter()
|
||||
flatDir name: "flat", dirs:["$flatRepo"]
|
||||
}
|
||||
+ buildscript {
|
||||
+ repositories {
|
||||
+ mavenLocal()
|
||||
+ mavenCentral()
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
else {
|
||||
diff --git a/gradle/hasProtobuf.gradle b/gradle/hasProtobuf.gradle
|
||||
index 23b4ce74b..e69de29bb 100644
|
||||
--- a/gradle/hasProtobuf.gradle
|
||||
+++ b/gradle/hasProtobuf.gradle
|
||||
@@ -1,94 +0,0 @@
|
||||
-/* ###
|
||||
- * IP: GHIDRA
|
||||
- *
|
||||
- * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
- * you may not use this file except in compliance with the License.
|
||||
- * You may obtain a copy of the License at
|
||||
- *
|
||||
- * http://www.apache.org/licenses/LICENSE-2.0
|
||||
- *
|
||||
- * Unless required by applicable law or agreed to in writing, software
|
||||
- * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
- * See the License for the specific language governing permissions and
|
||||
- * limitations under the License.
|
||||
- */
|
||||
-/*plugins {
|
||||
- id 'com.google.protobuf' version '0.8.10'
|
||||
-}*/
|
||||
-
|
||||
-configurations {
|
||||
- allProtocArtifacts
|
||||
- protocArtifact
|
||||
-}
|
||||
-
|
||||
-def platform = getCurrentPlatformName()
|
||||
-
|
||||
-
|
||||
-dependencies {
|
||||
- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:windows-x86_64@exe'
|
||||
- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:linux-x86_64@exe'
|
||||
- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:linux-aarch_64@exe'
|
||||
- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:osx-x86_64@exe'
|
||||
- allProtocArtifacts 'com.google.protobuf:protoc:3.21.8:osx-aarch_64@exe'
|
||||
-
|
||||
- if (isCurrentWindows()) {
|
||||
- protocArtifact 'com.google.protobuf:protoc:3.21.8:windows-x86_64@exe'
|
||||
- }
|
||||
- if (isCurrentLinux()) {
|
||||
- if (platform.endsWith("x86_64")) {
|
||||
- protocArtifact 'com.google.protobuf:protoc:3.21.8:linux-x86_64@exe'
|
||||
- }
|
||||
- else {
|
||||
- protocArtifact 'com.google.protobuf:protoc:3.21.8:linux-aarch_64@exe'
|
||||
- }
|
||||
- }
|
||||
- if (isCurrentMac()) {
|
||||
- if (platform.endsWith("x86_64")) {
|
||||
- protocArtifact 'com.google.protobuf:protoc:3.21.8:osx-x86_64@exe'
|
||||
- }
|
||||
- else {
|
||||
- protocArtifact 'com.google.protobuf:protoc:3.21.8:osx-aarch_64@exe'
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-/*protobuf {
|
||||
- protoc {
|
||||
- artifact = 'com.google.protobuf:protoc:3.21.8'
|
||||
- }
|
||||
-}*/
|
||||
-
|
||||
-task generateProto {
|
||||
- ext.srcdir = file("src/main/proto")
|
||||
- ext.src = fileTree(srcdir) {
|
||||
- include "**/*.proto"
|
||||
- }
|
||||
- ext.outdir = file("build/generated/source/proto/main/java")
|
||||
- outputs.dir(outdir)
|
||||
- inputs.files(src)
|
||||
- dependsOn(configurations.protocArtifact)
|
||||
- doLast {
|
||||
- def exe = configurations.protocArtifact.first()
|
||||
- if (!isCurrentWindows()) {
|
||||
- exe.setExecutable(true)
|
||||
- }
|
||||
- exec {
|
||||
- commandLine exe, "--java_out=$outdir", "-I$srcdir"
|
||||
- args src
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-tasks.compileJava.dependsOn(tasks.generateProto)
|
||||
-tasks.eclipse.dependsOn(tasks.generateProto)
|
||||
-rootProject.tasks.prepDev.dependsOn(tasks.generateProto)
|
||||
-
|
||||
-sourceSets {
|
||||
- main {
|
||||
- java {
|
||||
- srcDir tasks.generateProto.outdir
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-zipSourceSubproject.dependsOn generateProto
|
||||
--
|
||||
2.42.0
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
diff --git a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java
|
||||
index ea12a661f0..da7779b07f 100644
|
||||
--- a/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java
|
||||
+++ b/Ghidra/Framework/Utility/src/main/java/utility/application/ApplicationUtilities.java
|
||||
@@ -36,6 +36,10 @@ public class ApplicationUtilities {
|
||||
*/
|
||||
public static Collection<ResourceFile> findDefaultApplicationRootDirs() {
|
||||
Collection<ResourceFile> applicationRootDirs = new ArrayList<>();
|
||||
+ String nixGhidraHome = System.getenv("NIX_GHIDRAHOME");
|
||||
+ if (nixGhidraHome != null) {
|
||||
+ applicationRootDirs.add(new ResourceFile(nixGhidraHome));
|
||||
+ };
|
||||
ResourceFile applicationRootDir = findPrimaryApplicationRootDir();
|
||||
if (applicationRootDir != null) {
|
||||
applicationRootDirs.add(applicationRootDir);
|
|
@ -1,26 +0,0 @@
|
|||
diff --git a/Ghidra/RuntimeScripts/Common/support/buildExtension.gradle b/Ghidra/RuntimeScripts/Common/support/buildExtension.gradle
|
||||
index bc194f219..94b00fabd 100644
|
||||
--- a/Ghidra/RuntimeScripts/Common/support/buildExtension.gradle
|
||||
+++ b/Ghidra/RuntimeScripts/Common/support/buildExtension.gradle
|
||||
@@ -82,7 +82,7 @@ dependencies {
|
||||
helpPath fileTree(dir: ghidraDir + '/Features/Base', include: "**/Base.jar")
|
||||
}
|
||||
|
||||
-def ZIP_NAME_PREFIX = "${DISTRO_PREFIX}_${RELEASE_NAME}_${getCurrentDate()}"
|
||||
+def ZIP_NAME_PREFIX = "${DISTRO_PREFIX}_${RELEASE_NAME}"
|
||||
def DISTRIBUTION_DIR = file("dist")
|
||||
|
||||
def pathInZip = "${project.name}"
|
||||
diff --git a/gradle/root/distribution.gradle b/gradle/root/distribution.gradle
|
||||
index f44c8267b..f6231c417 100644
|
||||
--- a/gradle/root/distribution.gradle
|
||||
+++ b/gradle/root/distribution.gradle
|
||||
@@ -32,7 +32,7 @@ apply from: "$rootProject.projectDir/gradle/support/sbom.gradle"
|
||||
def currentPlatform = getCurrentPlatformName()
|
||||
def PROJECT_DIR = file (rootProject.projectDir.absolutePath)
|
||||
ext.DISTRIBUTION_DIR = file("$buildDir/dist")
|
||||
-ext.ZIP_NAME_PREFIX = "${rootProject.DISTRO_PREFIX}_${rootProject.BUILD_DATE_SHORT}"
|
||||
+ext.ZIP_NAME_PREFIX = "${rootProject.DISTRO_PREFIX}"
|
||||
ext.ZIP_DIR_PREFIX = "${rootProject.DISTRO_PREFIX}"
|
||||
ext.ALL_REPOS = [rootProject.file('.').getName()]
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
unzip,
|
||||
jdk,
|
||||
gradle,
|
||||
ghidra,
|
||||
}:
|
||||
|
||||
let
|
||||
metaCommon =
|
||||
oldMeta:
|
||||
oldMeta
|
||||
// {
|
||||
maintainers = (oldMeta.maintainers or [ ]) ++ (with lib.maintainers; [ vringar ]);
|
||||
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
||||
};
|
||||
|
||||
buildGhidraExtension =
|
||||
{
|
||||
pname,
|
||||
nativeBuildInputs ? [ ],
|
||||
meta ? { },
|
||||
...
|
||||
}@args:
|
||||
stdenv.mkDerivation (
|
||||
args
|
||||
// {
|
||||
nativeBuildInputs = nativeBuildInputs ++ [
|
||||
unzip
|
||||
jdk
|
||||
gradle
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
# Set project name, otherwise defaults to directory name
|
||||
echo -e '\nrootProject.name = "${pname}"' >> settings.gradle
|
||||
# A config directory needs to exist when ghidra's GHelpBuilder is run
|
||||
export XDG_CONFIG_HOME="''${XDG_CONFIG_HOME:-$(mktemp -d)}"
|
||||
${args.preBuild or ""}
|
||||
'';
|
||||
|
||||
# Needed to run gradle on darwin
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
gradleBuildTask = args.gradleBuildTask or "buildExtension";
|
||||
gradleFlags = args.gradleFlags or [ ] ++ [ "-PGHIDRA_INSTALL_DIR=${ghidra}/lib/ghidra" ];
|
||||
|
||||
installPhase =
|
||||
args.installPhase or ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/ghidra/Ghidra/Extensions
|
||||
unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = metaCommon meta;
|
||||
}
|
||||
);
|
||||
|
||||
buildGhidraScripts =
|
||||
{
|
||||
pname,
|
||||
meta ? { },
|
||||
...
|
||||
}@args:
|
||||
stdenv.mkDerivation (
|
||||
args
|
||||
// {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
GHIDRA_HOME=$out/lib/ghidra/Ghidra/Extensions/${pname}
|
||||
mkdir -p $GHIDRA_HOME
|
||||
cp -r . $GHIDRA_HOME/ghidra_scripts
|
||||
|
||||
touch $GHIDRA_HOME/Module.manifest
|
||||
cat <<'EOF' > extension.properties
|
||||
name=${pname}
|
||||
description=${meta.description or ""}
|
||||
author=
|
||||
createdOn=
|
||||
version=${lib.getVersion ghidra}
|
||||
|
||||
EOF
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = metaCommon meta;
|
||||
}
|
||||
);
|
||||
in
|
||||
{
|
||||
inherit buildGhidraExtension buildGhidraScripts;
|
||||
}
|
|
@ -1,253 +0,0 @@
|
|||
{
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
callPackage,
|
||||
gradle,
|
||||
makeBinaryWrapper,
|
||||
openjdk21,
|
||||
unzip,
|
||||
makeDesktopItem,
|
||||
copyDesktopItems,
|
||||
desktopToDarwinBundle,
|
||||
xcbuild,
|
||||
protobuf,
|
||||
ghidra-extensions,
|
||||
python3,
|
||||
python3Packages,
|
||||
}:
|
||||
|
||||
let
|
||||
pname = "ghidra";
|
||||
version = "11.2.1";
|
||||
|
||||
releaseName = "NIX";
|
||||
distroPrefix = "ghidra_${version}_${releaseName}";
|
||||
src = fetchFromGitHub {
|
||||
owner = "NationalSecurityAgency";
|
||||
repo = "Ghidra";
|
||||
rev = "Ghidra_${version}_build";
|
||||
hash = "sha256-UVX56yNZSAbUejiQ0AIn00r7R+fUW1DEjZmCr1iYwV4=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
postFetch = ''
|
||||
cd "$out"
|
||||
git rev-parse HEAD > $out/COMMIT
|
||||
# 1970-Jan-01
|
||||
date -u -d "@$(git log -1 --pretty=%ct)" "+%Y-%b-%d" > $out/SOURCE_DATE_EPOCH
|
||||
# 19700101
|
||||
date -u -d "@$(git log -1 --pretty=%ct)" "+%Y%m%d" > $out/SOURCE_DATE_EPOCH_SHORT
|
||||
find "$out" -name .git -print0 | xargs -0 rm -rf
|
||||
'';
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Use our own protoc binary instead of the prebuilt one
|
||||
./0001-Use-protobuf-gradle-plugin.patch
|
||||
|
||||
# Override installation directory to allow loading extensions
|
||||
./0002-Load-nix-extensions.patch
|
||||
|
||||
# Remove build dates from output filenames for easier reference
|
||||
./0003-Remove-build-datestamp.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Set name of release (eg. PUBLIC, DEV, etc.)
|
||||
sed -i -e 's/application\.release\.name=.*/application.release.name=${releaseName}/' Ghidra/application.properties
|
||||
|
||||
# Set build date and git revision
|
||||
echo "application.build.date=$(cat SOURCE_DATE_EPOCH)" >> Ghidra/application.properties
|
||||
echo "application.build.date.short=$(cat SOURCE_DATE_EPOCH_SHORT)" >> Ghidra/application.properties
|
||||
echo "application.revision.ghidra=$(cat COMMIT)" >> Ghidra/application.properties
|
||||
|
||||
# Tells ghidra to use our own protoc binary instead of the prebuilt one.
|
||||
cat >>Ghidra/Debug/Debugger-gadp/build.gradle <<HERE
|
||||
protobuf {
|
||||
protoc {
|
||||
path = '${protobuf}/bin/protoc'
|
||||
}
|
||||
}
|
||||
HERE
|
||||
'';
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
patches
|
||||
postPatch
|
||||
;
|
||||
|
||||
outputs = [ "out" "lib" "doc" ];
|
||||
|
||||
# Don't create .orig files if the patch isn't an exact match.
|
||||
patchFlags = [
|
||||
"--no-backup-if-mismatch"
|
||||
"-p1"
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "ghidra";
|
||||
exec = "ghidra";
|
||||
icon = "ghidra";
|
||||
desktopName = "Ghidra";
|
||||
genericName = "Ghidra Software Reverse Engineering Suite";
|
||||
categories = [ "Development" ];
|
||||
terminal = false;
|
||||
startupWMClass = "ghidra-Ghidra";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
gradle
|
||||
unzip
|
||||
makeBinaryWrapper
|
||||
copyDesktopItems
|
||||
protobuf
|
||||
python3
|
||||
python3Packages.pip
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
xcbuild
|
||||
desktopToDarwinBundle
|
||||
];
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
mitmCache = gradle.fetchDeps {
|
||||
inherit pname;
|
||||
data = ./deps.json;
|
||||
};
|
||||
|
||||
gradleFlags = [ "-Dorg.gradle.java.home=${openjdk21}" ];
|
||||
|
||||
preBuild = ''
|
||||
export JAVA_TOOL_OPTIONS="-Duser.home=$NIX_BUILD_TOP/home"
|
||||
gradle -I gradle/support/fetchDependencies.gradle
|
||||
'';
|
||||
|
||||
gradleBuildTask = "buildGhidra";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p "$lib/lib/ghidra" "$out/share/applications" "$doc/share/doc"
|
||||
|
||||
ZIP=build/dist/$(ls build/dist)
|
||||
echo $ZIP
|
||||
unzip $ZIP -d "$lib/lib/ghidra"
|
||||
f=("$lib/lib/ghidra"/*)
|
||||
mv "$lib/lib/ghidra"/*/* "$lib/lib/ghidra"
|
||||
rmdir "''${f[@]}"
|
||||
mv "$lib/lib/ghidra/docs" "$doc/share/doc/ghidra"
|
||||
for path in server/svrREADME.html support/GhidraGo/ghidraGoREADME.html support/analyzeHeadlessREADME.html support/buildGhidraJarREADME.txt; do
|
||||
out_path="$(basename "$path")"
|
||||
mv "$lib/lib/ghidra/$path" "$doc/share/doc/ghidra/$out_path"
|
||||
done
|
||||
unzip "$doc/share/doc/ghidra/GhidraAPI_javadoc.zip" -d "$doc/share/doc/ghidra"
|
||||
rm "$doc/share/doc/ghidra/GhidraAPI_javadoc.zip"
|
||||
|
||||
for f in Ghidra/Framework/Gui/src/main/resources/images/GhidraIcon*.png; do
|
||||
res=$(basename "$f" ".png" | cut -d"_" -f3 | cut -c11-)
|
||||
install -Dm444 "$f" "$out/share/icons/hicolor/''${res}x''${res}/apps/ghidra.png"
|
||||
done;
|
||||
# improved macOS icon support
|
||||
install -Dm444 Ghidra/Framework/Gui/src/main/resources/images/GhidraIcon64.png $out/share/icons/hicolor/32x32@2/apps/ghidra.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup =
|
||||
let
|
||||
javaArgs = [
|
||||
"-showversion"
|
||||
"-cp $lib/lib/ghidra/Ghidra/Framework/Utility/lib/Utility.jar"
|
||||
|
||||
"-Djava.system.class.loader=ghidra.GhidraClassLoader"
|
||||
"-Xshare:off"
|
||||
|
||||
"-Dfile.encoding=UTF8"
|
||||
"-Dpython.console.encoding=UTF-8"
|
||||
|
||||
"-Duser.country=US"
|
||||
"-Duser.language=en"
|
||||
"-Duser.variant="
|
||||
|
||||
"-Dsun.java2d.opengl=false"
|
||||
"-Dfont.size.override="
|
||||
|
||||
"-Djdk.tls.client.protocols=TLSv1.2,TLSv1.3"
|
||||
|
||||
"-Dcpu.core.limit="
|
||||
"-Dcpu.core.override="
|
||||
] ++ (lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
"-Xdock:name=$APPNAME"
|
||||
"-Declipse.filelock.disable=true"
|
||||
"-Dapple.laf.useScreenMenuBar=false"
|
||||
"-Dapple.awt.application.appearance=system"
|
||||
]) ++ (lib.optionals stdenv.hostPlatform.isLinux [
|
||||
"-Dsun.java2d.pmoffscreen=false"
|
||||
"-Dsun.java2d.xrender=true"
|
||||
"-Dsun.java2d.uiScale=1"
|
||||
"-Dawt.useSystemAAFontSettings=on"
|
||||
]);
|
||||
in ''
|
||||
mkdir -p "$out/bin"
|
||||
|
||||
APPNAME=Ghidra
|
||||
makeWrapper "${openjdk21}/bin/java" "$out/bin/ghidra" \
|
||||
--set-default NIX_GHIDRAHOME "$lib/lib/ghidra/Ghidra" \
|
||||
--prefix PATH : ${lib.makeBinPath [ openjdk21 ]} \
|
||||
--add-flags "${lib.strings.concatStringsSep " " javaArgs}" \
|
||||
--add-flags "ghidra.Ghidra ghidra.GhidraRun"
|
||||
|
||||
APPNAME=Ghidra-Headless
|
||||
makeWrapper "${openjdk21}/bin/java" "$out/bin/ghidra-analyzeHeadless" \
|
||||
--set-default NIX_GHIDRAHOME "$lib/lib/ghidra/Ghidra" \
|
||||
--prefix PATH : ${lib.makeBinPath [ openjdk21 ]} \
|
||||
--add-flags "${lib.strings.concatStringsSep " " javaArgs}" \
|
||||
--add-flags "-Xmx2G -XX:ParallelGCThreads=2 -XX:CICompilerCount=2" \
|
||||
--add-flags "ghidra.Ghidra ghidra.app.util.headless.AnalyzeHeadless"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit releaseName distroPrefix;
|
||||
inherit (ghidra-extensions.override { ghidra = finalAttrs.finalPackage; })
|
||||
buildGhidraExtension
|
||||
buildGhidraScripts
|
||||
;
|
||||
|
||||
withExtensions = callPackage ./with-extensions.nix { ghidra = finalAttrs.finalPackage; };
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
changelog = "https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_${finalAttrs.version}_build/Ghidra/Configurations/Public_Release/src/global/docs/ChangeHistory.html";
|
||||
description = "Software reverse engineering (SRE) suite of tools";
|
||||
mainProgram = "ghidra";
|
||||
homepage = "https://ghidra-sre.org/";
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
sourceProvenance = with sourceTypes; [
|
||||
fromSource
|
||||
binaryBytecode # deps
|
||||
];
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [
|
||||
roblabla
|
||||
vringar
|
||||
];
|
||||
broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
|
||||
};
|
||||
})
|
|
@ -1,754 +0,0 @@
|
|||
{
|
||||
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||
"!version": 1,
|
||||
"https://archive.eclipse.org": {
|
||||
"tools/cdt/releases/8.6/cdt-8.6.0": {
|
||||
"zip": "sha256-gbfRnVfEowCfR2FpmnLo1kK14dklHSu5jfQ4seKPi6k="
|
||||
}
|
||||
},
|
||||
"https://files.pythonhosted.org/packages": {
|
||||
"27/d6/003e593296a85fd6ed616ed962795b2f87709c3eee2bca4f6d0fe55c6d00/wheel-0.37.1-py2.py3-none-any": {
|
||||
"whl": "sha256-S9zX2EATgIYSbNCSVNxhlftPxvAcBQodcjbyYw2x0io="
|
||||
},
|
||||
"50/8f/518a37381e55a8857a638afa86143efa5508434613541402d20611a1b322/comtypes-1.4.1-py3-none-any": {
|
||||
"whl": "sha256-ogig48ocClNic12g/2YYIoAdzocxK4lNfXUq3QEKIbA="
|
||||
},
|
||||
"83/1c/25b79fc3ec99b19b0a0730cc47356f7e2959863bf9f3cd314332bddb4f68/pywin32-306-cp312-cp312-win_amd64": {
|
||||
"whl": "sha256-NyV3lMGtOe6b5lLaBGLcLjlMgVnf2ROopOjrb9NG2g4="
|
||||
},
|
||||
"8d/14/619e24a4c70df2901e1f4dbc50a6291eb63a759172558df326347dce1f0d/protobuf-3.20.3-py2.py3-none-any": {
|
||||
"whl": "sha256-p8ptSIqo/38ynUxUWy262KwxRk8dixyHrRNGcXcx5Ns="
|
||||
},
|
||||
"90/c7/6dc0a455d111f68ee43f27793971cf03fe29b6ef972042549db29eec39a2/psutil-5.9.8": {
|
||||
"tar.gz": "sha256-a+Em4yJUht/yhqj7mgYkalJT9MfFO0depfWsk05kGUw="
|
||||
},
|
||||
"c7/42/be1c7bbdd83e1bfb160c94b9cafd8e25efc7400346cf7ccdbdb452c467fa/setuptools-68.0.0-py3-none-any": {
|
||||
"whl": "sha256-EeUsZ0FaOB0Q1rRiztnPuXBmF58OhxOZ4AbEqxAfyF8="
|
||||
},
|
||||
"ce/78/91db67e7fe1546dc8b02c38591b7732980373d2d252372f7358054031dd4/Pybag-2.2.12-py3-none-any": {
|
||||
"whl": "sha256-7aXubE6HOQKYG39SW0KgJCi4fHNo3yxb3+He0OaIQSY="
|
||||
},
|
||||
"d0/dd/b28df50316ca193dd1275a4c47115a720796d9e1501c1888c4bfa5dc2260/capstone-5.0.1-py3-none-win_amd64": {
|
||||
"whl": "sha256-G/pcgeaIDK9BoxlGzW0tBpwEi8wi7fEhJUtQGgSN5nU="
|
||||
}
|
||||
},
|
||||
"https://ftp.postgresql.org": {
|
||||
"pub/source/v15.3/postgresql-15.3": {
|
||||
"tar.gz": "sha256-CG04Uz4odHlmpNXx546kMuM6ePIdy5EzAQ7LUYn62Yw="
|
||||
}
|
||||
},
|
||||
"https://github.com": {
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2012_x64": {
|
||||
"fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2012_x86": {
|
||||
"fidb": "sha256-pJDtfi7SHlh0Wf6urOcDa37eTOhOcuEN/YxXQ0ppGLY="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2015_x64": {
|
||||
"fidb": "sha256-4E6eQPnstgHIX02E7Zv2a0U2O+HR6CwWLkyZArjLUI8="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2015_x86": {
|
||||
"fidb": "sha256-tm7mlmU+LtNlkZ3qrviFEDEgx5LiLnmvcNEgnX4dhkQ="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2017_x64": {
|
||||
"fidb": "sha256-1fpfaXKYF0+lPSR9NZnmoSiEYFrRgce5VOI4DsHwvYk="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2017_x86": {
|
||||
"fidb": "sha256-04nLjXb/SlnKNfiRuFIccq1fDfluJTlzotIahhSkzIE="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2019_x64": {
|
||||
"fidb": "sha256-FQAHeW/DakBpZgrWJEmq2q890Rs4ZKXvIeeYMcnOkRg="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vs2019_x86": {
|
||||
"fidb": "sha256-62MKNvqlhqNx63NNwLvY0TzK72l/PbWHJZY1jz3SQyo="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vsOlder_x64": {
|
||||
"fidb": "sha256-jDtR9GYM0n4aDWEKnz8tX7yDOmasnuQ5PuLySB6FWGY="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/FunctionID/vsOlder_x86": {
|
||||
"fidb": "sha256-mGBca2uSFKlF2ETkHIWGDVRkmkW8p4c+9pkcDpNyB4c="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2.1/lib/java-sarif-2.1-modified": {
|
||||
"jar": "sha256-f3NlZklHVtJxql5LGvbIncUNB0qxxjdKR9+CImQiawE="
|
||||
},
|
||||
"pxb1988/dex2jar/releases/download/v2.1/dex2jar-2.1": {
|
||||
"zip": "sha256-epvfhD1D3k0elOwue29VglAXsMSn7jn/gmYOJJOkbwg="
|
||||
}
|
||||
},
|
||||
"https://repo.maven.apache.org/maven2": {
|
||||
"biz/aQute/bnd#biz.aQute.bnd.util/7.0.0": {
|
||||
"jar": "sha256-OVddFQJJliqcbUbM5+Zy53fIqGIKHS0iDH8sCnmediM=",
|
||||
"pom": "sha256-+dgDJLl2Hp3ipFoP6naPWZRH9AxuQZ8gje2MrxIYAMU="
|
||||
},
|
||||
"biz/aQute/bnd#biz.aQute.bndlib/7.0.0": {
|
||||
"jar": "sha256-gKVp0AbzLpJc7kzor5Jrfm/aqqtcy/1f5MnN/5xN0t8=",
|
||||
"pom": "sha256-mOuywO2iBtxb79bFJsjCAneApDvymekXyzwDXwOYp9I="
|
||||
},
|
||||
"com/beust#jcommander/1.64": {
|
||||
"jar": "sha256-FWvnNhmcmQMh2f93CQsZlinPyYZeLWwT980pG7FkGBc=",
|
||||
"pom": "sha256-F84MMunPlTZ4+CCuXyrZLu85bYQPZn/JnyOtwK0l0yg="
|
||||
},
|
||||
"com/formdev#flatlaf/3.2.1": {
|
||||
"jar": "sha256-fYMX/hOyYIiZTWZmOvjofBI5DugIf3unS2hjj0pV9EA=",
|
||||
"module": "sha256-kU7FLZBJj8ctFju0F1UhHnW7yfy3ip5wTZn/Mvfzywg=",
|
||||
"pom": "sha256-uKf+YYO269HIAaqwdGnF2UFRQFSftLdpkqyALuJeGtE="
|
||||
},
|
||||
"com/github/rotty3000#phidias/0.3.7": {
|
||||
"jar": "sha256-yNB2DOOw7RRT1DW83THjTwvjrAkCTn4amLijzr9Ka7U=",
|
||||
"pom": "sha256-FY+kDQZfFCR5B7aSIiRY152eFjsTz1tfrHvgIkLMK60="
|
||||
},
|
||||
"com/github/tomnelson#jungrapht-layout/1.4": {
|
||||
"jar": "sha256-owQBKdw57SMms2yhXGNEIu5XmkYXhmj5lELjiz5gcJk=",
|
||||
"pom": "sha256-TO0lLb8YrUWTvoW6bWycCdvB7tZEjZtZneziavTnyN4="
|
||||
},
|
||||
"com/github/tomnelson#jungrapht-visualization-parent/1.4": {
|
||||
"pom": "sha256-s5gyFq8VA62ryVOkKXKO1kpORbvDj++2wgOiiUPCq+w="
|
||||
},
|
||||
"com/github/tomnelson#jungrapht-visualization/1.4": {
|
||||
"jar": "sha256-lwU6HdLNqyY/tWEfG8grhiswmflR480FZOPiPRk/Tdg=",
|
||||
"pom": "sha256-YE8saHqHsq0L90QETPJmynWuKdPPCa383C5WEjDOtoY="
|
||||
},
|
||||
"com/google/code/findbugs#jsr305/3.0.2": {
|
||||
"jar": "sha256-dmrSoHg/JoeWLIrXTO7MOKKLn3Ki0IXuQ4t4E+ko0Mc=",
|
||||
"pom": "sha256-GYidvfGyVLJgGl7mRbgUepdGRIgil2hMeYr+XWPXjf4="
|
||||
},
|
||||
"com/google/code/gson#gson-parent/2.9.0": {
|
||||
"pom": "sha256-r3gcmldm/+oxGg3wU2V2pk3sxmGqEQxN5cc6yL9DRCQ="
|
||||
},
|
||||
"com/google/code/gson#gson/2.9.0": {
|
||||
"jar": "sha256-yW1gVRMxoZbaxUt0WqZCzQeO+JtvJnFGtwXywsvvBS0=",
|
||||
"pom": "sha256-cZDQsH8njp9MYD9E5UOUD4HPGiVZ+FHG8pjJuyvil4w="
|
||||
},
|
||||
"com/google/errorprone#error_prone_annotations/2.2.0": {
|
||||
"jar": "sha256-br0iyhudjsBtQd6NZOBZaYHZYHtCA1+e03T53icaSBo=",
|
||||
"pom": "sha256-XgJY6huk5RoTN0JoC8IkSPerIUvkBz6GGfZF7xvkLdU="
|
||||
},
|
||||
"com/google/errorprone#error_prone_annotations/2.21.1": {
|
||||
"jar": "sha256-0fPGaqkaxSVJ4Arjsgi6S5r31y1o8jBkNVO+s45hGKw=",
|
||||
"pom": "sha256-9ZiID+766p1nTcQdsTqzcAS/A3drW7IcBN7ejpIMHxI="
|
||||
},
|
||||
"com/google/errorprone#error_prone_parent/2.2.0": {
|
||||
"pom": "sha256-xGCQLd9ezmiDLGsnHOUqCSiwXPOmrIGo9UjHPL1UETg="
|
||||
},
|
||||
"com/google/errorprone#error_prone_parent/2.21.1": {
|
||||
"pom": "sha256-MrsLX/JB/Wuh/upEiuu5zt7xaZvnPLbzGTZTh7gr+Sw="
|
||||
},
|
||||
"com/google/gradle#osdetector-gradle-plugin/1.7.0": {
|
||||
"jar": "sha256-29oheMFO1rk6GEsay/ONchBwAiUmaMERz0EeyjfkHKY=",
|
||||
"pom": "sha256-6BYywu6apI5+zwVHUSwcOGVgwNRqlY7lBVD3693xNRc="
|
||||
},
|
||||
"com/google/guava#failureaccess/1.0.1": {
|
||||
"jar": "sha256-oXHuTHNN0tqDfksWvp30Zhr6typBra8x64Tf2vk2yiY=",
|
||||
"pom": "sha256-6WBCznj+y6DaK+lkUilHyHtAopG1/TzWcqQ0kkEDxLk="
|
||||
},
|
||||
"com/google/guava#guava-parent/19.0": {
|
||||
"pom": "sha256-O3b/Q+zfEPdNo25KritHDJ0GPgU8XKAm9VEq6U8cPhA="
|
||||
},
|
||||
"com/google/guava#guava-parent/26.0-android": {
|
||||
"pom": "sha256-+GmKtGypls6InBr8jKTyXrisawNNyJjUWDdCNgAWzAQ="
|
||||
},
|
||||
"com/google/guava#guava-parent/27.0.1-jre": {
|
||||
"pom": "sha256-MX6IKRJi4M8oBelWwYhQ8dRWXIXC4REvXZ0Iqxcy5pY="
|
||||
},
|
||||
"com/google/guava#guava-parent/27.1-android": {
|
||||
"pom": "sha256-1oF79aZ2AKOTpoA9UfR8159KXth1cqg3K++S4nNRgXI="
|
||||
},
|
||||
"com/google/guava#guava-parent/32.1.3-jre": {
|
||||
"pom": "sha256-8oPB8EiXqaiKP6T/RoBOZeghFICaCc0ECUv33gGxhXs="
|
||||
},
|
||||
"com/google/guava#guava/19.0": {
|
||||
"pom": "sha256-rdwGTafxB3/fTckOWqqIfNeQhQ0bdP4ubiXV94VRrGM="
|
||||
},
|
||||
"com/google/guava#guava/27.0.1-jre": {
|
||||
"jar": "sha256-4cgU/QRJKifDjgMX6r6qGz6VDsgBAjnkAP6QrWyRB7Q=",
|
||||
"pom": "sha256-ao3QQfI6a7FKhuRA/MuZNTe2InE1eg2sCjyw/zkVjzY="
|
||||
},
|
||||
"com/google/guava#guava/27.1-android": {
|
||||
"pom": "sha256-KUYNJundBml2Ak+RJoMlzxHzkScNiPi1MewGQqNbwNw="
|
||||
},
|
||||
"com/google/guava#guava/32.1.3-jre": {
|
||||
"jar": "sha256-bU4rWhGKq2Lm5eKdGFoCJO7YLIXECsPTPPBKJww7N0Q=",
|
||||
"module": "sha256-9f/3ZCwS52J7wUKJ/SZ+JgLBf5WQ4jUiw+YxB/YcKUI=",
|
||||
"pom": "sha256-cA5tRudbWTmiKkHCXsK7Ei88vvTv7UXjMS/dy+mT2zM="
|
||||
},
|
||||
"com/google/guava#listenablefuture/9999.0-empty-to-avoid-conflict-with-guava": {
|
||||
"jar": "sha256-s3KgN9QjCqV/vv/e8w/WEj+cDC24XQrO0AyRuXTzP5k=",
|
||||
"pom": "sha256-GNSx2yYVPU5VB5zh92ux/gXNuGLvmVSojLzE/zi4Z5s="
|
||||
},
|
||||
"com/google/j2objc#j2objc-annotations/1.1": {
|
||||
"jar": "sha256-KZSn63jycQvT07+2ObLJTiGc7awNTQhNUW54wW3d7PY=",
|
||||
"pom": "sha256-8MmMVx6Tp8tN0Y3w+jCPCWPnoGIKwtQkTmHnCdA61r4="
|
||||
},
|
||||
"com/google/j2objc#j2objc-annotations/2.8": {
|
||||
"jar": "sha256-8CqV+hpele2z7YWf0Pt99wnRIaNSkO/4t03OKrf01u0=",
|
||||
"pom": "sha256-N/h3mLGDhRE8kYv6nhJ2/lBzXvj6hJtYAMUZ1U2/Efg="
|
||||
},
|
||||
"com/google/protobuf#protobuf-bom/3.17.3": {
|
||||
"pom": "sha256-bf431vImF9VqQUzNrf+NmFhaH3kXEr6HbCYWZxDR2N0="
|
||||
},
|
||||
"com/google/protobuf#protobuf-bom/3.21.8": {
|
||||
"pom": "sha256-+7Ds/DyjGFddtifjOuRUwT1qTcp68UXRTT9m4IY8PPo="
|
||||
},
|
||||
"com/google/protobuf#protobuf-gradle-plugin/0.8.18": {
|
||||
"jar": "sha256-RP2JrzepsvHdQcCUqbtzPAe/f8eg4jhooQuvbjUfpeA=",
|
||||
"pom": "sha256-Gwqekab09LYqWmB4wibudwqo3FdnueRzwvwY8KOImAQ="
|
||||
},
|
||||
"com/google/protobuf#protobuf-java/3.17.3": {
|
||||
"jar": "sha256-SsVJsZJpQUGVgEnwYKHIJqMzQvYZ4QjO2MF9mHf14+0=",
|
||||
"pom": "sha256-Km8izVJli4uxTBANs+F5NT+MNR0ENzo79voKOzlGStw="
|
||||
},
|
||||
"com/google/protobuf#protobuf-java/3.21.8": {
|
||||
"jar": "sha256-C4WBrYENLfrv0Nz78VabFFBEhlAjjX4v1rF2yTLQjJU=",
|
||||
"pom": "sha256-OJBUBuApx6MYaW8O4RnFXM7HizN+oR5MMZWfDgardAg="
|
||||
},
|
||||
"com/google/protobuf#protobuf-parent/3.17.3": {
|
||||
"pom": "sha256-T09Q5moqvM/o7SCbU/q3C4k+NfQ77FqB98GESbY+hrE="
|
||||
},
|
||||
"com/google/protobuf#protobuf-parent/3.21.8": {
|
||||
"pom": "sha256-bHKyrDl1sAnR5FdQlVnp+onyV4vShD3LTWo+XPgRFws="
|
||||
},
|
||||
"com/googlecode/json-simple#json-simple/1.1.1": {
|
||||
"jar": "sha256-TmlpaJK4i0HFXUmrL9zCHurZK/VKzFiMAFBZbDt1GZw=",
|
||||
"pom": "sha256-Zl9jWQ3vtj1irdIdNSU2LPk3z2ocBeSwFFuujailf4M="
|
||||
},
|
||||
"com/h2database#h2/2.2.220": {
|
||||
"jar": "sha256-l4q4YwGNP5ZeOIgFccNik+qLEKgIYZQVnE1dILUPClc=",
|
||||
"pom": "sha256-tbp8XBcINbyupnWMWfo8EOvNepx5LiWzm4a559X72Mo="
|
||||
},
|
||||
"com/jcraft#jsch/0.1.55": {
|
||||
"jar": "sha256-1JKxWm0uo/HMOcQiyVPEDBIokHPb6DYNmMD2+ex0/EQ=",
|
||||
"pom": "sha256-dHx0jR8BBx6j0PhHb2jUqCOjE7dycB2FUck+qqV/n5k="
|
||||
},
|
||||
"com/opencsv#opencsv/5.4": {
|
||||
"jar": "sha256-n94e8+VEQE406u4V5L97p0uANV15gJOwUk1jpZk2JCs=",
|
||||
"pom": "sha256-uGQpmn0KIQIKgxaZQ499P4VAirJKNOkR+qmf9oTrdv0="
|
||||
},
|
||||
"com/oracle/labs/olcut#olcut-config-protobuf/5.2.0": {
|
||||
"jar": "sha256-xmqG5GT9gi9xzu6JuSU3l8Pc/fZWxNsr+W2kceuXs8o=",
|
||||
"pom": "sha256-JCBA8xgQ+I6pnGF7RUBrhmdtOvJa7jzZIoysQpd0zmk="
|
||||
},
|
||||
"com/oracle/labs/olcut#olcut-core/5.2.0": {
|
||||
"jar": "sha256-5T6OCQrUJo0iqlPgaCu76rHIHiyoRBP6Q2AqQWP2vhk=",
|
||||
"pom": "sha256-G912ta/r+7rg+FHQjJ46WmgwP40cMHY4rxuChHVvCgM="
|
||||
},
|
||||
"com/oracle/labs/olcut#olcut/5.2.0": {
|
||||
"pom": "sha256-SRIriefVQhUkr5IsQrsnF0x7vhL2oKKWwiEJgIUW/B4="
|
||||
},
|
||||
"commons-beanutils#commons-beanutils/1.9.4": {
|
||||
"jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
|
||||
"pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
|
||||
},
|
||||
"commons-collections#commons-collections/3.2.2": {
|
||||
"jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=",
|
||||
"pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws="
|
||||
},
|
||||
"commons-io#commons-io/2.11.0": {
|
||||
"jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=",
|
||||
"pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k="
|
||||
},
|
||||
"commons-lang#commons-lang/2.6": {
|
||||
"jar": "sha256-UPEbCfh3wpTVbyRGP0fSj5Kc9QRPZIZhwPDPuumi9Jw=",
|
||||
"pom": "sha256-7Xa4iRwwtWYonHQ2Vvik1DWYaYJDjUDFZ8YmIzJH5xE="
|
||||
},
|
||||
"commons-logging#commons-logging/1.2": {
|
||||
"jar": "sha256-2t3qHqC+D1aXirMAa4rJKDSv7vvZt+TmMW/KV98PpjY=",
|
||||
"pom": "sha256-yRq1qlcNhvb9B8wVjsa8LFAIBAKXLukXn+JBAHOfuyA="
|
||||
},
|
||||
"javax/help#javahelp/2.0.05": {
|
||||
"jar": "sha256-/PSSLTj/hRhPHSMoMXu2CCbhTalIq9YG7j1bjGpw3r0=",
|
||||
"pom": "sha256-uIEr4lGsoTl/S2pCO/Tt06KERONFOyIDtTSTNrmVgik="
|
||||
},
|
||||
"junit#junit/4.10": {
|
||||
"jar": "sha256-NqdHyh4LhvbqiAVbhyO7hwMNYndm2mKIvwd6/e6w91o=",
|
||||
"pom": "sha256-IqG/C6rothBretgCbs8nxZ5+R920nWKXUDa+rbLGLrU="
|
||||
},
|
||||
"junit#junit/4.12": {
|
||||
"jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
|
||||
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
|
||||
},
|
||||
"kr/motd/maven#os-maven-plugin/1.7.0": {
|
||||
"jar": "sha256-lDBTUBpCnlPRxNYhUu7BJfo2Yg4NxmtzkKiVCXz96s4=",
|
||||
"pom": "sha256-xPVqjuqlJp76BdsB4xMJBf9b24frKuPnZhVOmuoYO6Y="
|
||||
},
|
||||
"msv#isorelax/20050913": {
|
||||
"jar": "sha256-NCcVJDHPf5Z/kuaeXKwWFHxdj7S05ainL1KReI78/4w=",
|
||||
"pom": "sha256-u54IxYm/b2BxTQ+dMcLtdwPK9nf+muOSFrzKt3SkfNk="
|
||||
},
|
||||
"msv#msv/20050913": {
|
||||
"jar": "sha256-FL46VQ5QhDO0/hB3XVQOnrWLPvBO10Vrx8fShckMh6I=",
|
||||
"pom": "sha256-eoaknOHugXmjgCLiMZHkjPW1fkEEr2tXSJ3bjN7GoNY="
|
||||
},
|
||||
"msv#relaxngDatatype/20050913": {
|
||||
"jar": "sha256-TUWpPrXNwyYxlmZzyVS4P8m2CgaBu93O+ixJdtBM3fI=",
|
||||
"pom": "sha256-F/kF72gZZRismj53oNXlGY1g9D/8kEsiCcoEZhfyLfk="
|
||||
},
|
||||
"msv#xsdlib/20050913": {
|
||||
"jar": "sha256-a476GP9XDAkW2nAsRpBrnooTnhwF2/Hk2L3rokTBsrM=",
|
||||
"pom": "sha256-Ti8Z4AifVdrd/gOXbyhwCXvAaJcWVQ/p3r10KwrKZ5Y="
|
||||
},
|
||||
"net/java/dev/javacc#javacc/5.0": {
|
||||
"jar": "sha256-cRExYbyM9mQVFVQcKBgCi4fHjsLo/6p1MXaG7giWe4k=",
|
||||
"pom": "sha256-lBZg1Hgi+cDYDUDqBtSYH83CuHzGJTgbVF79fmtEnO8="
|
||||
},
|
||||
"net/java/dev/jna#jna-platform/5.14.0": {
|
||||
"jar": "sha256-rkys6zhAcwwlN/m3+1WgG6ulgChrQSKVFIi87lWMJEk=",
|
||||
"pom": "sha256-bLoOBPnuyxZIYAB5O7J+EDsPTQSF4FVOK0wK7RPS7RY="
|
||||
},
|
||||
"net/java/dev/jna#jna/5.14.0": {
|
||||
"jar": "sha256-NO0eHyf6iWvKUNvE6ZzzcylnzsOHp6DV40hsCWc/6MY=",
|
||||
"pom": "sha256-4E4llRUB3yWtx7Hc22xTNzyUiXuE0+FJISknY+4Hrj0="
|
||||
},
|
||||
"net/java/dev/timingframework#timingframework/1.0": {
|
||||
"jar": "sha256-dGHpJGw7BRkWRaf5TBBGgMwxhlu02RIIKsAv93Egz0s=",
|
||||
"pom": "sha256-EHm33r9dRb/PyG6euBCvHRhqN11glaDpHKKM2a8pwtA="
|
||||
},
|
||||
"net/sf/jung#jung-algorithms/2.1.1": {
|
||||
"jar": "sha256-7ROOL2srLxOvYaE/F4i85vHeiFjELucKfUHmKDk3owo=",
|
||||
"pom": "sha256-INw/C+7taPkCw/AtO6qJ8eI0xNSWeyIS15HBjw/a6Qs="
|
||||
},
|
||||
"net/sf/jung#jung-api/2.1.1": {
|
||||
"jar": "sha256-bLc1ljw21RVdDeXxmgNIW5om5nVQ4WCz3YkAmm9RaU4=",
|
||||
"pom": "sha256-3vtMVoVkg6Trdxnh4WiqYKtjnkPJJRKGZYNzLyPxOgs="
|
||||
},
|
||||
"net/sf/jung#jung-graph-impl/2.1.1": {
|
||||
"jar": "sha256-SRHaBNd7T3u0ZaZa48w6AAyuTVK1h5EePAtMS2Q0k8E=",
|
||||
"pom": "sha256-DXLiLd6PiBAEu7aagzjuxtnpGTlg9BRDOBlhYPhJqLQ="
|
||||
},
|
||||
"net/sf/jung#jung-parent/2.1.1": {
|
||||
"pom": "sha256-os5T0/ynH/HQQ3FfmhowSo5KrhwGRa2QOMrkxSE2i+Q="
|
||||
},
|
||||
"net/sf/jung#jung-visualization/2.1.1": {
|
||||
"jar": "sha256-kzuibCMIw79FZsOCiXm2itdCJyRXFxLlrw3odr3/oq4=",
|
||||
"pom": "sha256-ayUROtpk+JgoOQmGsyWE0nNsBE+7iVz1Bo6BQWo9l+w="
|
||||
},
|
||||
"net/sf/sevenzipjbinding#sevenzipjbinding-all-platforms/16.02-2.01": {
|
||||
"jar": "sha256-cvq1Op0x4W1lP+H0AAEdAqf2vGqR6GNLXPrVzhXUZ7s=",
|
||||
"pom": "sha256-u3FCxepITF/phCbcFezhuYu/3UZTRWqI2idCHXJnAmU="
|
||||
},
|
||||
"net/sf/sevenzipjbinding#sevenzipjbinding/16.02-2.01": {
|
||||
"jar": "sha256-Ezyj9pyMc12Jl8CUd1BPSKny5h6ntwSzcUqQZrHvuI4=",
|
||||
"pom": "sha256-pdF4WGwNvc4V3cKlKBaE04ek8jW10bklWzls7TaWhcE="
|
||||
},
|
||||
"org/antlr#ST4/4.0.8": {
|
||||
"jar": "sha256-WMqrxAyfdLC1mT/YaOD2SlDAdZCU5qJRqq+tmO38ejs=",
|
||||
"pom": "sha256-PAiQ3scRdOs7o9QEyp40GQH/awQhgIsAcTsNuxMGwXw="
|
||||
},
|
||||
"org/antlr#antlr-master/3.5.2": {
|
||||
"pom": "sha256-QtkaUx6lEA6wm1QaoALDuQjo8oK9c7bi9S83HvEzG9Y="
|
||||
},
|
||||
"org/antlr#antlr-runtime/3.5.2": {
|
||||
"jar": "sha256-zj/I7LEPOemjzdy7LONQ0nLZzT0LHhjm/nPDuTichzQ=",
|
||||
"pom": "sha256-RqnCIAu4sSvXEkqnpQl/9JCZkIMpyFGgTLIFFCCqfyU="
|
||||
},
|
||||
"org/antlr#antlr/3.5.2": {
|
||||
"jar": "sha256-WsNsKs+woPPTfa/iC1tXDyZD4tAAxkjURQPCc4vmQ98=",
|
||||
"pom": "sha256-Bl5egGYv64WHldPAH3cUJHvdMZRZcF7hOxpLGWj6IuQ="
|
||||
},
|
||||
"org/apache#apache/13": {
|
||||
"pom": "sha256-/1E9sDYf1BI3vvR4SWi8FarkeNTsCpSW+BEHLMrzhB0="
|
||||
},
|
||||
"org/apache#apache/16": {
|
||||
"pom": "sha256-n4X/L9fWyzCXqkf7QZ7n8OvoaRCfmKup9Oyj9J50pA4="
|
||||
},
|
||||
"org/apache#apache/19": {
|
||||
"pom": "sha256-kfejMJbqabrCy69tAf65NMrAAsSNjIz6nCQLQPHsId8="
|
||||
},
|
||||
"org/apache#apache/21": {
|
||||
"pom": "sha256-rxDBCNoBTxfK+se1KytLWjocGCZfoq+XoyXZFDU3s4A="
|
||||
},
|
||||
"org/apache#apache/23": {
|
||||
"pom": "sha256-vBBiTgYj82V3+sVjnKKTbTJA7RUvttjVM6tNJwVDSRw="
|
||||
},
|
||||
"org/apache#apache/27": {
|
||||
"pom": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk="
|
||||
},
|
||||
"org/apache#apache/7": {
|
||||
"pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU="
|
||||
},
|
||||
"org/apache/commons#commons-collections4/4.1": {
|
||||
"jar": "sha256-sf6LWWi1fYRlQlNX7S2dxpVQRRi+0t9bVlxLjmjByKU=",
|
||||
"pom": "sha256-wK1C6RA1N5YNmnTaWOzCTdGjehPR5MSPCWm+k+QBg2k="
|
||||
},
|
||||
"org/apache/commons#commons-collections4/4.4": {
|
||||
"jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=",
|
||||
"pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0="
|
||||
},
|
||||
"org/apache/commons#commons-compress/1.21": {
|
||||
"jar": "sha256-auz9VFlyillWAc+gcljRMZcv/Dm0kutIvdWWV3ovJEo=",
|
||||
"pom": "sha256-Z1uwI8m+7d4yMpSZebl0Kl/qlGKApVobRi1Mp4AQiM0="
|
||||
},
|
||||
"org/apache/commons#commons-dbcp2/2.9.0": {
|
||||
"jar": "sha256-iHcgkSxcu83/bg4h1QNJN1Vfj/xZc4Hv+Pp38zzm1k4=",
|
||||
"pom": "sha256-XtPwH1ee+0xru81m9VnpwV6ZwUCVeeAZG7pUHF/meYY="
|
||||
},
|
||||
"org/apache/commons#commons-lang3/3.11": {
|
||||
"pom": "sha256-mA1mXYP+0EZlE08FeOUHRCoOdQaRBzeEORsKeYhySnU="
|
||||
},
|
||||
"org/apache/commons#commons-lang3/3.12.0": {
|
||||
"jar": "sha256-2RnZBEhsA3+NGTQS2gyS4iqfokIwudZ6V4VcXDHH6U4=",
|
||||
"pom": "sha256-gtMfHcxFg+/9dE6XkWWxbaZL+GvKYj/F0bA+2U9FyFo="
|
||||
},
|
||||
"org/apache/commons#commons-lang3/3.9": {
|
||||
"pom": "sha256-pAIkKbmEJbQwGBkVchJ5pS9hDzRki9rEh9TKy76N/rU="
|
||||
},
|
||||
"org/apache/commons#commons-parent/17": {
|
||||
"pom": "sha256-lucYuvU0h07mLOTULeJl8t2s2IORpUDgMNWdmPp8RAg="
|
||||
},
|
||||
"org/apache/commons#commons-parent/34": {
|
||||
"pom": "sha256-Oi5p0G1kHR87KTEm3J4uTqZWO/jDbIfgq2+kKS0Et5w="
|
||||
},
|
||||
"org/apache/commons#commons-parent/38": {
|
||||
"pom": "sha256-VY2WF0Xrrcxdw5HP3n1HQIbUyq7iTdPm35Me2fa1tJU="
|
||||
},
|
||||
"org/apache/commons#commons-parent/39": {
|
||||
"pom": "sha256-h80n4aAqXD622FBZzphpa7G0TCuLZQ8FZ8ht9g+mHac="
|
||||
},
|
||||
"org/apache/commons#commons-parent/47": {
|
||||
"pom": "sha256-io7LVwVTv58f+uIRqNTKnuYwwXr+WSkzaPunvZtC/Lc="
|
||||
},
|
||||
"org/apache/commons#commons-parent/48": {
|
||||
"pom": "sha256-Hh996TcKe3kB8Sjx2s0UIr504/R/lViw954EwGN8oLQ="
|
||||
},
|
||||
"org/apache/commons#commons-parent/51": {
|
||||
"pom": "sha256-m3edGLItjeVZYFVY57sKCjGz8Awqu5yHgRfDmKrKvso="
|
||||
},
|
||||
"org/apache/commons#commons-parent/52": {
|
||||
"pom": "sha256-ddvo806Y5MP/QtquSi+etMvNO18QR9VEYKzpBtu0UC4="
|
||||
},
|
||||
"org/apache/commons#commons-parent/54": {
|
||||
"pom": "sha256-AA2Bh5UrIjcC/eKW33mVY/Nd6CznKttOe/FXNCN4++M="
|
||||
},
|
||||
"org/apache/commons#commons-pool2/2.11.1": {
|
||||
"jar": "sha256-6gUF7nUV5YsawOaG5NGl2ffYCOJRphvDcaoFlbmWP4M=",
|
||||
"pom": "sha256-wbsCmUpK34loDfepitujPFUnaDAUJy1liFuzA27NSMM="
|
||||
},
|
||||
"org/apache/commons#commons-text/1.10.0": {
|
||||
"jar": "sha256-dwzZA/p7YE0ffve6F/hBCGZylLK0eL6O0a87/7SuABg=",
|
||||
"pom": "sha256-OI3VI0i6GEKqOK64l8kdJwsUZh64daIP2YAxU1qydWc="
|
||||
},
|
||||
"org/apache/commons#commons-text/1.8": {
|
||||
"pom": "sha256-9s/bqlnHCtfj/r5xTgkRmQFWrAkFKV2PKjt1HgXlmhI="
|
||||
},
|
||||
"org/apache/commons#commons-text/1.9": {
|
||||
"pom": "sha256-n5IWz8lE3KeC5jEdYnV/13Fk/mfaKbWPAVaH+gn0QFA="
|
||||
},
|
||||
"org/apache/felix#felix-parent/6": {
|
||||
"pom": "sha256-Ngi2sgD2yPSIx3zBWYR9UV5pZugzO4XY4E45Sgk7VZU="
|
||||
},
|
||||
"org/apache/felix#org.apache.felix.framework/7.0.5": {
|
||||
"jar": "sha256-q6cpMsX/5S0a6ftzVBVHS8gwX9BPBQ6FHzqPZ9oYNP0=",
|
||||
"pom": "sha256-CBAm1JP4dt+OsPPxyPhdpyy+N99VeDPpaLQMMNrL/Kk="
|
||||
},
|
||||
"org/apache/logging#logging-parent/3": {
|
||||
"pom": "sha256-djouwrgJTUFh3rbCZLEmIIW5vjC/OjHCzhNyQuV3Iqc="
|
||||
},
|
||||
"org/apache/logging/log4j#log4j-api/2.17.1": {
|
||||
"jar": "sha256-sNikyKtPuLGIjQCVgicDsObUeTxBlVAgPanmkZYWHeQ=",
|
||||
"pom": "sha256-HirO8yILKb4QrgmXKLFYsY2UP5Ghk8xFAbtC+SnB6Io="
|
||||
},
|
||||
"org/apache/logging/log4j#log4j-core/2.17.1": {
|
||||
"jar": "sha256-yWfyI0h5gLk2TpSnx/mooB/T7nwZvb8LD5+MuFEfPUE=",
|
||||
"pom": "sha256-C7s79tTSKhv6PDwJJ8KUEK8UoPsm47Ark3JvXH6Yqv0="
|
||||
},
|
||||
"org/apache/logging/log4j#log4j/2.17.1": {
|
||||
"pom": "sha256-lnq8AkRDqcsJaTVVmvXprW8P9hN1+Esn1EDS+nCAawk="
|
||||
},
|
||||
"org/bouncycastle#bcpkix-jdk15on/1.69": {
|
||||
"jar": "sha256-QIN20Xqqh4nnrNBV/kBCiaEfozX9fGinUykEn7fSjtI=",
|
||||
"pom": "sha256-WrvkytLCMJR0ZvsgmiJn48xqDTgKajGRWVnTqtm4F2w="
|
||||
},
|
||||
"org/bouncycastle#bcprov-jdk15on/1.69": {
|
||||
"jar": "sha256-5Gm9Ofk2mZ8lYAJjEAP/AioilR2p1b2Xicer+pdjopI=",
|
||||
"pom": "sha256-/YHicUSVvOeeauazAp2s0kzyz/NAJB2lgQVYlae6eN4="
|
||||
},
|
||||
"org/bouncycastle#bcutil-jdk15on/1.69": {
|
||||
"jar": "sha256-KeQOJGbQQNgqbw6ZY10LwrujqUJRz3k5zwtpMhyu/Ak=",
|
||||
"pom": "sha256-p2e8fzQtGTKJfso8i6zHAEygOAv6dSnyOpc0VJZcffw="
|
||||
},
|
||||
"org/checkerframework#checker-compat-qual/2.5.2": {
|
||||
"pom": "sha256-da9ztewybj29yUayH9RoAtXafGEsO/Hlh1N0yY1+pP0="
|
||||
},
|
||||
"org/checkerframework#checker-qual/2.5.2": {
|
||||
"jar": "sha256-ZLAmkci51OdwD47i50Lc5+osboHmYrdSLJ7jv1aMBAo=",
|
||||
"pom": "sha256-3EzUOKNkYtATwjOMjiBtECoyKgDzNynolV7iGYWcnt4="
|
||||
},
|
||||
"org/checkerframework#checker-qual/3.31.0": {
|
||||
"module": "sha256-UYkl4iqnmMH71voXwYN0aR8f57G+fdNw1Omv7us7Ds8=",
|
||||
"pom": "sha256-Q1ecPr5H54NYp/MvlnN471YXWyKUszUYNYTwvSNZUjE="
|
||||
},
|
||||
"org/checkerframework#checker-qual/3.37.0": {
|
||||
"jar": "sha256-5M4TdswnNeHd4iC2KtCRP1EpdwTarRVaM/OGvF2w2fc=",
|
||||
"module": "sha256-clinadyqJrmBVNIp2FzHLls2ZrC8tjfS2vFuxJiVZjg=",
|
||||
"pom": "sha256-AjkvvUziGQH5RWFUcrHU1NNZGzqr3wExBfXJLsMstPA="
|
||||
},
|
||||
"org/codehaus#codehaus-parent/3": {
|
||||
"pom": "sha256-UOslOs0LbuBI9DLZ/Do7NiZO+z2h/6f7B/bE1LeoyjE="
|
||||
},
|
||||
"org/codehaus/mojo#animal-sniffer-annotations/1.17": {
|
||||
"jar": "sha256-kmVPST7P7FIILnY1Tw6/h2SNw9XOwuPDzblHwBZ0elM=",
|
||||
"pom": "sha256-6VarXS60j6uuEjANDNLTKU1KKkGrwgaMI8tNYK12y+U="
|
||||
},
|
||||
"org/codehaus/mojo#animal-sniffer-annotations/1.9": {
|
||||
"jar": "sha256-zZb+60fzSyVZcEcV23sXmgOjch+dxAksNFxxjim0LeQ=",
|
||||
"pom": "sha256-/nEJDiNXjdGapqj+9Rhvz6WPSPgHBnKprIlFhis7fz0="
|
||||
},
|
||||
"org/codehaus/mojo#animal-sniffer-parent/1.17": {
|
||||
"pom": "sha256-GKA98W4qGExYLbexJWM8Fft3FAJ6hMG1MtcpM9wIuB8="
|
||||
},
|
||||
"org/codehaus/mojo#animal-sniffer-parent/1.9": {
|
||||
"pom": "sha256-nyDSRN5e5OZQmbJ3tpiE7xr4EROcAJcl3TzPqPsaxjs="
|
||||
},
|
||||
"org/codehaus/mojo#mojo-parent/28": {
|
||||
"pom": "sha256-WrbfH5JfxhOX3y0XNSu8mK8UZOhT7SF+CeU9IKMm9wc="
|
||||
},
|
||||
"org/codehaus/mojo#mojo-parent/40": {
|
||||
"pom": "sha256-/GSNzcQE+L9m4Fg5FOz5gBdmGCASJ76hFProUEPLdV4="
|
||||
},
|
||||
"org/fusesource#fusesource-pom/1.12": {
|
||||
"pom": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE="
|
||||
},
|
||||
"org/fusesource/jansi#jansi/2.3.2": {
|
||||
"jar": "sha256-+dWXnFx7oxN8d/QYR16wIYn4/Ip1+nP/w/8dEv6UVWc=",
|
||||
"pom": "sha256-ywU3vsxjUsFUcz22+v0JAPlYRgOgsLnPjyJFVjEs2+E="
|
||||
},
|
||||
"org/hamcrest#hamcrest-core/1.1": {
|
||||
"jar": "sha256-A2HRST/w2U+GE1nv6pEgByBjUHITR5LvtyF/bgnVz/s=",
|
||||
"pom": "sha256-OXOH9AbGjMtAP0d8y+wcgYz8a4/0+tpaM+Jhg6hBfIM="
|
||||
},
|
||||
"org/hamcrest#hamcrest-core/1.3": {
|
||||
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||
},
|
||||
"org/hamcrest#hamcrest-parent/1.1": {
|
||||
"pom": "sha256-FOaVChpimMvLg8+UKcrEFf8nMWf28Vh2hZQTsNbAfjo="
|
||||
},
|
||||
"org/hamcrest#hamcrest-parent/1.3": {
|
||||
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||
},
|
||||
"org/hamcrest#hamcrest/2.2": {
|
||||
"jar": "sha256-XmKEaonwXNeM2cGlU/NA0AJFg4DDIEVd0fj8VJeoocE=",
|
||||
"pom": "sha256-s2E3N2xLP8923DN+KhvFtpGirBqpZqtdJiCak4EvpX0="
|
||||
},
|
||||
"org/jacoco#org.jacoco.agent/0.8.11": {
|
||||
"jar": "sha256-0+2F3qeKntVYRqdzjjoMoVxwLGYe5LyMv+Aqi59KmcA=",
|
||||
"pom": "sha256-FuBen0liG4fFPmk1AUDzxG1C2WbGepM730sGOiscj8U="
|
||||
},
|
||||
"org/jacoco#org.jacoco.ant/0.8.11": {
|
||||
"jar": "sha256-gdfriJDZvjCpOWEsKVYDVBBjUpzdA6UyZaunRHS3C3w=",
|
||||
"pom": "sha256-ftED2VnQzue6v7Ewf6bkUbFpb/01JwYVU7VQ3lUgHYU="
|
||||
},
|
||||
"org/jacoco#org.jacoco.build/0.8.11": {
|
||||
"pom": "sha256-W4SxXPLu8+WeuRvCJ4SDMQCwnfmRHjMZAww7xki9iws="
|
||||
},
|
||||
"org/jacoco#org.jacoco.core/0.8.11": {
|
||||
"jar": "sha256-/NGIxohHP8jcwMbKrzVeeziVAiQ1J8M7lZej7Ch5H0c=",
|
||||
"pom": "sha256-u2E18Qo2NJy4SlYA/Yz3P8EpahNbLxStzYPejPJMq7E="
|
||||
},
|
||||
"org/jacoco#org.jacoco.report/0.8.11": {
|
||||
"jar": "sha256-g5MpWuJGgO0QytgzOQcED5KLhxMySRWBylvHhOLLT74=",
|
||||
"pom": "sha256-jjtzR3nV4/1oPsAVQT1S+WGYTFDLkEX9orI7/160I4E="
|
||||
},
|
||||
"org/jdom#jdom-legacy/1.1.3": {
|
||||
"jar": "sha256-Ar1hpyXor5sBdrQ78pgW0MdIuKuVE4W9EnvjdIkyWgo=",
|
||||
"pom": "sha256-bWWTi3CxFyMBy0LY5l7gVzpXHtOfOvEBOp5ukp/flow="
|
||||
},
|
||||
"org/jgrapht#jgrapht-core/1.5.1": {
|
||||
"jar": "sha256-pNgQy2Pgp3p1PRRwlP6p3ULoLPxXqiifn4UinyYEO7Q=",
|
||||
"pom": "sha256-KknxKWxTwJ4OCiVdogMgVq3fKlu6WFyAF3Eg/IELQRM="
|
||||
},
|
||||
"org/jgrapht#jgrapht-io/1.5.1": {
|
||||
"jar": "sha256-hsf8ZswZB7/CazZtTdKSzQ2ihr3h/QiKEcDZcp1tzFw=",
|
||||
"pom": "sha256-jMvAH5otyMV0llX6FSck3dJ8FIIpxWeV+CC7V6GEp4g="
|
||||
},
|
||||
"org/jgrapht#jgrapht/1.5.1": {
|
||||
"pom": "sha256-X9k28p0qw4blfbTL+JtZLFth3GpA03qhUw9eVLNQx9I="
|
||||
},
|
||||
"org/jheaps#jheaps/0.13": {
|
||||
"jar": "sha256-Y0FCkMNJf4rA8QIgkgcIjexG/UdH4PVqJsaTCOhcZBU=",
|
||||
"pom": "sha256-SH2xJbFxCY4/qDOFNaxZR2kirCxFK1ehTTz2YfIohDA="
|
||||
},
|
||||
"org/jline#jline-builtins/3.20.0": {
|
||||
"jar": "sha256-prFPiYOXb7Sd67PZ6KFb+V9yTXFp8TFaYu+lin+omeI=",
|
||||
"pom": "sha256-9T2EkbSNrQfnIR8M5BIhS5un25YmYZAxsqhvgMgrZrE="
|
||||
},
|
||||
"org/jline#jline-parent/3.20.0": {
|
||||
"pom": "sha256-cXjGACAsS8Jux6S2IlXu829wVsrSpeYjnFdL7qXCEMo="
|
||||
},
|
||||
"org/jline#jline-reader/3.20.0": {
|
||||
"jar": "sha256-rNHJTR4iiqe3li9psh7Tqf2CjrOmPkuvkIaVTmJq8fA=",
|
||||
"pom": "sha256-2fF+3XIcAqExcgN21sB4eHgutrb6/rX/QkBKtXFD4TY="
|
||||
},
|
||||
"org/jline#jline-style/3.20.0": {
|
||||
"jar": "sha256-C7ERYF4BAM6E05YfMLQNqgiOnC7FxnHn75D0L2rdBrY=",
|
||||
"pom": "sha256-48nFXt7Ob0ru5jplYjiaS++NA1j6iq3GdKPeZR4w4ao="
|
||||
},
|
||||
"org/jline#jline-terminal-jansi/3.20.0": {
|
||||
"jar": "sha256-wX/++o8GDa79OPJXRAcOQI9LrFPD6BOuoZKMxgcmD+Q=",
|
||||
"pom": "sha256-Q3JhhBr0j5oZT9WygHJSCKds+jzKFgBAx6QoDrAn2+s="
|
||||
},
|
||||
"org/jline#jline-terminal/3.20.0": {
|
||||
"jar": "sha256-EhJRcOeVUZum3IAQwHC1PHaq6StIXB43Uw5Uq13QjUM=",
|
||||
"pom": "sha256-EMo7z1F48YUH8hCmOtljeJaFM0OtHBKRoBmhFvIWpUg="
|
||||
},
|
||||
"org/junit#junit-bom/5.7.1": {
|
||||
"module": "sha256-mFTjiU1kskhSB+AEa8oHs9QtFp54L0+oyc4imnj67gQ=",
|
||||
"pom": "sha256-C5sUo9YhBvr+jGinF7h7h60YaFiZRRt1PAT6QbaFd4Q="
|
||||
},
|
||||
"org/junit#junit-bom/5.7.2": {
|
||||
"module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=",
|
||||
"pom": "sha256-zRSqqGmZH4ICHFhdVw0x/zQry6WLtEIztwGTdxuWSHs="
|
||||
},
|
||||
"org/junit#junit-bom/5.8.0-M1": {
|
||||
"module": "sha256-vgUUcTA6UD9MIkZwdbJ0kEE3fd1tWoywc53tZ9kW2C0=",
|
||||
"pom": "sha256-dxREMv/Gi9mKeQqxBpYZ2RAyz8Dk4TwIFjqgPaNv1uI="
|
||||
},
|
||||
"org/junit#junit-bom/5.9.0": {
|
||||
"module": "sha256-oFTq9QFrWLvN6GZgREp8DdPiyvhNKhrV/Ey1JZecGbk=",
|
||||
"pom": "sha256-2D6H8Wds3kQZHuxc2mkEkjkvJpI7HkmBSMpznf7XUpU="
|
||||
},
|
||||
"org/junit#junit-bom/5.9.1": {
|
||||
"module": "sha256-kCbBZWaQ+hRa117Og2dCEaoSrYkwqRsQfC9c3s4vGxw=",
|
||||
"pom": "sha256-sWPBz8j8H9WLRXoA1YbATEbphtdZBOnKVMA6l9ZbSWw="
|
||||
},
|
||||
"org/osgi#org.osgi.core/5.0.0": {
|
||||
"jar": "sha256-tEDGv/KGMyr89crgZ7YGli52HA3wDl/Yp0bwsxJlYZs=",
|
||||
"pom": "sha256-4AHZl0MYUeq4uTOLW32f5eaOGutDpYV5JLChWIbuNjk="
|
||||
},
|
||||
"org/osgi#org.osgi.util.promise/1.3.0": {
|
||||
"jar": "sha256-cFPFfn19iP7GuQl5o68SXh0ruEcmijKKLx7WWtCkwYU=",
|
||||
"pom": "sha256-rcyK9ce+Z7BSEF4Mncq43ibaxvGbxamrcpRqMydscQA="
|
||||
},
|
||||
"org/ow2#ow2/1.3": {
|
||||
"pom": "sha256-USFcZ9LAaNi30vb4D1E3KgmAdd7MxEjUvde5h7qDKPs="
|
||||
},
|
||||
"org/ow2#ow2/1.5.1": {
|
||||
"pom": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU="
|
||||
},
|
||||
"org/ow2/asm#asm-bom/9.6": {
|
||||
"pom": "sha256-ig5fYk/ikwt6jWmVb0OORe9TKZa01kQJthbErvSxrE4="
|
||||
},
|
||||
"org/ow2/asm#asm-commons/9.6": {
|
||||
"jar": "sha256-eu/Q1cCQFwHGn3UT/tp2X7a+M68s56oXxXgfyHZXxRE=",
|
||||
"pom": "sha256-qYrkiVM0uvj/hr1mUWIQ29mgPxpuFeR92oKvz2tT13w="
|
||||
},
|
||||
"org/ow2/asm#asm-debug-all/5.0.3": {
|
||||
"jar": "sha256-KWk1asHkD+QUGUjFY2kCOPXXnXaux/2HNTaGejMe3oE=",
|
||||
"pom": "sha256-nJnXpVVyW8L4N5l3k1zboW1ofZyTtuByXhlhgNSQyZU="
|
||||
},
|
||||
"org/ow2/asm#asm-parent/5.0.3": {
|
||||
"pom": "sha256-wu2r9BKKU030uLSwubVi6U8kK6lawk3GFIVDK4oYjjI="
|
||||
},
|
||||
"org/ow2/asm#asm-tree/9.6": {
|
||||
"jar": "sha256-xD7PF7U5x3fhXae1uGVTs3fi05poPeYoVWfVKDiI5+8=",
|
||||
"pom": "sha256-G8tIHX/Ba5VbtgygfIz6JCS87ni9xAW7oxx9b13C0RM="
|
||||
},
|
||||
"org/ow2/asm#asm/9.6": {
|
||||
"jar": "sha256-PG+sJCTbPUqFO2afTj0dnDxVIjXhmjGWc/iHCDwjA6E=",
|
||||
"pom": "sha256-ku7iS8PIQ+SIHUbB3WUFRx7jFC+s+0ZrQoz+paVsa2A="
|
||||
},
|
||||
"org/postgresql#postgresql/42.6.2": {
|
||||
"jar": "sha256-gmKXVPMJwLVx0dQLp0+wU4VfhjdSpGyjB8ez5YYMSy4=",
|
||||
"pom": "sha256-/5dcZtbZSN/YKp6SbsER7eldPkyRo6DYaQ8xox45NMY="
|
||||
},
|
||||
"org/python#jython-standalone/2.7.3": {
|
||||
"jar": "sha256-2n89gpsUi8+oawWdyWTjqFVv7bAhCWyNsH4wxm+qubQ=",
|
||||
"pom": "sha256-moD1I2PkBVnKxMjaKsX4uil3ksbpEmN7dIUfKjMHDNI="
|
||||
},
|
||||
"org/slf4j#slf4j-api/1.7.25": {
|
||||
"jar": "sha256-GMSgCV1cHaa4F1kudnuyPSndL1YK1033X/OWHb3iW3k=",
|
||||
"pom": "sha256-fNnXoLXZPf1GGhSIkbQ1Cc9AOpx/n7SQYNNVTfHIHh4="
|
||||
},
|
||||
"org/slf4j#slf4j-nop/1.7.25": {
|
||||
"jar": "sha256-bLEnE49Btahp+ezdBhrRd5mg4/5yBGAHlxVOsEMu6xI=",
|
||||
"pom": "sha256-ogpNV7z++b2sp9EVliwN58lEa+TUZre9MNXxmkWc9Jk="
|
||||
},
|
||||
"org/slf4j#slf4j-parent/1.7.25": {
|
||||
"pom": "sha256-GPXFISDbA26I1hNviDnIMtB0vdqVx1bG9CkknS21SsY="
|
||||
},
|
||||
"org/smali#baksmali/2.5.2": {
|
||||
"jar": "sha256-HtI2Jm19xJB6reCxmjT3fvrCU0K2PIrOUuV5A5lBs4k=",
|
||||
"module": "sha256-g+59x3oek4+5BtaNfUPiRX8s+Im7HecuqtcJJDVfpbU=",
|
||||
"pom": "sha256-8FzZiasE/SboahreXCGauEgovqfebryA/Bd7YtJ1k4g="
|
||||
},
|
||||
"org/smali#dexlib2/2.5.2": {
|
||||
"jar": "sha256-WlyJgti9fW47saBxMEnjx4txnsMrIPa2GYhc7DCg3WE=",
|
||||
"module": "sha256-5XDKZe/asrKMAq2P34W9hSIGZrkkuJXKW+r1fXKGiDw=",
|
||||
"pom": "sha256-BWB6NSDN841drl0MQZZRKjhWpA3rlTny/OCGNalut44="
|
||||
},
|
||||
"org/smali#util/2.5.2": {
|
||||
"jar": "sha256-T1gKnP8+u4PLP9IL7Ijjfk8YN5bKZScymSYRYgKC2uo=",
|
||||
"module": "sha256-rRt+JSAWcAXJFp2Gv8z/JvXF+b8Ls/qyRMtIIWU9wmE=",
|
||||
"pom": "sha256-IKx+12/5cPUQB6IPrIvbon7IeUT9Kb2oxnQJZ5LJFFE="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/6": {
|
||||
"pom": "sha256-tDBtE+j1OSRYobMIZvHP8WGz0uaZmojQWe6jkyyKhJk="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/7": {
|
||||
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/9": {
|
||||
"pom": "sha256-+0AmX5glSCEv+C42LllzKyGH7G8NgBgohcFO8fmCgno="
|
||||
},
|
||||
"org/tribuo#tribuo-classification-core/4.2.0": {
|
||||
"jar": "sha256-+vv5OnIrmrVC7oeaX09lF5bkyuobZ5gNVWL+jdjbqeY=",
|
||||
"pom": "sha256-gLgGCPTPN93HLmioPGBRyupwvqF+96hTCfWeqdpzBPE="
|
||||
},
|
||||
"org/tribuo#tribuo-classification-tree/4.2.0": {
|
||||
"jar": "sha256-uVozLZJI7RKVgxdkTNQ9cubdit4KJPnKTlLaB72sY6c=",
|
||||
"pom": "sha256-OrTlGe48n3lzd3MirS7EaR5j1kovRxiR4A1BGQdY2jw="
|
||||
},
|
||||
"org/tribuo#tribuo-classification/4.2.0": {
|
||||
"pom": "sha256-SqINxWFbgU86wjq3xB+s+LpCKbPuzSwa/KeL3/kntcU="
|
||||
},
|
||||
"org/tribuo#tribuo-common-tree/4.2.0": {
|
||||
"jar": "sha256-34iqIWT+X60ITLIxl7LgodbBPk7QbuXCGXausNuVfOk=",
|
||||
"pom": "sha256-DbCNldwWEPdn/AehmZqXlhVxALozjH4JA2jMVN5NIHU="
|
||||
},
|
||||
"org/tribuo#tribuo-common/4.2.0": {
|
||||
"pom": "sha256-GAZzLdQd51aq3tY2v7qZSD00J72diyAvEEJcr84iykk="
|
||||
},
|
||||
"org/tribuo#tribuo-core/4.2.0": {
|
||||
"jar": "sha256-NFwzfcKHjsdQJJgqqwZycZtznnGOc9eisu/ottXQCb8=",
|
||||
"pom": "sha256-XkjLxuPn9x+wYPSWdPTXbCLcKEe9flflVCY7+5gYpZ0="
|
||||
},
|
||||
"org/tribuo#tribuo-data/4.2.0": {
|
||||
"jar": "sha256-m8EQCFnODOBCDNbfbOdna25DxSKEXUKGz5FIUmgtYz0=",
|
||||
"pom": "sha256-SMm4+bX7Nd5toLwWhuMLStMkS6UWMCNw1fqGd1ixruA="
|
||||
},
|
||||
"org/tribuo#tribuo-math/4.2.0": {
|
||||
"jar": "sha256-7NZdhI/2SIAXBLm6D3CmRtQDAgy97SYf1zVIGkeWVRI=",
|
||||
"pom": "sha256-iCAlohj3F9hakTNsztSg+08CsjFcppZy0oqCc3uWhVE="
|
||||
},
|
||||
"org/tribuo#tribuo-util-onnx/4.2.0": {
|
||||
"jar": "sha256-ohcAq4nLB1/OT8UkA1n5HMj4t/JCiS1lsD+oda0s3Vs=",
|
||||
"pom": "sha256-Q19d8ELZieF6QHPjcFa++ChKUrw3zIZeF5Xvi7U5KUw="
|
||||
},
|
||||
"org/tribuo#tribuo-util-tokenization/4.2.0": {
|
||||
"jar": "sha256-b0TzDZ0g6amwscMHAbcrPeXtofbXbZXanWkHQmVXdoI=",
|
||||
"pom": "sha256-6GAT6tT7c0apQghWqMAX/g7aAlhmu0w935AK2JLi/Tg="
|
||||
},
|
||||
"org/tribuo#tribuo-util/4.2.0": {
|
||||
"pom": "sha256-saxG0eBU4acgcz0cMeBMaIxxJb+mIN7RpEQ9BdNMma8="
|
||||
},
|
||||
"org/tribuo#tribuo/4.2.0": {
|
||||
"pom": "sha256-mMQFMwnY7vg2fAbCAmyDHkqwS3nOny0hrGrrKE2dNZQ="
|
||||
},
|
||||
"org/tukaani#xz/1.9": {
|
||||
"jar": "sha256-IRswbPxE+Plt86Cj3a91uoxSie7XfWDXL4ibuFX1NeU=",
|
||||
"pom": "sha256-CTvhsDMxvOKTLWglw36YJy12Ieap6fuTKJoAJRi43Vo="
|
||||
}
|
||||
},
|
||||
"https://sourceforge.net/projects": {
|
||||
"pydev/files/pydev/PyDev%206.3.1/PyDev%206.3.1": {
|
||||
"zip": "sha256-TYH+nYr+dmW46iCETT9RB/RGdCknxZlz6t5PKYCbBpk="
|
||||
},
|
||||
"yajsw/files/yajsw/yajsw-stable-13.12/yajsw-stable-13.12": {
|
||||
"zip": "sha256-xvxZgV04ANFOyXeSaor9P2BqDr100s/WBgFndGbt6qI="
|
||||
}
|
||||
},
|
||||
"https://storage.googleapis.com": {
|
||||
"google-code-archive-downloads/v2/code.google.com/android4me/AXMLPrinter2": {
|
||||
"jar": "sha256-AO0Djrarr23eyNICo+16gbUhRY9M1FmUgRXP0C/1nW0="
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
newScope,
|
||||
callPackage,
|
||||
ghidra,
|
||||
}:
|
||||
|
||||
lib.makeScope newScope (self: {
|
||||
inherit (callPackage ./build-extension.nix { inherit ghidra; })
|
||||
buildGhidraExtension
|
||||
buildGhidraScripts
|
||||
;
|
||||
|
||||
findcrypt = self.callPackage ./extensions/findcrypt { };
|
||||
|
||||
ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension {
|
||||
inherit ghidra;
|
||||
};
|
||||
|
||||
ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { };
|
||||
|
||||
ghidraninja-ghidra-scripts = self.callPackage ./extensions/ghidraninja-ghidra-scripts { };
|
||||
|
||||
gnudisassembler = self.callPackage ./extensions/gnudisassembler { inherit ghidra; };
|
||||
|
||||
lightkeeper = self.callPackage ./extensions/lightkeeper { };
|
||||
|
||||
machinelearning = self.callPackage ./extensions/machinelearning { inherit ghidra; };
|
||||
|
||||
ret-sync = self.callPackage ./extensions/ret-sync { };
|
||||
|
||||
sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };
|
||||
|
||||
})
|
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildGhidraExtension,
|
||||
}:
|
||||
let
|
||||
version = "3.0.2";
|
||||
in
|
||||
buildGhidraExtension {
|
||||
pname = "findcrypt";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "antoniovazquezblanco";
|
||||
repo = "GhidraFindcrypt";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-SNmhn/X+POp6dRaB9etZ8GvpKf/5+mPg3E0HUQTthIY=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Ghidra analysis plugin to locate cryptographic constants";
|
||||
homepage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt";
|
||||
downloadPage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}";
|
||||
changelog = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.BonusPlay ];
|
||||
};
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
ghidra,
|
||||
gradle,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
let
|
||||
version = "0.5.0";
|
||||
self = ghidra.buildGhidraExtension {
|
||||
pname = "ghidra-delinker-extension";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "boricj";
|
||||
repo = "ghidra-delinker-extension";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-y0afqqIsWN33b/zGsxJYn8O+R5IP4eD300CgzMymEA0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace build.gradle \
|
||||
--replace-fail '"''${getGitHash()}"' '"v${version}"'
|
||||
'';
|
||||
|
||||
gradleBuildTask = "buildExtension";
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
mitmCache = gradle.fetchDeps {
|
||||
pkg = self;
|
||||
data = ./deps.json;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Ghidra extension for delinking executables back to object files";
|
||||
homepage = "https://github.com/boricj/ghidra-delinker-extension";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = [ lib.maintainers.jchw ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
};
|
||||
in
|
||||
self
|
|
@ -1,214 +0,0 @@
|
|||
{
|
||||
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
|
||||
"!version": 1,
|
||||
"https://plugins.gradle.org/m2": {
|
||||
"com/diffplug/durian#durian-collect/1.2.0": {
|
||||
"jar": "sha256-sZTAuIAhzBFsIcHcdvScLB/hda9by3TIume527+aSMw=",
|
||||
"pom": "sha256-i7diCGoKT9KmRzu/kFx0R2OvodWaVjD3O7BLeHLAn/M="
|
||||
},
|
||||
"com/diffplug/durian#durian-core/1.2.0": {
|
||||
"jar": "sha256-F+0KrLOjwWMjMyFou96thpTzKACytH1p1KTEmxFNXa4=",
|
||||
"pom": "sha256-hwMg6QdVNxsBeW/oG6Ul/R3ui3A0b1VFUe7dQonwtmI="
|
||||
},
|
||||
"com/diffplug/durian#durian-io/1.2.0": {
|
||||
"jar": "sha256-CV/R3HeIjAc/C+OaAYFW7lJnInmLCd6eKF7yE14W6sQ=",
|
||||
"pom": "sha256-NQkZQkMk4nUKPdwvobzmqQrIziklaYpgqbTR1uSSL/4="
|
||||
},
|
||||
"com/diffplug/durian#durian-swt.os/4.2.0": {
|
||||
"jar": "sha256-8h5XK/n7tUmpmMt+L3m2uaOrliM3GsEwsSUJUj97dI8=",
|
||||
"module": "sha256-S9OpnUAGnXD/3CiPsokUlAoDtNURHO1NnPohI8lOX+M=",
|
||||
"pom": "sha256-5CTf5Z5I9R1LbVP2mXeaU6Ue8yTx/zxtZi791PYwSGI="
|
||||
},
|
||||
"com/diffplug/spotless#com.diffplug.spotless.gradle.plugin/6.20.0": {
|
||||
"pom": "sha256-g2lNHgrPjO84zk9mbIzZ3h5S4dQpc+YwFYmXja3WWnY="
|
||||
},
|
||||
"com/diffplug/spotless#spotless-lib-extra/2.40.0": {
|
||||
"jar": "sha256-/+NEZO04c32MmQ+Im51b87b+wvu+oAvUq92SjuNPUxY=",
|
||||
"module": "sha256-VHaHB4POYSoDtDOa00a11RN9a3fSAUFybYWRCdYZFPc=",
|
||||
"pom": "sha256-CpqBsO9AG7lEYP08A2kB74qKW9d1khjyFbFviGGhZfE="
|
||||
},
|
||||
"com/diffplug/spotless#spotless-lib/2.40.0": {
|
||||
"jar": "sha256-ozGah3amzO4e1DaQTtEBZWX9Ay7KhIwlpCUSbBk3Z10=",
|
||||
"module": "sha256-sPGda3aE/68dQY7dFc7ZgCBZCwbFfsr0RAX0iVBRgFw=",
|
||||
"pom": "sha256-aQbVFaYTBtHzpqMFi5hXcTipXDTEwCD00AmBUfMZSLI="
|
||||
},
|
||||
"com/diffplug/spotless#spotless-plugin-gradle/6.20.0": {
|
||||
"jar": "sha256-PbqJL0iTeT3w0CRZb02LGQUXzUDNErVYFwoB37PCLDM=",
|
||||
"module": "sha256-i+pazpSaZq1tIXFfG9Ge5u7F9S7A1m8G+PLJNPtwJWA=",
|
||||
"pom": "sha256-VTD1T1UXPH7b0n0dAUjbFVWCBvMYy/bCtjZYNcNUW9I="
|
||||
},
|
||||
"com/github/gmazzo/buildconfig#com.github.gmazzo.buildconfig.gradle.plugin/5.3.5": {
|
||||
"pom": "sha256-+7LpGMzwo5wJ8GZtfRlxoEaiVsZG8yfDoQpN6M5P1JU="
|
||||
},
|
||||
"com/github/gmazzo/buildconfig#plugin/5.3.5": {
|
||||
"jar": "sha256-Jeh99WaAFSYYVbxxERZaqpQMo9I781sKoBBVRXNjgyk=",
|
||||
"module": "sha256-4Fk5HzzRXQvCrDvbTf7MNXtNcFekqGlpSg/sbGruwXY=",
|
||||
"pom": "sha256-MgrmPgZ4TF2fraSFnOPhEBYlcCoWM4/dvu9UHVUkWOo="
|
||||
},
|
||||
"com/googlecode/concurrent-trees#concurrent-trees/2.6.1": {
|
||||
"jar": "sha256-BONySYTipcv1VgbPo3KlvT08XSohUzpwBOPN5Tl2H6U=",
|
||||
"pom": "sha256-Q8K5sULnBV0fKlgn8QlEkl0idH2XVrMlDAeqtHU4qXE="
|
||||
},
|
||||
"com/googlecode/javaewah#JavaEWAH/1.2.3": {
|
||||
"jar": "sha256-1lImlJcTxMYaeE9BxRFn57Axb5N2Q5jrup5DNrPZVMI=",
|
||||
"pom": "sha256-5O1sZpYgNm+ZOSBln+CsfLyD11PbwNwOseUplzr5byM="
|
||||
},
|
||||
"com/squareup#javapoet/1.13.0": {
|
||||
"jar": "sha256-THUX6EinGzbQadErs79Gpw/UzaMQXYIrDtLhnAC2kpE=",
|
||||
"pom": "sha256-VKNPqFAqRryQ79tJJiYAWR+oC/mjT1pMeYMRrsFsqXc="
|
||||
},
|
||||
"com/squareup#kotlinpoet-jvm/1.15.3": {
|
||||
"jar": "sha256-cdnoD49eqFCombaN6tOxwzvfq67DZJBpVfS0hTbXn6E=",
|
||||
"module": "sha256-WTlDw+sa3SFaeEL6MsmnlqoCF3zVZDkfuIp9QIYWs6M=",
|
||||
"pom": "sha256-3Zr3oWxwNwdeGbOoQLXlHVes9g4cjYnG5FqcHDWw6Ik="
|
||||
},
|
||||
"com/squareup#kotlinpoet/1.15.3": {
|
||||
"module": "sha256-Q38EctA1tN3NSAJpTEodgDhphD4Li+WP/FA//GFmIWc=",
|
||||
"pom": "sha256-TLSlkhcLOMvGCZ4QIWMAR8ViFco++yl5jP4nA1qyPw0="
|
||||
},
|
||||
"com/squareup/okhttp3#okhttp/4.10.0": {
|
||||
"jar": "sha256-dYDxT6FpEgbjcIGtP5IGOxYDsyjaC7MW8v7wLgVi5+w=",
|
||||
"module": "sha256-bDBwggtZH17IwpSEl7Wmt0L0krcVvKz0t1EVs6j/qxU=",
|
||||
"pom": "sha256-x/kgsofIOOHYHipj+Gd7svqZE3BYorEeZTWv3pyBoOU="
|
||||
},
|
||||
"com/squareup/okio#okio-jvm/3.0.0": {
|
||||
"jar": "sha256-vmSgzB8o6pzVyXDdfnVXr3LICNc4xJWzl7+JfJkh6Qc=",
|
||||
"module": "sha256-F/SNQXdb2E3qeOnf7Y37zGavgFZ6XJ7J2WCHheyCDN4=",
|
||||
"pom": "sha256-sMtzRExjeVg7KlOiZIxI3kIOsfSRVmdTdNimdW7zovo="
|
||||
},
|
||||
"com/squareup/okio#okio/3.0.0": {
|
||||
"module": "sha256-b546eXgx51xbVi2UbAdRg/myvoRnken4i95FSR2u2Yc=",
|
||||
"pom": "sha256-lgrVNSNexh9VRtuBPQGVwTr4UjChLqvpmXUeilUNFU8="
|
||||
},
|
||||
"dev/equo/ide#solstice/1.3.1": {
|
||||
"jar": "sha256-dl9eEMdIofpRy3tsyH8pgqs2txWX5p9wnZi/ETa1ME8=",
|
||||
"module": "sha256-oEpRNV2jFNNKtpRZzJ1J8trBV3pd9Kc3Y5DXfOogItE=",
|
||||
"pom": "sha256-ljw9pdrhspFNWcDbgXTt2LyqwwO0FMdp4WQsfYOMbPw="
|
||||
},
|
||||
"org/eclipse/jgit#org.eclipse.jgit-parent/6.6.0.202305301015-r": {
|
||||
"pom": "sha256-rILKtoxRf/67xcbnagItce9dQANsnE4O+QHw6ceKOlk="
|
||||
},
|
||||
"org/eclipse/jgit#org.eclipse.jgit/6.6.0.202305301015-r": {
|
||||
"jar": "sha256-4wRVXVsg3zuRzHfBJCSvcL4w1Copx+2MJ7Pwb3M3qOM=",
|
||||
"pom": "sha256-nNAirxZ7WVDZpXC0s+aqPsybehWhshWFVDB+mb7h0IQ="
|
||||
},
|
||||
"org/eclipse/platform#org.eclipse.osgi/3.18.300": {
|
||||
"jar": "sha256-urlD5Y7dFzCSOGctunpFrsni2svd24GKjPF3I+oT+iI=",
|
||||
"pom": "sha256-4nl2N1mZxUJ/y8//PzvCD77a+tiqRRArN59cL5fI/rQ="
|
||||
},
|
||||
"org/jetbrains#annotations/13.0": {
|
||||
"jar": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=",
|
||||
"pom": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-reflect/1.9.21": {
|
||||
"jar": "sha256-oTPgSfCk4kllFYJCjhZt5N+slUat9Da2FyEZJV7eUQ8=",
|
||||
"pom": "sha256-wu93WbdrxNn29SnS8/vBwxpFl8wVhuc6fXqxbRvbtKk="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-common/1.9.22": {
|
||||
"module": "sha256-+Tyemr+NUtjo/Y6FGqgC7OxVEyFhxK7ufTzZJL95QkY=",
|
||||
"pom": "sha256-10k21oh1ZK63EOhCmLVCB/U+m88jpSrSv6IsIIZ3V2c="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-jdk7/1.8.0": {
|
||||
"jar": "sha256-TIidHZgD9fLrbBWSprfmI2msdmDJ7uFauhb+wFkWNmY=",
|
||||
"pom": "sha256-36lkSmrluJjuR1ux9X6DC6H3cK7mycFfgRKqOBGAGEo="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-jdk8/1.8.0": {
|
||||
"jar": "sha256-BbYoBEQbDJoZILa31c9zKaTiS2JYR44ysfBGygGQCUY=",
|
||||
"pom": "sha256-K7bHVRuXx7oCn5hmWC56oZ1jq/1M1T2j/AxGLzq1/CY="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib/1.9.22": {
|
||||
"jar": "sha256-ar4UbCeGQTi4dMzM/l9TTj65I8maG3tdRUlO5WlPPgo=",
|
||||
"module": "sha256-9IIxS1B5wUVfb7DUJXp0XRAcYSTOlhUiuob53JCQHkc=",
|
||||
"pom": "sha256-zOLxUoXsgHijd0a1cwigVAQt1cwlQgxD9zt4V8JGjwM="
|
||||
},
|
||||
"org/slf4j#slf4j-api/1.7.36": {
|
||||
"jar": "sha256-0+9XXj5JeWeNwBvx3M5RAhSTtNEft/G+itmCh3wWocA=",
|
||||
"pom": "sha256-+wRqnCKUN5KLsRwtJ8i113PriiXmDL0lPZhSEN7cJoQ="
|
||||
},
|
||||
"org/slf4j#slf4j-parent/1.7.36": {
|
||||
"pom": "sha256-uziNN/vN083mTDzt4hg4aTIY3EUfBAQMXfNgp47X6BI="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/5": {
|
||||
"pom": "sha256-FnjUEgpYXYpjATGu7ExSTZKDmFg7fqthbufVqH9SDT0="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/7": {
|
||||
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||
},
|
||||
"org/tukaani#xz/1.9": {
|
||||
"jar": "sha256-IRswbPxE+Plt86Cj3a91uoxSie7XfWDXL4ibuFX1NeU=",
|
||||
"pom": "sha256-CTvhsDMxvOKTLWglw36YJy12Ieap6fuTKJoAJRi43Vo="
|
||||
}
|
||||
},
|
||||
"https://repo.maven.apache.org/maven2": {
|
||||
"junit#junit/4.12": {
|
||||
"jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
|
||||
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
|
||||
},
|
||||
"net/bytebuddy#byte-buddy-agent/1.14.5": {
|
||||
"jar": "sha256-VfGYYrhw9dhYkLpThrG0Xpu8iNX+H4Gavgx4i0kp+ms=",
|
||||
"pom": "sha256-CyjT+A+r52hqIX2ZiWGdN8V7vXSoCja5bC3DojrKTyg="
|
||||
},
|
||||
"net/bytebuddy#byte-buddy-parent/1.14.5": {
|
||||
"pom": "sha256-/gFyOCYsnppgFaKxG5Ra9yjBMz9fnvnQ4DEj568X8MI="
|
||||
},
|
||||
"net/bytebuddy#byte-buddy/1.14.5": {
|
||||
"jar": "sha256-6ZdhpSbfD++70/4UQ2sPlTAAzfpRUdxjwLGNN9nEbxw=",
|
||||
"pom": "sha256-ZtTt/qwkvRduj7LUhn6QigYX15dxCIFFuYJReEsoggo="
|
||||
},
|
||||
"org/hamcrest#hamcrest-core/1.3": {
|
||||
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||
},
|
||||
"org/hamcrest#hamcrest-parent/1.3": {
|
||||
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||
},
|
||||
"org/jacoco#org.jacoco.agent/0.8.11": {
|
||||
"jar": "sha256-0+2F3qeKntVYRqdzjjoMoVxwLGYe5LyMv+Aqi59KmcA=",
|
||||
"pom": "sha256-FuBen0liG4fFPmk1AUDzxG1C2WbGepM730sGOiscj8U="
|
||||
},
|
||||
"org/jacoco#org.jacoco.ant/0.8.11": {
|
||||
"jar": "sha256-gdfriJDZvjCpOWEsKVYDVBBjUpzdA6UyZaunRHS3C3w=",
|
||||
"pom": "sha256-ftED2VnQzue6v7Ewf6bkUbFpb/01JwYVU7VQ3lUgHYU="
|
||||
},
|
||||
"org/jacoco#org.jacoco.build/0.8.11": {
|
||||
"pom": "sha256-W4SxXPLu8+WeuRvCJ4SDMQCwnfmRHjMZAww7xki9iws="
|
||||
},
|
||||
"org/jacoco#org.jacoco.core/0.8.11": {
|
||||
"jar": "sha256-/NGIxohHP8jcwMbKrzVeeziVAiQ1J8M7lZej7Ch5H0c=",
|
||||
"pom": "sha256-u2E18Qo2NJy4SlYA/Yz3P8EpahNbLxStzYPejPJMq7E="
|
||||
},
|
||||
"org/jacoco#org.jacoco.report/0.8.11": {
|
||||
"jar": "sha256-g5MpWuJGgO0QytgzOQcED5KLhxMySRWBylvHhOLLT74=",
|
||||
"pom": "sha256-jjtzR3nV4/1oPsAVQT1S+WGYTFDLkEX9orI7/160I4E="
|
||||
},
|
||||
"org/mockito#mockito-core/5.4.0": {
|
||||
"jar": "sha256-sWibBmF+oB/Xd7+u293lEvrwg9Y5oEn3mziNWk6W0uU=",
|
||||
"pom": "sha256-1gZDwDIVaj0pWc0AAN871iqBcj9+DCWD+kL9ZoTz1eM="
|
||||
},
|
||||
"org/objenesis#objenesis-parent/3.3": {
|
||||
"pom": "sha256-MFw4SqLx4cf+U6ltpBw+w1JDuX1CjSSo93mBjMEL5P8="
|
||||
},
|
||||
"org/objenesis#objenesis/3.3": {
|
||||
"jar": "sha256-At/QsEOaVZHjW3CO0vVHTrCUj1Or90Y36Vm45O9pv+s=",
|
||||
"pom": "sha256-ugxA2iZpoEi24k73BmpHHw+8v8xQnmo+hWyk3fphStM="
|
||||
},
|
||||
"org/ow2#ow2/1.5.1": {
|
||||
"pom": "sha256-Mh3bt+5v5PU96mtM1tt0FU1r+kI5HB92OzYbn0hazwU="
|
||||
},
|
||||
"org/ow2/asm#asm-bom/9.6": {
|
||||
"pom": "sha256-ig5fYk/ikwt6jWmVb0OORe9TKZa01kQJthbErvSxrE4="
|
||||
},
|
||||
"org/ow2/asm#asm-commons/9.6": {
|
||||
"jar": "sha256-eu/Q1cCQFwHGn3UT/tp2X7a+M68s56oXxXgfyHZXxRE=",
|
||||
"pom": "sha256-qYrkiVM0uvj/hr1mUWIQ29mgPxpuFeR92oKvz2tT13w="
|
||||
},
|
||||
"org/ow2/asm#asm-tree/9.6": {
|
||||
"jar": "sha256-xD7PF7U5x3fhXae1uGVTs3fi05poPeYoVWfVKDiI5+8=",
|
||||
"pom": "sha256-G8tIHX/Ba5VbtgygfIz6JCS87ni9xAW7oxx9b13C0RM="
|
||||
},
|
||||
"org/ow2/asm#asm/9.6": {
|
||||
"jar": "sha256-PG+sJCTbPUqFO2afTj0dnDxVIjXhmjGWc/iHCDwjA6E=",
|
||||
"pom": "sha256-ku7iS8PIQ+SIHUbB3WUFRx7jFC+s+0ZrQoz+paVsa2A="
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildGhidraExtension,
|
||||
}:
|
||||
buildGhidraExtension rec {
|
||||
pname = "Ghidra-GolangAnalyzerExtension";
|
||||
version = "1.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mooncat-greenpy";
|
||||
repo = "Ghidra_GolangAnalyzerExtension";
|
||||
rev = version;
|
||||
hash = "sha256-uxozIJ+BLcP1vBnLOCZD9ueY10hd37fON/Miii3zabo=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Facilitates the analysis of Golang binaries using Ghidra";
|
||||
homepage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension";
|
||||
downloadPage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension/releases/tag/${version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.ivyfanchiang ];
|
||||
};
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildGhidraScripts,
|
||||
binwalk,
|
||||
swift,
|
||||
yara,
|
||||
}:
|
||||
|
||||
buildGhidraScripts {
|
||||
pname = "ghidraninja-ghidra-scripts";
|
||||
version = "unstable-2020-10-07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ghidraninja";
|
||||
repo = "ghidra_scripts";
|
||||
rev = "99f2a8644a29479618f51e2d4e28f10ba5e9ac48";
|
||||
sha256 = "aElx0mp66/OHQRfXwTkqdLL0gT2T/yL00bOobYleME8=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# Replace subprocesses with store versions
|
||||
substituteInPlace binwalk.py --replace-fail 'subprocess.call(["binwalk"' 'subprocess.call(["${binwalk}/bin/binwalk"'
|
||||
substituteInPlace swift_demangler.py --replace-fail '"swift"' '"${swift}/bin/swift"'
|
||||
substituteInPlace yara.py --replace-fail 'subprocess.check_output(["yara"' 'subprocess.check_output(["${yara}/bin/yara"'
|
||||
substituteInPlace YaraSearch.py --replace-fail '"yara "' '"${yara}/bin/yara "'
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Scripts for the Ghidra software reverse engineering suite";
|
||||
homepage = "https://github.com/ghidraninja/ghidra_scripts";
|
||||
license = with licenses; [
|
||||
gpl3Only
|
||||
gpl2Only
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,69 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
buildGhidraExtension,
|
||||
ghidra,
|
||||
flex,
|
||||
bison,
|
||||
texinfo,
|
||||
perl,
|
||||
zlib,
|
||||
xcbuild,
|
||||
}:
|
||||
|
||||
let
|
||||
# Incorporates source from binutils
|
||||
# https://github.com/NationalSecurityAgency/ghidra/blob/7ab9bf6abffb6938d61d072040fc34ad3331332b/GPL/GnuDisassembler/build.gradle#L34-L35
|
||||
binutils-version = "2.41";
|
||||
binutils-src = fetchurl {
|
||||
url = "mirror://gnu/binutils/binutils-${binutils-version}.tar.bz2";
|
||||
sha256 = "sha256-pMS+wFL3uDcAJOYDieGUN38/SLVmGEGOpRBn9nqqsws=";
|
||||
};
|
||||
in
|
||||
buildGhidraExtension {
|
||||
pname = "gnudisassembler";
|
||||
version = lib.getVersion ghidra;
|
||||
|
||||
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip";
|
||||
|
||||
postPatch = ''
|
||||
ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2
|
||||
'';
|
||||
|
||||
# Don't modify ELF stub resources
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
flex
|
||||
bison
|
||||
texinfo
|
||||
perl
|
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
gradleBuildTask = "assemble";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
EXTENSIONS_ROOT=$out/lib/ghidra/Ghidra/Extensions
|
||||
mkdir -p $EXTENSIONS_ROOT
|
||||
unzip -d $EXTENSIONS_ROOT $src
|
||||
|
||||
mkdir -p $EXTENSIONS_ROOT/GnuDisassembler/build
|
||||
cp -r build/os $EXTENSIONS_ROOT/GnuDisassembler/build/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Leverage the binutils disassembler capabilities for various processors";
|
||||
homepage = "https://ghidra-sre.org/";
|
||||
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/GPL/GnuDisassembler";
|
||||
license = licenses.gpl2Only;
|
||||
};
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildGhidraExtension,
|
||||
}:
|
||||
buildGhidraExtension rec {
|
||||
pname = "lightkeeper";
|
||||
version = "1.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "WorksButNotTested";
|
||||
repo = "lightkeeper";
|
||||
rev = version;
|
||||
hash = "sha256-Emyo4GBrR725jDxRsStC6/4F9mYnRo3S3QY0GeB/BvI=";
|
||||
};
|
||||
preConfigure = ''
|
||||
cd lightkeeper
|
||||
'';
|
||||
meta = {
|
||||
description = "A port of the Lighthouse plugin to GHIDRA.";
|
||||
homepage = "https://github.com/WorksButNotTested/lightkeeper";
|
||||
license = lib.licenses.asl20;
|
||||
};
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildGhidraExtension,
|
||||
ghidra,
|
||||
}:
|
||||
|
||||
buildGhidraExtension {
|
||||
pname = "machinelearning";
|
||||
version = lib.getVersion ghidra;
|
||||
|
||||
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_MachineLearning.zip";
|
||||
dontUnpack = true;
|
||||
|
||||
# Built as part ghidra
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/ghidra/Ghidra/Extensions
|
||||
unzip -d $out/lib/ghidra/Ghidra/Extensions $src
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
inherit (ghidra.meta) homepage license;
|
||||
description = "Finds functions using ML";
|
||||
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/MachineLearning";
|
||||
sourceProvenance = with sourceTypes; [
|
||||
fromSource
|
||||
binaryBytecode # deps
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
buildGhidraExtension,
|
||||
ghidra,
|
||||
}:
|
||||
buildGhidraExtension {
|
||||
pname = "ret-sync-ghidra";
|
||||
version = "0-unstable-2024-05-29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bootleg";
|
||||
repo = "ret-sync";
|
||||
rev = "0617c75746ddde7fe2bdbbf880175af8ad27553e";
|
||||
hash = "sha256-+G5ccdHnFL0sHpueuIYwLRU9FhzN658CYqQCHCBwxV4=";
|
||||
};
|
||||
patches = [
|
||||
# This patch is needed to get the extension compiling with Ghidra 11.2.
|
||||
# Once it's fixed upstream, the src can be updated and this can be removed.
|
||||
(fetchpatch {
|
||||
# https://github.com/bootleg/ret-sync/pull/126
|
||||
name = "ghidra-11.2-fix.patch";
|
||||
url = "https://github.com/bootleg/ret-sync/commit/d81d953c24b4369b499e90ba64c1c9f78513a008.patch";
|
||||
hash = "sha256-t/voPcBfsZtfdYnskgBAPfqMTBw1LRTT0aXyyb5qtr8=";
|
||||
})
|
||||
];
|
||||
preConfigure = ''
|
||||
cd ext_ghidra
|
||||
'';
|
||||
preInstall = ''
|
||||
correct_version=$(ls dist | grep ${ghidra.version})
|
||||
mv dist/$correct_version dist/safe.zip
|
||||
rm dist/ghidra*
|
||||
mv dist/safe.zip dist/$correct_version
|
||||
'';
|
||||
meta = with lib; {
|
||||
description = "Reverse-Engineering Tools SYNChronization. Allows syncing between a debugging session and Ghidra";
|
||||
homepage = "https://github.com/bootleg/ret-sync";
|
||||
license = licenses.gpl3Only;
|
||||
};
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
buildGhidraExtension,
|
||||
ghidra,
|
||||
python3,
|
||||
}:
|
||||
|
||||
buildGhidraExtension {
|
||||
pname = "sleighdevtools";
|
||||
version = lib.getVersion ghidra;
|
||||
|
||||
src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_SleighDevTools.zip";
|
||||
dontUnpack = true;
|
||||
|
||||
# Built as part ghidra
|
||||
dontBuild = true;
|
||||
buildInputs = [ python3 ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/ghidra/Ghidra/Extensions
|
||||
unzip -d $out/lib/ghidra/Ghidra/Extensions $src
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
inherit (ghidra.meta) homepage license;
|
||||
description = "Sleigh language development tools including external disassembler capabilities";
|
||||
longDescription = ''
|
||||
Sleigh language development tools including external disassembler capabilities.
|
||||
The GnuDisassembler extension may be also be required as a disassembly provider.
|
||||
'';
|
||||
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/SleighDevTools";
|
||||
sourceProvenance = with sourceTypes; [
|
||||
fromSource
|
||||
binaryBytecode # deps
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
callPackage,
|
||||
symlinkJoin,
|
||||
makeBinaryWrapper,
|
||||
desktopToDarwinBundle,
|
||||
ghidra,
|
||||
}:
|
||||
|
||||
let
|
||||
ghidra-extensions = callPackage ./extensions.nix { inherit ghidra; };
|
||||
allExtensions = lib.filterAttrs (n: pkg: lib.isDerivation pkg) ghidra-extensions;
|
||||
|
||||
/*
|
||||
Make Ghidra with additional extensions
|
||||
Example:
|
||||
pkgs.ghidra.withExtensions (p: with p; [
|
||||
ghostrings
|
||||
]);
|
||||
=> /nix/store/3yn0rbnz5mbrxf0x70jbjq73wgkszr5c-ghidra-with-extensions-10.2.2
|
||||
*/
|
||||
withExtensions =
|
||||
f:
|
||||
(symlinkJoin {
|
||||
name = "${ghidra.pname}-with-extensions-${lib.getVersion ghidra}";
|
||||
outputs = [ "out" "doc" ];
|
||||
paths = (f allExtensions);
|
||||
nativeBuildInputs = [
|
||||
makeBinaryWrapper
|
||||
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
|
||||
postBuild =
|
||||
''
|
||||
makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \
|
||||
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
|
||||
makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \
|
||||
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
|
||||
ln -s ${ghidra}/share $out/share
|
||||
|
||||
mkdir -p "$doc/share/doc"
|
||||
ln -s "${ghidra.doc}/share/doc/ghidra" "$doc/share/doc"
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
convertDesktopFiles $prefix
|
||||
'';
|
||||
inherit (ghidra) meta;
|
||||
});
|
||||
in
|
||||
withExtensions
|
|
@ -1,5 +0,0 @@
|
|||
{ kicad }:
|
||||
{
|
||||
kikit = kicad.callPackage ./kikit.nix { addonName = "kikit"; };
|
||||
kikit-library = kicad.callPackage ./kikit.nix { addonName = "kikit-library"; };
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
# For building the multiple addons that are in the kikit repo.
|
||||
{ stdenv
|
||||
, bc
|
||||
, kikit
|
||||
, zip
|
||||
, python3
|
||||
, addonName
|
||||
, addonPath
|
||||
}:
|
||||
let
|
||||
# This python is only used when building the package, it's not the python
|
||||
# environment that will ultimately run the code packaged here. The python env defined
|
||||
# in KiCad will import the python code packaged here when KiCad starts up.
|
||||
python = python3.withPackages (ps: with ps; [ click ]);
|
||||
kikit-module = python3.pkgs.toPythonModule (kikit.override { inherit python3; });
|
||||
|
||||
# The following different addons can be built from the same source.
|
||||
targetSpecs = {
|
||||
"kikit" = {
|
||||
makeTarget = "pcm-kikit";
|
||||
resultZip = "pcm-kikit.zip";
|
||||
description = "KiCad plugin and a CLI tool to automate several tasks in a standard KiCad workflow";
|
||||
};
|
||||
"kikit-library" = {
|
||||
makeTarget = "pcm-lib";
|
||||
resultZip = "pcm-kikit-lib.zip";
|
||||
description = "KiKit uses these symbols and footprints to annotate your boards (e.g., to place a tab in a panel).";
|
||||
};
|
||||
};
|
||||
targetSpec = targetSpecs.${addonName};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
name = "kicadaddon-${addonName}";
|
||||
inherit (kikit-module) src version;
|
||||
|
||||
nativeBuildInputs = [ python bc zip ];
|
||||
propagatedBuildInputs = [ kikit-module ];
|
||||
|
||||
buildPhase = ''
|
||||
patchShebangs scripts/setJson.py
|
||||
make ${targetSpec.makeTarget}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
mv build/${targetSpec.resultZip} $out/${addonPath}
|
||||
'';
|
||||
|
||||
meta = kikit-module.meta // {
|
||||
description = targetSpec.description;
|
||||
};
|
||||
}
|
|
@ -1,211 +0,0 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, cmake
|
||||
, libGLU
|
||||
, libGL
|
||||
, zlib
|
||||
, wxGTK
|
||||
, gtk3
|
||||
, libX11
|
||||
, gettext
|
||||
, glew
|
||||
, glm
|
||||
, cairo
|
||||
, curl
|
||||
, openssl
|
||||
, boost
|
||||
, pkg-config
|
||||
, doxygen
|
||||
, graphviz
|
||||
, pcre
|
||||
, libpthreadstubs
|
||||
, libXdmcp
|
||||
, unixODBC
|
||||
, libgit2
|
||||
, libsecret
|
||||
, libgcrypt
|
||||
, libgpg-error
|
||||
|
||||
, util-linux
|
||||
, libselinux
|
||||
, libsepol
|
||||
, libthai
|
||||
, libdatrie
|
||||
, libxkbcommon
|
||||
, libepoxy
|
||||
, dbus
|
||||
, at-spi2-core
|
||||
, libXtst
|
||||
, pcre2
|
||||
, libdeflate
|
||||
|
||||
, swig4
|
||||
, python
|
||||
, wxPython
|
||||
, opencascade-occt_7_6
|
||||
, libngspice
|
||||
, valgrind
|
||||
|
||||
, stable
|
||||
, testing
|
||||
, baseName
|
||||
, kicadSrc
|
||||
, kicadVersion
|
||||
, withNgspice
|
||||
, withScripting
|
||||
, withI18n
|
||||
, debug
|
||||
, sanitizeAddress
|
||||
, sanitizeThreads
|
||||
}:
|
||||
|
||||
assert lib.assertMsg (!(sanitizeAddress && sanitizeThreads))
|
||||
"'sanitizeAddress' and 'sanitizeThreads' are mutually exclusive, use one.";
|
||||
assert testing -> !stable
|
||||
-> throw "testing implies stable and cannot be used with stable = false";
|
||||
|
||||
let
|
||||
opencascade-occt = opencascade-occt_7_6;
|
||||
inherit (lib) optional optionals optionalString;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kicad-base";
|
||||
version = if (stable) then kicadVersion else builtins.substring 0 10 src.rev;
|
||||
|
||||
src = kicadSrc;
|
||||
|
||||
patches = [
|
||||
# upstream issue 12941 (attempted to upstream, but appreciably unacceptable)
|
||||
./writable.patch
|
||||
# https://gitlab.com/kicad/code/kicad/-/issues/15687
|
||||
./runtime_stock_data_path.patch
|
||||
];
|
||||
|
||||
# tagged releases don't have "unknown"
|
||||
# kicad testing and nightlies use git describe --dirty
|
||||
# nix removes .git, so its approximated here
|
||||
postPatch = lib.optionalString (!stable || testing) ''
|
||||
substituteInPlace cmake/KiCadVersion.cmake \
|
||||
--replace "unknown" "${builtins.substring 0 10 src.rev}"
|
||||
|
||||
substituteInPlace cmake/CreateGitVersionHeader.cmake \
|
||||
--replace "0000000000000000000000000000000000000000" "${src.rev}"
|
||||
'';
|
||||
|
||||
makeFlags = optionals (debug) [ "CFLAGS+=-Og" "CFLAGS+=-ggdb" ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DKICAD_USE_EGL=ON"
|
||||
"-DOCC_INCLUDE_DIR=${opencascade-occt}/include/opencascade"
|
||||
# https://gitlab.com/kicad/code/kicad/-/issues/17133
|
||||
"-DCMAKE_CTEST_ARGUMENTS='--exclude-regex;qa_spice'"
|
||||
]
|
||||
++ optional (stdenv.hostPlatform.system == "aarch64-linux")
|
||||
"-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;'qa_spice|qa_cli'"
|
||||
++ optional (stable && !withNgspice) "-DKICAD_SPICE=OFF"
|
||||
++ optionals (!withScripting) [
|
||||
"-DKICAD_SCRIPTING_WXPYTHON=OFF"
|
||||
]
|
||||
++ optionals (withI18n) [
|
||||
"-DKICAD_BUILD_I18N=ON"
|
||||
]
|
||||
++ optionals (!doInstallCheck) [
|
||||
"-DKICAD_BUILD_QA_TESTS=OFF"
|
||||
]
|
||||
++ optionals (debug) [
|
||||
"-DKICAD_STDLIB_DEBUG=ON"
|
||||
"-DKICAD_USE_VALGRIND=ON"
|
||||
]
|
||||
++ optionals (sanitizeAddress) [
|
||||
"-DKICAD_SANITIZE_ADDRESS=ON"
|
||||
]
|
||||
++ optionals (sanitizeThreads) [
|
||||
"-DKICAD_SANITIZE_THREADS=ON"
|
||||
];
|
||||
|
||||
cmakeBuildType = if debug then "Debug" else "Release";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
doxygen
|
||||
graphviz
|
||||
pkg-config
|
||||
libgit2
|
||||
libsecret
|
||||
libgcrypt
|
||||
libgpg-error
|
||||
]
|
||||
# wanted by configuration on linux, doesn't seem to affect performance
|
||||
# no effect on closure size
|
||||
++ optionals (stdenv.isLinux) [
|
||||
util-linux
|
||||
libselinux
|
||||
libsepol
|
||||
libthai
|
||||
libdatrie
|
||||
libxkbcommon
|
||||
libepoxy
|
||||
dbus
|
||||
at-spi2-core
|
||||
libXtst
|
||||
pcre2
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libGLU
|
||||
libGL
|
||||
zlib
|
||||
libX11
|
||||
wxGTK
|
||||
gtk3
|
||||
pcre
|
||||
libXdmcp
|
||||
gettext
|
||||
glew
|
||||
glm
|
||||
libpthreadstubs
|
||||
cairo
|
||||
curl
|
||||
openssl
|
||||
boost
|
||||
swig4
|
||||
python
|
||||
unixODBC
|
||||
libdeflate
|
||||
opencascade-occt
|
||||
]
|
||||
++ optional (withScripting) wxPython
|
||||
++ optional (withNgspice) libngspice
|
||||
++ optional (debug) valgrind;
|
||||
|
||||
# some ngspice tests attempt to write to $HOME/.cache/
|
||||
# this could be and was resolved with XDG_CACHE_HOME = "$TMP";
|
||||
# but failing tests still attempt to create $HOME
|
||||
# and the newer CLI tests seem to also use $HOME...
|
||||
HOME = "$TMP";
|
||||
|
||||
# debug builds fail all but the python test
|
||||
doInstallCheck = !(debug);
|
||||
installCheckTarget = "test";
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
(python.withPackages(ps: with ps; [
|
||||
numpy
|
||||
pytest
|
||||
cairosvg
|
||||
pytest-image-diff
|
||||
]))
|
||||
];
|
||||
|
||||
dontStrip = debug;
|
||||
|
||||
meta = {
|
||||
description = "Just the built source without the libraries";
|
||||
longDescription = ''
|
||||
Just the build products, the libraries are passed via an env var in the wrapper, default.nix
|
||||
'';
|
||||
homepage = "https://www.kicad.org/";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
|
@ -1,298 +0,0 @@
|
|||
{ lib, stdenv
|
||||
, runCommand
|
||||
, newScope
|
||||
, fetchFromGitLab
|
||||
, fetchgit
|
||||
, makeWrapper
|
||||
, symlinkJoin
|
||||
, callPackage
|
||||
, callPackages
|
||||
|
||||
, gnome
|
||||
, dconf
|
||||
, gtk3
|
||||
, wxGTK32
|
||||
, librsvg
|
||||
, cups
|
||||
, gsettings-desktop-schemas
|
||||
, hicolor-icon-theme
|
||||
|
||||
, unzip
|
||||
, jq
|
||||
|
||||
, pname ? "kicad"
|
||||
, stable ? true
|
||||
, testing ? false
|
||||
, withNgspice ? !stdenv.isDarwin
|
||||
, libngspice
|
||||
, withScripting ? true
|
||||
, python3
|
||||
, addons ? [ ]
|
||||
, debug ? false
|
||||
, sanitizeAddress ? false
|
||||
, sanitizeThreads ? false
|
||||
, with3d ? true
|
||||
, withI18n ? true
|
||||
, srcs ? { }
|
||||
}:
|
||||
|
||||
# `addons`: https://dev-docs.kicad.org/en/addons/
|
||||
#
|
||||
# ```nix
|
||||
# kicad = pkgs.kicad.override {
|
||||
# addons = with pkgs.kicadAddons; [ kikit kikit-library ];
|
||||
# };
|
||||
# ```
|
||||
|
||||
# The `srcs` parameter can be used to override the kicad source code
|
||||
# and all libraries, which are otherwise inaccessible
|
||||
# to overlays since most of the kicad build expression has been
|
||||
# refactored into base.nix, most of the library build expressions have
|
||||
# been refactored into libraries.nix. Overrides are only applied when
|
||||
# building `kicad-unstable`. The `srcs` parameter has
|
||||
# no effect for stable `kicad`. `srcs` takes an attribute set in which
|
||||
# any of the following attributes are meaningful (though none are
|
||||
# mandatory): "kicad", "kicadVersion", "symbols", "templates",
|
||||
# "footprints", "packages3d", and "libVersion". "kicadVersion" and
|
||||
# "libVersion" should be set to a string with the desired value for
|
||||
# the version attribute in kicad's `mkDerivation` and the version
|
||||
# attribute in any of the library's `mkDerivation`, respectively.
|
||||
# "kicad", "symbols", "templates", "footprints", and "packages3d"
|
||||
# should be set to an appropriate fetcher (e.g. `fetchFromGitLab`).
|
||||
# So, for example, a possible overlay for kicad is:
|
||||
#
|
||||
# final: prev:
|
||||
|
||||
# {
|
||||
# kicad-unstable = (prev.kicad-unstable.override {
|
||||
# srcs = {
|
||||
# kicadVersion = "2020-10-08";
|
||||
# kicad = prev.fetchFromGitLab {
|
||||
# group = "kicad";
|
||||
# owner = "code";
|
||||
# repo = "kicad";
|
||||
# rev = "fd22fe8e374ce71d57e9f683ba996651aa69fa4e";
|
||||
# sha256 = "sha256-F8qugru/jU3DgZSpQXQhRGNFSk0ybFRkpyWb7HAGBdc=";
|
||||
# };
|
||||
# };
|
||||
# });
|
||||
# }
|
||||
|
||||
let
|
||||
baseName = if (testing) then "kicad-testing"
|
||||
else if (stable) then "kicad"
|
||||
else "kicad-unstable";
|
||||
versionsImport = import ./versions.nix;
|
||||
|
||||
# versions.nix does not provide us with version, src and rev. We
|
||||
# need to turn this into approprate fetcher calls.
|
||||
#kicadSrcFetch = fetchFromGitLab {
|
||||
# group = "kicad";
|
||||
# owner = "code";
|
||||
# repo = "kicad";
|
||||
# rev = versionsImport.${baseName}.kicadVersion.src.rev;
|
||||
# sha256 = versionsImport.${baseName}.kicadVersion.src.sha256;
|
||||
#};
|
||||
kicadSrcFetch = fetchgit {
|
||||
url = "https://git.lain.faith/haskal/kicad.git";
|
||||
rev = versionsImport.${baseName}.kicadVersion.src.rev;
|
||||
sha256 = versionsImport.${baseName}.kicadVersion.src.sha256;
|
||||
};
|
||||
|
||||
libSrcFetch = name: fetchFromGitLab {
|
||||
group = "kicad";
|
||||
owner = "libraries";
|
||||
repo = "kicad-${name}";
|
||||
rev = versionsImport.${baseName}.libVersion.libSources.${name}.rev;
|
||||
sha256 = versionsImport.${baseName}.libVersion.libSources.${name}.sha256;
|
||||
};
|
||||
|
||||
# only override `src` or `version` if building `kicad-unstable` with
|
||||
# the appropriate attribute defined in `srcs`.
|
||||
srcOverridep = attr: (!stable && builtins.hasAttr attr srcs);
|
||||
|
||||
# use default source and version (as defined in versions.nix) by
|
||||
# default, or use the appropriate attribute from `srcs` if building
|
||||
# unstable with `srcs` properly defined.
|
||||
kicadSrc =
|
||||
if srcOverridep "kicad" then srcs.kicad
|
||||
else kicadSrcFetch;
|
||||
kicadVersion =
|
||||
if srcOverridep "kicadVersion" then srcs.kicadVersion
|
||||
else versionsImport.${baseName}.kicadVersion.version;
|
||||
|
||||
libSrc = name: if srcOverridep name then srcs.${name} else libSrcFetch name;
|
||||
# TODO does it make sense to only have one version for all libs?
|
||||
libVersion =
|
||||
if srcOverridep "libVersion" then srcs.libVersion
|
||||
else versionsImport.${baseName}.libVersion.version;
|
||||
|
||||
wxGTK = wxGTK32;
|
||||
python = python3;
|
||||
wxPython = python.pkgs.wxpython;
|
||||
addonPath = "addon.zip";
|
||||
addonsDrvs = map (pkg: pkg.override { inherit addonPath python3; }) addons;
|
||||
|
||||
addonsJoined =
|
||||
runCommand "addonsJoined"
|
||||
{
|
||||
inherit addonsDrvs;
|
||||
nativeBuildInputs = [ unzip jq ];
|
||||
} ''
|
||||
mkdir $out
|
||||
|
||||
for pkg in $addonsDrvs; do
|
||||
unzip $pkg/addon.zip -d unpacked
|
||||
|
||||
folder_name=$(jq .identifier unpacked/metadata.json --raw-output | tr . _)
|
||||
for d in unpacked/*; do
|
||||
if [ -d "$d" ]; then
|
||||
dest=$out/share/kicad/scripting/$(basename $d)/$folder_name
|
||||
mkdir -p $(dirname $dest)
|
||||
|
||||
mv $d $dest
|
||||
fi
|
||||
done
|
||||
rm -r unpacked
|
||||
done
|
||||
'';
|
||||
|
||||
inherit (lib) concatStringsSep flatten optionalString optionals;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
# Common libraries, referenced during runtime, via the wrapper.
|
||||
passthru.libraries = callPackages ./libraries.nix { inherit libSrc; };
|
||||
passthru.callPackage = newScope { inherit addonPath python3; };
|
||||
base = callPackage ./base.nix {
|
||||
inherit stable testing baseName;
|
||||
inherit kicadSrc kicadVersion;
|
||||
inherit wxGTK python wxPython;
|
||||
inherit withNgspice withScripting withI18n;
|
||||
inherit debug sanitizeAddress sanitizeThreads;
|
||||
};
|
||||
|
||||
inherit pname;
|
||||
version = if (stable) then kicadVersion else builtins.substring 0 10 src.src.rev;
|
||||
|
||||
src = base;
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
dontFixup = true;
|
||||
|
||||
pythonPath = optionals (withScripting)
|
||||
[ wxPython python.pkgs.six python.pkgs.requests ] ++ addonsDrvs;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ]
|
||||
++ optionals (withScripting)
|
||||
[ python.pkgs.wrapPython ];
|
||||
|
||||
# KICAD7_TEMPLATE_DIR only works with a single path (it does not handle : separated paths)
|
||||
# but it's used to find both the templates and the symbol/footprint library tables
|
||||
# https://gitlab.com/kicad/code/kicad/-/issues/14792
|
||||
template_dir = symlinkJoin {
|
||||
name = "KiCad_template_dir";
|
||||
paths = with passthru.libraries; [
|
||||
"${templates}/share/kicad/template"
|
||||
"${footprints}/share/kicad/template"
|
||||
"${symbols}/share/kicad/template"
|
||||
];
|
||||
};
|
||||
# We are emulating wrapGAppsHook3, along with other variables to the wrapper
|
||||
makeWrapperArgs = with passthru.libraries; [
|
||||
"--prefix XDG_DATA_DIRS : ${base}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${hicolor-icon-theme}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${gnome.adwaita-icon-theme}/share"
|
||||
"--prefix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}"
|
||||
"--prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}"
|
||||
# wrapGAppsHook3 did these two as well, no idea if it matters...
|
||||
"--prefix XDG_DATA_DIRS : ${cups}/share"
|
||||
"--prefix GIO_EXTRA_MODULES : ${dconf}/lib/gio/modules"
|
||||
# required to open a bug report link in firefox-wayland
|
||||
"--set-default MOZ_DBUS_REMOTE 1"
|
||||
"--set-default KICAD8_FOOTPRINT_DIR ${footprints}/share/kicad/footprints"
|
||||
"--set-default KICAD8_SYMBOL_DIR ${symbols}/share/kicad/symbols"
|
||||
"--set-default KICAD8_TEMPLATE_DIR ${template_dir}"
|
||||
]
|
||||
++ optionals (addons != [ ]) (
|
||||
let stockDataPath = symlinkJoin {
|
||||
name = "kicad_stock_data_path";
|
||||
paths = [
|
||||
"${base}/share/kicad"
|
||||
"${addonsJoined}/share/kicad"
|
||||
];
|
||||
};
|
||||
in
|
||||
[ "--set-default NIX_KICAD8_STOCK_DATA_PATH ${stockDataPath}" ]
|
||||
)
|
||||
++ optionals (with3d)
|
||||
[
|
||||
"--set-default KICAD8_3DMODEL_DIR ${packages3d}/share/kicad/3dmodels"
|
||||
]
|
||||
++ optionals (withNgspice) [ "--prefix LD_LIBRARY_PATH : ${libngspice}/lib" ]
|
||||
|
||||
# infinisil's workaround for #39493
|
||||
++ [ "--set GDK_PIXBUF_MODULE_FILE ${librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" ]
|
||||
;
|
||||
|
||||
# why does $makeWrapperArgs have to be added explicitly?
|
||||
# $out and $program_PYTHONPATH don't exist when makeWrapperArgs gets set?
|
||||
installPhase =
|
||||
let
|
||||
bin = if stdenv.isDarwin then "*.app/Contents/MacOS" else "bin";
|
||||
tools = [ "kicad" "pcbnew" "eeschema" "gerbview" "pcb_calculator" "pl_editor" "bitmap2component" ];
|
||||
utils = [ "dxf2idf" "idf2vrml" "idfcyl" "idfrect" "kicad-cli" ];
|
||||
in
|
||||
(concatStringsSep "\n"
|
||||
(flatten [
|
||||
"runHook preInstall"
|
||||
|
||||
(optionalString (withScripting) "buildPythonPath \"${base} $pythonPath\" \n")
|
||||
|
||||
# wrap each of the directly usable tools
|
||||
(map
|
||||
(tool: "makeWrapper ${base}/${bin}/${tool} $out/bin/${tool} $makeWrapperArgs"
|
||||
+ optionalString (withScripting) " --set PYTHONPATH \"$program_PYTHONPATH\""
|
||||
)
|
||||
tools)
|
||||
|
||||
# link in the CLI utils
|
||||
(map (util: "ln -s ${base}/${bin}/${util} $out/bin/${util}") utils)
|
||||
|
||||
"runHook postInstall"
|
||||
])
|
||||
)
|
||||
;
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share
|
||||
ln -s ${base}/share/applications $out/share/applications
|
||||
ln -s ${base}/share/icons $out/share/icons
|
||||
ln -s ${base}/share/mime $out/share/mime
|
||||
ln -s ${base}/share/metainfo $out/share/metainfo
|
||||
'';
|
||||
|
||||
passthru.updateScript = {
|
||||
command = [ ./update.sh "${pname}" ];
|
||||
supportedFeatures = [ "commit" ];
|
||||
};
|
||||
|
||||
meta = rec {
|
||||
description = (if (stable)
|
||||
then "Open Source Electronics Design Automation suite"
|
||||
else if (testing) then "Open Source EDA suite, latest on stable branch"
|
||||
else "Open Source EDA suite, latest on master branch")
|
||||
+ (lib.optionalString (!with3d) ", without 3D models");
|
||||
homepage = "https://www.kicad.org/";
|
||||
longDescription = ''
|
||||
KiCad is an open source software suite for Electronic Design Automation.
|
||||
The Programs handle Schematic Capture, and PCB Layout with Gerber output.
|
||||
'';
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ evils ];
|
||||
platforms = lib.platforms.all;
|
||||
broken = stdenv.isDarwin;
|
||||
mainProgram = "kicad";
|
||||
};
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
{ lib, stdenv
|
||||
, cmake
|
||||
, gettext
|
||||
, libSrc
|
||||
, stepreduce
|
||||
, parallel
|
||||
, zip
|
||||
}:
|
||||
let
|
||||
mkLib = name:
|
||||
stdenv.mkDerivation {
|
||||
pname = "kicad-${name}";
|
||||
version = builtins.substring 0 10 (libSrc name).rev;
|
||||
|
||||
src = libSrc name;
|
||||
|
||||
nativeBuildInputs = [ cmake ]
|
||||
++ lib.optionals (name == "packages3d") [
|
||||
stepreduce
|
||||
parallel
|
||||
zip
|
||||
];
|
||||
|
||||
postInstall = lib.optional (name == "packages3d") ''
|
||||
find $out -type f -name '*.step' | parallel 'stepreduce {} {} && zip -9 {.}.stpZ {} && rm {}'
|
||||
'';
|
||||
|
||||
meta = rec {
|
||||
license = lib.licenses.cc-by-sa-40;
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
symbols = mkLib "symbols";
|
||||
templates = mkLib "templates";
|
||||
footprints = mkLib "footprints";
|
||||
packages3d = mkLib "packages3d";
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
diff --git a/common/paths.cpp b/common/paths.cpp
|
||||
index a74cdd9..790cc58 100644
|
||||
--- a/common/paths.cpp
|
||||
+++ b/common/paths.cpp
|
||||
@@ -151,6 +151,10 @@ wxString PATHS::GetStockDataPath( bool aRespectRunFromBuildDir )
|
||||
{
|
||||
wxString path;
|
||||
|
||||
+ if( wxGetEnv( wxT( "NIX_KICAD8_STOCK_DATA_PATH" ), &path ) ) {
|
||||
+ return path;
|
||||
+ }
|
||||
+
|
||||
if( aRespectRunFromBuildDir && wxGetEnv( wxT( "KICAD_RUN_FROM_BUILD_DIR" ), nullptr ) )
|
||||
{
|
||||
// Allow debugging from build dir by placing relevant files/folders in the build root
|
|
@ -1,260 +0,0 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p coreutils git nix curl jq
|
||||
# shellcheck shell=bash enable=all
|
||||
|
||||
set -e
|
||||
shopt -s inherit_errexit
|
||||
|
||||
# this script will generate versions.nix in the right location
|
||||
# this should contain the versions' revs and hashes
|
||||
# the stable revs are stored only for ease of skipping
|
||||
|
||||
# by default nix-prefetch-url uses XDG_RUNTIME_DIR as tmp
|
||||
# which is /run/user/1000, which defaults to 10% of your RAM
|
||||
# unless you have over 64GB of ram that'll be insufficient
|
||||
# resulting in "tar: no space left on device" for packages3d
|
||||
# hence:
|
||||
export TMPDIR=/tmp
|
||||
|
||||
# if something goes unrepairably wrong, run 'update.sh all clean'
|
||||
|
||||
# TODO
|
||||
# support parallel instances for each pname
|
||||
# currently risks reusing old data
|
||||
# no getting around manually checking if the build product works...
|
||||
# if there is, default to commiting?
|
||||
# won't work when running in parallel?
|
||||
# remove items left in /nix/store?
|
||||
# reuse hashes of already checked revs (to avoid redownloading testing's packages3d)
|
||||
|
||||
# nixpkgs' update.nix passes in UPDATE_NIX_PNAME to indicate which package is being updated
|
||||
# assigning a default value to that as shellcheck doesn't like the use of unassigned variables
|
||||
: "${UPDATE_NIX_PNAME:=""}"
|
||||
# update.nix can also parse JSON output of this script to formulate a commit
|
||||
# this requires we collect the version string in the old versions.nix for the updated package
|
||||
old_version=""
|
||||
new_version=""
|
||||
|
||||
|
||||
# get the latest tag that isn't an RC or *.99
|
||||
latest_tags="$(git ls-remote --tags --sort -version:refname https://gitlab.com/kicad/code/kicad.git)"
|
||||
# using a scratch variable to ensure command failures get caught (SC2312)
|
||||
scratch="$(grep -o 'refs/tags/[0-9]*\.[0-9]*\.[0-9]*$' <<< "${latest_tags}")"
|
||||
scratch="$(grep -ve '\.99' -e '\.9\.9' <<< "${scratch}")"
|
||||
scratch="$(sed -n '1p' <<< "${scratch}")"
|
||||
latest_tag="$(cut -d '/' -f 3 <<< "${scratch}")"
|
||||
|
||||
# get the latest branch name for testing
|
||||
branches="$(git ls-remote --heads --sort -version:refname https://gitlab.com/kicad/code/kicad.git)"
|
||||
scratch="$(grep -o 'refs/heads/[0-9]*\.[0-9]*$' <<< "${branches}")"
|
||||
scratch="$(sed -n '1p' <<< "${scratch}")"
|
||||
testing_branch="$(cut -d '/' -f 3 <<< "${scratch}")"
|
||||
|
||||
# "latest_tag" and "master" directly refer to what we want
|
||||
# "testing" uses "testing_branch" found above
|
||||
all_versions=( "${latest_tag}" testing master )
|
||||
|
||||
prefetch="nix-prefetch-url --unpack --quiet"
|
||||
|
||||
clean=""
|
||||
check_stable=""
|
||||
check_testing=1
|
||||
check_unstable=1
|
||||
commit=""
|
||||
|
||||
for arg in "$@" "${UPDATE_NIX_PNAME}"; do
|
||||
case "${arg}" in
|
||||
help|-h|--help) echo "Read me!" >&2; exit 1; ;;
|
||||
kicad|kicad-small|release|tag|stable|5*|6*|7*|8*) check_stable=1; check_testing=""; check_unstable="" ;;
|
||||
*testing|kicad-testing-small) check_testing=1; check_unstable="" ;;
|
||||
*unstable|*unstable-small|master|main) check_unstable=1; check_testing="" ;;
|
||||
latest|now|today) check_unstable=1; check_testing=1 ;;
|
||||
all|both|full) check_stable=1; check_testing=1; check_unstable=1 ;;
|
||||
clean|fix|*fuck) check_stable=1; check_testing=1; check_unstable=1; clean=1 ;;
|
||||
commit) commit=1 ;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
|
||||
here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
commit_date() {
|
||||
gitlab_json="$(curl -s https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/commits/"$1")"
|
||||
commit_created="$(jq .created_at --raw-output <<< "${gitlab_json}")"
|
||||
date --date="${commit_created}" --iso-8601 --utc
|
||||
}
|
||||
|
||||
file="${here}/versions.nix"
|
||||
# just in case this runs in parallel
|
||||
tmp="${here}/,versions.nix.${RANDOM}"
|
||||
|
||||
libs=( symbols templates footprints packages3d )
|
||||
|
||||
get_rev() {
|
||||
git ls-remote "$@"
|
||||
}
|
||||
|
||||
gitlab="https://gitlab.com/kicad"
|
||||
# append commit hash or tag
|
||||
src_pre="https://gitlab.com/api/v4/projects/kicad%2Fcode%2Fkicad/repository/archive.tar.gz?sha="
|
||||
lib_pre="https://gitlab.com/api/v4/projects/kicad%2Flibraries%2Fkicad-"
|
||||
lib_mid="/repository/archive.tar.gz?sha="
|
||||
|
||||
# number of items updated
|
||||
count=0
|
||||
|
||||
printf "Latest tag is %s\n" "${latest_tag}" >&2
|
||||
|
||||
if [[ ! -f ${file} ]]; then
|
||||
echo "No existing file, generating from scratch" >&2
|
||||
check_stable=1; check_testing=1; check_unstable=1; clean=1
|
||||
fi
|
||||
|
||||
printf "Writing %s\n" "${tmp}" >&2
|
||||
|
||||
# not a dangling brace, grouping the output to redirect to file
|
||||
{
|
||||
|
||||
printf "# This file was generated by update.sh\n\n"
|
||||
printf "{\n"
|
||||
|
||||
for version in "${all_versions[@]}"; do
|
||||
|
||||
src_version=${version};
|
||||
lib_version=${version};
|
||||
# testing is the stable branch on the main repo
|
||||
# but the libraries don't have such a branch
|
||||
# only the latest release tag and a master branch
|
||||
if [[ ${version} == "testing" ]]; then
|
||||
src_version=${testing_branch};
|
||||
lib_version=${latest_tag};
|
||||
fi
|
||||
|
||||
if [[ ${version} == "master" ]]; then
|
||||
pname="kicad-unstable"
|
||||
elif [[ ${version} == "testing" ]]; then
|
||||
pname="kicad-testing"
|
||||
else
|
||||
pname="kicad"
|
||||
fi
|
||||
|
||||
# skip a version if we don't want to check it
|
||||
if [[ (-n ${check_stable} && ${version} != "master" && ${version} != "testing") \
|
||||
|| (-n ${check_testing} && ${version} == "testing") \
|
||||
|| (-n ${check_unstable} && ${version} == "master" ) ]]; then
|
||||
|
||||
now=$(commit_date "${src_version}")
|
||||
|
||||
if [[ ${version} == "master" ]]; then
|
||||
pname="kicad-unstable"
|
||||
new_version="${now}"
|
||||
elif [[ ${version} == "testing" ]]; then
|
||||
pname="kicad-testing"
|
||||
new_version="${testing_branch}-${now}"
|
||||
else
|
||||
pname="kicad"
|
||||
new_version="${version}"
|
||||
fi
|
||||
|
||||
printf "\nChecking %s\n" "${pname}" >&2
|
||||
|
||||
printf "%2s\"%s\" = {\n" "" "${pname}"
|
||||
printf "%4skicadVersion = {\n" ""
|
||||
printf "%6sversion =\t\t\t\"%s\";\n" "" "${new_version}"
|
||||
printf "%6ssrc = {\n" ""
|
||||
|
||||
echo "Checking src" >&2
|
||||
scratch="$(get_rev "${gitlab}"/code/kicad.git "${src_version}")"
|
||||
src_rev="$(cut -f1 <<< "${scratch}")"
|
||||
has_rev="$(grep -sm 1 "\"${pname}\"" -A 4 "${file}" | grep -sm 1 "${src_rev}" || true)"
|
||||
has_hash="$(grep -sm 1 "\"${pname}\"" -A 5 "${file}" | grep -sm 1 "sha256" || true)"
|
||||
old_version="$(grep -sm 1 "\"${pname}\"" -A 3 "${file}" | grep -sm 1 "version" | awk -F "\"" '{print $2}' || true)"
|
||||
|
||||
if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
|
||||
echo "Reusing old ${pname}.src.sha256, already latest .rev at ${old_version}" >&2
|
||||
scratch=$(grep -sm 1 "\"${pname}\"" -A 5 "${file}")
|
||||
grep -sm 1 "rev" -A 1 <<< "${scratch}"
|
||||
else
|
||||
prefetched="$(${prefetch} "${src_pre}${src_rev}")"
|
||||
printf "%8srev =\t\t\t\"%s\";\n" "" "${src_rev}"
|
||||
printf "%8ssha256 =\t\t\"%s\";\n" "" "${prefetched}"
|
||||
count=$((count+1))
|
||||
fi
|
||||
printf "%6s};\n" ""
|
||||
printf "%4s};\n" ""
|
||||
|
||||
printf "%4slibVersion = {\n" ""
|
||||
printf "%6sversion =\t\t\t\"%s\";\n" "" "${new_version}"
|
||||
printf "%6slibSources = {\n" ""
|
||||
|
||||
for lib in "${libs[@]}"; do
|
||||
echo "Checking ${lib}" >&2
|
||||
url="${gitlab}/libraries/kicad-${lib}.git"
|
||||
scratch="$(get_rev "${url}" "${lib_version}")"
|
||||
scratch="$(cut -f1 <<< "${scratch}")"
|
||||
lib_rev="$(tail -n1 <<< "${scratch}")"
|
||||
has_rev="$(grep -sm 1 "\"${pname}\"" -A 19 "${file}" | grep -sm 1 "${lib_rev}" || true)"
|
||||
has_hash="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}" | grep -sm 1 "${lib}.sha256" || true)"
|
||||
if [[ -n ${has_rev} && -n ${has_hash} && -z ${clean} ]]; then
|
||||
echo "Reusing old kicad-${lib}-${new_version}.src.sha256, already latest .rev" >&2
|
||||
scratch="$(grep -sm 1 "\"${pname}\"" -A 20 "${file}")"
|
||||
grep -sm 1 "${lib}" -A 1 <<< "${scratch}"
|
||||
else
|
||||
prefetched="$(${prefetch} "${lib_pre}${lib}${lib_mid}${lib_rev}")"
|
||||
printf "%8s%s.rev =\t" "" "${lib}"
|
||||
case "${lib}" in
|
||||
symbols|templates) printf "\t" ;; *) ;;
|
||||
esac
|
||||
printf "\"%s\";\n" "${lib_rev}"
|
||||
printf "%8s%s.sha256 =\t\"%s\";\n" "" "${lib}" "${prefetched}"
|
||||
count=$((count+1))
|
||||
fi
|
||||
done
|
||||
printf "%6s};\n" ""
|
||||
printf "%4s};\n" ""
|
||||
printf "%2s};\n" ""
|
||||
else
|
||||
printf "\nReusing old %s\n" "${pname}" >&2
|
||||
grep -sm 1 "\"${pname}\"" -A 21 "${file}"
|
||||
fi
|
||||
done
|
||||
printf "}\n"
|
||||
} > "${tmp}"
|
||||
|
||||
if grep '""' "${tmp}"; then
|
||||
echo "empty value detected, out of space?" >&2
|
||||
exit "1"
|
||||
fi
|
||||
|
||||
mv "${tmp}" "${file}"
|
||||
|
||||
printf "\nFinished\nMoved output to %s\n\n" "${file}" >&2
|
||||
|
||||
if [[ ${count} -gt 0 ]]; then
|
||||
if [[ ${count} -gt 1 ]]; then s="s"; else s=""; fi
|
||||
echo "${count} revision${s} changed" >&2
|
||||
if [[ -n ${commit} ]]; then
|
||||
git commit -am "$(printf "kicad: automatic update of %s item%s\n" "${count}" "${s}")"
|
||||
fi
|
||||
echo "Please confirm the new versions.nix works before making a PR." >&2
|
||||
else
|
||||
echo "No changes, those checked are up to date" >&2
|
||||
fi
|
||||
|
||||
# using UPDATE_NIX_ATTR_PATH to detect if this is being called from update.nix
|
||||
# and output JSON to describe the changes
|
||||
if [[ -n ${UPDATE_NIX_ATTR_PATH} ]]; then
|
||||
|
||||
if [[ ${count} -eq 0 ]]; then echo "[{}]"; exit 0; fi
|
||||
|
||||
jq -n \
|
||||
--arg attrpath "${UPDATE_NIX_PNAME}" \
|
||||
--arg oldversion "${old_version}" \
|
||||
--arg newversion "${new_version}" \
|
||||
--arg file "${file}" \
|
||||
'[{
|
||||
"attrPath": $attrpath,
|
||||
"oldVersion": $oldversion,
|
||||
"newVersion": $newversion,
|
||||
"files": [ $file ]
|
||||
}]'
|
||||
fi
|
|
@ -1,70 +0,0 @@
|
|||
# This file was generated by update.sh
|
||||
|
||||
{
|
||||
"kicad" = {
|
||||
kicadVersion = {
|
||||
version = "8.0.2";
|
||||
src = {
|
||||
rev = "2d5434e9abf570ffd19b22c90963ea71cfb91d3d";
|
||||
sha256 = "1n1jj7559xd4ib4c6ybya75a5hbarnkfy8gxzxfw58wdb4lxxmzz";
|
||||
};
|
||||
};
|
||||
libVersion = {
|
||||
version = "8.0.2";
|
||||
libSources = {
|
||||
symbols.rev = "099ac0c8ac402a685fde00b1369e34a116e29661";
|
||||
symbols.sha256 = "0w333f89yw2m0zlpkg0k6hfwlj10snm8laihdjnsb22asyz4pbhn";
|
||||
templates.rev = "2e2da58e02707d327d59d4101c401a82dc9a26f6";
|
||||
templates.sha256 = "073a6cyvzzy0vmkj3ip4ziq7b7pcizs70nm5acw838dxghjfyv3v";
|
||||
footprints.rev = "e8c30550cde4945cbe1bf30cccf0b3c1e2bda6c6";
|
||||
footprints.sha256 = "10j8qjljc1fv8k4zp3zn0da33g57hn6pgrgmbgp18dsa539xvxcz";
|
||||
packages3d.rev = "249f7947587529026e1676cd70c8d7493a8d8162";
|
||||
packages3d.sha256 = "04gvfb54jhnww2qwrxc27wpyrvmjasdc4xhr0ridl7dglh4qcp35";
|
||||
};
|
||||
};
|
||||
};
|
||||
# "kicad-testing" = {
|
||||
# kicadVersion = {
|
||||
# version = "8.0-2024-02-23";
|
||||
# src = {
|
||||
# rev = "14d71c8ca6b48d2eb956bb069acf05a37b1b2652";
|
||||
# sha256 = "0xqd0xbpnvsvba75526nwgzr8l2cfxy99sjmg13sjxfx7rq16kqi";
|
||||
# };
|
||||
# };
|
||||
# libVersion = {
|
||||
# version = "8.0-2024-02-23";
|
||||
# libSources = {
|
||||
# symbols.rev = "e228d4e8b295364e90e36c57f4023d8285ba88cd";
|
||||
# symbols.sha256 = "049h2a7yn6ks8sybppixa872dbvyd0rwf9r6nixvdg6d13fl6rwf";
|
||||
# templates.rev = "2e00c233b67e35323f90d04c190bf70237a252f2";
|
||||
# templates.sha256 = "0m9bggz3cm27kqpjjwxy19mqzk0c69bywcjkqcni7kafr21c6k4z";
|
||||
# footprints.rev = "6e5329a6d4aaa81290e23af3eba88f505c2f61b0";
|
||||
# footprints.sha256 = "0ypjlbmzmcl3pha3q2361va70c988b1drxy8320gm66jkzfc21a1";
|
||||
# packages3d.rev = "d1e521228d9f5888836b1a6a35fb05fb925456fa";
|
||||
# packages3d.sha256 = "0lcy1av7ixg1f7arflk50jllpc1749sfvf3h62hkxsz97wkr97xj";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# "kicad-unstable" = {
|
||||
# kicadVersion = {
|
||||
# version = "2024-02-23";
|
||||
# src = {
|
||||
# rev = "b7b64d959f37f00bb0d14b007c3b3908196e1024";
|
||||
# sha256 = "1gl7mjqpmqq4m55z6crwb77983g00gi2161ichsc7hsfhs4c8grh";
|
||||
# };
|
||||
# };
|
||||
# libVersion = {
|
||||
# version = "2024-02-23";
|
||||
# libSources = {
|
||||
# symbols.rev = "8b0c343d8694fe0a968e5c4af69fd161bacf7da1";
|
||||
# symbols.sha256 = "049h2a7yn6ks8sybppixa872dbvyd0rwf9r6nixvdg6d13fl6rwf";
|
||||
# templates.rev = "0a6c4f798a68a5c639d54b4d3093460ab9267816";
|
||||
# templates.sha256 = "0m9bggz3cm27kqpjjwxy19mqzk0c69bywcjkqcni7kafr21c6k4z";
|
||||
# footprints.rev = "ded6b053460faae5783c538a38e91e2b4bddcf2e";
|
||||
# footprints.sha256 = "035bf37n4vrihaj4zfdncisdx9fly1vya7lhkxhlsbv5blpi4a5y";
|
||||
# packages3d.rev = "984667325076d4e50dab14e755aeacf97f42194c";
|
||||
# packages3d.sha256 = "0lkaxv02h4sxrnm8zr17wl9d07mazlisad78r35gry741i362cdg";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
commit 6a72fd032405515e468797be91b5a6ebcbbb5fd8
|
||||
Author: Evils <evils.devils@protonmail.com>
|
||||
Date: Wed Nov 23 19:49:13 2022 +0100
|
||||
|
||||
ensure new projects are writable
|
||||
|
||||
diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp
|
||||
index 7ee8090858..391514519c 100644
|
||||
--- a/kicad/kicad_manager_frame.cpp
|
||||
+++ b/kicad/kicad_manager_frame.cpp
|
||||
@@ -638,6 +638,12 @@ void KICAD_MANAGER_FRAME::CreateNewProject( const wxFileName& aProjectFileName,
|
||||
|
||||
// wxFFile dtor will close the file
|
||||
}
|
||||
+
|
||||
+ if( destFileName.IsOk() && !destFileName.IsFileWritable() )
|
||||
+ {
|
||||
+ destFileName.SetPermissions(0644);
|
||||
+ }
|
||||
+
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/kicad/project_template.cpp b/kicad/project_template.cpp
|
||||
index bf951fcddb..2bef94326b 100644
|
||||
--- a/kicad/project_template.cpp
|
||||
+++ b/kicad/project_template.cpp
|
||||
@@ -282,6 +282,21 @@ bool PROJECT_TEMPLATE::CreateProject( wxFileName& aNewProjectPath, wxString* aEr
|
||||
|
||||
result = false;
|
||||
}
|
||||
+ else if( !destFile.IsFileWritable() && !destFile.SetPermissions(0644) )
|
||||
+ {
|
||||
+ if( aErrorMsg )
|
||||
+ {
|
||||
+ if( !aErrorMsg->empty() )
|
||||
+ *aErrorMsg += "\n";
|
||||
+
|
||||
+ wxString msg;
|
||||
+
|
||||
+ msg.Printf( _( "Cannot make file writable: '%s'." ), destFile.GetFullPath() );
|
||||
+ *aErrorMsg += msg;
|
||||
+ }
|
||||
+
|
||||
+ result = false;
|
||||
+ }
|
||||
}
|
||||
|
||||
return result;
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
fetchgit,
|
||||
buildDunePackage,
|
||||
|
||||
ppxlib,
|
||||
uunf
|
||||
}:
|
||||
buildDunePackage rec {
|
||||
pname = "ppx_unicode";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.lain.faith/haskal/ppx_unicode.git";
|
||||
rev = version;
|
||||
hash = "sha256-WUrVW/JndDoMLPx5VSQmlcfafxPxwQe2l7CuTnxtV7Q=";
|
||||
};
|
||||
|
||||
minimalOcamlVersion = "5.1";
|
||||
dontStrip = true;
|
||||
|
||||
nativeBuildInputs = [ ppxlib ];
|
||||
propagatedBuildInputs = [ ppxlib uunf ];
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
{
|
||||
fetchgit,
|
||||
buildDunePackage,
|
||||
|
||||
ptime,
|
||||
ppxlib,
|
||||
ppx_unicode
|
||||
}:
|
||||
buildDunePackage rec {
|
||||
pname = "xlog";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.lain.faith/haskal/xlog.git";
|
||||
rev = version;
|
||||
hash = "sha256-m+eIil9ChU+/TqCnBvVc/yOrfvQGmeDL7qoa7+v7fHo=";
|
||||
};
|
||||
|
||||
minimalOcamlVersion = "5.1";
|
||||
dontStrip = true;
|
||||
|
||||
buildInputs = [ ppx_unicode ];
|
||||
propagatedBuildInputs = [ ptime ppxlib ];
|
||||
nativeBuildInputs = [ ppxlib ppx_unicode ];
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
import argparse
|
||||
import sys
|
||||
|
||||
from . import compatibility, validateStream
|
||||
from .formatter.text_plain import Formatter
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="W3C feedvalidator")
|
||||
parser.add_argument("-b", "--base", type=str, required=False, default="",
|
||||
help="Base URL of document")
|
||||
parser.add_argument("file", type=argparse.FileType("rb"), help="File to validate")
|
||||
args = parser.parse_args()
|
||||
|
||||
events = validateStream(args.file, base=args.base)['loggedEvents']
|
||||
events = compatibility.AA(events)
|
||||
fmt = Formatter(events)
|
||||
if len(fmt) > 0:
|
||||
for f in fmt:
|
||||
print(f)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
stdenvNoCC,
|
||||
buildPythonPackage,
|
||||
|
||||
setuptools,
|
||||
wheel,
|
||||
|
||||
lxml,
|
||||
html5lib,
|
||||
rdflib
|
||||
}:
|
||||
|
||||
let feedvalidator_src = stdenvNoCC.mkDerivation {
|
||||
name = "feedvalidator-src";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "w3c";
|
||||
repo = "feedvalidator";
|
||||
rev = "1bbf6d9c68ef074b824c452fbc5d1f7817e6adae";
|
||||
sha256 = "sha256-sHc6cgjSNcd0BcYYeybGPayQNV8SK9GjUglWg9iOQko=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cp -r src/feedvalidator/ "$out"
|
||||
cp "${./bin.py}" "$out/feedvalidator/bin.py"
|
||||
cp requirements.txt "$out"
|
||||
cat > "$out"/pyproject.toml <<EOF
|
||||
[build-system]
|
||||
requires = ["setuptools>=60", "wheel"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
[project]
|
||||
name = "feedvalidator"
|
||||
version = "0.0.1+git"
|
||||
requires-python = ">=3.11"
|
||||
dynamic = ["dependencies"]
|
||||
[project.scripts]
|
||||
feedvalidator = "feedvalidator.bin:main"
|
||||
[tool.setuptools.dynamic]
|
||||
dependencies = {file = ["requirements.txt"]}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
in buildPythonPackage rec {
|
||||
pname = "feedvalidator";
|
||||
version = "git";
|
||||
pyproject = true;
|
||||
|
||||
src = feedvalidator_src;
|
||||
|
||||
nativeBuildInputs = [ setuptools wheel ];
|
||||
|
||||
# this should match requirements.txt
|
||||
propagatedBuildInputs = [ lxml html5lib rdflib ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "feedvalidator" ];
|
||||
}
|
|
@ -1,252 +0,0 @@
|
|||
From 5b92986cb874bcb441c9111c49c80b8135105574 Mon Sep 17 00:00:00 2001
|
||||
From: xenia <xenia@awoo.systems>
|
||||
Date: Mon, 11 Nov 2024 15:20:58 -0500
|
||||
Subject: [PATCH] Add Cargo.lock
|
||||
|
||||
---
|
||||
.gitignore | 4 -
|
||||
Cargo.lock | 218 +++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 218 insertions(+), 4 deletions(-)
|
||||
create mode 100644 Cargo.lock
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 50281a4..f2e972d 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -2,9 +2,5 @@
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
|
||||
-# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
|
||||
-# More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock
|
||||
-Cargo.lock
|
||||
-
|
||||
# These are backup files generated by rustfmt
|
||||
**/*.rs.bk
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
new file mode 100644
|
||||
index 0000000..198f18c
|
||||
--- /dev/null
|
||||
+++ b/Cargo.lock
|
||||
@@ -0,0 +1,218 @@
|
||||
+# This file is automatically @generated by Cargo.
|
||||
+# It is not intended for manual editing.
|
||||
+version = 3
|
||||
+
|
||||
+[[package]]
|
||||
+name = "aho-corasick"
|
||||
+version = "1.1.3"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||
+dependencies = [
|
||||
+ "memchr",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "ansi_term"
|
||||
+version = "0.12.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
||||
+dependencies = [
|
||||
+ "winapi",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "atty"
|
||||
+version = "0.2.14"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||
+dependencies = [
|
||||
+ "hermit-abi 0.1.19",
|
||||
+ "libc",
|
||||
+ "winapi",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "bitflags"
|
||||
+version = "1.3.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "byteorder"
|
||||
+version = "1.5.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "clap"
|
||||
+version = "2.34.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
||||
+dependencies = [
|
||||
+ "ansi_term",
|
||||
+ "atty",
|
||||
+ "bitflags",
|
||||
+ "strsim",
|
||||
+ "textwrap",
|
||||
+ "unicode-width",
|
||||
+ "vec_map",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "crossbeam-channel"
|
||||
+version = "0.5.13"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
|
||||
+dependencies = [
|
||||
+ "crossbeam-utils",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "crossbeam-utils"
|
||||
+version = "0.8.20"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "fnv"
|
||||
+version = "1.0.7"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "hermit-abi"
|
||||
+version = "0.1.19"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||
+dependencies = [
|
||||
+ "libc",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "hermit-abi"
|
||||
+version = "0.3.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "libc"
|
||||
+version = "0.2.162"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "memchr"
|
||||
+version = "2.7.4"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "num_cpus"
|
||||
+version = "1.16.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
|
||||
+dependencies = [
|
||||
+ "hermit-abi 0.3.9",
|
||||
+ "libc",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "pbr"
|
||||
+version = "1.1.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ed5827dfa0d69b6c92493d6c38e633bbaa5937c153d0d7c28bf12313f8c6d514"
|
||||
+dependencies = [
|
||||
+ "crossbeam-channel",
|
||||
+ "libc",
|
||||
+ "winapi",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "rbasefind"
|
||||
+version = "0.1.3"
|
||||
+dependencies = [
|
||||
+ "byteorder",
|
||||
+ "clap",
|
||||
+ "fnv",
|
||||
+ "num_cpus",
|
||||
+ "pbr",
|
||||
+ "regex",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "regex"
|
||||
+version = "1.11.1"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||
+dependencies = [
|
||||
+ "aho-corasick",
|
||||
+ "memchr",
|
||||
+ "regex-automata",
|
||||
+ "regex-syntax",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "regex-automata"
|
||||
+version = "0.4.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||
+dependencies = [
|
||||
+ "aho-corasick",
|
||||
+ "memchr",
|
||||
+ "regex-syntax",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "regex-syntax"
|
||||
+version = "0.8.5"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "strsim"
|
||||
+version = "0.8.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "textwrap"
|
||||
+version = "0.11.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
||||
+dependencies = [
|
||||
+ "unicode-width",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "unicode-width"
|
||||
+version = "0.1.14"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "vec_map"
|
||||
+version = "0.8.2"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "winapi"
|
||||
+version = "0.3.9"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||
+dependencies = [
|
||||
+ "winapi-i686-pc-windows-gnu",
|
||||
+ "winapi-x86_64-pc-windows-gnu",
|
||||
+]
|
||||
+
|
||||
+[[package]]
|
||||
+name = "winapi-i686-pc-windows-gnu"
|
||||
+version = "0.4.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||
+
|
||||
+[[package]]
|
||||
+name = "winapi-x86_64-pc-windows-gnu"
|
||||
+version = "0.4.0"
|
||||
+source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
--
|
||||
2.44.1
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "rbasefind";
|
||||
version = "0.1.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sgayou";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-2eheLrnf9YWVHBGMNvmCoSclis6ThxE2ImLTZqYv8hg=";
|
||||
};
|
||||
cargoPatches = [ ./0001-Add-Cargo.lock.patch ];
|
||||
cargoHash = "sha256-H8bsnJ5nDTr2fnviXoamaXOTRQiimVOKcHFHt5/RJJU=";
|
||||
|
||||
meta = {
|
||||
description = "A firmware base address search tool";
|
||||
homepage = "https://github.com/sgayou/rbasefind";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [];
|
||||
|
||||
# something about the dependencies is off, and it never terminates without further manual
|
||||
# patches. fixing that is needed
|
||||
broken = true;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue