Compare commits

..

46 Commits

Author SHA1 Message Date
xenia 4cbea3dc01 wip ghidra python packaging 2025-09-14 18:35:07 -04:00
xenia 7914014c1d alphabetize 2025-09-14 01:51:46 -04:00
xenia 13548ea5ed fix kaiju 2025-09-14 01:35:15 -04:00
xenia 5fd38d270e ghidra-extensions.kaiju: fix z3 java output 2025-09-13 23:28:58 -04:00
xenia 6d766dd63c fix ghidra extensions 2025-09-13 23:20:59 -04:00
xenia 6bba7ab0c4 fix binsync metadata 2025-09-13 23:20:31 -04:00
xenia 6b6dd9c66f ghidra: fix extension build issues 2025-09-13 22:57:45 -04:00
xenia 292b3bdcec update todo 2025-09-12 02:42:34 -04:00
xenia fda38bd2cf add programs.idapro 2025-09-12 02:38:04 -04:00
xenia cf817800f5 add ghidra binsync extension 2025-09-12 01:54:04 -04:00
xenia 29532b3561 fix python overrides 2025-09-12 01:00:01 -04:00
xenia 219b736565 add binsync 2025-09-12 00:46:37 -04:00
xenia d5835d211c update readme 2025-09-12 00:35:39 -04:00
xenia d67164126a add patdiff-bin 2025-09-12 00:34:11 -04:00
xenia 80299ca3d7 update todo 2025-09-12 00:30:01 -04:00
xenia 7d914c78d2 add idapro packaging 2025-09-12 00:28:46 -04:00
xenia fd2baa1c23 move ghidra location 2025-09-11 18:50:34 -04:00
xenia 8fe88edc61 meow 2025-09-11 18:10:27 -04:00
xenia f21591a29f add dragnpkgs version of programs.ghidra 2025-09-11 18:05:35 -04:00
xenia b420af3043 update readme 2025-09-11 16:01:43 -04:00
xenia 533960accd fix docs 2025-09-11 15:47:18 -04:00
xenia bf091ff8fe cleanup + docs 2025-09-11 15:45:52 -04:00
xenia 55078cdb82 satisfactory dedi: virtualize additional dir 2025-09-11 14:38:24 -04:00
xenia 6b8b667e48 update satisfactory dedi 2025-09-11 14:16:11 -04:00
xenia ac53b7145d remove kicad-xenia 2025-09-06 20:03:38 -04:00
xenia f1980a782f dual license ppx_unicode 2025-09-06 19:54:51 -04:00
xenia 567a47da23 fix ocaml pacakges 2025-09-06 19:47:57 -04:00
xenia f71b45c677 add new module for satisfactory server 1.0 2025-09-01 22:54:35 -04:00
xenia 3b71438ff4 update nixpkgs/lix 2025-08-31 17:44:41 -04:00
xenia 49a730f641 update nixpkgs 2025-08-03 16:19:57 -04:00
xenia de53bfd455 oops 2025-07-07 21:36:44 -04:00
xenia f71602bcff update nixpkgs and lix 2025-07-07 21:19:57 -04:00
xenia 1557fcbf00 rollback lix 2025-06-28 20:36:18 -04:00
xenia b157a5ca31 update to lix 2.92.2 2025-06-24 22:34:42 -04:00
xenia 83be7c5296 whoops 2025-06-22 18:21:43 -04:00
xenia d181eac6a3 pkgs: fix zbasefind 2025-06-18 23:34:47 -04:00
xenia c1bd5b32d6 pkgs: add moloch(-dragon) 2025-06-11 01:12:10 -04:00
xenia 76cbd04361 templates: beamer: use new style texlive syntax 2025-06-10 00:08:55 -04:00
xenia 6933e33e80 templates: update gitignore 2025-06-09 23:03:47 -04:00
xenia 9c6a46b398 templates: update beamer 2025-06-09 22:16:51 -04:00
xenia b33745acb8 templates: update beamer template 2025-06-09 22:16:04 -04:00
xenia 71af6415d2 templates: update beamer template 2025-06-09 22:03:56 -04:00
xenia 37050f846b templates: add beamer template 2025-06-09 21:19:03 -04:00
xenia 6223d67e8f flake: add `apps` to mkFlake transformed keys 2025-06-09 21:03:14 -04:00
xenia 8674b22d5c flake: rework the nixpkgs init code 2025-06-06 00:24:49 -04:00
xenia 946bbc1522 update nixpkgs to 25.05 2025-05-29 15:13:56 -04:00
60 changed files with 492 additions and 1650 deletions

View File

@ -221,13 +221,6 @@ makeSquashFs {
create a packaged nix distribution with the given packages in it for weird HPC systems. go read the 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 source to find out what it does; i don't recommend using this if you're not me
### [`instrumentedFetch`](./overlay.nix)
overrides the given fetch derivation (eg `fetchzip` or `fetchgit`) and logs the hash of the result.
this enables automatically determining and filling in the hash value when initially developing the
nix expression for a package. the log will contain text in the format
`FETCH_HASH:<hash>:FETCH_HASH`.
### [`lib.licenses.fyptl`](./lib/licenses/fyptl.nix) ### [`lib.licenses.fyptl`](./lib/licenses/fyptl.nix)
The "Fuck You, Pirate This License" (FYPTL) is the author's version of a software non-license, which The "Fuck You, Pirate This License" (FYPTL) is the author's version of a software non-license, which
@ -585,16 +578,6 @@ another ALSA plugin that lives in a separate package
export ALSA_PLUGIN_DIR=$(nix eval -f '<nixpkgs>' --raw pipewire)/lib/alsa-lib export ALSA_PLUGIN_DIR=$(nix eval -f '<nixpkgs>' --raw pipewire)/lib/alsa-lib
``` ```
### [`racket`, `racket-minimal`, `racketPackages`](./pkgs/racket)
dragnpkgs contains a slightly customized version of racket and racket-minimal (to include some minor
bugfixes that are pending upstream stable release).
additionally, a new scope `racketPackages` provides some packages from
<https://pkgs.racket-lang.org>, automatically converted from their catalog information and
`info.rkt` by [racket2nix](https://git.lain.faith/haskal/racket-nix). see the readme on that repo
for information on how to use `buildRacketPackage` and `makeRacketEnv`
### [`satisfactory-dedicated-server`](./pkgs/games/satisfactory-dedicated-server) ### [`satisfactory-dedicated-server`](./pkgs/games/satisfactory-dedicated-server)
The dedicated server for [Satisfactory](https://satisfactorygame.com), with packaging steps to make The dedicated server for [Satisfactory](https://satisfactorygame.com), with packaging steps to make

View File

@ -5,8 +5,9 @@
"locked": { "locked": {
"lastModified": 1756125859, "lastModified": 1756125859,
"narHash": "sha256-6a+PWILmqHCs9B5eIBLg6HSZ8jYweZpgOWO8FlyVwYI=", "narHash": "sha256-6a+PWILmqHCs9B5eIBLg6HSZ8jYweZpgOWO8FlyVwYI=",
"rev": "d3292125035b04df00d01549a26e948631fabe1e",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz" "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/d3292125035b04df00d01549a26e948631fabe1e.tar.gz?rev=d3292125035b04df00d01549a26e948631fabe1e"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@ -15,16 +16,16 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1763283776, "lastModified": 1756617294,
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "narHash": "sha256-aGnd4AHIYCWQKChAkHPpX+YYCt7pA6y2LFFA/s8q0wQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "rev": "b4c2c57c31e68544982226d07e4719a2d86302a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-25.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }

View File

@ -2,7 +2,7 @@
description = "dragnpkgs together with nixpkgs and lix"; description = "dragnpkgs together with nixpkgs and lix";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
lix-module = { lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz"; url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz";
@ -28,18 +28,18 @@
# self reference in the registry to be downloadable by URL in case it makes it into a # self reference in the registry to be downloadable by URL in case it makes it into a
# flake.lock # flake.lock
meta.registry-entry = { meta.registry-entry = {
from = { id = "dragnpkgs-unstable"; type = "indirect"; }; from = { id = "dragnpkgs"; type = "indirect"; };
to = { to = {
type = "git"; type = "git";
url = "https://git.lain.faith/haskal/dragnpkgs.git"; url = "https://git.lain.faith/haskal/dragnpkgs.git";
ref = "main"; ref = "nixos-25.05";
} // self.lib.filterAttrs } // self.lib.filterAttrs
(n: _: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash") (n: _: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash")
self; self;
}; };
# the nix path entry for self # the nix path entry for self
meta.path-entry = "dragnpkgs-unstable=flake:dragnpkgs-unstable"; meta.path-entry = "dragnpkgs=flake:dragnpkgs";
lib = (lib-base.extend (import ./lib/overlay.nix)).extend (final: prev: { lib = (lib-base.extend (import ./lib/overlay.nix)).extend (final: prev: {
# initializes regular upstream nixpkgs with the given arguments # initializes regular upstream nixpkgs with the given arguments
@ -154,17 +154,17 @@
}; };
}; };
config.nix.registry.dragnpkgs-unstable = config.nix.registry.dragnpkgs =
lib.mkIf config.dragnpkgs.setFlakeRegistry self.meta.registry-entry; lib.mkIf config.dragnpkgs.setFlakeRegistry self.meta.registry-entry;
config.nix.registry.nixpkgs = lib.mkIf config.dragnpkgs.setNixpkgsFlakeAlias { config.nix.registry.nixpkgs = lib.mkIf config.dragnpkgs.setNixpkgsFlakeAlias {
from = { id = "nixpkgs"; type = "indirect"; }; from = { id = "nixpkgs"; type = "indirect"; };
to = { id = "dragnpkgs-unstable"; type = "indirect"; }; to = { id = "dragnpkgs"; type = "indirect"; };
}; };
config.nix.registry.templates = lib.mkIf config.dragnpkgs.setTemplatesFlakeAlias { config.nix.registry.templates = lib.mkIf config.dragnpkgs.setTemplatesFlakeAlias {
from = { id = "templates"; type = "indirect"; }; from = { id = "templates"; type = "indirect"; };
to = { id = "dragnpkgs-unstable"; type = "indirect"; }; to = { id = "dragnpkgs"; type = "indirect"; };
}; };
config.nix.nixPath = lib.mkIf config.dragnpkgs.setNixPath [ config.nix.nixPath = lib.mkIf config.dragnpkgs.setNixPath [

View File

@ -25,7 +25,7 @@ let
base-container = runCommand "empty.sif.d" { base-container = runCommand "empty.sif.d" {
buildInputs = [ coreutils ]; buildInputs = [ coreutils ];
} '' } ''
mkdir -p "$out" mkdir "$out"
cd "$out" cd "$out"
mkdir -p proc sys dev nix etc bin usr/bin .singularity.d mkdir -p proc sys dev nix etc bin usr/bin .singularity.d
ln -s /etc/sh bin/sh ln -s /etc/sh bin/sh
@ -44,7 +44,6 @@ let
mkdir -p /var/lib/singularity/mnt/session mkdir -p /var/lib/singularity/mnt/session
echo "root:x:0:0:System administrator:/root:/bin/sh" > /etc/passwd echo "root:x:0:0:System administrator:/root:/bin/sh" > /etc/passwd
echo > /etc/resolv.conf echo > /etc/resolv.conf
mkdir -p "$out"
${singularity}/bin/singularity build "$out/empty.sif" "container/" ${singularity}/bin/singularity build "$out/empty.sif" "container/"
''); '');
@ -68,7 +67,7 @@ let
base-etc = runCommand "singularity-etc" { base-etc = runCommand "singularity-etc" {
buildInputs = [ coreutils bash cacert ]; buildInputs = [ coreutils bash cacert ];
} '' } ''
mkdir -p "$out" mkdir "$out"
ln -s "${shell}/bin/startup.sh" "$out/runscript" ln -s "${shell}/bin/startup.sh" "$out/runscript"
ln -s "${bash}/bin/bash" "$out/sh" ln -s "${bash}/bin/bash" "$out/sh"
ln -s "${coreutils}/bin/env" "$out/env" ln -s "${coreutils}/bin/env" "$out/env"
@ -82,15 +81,13 @@ let
''; '';
squashfs = makeSquashFs { filename = "nix-store"; storeContents = [ shell ]; comp = "gzip"; }; squashfs = makeSquashFs { filename = "nix-store"; storeContents = [ shell ]; };
startCommand = writeText "run-container.sh" '' startCommand = writeText "run-container.sh" ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if ! which singularity &>/dev/null; then module load singularity/3.10.3
module load singularity/3.10.3
fi
temp_dir="$(mktemp -d)" temp_dir="$(mktemp -d)"
mkdir -p "''${TMPDIR:-/tmp}/empty" mkdir -p "''${TMPDIR:-/tmp}/empty"
@ -110,15 +107,10 @@ let
cat /etc/localtime > $temp_dir/etc/localtime cat /etc/localtime > $temp_dir/etc/localtime
cat /etc/resolv.conf > $temp_dir/etc/resolv.conf cat /etc/resolv.conf > $temp_dir/etc/resolv.conf
workdir="/work" 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
if [ ! -d "/work" ]; then
workdir="/projects"
fi
singularity run -B "/$workdir:/$workdir,/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" {} '' in runCommand "hpc-files.d" {} ''
mkdir -p "$out" mkdir "$out"
cp "${squashfs}" "$out/nix-store.squashfs" cp "${squashfs}" "$out/nix-store.squashfs"
cp -r "${base-etc}" "$out/etc" cp -r "${base-etc}" "$out/etc"
cp "${container-image}/empty.sif" "$out/container-base.sif" cp "${container-image}/empty.sif" "$out/container-base.sif"

View File

@ -259,7 +259,6 @@ in {
# game state # game state
PrivateTmp = true; PrivateTmp = true;
CacheDirectory = "satisfactory";
TemporaryFileSystem = [ TemporaryFileSystem = [
"${cfg.directory}:ro" "${cfg.directory}:ro"
@ -269,7 +268,7 @@ in {
]; ];
BindPaths = [ BindPaths = [
"${cfg.directory}/saves:${cfg.directory}/.config/Epic" "${cfg.directory}/saves:${cfg.directory}/.config/Epic"
"/var/cache/satisfactory:${cfg.directory}/server/FactoryGame/Intermediate" "/var/tmp:${cfg.directory}/server/FactoryGame/Intermediate"
"${cfg.directory}/settings/game:${cfg.directory}/server/FactoryGame/Saved" "${cfg.directory}/settings/game:${cfg.directory}/server/FactoryGame/Saved"
"${cfg.directory}/settings/engine:${cfg.directory}/server/Engine/Saved" "${cfg.directory}/settings/engine:${cfg.directory}/server/Engine/Saved"
] ++ lib.optionals (cfg.useACMEHost != null) [ ] ++ lib.optionals (cfg.useACMEHost != null) [

View File

@ -7,14 +7,6 @@ final: prev: {
makeSquashFs = prev.callPackage ./lib/make-squashfs {}; makeSquashFs = prev.callPackage ./lib/make-squashfs {};
makeHpcDist = final.callPackage ./lib/make-hpc-dist {}; makeHpcDist = final.callPackage ./lib/make-hpc-dist {};
instrumentedFetch = drv: drv.overrideAttrs (afinal: aprev: {
postFetch = (aprev.postFetch or "") + ''
printf "FETCH_HASH:%s:FETCH_HASH" "$(\
${final.lib.getExe final.nix} --extra-experimental-features "nix-command" \
hash path --sri "$out")"
'';
});
ghidra_headless = final.ghidra.lib; ghidra_headless = final.ghidra.lib;
# stuff that tracks upstream # stuff that tracks upstream
@ -54,6 +46,8 @@ final: prev: {
}; };
}; };
# temporary upgrade so we can actually download satisfactory
depotdownloader = prev.callPackage ./pkgs/temp/depotdownloader {};
outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {}; outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {};
satisfactory-dedicated-server = prev.callPackage ./pkgs/games/satisfactory-dedicated-server {}; satisfactory-dedicated-server = prev.callPackage ./pkgs/games/satisfactory-dedicated-server {};
@ -79,21 +73,4 @@ final: prev: {
texliveDragonPackages = { texliveDragonPackages = {
moloch = prev.callPackage ./pkgs/tex/moloch {}; moloch = prev.callPackage ./pkgs/tex/moloch {};
}; };
racket-minimal = final.callPackage ./pkgs/racket/racket/minimal.nix {};
racket = final.callPackage ./pkgs/racket/racket/package.nix {};
racketPackages = let
names = builtins.readDir ./pkgs/racket/racket-catalog |> final.lib.attrNames;
byName = self:
final.lib.map (name: {
inherit name;
value = self.callPackage ./pkgs/racket/racket-catalog/${name} {};
}) names |>
final.lib.listToAttrs;
in final.lib.makeScope final.newScope (self: {
racketInstallHook = self.callPackage ./pkgs/racket/racket-install-hook.nix {};
buildRacketPackage = self.callPackage ./pkgs/racket/build-racket-package.nix {};
makeRacketEnv = self.callPackage ./pkgs/racket/make-racket-env.nix {};
} // (byName self));
} }

View File

@ -1,73 +0,0 @@
{
lib,
racket,
racketInstallHook,
stdenv,
wrapGAppsHook3,
}: lib.extendMkDerivation {
constructDrv = stdenv.mkDerivation;
excludeDrvArgNames = [
"dependencies"
"tetheredInstallation"
"doMainSetup"
"buildDocs"
"gitSubpath"
];
extendDrvArgs = finalAttrs:
{
pname,
version,
nativeBuildInputs ? [],
propagatedBuildInputs ? [],
dependencies ? [],
tetheredInstallation ? false,
doMainSetup ? tetheredInstallation,
buildDocs ? tetheredInstallation,
gitSubpath ? ".",
...
} @ attrs: {
name = "racket${racket.version}-" + pname + "-" + version;
strictDeps = true;
dontConfigure = true;
dontBuild = true;
racketTetheredInstallation = tetheredInstallation;
racketDoMainSetup = doMainSetup;
racketBuildDocs = buildDocs;
racketGitSubpath = gitSubpath;
nativeBuildInputs = [
racket
racketInstallHook
wrapGAppsHook3
] ++ nativeBuildInputs;
propagatedBuildInputs = [racket] ++ dependencies ++ propagatedBuildInputs;
dontWrapGApps = true;
preFixup = ''
find $out/bin -type f -executable -print0 |
while IFS= read -r -d ''' f; do
if test "$(file --brief --mime-type "$f")" = application/x-executable; then
wrapGApp "$f"
fi
done
'' + (lib.optionalString (!tetheredInstallation) ''
find $out/bin -type f -executable -print0 |
while IFS= read -r -d ''' f; do
if test "$(file --brief --mime-type "$f")" = text/x-shellscript; then
substituteInPlace "$f" \
--replace-fail "\"\''${bindir}/racket\"" \
"\"\''${bindir}/racket\" --config $out/etc/racket/"
fi
done
'');
};
}

View File

@ -1,17 +0,0 @@
{
lib,
racket,
buildRacketPackage,
}: {
packages,
}: buildRacketPackage {
pname = "env";
version = "0";
unpackPhase = "touch nix-racket-env-only";
dependencies = packages;
tetheredInstallation = true;
racketEnvOnly = true;
}

View File

@ -1,28 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "ansi-color";
version = "0.2+20363d9";
dependencies = [];
src = fetchFromGitHub {
owner = "renatoathaydes";
repo = "ansi-color";
rev = "20363d90fcef9219580ec0d6a78eea834df39d21";
hash = "sha256-PdTF4KaDecp7hYHlUAXXmZEfuvEfSF6Gf9A558b6v/I=";
};
gitSubpath = ".";
passthru = {
racketModules = ["ansi-color/main.rkt" "ansi-color/display.rkt" "ansi-color/scribblings/ansi-color.scrbl" "ansi-color/demo.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "A library to make it easy to write colorized and styled output in terminals that support ANSI escape codes (most command lines).";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."LGPL-3.0-or-later")];
homepage = "https://github.com/renatoathaydes/ansi-color/tree/HEAD/README.md";
};
})

View File

@ -1,26 +0,0 @@
{
lib,
fetchgit,
buildRacketPackage,
}: (buildRacketPackage {
pname = "br-parser-tools-lib";
version = "0.0+95b7c69";
dependencies = [];
src = fetchgit {
url = "https://gitlab.com/mbutterick/br-parser-tools.git";
rev = "95b7c69cf9d660a51abf4742378b9adb7100d25a";
hash = "sha256-and0y3rBjXwmgaEwwXzJOTgX/wCSY0uUfB3+U4JLTrk=";
};
gitSubpath = "br-parser-tools-lib";
passthru = {
racketModules = ["br-parser-tools/private-yacc/table.rkt" "br-parser-tools/private-lex/actions.rkt" "br-parser-tools/private-lex/stx.rkt" "br-parser-tools/private-yacc/yacc-helper.rkt" "br-parser-tools/private-lex/token-syntax.rkt" "br-parser-tools/examples/read.rkt" "br-parser-tools/yacc-to-scheme.rkt" "br-parser-tools/private-lex/token.rkt" "br-parser-tools/private-lex/unicode-chars.rkt" "br-parser-tools/private-yacc/input-file-parser.rkt" "br-parser-tools/private-lex/deriv.rkt" "br-parser-tools/lex.rkt" "br-parser-tools/private-yacc/lalr.rkt" "br-parser-tools/private-yacc/parser-builder.rkt" "br-parser-tools/private-yacc/graph.rkt" "br-parser-tools/private-yacc/lr0.rkt" "br-parser-tools/private-lex/error-tests.rkt" "br-parser-tools/cfg-parser.rkt" "br-parser-tools/private-lex/front.rkt" "br-parser-tools/yacc.rkt" "br-parser-tools/private-lex/re.rkt" "br-parser-tools/lex-sre.rkt" "br-parser-tools/private-yacc/parser-actions.rkt" "br-parser-tools/examples/calc.rkt" "br-parser-tools/lex-plt-v200.rkt" "br-parser-tools/private-yacc/grammar.rkt" "br-parser-tools/private-lex/util.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "fork of `parser-tools-lib` for Beautiful Racket";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."LGPL-3.0-or-later")];
};
})

View File

@ -1,27 +0,0 @@
{
lib,
br-parser-tools-lib,
fetchgit,
buildRacketPackage,
}: (buildRacketPackage {
pname = "brag-lib";
version = "0.0+30cbf95";
dependencies = [br-parser-tools-lib];
src = fetchgit {
url = "https://gitlab.com/mbutterick/brag.git";
rev = "30cbf95e6a717e71fb8bda6b15a7253aed36115a";
hash = "sha256-NJctskWDoBNRdBMDklALkMAPKT4A7on8pu6X3Q6NheE=";
};
gitSubpath = "brag-lib";
passthru = {
racketModules = ["brag/test/test-cutter.rkt" "brag/rules/rule-structs.rkt" "brag/examples/simple-line-drawing/examples/letter-i.rkt" "brag/test/test-hide-and-splice.rkt" "brag/test/test-simple-arithmetic-grammar.rkt" "brag/codegen/reader.rkt" "brag/codegen/codegen.rkt" "brag/examples/whitespace.rkt" "brag/examples/0n1.rkt" "brag/test/test-wordy.rkt" "brag/private/internal-support.rkt" "brag/examples/top-level-cut-3.rkt" "brag/examples/simple-line-drawing/lexer.rkt" "brag/examples/simple-arithmetic-grammar.rkt" "brag/test/test-parser.rkt" "brag/test/test-start-and-atok.rkt" "brag/examples/simple-line-drawing.rkt" "brag/rules/parser.rkt" "brag/examples/top-level-cut-2.rkt" "brag/main.rkt" "brag/test/test-0n1n.rkt" "brag/examples/simple-line-drawing/grammar.rkt" "brag/examples/wordy.rkt" "brag/rules/lexer.rkt" "brag/test/test-cutter-another.rkt" "brag/private/indenter.rkt" "brag/examples/cutter.rkt" "brag/examples/empty-symbol.rkt" "brag/examples/01-equal.rkt" "brag/test/test-baby-json.rkt" "brag/test/test-0n1.rkt" "brag/examples/baby-json-hider.rkt" "brag/test/test-empty-symbol.rkt" "brag/rules/stx-types.rkt" "brag/test/test-make-rule-parser.rkt" "brag/examples/simple-line-drawing/lang/reader.rkt" "brag/examples/top-level-cut-1.rkt" "brag/test/test-weird-grammar.rkt" "brag/test/test-whitespace.rkt" "brag/codegen/satisfaction.rkt" "brag/examples/nested-repeats.rkt" "brag/examples/simple-line-drawing/interpret.rkt" "brag/test/test-flatten.rkt" "brag/test/weird-grammar.rkt" "brag/test/test-all.rkt" "brag/examples/baby-json-alt2.rkt" "brag/examples/baby-json.rkt" "brag/test/test-01-equal.rkt" "brag/examples/statlist-grammar.rkt" "brag/examples/simple-line-drawing/semantics.rkt" "brag/examples/subrule.rkt" "brag/examples/lua-parser.rkt" "brag/test/test-quotation-marks-and-backslashes.rkt" "brag/test/test-lexer.rkt" "brag/test/test-nested-repeats.rkt" "brag/test/test-baby-json-hider.rkt" "brag/examples/start-and-atok.rkt" "brag/rules/stx.rkt" "brag/examples/add-mult.rkt" "brag/test/test-old-token.rkt" "brag/examples/cutter-another.rkt" "brag/test/test-top-level-cut.rkt" "brag/examples/bnf.rkt" "brag/codegen/runtime.rkt" "brag/test/test-codepoints.rkt" "brag/examples/codepoints.rkt" "brag/test/test-simple-line-drawing.rkt" "brag/test/test-errors.rkt" "brag/examples/hide-and-splice.rkt" "brag/examples/curly-quantifier.rkt" "brag/examples/nested-word-list.rkt" "brag/codegen/expander.rkt" "brag/examples/0n1n.rkt" "brag/private/colorer.rkt" "brag/codegen/flatten.rkt" "brag/examples/quotation-marks-and-backslashes.rkt" "brag/support.rkt" "brag/test/test-curly-quantifier.rkt" "brag/examples/baby-json-alt.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT")];
};
})

View File

@ -1,28 +0,0 @@
{
lib,
cldr-core,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "cldr-bcp47";
version = "0.0+823fc1a";
dependencies = [cldr-core];
src = fetchFromGitHub {
owner = "97jaz";
repo = "cldr-bcp47";
rev = "823fc1a530f1a0ec4de59f5454c1a17f20c5a5d6";
hash = "sha256-YY5q44IQ1cNX4wk8Yt7B+z2uvfy+xMSl5tTDs+1RBlA=";
};
gitSubpath = ".";
passthru = {
racketModules = ["cldr/bcp47/timezone.rkt" "cldr/bcp47/scribblings/cldr-bcp47-timezone.scrbl"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for BCP47 extensions to CLDR";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT") (((lib).licensesSpdx)."Unicode-TOU")];
};
})

View File

@ -1,28 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
memoize-lib,
}: (buildRacketPackage {
pname = "cldr-core";
version = "0.0+c9b8077";
dependencies = [memoize-lib];
src = fetchFromGitHub {
owner = "97jaz";
repo = "cldr-core";
rev = "c9b80777c422c3b104bb85052d74a2dc1535a3c3";
hash = "sha256-Tpk6uYWz4//C+/n50wsLiD16rwOim85R/Ykrtcoa1+8=";
};
gitSubpath = ".";
passthru = {
racketModules = ["cldr/file.rkt" "cldr/likely-subtags.rkt" "cldr/core.rkt" "cldr/scribblings/cldr-core.scrbl"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for cldr-core data set";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT") (((lib).licensesSpdx)."Unicode-TOU")];
};
})

View File

@ -1,28 +0,0 @@
{
lib,
cldr-core,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "cldr-dates-modern";
version = "0.0+c362829";
dependencies = [cldr-core];
src = fetchFromGitHub {
owner = "97jaz";
repo = "cldr-dates-modern";
rev = "c36282917247f6a069e553535f4619007cd7b6e5";
hash = "sha256-byD2ubs543P9512lKD1JKB1ppyzjKzoWnuW8JPspa7M=";
};
gitSubpath = ".";
passthru = {
racketModules = ["cldr/dates-modern.rkt" "cldr/scribblings/cldr-dates-modern.scrbl"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for cldr-dates-modern data set";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT") (((lib).licensesSpdx)."Unicode-TOU")];
};
})

View File

@ -1,28 +0,0 @@
{
lib,
cldr-core,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "cldr-localenames-modern";
version = "0.0+f9f3e8d";
dependencies = [cldr-core];
src = fetchFromGitHub {
owner = "97jaz";
repo = "cldr-localenames-modern";
rev = "f9f3e8d9245764a309542816acf40fe147b473a3";
hash = "sha256-fZ1fnkslpZuicJgMh6/aLd4rPov7lvJr6ulDWpTMpKg=";
};
gitSubpath = ".";
passthru = {
racketModules = ["cldr/scribblings/cldr-localenames-modern.scrbl" "cldr/localenames-modern.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for cldr-localenames-modern data set";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT") (((lib).licensesSpdx)."Unicode-TOU")];
};
})

View File

@ -1,28 +0,0 @@
{
lib,
cldr-core,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "cldr-numbers-modern";
version = "0.0+6254280";
dependencies = [cldr-core];
src = fetchFromGitHub {
owner = "97jaz";
repo = "cldr-numbers-modern";
rev = "625428099b3f8cd264955a283dddc176a6080ba1";
hash = "sha256-RDa1d4sSyfyuNgz2dJdu2f1XGiO4cPOkaseZ7q2cLJU=";
};
gitSubpath = ".";
passthru = {
racketModules = ["cldr/scribblings/cldr-numbers-modern.scrbl" "cldr/numbers-modern.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for cldr-numbers-modern data set";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT") (((lib).licensesSpdx)."Unicode-TOU")];
};
})

View File

@ -1,27 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "fancy-app";
version = "1.1+f451852";
dependencies = [];
src = fetchFromGitHub {
owner = "samth";
repo = "fancy-app";
rev = "f451852164ee67e3e122f25b4bce45001a557045";
hash = "sha256-2DdngIyocn+CrLf4A4yO9+XJQjIxzKVpmvGiNuM7mTQ=";
};
gitSubpath = ".";
passthru = {
racketModules = ["fancy-app/main.scrbl" "fancy-app/main.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "Scala-style anonymous functions";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT")];
};
})

View File

@ -1,29 +0,0 @@
{
lib,
buildRacketPackage,
pretty-expressive,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "fmt";
version = "0.0.3+002818e";
dependencies = [pretty-expressive];
src = fetchFromGitHub {
owner = "sorawee";
repo = "fmt";
rev = "002818ec08ad6e5e01f79e6209b69203581d6adc";
hash = "sha256-/oLq5WPpK/OO3ED7PBKTMCjDxTBy8+ZjoL/WPPC1zlU=";
};
gitSubpath = ".";
passthru = {
racketModules = ["fmt/tests/test-cases/let-cc-ec.rkt" "fmt/read.rkt" "fmt/tests/test-cases/test-dot.rkt" "fmt/realign.rkt" "fmt/tests/test-cases/test-deinprogramm.rkt" "fmt/tests/test-cases/define-contract.rkt" "fmt/scribblings/kws.rkt" "fmt/tests/test-cases/define-match.rkt" "fmt/tests/test-cases/general.rkt" "fmt/for-profiling.rkt" "fmt/tests/test-cases/send.rkt" "fmt/tests/benchmarks/class-internal.rkt" "fmt/params.rkt" "fmt/tests/test-cases/test-quasisyntax.rkt" "fmt/tests/test-cases/large2.rkt" "fmt/tests/permission-test.rkt" "fmt/.fmt.rkt" "fmt/tests/test-cases/cr.rkt" "fmt/tests/test-cases/test-asl.rkt" "fmt/private/memoize.rkt" "fmt/tests/benchmarks/xform.rkt" "fmt/tests/test-cases/test-if.rkt" "fmt/version.rkt" "fmt/core.rkt" "fmt/tests/benchmarks/list.rkt" "fmt/tokenize.rkt" "fmt/raco.rkt" "fmt/conventions.rkt" "fmt/tests/test-cases/large.rkt" "fmt/tests/config-tests/file.rkt" "fmt/tests/test-cases/rackunit.rkt" "fmt/tests/benchmarks/hash.rkt" "fmt/tests/test-cases/test-hash-bang.rkt" "fmt/tests/test-cases/test-herestring.rkt" "fmt/tests/config-tests/config.rkt" "fmt/scribblings/fmt.scrbl" "fmt/record.rkt" "fmt/tests/test-cases/test-class.rkt" "fmt/common.rkt" "fmt/tests/test-cases/let-values.rkt" "fmt/tests/test-cases/test-lambda.rkt" "fmt/scribblings/examples/example.rkt" "fmt/tests/test-cases/delay.rkt" "fmt/main.rkt" "fmt/scribblings/util.rkt" "fmt/regen.rkt"];
racketLaunchers = [];
racoCommands = ["fmt"];
};
meta = {
description = "An extensible code formatter for Racket";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."Apache-2.0") (((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/sorawee/fmt/tree/HEAD/README.md";
};
})

View File

@ -1,35 +0,0 @@
{
fetchFromGitHub,
cldr-localenames-modern,
memoize-lib,
cldr-bcp47,
cldr-dates-modern,
lib,
cldr-core,
buildRacketPackage,
cldr-numbers-modern,
tzinfo,
}: (buildRacketPackage {
pname = "gregor-lib";
version = "0.0+f56215d";
dependencies = [memoize-lib tzinfo cldr-core cldr-bcp47 cldr-numbers-modern cldr-dates-modern cldr-localenames-modern];
src = fetchFromGitHub {
owner = "97jaz";
repo = "gregor";
rev = "f56215db229ef2e33670f55d08c0330d8f85de23";
hash = "sha256-4TIeinXk7ak7sbT2lwfWYdwIwFD9S7whBrR2KEajW30=";
};
gitSubpath = "gregor-lib";
passthru = {
racketModules = ["gregor/private/pattern/l10n/numbers.rkt" "gregor/private/period.rkt" "gregor/private/pattern/l10n/zone-util.rkt" "gregor/private/pattern/ast/era.rkt" "gregor/private/pattern/ast/second.rkt" "gregor/private/pattern/l10n/gmt-offset.rkt" "gregor/private/pattern/ast/hour.rkt" "gregor/private/pattern/ast/minute.rkt" "gregor/private/pattern/l10n/named-trie.rkt" "gregor/private/core/compare.rkt" "gregor/private/pattern/ast/week.rkt" "gregor/private/iso8601-parse.rkt" "gregor/main.rkt" "gregor/private/pattern/l10n/l10n-week.rkt" "gregor/private/pattern/l10n/iso-offset.rkt" "gregor/private/pattern/l10n/trie.rkt" "gregor/private/exn.rkt" "gregor/private/pattern/l10n/zone-id.rkt" "gregor/time.rkt" "gregor/private/pattern/lexer.rkt" "gregor/private/clock.rkt" "gregor/private/pattern/l10n/zone-loc.rkt" "gregor/private/pattern/ast.rkt" "gregor/private/pattern/l10n/symbols.rkt" "gregor/private/pattern/ast/year.rkt" "gregor/private/pattern/ast/zone.rkt" "gregor/private/pattern/parse-state.rkt" "gregor/private/pattern/ast/literal.rkt" "gregor/private/difference.rkt" "gregor/private/core/math.rkt" "gregor/private/pattern/ast/month.rkt" "gregor/private/time.rkt" "gregor/private/pattern/ast/period.rkt" "gregor/private/pattern/ast/weekday.rkt" "gregor/private/datetime.rkt" "gregor/private/moment-base.rkt" "gregor/private/pattern/ast/day.rkt" "gregor/private/parse.rkt" "gregor/private/date.rkt" "gregor/private/moment.rkt" "gregor/private/format.rkt" "gregor/private/pattern/l10n/zone-nonloc.rkt" "gregor/private/generics.rkt" "gregor/period.rkt" "gregor/private/pattern/ast/separator.rkt" "gregor/private/core/structs.rkt" "gregor/private/core/hmsn.rkt" "gregor/private/pattern/l10n/metazone.rkt" "gregor/private/pattern/ast/quarter.rkt" "gregor/private/core/ymd.rkt" "gregor/private/offset-resolvers.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "Code part of the gregor date and time library";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/97jaz/gregor/tree/HEAD/README.md";
};
})

View File

@ -1,28 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "guard";
version = "0.0+de93f4b";
dependencies = [];
src = fetchFromGitHub {
owner = "jackfirth";
repo = "guard";
rev = "de93f4b5f38f1086177a09a40583af2932759b75";
hash = "sha256-z5sUidOIadtOZqVRBPxjIAz/D71U9XiE06EE+DGZzBg=";
};
gitSubpath = ".";
passthru = {
racketModules = ["guard/private/scribble-evaluator-factory.rkt" "guard/scribblings/guard.scrbl" "guard/main.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "Macros similar to Swift's \"guard statements\".";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."Apache-2.0") (((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/jackfirth/guard/tree/HEAD/README.md";
};
})

View File

@ -1,28 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "memoize-lib";
version = "3.0+f373706";
dependencies = [];
src = fetchFromGitHub {
owner = "jbclements";
repo = "memoize";
rev = "f373706824145ce2a8247edb76278d6df139333c";
hash = "sha256-87a5nSpOZaal1/t5GMk5yFHX1daukabYQ/1J4L5LN4o=";
};
gitSubpath = "memoize-lib";
passthru = {
racketModules = ["memoize/main.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "core library for memoize";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/jbclements/memoize/tree/master/README.md";
};
})

View File

@ -1,29 +0,0 @@
{
gregor-lib,
buildRacketPackage,
lib,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "north";
version = "0.8+00e5221";
dependencies = [gregor-lib];
src = fetchFromGitHub {
owner = "Bogdanp";
repo = "racket-north";
rev = "00e52217081d421bcdd1c2248e309e0d92dd5314";
hash = "sha256-oSjrLNsQ53vUIFRF2spie7o/NSrlF29Dqw2et9Isf3o=";
};
gitSubpath = "north";
passthru = {
racketModules = ["north/main.rkt" "north/north.scrbl" "north/tool/syntax-color.rkt" "north/adapter/sqlite.rkt" "north/adapter/base.rkt" "north/migrate.rkt" "north/adapter/postgres.rkt" "north/lang/reader.rkt" "north/base.rkt" "north/cli.rkt"];
racketLaunchers = [];
racoCommands = ["north"];
};
meta = {
description = "A database migration tool.";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."BSD-3-Clause")];
homepage = "https://github.com/Bogdanp/racket-north/tree/HEAD/README.md";
};
})

View File

@ -1,28 +0,0 @@
{
lib,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "pretty-expressive";
version = "1.1+0984931";
dependencies = [];
src = fetchFromGitHub {
owner = "sorawee";
repo = "pretty-expressive";
rev = "0984931c6f8ff32921dd477c875127de7600dfd5";
hash = "sha256-5WokTHS90pYo5ltJEWX5MIMyUWr2AlRU/W2bznLQ74U=";
};
gitSubpath = ".";
passthru = {
racketModules = ["pretty-expressive/benchmarks/json.rkt" "pretty-expressive/core.rkt" "pretty-expressive/benchmarks/sexp-random.rkt" "pretty-expressive/benchmarks/sexp-full.rkt" "pretty-expressive/benchmarks/concat.rkt" "pretty-expressive/doc.rkt" "pretty-expressive/addons.rkt" "pretty-expressive/scribblings/pretty-expressive.scrbl" "pretty-expressive/benchmarks/fill-sep.rkt" "pretty-expressive/main.rkt" "pretty-expressive/benchtool.rkt" "pretty-expressive/benchmarks/flatten.rkt" "pretty-expressive/benchmarks/wadler-opt.rkt" "pretty-expressive/examples.rkt" "pretty-expressive/process.rkt" "pretty-expressive/promise.rkt"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "A pretty expressive printer";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."Apache-2.0") (((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/sorawee/pretty-expressive/tree/main/README.md";
};
})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,29 +0,0 @@
{
lib,
cldr-core,
buildRacketPackage,
fetchFromGitHub,
}: (buildRacketPackage {
pname = "tzinfo";
version = "0.6+2f81228";
dependencies = [cldr-core];
src = fetchFromGitHub {
owner = "97jaz";
repo = "tzinfo";
rev = "2f812283d9c90040aecb3c7e2ed2edf93a3720de";
hash = "sha256-vvb3EZHFysa/2OiTat+i8zuALxiCPHNNaWCGlyPF6gk=";
};
gitSubpath = ".";
passthru = {
racketModules = ["tzinfo/zoneinfo.rkt" "tzinfo/private/os/env.rkt" "tzinfo/private/os/unix.rkt" "tzinfo/private/tabfile-parser.rkt" "tzinfo/main.rkt" "tzinfo/source.rkt" "tzinfo/private/zoneinfo-search.rkt" "tzinfo/private/tzfile-parser.rkt" "tzinfo/private/os/windows.rkt" "tzinfo/private/zoneinfo.rkt" "tzinfo/private/structs.rkt" "tzinfo/test/zoneinfo.rkt" "tzinfo/private/os/windows-registry.rkt" "tzinfo/private/generics.rkt" "tzinfo/scribblings/tzinfo.scrbl"];
racketLaunchers = [];
racoCommands = [];
};
meta = {
description = "API for querying the IANA tz database";
sourceProvenance = [(((lib).sourceTypes).fromSource)];
broken = false;
license = [(((lib).licensesSpdx)."MIT")];
homepage = "https://github.com/97jaz/tzinfo/tree/HEAD/README.md";
};
})

View File

@ -1,7 +0,0 @@
{
racket,
makeSetupHook,
}: makeSetupHook {
name = "racket-install-hook";
propagatedBuildInputs = [ racket ];
} ./racket-install-hook.sh

View File

@ -1,159 +0,0 @@
echo "Sourcing racket-install-hook"
addRacketPath() {
if [ -f "$1/nix-support/racket-pkg" ]; then
addToSearchPathWithCustomDelimiter : NIX_RACKET_PKG_PATH $1
fi
}
racketInstallPhase() {
echo "Executing racketInstallPhase"
cd "$racketGitSubpath"
runHook preInstall
mkdir -p $out/{include,etc/racket,lib/racket,share/racket/pkgs,share/racket/collects,bin,share/applications,share/doc/racket,share/man}
mkdir -p $out/nix-support
touch $out/nix-support/racket-pkg
out="$out" tethered="$racketTetheredInstallation" \
racket --no-user-path -nl racket/base -f - <<EOF
(require racket/function racket/hash racket/list racket/pretty racket/string racket/match)
(define out (getenv "out"))
(define pkgs (path-list-string->path-list (or (getenv "NIX_RACKET_PKG_PATH") "") '()))
(define tethered? (equal? (getenv "tethered") "1"))
(define base-config (read-installation-configuration-table))
(define (add-to-search added-list search-list)
(match search-list
['() (error "no #f found in search list!")]
[(cons #f rst) (cons #f (append added-list rst))]
[(cons fst rst) (cons fst (add-to-search added-list rst))]))
(define (make-search-path* key list-key [pkgs-search '()])
(define old-search-list (hash-ref base-config list-key '(#f)))
(define old-value
(cond
[(hash-has-key? base-config key)
(list (hash-ref base-config key))]
[(eq? key 'links-file)
(list
(path->string
(build-path (hash-ref base-config 'share-dir) "links.rktd")))]
[else (error "no key" key)]))
(define added-list (append pkgs-search old-value))
(add-to-search added-list old-search-list))
(define (default-location pkg key)
(path->string
(match key
['include-dir (build-path pkg "include")]
['lib-dir (build-path pkg "lib/racket")]
['share-dir (build-path pkg "share/racket")]
['pkgs-dir (build-path pkg "share/racket/pkgs")]
['links-file (build-path pkg "share/racket/links.rktd")]
['bin-dir (build-path pkg "bin")]
['doc-dir (build-path pkg "share/doc/racket")]
['man-dir (build-path pkg "share/man")]
[_ (error "unexpected key:" key)])))
(define (make-search-path key list-key)
(define pkgs-search
(for/list ([pkg (in-list pkgs)])
(default-location pkg key)))
(make-search-path* key list-key pkgs-search))
(define (add-libs lib-path)
(define ldflags (string-split (getenv "NIX_LDFLAGS")))
(define libs
(for/list ([lib (in-list ldflags)] #:when (string-prefix? "-L" lib))
(string-trim "-L" #:right? #f)))
(remove-duplicates (append libs lib-path)))
(define config*
(hash
'absolute-installation? #t
'build-stamp ""
'catalogs (hash-ref base-config 'catalogs)
'compiled-file-roots (hash-ref base-config 'compiled-file-roots)
'apps-dir (path->string (build-path out "share/applications"))
'bin-dir (default-location out 'bin-dir)
'bin-search-dirs (make-search-path 'bin-dir 'bin-search-dirs)
'doc-dir (default-location out 'doc-dir)
'doc-search-dirs (make-search-path 'doc-dir 'doc-search-dirs)
'doc-search-url (hash-ref base-config 'doc-search-url)
'include-dir (default-location out 'include-dir)
'include-search-dirs (make-search-path 'include-dir 'include-search-dirs)
'lib-dir (default-location out 'lib-dir)
'lib-search-dirs (add-libs (make-search-path 'lib-dir 'lib-search-dirs))
'links-file (default-location out 'links-file)
'links-search-files (make-search-path 'links-file 'links-search-files)
'man-dir (default-location out 'man-dir)
'man-search-dirs (make-search-path 'man-dir 'man-search-dirs)
'pkgs-dir (default-location out 'pkgs-dir)
'pkgs-search-dirs (make-search-path 'pkgs-dir 'pkgs-search-dirs)
'share-dir (default-location out 'share-dir)
'share-search-dirs (make-search-path 'share-dir 'share-search-dirs)))
(define config
(if tethered?
(hash-union
config*
(hash
'config-tethered-console-bin-dir (hash-ref config* 'bin-dir)
'config-tethered-gui-bin-dir (hash-ref config* 'bin-dir)
'config-tethered-apps-dir (hash-ref config* 'apps-dir)))
config*))
(with-output-to-file (build-path out "etc/racket/config.rktd")
(curry pretty-write config))
EOF
echo Initializing installation layer
if [ "$racketTetheredInstallation" == "1" ]; then
racket --config $out/etc/racket/ --no-user-path -l- \
raco setup --no-zo
elif [ "$racketDoMainSetup" == "1" ]; then
racket --config $out/etc/racket/ --no-user-path -l- \
raco setup --no-zo --no-launcher
rm $out/bin/mzscheme # ????
fi
if [ "$racketEnvOnly" == "1" ]; then
echo Skipping raco pkg install
else
echo Running raco pkg install
racoflags=""
if [ "$racketBuildDocs" != "1" ]; then
racoflags="--no-docs"
fi
racket --config $out/etc/racket/ --no-user-path -l- \
raco pkg install --installation --deps fail --copy --name "$pname" $racoflags \
"$(readlink -e .)"
fi
runHook postInstall
echo "Finished executing racketInstallPhase"
}
if [ -z "${dontUseRacketInstall-}" ] && [ -z "${installPhase-}" ]; then
echo "Adding racket env hook"
addEnvHooks "$targetOffset" addRacketPath
echo "Using racketInstallPhase"
installPhase=racketInstallPhase
fi

View File

@ -1,27 +0,0 @@
#lang racket/base
(require
racket/function
racket/list
racket/pretty
racket/string
setup/dirs
)
(define config-file (build-path (find-config-dir) "config.rktd"))
(define lib-paths
((compose remove-duplicates
(curry map (curryr string-trim "-L" #:right? #f))
(curry filter (curryr string-prefix? "-L"))
string-split)
(getenv "NIX_LDFLAGS")))
(define config
(let* ([prev-config (read-installation-configuration-table)]
[prev-lib-search-dirs (hash-ref prev-config 'lib-search-dirs '(#f))]
[lib-search-dirs (remove-duplicates (append lib-paths prev-lib-search-dirs))])
(hash-set prev-config 'lib-search-dirs lib-search-dirs)))
(call-with-output-file config-file
#:exists 'replace
(curry pretty-write config))

View File

@ -1,11 +0,0 @@
{
"version": "8.18",
"full": {
"filename": "racket-8.18-src.tgz",
"sha256": "65477c71ec1a978a6ee4db582b9b47b1a488029d7a42e358906de154a6e5905c"
},
"minimal": {
"filename": "racket-minimal-8.18-src.tgz",
"sha256": "24b9cf8365254b43bac308192c782edfbd86363df1322c4e063b797ed0f7db66"
}
}

View File

@ -1,175 +0,0 @@
{
lib,
stdenv,
fetchurl,
libiconvReal,
libz,
lz4,
ncurses,
openssl,
sqlite,
disableDocs ? false,
callPackage,
writers,
}:
let
manifest = lib.importJSON ./manifest.json;
inherit (stdenv.hostPlatform) isDarwin;
in
stdenv.mkDerivation (finalAttrs: {
pname = "racket";
inherit (manifest) version;
src = fetchurl {
url = "https://mirror.racket-lang.org/installers/${manifest.version}/${manifest.minimal.filename}";
inherit (manifest.minimal) sha256;
};
buildInputs = [
libiconvReal
libz
lz4
ncurses
openssl
sqlite.out
];
patches = lib.optionals isDarwin [
/*
The entry point binary $out/bin/racket is codesigned at least once. The
following error is triggered as a result.
(error 'add-ad-hoc-signature "file already has a signature")
We always remove the existing signature then call add-ad-hoc-signature to
circumvent this error.
*/
./patches/force-remove-codesign-then-add.patch
];
preConfigure =
/*
The configure script forces using `libtool -o` as AR on Darwin. But, the
`-o` option is only available from Apple libtool. GNU ar works here.
*/
lib.optionalString isDarwin ''
substituteInPlace src/ChezScheme/zlib/configure \
--replace-fail 'ARFLAGS="-o"' 'AR=ar; ARFLAGS="rc"'
''
+ ''
mkdir src/build
cd src/build
'';
configureScript = "../configure";
configureFlags = [
# > docs failure: ftype-ref: ftype mismatch for #<ftype-pointer>
# "--enable-check"
"--enable-csonly"
"--enable-liblz4"
"--enable-libz"
]
++ lib.optional disableDocs "--disable-docs"
++ lib.optionals (!(finalAttrs.dontDisableStatic or false)) [
# instead of `--disable-static` that `stdenv` assumes
"--disable-libs"
# "not currently supported" in `configure --help-cs` but still emphasized in README
"--enable-shared"
]
++ lib.optionals isDarwin [
"--disable-strip"
# "use Unix style (e.g., use Gtk) for Mac OS", which eliminates many problems
"--enable-xonx"
];
# The upstream script builds static libraries by default.
dontAddStaticConfigureFlags = true;
dontStrip = isDarwin;
postFixup =
let
configureInstallation = builtins.path {
name = "configure-installation.rkt";
path = ./configure-installation.rkt;
};
in
''
$out/bin/racket -U -u ${configureInstallation}
'';
passthru = {
# Functionalities #
updateScript = {
command = ./update.py;
attrPath = "racket";
supportedFeatures = [ "commit" ];
};
writeScript =
nameOrPath:
{
libraries ? [ ],
...
}@config:
assert lib.assertMsg (libraries == [ ]) "library integration for Racket has not been implemented";
writers.makeScriptWriter (
builtins.removeAttrs config [ "libraries" ]
// {
interpreter = "${lib.getExe finalAttrs.finalPackage}";
}
) nameOrPath;
writeScriptBin = name: finalAttrs.passthru.writeScript "/bin/${name}";
# Tests #
tests = builtins.mapAttrs (name: path: callPackage path { racket = finalAttrs.finalPackage; }) {
## Basic ##
write-greeting = ./tests/write-greeting.nix;
get-version-and-variant = ./tests/get-version-and-variant.nix;
load-openssl = ./tests/load-openssl.nix;
## Nixpkgs supports ##
nix-write-script = ./tests/nix-write-script.nix;
};
};
meta = {
description = "Programmable programming language (minimal distribution)";
longDescription = ''
Racket is a full-spectrum programming language. It goes beyond
Lisp and Scheme with dialects that support objects, types,
laziness, and more. Racket enables programmers to link
components written in different dialects, and it empowers
programmers to create new, project-specific dialects. Racket's
libraries support applications from web servers and databases to
GUIs and charts.
This minimal distribution includes just enough of Racket that you can
use `raco pkg` to install more.
'';
homepage = "https://racket-lang.org/";
changelog = "https://github.com/racket/racket/releases/tag/v${finalAttrs.version}";
/*
> Racket is distributed under the MIT license and the Apache version 2.0
> license, at your option.
> The Racket runtime system embeds Chez Scheme, which is distributed
> under the Apache version 2.0 license.
*/
license = with lib.licenses; [
asl20
mit
];
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode
];
maintainers = with lib.maintainers; [ rc-zb ];
mainProgram = "racket";
platforms = lib.platforms.all;
};
})

View File

@ -1,140 +0,0 @@
{
lib,
stdenv,
fetchurl,
racket-minimal,
cairo,
fontconfig,
glib,
glibcLocales,
gtk3,
libGL,
libiodbc,
libjpeg,
libpng,
makeFontsConf,
pango,
unixODBC,
wrapGAppsHook3,
disableDocs ? false,
callPackage,
}:
let
minimal = racket-minimal.override { inherit disableDocs; };
manifest = lib.importJSON ./manifest.json;
inherit (stdenv.hostPlatform) isDarwin;
in
minimal.overrideAttrs (
finalAttrs: prevAttrs: {
src = fetchurl {
url = "https://mirror.racket-lang.org/installers/${manifest.version}/${manifest.full.filename}";
inherit (manifest.full) sha256;
};
buildInputs = prevAttrs.buildInputs ++ [
(if isDarwin then libiodbc else unixODBC)
cairo
fontconfig.lib
glib
gtk3
libGL
libjpeg
libpng
pango
];
nativeBuildInputs = [
wrapGAppsHook3
];
patches = prevAttrs.patches or [ ] ++ [
/*
Hardcode variant detection because nixpkgs wraps the Racket binary making it
fail to detect its variant at runtime.
https://github.com/NixOS/nixpkgs/issues/114993#issuecomment-812951247
*/
./patches/force-cs-variant.patch
];
preBuild =
let
libPathsVar = if isDarwin then "DYLD_FALLBACK_LIBRARY_PATH" else "LD_LIBRARY_PATH";
in
/*
Makes FFIs available for setting up `main-distribution` and its
dependencies, which is integrated into the build process of Racket
*/
''
for lib_path in $( \
echo "$NIX_LDFLAGS" \
| tr ' ' '\n' \
| grep '^-L' \
| sed 's/^-L//' \
| awk '!seen[$0]++' \
); do
addToSearchPath ${libPathsVar} $lib_path
done
''
# Fixes Fontconfig errors
+ ''
export FONTCONFIG_FILE=${makeFontsConf { fontDirectories = [ ]; }}
export XDG_CACHE_HOME=$(mktemp -d)
'';
# Disable automatic wrapping, and only wrap the ELF binaries:
#
# - bin/racket
# - lib/racket/gracket
# - bin/mred
# - bin/mzscheme
#
# This avoids effectively double-wrapping shell scripts generated by raco, because they will
# call into the wrapped ELF binaries
dontWrapGApps = true;
preFixup = (lib.optionalString (!isDarwin) ''
gappsWrapperArgs+=("--set" "LOCALE_ARCHIVE" "${glibcLocales}/lib/locale/locale-archive")
'') + ''
wrapProgram $out/bin/racket "''${gappsWrapperArgs[@]}"
wrapProgram $out/bin/mred "''${gappsWrapperArgs[@]}"
wrapProgram $out/bin/mzscheme "''${gappsWrapperArgs[@]}"
wrapProgram $out/lib/racket/gracket "''${gappsWrapperArgs[@]}"
'';
passthru =
let
notUpdated = x: !builtins.isAttrs x || lib.isDerivation x;
stopPred =
_: lhs: rhs:
notUpdated lhs || notUpdated rhs;
in
lib.recursiveUpdateUntil stopPred prevAttrs.passthru {
tests = builtins.mapAttrs (name: path: callPackage path { racket = finalAttrs.finalPackage; }) {
## `main-distribution` ##
draw-crossing = ./tests/draw-crossing.nix;
};
};
meta = prevAttrs.meta // {
description = "Programmable programming language";
longDescription = ''
Racket is a full-spectrum programming language. It goes beyond
Lisp and Scheme with dialects that support objects, types,
laziness, and more. Racket enables programmers to link
components written in different dialects, and it empowers
programmers to create new, project-specific dialects. Racket's
libraries support applications from web servers and databases to
GUIs and charts.
'';
platforms = lib.platforms.unix;
badPlatforms = lib.platforms.darwin;
};
}
)

View File

@ -1,12 +0,0 @@
--- old/collects/setup/variant.rkt
+++ new/collects/setup/variant.rkt
@@ -7,7 +7,8 @@
(provide variant-suffix
script-variant?)
-(define plain-variant
+(define plain-variant 'cs)
+#;(define plain-variant
(delay/sync
(cond
[(cross-installation?)

View File

@ -1,10 +0,0 @@
--- old/src/mac/codesign.rkt
+++ new/src/mac/codesign.rkt
@@ -18,6 +18,6 @@
file))
(void
- (if remove?
+ (begin
(remove-signature file)
(add-ad-hoc-signature file)))

View File

@ -1,18 +0,0 @@
{ runCommandLocal, racket }:
runCommandLocal "racket-test-draw-crossing"
{
nativeBuildInputs = [ racket ];
}
''
racket -f - <<EOF
(require racket/draw)
(define target (make-bitmap 64 64))
(define dc (new bitmap-dc% [bitmap target]))
(send dc draw-line 0 0 64 64)
(send dc draw-line 0 64 64 0)
(send target save-file (getenv "out") 'png)
EOF
''

View File

@ -1,45 +0,0 @@
{
lib,
runCommandLocal,
racket,
}:
runCommandLocal "racket-test-get-version-and-variant"
{
nativeBuildInputs = [ racket ];
}
(
lib.concatLines (
builtins.map
(
{ expectation, output }:
''
expectation="${expectation}"
output="${output}"
if test "$output" != "$expectation"; then
echo "output mismatch: expected ''${expectation}, but got ''${output}"
exit 1
fi
''
)
[
{
expectation = racket.version;
output = "$(racket -e '(display (version))')";
}
{
expectation = "cs";
output = "$(racket -e '(require launcher/launcher) (display (current-launcher-variant))')";
}
{
expectation = "${lib.getExe racket}";
output = "$(racket -e '(require compiler/find-exe) (display (find-exe))')";
}
]
)
+ ''
touch $out
''
)

View File

@ -1,15 +0,0 @@
{ runCommandLocal, racket }:
runCommandLocal "racket-test-load-openssl"
{
nativeBuildInputs = [ racket ];
}
''
racket -f - <<EOF
(require openssl)
(unless ssl-available?
(raise ssl-load-fail-reason))
EOF
touch $out
''

View File

@ -1,26 +0,0 @@
{ runCommandLocal, racket }:
let
script = racket.writeScript "racket-test-nix-write-script-the-script" { } ''
#lang racket/base
(display "success")
(newline)
'';
in
runCommandLocal "racket-test-nix-write-script"
{
nativeBuildInputs = [ racket ];
}
''
expectation="success"
output="$(${script})"
if test "$output" != "$expectation"; then
echo "output mismatch: expected ''${expectation}, but got ''${output}"
exit 1
fi
touch $out
''

View File

@ -1,23 +0,0 @@
{ runCommandLocal, racket }:
runCommandLocal "racket-test-write-greeting"
{
nativeBuildInputs = [ racket ];
}
''
expectation="Hello, world!"
racket -f - <<EOF
(with-output-to-file (getenv "out")
(lambda ()
(display "Hello, world!")
(newline)))
EOF
output="$(cat $out)"
if test "$output" != "$expectation"; then
echo "output mismatch: expected ''${expectation}, but got ''${output}"
exit 1
fi
''

View File

@ -1,73 +0,0 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 --packages 'python3.withPackages (ps: with ps; [ requests beautifulsoup4 ])'
import os
import re
import json
import requests
from bs4 import BeautifulSoup
SITE = "https://download.racket-lang.org"
MANIFEST_FILENAME = "manifest.json"
def find_info(table, group_name, subgroup_name):
group = table.find(
string=re.compile("^{}\\s*".format(group_name))
).find_parent("tr", class_="group")
subgroup = group.find_next(
string=re.compile("^{}\\s*".format(subgroup_name))
).find_parent(class_="subgroup")
link = subgroup.find_next(
"a",
class_="installer",
string="Source"
)
filename = link["href"].split("/")[1]
sha256 = link.find_next(class_="checksum").string
return {
"filename": filename,
"sha256": sha256,
}
os.chdir(os.path.dirname(os.path.abspath(__file__)))
prev_version = os.environ["UPDATE_NIX_OLD_VERSION"]
homepage = BeautifulSoup(requests.get(SITE).text, "html.parser")
version = homepage.find(
"h3",
string=re.compile("^Version \\d+\\.\\d+")
).string.split()[1]
if version == prev_version:
raise Exception("no newer version available")
down_page_path = homepage.find(
"a",
string="More Installers and Checksums"
)["href"]
down_page = BeautifulSoup(requests.get(SITE + "/" + down_page_path).text, "html.parser")
down_table = down_page.find(class_="download-table")
full = find_info(down_table, "Racket", "Unix")
minimal = find_info(down_table, "Minimal Racket", "All Platforms")
with open(MANIFEST_FILENAME, "w", encoding="utf-8") as f:
json.dump({
"version": version,
"full": full,
"minimal": minimal,
}, f, indent=2, ensure_ascii=False)
f.write("\n")
print(json.dumps(
[
{
"attrPath": os.environ["UPDATE_NIX_ATTR_PATH"],
"oldVersion": prev_version,
"newVersion": version,
"files": [ os.path.abspath(MANIFEST_FILENAME) ],
},
],
indent=2, ensure_ascii=False
))

View File

@ -1,5 +1,18 @@
From be4c852769e260e3a9b516bb5626a6a6a68a2cd3 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-isf/build.gradle | 8 +-
Ghidra/Debug/Debugger-rmi-trace/build.gradle | 16 ++--
build.gradle | 6 ++
gradle/hasProtobuf.gradle | 94 --------------------
4 files changed, 22 insertions(+), 102 deletions(-)
delete mode 100644 gradle/hasProtobuf.gradle
diff --git a/Ghidra/Debug/Debugger-isf/build.gradle b/Ghidra/Debug/Debugger-isf/build.gradle diff --git a/Ghidra/Debug/Debugger-isf/build.gradle b/Ghidra/Debug/Debugger-isf/build.gradle
index 2db94ed67e..925f394cf0 100644 index f6c8464405..396b52d188 100644
--- a/Ghidra/Debug/Debugger-isf/build.gradle --- a/Ghidra/Debug/Debugger-isf/build.gradle
+++ b/Ghidra/Debug/Debugger-isf/build.gradle +++ b/Ghidra/Debug/Debugger-isf/build.gradle
@@ -18,11 +18,17 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle" @@ -18,11 +18,17 @@ apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
@ -19,10 +32,10 @@ index 2db94ed67e..925f394cf0 100644
+} +}
+ +
dependencies { dependencies {
api project(':Framework-AsyncComm')
api project(':ProposedUtils') api project(':ProposedUtils')
}
diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
index 4fa3b9a539..2663aeaeb0 100644 index 8b6589f035..05da5a7a7e 100644
--- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle --- a/Ghidra/Debug/Debugger-rmi-trace/build.gradle
+++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle +++ b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
@@ -19,12 +19,17 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle" @@ -19,12 +19,17 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.gradle"
@ -43,27 +56,25 @@ index 4fa3b9a539..2663aeaeb0 100644
+} +}
+ +
dependencies { dependencies {
api project(':ProposedUtils')
api project(':Pty') api project(':Pty')
@@ -37,13 +42,10 @@ dependencies { api project(':Debugger')
} @@ -44,12 +49,9 @@ task generateProtoPy {
ext.outdir = file("build/generated/source/proto/main/py")
task configureGenerateProtoPy { outputs.dir(outdir)
inputs.files(src)
- dependsOn(configurations.protocArtifact) - dependsOn(configurations.protocArtifact)
+ dependsOn(protobuf.generateProtoTasks.all()) + dependsOn(protobuf.generateProtoTasks.all())
doLast {
- doLast {
- def exe = configurations.protocArtifact.first() - def exe = configurations.protocArtifact.first()
- if (!isCurrentWindows()) { - if (!isCurrentWindows()) {
- exe.setExecutable(true) - exe.setExecutable(true)
- } - }
+ doLast {
+ def exe = protobuf.tools.protoc.path + def exe = protobuf.tools.protoc.path
generateProtoPy.commandLine exe exec {
generateProtoPy.args "--python_out=${generateProtoPy.outdir}" commandLine exe, "--python_out=$outdir", "-I$srcdir"
generateProtoPy.args "--pyi_out=${generateProtoPy.stubsOutdir}" args src
diff --git a/build.gradle b/build.gradle diff --git a/build.gradle b/build.gradle
index 159eb7dd7b..ef4add1ad8 100644 index 2d75307a08..aa8f1d7604 100644
--- a/build.gradle --- a/build.gradle
+++ b/build.gradle +++ b/build.gradle
@@ -80,6 +80,12 @@ if (flatRepo.isDirectory()) { @@ -80,6 +80,12 @@ if (flatRepo.isDirectory()) {
@ -81,10 +92,10 @@ index 159eb7dd7b..ef4add1ad8 100644
else { else {
diff --git a/gradle/hasProtobuf.gradle b/gradle/hasProtobuf.gradle diff --git a/gradle/hasProtobuf.gradle b/gradle/hasProtobuf.gradle
deleted file mode 100644 deleted file mode 100644
index a8c176bcbe..0000000000 index 23b4ce74bb..0000000000
--- a/gradle/hasProtobuf.gradle --- a/gradle/hasProtobuf.gradle
+++ /dev/null +++ /dev/null
@@ -1,98 +0,0 @@ @@ -1,94 +0,0 @@
-/* ### -/* ###
- * IP: GHIDRA - * IP: GHIDRA
- * - *
@ -146,22 +157,7 @@ index a8c176bcbe..0000000000
- } - }
-}*/ -}*/
- -
-task configureGenerateProto { -task generateProto {
- dependsOn(configurations.protocArtifact)
-
- doLast {
- def exe = configurations.protocArtifact.first()
- if (!isCurrentWindows()) {
- exe.setExecutable(true)
- }
- generateProto.commandLine exe, "--java_out=${generateProto.outdir}", "-I${generateProto.srcdir}"
- generateProto.args generateProto.src
- }
-}
-
-// Can't use providers.exec, or else we see no output
-task generateProto(type:Exec) {
- dependsOn(configureGenerateProto)
- ext.srcdir = file("src/main/proto") - ext.srcdir = file("src/main/proto")
- ext.src = fileTree(srcdir) { - ext.src = fileTree(srcdir) {
- include "**/*.proto" - include "**/*.proto"
@ -169,6 +165,17 @@ index a8c176bcbe..0000000000
- ext.outdir = file("build/generated/source/proto/main/java") - ext.outdir = file("build/generated/source/proto/main/java")
- outputs.dir(outdir) - outputs.dir(outdir)
- inputs.files(src) - 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.compileJava.dependsOn(tasks.generateProto)
@ -183,3 +190,6 @@ index a8c176bcbe..0000000000
- } - }
-} -}
-zipSourceSubproject.dependsOn generateProto -zipSourceSubproject.dependsOn generateProto
--
2.47.0

View File

@ -21,17 +21,16 @@ let
platforms = oldMeta.platforms or ghidra.meta.platforms; platforms = oldMeta.platforms or ghidra.meta.platforms;
}; };
buildGhidraExtension = lib.extendMkDerivation { buildGhidraExtension =
constructDrv = stdenv.mkDerivation; {
extendDrvArgs = pname,
finalAttrs: nativeBuildInputs ? [ ],
{ meta ? { },
pname, ...
nativeBuildInputs ? [ ], }@args:
meta ? { }, stdenv.mkDerivation (
... args
}@args: // {
{
nativeBuildInputs = nativeBuildInputs ++ [ nativeBuildInputs = nativeBuildInputs ++ [
unzip unzip
jdk jdk
@ -59,28 +58,22 @@ let
mkdir -p $out/lib/ghidra/Ghidra/Extensions mkdir -p $out/lib/ghidra/Ghidra/Extensions
unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip unzip -d $out/lib/ghidra/Ghidra/Extensions dist/*.zip
# Prevent attempted creation of plugin lock files in the Nix store.
for i in $out/lib/ghidra/Ghidra/Extensions/*; do
touch "$i/.dbDirLock"
done
runHook postInstall runHook postInstall
''; '';
meta = metaCommon meta; meta = metaCommon meta;
}; }
}; );
buildGhidraScripts = lib.extendMkDerivation { buildGhidraScripts =
constructDrv = stdenv.mkDerivation; {
extendDrvArgs = pname,
finalAttrs: meta ? { },
{ ...
pname, }@args:
meta ? { }, stdenv.mkDerivation (
... args
}@args: // {
{
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
@ -102,8 +95,8 @@ let
''; '';
meta = metaCommon meta; meta = metaCommon meta;
}; }
}; );
in in
{ {
inherit buildGhidraExtension buildGhidraScripts; inherit buildGhidraExtension buildGhidraScripts;

View File

@ -19,7 +19,7 @@
let let
pname = "ghidra"; pname = "ghidra";
version = "11.4.2"; version = "11.3.2";
isMacArm64 = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64; isMacArm64 = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
@ -29,7 +29,7 @@ let
owner = "NationalSecurityAgency"; owner = "NationalSecurityAgency";
repo = "Ghidra"; repo = "Ghidra";
rev = "Ghidra_${version}_build"; rev = "Ghidra_${version}_build";
hash = "sha256-/veSp2WuGOF0cYwUC4QFJD6kaMae5NuKrQ5Au4LjDe8="; hash = "sha256-EvIOC/VIUaEl7eneVzgEt2fhLSP9DaawMAutk4ouFp8=";
# populate values that require us to use git. By doing this in postFetch we # 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. # can delete .git afterwards and maintain better reproducibility of the src.
leaveDotGit = true; leaveDotGit = true;
@ -251,6 +251,23 @@ stdenv.mkDerivation (finalAttrs: {
; ;
withExtensions = callPackage ./with-extensions.nix { ghidra = finalAttrs.finalPackage; }; withExtensions = callPackage ./with-extensions.nix { ghidra = finalAttrs.finalPackage; };
pythonPackages = rec {
ghidratrace = python3Packages.callPackage ./python/ghidratrace.nix {
ghidra = finalAttrs.finalPackage;
};
ghidragdb = python3Packages.callPackage ./python/ghidragdb.nix {
ghidra = finalAttrs.finalPackage;
inherit ghidratrace;
};
ghidralldb = python3Packages.callPackage ./python/ghidralldb.nix {
ghidra = finalAttrs.finalPackage;
inherit ghidratrace;
};
pyghidra = python3Packages.callPackage ./python/pyghidra.nix {
ghidra = finalAttrs.finalPackage;
};
};
}; };
meta = with lib; { meta = with lib; {
@ -269,10 +286,6 @@ stdenv.mkDerivation (finalAttrs: {
binaryBytecode # deps binaryBytecode # deps
]; ];
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [
roblabla
vringar
];
broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64; broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64;
}; };
}) })

View File

@ -99,14 +99,11 @@
} }
}, },
"https://ftp.postgresql.org": { "https://ftp.postgresql.org": {
"pub/source/v15.13/postgresql-15.13": { "pub/source/v15.10/postgresql-15.10": {
"tar.gz": "sha256-r9wisKblvse2VyN1a5DUTqkR5hsvewHE3FUkq4E7TYk=" "tar.gz": "sha256-FzNmYFJZqD3BicQyf/TDclSv7WW0+GbL2KXvLqRJ6PM="
} }
}, },
"https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.4.2": { "https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.3.2": {
"Debugger/dbgmodel": {
"tlb": "sha256-jPXzouuBFgqjSQVqXKTCxyaxtumL8wl81BNRRxYzQ8c="
},
"FunctionID/vs2012_x64": { "FunctionID/vs2012_x64": {
"fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw=" "fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw="
}, },
@ -286,10 +283,6 @@
"jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=", "jar": "sha256-fZOMgXiQKARcCMBl6UvnX8KAUnYg1b1itRnVg4UyNoo=",
"pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA=" "pom": "sha256-w1zKe2HUZ42VeMvAuQG4cXtTmr+SVEQdp4uP5g3gZNA="
}, },
"commons-codec#commons-codec/1.18.0": {
"jar": "sha256-ugBfMEzvkqPe3iSjitWsm4r8zw2PdYOdbBM4Y0z39uQ=",
"pom": "sha256-dLkW2ksDhMYZ5t1MGN7+iqQ4f3lSBSU8+0u7L0WM3c4="
},
"commons-collections#commons-collections/3.2.2": { "commons-collections#commons-collections/3.2.2": {
"jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=", "jar": "sha256-7urpF5FxRKaKdB1MDf9mqlxcX9hVk/8he87T/Iyng7g=",
"pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws=" "pom": "sha256-1dgfzCiMDYxxHDAgB8raSqmiJu0aES1LqmTLHWMiFws="
@ -298,10 +291,6 @@
"jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=", "jar": "sha256-lhsvbYfbrMXVSr9Fq3puJJX4m3VZiWLYxyPOqbwhCQg=",
"pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k=" "pom": "sha256-LgFv1+MkS18sIKytg02TqkeQSG7h5FZGQTYaPoMe71k="
}, },
"commons-io#commons-io/2.19.0": {
"jar": "sha256-gkJokZtLYvn0DwjFQ4HeWZOwePWGZ+My0XNIrgGdcrk=",
"pom": "sha256-VCt6UC7WGVDRuDEStRsWF9NAfjpN9atWqY12Dg+MWVA="
},
"commons-lang#commons-lang/2.6": { "commons-lang#commons-lang/2.6": {
"jar": "sha256-UPEbCfh3wpTVbyRGP0fSj5Kc9QRPZIZhwPDPuumi9Jw=", "jar": "sha256-UPEbCfh3wpTVbyRGP0fSj5Kc9QRPZIZhwPDPuumi9Jw=",
"pom": "sha256-7Xa4iRwwtWYonHQ2Vvik1DWYaYJDjUDFZ8YmIzJH5xE=" "pom": "sha256-7Xa4iRwwtWYonHQ2Vvik1DWYaYJDjUDFZ8YmIzJH5xE="
@ -343,9 +332,9 @@
"jar": "sha256-/PSSLTj/hRhPHSMoMXu2CCbhTalIq9YG7j1bjGpw3r0=", "jar": "sha256-/PSSLTj/hRhPHSMoMXu2CCbhTalIq9YG7j1bjGpw3r0=",
"pom": "sha256-uIEr4lGsoTl/S2pCO/Tt06KERONFOyIDtTSTNrmVgik=" "pom": "sha256-uIEr4lGsoTl/S2pCO/Tt06KERONFOyIDtTSTNrmVgik="
}, },
"junit#junit/4.13.2": { "junit#junit/4.12": {
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=", "jar": "sha256-WXIfCAXiI9hLkGd4h9n/Vn3FNNfFAsqQPAwrF/BcEWo=",
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ=" "pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
}, },
"kr/motd/maven#os-maven-plugin/1.7.0": { "kr/motd/maven#os-maven-plugin/1.7.0": {
"jar": "sha256-lDBTUBpCnlPRxNYhUu7BJfo2Yg4NxmtzkKiVCXz96s4=", "jar": "sha256-lDBTUBpCnlPRxNYhUu7BJfo2Yg4NxmtzkKiVCXz96s4=",
@ -443,9 +432,6 @@
"org/apache#apache/27": { "org/apache#apache/27": {
"pom": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk=" "pom": "sha256-srD8aeIqZQw4kvHDZtdwdvKVdcZzjfTHpwpEhESEzfk="
}, },
"org/apache#apache/33": {
"pom": "sha256-14vYUkxfg4ChkKZSVoZimpXf5RLfIRETg6bYwJI6RBU="
},
"org/apache#apache/7": { "org/apache#apache/7": {
"pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU=" "pom": "sha256-E5fOHbQzrcnyI9vwdJbRM2gUSHUfSuKeWPaOePtLbCU="
}, },
@ -457,9 +443,9 @@
"jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=", "jar": "sha256-Hfi5QwtcjtFD14FeQD4z71NxskAKrb6b2giDdi4IRtE=",
"pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0=" "pom": "sha256-JxvWc4Oa9G5zr/lX4pGNS/lvWsT2xs9NW+k/0fEnHE0="
}, },
"org/apache/commons#commons-compress/1.27.1": { "org/apache/commons#commons-compress/1.21": {
"jar": "sha256-KT2A9UtTa3QJXc1+o88KKbv8NAJRkoEzJJX0Qg03DRY=", "jar": "sha256-auz9VFlyillWAc+gcljRMZcv/Dm0kutIvdWWV3ovJEo=",
"pom": "sha256-34zBqDh9TOhCNjtyCf3G0135djg5/T/KtVig+D+dhBw=" "pom": "sha256-Z1uwI8m+7d4yMpSZebl0Kl/qlGKApVobRi1Mp4AQiM0="
}, },
"org/apache/commons#commons-dbcp2/2.9.0": { "org/apache/commons#commons-dbcp2/2.9.0": {
"jar": "sha256-iHcgkSxcu83/bg4h1QNJN1Vfj/xZc4Hv+Pp38zzm1k4=", "jar": "sha256-iHcgkSxcu83/bg4h1QNJN1Vfj/xZc4Hv+Pp38zzm1k4=",
@ -468,9 +454,9 @@
"org/apache/commons#commons-lang3/3.11": { "org/apache/commons#commons-lang3/3.11": {
"pom": "sha256-mA1mXYP+0EZlE08FeOUHRCoOdQaRBzeEORsKeYhySnU=" "pom": "sha256-mA1mXYP+0EZlE08FeOUHRCoOdQaRBzeEORsKeYhySnU="
}, },
"org/apache/commons#commons-lang3/3.17.0": { "org/apache/commons#commons-lang3/3.12.0": {
"jar": "sha256-bucx31yOWil2ocoCO2uzIOqNNTn75kyKHVy3ZRJ8M7Q=", "jar": "sha256-2RnZBEhsA3+NGTQS2gyS4iqfokIwudZ6V4VcXDHH6U4=",
"pom": "sha256-NRxuSUDpObHzMN9H9g8Tujg9uB7gCBga9UHzoqbSpWw=" "pom": "sha256-gtMfHcxFg+/9dE6XkWWxbaZL+GvKYj/F0bA+2U9FyFo="
}, },
"org/apache/commons#commons-lang3/3.9": { "org/apache/commons#commons-lang3/3.9": {
"pom": "sha256-pAIkKbmEJbQwGBkVchJ5pS9hDzRki9rEh9TKy76N/rU=" "pom": "sha256-pAIkKbmEJbQwGBkVchJ5pS9hDzRki9rEh9TKy76N/rU="
@ -502,18 +488,6 @@
"org/apache/commons#commons-parent/54": { "org/apache/commons#commons-parent/54": {
"pom": "sha256-AA2Bh5UrIjcC/eKW33mVY/Nd6CznKttOe/FXNCN4++M=" "pom": "sha256-AA2Bh5UrIjcC/eKW33mVY/Nd6CznKttOe/FXNCN4++M="
}, },
"org/apache/commons#commons-parent/72": {
"pom": "sha256-Q0Xev8dnsa6saKvdcvxn0YtSHUs5A3KhG2P/DFhrIyA="
},
"org/apache/commons#commons-parent/73": {
"pom": "sha256-TtRFYLB/hEhHnf0eg6Qiuk6D5gs25RsocaxQKm1cG+o="
},
"org/apache/commons#commons-parent/79": {
"pom": "sha256-Yo3zAUis08SRz8trc8euS1mJ5VJqsTovQo3qXUrRDXo="
},
"org/apache/commons#commons-parent/81": {
"pom": "sha256-NI1OfBMb5hFMhUpxnOekQwenw5vTZghJd7JP0prQ7bQ="
},
"org/apache/commons#commons-pool2/2.11.1": { "org/apache/commons#commons-pool2/2.11.1": {
"jar": "sha256-6gUF7nUV5YsawOaG5NGl2ffYCOJRphvDcaoFlbmWP4M=", "jar": "sha256-6gUF7nUV5YsawOaG5NGl2ffYCOJRphvDcaoFlbmWP4M=",
"pom": "sha256-wbsCmUpK34loDfepitujPFUnaDAUJy1liFuzA27NSMM=" "pom": "sha256-wbsCmUpK34loDfepitujPFUnaDAUJy1liFuzA27NSMM="
@ -549,17 +523,17 @@
"org/apache/logging/log4j#log4j/2.17.1": { "org/apache/logging/log4j#log4j/2.17.1": {
"pom": "sha256-lnq8AkRDqcsJaTVVmvXprW8P9hN1+Esn1EDS+nCAawk=" "pom": "sha256-lnq8AkRDqcsJaTVVmvXprW8P9hN1+Esn1EDS+nCAawk="
}, },
"org/bouncycastle#bcpkix-jdk18on/1.80": { "org/bouncycastle#bcpkix-jdk15on/1.69": {
"jar": "sha256-T0umqSYX6hncGD8PpdtJLu5Cb93ioKLWyUd3/9GvZBM=", "jar": "sha256-QIN20Xqqh4nnrNBV/kBCiaEfozX9fGinUykEn7fSjtI=",
"pom": "sha256-pKEiETRntyjhjyb7DP1X8LGg18SlO4Zxis5wv4uG7Uc=" "pom": "sha256-WrvkytLCMJR0ZvsgmiJn48xqDTgKajGRWVnTqtm4F2w="
}, },
"org/bouncycastle#bcprov-jdk18on/1.80": { "org/bouncycastle#bcprov-jdk15on/1.69": {
"jar": "sha256-6K0gn4xY0pGjfKl1Dp6frGBZaVbJg+Sd2Cgjgd2LMkk=", "jar": "sha256-5Gm9Ofk2mZ8lYAJjEAP/AioilR2p1b2Xicer+pdjopI=",
"pom": "sha256-oKdcdtkcQh7qVtD2Bi+49j7ff6x+xyT9QgzNytcYHUM=" "pom": "sha256-/YHicUSVvOeeauazAp2s0kzyz/NAJB2lgQVYlae6eN4="
}, },
"org/bouncycastle#bcutil-jdk18on/1.80": { "org/bouncycastle#bcutil-jdk15on/1.69": {
"jar": "sha256-Iuymh/eVVBH0Vq8z5uqOaPxzzYDLizKqX3qLGCfXxng=", "jar": "sha256-KeQOJGbQQNgqbw6ZY10LwrujqUJRz3k5zwtpMhyu/Ak=",
"pom": "sha256-Qhp95L/rnFs4sfxHxCagh9kIeJVdQQf1t6gusde3R7Y=" "pom": "sha256-p2e8fzQtGTKJfso8i6zHAEygOAv6dSnyOpc0VJZcffw="
}, },
"org/checkerframework#checker-compat-qual/2.5.2": { "org/checkerframework#checker-compat-qual/2.5.2": {
"pom": "sha256-da9ztewybj29yUayH9RoAtXafGEsO/Hlh1N0yY1+pP0=" "pom": "sha256-da9ztewybj29yUayH9RoAtXafGEsO/Hlh1N0yY1+pP0="
@ -573,10 +547,10 @@
"module": "sha256-clinadyqJrmBVNIp2FzHLls2ZrC8tjfS2vFuxJiVZjg=", "module": "sha256-clinadyqJrmBVNIp2FzHLls2ZrC8tjfS2vFuxJiVZjg=",
"pom": "sha256-AjkvvUziGQH5RWFUcrHU1NNZGzqr3wExBfXJLsMstPA=" "pom": "sha256-AjkvvUziGQH5RWFUcrHU1NNZGzqr3wExBfXJLsMstPA="
}, },
"org/checkerframework#checker-qual/3.49.3": { "org/checkerframework#checker-qual/3.42.0": {
"jar": "sha256-Nn7b8v6fYGwf21qLpuHJwnYlmT4f+VTjho3nC8xkFrc=", "jar": "sha256-zK7dM68LeJTZ8vO2RPTRnkOSjjKQLmGsTRB3eDD1qsc=",
"module": "sha256-dv9CWNsfoaC8bOeur0coPfEGD9Q3oJvm7zxcMmnqWtM=", "module": "sha256-4PpiK33mPq4RBH726RtMKtDx8OE8uQP/UggKR/V6V0Y=",
"pom": "sha256-i+QBdkYoXZFCx/sibPuARFwXfcfBNjsj2UH6bJuwXc8=" "pom": "sha256-v1/KqycvVMvPG753w72WPIIcmrrSBYcIvwvtPIdUlMo="
}, },
"org/codehaus#codehaus-parent/3": { "org/codehaus#codehaus-parent/3": {
"pom": "sha256-UOslOs0LbuBI9DLZ/Do7NiZO+z2h/6f7B/bE1LeoyjE=" "pom": "sha256-UOslOs0LbuBI9DLZ/Do7NiZO+z2h/6f7B/bE1LeoyjE="
@ -605,10 +579,6 @@
"jar": "sha256-YwKKfV6V7sjibuBCSxQfh+nalccYTypaSbtD371TsQQ=", "jar": "sha256-YwKKfV6V7sjibuBCSxQfh+nalccYTypaSbtD371TsQQ=",
"pom": "sha256-zMoEy/7Z60gzSM+6aexh9gvdyfPjwJJLZLsZ0cqy4s0=" "pom": "sha256-zMoEy/7Z60gzSM+6aexh9gvdyfPjwJJLZLsZ0cqy4s0="
}, },
"org/commonmark#commonmark-ext-gfm-tables/0.23.0": {
"jar": "sha256-WfO2Gthywhg7guygUn14GspFThF31xmMl5WydH0XC3s=",
"pom": "sha256-x6/bJCGgs9hFDewHWaPrfBHEqZfTlLd8VR3Bgi3S2Uk="
},
"org/commonmark#commonmark-ext-heading-anchor/0.23.0": { "org/commonmark#commonmark-ext-heading-anchor/0.23.0": {
"jar": "sha256-7O27O1jbcgxhNXwb4boTKlweeczr4B8NPZo25VJCDL0=", "jar": "sha256-7O27O1jbcgxhNXwb4boTKlweeczr4B8NPZo25VJCDL0=",
"pom": "sha256-95zHry5Zpgc70UwPNKezU0JDO5FxqhdLYzeHRaVuASw=" "pom": "sha256-95zHry5Zpgc70UwPNKezU0JDO5FxqhdLYzeHRaVuASw="
@ -699,17 +669,9 @@
"jar": "sha256-EhJRcOeVUZum3IAQwHC1PHaq6StIXB43Uw5Uq13QjUM=", "jar": "sha256-EhJRcOeVUZum3IAQwHC1PHaq6StIXB43Uw5Uq13QjUM=",
"pom": "sha256-EMo7z1F48YUH8hCmOtljeJaFM0OtHBKRoBmhFvIWpUg=" "pom": "sha256-EMo7z1F48YUH8hCmOtljeJaFM0OtHBKRoBmhFvIWpUg="
}, },
"org/junit#junit-bom/5.11.0": { "org/junit#junit-bom/5.7.1": {
"module": "sha256-9+2+Z/IgQnCMQQq8VHQI5cR29An1ViNqEXkiEnSi7S0=", "module": "sha256-mFTjiU1kskhSB+AEa8oHs9QtFp54L0+oyc4imnj67gQ=",
"pom": "sha256-5nRZ1IgkJKxjdPQNscj0ouiJRrNAugcsgL6TKivkZE0=" "pom": "sha256-C5sUo9YhBvr+jGinF7h7h60YaFiZRRt1PAT6QbaFd4Q="
},
"org/junit#junit-bom/5.11.0-M2": {
"module": "sha256-hkd6vPSQ1soFmqmXPLEI0ipQb0nRpVabsyzGy/Q8LM4=",
"pom": "sha256-Sj/8Sk7c/sLLXWGZInBqlAcWF5hXGTn4VN/ac+ThfMg="
},
"org/junit#junit-bom/5.11.4": {
"module": "sha256-qaTye+lOmbnVcBYtJGqA9obSd9XTGutUgQR89R2vRuQ=",
"pom": "sha256-GdS3R7IEgFMltjNFUylvmGViJ3pKwcteWTpeTE9eQRU="
}, },
"org/junit#junit-bom/5.7.2": { "org/junit#junit-bom/5.7.2": {
"module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=", "module": "sha256-87zrHFndT2mT9DBN/6WAFyuN9lp2zTb6T9ksBXjSitg=",
@ -773,9 +735,9 @@
"jar": "sha256-jK3UOsXrbQneBfrsyji5F6BAu5E5x+3rTMgcdAtxMoE=", "jar": "sha256-jK3UOsXrbQneBfrsyji5F6BAu5E5x+3rTMgcdAtxMoE=",
"pom": "sha256-cimwOzCnPukQCActnkVppR2FR/roxQ9SeEGu9MGwuqg=" "pom": "sha256-cimwOzCnPukQCActnkVppR2FR/roxQ9SeEGu9MGwuqg="
}, },
"org/postgresql#postgresql/42.7.6": { "org/postgresql#postgresql/42.7.3": {
"jar": "sha256-8qHMA1LdXlxvZdut/ye+4Awy5DLGrQMNB0R/ilmDxCo=", "jar": "sha256-omRMv7obqhRf9+jI71gqbu16fsTKeS9/BUEivex1Ymg=",
"pom": "sha256-SfNzCJO2khPK99foymodjHaf9mhCHVJS3gBSvFVGp8c=" "pom": "sha256-wqy2hFfZlqjkntB3flklW3RlCXZSOVHxAa25QHXhWIU="
}, },
"org/python#jython-standalone/2.7.4": { "org/python#jython-standalone/2.7.4": {
"jar": "sha256-H7oXae/8yLGfXhBDa8gnShWM6YhVnyV5J8JMc7sTfzw=", "jar": "sha256-H7oXae/8yLGfXhBDa8gnShWM6YhVnyV5J8JMc7sTfzw=",

View File

@ -17,8 +17,6 @@ lib.makeScope newScope (self: {
ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension { }; ghidra-delinker-extension = self.callPackage ./extensions/ghidra-delinker-extension { };
ghidra-firmware-utils = self.callPackage ./extensions/ghidra-firmware-utils { };
ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { }; ghidra-golanganalyzerextension = self.callPackage ./extensions/ghidra-golanganalyzerextension { };
ghidraninja-ghidra-scripts = self.callPackage ./extensions/ghidraninja-ghidra-scripts { }; ghidraninja-ghidra-scripts = self.callPackage ./extensions/ghidraninja-ghidra-scripts { };

View File

@ -3,23 +3,26 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
buildGhidraExtension (finalAttrs: { let
version = "3.0.5";
in
buildGhidraExtension {
pname = "findcrypt"; pname = "findcrypt";
version = "3.1.2"; inherit version;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "antoniovazquezblanco"; owner = "antoniovazquezblanco";
repo = "GhidraFindcrypt"; repo = "GhidraFindcrypt";
rev = "v${finalAttrs.version}"; rev = "v${version}";
hash = "sha256-KP6Wx2U8O/37yEAcV3abKg/uWraHJJOIfb7kvcfejHA="; hash = "sha256-gWVYy+PWpNXlcgD83jap4IFRv66qdhloOwvpQVU2TcI=";
}; };
meta = { meta = {
description = "Ghidra analysis plugin to locate cryptographic constants"; description = "Ghidra analysis plugin to locate cryptographic constants";
homepage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt"; homepage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt";
downloadPage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${finalAttrs.version}"; downloadPage = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}";
changelog = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${finalAttrs.version}"; changelog = "https://github.com/antoniovazquezblanco/GhidraFindcrypt/releases/tag/v${version}";
license = lib.licenses.gpl3; license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.BonusPlay ]; maintainers = [ lib.maintainers.BonusPlay ];
}; };
}) }

View File

@ -4,36 +4,40 @@
gradle, gradle,
fetchFromGitHub, fetchFromGitHub,
}: }:
buildGhidraExtension (finalAttrs: { let
pname = "ghidra-delinker-extension";
version = "0.5.1"; version = "0.5.1";
self = buildGhidraExtension {
pname = "ghidra-delinker-extension";
inherit version;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "boricj"; owner = "boricj";
repo = "ghidra-delinker-extension"; repo = "ghidra-delinker-extension";
rev = "v${finalAttrs.version}"; rev = "v${version}";
hash = "sha256-h6F50Z7S6tPOl9mIhChLKoFxHuAkq/n36ysUEFwWGxI="; hash = "sha256-h6F50Z7S6tPOl9mIhChLKoFxHuAkq/n36ysUEFwWGxI=";
};
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
postPatch = '' self
substituteInPlace build.gradle \
--replace-fail '"''${getGitHash()}"' '"v${finalAttrs.version}"'
'';
gradleBuildTask = "buildExtension";
__darwinAllowLocalNetworking = true;
mitmCache = gradle.fetchDeps {
pkg = finalAttrs.finalPackage;
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;
};
})

View File

@ -1,24 +0,0 @@
{
buildGhidraExtension,
fetchFromGitHub,
lib,
}:
buildGhidraExtension (finalAttrs: {
pname = "ghidra-firmware-utils";
version = "2024.04.20";
src = fetchFromGitHub {
owner = "al3xtjames";
repo = "ghidra-firmware-utils";
rev = finalAttrs.version;
hash = "sha256-BbPRSD1EzgMA3TCKHyNqLjzEgiOm67mLJuOeFOTvd0I=";
};
meta = {
description = "Ghidra utilities for analyzing PC firmware";
homepage = "https://github.com/al3xtjames/ghidra-firmware-utils";
downloadPage = "https://github.com/al3xtjames/ghidra-firmware-utils/releases/tag/${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ timschumi ];
};
})

View File

@ -3,22 +3,22 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
buildGhidraExtension (finalAttrs: { buildGhidraExtension rec {
pname = "Ghidra-GolangAnalyzerExtension"; pname = "Ghidra-GolangAnalyzerExtension";
version = "1.2.4"; version = "1.2.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mooncat-greenpy"; owner = "mooncat-greenpy";
repo = "Ghidra_GolangAnalyzerExtension"; repo = "Ghidra_GolangAnalyzerExtension";
rev = finalAttrs.version; rev = version;
hash = "sha256-uxozIJ+BLcP1vBnLOCZD9ueY10hd37fON/Miii3zabo="; hash = "sha256-uxozIJ+BLcP1vBnLOCZD9ueY10hd37fON/Miii3zabo=";
}; };
meta = { meta = {
description = "Facilitates the analysis of Golang binaries using Ghidra"; description = "Facilitates the analysis of Golang binaries using Ghidra";
homepage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension"; homepage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension";
downloadPage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension/releases/tag/${finalAttrs.version}"; downloadPage = "https://github.com/mooncat-greenpy/Ghidra_GolangAnalyzerExtension/releases/tag/${version}";
license = lib.licenses.mit; license = lib.licenses.mit;
maintainers = [ lib.maintainers.ivyfanchiang ]; maintainers = [ lib.maintainers.ivyfanchiang ];
}; };
}) }

View File

@ -42,8 +42,7 @@ buildGhidraExtension {
bison bison
texinfo texinfo
perl perl
] ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
buildInputs = [ zlib ]; buildInputs = [ zlib ];
gradleBuildTask = "assemble"; gradleBuildTask = "assemble";

View File

@ -24,15 +24,15 @@ let
} }
); );
self = buildGhidraExtension (finalAttrs: { self = buildGhidraExtension rec {
pname = "kaiju"; pname = "kaiju";
version = "250828"; version = "250417";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CERTCC"; owner = "CERTCC";
repo = "kaiju"; repo = "kaiju";
rev = finalAttrs.version; rev = version;
hash = "sha256-edsQIBoOTY+WxVBtH1bbM7TZZHhA0jgVb2iJKC66iVM="; hash = "sha256-SSvCb3xnOh0mb3H24RJTi11UmN2ARgFgsiiKlZXyufM=";
}; };
buildInputs = [ buildInputs = [
@ -65,9 +65,9 @@ let
}; };
meta = { meta = {
description = "Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra"; description = "A Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra";
homepage = "https://github.com/CERTCC/kaiju"; homepage = "https://github.com/CERTCC/kaiju";
downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${finalAttrs.version}"; downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${version}";
license = lib.licenses.bsd3; license = lib.licenses.bsd3;
maintainers = [ lib.maintainers.ivyfanchiang ]; maintainers = [ lib.maintainers.ivyfanchiang ];
platforms = [ platforms = [
@ -77,6 +77,6 @@ let
"aarch64-darwin" "aarch64-darwin"
]; ];
}; };
}); };
in in
self self

View File

@ -3,22 +3,22 @@
fetchFromGitHub, fetchFromGitHub,
buildGhidraExtension, buildGhidraExtension,
}: }:
buildGhidraExtension (finalAttrs: { buildGhidraExtension rec {
pname = "lightkeeper"; pname = "lightkeeper";
version = "1.2.4"; version = "1.2.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "WorksButNotTested"; owner = "WorksButNotTested";
repo = "lightkeeper"; repo = "lightkeeper";
rev = finalAttrs.version; rev = version;
hash = "sha256-aGMWg6VQleKH/txlxpSw19QOotWZSqeW5Ve2SpWGhgA="; hash = "sha256-aGMWg6VQleKH/txlxpSw19QOotWZSqeW5Ve2SpWGhgA=";
}; };
preConfigure = '' preConfigure = ''
cd lightkeeper cd lightkeeper
''; '';
meta = { meta = {
description = "Port of the Lighthouse plugin to GHIDRA"; description = "A port of the Lighthouse plugin to GHIDRA.";
homepage = "https://github.com/WorksButNotTested/lightkeeper"; homepage = "https://github.com/WorksButNotTested/lightkeeper";
license = lib.licenses.asl20; license = lib.licenses.asl20;
}; };
}) }

View File

@ -5,15 +5,18 @@
ghidra, ghidra,
ant, ant,
}: }:
buildGhidraExtension (finalAttrs: { let
version = "2.3.1";
in
buildGhidraExtension {
pname = "wasm"; pname = "wasm";
version = "2.3.2"; inherit version;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nneonneo"; owner = "nneonneo";
repo = "ghidra-wasm-plugin"; repo = "ghidra-wasm-plugin";
rev = "v${finalAttrs.version}"; rev = "v${version}";
hash = "sha256-JFUPhh4WUcfxYow3kLMyva1Ni/cQBIit983o/KbbKps="; hash = "sha256-aoSMNzv+TgydiXM4CbvAyu/YsxmdZPvpkZkYEE3C+V4=";
}; };
nativeBuildInputs = [ ant ]; nativeBuildInputs = [ ant ];
@ -32,9 +35,9 @@ buildGhidraExtension (finalAttrs: {
meta = { meta = {
description = "Ghidra Wasm plugin with disassembly and decompilation support"; description = "Ghidra Wasm plugin with disassembly and decompilation support";
homepage = "https://github.com/nneonneo/ghidra-wasm-plugin"; homepage = "https://github.com/nneonneo/ghidra-wasm-plugin";
downloadPage = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${finalAttrs.version}"; downloadPage = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}";
changelog = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${finalAttrs.version}"; changelog = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}";
license = lib.licenses.gpl3; license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.BonusPlay ]; maintainers = [ lib.maintainers.BonusPlay ];
}; };
}) }

View File

@ -0,0 +1,40 @@
{
lib,
python,
buildPythonPackage,
ghidra,
setuptools,
psutil,
ghidratrace,
}: buildPythonPackage {
pname = "ghidragdb";
version = "11.3";
pyproject = true;
src = "${ghidra.lib}/lib/ghidra/Ghidra/Debug/Debugger-agent-gdb/pypkg";
postPatch = ''
rm -rf dist
'';
build-system = [
setuptools
];
dependencies = [
ghidratrace
psutil
];
# can't import because gdb is missing
# pythonImportsCheck = [
# "ghidragdb"
# ];
meta = (lib.removeAttrs ghidra.meta ["description" "mainProgram"]) // {
description = "Ghidra's Plugin for gdb";
};
}

View File

@ -0,0 +1,40 @@
{
lib,
python,
buildPythonPackage,
ghidra,
setuptools,
psutil,
ghidratrace,
}: buildPythonPackage {
pname = "ghidralldb";
version = "11.3";
pyproject = true;
src = "${ghidra.lib}/lib/ghidra/Ghidra/Debug/Debugger-agent-lldb/pypkg";
postPatch = ''
rm -rf dist
'';
build-system = [
setuptools
];
dependencies = [
ghidratrace
psutil
];
# can't import because lldb is missing
# pythonImportsCheck = [
# "ghidralldb"
# ];
meta = (lib.removeAttrs ghidra.meta ["description" "mainProgram"]) // {
description = "Ghidra's Plugin for lldb";
};
}

View File

@ -0,0 +1,46 @@
{
lib,
python,
buildPythonPackage,
pythonRelaxDepsHook,
ghidra,
setuptools,
protobuf,
}: buildPythonPackage {
pname = "ghidratrace";
version = "11.3";
pyproject = true;
src = "${ghidra.lib}/lib/ghidra/Ghidra/Debug/Debugger-rmi-trace/pypkg";
postPatch = ''
rm -rf dist
'';
build-system = [
setuptools
];
dependencies = [
protobuf
];
nativeBuildInputs = [
pythonRelaxDepsHook
];
pythonRelaxDeps = [
"protobuf"
];
pythonImportsCheck = [
"ghidratrace"
];
meta = (lib.removeAttrs ghidra.meta ["description" "mainProgram"]) // {
description = "Ghidra's TraceRmi for Python3";
};
}

View File

@ -0,0 +1,43 @@
{
lib,
python,
buildPythonPackage,
ghidra,
setuptools,
jpype1,
}: buildPythonPackage {
pname = "pyghidra";
version = "2.1.0";
pyproject = true;
src = "${ghidra.lib}/lib/ghidra/Ghidra/Features/PyGhidra/pypkg";
# TODO: make a more involved wrapper or patch this package to change the launch system
# TODO: support launching a ghidra-with-extensions package
makeWrapperArgs = [
"--set" "GHIDRA_INSTALL_DIR" "${ghidra.lib}/lib/ghidra"
];
postPatch = ''
rm -rf dist
'';
build-system = [
setuptools
];
dependencies = [
jpype1
];
pythonImportsCheck = [
"pyghidra"
];
meta = (lib.removeAttrs ghidra.meta ["description" "mainProgram"]) // {
description = "Native CPython for Ghidra";
};
}

View File

@ -29,10 +29,8 @@ let
nativeBuildInputs = [ nativeBuildInputs = [
makeBinaryWrapper makeBinaryWrapper
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle; ] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;
postBuild = '' postBuild =
# Prevent attempted creation of plugin lock files in the Nix store. ''
touch $out/lib/ghidra/Ghidra/.dbDirLock
makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \ makeWrapper '${ghidra}/bin/ghidra' "$out/bin/ghidra" \
--set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra" --set NIX_GHIDRAHOME "$out/lib/ghidra/Ghidra"
makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \ makeWrapper '${ghidra}/bin/ghidra-analyzeHeadless' "$out/bin/ghidra-analyzeHeadless" \

View File

@ -0,0 +1,39 @@
{
lib,
buildDotnetModule,
fetchFromGitHub,
dotnetCorePackages,
}:
buildDotnetModule rec {
pname = "depotdownloader";
version = "3.4.0";
src = fetchFromGitHub {
owner = "SteamRE";
repo = "DepotDownloader";
rev = "DepotDownloader_${version}";
hash = "sha256-zduNWIQi+ItNSh9RfRfY0giIw/tMQIMRh9woUzQ5pJw=";
};
projectFile = "DepotDownloader.sln";
nugetDeps = ./deps.json;
dotnet-sdk = dotnetCorePackages.sdk_9_0;
dotnet-runtime = dotnetCorePackages.runtime_9_0;
passthru.updateScript = ./update.sh;
meta = {
description = "Steam depot downloader utilizing the SteamKit2 library";
changelog = "https://github.com/SteamRE/DepotDownloader/releases/tag/DepotDownloader_${version}";
license = lib.licenses.gpl2Only;
maintainers = [ lib.maintainers.babbaj ];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
mainProgram = "DepotDownloader";
};
}

View File

@ -0,0 +1,72 @@
[
{
"pname": "Microsoft.NETCore.Platforms",
"version": "5.0.0",
"hash": "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c="
},
{
"pname": "Microsoft.Win32.Registry",
"version": "5.0.0",
"hash": "sha256-9kylPGfKZc58yFqNKa77stomcoNnMeERXozWJzDcUIA="
},
{
"pname": "Microsoft.Windows.CsWin32",
"version": "0.3.183",
"hash": "sha256-bn0rHYoVLRTqiZqkkp6u3PMKtg0NNxA2F++1e/+3Jhw="
},
{
"pname": "Microsoft.Windows.SDK.Win32Docs",
"version": "0.1.42-alpha",
"hash": "sha256-6DvzmNzrGVfWmNJNqooj+Ya+7bAQlyeg7pmyKaUlIws="
},
{
"pname": "Microsoft.Windows.SDK.Win32Metadata",
"version": "61.0.15-preview",
"hash": "sha256-OB60ThIv8e7AMGaRRzJ8dWme5HjN+Q0HoUDquP2ejTg="
},
{
"pname": "Microsoft.Windows.WDK.Win32Metadata",
"version": "0.12.8-experimental",
"hash": "sha256-YaN6JlgnpIooLYu3NdFVHwoqFwZYTeePtekXCfTiLTo="
},
{
"pname": "protobuf-net",
"version": "3.2.52",
"hash": "sha256-phXeroBt5KbHYkApkkMa0mRCVkDY+dtOOXXNY+i50Ek="
},
{
"pname": "protobuf-net.Core",
"version": "3.2.52",
"hash": "sha256-/9Jj26tuSKeYJb9udwew5i5EVvaoeNu/vBCKS0VhSQQ="
},
{
"pname": "QRCoder",
"version": "1.6.0",
"hash": "sha256-2Ev/6d7PH6K4dVYQQHlZ+ZggkCnDtrlaGygs65mDo28="
},
{
"pname": "SteamKit2",
"version": "3.2.0",
"hash": "sha256-hB/36fP9kf+1mIx+hTELUMHe8ZkmSKxOK41ZzOaBa3E="
},
{
"pname": "System.IO.Hashing",
"version": "9.0.4",
"hash": "sha256-rbcQzEncB3VuUZIcsE1tq30suf5rvRE4HkE+0lR/skU="
},
{
"pname": "System.Security.AccessControl",
"version": "5.0.0",
"hash": "sha256-ueSG+Yn82evxyGBnE49N4D+ngODDXgornlBtQ3Omw54="
},
{
"pname": "System.Security.Principal.Windows",
"version": "5.0.0",
"hash": "sha256-CBOQwl9veFkrKK2oU8JFFEiKIh/p+aJO+q9Tc2Q/89Y="
},
{
"pname": "ZstdSharp.Port",
"version": "0.8.5",
"hash": "sha256-+UQFeU64md0LlSf9nMXif6hHnfYEKm+WRyYd0Vo2QvI="
}
]