Compare commits
65 Commits
nixos-24.1
...
main
Author | SHA1 | Date |
---|---|---|
|
2772028078 | |
|
113bc45dd7 | |
|
a66cf9784a | |
|
8a7924eec1 | |
|
6b4734f62a | |
|
8cc37b204b | |
|
5b50a91cb5 | |
|
0a6e9704e6 | |
|
a00041da5f | |
|
a81c912fef | |
|
93e5969f57 | |
|
25abcac448 | |
|
50d9159ec9 | |
|
3e8347b65d | |
|
dfcb303eef | |
|
19bb39a8b4 | |
|
ba07a66e07 | |
|
fa2faaa61b | |
|
0a7266f226 | |
|
9400180e4e | |
|
c2fc8fbb93 | |
|
d2b8ffb94e | |
|
b43ccbd975 | |
|
b46d653917 | |
|
7dc3f2f58b | |
|
3bc422b57e | |
|
44f5afdcb2 | |
|
5f8c733db3 | |
|
6978c9e38d | |
|
5e2bfd4065 | |
|
0e8de3ebd5 | |
|
bd3d9212a4 | |
|
53cd3de729 | |
|
641c0cc2a3 | |
|
e3036e3ea7 | |
|
e06597d7db | |
|
97922bfd96 | |
|
907f2b4f79 | |
|
7ba8c01ca7 | |
|
3ac643fd34 | |
|
71a6dd181f | |
|
56ff602212 | |
|
b6248a7c20 | |
|
c0162ee0ab | |
|
2ff9f229bf | |
|
9f18b6fa2b | |
|
b93a04fdeb | |
|
2b9f33af31 | |
|
c7dba4d40c | |
|
0983d7e40c | |
|
4de2918dac | |
|
52c2bf19cf | |
|
e489b5e0c0 | |
|
38e92db645 | |
|
e677a8a19d | |
|
605365998b | |
|
8a7b9ed927 | |
|
fdcb5d11f8 | |
|
00b235cc12 | |
|
99f6c563b9 | |
|
556fe1ae58 | |
|
41acad611e | |
|
77b601780b | |
|
1089645144 | |
|
d0cbcd927c |
68
README.md
68
README.md
|
@ -16,43 +16,47 @@ modules require the overlay
|
|||
|
||||
### non-flake
|
||||
|
||||
```nix
|
||||
{config, lib, pkgs, ...}:
|
||||
{
|
||||
imports = [
|
||||
/path/to/dragnpkgs/module.nix
|
||||
];
|
||||
|
||||
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>) ]
|
||||
```
|
||||
since i use flakes now (sigh!!!) i'm not supporting non-flake usage anymore. if you read the files
|
||||
in the repo there's a way to do it probably
|
||||
|
||||
### flake
|
||||
|
||||
for flake usage, point your `nixpkgs` to this repo
|
||||
for flake usage, add this repo as an input and don't input nixpkgs at all, since we fully wrap it
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
# for nixos-24.05
|
||||
nixpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=nixos-24.05";
|
||||
# for nixos-24.11
|
||||
dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=nixos-24.11";
|
||||
|
||||
# for nixos-unstable
|
||||
nixpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=main";
|
||||
dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=main";
|
||||
};
|
||||
|
||||
outputs = { self, dragnpkgs, ... }: {
|
||||
nixosConfigurations.mycomputer = dragnpkgs.lib.nixosSystem {
|
||||
...
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
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!!!!
|
||||
note that the dragnpkgs module sets a couple defaults -- see module.nix and the inline modules in
|
||||
flake.nix for details
|
||||
- disables nixpkgs self-registration in the flake registry and nix path and enables a
|
||||
dragnpkgs-specific registration mechanism for these that is enabled by default, see
|
||||
`options.dragnpkgs`
|
||||
- in flake.nix but not in module.nix: disable channels
|
||||
- add lix cache and its keys to substitutors
|
||||
- enable experimental features `nix-command flakes repl-flake`
|
||||
- disable the default flake registry. i think it's cringe
|
||||
- add a repl overlay that adds some useful utilities to `nix repl` -- see repl-overlay.nix for
|
||||
details
|
||||
|
||||
also 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.11 or unstable),
|
||||
clone the repo and recreate `flake.lock`. aren't flakes so cool and fun!!!!
|
||||
|
||||
## options documentation
|
||||
|
||||
|
@ -132,6 +136,14 @@ opinionated ppx for string literals: <https://git.lain.faith/haskal/ppx_unicode>
|
|||
|
||||
logging for cats, in ocaml: <https://git.lain.faith/haskal/xlog>
|
||||
|
||||
### [`ocamlPackages.systemd-ml`](./pkgs/ocaml/systemd-ml)
|
||||
|
||||
libsystemd implementation in native ocaml: <https://git.lain.faith/haskal/systemd-ml>
|
||||
|
||||
### [`ocamlPackages.ocaml-manual`](./pkgs/ocaml/ocaml-manual)
|
||||
|
||||
the ocaml html docs package from opam
|
||||
|
||||
### [`python312Packages.feedvalidator` or `feedvalidator`](./pkgs/python/feedvalidator)
|
||||
|
||||
the W3C atom/RSS feed validator library, <https://github.com/w3c/feedvalidator>
|
||||
|
@ -174,13 +186,11 @@ Generic tool for monitoring ETA and progress of an arbitrary process.
|
|||
|
||||
<https://github.com/aioobe/eta>
|
||||
|
||||
### [`rbasefind`](./pkgs/rust/rbasefind)
|
||||
### [`zbasefind`](./pkgs/rust/zbasefind)
|
||||
|
||||
A firmware base address search tool.
|
||||
Command line tool to guess the base address of a raw firmware binary (zoomer edition).
|
||||
|
||||
<https://github.com/sgayou/rbasefind>
|
||||
|
||||
**broken, do not use yet**
|
||||
<https://git.lain.faith/haskal/zbasefind.git>
|
||||
|
||||
### [`cado-nfs`](./pkgs/crypto/cado-nfs)
|
||||
|
||||
|
|
4
TODO.md
4
TODO.md
|
@ -10,7 +10,3 @@ create NixOS VM test
|
|||
- 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
|
||||
|
|
|
@ -14,9 +14,9 @@ let
|
|||
};
|
||||
in
|
||||
{ overlays ? [], ... } @ args:
|
||||
import "${nixpkgs}" {
|
||||
import "${nixpkgs}" ({
|
||||
overlays = [
|
||||
(import ./overlay.nix)
|
||||
(import "${lix-module}/overlay.nix" { inherit lix; })
|
||||
] ++ overlays;
|
||||
} // (builtins.removeAttrs args [ "overlays" ])
|
||||
} // (builtins.removeAttrs args [ "overlays" ]))
|
||||
|
|
26
flake.lock
26
flake.lock
|
@ -3,38 +3,38 @@
|
|||
"lix": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1729298361,
|
||||
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
|
||||
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
|
||||
"lastModified": 1751235704,
|
||||
"narHash": "sha256-J4ycLoXHPsoBoQtEXFCelL4xlq5pT8U9tNWNKm43+YI=",
|
||||
"rev": "22be6ff62626c8cdbb9cdb59a3e4bd910fedd0d6",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/22be6ff62626c8cdbb9cdb59a3e4bd910fedd0d6.tar.gz?rev=22be6ff62626c8cdbb9cdb59a3e4bd910fedd0d6"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
|
||||
"url": "https://git.lix.systems/lix-project/lix/archive/2.93.2.tar.gz"
|
||||
}
|
||||
},
|
||||
"lix-module": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1729360442,
|
||||
"narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=",
|
||||
"rev": "9098ac95768f7006d7e070b88bae76939f6034e6",
|
||||
"lastModified": 1751240025,
|
||||
"narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=",
|
||||
"rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02",
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz?rev=9098ac95768f7006d7e070b88bae76939f6034e6"
|
||||
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz?rev=8b1094356f4723d6e89d3f8a95b333ee16d9ab02"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1731139594,
|
||||
"narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=",
|
||||
"lastModified": 1753939845,
|
||||
"narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2",
|
||||
"rev": "94def634a20494ee057c76998843c015909d6311",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
205
flake.nix
205
flake.nix
|
@ -5,11 +5,12 @@
|
|||
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";
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz";
|
||||
flake = false;
|
||||
};
|
||||
|
||||
lix = {
|
||||
url = "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz";
|
||||
url = "https://git.lix.systems/lix-project/lix/archive/2.93.2.tar.gz";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
@ -21,8 +22,66 @@
|
|||
(import "${lix-module}/overlay.nix" { inherit lix; })
|
||||
];
|
||||
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
||||
libVersionInfoOverlay = import "${nixpkgs}/lib/flake-version-info.nix" nixpkgs;
|
||||
# this is taken from upstream. if upstream changes, the code here needs to be updated to match
|
||||
addLibVersionInfo = lib: lib.extend libVersionInfoOverlay;
|
||||
lib-base = addLibVersionInfo (import "${nixpkgs}/lib");
|
||||
in {
|
||||
lib = nixpkgs.lib.extend (final: prev: {
|
||||
# we don't just use nix.registry.whatever.flake = self
|
||||
# the reason for this is to be able to handle a flake.lock containing an entry for this
|
||||
# flake -- setting .flake makes it a path entry in the registry, whereas we want our
|
||||
# self reference in the registry to be downloadable by URL in case it makes it into a
|
||||
# flake.lock
|
||||
meta.registry-entry = {
|
||||
from = { id = "dragnpkgs-unstable"; type = "indirect"; };
|
||||
to = {
|
||||
type = "git";
|
||||
url = "https://git.lain.faith/haskal/dragnpkgs.git";
|
||||
ref = "main";
|
||||
} // self.lib.filterAttrs
|
||||
(n: _: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash")
|
||||
self;
|
||||
};
|
||||
|
||||
# the nix path entry for self
|
||||
meta.path-entry = "dragnpkgs-unstable=flake:dragnpkgs-unstable";
|
||||
|
||||
lib = (lib-base.extend (import ./lib/overlay.nix)).extend (final: prev: {
|
||||
# initializes regular upstream nixpkgs with the given arguments
|
||||
nixpkgs-custom = { system, ... } @ args: (
|
||||
(import "${nixpkgs}" args).extend (final: prev: {
|
||||
lib = addLibVersionInfo prev.lib;
|
||||
})
|
||||
);
|
||||
|
||||
# initializes dragnpkgs with its overlays and default config using the given arguments
|
||||
dragnpkgs-custom = { system, ... } @ args: let
|
||||
unsafeConf = if builtins.hasAttr "extraBuiltins" builtins then (
|
||||
let conf = builtins.extraBuiltins; in
|
||||
if builtins.isAttrs conf then conf else {}
|
||||
) else {};
|
||||
possiblyCommitCrimes =
|
||||
if
|
||||
builtins.hasAttr "dragnpkgs" unsafeConf &&
|
||||
builtins.isAttrs unsafeConf.dragnpkgs &&
|
||||
builtins.hasAttr "possiblyCommitCrimes" unsafeConf.dragnpkgs &&
|
||||
builtins.isBool unsafeConf.dragnpkgs.possiblyCommitCrimes
|
||||
then
|
||||
unsafeConf.dragnpkgs.possiblyCommitCrimes
|
||||
else
|
||||
false;
|
||||
in
|
||||
final.nixpkgs-custom (args // {
|
||||
overlays = overlays ++ (args.overlays or []);
|
||||
config = (args.config or {}) // {
|
||||
allowlistedLicenses = (final.optionals
|
||||
possiblyCommitCrimes
|
||||
[ final.licenses.fyptl ]) ++ (args.config.allowlistedLicenses or []);
|
||||
};
|
||||
});
|
||||
|
||||
nixos = import "${nixpkgs}/nixos/lib" { lib = final; };
|
||||
|
||||
nixosSystem = args:
|
||||
import "${nixpkgs}/nixos/lib/eval-config.nix" (
|
||||
{
|
||||
|
@ -32,23 +91,139 @@
|
|||
|
||||
modules = args.modules ++ [
|
||||
({ config, pkgs, lib, ... }: {
|
||||
config.nixpkgs.flake.source = self.outPath;
|
||||
config.nixpkgs.overlays = overlays;
|
||||
config.nixpkgs = {
|
||||
# we remove nixpkgs' machinery for setting self flake references and
|
||||
# replace it with our own (in the next inline module)
|
||||
flake = {
|
||||
source = self.outPath;
|
||||
setNixPath = false;
|
||||
setFlakeRegistry = false;
|
||||
};
|
||||
|
||||
overlays = overlays;
|
||||
};
|
||||
|
||||
# this is in the flake rather than in module.nix so there's still control over
|
||||
# channels if you're not using a flake based config. but for flake based
|
||||
# configs, we're not doing channels anymore
|
||||
config.nix = {
|
||||
channel.enable = false;
|
||||
};
|
||||
})
|
||||
|
||||
({ options, config, pkgs, lib, ...}: {
|
||||
options.dragnpkgs = {
|
||||
setFlakeRegistry = lib.mkOption {
|
||||
description = "Set flake registry option pointing to self";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
defaultText = lib.literalExpression "true";
|
||||
example = lib.literalExpression "false";
|
||||
};
|
||||
|
||||
setNixPath = lib.mkOption {
|
||||
description = "Set nix path entry pointing to self";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
defaultText = lib.literalExpression "true";
|
||||
example = lib.literalExpression "false";
|
||||
};
|
||||
|
||||
setNixpkgsFlakeAlias = lib.mkOption {
|
||||
description = "Set flake registry entry for `nixpkgs` to self";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
defaultText = lib.literalExpression "true";
|
||||
example = lib.literalExpression "false";
|
||||
};
|
||||
|
||||
setTemplatesFlakeAlias = lib.mkOption {
|
||||
description = "Set flake registry entry for `templates` to self";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
defaultText = lib.literalExpression "true";
|
||||
example = lib.literalExpression "false";
|
||||
};
|
||||
|
||||
possiblyCommitCrimes = lib.mkOption {
|
||||
description = ''
|
||||
Globally enable usage of packages marked as FYPTL. This installs a nix
|
||||
plugin, which is widely considered to be a nix crime, and it also might
|
||||
be an actual crime to use these packages depending on you jurisdiction. Use
|
||||
at your own risk
|
||||
'';
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
defaultText = lib.literalExpression "false";
|
||||
example = lib.literalExpression "false";
|
||||
};
|
||||
};
|
||||
|
||||
config.nix.registry.dragnpkgs-unstable =
|
||||
lib.mkIf config.dragnpkgs.setFlakeRegistry self.meta.registry-entry;
|
||||
|
||||
config.nix.registry.nixpkgs = lib.mkIf config.dragnpkgs.setNixpkgsFlakeAlias {
|
||||
from = { id = "nixpkgs"; type = "indirect"; };
|
||||
to = { id = "dragnpkgs-unstable"; type = "indirect"; };
|
||||
};
|
||||
|
||||
config.nix.registry.templates = lib.mkIf config.dragnpkgs.setTemplatesFlakeAlias {
|
||||
from = { id = "templates"; type = "indirect"; };
|
||||
to = { id = "dragnpkgs-unstable"; type = "indirect"; };
|
||||
};
|
||||
|
||||
config.nix.nixPath = lib.mkIf config.dragnpkgs.setNixPath [
|
||||
self.meta.path-entry
|
||||
];
|
||||
|
||||
config.nixpkgs.config = lib.mkIf config.dragnpkgs.possiblyCommitCrimes {
|
||||
allowlistedLicenses = [ lib.licenses.fyptl ];
|
||||
};
|
||||
|
||||
config.nix.settings.plugin-files =
|
||||
lib.optionals config.dragnpkgs.possiblyCommitCrimes [
|
||||
"${pkgs.lix-plugins}/lib/liblix-plugins.so"
|
||||
];
|
||||
|
||||
config.nix.settings.extra-builtins-file =
|
||||
lib.mkIf config.dragnpkgs.possiblyCommitCrimes (
|
||||
lib.mkForce "/etc/nix/extra-builtins.nix"
|
||||
);
|
||||
|
||||
config.environment.etc = lib.mkIf config.dragnpkgs.possiblyCommitCrimes {
|
||||
"nix/extra-builtins.nix".text =
|
||||
let
|
||||
possiblyCommitCrimes =
|
||||
lib.boolToString config.dragnpkgs.possiblyCommitCrimes;
|
||||
in ''
|
||||
{ ... }: {
|
||||
dragnpkgs = {
|
||||
possiblyCommitCrimes = ${possiblyCommitCrimes};
|
||||
};
|
||||
}
|
||||
'';
|
||||
};
|
||||
})
|
||||
|
||||
(import ./module.nix)
|
||||
];
|
||||
} // builtins.removeAttrs args [ "modules" ]
|
||||
);
|
||||
|
||||
mkFlake = flakeDef:
|
||||
let
|
||||
rewritePerSystem = sectionDef: (forAllSystems (system:
|
||||
builtins.mapAttrs (name: value:
|
||||
self.legacyPackages.${system}.callPackage value {}
|
||||
if final.isDerivation value then
|
||||
value
|
||||
else
|
||||
self.legacyPackages.${system}.callPackage value {}
|
||||
) sectionDef
|
||||
));
|
||||
in
|
||||
builtins.mapAttrs (name: value:
|
||||
if name == "packages" || name == "legacyPackages" || name == "devShells" then
|
||||
if name == "packages" || name == "legacyPackages" || name == "devShells" ||
|
||||
name == "apps" then
|
||||
rewritePerSystem value
|
||||
else
|
||||
value
|
||||
|
@ -56,9 +231,21 @@
|
|||
});
|
||||
|
||||
legacyPackages = forAllSystems (system:
|
||||
nixpkgs.legacyPackages.${system}.appendOverlays overlays
|
||||
self.lib.dragnpkgs-custom { inherit system; }
|
||||
);
|
||||
|
||||
nixosModules = nixpkgs.nixosModules;
|
||||
templates = {
|
||||
default = {
|
||||
path = ./templates/default;
|
||||
description = "A very basic flake (with dragnpkgs)";
|
||||
};
|
||||
|
||||
beamer = {
|
||||
path = ./templates/beamer;
|
||||
description = "A very basic presentation with Beamer";
|
||||
};
|
||||
};
|
||||
|
||||
defaultTemplate = self.templates.default;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
The Fuck You, Pirate This License (FYPTL)
|
||||
---
|
||||
|
||||
Copyright (c) 2024 [Copyright Holder(s)]. All Rights Reserved.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software IS NOT granted
|
||||
for any purpose. Performing any such actions in connection with this software
|
||||
may constitute copyright infringement, and the copyright holder(s) may pursue
|
||||
any remedies for such infringement in accordance with applicable law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
shortName = "FYPTL";
|
||||
fullName = "Fuck You, Pirate This License";
|
||||
deprecated = false;
|
||||
free = false;
|
||||
redistributable = false;
|
||||
url = "https://git.lain.faith/haskal/dragnpkgs/src/branch/main/lib/licenses/FYPTL";
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
final: prev: {
|
||||
licenses = prev.licenses // { fyptl = import ./licenses/fyptl.nix; };
|
||||
}
|
15
module.nix
15
module.nix
|
@ -1,5 +1,20 @@
|
|||
{ ... }: {
|
||||
imports = [
|
||||
./modules/ghidra-server
|
||||
./modules/regdom
|
||||
./modules/machine-info
|
||||
];
|
||||
|
||||
# set some nix settings defaults
|
||||
config.nix.settings = {
|
||||
repl-overlays = [ ./repl-overlay.nix ];
|
||||
experimental-features = "nix-command flakes pipe-operator";
|
||||
temp-dir = "/var/tmp";
|
||||
|
||||
# we're disabling the default flake registry because i don't like it
|
||||
flake-registry = "";
|
||||
|
||||
# sigh
|
||||
use-xdg-base-directories = "true";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
{ config, pkgs, lib, ... }: with lib; {
|
||||
options.environment.machineInfo = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
Machine metadata, including stylized hostname, computer icon, etc.
|
||||
|
||||
This module controls the options written to `/etc/machine-info`. For more
|
||||
information, see [the freedesktop documentation][1].
|
||||
|
||||
[1]: https://www.freedesktop.org/software/systemd/man/machine-info.html
|
||||
'';
|
||||
default = {};
|
||||
type = types.submodule { options = {
|
||||
|
||||
prettyHostname = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
A pretty, human-readable hostname for this machine, potentially including
|
||||
spaces, unicode, and emoji. If unset, this falls back to the network hostname
|
||||
set in `networking.hostName`.
|
||||
'';
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"Jade's Laptop 💎\"";
|
||||
};
|
||||
|
||||
iconName = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
An XDG icon which should be associated with this machine. Some common choices
|
||||
include: `"computer"`, `"phone"`, but a complete list of icons can be found in
|
||||
the [XDG Icon Naming Spec][1].
|
||||
|
||||
If left unset, applications will typically default to `"computer"`.
|
||||
|
||||
[1]: https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
|
||||
'';
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"computer\"";
|
||||
};
|
||||
|
||||
chassis = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
The type of chassis this machine resides within. This is typically detected
|
||||
automatically, but can be manually overridden here.
|
||||
'';
|
||||
type = with types; nullOr (enum [
|
||||
"desktop"
|
||||
"laptop"
|
||||
"convertible"
|
||||
"server"
|
||||
"tablet"
|
||||
"handset"
|
||||
"watch"
|
||||
"embedded"
|
||||
"vm"
|
||||
"container"
|
||||
]);
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"server\"";
|
||||
};
|
||||
|
||||
deployment = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
If this machine is part of a deployment environment / pipeline, this option can
|
||||
be used to specify what environment/pipeline stage it manages.
|
||||
|
||||
Typically, but not necessarily, set to something like `"development"`,
|
||||
`"integration"`, `"staging"`, or `"production"`.
|
||||
'';
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"production\"";
|
||||
};
|
||||
|
||||
location = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
A human-readable short description of the location of this machine.
|
||||
|
||||
This can be set to whatever has the most meaning for you, for example "Living
|
||||
Room", "Left Rack, 2nd Shelf", or "Parishville, NY".
|
||||
'';
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"Bedroom\"";
|
||||
};
|
||||
|
||||
extraOptions = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
Extra variables to put in `/etc/machine-info`
|
||||
'';
|
||||
type = with types; attrsOf str;
|
||||
default = {};
|
||||
defaultText = literalExpression "{ }";
|
||||
example = literalExpression "{ HARDWARE_VENDOR = \"Intel Corp.\" }";
|
||||
};
|
||||
|
||||
};};
|
||||
};
|
||||
|
||||
config.environment.etc.machine-info =
|
||||
with config.environment.machineInfo;
|
||||
let
|
||||
rawShellVars = {
|
||||
PRETTY_HOSTNAME = prettyHostname;
|
||||
ICON_NAME = iconName;
|
||||
CHASSIS = chassis;
|
||||
DEPLOYMENT = deployment;
|
||||
LOCATION = location;
|
||||
} // extraOptions;
|
||||
nonNullShellVars = attrsets.filterAttrs (k: v: v != null) rawShellVars;
|
||||
in rec {
|
||||
text = strings.toShellVars nonNullShellVars;
|
||||
enable = builtins.stringLength text > 0;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.hardware.wirelessRegulatoryDomain;
|
||||
in {
|
||||
options.hardware.wirelessRegulatoryDomain = mkOption {
|
||||
description = "The wireless regulatory domain to set in the kernel cfg80211 module";
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
defaultText = literalExpression "null";
|
||||
example = literalExpression "\"US\"";
|
||||
};
|
||||
|
||||
config.boot.extraModprobeConfig = mkIf (cfg != null) ''
|
||||
options cfg80211 ieee80211_regdom=${cfg}
|
||||
'';
|
||||
}
|
27
overlay.nix
27
overlay.nix
|
@ -1,4 +1,6 @@
|
|||
final: prev: {
|
||||
lib = prev.lib.extend (import ./lib/overlay.nix);
|
||||
|
||||
fetchFromSteam = prev.callPackage ./lib/fetchsteam {};
|
||||
fetchb4 = prev.callPackage ./lib/fetchb4 {};
|
||||
|
||||
|
@ -14,31 +16,48 @@ final: prev: {
|
|||
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 {};
|
||||
systemd-ml = ofinal.callPackage ./pkgs/ocaml/systemd-ml {};
|
||||
|
||||
ocaml-manual = ofinal.callPackage ./pkgs/ocaml/ocaml-manual {};
|
||||
});
|
||||
|
||||
python312Packages = prev.python312Packages.overrideScope (pfinal: pprev: {
|
||||
feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {};
|
||||
megacom = pfinal.callPackage ./pkgs/python/megacom {};
|
||||
});
|
||||
|
||||
# add to top level because it has a binary
|
||||
feedvalidator = final.python312Packages.feedvalidator;
|
||||
megacom = final.python312Packages.megacom;
|
||||
|
||||
outer-wilds-text-adventure = prev.callPackage ./pkgs/games/outer-wilds-text-adventure {};
|
||||
|
||||
mkNginxServer = prev.callPackage ./lib/dev-nginx {};
|
||||
|
||||
rbasefind = prev.callPackage ./pkgs/rust/rbasefind {};
|
||||
zbasefind = final.callPackage ./pkgs/rust/zbasefind {};
|
||||
|
||||
eta = prev.callPackage ./pkgs/cmdline/eta {};
|
||||
|
||||
cado-nfs = prev.callPackage ./pkgs/crypto/cado-nfs {};
|
||||
|
||||
lix-plugins = prev.callPackage ./pkgs/lix/lix-plugins {};
|
||||
nix-plugins = builtins.throw "nix-plugins is not supported. see pkgs.lix-plugins";
|
||||
|
||||
zfs_2_3 = prev.zfs_2_3.overrideAttrs {
|
||||
patches = [ ./pkgs/zfs/0001-ZED-add-support-for-desktop-notifications-D-Bus.patch ];
|
||||
};
|
||||
|
||||
pympress = prev.pympress.overrideDerivation (oldAttrs: {
|
||||
patches = [ ./pkgs/python/pympress/0001-Fix-KDE-window-icon.patch ];
|
||||
});
|
||||
|
||||
texliveDragonPackages = {
|
||||
moloch = prev.callPackage ./pkgs/tex/moloch {};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,109 @@
|
|||
{
|
||||
lib,
|
||||
concatText,
|
||||
fetchzip,
|
||||
stdenvNoCC,
|
||||
writeText,
|
||||
writeShellApplication,
|
||||
|
||||
resholve,
|
||||
|
||||
bash,
|
||||
cacert,
|
||||
coreutils,
|
||||
pacman,
|
||||
systemd,
|
||||
zstd,
|
||||
|
||||
repos ? ["core" "community" "extra"],
|
||||
keyring-version ? "20250123-1",
|
||||
keyring-hash ? "sha256-JW3z8MHVecayQ3heLbhPB+rMCuZ3QsjAYiFnVNfUeH0=",
|
||||
mirror ? "https://mirror.rackspace.com/archlinux/$repo/os/$arch",
|
||||
}: rec {
|
||||
keyring = (fetchzip.override { withUnzip = false; }) {
|
||||
url = "${builtins.replaceStrings ["$repo" "$arch"] ["core" "x86_64"] mirror}/archlinux-keyring-${keyring-version}-any.pkg.tar.zst";
|
||||
hash = keyring-hash;
|
||||
nativeBuildInputs = [ zstd ];
|
||||
stripRoot = false;
|
||||
postFetch = ''
|
||||
rm "$out"/.BUILDINFO "$out"/.INSTALL "$out"/.MTREE "$out"/.PKGINFO
|
||||
mkdir "$out"/share/pacman -p
|
||||
mv "$out"/usr/share/pacman/keyrings "$out"/share/pacman
|
||||
rm -rf "$out"/usr
|
||||
'';
|
||||
};
|
||||
|
||||
pacman_conf_in =
|
||||
writeText
|
||||
"pacman-mirrors.conf"
|
||||
(lib.strings.concatLines
|
||||
(lib.map
|
||||
(repo: ''
|
||||
[${repo}]
|
||||
Server = ${mirror}
|
||||
'')
|
||||
repos));
|
||||
|
||||
pacman_conf = concatText "pacman.conf" [ "${pacman}/etc/pacman.conf" pacman_conf_in ];
|
||||
|
||||
bootstrap = resholve.writeScriptBin "archlinux-bootstrap" {
|
||||
interpreter = "${bash}/bin/bash";
|
||||
inputs = [ coreutils pacman systemd ];
|
||||
execer = [
|
||||
"cannot:${pacman}/bin/pacman-key"
|
||||
"cannot:${systemd}/bin/systemd-nspawn"
|
||||
];
|
||||
} ''
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "usage: $0 [directory] [pkgs ...]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
newroot="$1"
|
||||
shift
|
||||
|
||||
echo "Installing arch linux to $newroot"
|
||||
|
||||
# set up new base filesystem
|
||||
install -dm0755 "$newroot"
|
||||
install -dm0755 "$newroot"/var/{cache/pacman/pkg,lib/pacman,log}
|
||||
install -dm0755 "$newroot"/{dev,run,etc/pacman.d}
|
||||
install -dm1777 "$newroot"/tmp
|
||||
install -dm0555 "$newroot"/{sys,proc}
|
||||
|
||||
# set up mountpoint for nix
|
||||
install -dm0755 "$newroot"/nix
|
||||
|
||||
# temporarily set up /etc/mtab, pacman needs this to work
|
||||
ln -sf /proc/mounts "$newroot"/etc/mtab
|
||||
|
||||
# fully initialize the keyring ahead of entering the container
|
||||
pacman_conf="${pacman_conf}"
|
||||
pacman-key --gpgdir "$newroot"/etc/pacman.d/gnupg --config "$pacman_conf" --init
|
||||
pacman-key --gpgdir "$newroot"/etc/pacman.d/gnupg --config "$pacman_conf" \
|
||||
--populate archlinux --populate-from "${keyring}/share/pacman/keyrings"
|
||||
|
||||
# install the config file
|
||||
install -Dm0755 "$pacman_conf" "$newroot"/etc/pacman.conf
|
||||
|
||||
# bootstrap the system. allow pacman to overwrite the existing mtab entry
|
||||
systemd-nspawn -D "$newroot" --bind-ro=/nix \
|
||||
-E SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt \
|
||||
-E PATH=/usr/bin/ \
|
||||
-- \
|
||||
"${pacman}/bin/pacman" -Sy --noconfirm --overwrite /etc/mtab base "$@"
|
||||
|
||||
# remove nix mount point
|
||||
rmdir "$newroot"/nix
|
||||
|
||||
echo "Done installing!"
|
||||
echo "Set root password:"
|
||||
echo " sudo systemd-nspawn -UD \"$newroot\" -- /bin/passwd root"
|
||||
echo "Boot system:"
|
||||
echo " sudo systemd-nspawn -bUD \"$newroot\""
|
||||
'';
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
lib,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "eta";
|
||||
|
@ -15,4 +16,13 @@ stdenv.mkDerivation {
|
|||
installPhase = ''
|
||||
make DESTDIR="$out" install
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Generic tool for monitoring ETA and progress of an arbitrary process.";
|
||||
homepage = "https://github.com/aioobe/eta";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = [];
|
||||
mainProgram = "eta";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
inetutils,
|
||||
perl,
|
||||
|
||||
makeWrapper,
|
||||
makeBinaryWrapper,
|
||||
|
||||
# options
|
||||
useArch ? "znver4",
|
||||
|
@ -58,7 +58,7 @@
|
|||
curl
|
||||
perl
|
||||
|
||||
makeWrapper
|
||||
makeBinaryWrapper
|
||||
];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-Wno-stringop-overflow"
|
||||
|
@ -86,4 +86,19 @@
|
|||
wrapProgram $out/bin/cado-nfs.py \
|
||||
--prefix PATH : ${cadoBinPath}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Cado-NFS, An Implementation of the Number Field Sieve Algorithm";
|
||||
longDescription = ''
|
||||
CADO-NFS is a complete implementation in C/C++ of the Number Field Sieve (NFS) algorithm for
|
||||
factoring integers and computing discrete logarithms in finite fields. It consists in various
|
||||
programs corresponding to all the phases of the algorithm, and a general script that runs
|
||||
them, possibly in parallel over a network of computers.
|
||||
'';
|
||||
homepage = "https://cado-nfs.gitlabpages.inria.fr/";
|
||||
license = lib.licenses.lgpl21Plus;
|
||||
maintainers = [];
|
||||
mainProgram = "cado-nfs.py";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
/nix/store/j0r1vyd1hd43rjzaday70wny2lhjkc1p-satisfactory-dedicated-server-build-15636842
|
|
@ -1,48 +1,26 @@
|
|||
From ffb6777d58f068db7e14372415154cd93f77766e Mon Sep 17 00:00:00 2001
|
||||
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-gadp/build.gradle | 7 +-
|
||||
Ghidra/Debug/Debugger-isf/build.gradle | 8 +-
|
||||
Ghidra/Debug/Debugger-rmi-trace/build.gradle | 14 +--
|
||||
Ghidra/Debug/Debugger-rmi-trace/build.gradle | 16 ++--
|
||||
build.gradle | 6 ++
|
||||
gradle/hasProtobuf.gradle | 94 --------------------
|
||||
5 files changed, 26 insertions(+), 103 deletions(-)
|
||||
gradle/hasProtobuf.gradle | 94 --------------------
|
||||
4 files changed, 22 insertions(+), 102 deletions(-)
|
||||
delete mode 100644 gradle/hasProtobuf.gradle
|
||||
|
||||
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
|
||||
index f6c8464405..396b52d188 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"
|
||||
@@ -18,11 +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 plugin: 'eclipse'
|
||||
eclipse.project.name = 'Debug Debugger-isf'
|
||||
|
@ -52,21 +30,22 @@ index d135294a0..785681ca2 100644
|
|||
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
dependencies {
|
||||
api project(':Framework-AsyncComm')
|
||||
api project(':Framework-Debugging')
|
||||
api project(':ProposedUtils')
|
||||
diff --git a/Ghidra/Debug/Debugger-rmi-trace/build.gradle b/Ghidra/Debug/Debugger-rmi-trace/build.gradle
|
||||
index 40fbc17ab..7517ffe6e 100644
|
||||
index 8b6589f035..05da5a7a7e 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"
|
||||
@@ -19,12 +19,17 @@ apply from: "${rootProject.projectDir}/gradle/helpProject.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: 'com.google.protobuf'
|
||||
apply plugin: 'eclipse'
|
||||
eclipse.project.name = 'Debug Debugger-rmi-trace'
|
||||
|
||||
|
@ -75,6 +54,7 @@ index 40fbc17ab..7517ffe6e 100644
|
|||
+ classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
dependencies {
|
||||
api project(':Pty')
|
||||
api project(':Debugger')
|
||||
|
@ -94,11 +74,11 @@ index 40fbc17ab..7517ffe6e 100644
|
|||
commandLine exe, "--python_out=$outdir", "-I$srcdir"
|
||||
args src
|
||||
diff --git a/build.gradle b/build.gradle
|
||||
index b0c717fb1..5f56506a5 100644
|
||||
index 2d75307a08..aa8f1d7604 100644
|
||||
--- a/build.gradle
|
||||
+++ b/build.gradle
|
||||
@@ -74,6 +74,12 @@ if (flatRepo.isDirectory()) {
|
||||
jcenter()
|
||||
@@ -80,6 +80,12 @@ if (flatRepo.isDirectory()) {
|
||||
mavenCentral()
|
||||
flatDir name: "flat", dirs:["$flatRepo"]
|
||||
}
|
||||
+ buildscript {
|
||||
|
@ -111,9 +91,10 @@ index b0c717fb1..5f56506a5 100644
|
|||
}
|
||||
else {
|
||||
diff --git a/gradle/hasProtobuf.gradle b/gradle/hasProtobuf.gradle
|
||||
index 23b4ce74b..e69de29bb 100644
|
||||
deleted file mode 100644
|
||||
index 23b4ce74bb..0000000000
|
||||
--- a/gradle/hasProtobuf.gradle
|
||||
+++ b/gradle/hasProtobuf.gradle
|
||||
+++ /dev/null
|
||||
@@ -1,94 +0,0 @@
|
||||
-/* ###
|
||||
- * IP: GHIDRA
|
||||
|
@ -210,5 +191,5 @@ index 23b4ce74b..e69de29bb 100644
|
|||
-}
|
||||
-zipSourceSubproject.dependsOn generateProto
|
||||
--
|
||||
2.42.0
|
||||
2.47.0
|
||||
|
||||
|
|
|
@ -12,7 +12,12 @@ let
|
|||
oldMeta:
|
||||
oldMeta
|
||||
// {
|
||||
maintainers = (oldMeta.maintainers or [ ]) ++ (with lib.maintainers; [ vringar ]);
|
||||
maintainers =
|
||||
(oldMeta.maintainers or [ ])
|
||||
++ (with lib.maintainers; [
|
||||
vringar
|
||||
ivyfanchiang
|
||||
]);
|
||||
platforms = oldMeta.platforms or ghidra.meta.platforms;
|
||||
};
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
fetchFromGitHub,
|
||||
lib,
|
||||
callPackage,
|
||||
gradle,
|
||||
gradle_8,
|
||||
makeBinaryWrapper,
|
||||
openjdk21,
|
||||
unzip,
|
||||
|
@ -19,7 +19,9 @@
|
|||
|
||||
let
|
||||
pname = "ghidra";
|
||||
version = "11.2";
|
||||
version = "11.3.2";
|
||||
|
||||
isMacArm64 = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
|
||||
|
||||
releaseName = "NIX";
|
||||
distroPrefix = "ghidra_${version}_${releaseName}";
|
||||
|
@ -27,7 +29,7 @@ let
|
|||
owner = "NationalSecurityAgency";
|
||||
repo = "Ghidra";
|
||||
rev = "Ghidra_${version}_build";
|
||||
hash = "sha256-iO6g3t8JNdc/wAC+JG+6Y7aZCq7T9zYQC3KKZcr+wzc=";
|
||||
hash = "sha256-EvIOC/VIUaEl7eneVzgEt2fhLSP9DaawMAutk4ouFp8=";
|
||||
# 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;
|
||||
|
@ -63,7 +65,7 @@ let
|
|||
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
|
||||
tee -a Ghidra/Debug/Debugger-{isf,rmi-trace}/build.gradle <<HERE
|
||||
protobuf {
|
||||
protoc {
|
||||
path = '${protobuf}/bin/protoc'
|
||||
|
@ -72,6 +74,9 @@ let
|
|||
HERE
|
||||
'';
|
||||
|
||||
# "Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0."
|
||||
gradle = gradle_8;
|
||||
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
inherit
|
||||
|
@ -127,7 +132,21 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
data = ./deps.json;
|
||||
};
|
||||
|
||||
gradleFlags = [ "-Dorg.gradle.java.home=${openjdk21}" ];
|
||||
gradleFlags =
|
||||
[ "-Dorg.gradle.java.home=${openjdk21}" ]
|
||||
++ lib.optionals isMacArm64 [
|
||||
# For some reason I haven't been able to figure out yet, ghidra builds for
|
||||
# arm64 seems to build the x64 binaries of the decompiler. These fail to
|
||||
# build due to trying to link the x64 object files with arm64 stdc++
|
||||
# library, which obviously fails.
|
||||
#
|
||||
# Those binaries are entirely unnecessary anyways, since we're targeting
|
||||
# arm64 build here, so let's exclude them from the build.
|
||||
"-x"
|
||||
"Decompiler:linkSleighMac_x86_64Executable"
|
||||
"-x"
|
||||
"Decompiler:linkDecompileMac_x86_64Executable"
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
export JAVA_TOOL_OPTIONS="-Duser.home=$NIX_BUILD_TOP/home"
|
||||
|
@ -148,6 +167,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
mv "$lib/lib/ghidra"/*/* "$lib/lib/ghidra"
|
||||
rmdir "''${f[@]}"
|
||||
mv "$lib/lib/ghidra/docs" "$doc/share/doc/ghidra"
|
||||
|
||||
# the builtin help viewer needs the following to stay in-tree
|
||||
mkdir "$lib/lib/ghidra/docs"
|
||||
cp "$doc/share/doc/ghidra/WhatsNew.html" "$lib/lib/ghidra/docs"
|
||||
cp "$doc/share/doc/ghidra/README_PDB.html" "$lib/lib/ghidra/docs"
|
||||
|
||||
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"
|
||||
|
|
|
@ -7,72 +7,135 @@
|
|||
}
|
||||
},
|
||||
"https://files.pythonhosted.org/packages": {
|
||||
"05/71/590b2a91b43763aa27eac2c63803542a2878a4d8c600b81aa694d3fde919/jpype1-1.5.2-cp39-cp39-macosx_10_9_x86_64": {
|
||||
"whl": "sha256-i3XTPpOjvGVD3fl8JO4K21qGpp+2fw5PT6HIw5cLv5g="
|
||||
},
|
||||
"0b/7d/9fdbbc1a574be43f9820735ca8df0caf8b159856201d9b21fd73932342bc/jpype1-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64": {
|
||||
"whl": "sha256-uQDhVIJqB2EY0HQWZZbx2BfhE+BwhL8MnEPYBkqGq3c="
|
||||
},
|
||||
"0e/78/95db2eb3c8a7311ee08a2c237cea24828859db6a6cb5e901971d3f5e49da/jpype1-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64": {
|
||||
"whl": "sha256-pUp3HuViYPmOW5p3RVCE5KSAYZZ94T2r9ii9upyBIuA="
|
||||
},
|
||||
"0e/b9/4dfb38a7f4efb21f71df7344944a8d9a23e30d0503574e455af6ce4f1a56/jpype1-1.5.2-cp311-cp311-win_amd64": {
|
||||
"whl": "sha256-Cg0Y1DhLPfLlUoJUVzffzxjGBFBPE4KtFPiAvvlg8mU="
|
||||
},
|
||||
"20/a3/00a265d424f7d47e0dc547df2320225ce0143fec671faf710def41404b8c/jpype1-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64": {
|
||||
"whl": "sha256-wISAx9GBJWZKEr8KJEuWtJwFEFMGtlk32+/rBatLKEc="
|
||||
},
|
||||
"22/18/0a51845ca890ffdc72f4d71a0c2be334b887c5bb6812207efe5ad45afcb3/jpype1-1.5.2-cp310-cp310-win_amd64": {
|
||||
"whl": "sha256-kksKDPk9Pd2z95KG++QPjJAceO1hIW7b4QhmYjTfQ+A="
|
||||
},
|
||||
"27/d6/003e593296a85fd6ed616ed962795b2f87709c3eee2bca4f6d0fe55c6d00/wheel-0.37.1-py2.py3-none-any": {
|
||||
"whl": "sha256-S9zX2EATgIYSbNCSVNxhlftPxvAcBQodcjbyYw2x0io="
|
||||
},
|
||||
"35/a0/638186a75026a02286041e4a0449b1dff799a3914dc1c0716ef9b9367b73/jpype1-1.5.2-cp311-cp311-macosx_10_9_universal2": {
|
||||
"whl": "sha256-yfarjdKEwW4mF6aX1Uw9AwSwgCCjc4btlhA6EpORotk="
|
||||
},
|
||||
"50/8f/518a37381e55a8857a638afa86143efa5508434613541402d20611a1b322/comtypes-1.4.1-py3-none-any": {
|
||||
"whl": "sha256-ogig48ocClNic12g/2YYIoAdzocxK4lNfXUq3QEKIbA="
|
||||
},
|
||||
"6d/d0/191db2e9ab6ae7029368a488c9d88235966843b185aba7925e54aa0c0013/jpype1-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64": {
|
||||
"whl": "sha256-Qv6NtmrU5cZvY39cTegvyogLppYQTh9KfldYhZI96tg="
|
||||
},
|
||||
"74/dd/7408d4beae755de6fcd07c76b2f0bacabc0461b43fba83811c1f7c22440e/jpype1-1.5.2-cp312-cp312-win_amd64": {
|
||||
"whl": "sha256-x7HC120hHKtgvhZQXTKms8n//FHOecaOgaPUjl7//y0="
|
||||
},
|
||||
"74/f3/1cd4332076ed0421e703412f47f15f43af170809435c57ba3162edc80d4b/jpype1-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64": {
|
||||
"whl": "sha256-tbH7K0MKUPCB6g7iTRkjKuDQPb/j3QduxfiuQrMKZW8="
|
||||
},
|
||||
"76/be/b37005bec457b94eaaf637a663073b7c5df70113fd4ae4865f6e386c612f/jpype1-1.5.2-cp313-cp313-macosx_10_13_universal2": {
|
||||
"whl": "sha256-SssJjLFpixS25ceeJ19McNzAGw+5NCXyBtCl44DkPGY="
|
||||
},
|
||||
"77/6b/130fb6d0c43976b4e129c6bc19daf0e25c42fc38c5096ed92c4105bfd2c4/jpype1-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64": {
|
||||
"whl": "sha256-6iG8pM7OdSzT7oj81izo9ET+rI3HJER1/bnA6HEuB+o="
|
||||
},
|
||||
"77/91/f08a719461a390b48d9096b50f1f4a49ee281007ec192e51073090d3d8b7/jpype1-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64": {
|
||||
"whl": "sha256-VHRCZe82Zl0RDROaS4HRBTJpTGB3sj72DzYJ/q3CLTA="
|
||||
},
|
||||
"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="
|
||||
},
|
||||
"8d/e4/0c27352e8222dcc0e3ce44b298015072d2057d08dd353541c980a31d26c9/jpype1-1.5.2-cp312-cp312-macosx_10_9_universal2": {
|
||||
"whl": "sha256-Hh25rJCa0q4OQLBMKqiMsUJQ1SRdaXFVYVB2gfKwiy8="
|
||||
},
|
||||
"90/c7/6dc0a455d111f68ee43f27793971cf03fe29b6ef972042549db29eec39a2/psutil-5.9.8": {
|
||||
"tar.gz": "sha256-a+Em4yJUht/yhqj7mgYkalJT9MfFO0depfWsk05kGUw="
|
||||
},
|
||||
"97/0a/cbe03759331c640aa5862f974028122a862b08935a0b11b8fa6f6e46c26b/jpype1-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64": {
|
||||
"whl": "sha256-zcqTzHT42x9gTS6mrbdk3sTexoUo8e5oMI+j1SQJVzk="
|
||||
},
|
||||
"bd/68/47fa634cbd0418cbca86355e9421425f5892ee994f7338106327e49f9117/jpype1-1.5.2": {
|
||||
"tar.gz": "sha256-dKQuzPIdMDlMGDKuw5haFJZfpTINoIe2UCnRcsDOxDs="
|
||||
},
|
||||
"c0/c6/63538d160c17e837f62d29ba4163bc444cef08c29cd3f3b8090691c1869c/jpype1-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64": {
|
||||
"whl": "sha256-/PxcHUXWsQiADRcuqBe9pYXbfxZG1qmNFNqaymbg60Q="
|
||||
},
|
||||
"c7/42/be1c7bbdd83e1bfb160c94b9cafd8e25efc7400346cf7ccdbdb452c467fa/setuptools-68.0.0-py3-none-any": {
|
||||
"whl": "sha256-EeUsZ0FaOB0Q1rRiztnPuXBmF58OhxOZ4AbEqxAfyF8="
|
||||
},
|
||||
"c7/f2/b2efcad1ea5a541f125218e4eb1529ebb8ca18941264c879f3e89a36dc35/jpype1-1.5.2-cp310-cp310-macosx_10_9_universal2": {
|
||||
"whl": "sha256-ey2pjBQoEspAoYpzWzPkfGURsD3r8el5Yw9M9HO2ioc="
|
||||
},
|
||||
"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="
|
||||
},
|
||||
"e3/b7/e1787633b41d609320b41d0dd87fe3118598210609e4e3f6cef93cfcef40/jpype1-1.5.2-cp313-cp313-win_amd64": {
|
||||
"whl": "sha256-K5Y2XxMC3y+zxq1zEX1v5FClW3VQ/X/sraw87FvHEXw="
|
||||
},
|
||||
"e5/cf/344e1f81f1e8c651ec23dfa9fe4b91f6e1d699b36f610a547ba85ee7fb16/jpype1-1.5.2-cp39-cp39-win_amd64": {
|
||||
"whl": "sha256-aOHRGCAPxG9OpL8gkACBWH7ATeSEA3yZewo7fF63H+M="
|
||||
},
|
||||
"ec/1a/610693ac4ee14fcdf2d9bf3c493370e4f2ef7ae2e19217d7a237ff42367d/packaging-23.2-py3-none-any": {
|
||||
"whl": "sha256-jEkRkAM6mvfh2THQtdrMLvR1CbNN0N5n7SCbUgP8iMc="
|
||||
},
|
||||
"fa/4c/e0200a6e3fed5cda79e926c2a8a610676f04948f89d7e38d93c7d4b21be9/jpype1-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64": {
|
||||
"whl": "sha256-mU+3sxm0U/d61Lav8B4N1BgOp0pv5aAx5OnbktvpU3Y="
|
||||
}
|
||||
},
|
||||
"https://ftp.postgresql.org": {
|
||||
"pub/source/v15.3/postgresql-15.3": {
|
||||
"tar.gz": "sha256-CG04Uz4odHlmpNXx546kMuM6ePIdy5EzAQ7LUYn62Yw="
|
||||
"pub/source/v15.10/postgresql-15.10": {
|
||||
"tar.gz": "sha256-FzNmYFJZqD3BicQyf/TDclSv7WW0+GbL2KXvLqRJ6PM="
|
||||
}
|
||||
},
|
||||
"https://github.com": {
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2012_x64": {
|
||||
"https://github.com/NationalSecurityAgency/ghidra-data/raw/Ghidra_11.3.2": {
|
||||
"FunctionID/vs2012_x64": {
|
||||
"fidb": "sha256-1OmKs/eQuDF5MhhDC7oNiySl+/TaZbDB/6jLDPvrDNw="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2012_x86": {
|
||||
"FunctionID/vs2012_x86": {
|
||||
"fidb": "sha256-pJDtfi7SHlh0Wf6urOcDa37eTOhOcuEN/YxXQ0ppGLY="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2015_x64": {
|
||||
"FunctionID/vs2015_x64": {
|
||||
"fidb": "sha256-4E6eQPnstgHIX02E7Zv2a0U2O+HR6CwWLkyZArjLUI8="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2015_x86": {
|
||||
"FunctionID/vs2015_x86": {
|
||||
"fidb": "sha256-tm7mlmU+LtNlkZ3qrviFEDEgx5LiLnmvcNEgnX4dhkQ="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2017_x64": {
|
||||
"FunctionID/vs2017_x64": {
|
||||
"fidb": "sha256-1fpfaXKYF0+lPSR9NZnmoSiEYFrRgce5VOI4DsHwvYk="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2017_x86": {
|
||||
"FunctionID/vs2017_x86": {
|
||||
"fidb": "sha256-04nLjXb/SlnKNfiRuFIccq1fDfluJTlzotIahhSkzIE="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2019_x64": {
|
||||
"FunctionID/vs2019_x64": {
|
||||
"fidb": "sha256-FQAHeW/DakBpZgrWJEmq2q890Rs4ZKXvIeeYMcnOkRg="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vs2019_x86": {
|
||||
"FunctionID/vs2019_x86": {
|
||||
"fidb": "sha256-62MKNvqlhqNx63NNwLvY0TzK72l/PbWHJZY1jz3SQyo="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vsOlder_x64": {
|
||||
"FunctionID/vsOlder_x64": {
|
||||
"fidb": "sha256-jDtR9GYM0n4aDWEKnz8tX7yDOmasnuQ5PuLySB6FWGY="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/FunctionID/vsOlder_x86": {
|
||||
"FunctionID/vsOlder_x86": {
|
||||
"fidb": "sha256-mGBca2uSFKlF2ETkHIWGDVRkmkW8p4c+9pkcDpNyB4c="
|
||||
},
|
||||
"NationalSecurityAgency/ghidra-data/raw/Ghidra_11.2/lib/java-sarif-2.1-modified": {
|
||||
"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": {
|
||||
|
@ -88,10 +151,10 @@
|
|||
"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/formdev#flatlaf/3.5.4": {
|
||||
"jar": "sha256-PDS2rrLxcKlUxDWGR+tDtotEeiw1H/MRBy9xV6XU4v4=",
|
||||
"module": "sha256-Rjx10DAKwDblv9OLBqPx8Ua/17YdoyYael79bebtqdU=",
|
||||
"pom": "sha256-ymv/5ynY3zr6lZQM0Wz/dL4eiHIHGP5hCsD+Jv4XsWA="
|
||||
},
|
||||
"com/github/rotty3000#phidias/0.3.7": {
|
||||
"jar": "sha256-yNB2DOOw7RRT1DW83THjTwvjrAkCTn4amLijzr9Ka7U=",
|
||||
|
@ -183,9 +246,6 @@
|
|||
"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="
|
||||
},
|
||||
|
@ -193,32 +253,17 @@
|
|||
"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="
|
||||
|
@ -254,14 +299,39 @@
|
|||
"jar": "sha256-2t3qHqC+D1aXirMAa4rJKDSv7vvZt+TmMW/KV98PpjY=",
|
||||
"pom": "sha256-yRq1qlcNhvb9B8wVjsa8LFAIBAKXLukXn+JBAHOfuyA="
|
||||
},
|
||||
"de/femtopedia/dex2jar#d2j-base-cmd/2.4.24": {
|
||||
"jar": "sha256-npdgWaiU74QPoAMunrk+psr60vGphpifoMXqcbvZFJ0=",
|
||||
"module": "sha256-65mjqSTi2DV/NXoU2RN9XX8KH0FODoH9EfVBqInq2Bs=",
|
||||
"pom": "sha256-s8X4M7/XHInxWe+0DG5BtsU0qglCXme9YIQxdW0cUzk="
|
||||
},
|
||||
"de/femtopedia/dex2jar#d2j-external/2.4.24": {
|
||||
"jar": "sha256-PVAlQnJ6wWlu6/vwttvaU4uppYIq8r9LvgtgLvAsChA=",
|
||||
"pom": "sha256-iurxTkKYs3mHap/0Bshvlvb1ItTNRgX/UHVb+9Wr6nw="
|
||||
},
|
||||
"de/femtopedia/dex2jar#dex-ir/2.4.24": {
|
||||
"jar": "sha256-5wB1C3kGWPqw1ceC9oofvcWH74op+LMsgWv5JdKUWQA=",
|
||||
"module": "sha256-bwx56rQdiS++RQReuV/x6+XW9kW/j75D1TkmjCfCP6I=",
|
||||
"pom": "sha256-UpoS1s+bSCpK6lMusffK4pf96ez+/EzG3Toy5BFom+A="
|
||||
},
|
||||
"de/femtopedia/dex2jar#dex-reader-api/2.4.24": {
|
||||
"jar": "sha256-gJvNGdys1pm6BILCdNMgtp0uFHEJh1uMVXcpquWTxKw=",
|
||||
"module": "sha256-9KsAw3EWGfByHsgc5PMoSI0NSHkMqmJHg23KLqmFYBQ=",
|
||||
"pom": "sha256-TwVdir25YI+lmnUa4LHLa5MCMxZzXj34idrMGQugXcc="
|
||||
},
|
||||
"de/femtopedia/dex2jar#dex-reader/2.4.24": {
|
||||
"jar": "sha256-Sh8LEZ7oU/27K55XzBBziskG0RGotrAjTaePSNzrGrI=",
|
||||
"module": "sha256-qlKoHHLESSxUL/oUZVts5tBwsB4CRmi/Yu5di6WHETY=",
|
||||
"pom": "sha256-Z6TS45BHREEwK1Y9RvHU9B6plqXMKOvslFq9XG29vJ0="
|
||||
},
|
||||
"de/femtopedia/dex2jar#dex-translator/2.4.24": {
|
||||
"jar": "sha256-1Uvxla4E3v1KbMQBv1hkTTTOKccAuVOl8A9/HXsD2lU=",
|
||||
"module": "sha256-0KGW3NUxqnpbEZCwyypcG6BhF137Ey2S3P5a0pCpF9s=",
|
||||
"pom": "sha256-YQbcNXGfyXyPjDoBP0w3Dn4genKLKQu8bdSwiaezL5s="
|
||||
},
|
||||
"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="
|
||||
|
@ -472,15 +542,16 @@
|
|||
"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/checkerframework#checker-qual/3.42.0": {
|
||||
"jar": "sha256-zK7dM68LeJTZ8vO2RPTRnkOSjjKQLmGsTRB3eDD1qsc=",
|
||||
"module": "sha256-4PpiK33mPq4RBH726RtMKtDx8OE8uQP/UggKR/V6V0Y=",
|
||||
"pom": "sha256-v1/KqycvVMvPG753w72WPIIcmrrSBYcIvwvtPIdUlMo="
|
||||
},
|
||||
"org/codehaus#codehaus-parent/3": {
|
||||
"pom": "sha256-UOslOs0LbuBI9DLZ/Do7NiZO+z2h/6f7B/bE1LeoyjE="
|
||||
},
|
||||
|
@ -504,6 +575,21 @@
|
|||
"org/codehaus/mojo#mojo-parent/40": {
|
||||
"pom": "sha256-/GSNzcQE+L9m4Fg5FOz5gBdmGCASJ76hFProUEPLdV4="
|
||||
},
|
||||
"org/commonmark#commonmark-ext-footnotes/0.23.0": {
|
||||
"jar": "sha256-YwKKfV6V7sjibuBCSxQfh+nalccYTypaSbtD371TsQQ=",
|
||||
"pom": "sha256-zMoEy/7Z60gzSM+6aexh9gvdyfPjwJJLZLsZ0cqy4s0="
|
||||
},
|
||||
"org/commonmark#commonmark-ext-heading-anchor/0.23.0": {
|
||||
"jar": "sha256-7O27O1jbcgxhNXwb4boTKlweeczr4B8NPZo25VJCDL0=",
|
||||
"pom": "sha256-95zHry5Zpgc70UwPNKezU0JDO5FxqhdLYzeHRaVuASw="
|
||||
},
|
||||
"org/commonmark#commonmark-parent/0.23.0": {
|
||||
"pom": "sha256-zEC+Twqn9Lw5BEquYQVT5BfyYRkHNJVqXJl/Q50Tw94="
|
||||
},
|
||||
"org/commonmark#commonmark/0.23.0": {
|
||||
"jar": "sha256-spUGEYOcwMDG4lwIPjprIpXrwyeDLsBzPn2bvJTnTrM=",
|
||||
"pom": "sha256-3mdvxdpEpo0CntlaCSuJPVbo/ElogKIx5HHl1bKzvhY="
|
||||
},
|
||||
"org/fusesource#fusesource-pom/1.12": {
|
||||
"pom": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE="
|
||||
},
|
||||
|
@ -511,17 +597,10 @@
|
|||
"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="
|
||||
},
|
||||
|
@ -618,12 +697,13 @@
|
|||
"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-analysis/9.7.1": {
|
||||
"jar": "sha256-hbKTcYhLoxu3bt8iMjwsJOFywyZ6ZxUuuj0czC4EHvI=",
|
||||
"pom": "sha256-JcI3nyv8Kh5k5iw54rk8+w5IlweFKwjW/EcLHGpSue4="
|
||||
},
|
||||
"org/ow2/asm#asm-bom/9.6": {
|
||||
"pom": "sha256-ig5fYk/ikwt6jWmVb0OORe9TKZa01kQJthbErvSxrE4="
|
||||
},
|
||||
|
@ -631,28 +711,37 @@
|
|||
"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-commons/9.7.1": {
|
||||
"jar": "sha256-mlebVNKSrZvhcdQxP9RznGNVksK1rDpFm70QSc3exqA=",
|
||||
"pom": "sha256-C/HTHaDJ+djtwvJ9u/279z8acVtyzS+ijz8ZWZTXStE="
|
||||
},
|
||||
"org/ow2/asm#asm-tree/9.6": {
|
||||
"jar": "sha256-xD7PF7U5x3fhXae1uGVTs3fi05poPeYoVWfVKDiI5+8=",
|
||||
"pom": "sha256-G8tIHX/Ba5VbtgygfIz6JCS87ni9xAW7oxx9b13C0RM="
|
||||
},
|
||||
"org/ow2/asm#asm-tree/9.7.1": {
|
||||
"jar": "sha256-mSmIH1nra4QOhtVFcMd7Wc5yHRBObf16QJeJkcLTtB8=",
|
||||
"pom": "sha256-E7kF9l5/1DynZ09Azao3Z5ukhYxsnZ+48Xp6/ZuqvJ4="
|
||||
},
|
||||
"org/ow2/asm#asm-util/9.7.1": {
|
||||
"jar": "sha256-+IW+cbXJBVb18a0cT5J2spuWBXxJfUZmb+TdvsPLQ8Y=",
|
||||
"pom": "sha256-f7XmM2Ky1S133KO3VK661jV1HT/FIBkelQDs6eI0W3E="
|
||||
},
|
||||
"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/ow2/asm#asm/9.7.1": {
|
||||
"jar": "sha256-jK3UOsXrbQneBfrsyji5F6BAu5E5x+3rTMgcdAtxMoE=",
|
||||
"pom": "sha256-cimwOzCnPukQCActnkVppR2FR/roxQ9SeEGu9MGwuqg="
|
||||
},
|
||||
"org/python#jython-standalone/2.7.3": {
|
||||
"jar": "sha256-2n89gpsUi8+oawWdyWTjqFVv7bAhCWyNsH4wxm+qubQ=",
|
||||
"pom": "sha256-moD1I2PkBVnKxMjaKsX4uil3ksbpEmN7dIUfKjMHDNI="
|
||||
"org/postgresql#postgresql/42.7.3": {
|
||||
"jar": "sha256-omRMv7obqhRf9+jI71gqbu16fsTKeS9/BUEivex1Ymg=",
|
||||
"pom": "sha256-wqy2hFfZlqjkntB3flklW3RlCXZSOVHxAa25QHXhWIU="
|
||||
},
|
||||
"org/python#jython-standalone/2.7.4": {
|
||||
"jar": "sha256-H7oXae/8yLGfXhBDa8gnShWM6YhVnyV5J8JMc7sTfzw=",
|
||||
"pom": "sha256-WjutObAFQl/DVMK4niUVrj0MmdizCk6UqxtaPBSF1TM="
|
||||
},
|
||||
"org/slf4j#slf4j-api/1.7.25": {
|
||||
"jar": "sha256-GMSgCV1cHaa4F1kudnuyPSndL1YK1033X/OWHb3iW3k=",
|
||||
|
@ -680,9 +769,6 @@
|
|||
"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="
|
||||
},
|
||||
|
@ -739,8 +825,8 @@
|
|||
}
|
||||
},
|
||||
"https://sourceforge.net/projects": {
|
||||
"pydev/files/pydev/PyDev%206.3.1/PyDev%206.3.1": {
|
||||
"zip": "sha256-TYH+nYr+dmW46iCETT9RB/RGdCknxZlz6t5PKYCbBpk="
|
||||
"pydev/files/pydev/PyDev%209.3.0/PyDev%209.3.0": {
|
||||
"zip": "sha256-RTmO3yrbVgeKgLyIqRmUFXjwwLNj773QEb/RWKmbES4="
|
||||
},
|
||||
"yajsw/files/yajsw/yajsw-stable-13.12/yajsw-stable-13.12": {
|
||||
"zip": "sha256-xvxZgV04ANFOyXeSaor9P2BqDr100s/WBgFndGbt6qI="
|
||||
|
|
|
@ -13,14 +13,18 @@ lib.makeScope newScope (self: {
|
|||
|
||||
findcrypt = self.callPackage ./extensions/findcrypt { };
|
||||
|
||||
ghidraninja-ghidra-scripts = self.callPackage ./extensions/ghidraninja-ghidra-scripts { };
|
||||
|
||||
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; };
|
||||
|
||||
kaiju = self.callPackage ./extensions/kaiju { };
|
||||
|
||||
lightkeeper = self.callPackage ./extensions/lightkeeper { };
|
||||
|
||||
machinelearning = self.callPackage ./extensions/machinelearning { inherit ghidra; };
|
||||
|
@ -29,4 +33,5 @@ lib.makeScope newScope (self: {
|
|||
|
||||
sleighdevtools = self.callPackage ./extensions/sleighdevtools { inherit ghidra; };
|
||||
|
||||
wasm = self.callPackage ./extensions/wasm { inherit ghidra; };
|
||||
})
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
buildGhidraExtension,
|
||||
}:
|
||||
let
|
||||
version = "3.0.2";
|
||||
version = "3.0.5";
|
||||
in
|
||||
buildGhidraExtension {
|
||||
pname = "findcrypt";
|
||||
|
@ -14,7 +14,7 @@ buildGhidraExtension {
|
|||
owner = "antoniovazquezblanco";
|
||||
repo = "GhidraFindcrypt";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-SNmhn/X+POp6dRaB9etZ8GvpKf/5+mPg3E0HUQTthIY=";
|
||||
hash = "sha256-gWVYy+PWpNXlcgD83jap4IFRv66qdhloOwvpQVU2TcI=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
fetchFromGitHub,
|
||||
}:
|
||||
let
|
||||
version = "0.5.0";
|
||||
version = "0.5.1";
|
||||
self = ghidra.buildGhidraExtension {
|
||||
pname = "ghidra-delinker-extension";
|
||||
inherit version;
|
||||
|
@ -14,7 +14,7 @@ let
|
|||
owner = "boricj";
|
||||
repo = "ghidra-delinker-extension";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-y0afqqIsWN33b/zGsxJYn8O+R5IP4eD300CgzMymEA0=";
|
||||
hash = "sha256-h6F50Z7S6tPOl9mIhChLKoFxHuAkq/n36ysUEFwWGxI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
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 ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
buildGhidraExtension,
|
||||
z3,
|
||||
gradle,
|
||||
}:
|
||||
let
|
||||
ghidraPlatformName =
|
||||
{
|
||||
x86_64-linux = "linux_x86_64";
|
||||
aarch64-linux = "linux_x86_64";
|
||||
x86_64-darwin = "mac_x86_64";
|
||||
aarch64-darwin = "mac_arm_64";
|
||||
}
|
||||
.${stdenv.hostPlatform.system}
|
||||
or (throw "${stdenv.hostPlatform.system} is an unsupported platform");
|
||||
|
||||
z3_lib = (
|
||||
z3.override {
|
||||
javaBindings = true;
|
||||
jdk = gradle.jdk;
|
||||
}
|
||||
);
|
||||
|
||||
self = buildGhidraExtension rec {
|
||||
pname = "kaiju";
|
||||
version = "250417";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CERTCC";
|
||||
repo = "kaiju";
|
||||
rev = version;
|
||||
hash = "sha256-SSvCb3xnOh0mb3H24RJTi11UmN2ARgFgsiiKlZXyufM=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
z3_lib
|
||||
];
|
||||
|
||||
# used to copy java bindings from nixpkgs z3 package instead of having kaiju's build.gradle build gradle from source
|
||||
# https://github.com/CERTCC/kaiju/blob/c9dbb55484b3d2a6abd9dfca2197cd00fb7ee3c1/build.gradle#L189
|
||||
preBuild = ''
|
||||
mkdir -p build/cmake/z3/java-bindings
|
||||
ln -s ${lib.getOutput "lib" z3_lib}/lib/com.microsoft.z3.jar build/cmake/z3/java-bindings
|
||||
mkdir -p os/${ghidraPlatformName}
|
||||
cp ${lib.getOutput "lib" z3_lib}/lib/* os/${ghidraPlatformName}
|
||||
'';
|
||||
|
||||
gradleFlags = [ "-PKAIJU_SKIP_Z3_BUILD=true" ];
|
||||
|
||||
mitmCache = gradle.fetchDeps {
|
||||
pkg = self;
|
||||
data = ./deps.json;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "A Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra";
|
||||
homepage = "https://github.com/CERTCC/kaiju";
|
||||
downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${version}";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = [ lib.maintainers.ivyfanchiang ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"x86_64-darwin"
|
||||
"aarch64-darwin"
|
||||
];
|
||||
};
|
||||
};
|
||||
in
|
||||
self
|
|
@ -0,0 +1,163 @@
|
|||
{
|
||||
"!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/adarshr#gradle-test-logger-plugin/4.0.0": {
|
||||
"jar": "sha256-5nhoOjPSvINWcb3U5YcQAErR2TFqqfmlTP4iQZpPbvk=",
|
||||
"module": "sha256-jERLLH/UQgDNSrMYJyJwHCCXWkOyPH6e35sCJgSavcI=",
|
||||
"pom": "sha256-ienBpTqmJS2mx9fZscN/t/j8qQuysaNq+Ti8cNni3GE="
|
||||
},
|
||||
"com/adarshr/test-logger#com.adarshr.test-logger.gradle.plugin/4.0.0": {
|
||||
"pom": "sha256-sobTcqzS2uG4vHsg/ouoT49kiXMdiBpB83NqYCCFotc="
|
||||
},
|
||||
"com/github/tomtzook#castle/2.0.0": {
|
||||
"jar": "sha256-00zgaBUmlsBRQcXYStVP4PhRNglOxFNf7P+kBr0A7hg=",
|
||||
"pom": "sha256-3uocEIH4TsePK074yLEPseyHxbdkreKq1Uelx+60//0="
|
||||
},
|
||||
"com/google/code/gson#gson-parent/2.8.5": {
|
||||
"pom": "sha256-jx/scrkaceo57Dn193jE0RJLawl8bVWzpQtVSlIjeyc="
|
||||
},
|
||||
"com/google/code/gson#gson/2.8.5": {
|
||||
"jar": "sha256-IzoBSfw2XJ9u29aDz+JmsZvcdzvpjqva9rPJJLSOfYE=",
|
||||
"pom": "sha256-uDCFV6f8zJLZ/nyM0FmSWLNhKF0uzedontqYhDJVoJI="
|
||||
},
|
||||
"de/undercouch#gradle-download-task/5.5.0": {
|
||||
"jar": "sha256-q/7DKUbJfz8N62qP5HDon99K7FYneLm/bPp8RAehPiI=",
|
||||
"module": "sha256-5q+RV5vPUg0udBmtEPB4j13RBsCLzLCc40sNB3UvlEc=",
|
||||
"pom": "sha256-HXoKzY/wjdfQnruzxz1j1mYYyFGNudC9J0J7/BjL9Hs="
|
||||
},
|
||||
"de/undercouch/download#de.undercouch.download.gradle.plugin/5.5.0": {
|
||||
"pom": "sha256-WNFNTmP4TrzAgj/2tk1804/2bFRtUp9gLj3ML1xPEZk="
|
||||
},
|
||||
"io/github/tomtzook#plugin/1.2.2": {
|
||||
"jar": "sha256-tTNTLIWad6fNX4McGhtFiTkQqujQ14MXhv4llB2TjYs=",
|
||||
"module": "sha256-91tklOgQk0ObuwzAs8+kumszoLjzK36bNUIChrb91Cc=",
|
||||
"pom": "sha256-HliRlUYwjo3HQu/JqktYsiJy/TJTdvYTSuyHPH/3xys="
|
||||
},
|
||||
"io/github/tomtzook/gradle-cmake#io.github.tomtzook.gradle-cmake.gradle.plugin/1.2.2": {
|
||||
"pom": "sha256-xqnleYCaGEjSEkRXp5CwK67T9sAJaxIIliGoxZTnDJo="
|
||||
},
|
||||
"org/fusesource#fusesource-pom/1.12": {
|
||||
"pom": "sha256-xA2WDarc73sBwbHGZXr7rE//teUxaPj8sLKLhOb9zKE="
|
||||
},
|
||||
"org/fusesource/jansi#jansi/2.4.0": {
|
||||
"jar": "sha256-bNkZkTI917L7KMqT16wSr1qGovUyeeKzWCezAxP9C58=",
|
||||
"pom": "sha256-rECp8tDB7mMfw7CO+OLwvRS6IgEcp2/xvPZftWnq3zU="
|
||||
},
|
||||
"org/slf4j#slf4j-api/1.7.25": {
|
||||
"jar": "sha256-GMSgCV1cHaa4F1kudnuyPSndL1YK1033X/OWHb3iW3k=",
|
||||
"pom": "sha256-fNnXoLXZPf1GGhSIkbQ1Cc9AOpx/n7SQYNNVTfHIHh4="
|
||||
},
|
||||
"org/slf4j#slf4j-parent/1.7.25": {
|
||||
"pom": "sha256-GPXFISDbA26I1hNviDnIMtB0vdqVx1bG9CkknS21SsY="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/7": {
|
||||
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||
}
|
||||
},
|
||||
"https://repo.maven.apache.org/maven2": {
|
||||
"com/google/code/gson#gson-parent/2.8.6": {
|
||||
"pom": "sha256-NzZGOFnsGSZyleiUlAroKo9oRBMDESL+Nc58/34wp3Q="
|
||||
},
|
||||
"com/google/code/gson#gson/2.8.6": {
|
||||
"jar": "sha256-yPtIOQVNKAswM/gA0fWpfeLwKOuLoutFitKH5Tbz8l8=",
|
||||
"pom": "sha256-IXRBWmRzMtMP2gS9HPxwij7MhOr3UX9ZYYjYJE4QORE="
|
||||
},
|
||||
"junit#junit/4.12": {
|
||||
"pom": "sha256-kPFj944/+28cetl96efrpO6iWAcUG4XW0SvmfKJUScQ="
|
||||
},
|
||||
"junit#junit/4.13.2": {
|
||||
"jar": "sha256-jklbY0Rp1k+4rPo0laBly6zIoP/1XOHjEAe+TBbcV9M=",
|
||||
"pom": "sha256-Vptpd+5GA8llwcRsMFj6bpaSkbAWDraWTdCSzYnq3ZQ="
|
||||
},
|
||||
"net/sf/jopt-simple#jopt-simple/5.0.4": {
|
||||
"jar": "sha256-3ybMWPI19HfbB/dTulo6skPr5Xidn4ns9o3WLqmmbCg=",
|
||||
"pom": "sha256-amd2O3avzZyAuV5cXiR4LRjMGw49m0VK0/h1THa3aBU="
|
||||
},
|
||||
"org/apiguardian#apiguardian-api/1.1.2": {
|
||||
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
|
||||
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
|
||||
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
|
||||
},
|
||||
"org/commonmark#commonmark-parent/0.17.1": {
|
||||
"pom": "sha256-VQ6X1IOuWsZblW66NsnxqdlIV/bHs+qVmta7R2N4DiI="
|
||||
},
|
||||
"org/commonmark#commonmark/0.17.1": {
|
||||
"jar": "sha256-5jrQgyZPWHdSJ0c8NduGbs3DhDxHvSvy8kdan65e938=",
|
||||
"pom": "sha256-UFfBCkUrXNVyngvDZU+0vAx+VGAgCv/BqN1PfGOWPXI="
|
||||
},
|
||||
"org/hamcrest#hamcrest-core/1.3": {
|
||||
"jar": "sha256-Zv3vkelzk0jfeglqo4SlaF9Oh1WEzOiThqekclHE2Ok=",
|
||||
"pom": "sha256-/eOGp5BRc6GxA95quCBydYS1DQ4yKC4nl3h8IKZP+pM="
|
||||
},
|
||||
"org/hamcrest#hamcrest-parent/1.3": {
|
||||
"pom": "sha256-bVNflO+2Y722gsnyelAzU5RogAlkK6epZ3UEvBvkEps="
|
||||
},
|
||||
"org/junit#junit-bom/5.9.2": {
|
||||
"module": "sha256-qxN7pajjLJsGa/kSahx23VYUtyS6XAsCVJdyten0zx8=",
|
||||
"pom": "sha256-LtB9ZYRRMfUzaoZHbJpAVrWdC1i5gVqzZ5uw82819wU="
|
||||
},
|
||||
"org/junit/jupiter#junit-jupiter-api/5.9.2": {
|
||||
"jar": "sha256-92ehcPlxJ7CtNYK/M1jqu7vpgdn5ZBGFPmKdknaSb9U=",
|
||||
"module": "sha256-y9Ae2F1HTMhbIT/iBrzpgmbWdZzSjWxeQb/kUJCepHs=",
|
||||
"pom": "sha256-EK9g+mkKzNzr85TsWECdzs/x3sNwJopnA2ChFfcxxVw="
|
||||
},
|
||||
"org/junit/jupiter#junit-jupiter-engine/5.9.2": {
|
||||
"jar": "sha256-dM/Ek4j3YEE/80jKLJqzlSdIS1fe7NFX8idaX4pf6XE=",
|
||||
"module": "sha256-WmigqdMTI0BieAXap0YY+zTEXMUZp8LsgzQedDixOTM=",
|
||||
"pom": "sha256-nfOOgj4a3Zplas+5Wc5zsHAE32yffANnwmt0PmVrWa8="
|
||||
},
|
||||
"org/junit/jupiter#junit-jupiter-migrationsupport/5.9.2": {
|
||||
"jar": "sha256-1DTOe1gzyuX+9ovSfSfyABPrJ9U7bcl9eL8yS7YaDgQ=",
|
||||
"module": "sha256-0tnRvL9p+RLgxT3fNO/HonM/0gCAhCA0d3Sig2ZFVZM=",
|
||||
"pom": "sha256-KkAZMJh5lh9z788rZrJsF3TSjqF1U/72qAbA9sNbgqY="
|
||||
},
|
||||
"org/junit/platform#junit-platform-commons/1.9.2": {
|
||||
"jar": "sha256-Yko9dF7x0o6VWmpnr47boP38XJutaApz9npwu5UKaD0=",
|
||||
"module": "sha256-a6TIRhPluJ5mjuaomXHw2Q0OG4FyG4tf4MgAWPDOue4=",
|
||||
"pom": "sha256-JAI/IMI1ppYJ+y+Vpgc4VX/PlBPzrpKpLhMpVH1hRck="
|
||||
},
|
||||
"org/junit/platform#junit-platform-engine/1.9.2": {
|
||||
"jar": "sha256-JfI9xTWgkencgMAI+vKdy5K+kC5pEfd6c2+68BmQg2c=",
|
||||
"module": "sha256-HehRQa+fWBU+JFdQaaE3X7vt169dhEy+MoeWU0nLofc=",
|
||||
"pom": "sha256-LflCCmsk5fTzFCNeAc2cO49kYoXbL26C2G7gbvevTiQ="
|
||||
},
|
||||
"org/junit/vintage#junit-vintage-engine/5.9.2": {
|
||||
"jar": "sha256-QeFt0yyPRiu8AysrefI5RBkbMuw5jQWFi6212r/9BhI=",
|
||||
"module": "sha256-jMz93WRdDOdyFmeJhOtqEruXJQk0SVgOepIxTIxj0qQ=",
|
||||
"pom": "sha256-n0TiazxEQSZXNjh58YscZBQX6nrCm66O5yfi8g2w9Ck="
|
||||
},
|
||||
"org/opentest4j#opentest4j/1.2.0": {
|
||||
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
|
||||
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
|
||||
},
|
||||
"org/sonatype/oss#oss-parent/7": {
|
||||
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
|
||||
},
|
||||
"systems/manifold#manifold-core-parent/2023.1.28": {
|
||||
"pom": "sha256-ahN15Fn/32/sBPQOta1Tp+cScHjqREz7iUUTtPCfdJA="
|
||||
},
|
||||
"systems/manifold#manifold-deps-parent/2023.1.28": {
|
||||
"pom": "sha256-DE+CPr0aN18k0zh2D7G5WreDvyrnO5Wd0wDt88AJbkY="
|
||||
},
|
||||
"systems/manifold#manifold-parent/2023.1.28": {
|
||||
"pom": "sha256-J0ChX+GyGJ9xJMda85n+tR1IfdE6Ij0hhtaHYSOtU6w="
|
||||
},
|
||||
"systems/manifold#manifold-preprocessor/2023.1.28": {
|
||||
"jar": "sha256-vRIrrVT6SX3zuMVcfSwhL9nHE0oqfrtMNXuKzli2UB8=",
|
||||
"pom": "sha256-Ov7/Z6wWQo+0mSc5K9t4Yw0aehDcnQEBDSpy9fnGMiU="
|
||||
},
|
||||
"systems/manifold#manifold-rt/2023.1.28": {
|
||||
"jar": "sha256-4cn28jDYci2C2tUEizvJkdv6LRe/BrLwypEC6N0sGl0=",
|
||||
"pom": "sha256-SAJid1Td0/ltrFi7w2YDNDlWhggDxFB+jynCG/rYaok="
|
||||
},
|
||||
"systems/manifold#manifold-util/2023.1.28": {
|
||||
"jar": "sha256-WjY+1jmh4gvUHjvEbreQqoIB54HBfoNoOIILZs3IT80=",
|
||||
"pom": "sha256-CF4FlMbIuKBRMfa1OjcnIQ7EVgulP739XXFkui2/JR0="
|
||||
},
|
||||
"systems/manifold#manifold/2023.1.28": {
|
||||
"jar": "sha256-kPQeNEgFGZkZPz3zejWHU9+npn6RYRpMgOftt+bksRw=",
|
||||
"pom": "sha256-R2kHxQVkoYLTSSIm/jJhjeRx4uObTuHlTSWVp+jBkpw="
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,13 +5,13 @@
|
|||
}:
|
||||
buildGhidraExtension rec {
|
||||
pname = "lightkeeper";
|
||||
version = "1.1.1";
|
||||
version = "1.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "WorksButNotTested";
|
||||
repo = "lightkeeper";
|
||||
rev = version;
|
||||
hash = "sha256-Emyo4GBrR725jDxRsStC6/4F9mYnRo3S3QY0GeB/BvI=";
|
||||
hash = "sha256-aGMWg6VQleKH/txlxpSw19QOotWZSqeW5Ve2SpWGhgA=";
|
||||
};
|
||||
preConfigure = ''
|
||||
cd lightkeeper
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildGhidraExtension,
|
||||
ghidra,
|
||||
ant,
|
||||
}:
|
||||
let
|
||||
version = "2.3.1";
|
||||
in
|
||||
buildGhidraExtension {
|
||||
pname = "wasm";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nneonneo";
|
||||
repo = "ghidra-wasm-plugin";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-aoSMNzv+TgydiXM4CbvAyu/YsxmdZPvpkZkYEE3C+V4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ ant ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
# this doesn't really compile, it compresses sinc into sla
|
||||
pushd data
|
||||
ant -f build.xml -Dghidra.install.dir=${ghidra}/lib/ghidra sleighCompile
|
||||
popd
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Ghidra Wasm plugin with disassembly and decompilation support";
|
||||
homepage = "https://github.com/nneonneo/ghidra-wasm-plugin";
|
||||
downloadPage = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}";
|
||||
changelog = "https://github.com/nneonneo/ghidra-wasm-plugin/releases/tag/v${version}";
|
||||
license = lib.licenses.gpl3;
|
||||
maintainers = [ lib.maintainers.BonusPlay ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,199 @@
|
|||
From d9e022548aff94e90914baa921ddb4cd939c0e5c Mon Sep 17 00:00:00 2001
|
||||
From: xenia <xenia@awoo.systems>
|
||||
Date: Sat, 21 Dec 2024 15:33:10 -0500
|
||||
Subject: [PATCH] implement lix support
|
||||
|
||||
---
|
||||
CMakeLists.txt | 27 ------------
|
||||
extra-builtins.cc | 91 ++++++++++++++++-------------------------
|
||||
meson.build | 18 ++++++++
|
||||
nix-plugins-config.h.in | 3 --
|
||||
4 files changed, 53 insertions(+), 86 deletions(-)
|
||||
delete mode 100644 CMakeLists.txt
|
||||
create mode 100644 meson.build
|
||||
delete mode 100644 nix-plugins-config.h.in
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
deleted file mode 100644
|
||||
index 9674fe8..0000000
|
||||
--- a/CMakeLists.txt
|
||||
+++ /dev/null
|
||||
@@ -1,27 +0,0 @@
|
||||
-cmake_minimum_required (VERSION 3.9)
|
||||
-project (nix-plugins)
|
||||
-set (nix-plugins_VERSION_MAJOR 15)
|
||||
-set (nix-plugins_VERSION_MINOR 0)
|
||||
-set (nix-plugins_VERSION_PATCH 0)
|
||||
-
|
||||
-find_package(PkgConfig)
|
||||
-
|
||||
-pkg_check_modules(NIX REQUIRED nix-expr>=2.24 nix-main>=2.24 nix-store>=2.24)
|
||||
-
|
||||
-find_path(BOOST_INCLUDE_DIR boost/format.hpp)
|
||||
-if(BOOST_INCLUDE_DIR STREQUAL "BOOST_INCLUDE_DIR-NOTFOUND")
|
||||
- message(FATAL_ERROR "Could not find Boost formatting library.")
|
||||
-endif()
|
||||
-include_directories(${BOOST_INCLUDE_DIR})
|
||||
-
|
||||
-if(APPLE)
|
||||
- set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -flat_namespace -undefined suppress")
|
||||
-endif()
|
||||
-
|
||||
-add_library(nix-extra-builtins MODULE extra-builtins.cc)
|
||||
-configure_file(nix-plugins-config.h.in nix-plugins-config.h)
|
||||
-target_include_directories(nix-extra-builtins PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
-target_include_directories(nix-extra-builtins PUBLIC ${NIX_INCLUDE_DIRS})
|
||||
-target_compile_options(nix-extra-builtins PUBLIC ${NIX_CFLAGS_OTHER})
|
||||
-
|
||||
-install(TARGETS nix-extra-builtins DESTINATION lib/nix/plugins)
|
||||
diff --git a/extra-builtins.cc b/extra-builtins.cc
|
||||
index 3a0f90e..95aef5e 100644
|
||||
--- a/extra-builtins.cc
|
||||
+++ b/extra-builtins.cc
|
||||
@@ -1,12 +1,8 @@
|
||||
-#include <config.h>
|
||||
-#include <primops.hh>
|
||||
-#include <globals.hh>
|
||||
-#include <config-global.hh>
|
||||
-#include <eval-settings.hh>
|
||||
-#include <common-eval-args.hh>
|
||||
-#include <filtering-source-accessor.hh>
|
||||
-
|
||||
-#include "nix-plugins-config.h"
|
||||
+#include <lix/config.h>
|
||||
+#include <lix/libexpr/primops.hh>
|
||||
+#include <lix/libstore/globals.hh>
|
||||
+#include <lix/libexpr/eval-settings.hh>
|
||||
+#include <lix/libcmd/common-eval-args.hh>
|
||||
|
||||
using namespace nix;
|
||||
|
||||
@@ -21,42 +17,41 @@ static ExtraBuiltinsSettings extraBuiltinsSettings;
|
||||
|
||||
static GlobalConfig::Register rp(&extraBuiltinsSettings);
|
||||
|
||||
-static void extraBuiltins(EvalState & state, const PosIdx pos,
|
||||
+static void extraBuiltins(EvalState & state,
|
||||
Value ** _args, Value & v)
|
||||
{
|
||||
- static auto extraBuiltinsFile = state.rootPath(CanonPath(extraBuiltinsSettings.extraBuiltinsFile.to_string()));
|
||||
- if (auto rootFS2 = state.rootFS.dynamic_pointer_cast<AllowListSourceAccessor>())
|
||||
- rootFS2->allowPrefix(CanonPath(extraBuiltinsFile.path.abs()));
|
||||
+ static auto extraBuiltinsFile =
|
||||
+ SourcePath(CanonPath(extraBuiltinsSettings.extraBuiltinsFile.to_string()));
|
||||
|
||||
try {
|
||||
- auto fun = state.allocValue();
|
||||
- state.evalFile(extraBuiltinsFile, *fun);
|
||||
- Value * arg;
|
||||
- if (evalSettings.enableNativeCode) {
|
||||
- arg = state.baseEnv.values[0];
|
||||
- } else {
|
||||
- auto attrs = state.buildBindings(2);
|
||||
-
|
||||
- auto sExec = state.symbols.create("exec");
|
||||
- attrs.alloc(sExec).mkPrimOp(new PrimOp {
|
||||
- .name = "exec",
|
||||
- .arity = 1,
|
||||
- .fun = prim_exec,
|
||||
- });
|
||||
-
|
||||
- auto sImportNative = state.symbols.create("importNative");
|
||||
- attrs.alloc(sImportNative).mkPrimOp(new PrimOp {
|
||||
- .name = "importNative",
|
||||
- .arity = 2,
|
||||
- .fun = prim_importNative,
|
||||
- });
|
||||
-
|
||||
- arg = state.allocValue();
|
||||
- arg->mkAttrs(attrs);
|
||||
- }
|
||||
+ auto fun = state.ctx.mem.allocValue();
|
||||
+
|
||||
+ // bypass the source path checking by directly reading and evaluating the file
|
||||
+ // this also bypasses the eval cache but oh well
|
||||
+ Expr& e = state.ctx.parseExprFromFile(extraBuiltinsFile.unsafeIntoChecked());
|
||||
+ state.eval(e, *fun);
|
||||
+
|
||||
+ auto attrs = state.ctx.buildBindings(2);
|
||||
+
|
||||
+ auto sExec = state.ctx.symbols.create("exec");
|
||||
+ attrs.alloc(sExec).mkPrimOp(new PrimOp {
|
||||
+ .name = "exec",
|
||||
+ .arity = 1,
|
||||
+ .fun = prim_exec,
|
||||
+ });
|
||||
+
|
||||
+ auto sImportNative = state.ctx.symbols.create("importNative");
|
||||
+ attrs.alloc(sImportNative).mkPrimOp(new PrimOp {
|
||||
+ .name = "importNative",
|
||||
+ .arity = 2,
|
||||
+ .fun = prim_importNative,
|
||||
+ });
|
||||
+
|
||||
+ Value* arg = state.ctx.mem.allocValue();
|
||||
+ arg->mkAttrs(attrs);
|
||||
v.mkApp(fun, arg);
|
||||
- state.forceValue(v, pos);
|
||||
- } catch (FileNotFound &) {
|
||||
+ state.forceValue(v, noPos);
|
||||
+ } catch (SysError &) {
|
||||
v.mkNull();
|
||||
}
|
||||
}
|
||||
@@ -66,19 +61,3 @@ static RegisterPrimOp rp1({
|
||||
.arity = 0,
|
||||
.fun = extraBuiltins,
|
||||
});
|
||||
-
|
||||
-static void cflags(EvalState & state, const PosIdx _pos,
|
||||
- Value ** _args, Value & v)
|
||||
-{
|
||||
- auto attrs = state.buildBindings(3);
|
||||
- attrs.alloc("NIX_INCLUDE_DIRS").mkString(NIX_INCLUDE_DIRS);
|
||||
- attrs.alloc("NIX_CFLAGS_OTHER").mkString(NIX_CFLAGS_OTHER);
|
||||
- attrs.alloc("BOOST_INCLUDE_DIR").mkString(BOOST_INCLUDE_DIR);
|
||||
- v.mkAttrs(attrs);
|
||||
-}
|
||||
-
|
||||
-static RegisterPrimOp rp2({
|
||||
- .name = "__nix-cflags",
|
||||
- .arity = 0,
|
||||
- .fun = cflags,
|
||||
-});
|
||||
diff --git a/meson.build b/meson.build
|
||||
new file mode 100644
|
||||
index 0000000..0be6ce6
|
||||
--- /dev/null
|
||||
+++ b/meson.build
|
||||
@@ -0,0 +1,18 @@
|
||||
+project('lix-plugins',
|
||||
+ ['c', 'cpp'],
|
||||
+ default_options: ['cpp_std=gnu++20'],
|
||||
+ version: '15.0.0')
|
||||
+
|
||||
+cpp = meson.get_compiler('cpp')
|
||||
+pkgconfig = import('pkgconfig')
|
||||
+
|
||||
+lix_expr = dependency('lix-expr', version: '>=2.91')
|
||||
+lix_store = dependency('lix-store', version: '>=2.91')
|
||||
+lix_cmd = dependency('lix-cmd', version: '>=2.91')
|
||||
+lix_main = dependency('lix-main', version: '>=2.91')
|
||||
+boost = dependency('boost')
|
||||
+
|
||||
+library('lix-plugins',
|
||||
+ 'extra-builtins.cc',
|
||||
+ dependencies: [lix_expr, lix_store, lix_cmd, lix_main, boost],
|
||||
+ install: true)
|
||||
diff --git a/nix-plugins-config.h.in b/nix-plugins-config.h.in
|
||||
deleted file mode 100644
|
||||
index 459fea8..0000000
|
||||
--- a/nix-plugins-config.h.in
|
||||
+++ /dev/null
|
||||
@@ -1,3 +0,0 @@
|
||||
-#define NIX_INCLUDE_DIRS "@NIX_INCLUDE_DIRS@"
|
||||
-#define NIX_CFLAGS_OTHER "@NIX_CFLAGS_OTHER@"
|
||||
-#define BOOST_INCLUDE_DIR "@BOOST_INCLUDE_DIR@"
|
||||
--
|
||||
2.49.0
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
meson,
|
||||
ninja,
|
||||
pkg-config,
|
||||
|
||||
lix,
|
||||
boost182,
|
||||
}: stdenv.mkDerivation {
|
||||
name = "lix-plugins";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "shlevy";
|
||||
repo = "nix-plugins";
|
||||
rev = "15.0.0";
|
||||
hash = "sha256-C4VqKHi6nVAHuXVhqvTRRyn0Bb619ez4LzgUWPH1cbM=";
|
||||
};
|
||||
patches = [ ./0001-implement-lix-support.patch ];
|
||||
|
||||
mesonBuildType = "release";
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
lix
|
||||
boost182
|
||||
(lix.capnproto-lix)
|
||||
];
|
||||
|
||||
meta = {
|
||||
description = "Collection of miscellaneous plugins for the nix expression language.";
|
||||
homepage = "https://github.com/shlevy/nix-plugins";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
fetchurl,
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
|
||||
ocaml,
|
||||
|
||||
version ? lib.versions.majorMinor ocaml.version,
|
||||
}: stdenvNoCC.mkDerivation {
|
||||
pname = "ocaml-manual";
|
||||
inherit version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://caml.inria.fr/distrib/ocaml-${version}/ocaml-${version}-refman-html.tar.gz";
|
||||
hash = "sha256-NhtwltAJKxG5bwvu4hevK4xv45gRRaLEtNQ9ZW5NyvU=";
|
||||
};
|
||||
|
||||
buildPhase = "";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/share/doc/ocaml"
|
||||
cp -r . "$out/share/doc/ocaml/."
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Offline manual for OCaml";
|
||||
homepage = "https://ocaml.org";
|
||||
license = lib.licenses.lgpl21Only;
|
||||
maintainers = [];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
|
@ -20,4 +20,12 @@ buildDunePackage rec {
|
|||
|
||||
nativeBuildInputs = [ ppxlib ];
|
||||
propagatedBuildInputs = [ ppxlib uunf ];
|
||||
|
||||
meta = {
|
||||
description = "opinionated ppx for string literals";
|
||||
homepage = "https://git.lain.faith/haskal/ppx_unicode";
|
||||
license = lib.licenses.cc-by-nc-sa-40;
|
||||
maintainers = [];
|
||||
platforms = with lib.platforms; linux ++ darwin;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
lib,
|
||||
fetchgit,
|
||||
buildDunePackage,
|
||||
|
||||
cstruct,
|
||||
dune-configurator,
|
||||
eio,
|
||||
eio_linux,
|
||||
eio_main,
|
||||
ppx_unicode,
|
||||
ptime,
|
||||
xlog,
|
||||
}:
|
||||
buildDunePackage rec {
|
||||
pname = "systemd-ml";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.lain.faith/haskal/systemd-ml.git";
|
||||
rev = version;
|
||||
hash = "sha256-IkWBObwQJF5wum46OsLTH1wmPqWnF5/UuTnBFbs/o/0=";
|
||||
};
|
||||
|
||||
minimalOcamlVersion = "5.1";
|
||||
dontStrip = true;
|
||||
|
||||
nativeBuildInputs = [ dune-configurator ppx_unicode ];
|
||||
propagatedBuildInputs = [ cstruct dune-configurator eio eio_linux eio_main ppx_unicode ptime xlog ];
|
||||
|
||||
meta = {
|
||||
description = "systemd-ml provides libsystemd-like functionality for interacting with the systemd service manager, in self-contained ocaml code (with a bit of C).";
|
||||
homepage = "https://git.lain.faith/haskal/systemd-ml";
|
||||
license = lib.licenses.fyptl;
|
||||
maintainers = [];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -22,4 +22,12 @@ buildDunePackage rec {
|
|||
buildInputs = [ ppx_unicode ];
|
||||
propagatedBuildInputs = [ ptime ppxlib ];
|
||||
nativeBuildInputs = [ ppxlib ppx_unicode ];
|
||||
|
||||
meta = {
|
||||
description = "logging library for cats written in ocaml";
|
||||
homepage = "https://git.lain.faith/haskal/xlog";
|
||||
license = lib.licenses.lgpl2Plus;
|
||||
maintainers = [];
|
||||
platforms = with lib.platforms; linux ++ darwin;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -58,4 +58,13 @@ in buildPythonPackage rec {
|
|||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "feedvalidator" ];
|
||||
|
||||
meta = {
|
||||
description = "W3C-customized version of the feedvalidator";
|
||||
homepage = "https://github.com/w3c/feedvalidator";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [];
|
||||
mainProgram = "feedvalidator";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
fetchPypi,
|
||||
buildPythonPackage,
|
||||
|
||||
pyserial,
|
||||
pyserial-asyncio,
|
||||
}: buildPythonPackage rec {
|
||||
pname = "megacom";
|
||||
version = "0.1.2";
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-q2sU37uTX98RJDF0WFt7vzqtfLk3u25COCdKt34/Z70=";
|
||||
};
|
||||
|
||||
dependencies = [
|
||||
pyserial
|
||||
pyserial-asyncio
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
From ff4fb2534bae3dfe9ed12f323d23fc9df17ea447 Mon Sep 17 00:00:00 2001
|
||||
From: xenia <xenia@awoo.systems>
|
||||
Date: Mon, 7 Apr 2025 12:40:59 -0400
|
||||
Subject: [PATCH] Fix KDE window icon
|
||||
|
||||
---
|
||||
pympress/app.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pympress/app.py b/pympress/app.py
|
||||
index 7f5e3b7..6286d3e 100644
|
||||
--- a/pympress/app.py
|
||||
+++ b/pympress/app.py
|
||||
@@ -101,7 +101,7 @@ class Pympress(Gtk.Application):
|
||||
|
||||
def __init__(self):
|
||||
GLib.set_application_name('pympress')
|
||||
- # GLib.set_prgname('pympress') # Let prgname be auto-determined from sys.argv[0]
|
||||
+ GLib.set_prgname('io.github.pympress')
|
||||
Gtk.Application.__init__(self, application_id='io.github.pympress',
|
||||
flags=Gio.ApplicationFlags.HANDLES_OPEN | Gio.ApplicationFlags.CAN_OVERRIDE_APP_ID)
|
||||
|
||||
--
|
||||
2.47.2
|
||||
|
|
@ -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;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
lib,
|
||||
fetchgit,
|
||||
rustPlatform,
|
||||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "zbasefind";
|
||||
version = "0.1.0";
|
||||
src = fetchgit {
|
||||
url = "https://git.lain.faith/haskal/${pname}.git";
|
||||
rev = version;
|
||||
hash = "sha256-orvXNhM1WKlJ6j5Nuap0kZarydcujoEmF+OrdX7iFmA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-m8lXHfj6W/qltK+WrT0rE0gDNvvhghcXkeiX3Slx9X8=";
|
||||
|
||||
meta = {
|
||||
description = "A firmware base address search tool";
|
||||
homepage = "https://git.lain.faith/haskal/zbasefind";
|
||||
license = lib.licenses.fyptl;
|
||||
maintainers = [];
|
||||
mainProgram = "zbasefind";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
{
|
||||
fetchFromGitea,
|
||||
writeShellScript,
|
||||
writableTmpDirAsHomeHook,
|
||||
|
||||
stdenvNoCC,
|
||||
|
||||
texlivePackages,
|
||||
texliveBasic,
|
||||
}:
|
||||
let
|
||||
texEnv = texliveBasic.withPackages (ps: with ps; [
|
||||
# l3build
|
||||
beamer
|
||||
biblatex
|
||||
enumitem
|
||||
fileinfo
|
||||
hypdoc
|
||||
hyperref
|
||||
listings
|
||||
metalogo
|
||||
parskip
|
||||
pgf
|
||||
pgfopts
|
||||
setspace
|
||||
xurl
|
||||
microtype
|
||||
|
||||
latexmk
|
||||
]);
|
||||
in stdenvNoCC.mkDerivation rec {
|
||||
pname = "moloch";
|
||||
version = "1.0.2-DEV-xenia";
|
||||
|
||||
outputs = [
|
||||
"tex"
|
||||
"texdoc"
|
||||
];
|
||||
|
||||
passthru.tlDeps = with texlivePackages; [ latex ];
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.lain.faith";
|
||||
owner = "haskal";
|
||||
repo = "${pname}-dragon";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-eMlhJj4a2HTDhDzkS9KR+d76lt81iH7x//WZOA39tno=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
texEnv
|
||||
|
||||
# multiple-outputs.sh fails if $out is not defined
|
||||
(writeShellScript "force-tex-output.sh" ''
|
||||
out="''${tex-}"
|
||||
'')
|
||||
|
||||
writableTmpDirAsHomeHook # Need a writable $HOME for latexmk
|
||||
];
|
||||
|
||||
# we just build manually, but moloch's own method of building is using l3build
|
||||
# i have no idea how to get that working, so for now just do it normal style
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
# Generate the style files
|
||||
cd src
|
||||
latex beamertheme${pname}.ins
|
||||
|
||||
# Generate the documentation
|
||||
cp ../doc/${pname}.tex .
|
||||
latexmk -pdf ${pname}.tex
|
||||
|
||||
cd ..
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
path="$tex/tex/latex/${pname}"
|
||||
mkdir -p "$path"
|
||||
cp src/*.{cls,def,clo,sty} "$path/"
|
||||
|
||||
path="$texdoc/doc/tex/latex/${pname}"
|
||||
mkdir -p "$path"
|
||||
cp src/${pname}.pdf "$path/"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
From bf7fcd7f1213b4690dc95453117c55e12e5fa523 Mon Sep 17 00:00:00 2001
|
||||
From: xenia <xenia@awoo.systems>
|
||||
Date: Mon, 3 Feb 2025 21:36:29 -0500
|
||||
Subject: [PATCH] ZED: add support for desktop notifications (D-Bus)
|
||||
|
||||
---
|
||||
cmd/zed/zed.d/zed-functions.sh | 85 ++++++++++++++++++++++++++++++++++
|
||||
cmd/zed/zed.d/zed.rc | 8 ++++
|
||||
2 files changed, 93 insertions(+)
|
||||
|
||||
diff --git a/cmd/zed/zed.d/zed-functions.sh b/cmd/zed/zed.d/zed-functions.sh
|
||||
index 6e00f153b..472941d10 100644
|
||||
--- a/cmd/zed/zed.d/zed-functions.sh
|
||||
+++ b/cmd/zed/zed.d/zed-functions.sh
|
||||
@@ -213,6 +213,10 @@ zed_notify()
|
||||
[ "${rv}" -eq 0 ] && num_success=$((num_success + 1))
|
||||
[ "${rv}" -eq 1 ] && num_failure=$((num_failure + 1))
|
||||
|
||||
+ zed_notify_dbus "${subject}" "${pathname}"; rv=$?
|
||||
+ [ "${rv}" -eq 0 ] && num_success=$((num_success + 1))
|
||||
+ [ "${rv}" -eq 1 ] && num_failure=$((num_failure + 1))
|
||||
+
|
||||
[ "${num_success}" -gt 0 ] && return 0
|
||||
[ "${num_failure}" -gt 0 ] && return 1
|
||||
return 2
|
||||
@@ -724,6 +728,87 @@ zed_notify_gotify()
|
||||
}
|
||||
|
||||
|
||||
+# zed_notify_dbus (subject, pathname)
|
||||
+#
|
||||
+# Send a notification via D-Bus ...
|
||||
+# The variable (ZED_USE_DBUS) defines whether to use D-Bus.
|
||||
+#
|
||||
+# Requires systemd (busctl) executables to be installed in the standard PATH.
|
||||
+#
|
||||
+# References
|
||||
+# ...
|
||||
+#
|
||||
+# Arguments
|
||||
+# subject: notification subject
|
||||
+# pathname: pathname containing the notification message (OPTIONAL)
|
||||
+#
|
||||
+# Globals
|
||||
+# ZED_USE_DBUS
|
||||
+#
|
||||
+# Return
|
||||
+# 0: notification sent
|
||||
+# 1: notification failed
|
||||
+# 2: not configured
|
||||
+#
|
||||
+zed_notify_dbus()
|
||||
+{
|
||||
+ local subject="$1"
|
||||
+ local pathname="${2:-"/dev/null"}"
|
||||
+ local msg_body
|
||||
+ local msg_out
|
||||
+ local msg_err
|
||||
+ local exit_status=0
|
||||
+ local dir
|
||||
+ local userid
|
||||
+
|
||||
+ [ -n "${ZED_USE_DBUS}" ] || return 2
|
||||
+
|
||||
+ if [ ! -r "${pathname}" ]; then
|
||||
+ zed_log_err "dbus cannot read \"${pathname}\""
|
||||
+ return 1
|
||||
+ fi
|
||||
+
|
||||
+ zed_check_cmd "busctl" || return 1
|
||||
+
|
||||
+ # Read the message body in.
|
||||
+ #
|
||||
+ msg_body="$(cat "${pathname}")"
|
||||
+
|
||||
+ if [ -z "${msg_body}" ]
|
||||
+ then
|
||||
+ msg_body=$subject
|
||||
+ subject=""
|
||||
+ fi
|
||||
+
|
||||
+ # Send the notification to all users with a dbus session and check for
|
||||
+ # errors.
|
||||
+ # We use busctl(1) manually rather than eg notify-send(1) due to its
|
||||
+ # ability to send D-Bus messages from root to a non-root user with the
|
||||
+ # "--machine=<user>@.host" flag.
|
||||
+ for dir in /run/user/*; do
|
||||
+ if [ -S "$dir/bus" ]; then
|
||||
+ userid="$(basename "$dir")"
|
||||
+ msg_out="$( \
|
||||
+ busctl --user --machine "$userid@.host" -- \
|
||||
+ call org.freedesktop.Notifications \
|
||||
+ /org/freedesktop/Notifications \
|
||||
+ org.freedesktop.Notifications Notify \
|
||||
+ "susssasa{sv}i" \
|
||||
+ "ZFS" 0 "drive-harddisk-symbolic" \
|
||||
+ "$subject" "$msg_body"
|
||||
+ 0 2 urgency y 2 sender-pid x "$$" "-1" \
|
||||
+ 2>/dev/null
|
||||
+ )"; rv=$?
|
||||
+
|
||||
+ if [ "${rv}" -ne 0 ]; then
|
||||
+ zed_log_err "busctl exit=${rv}"
|
||||
+ exit_status=1
|
||||
+ fi
|
||||
+ fi
|
||||
+ done
|
||||
+ return $exit_status
|
||||
+}
|
||||
+
|
||||
|
||||
# zed_rate_limit (tag, [interval])
|
||||
#
|
||||
diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc
|
||||
index af56147a9..7917552c5 100644
|
||||
--- a/cmd/zed/zed.d/zed.rc
|
||||
+++ b/cmd/zed/zed.d/zed.rc
|
||||
@@ -197,3 +197,11 @@ ZED_SYSLOG_SUBCLASS_EXCLUDE="history_event"
|
||||
# Gotify application associated with ZED_GOTIFY_APPTOKEN.
|
||||
# Value is an integer 0 and up.
|
||||
#ZED_GOTIFY_PRIORITY=""
|
||||
+
|
||||
+
|
||||
+##
|
||||
+# Whether to send desktop notifications via D-Bus
|
||||
+# If defined, busctl(1) will be used to send desktop notifications via
|
||||
+# the org.freedesktop.Notifications D-Bus interface
|
||||
+# Disabled by default; uncomment to enable.
|
||||
+#ZED_USE_DBUS=1
|
||||
--
|
||||
2.47.2
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
info: final: prev:
|
||||
rec {
|
||||
inherit (builtins) attrValues attrNames getFlake typeOf;
|
||||
currentSystem = info.currentSystem;
|
||||
|
||||
dragnpkgs = getFlake "dragnpkgs";
|
||||
dragnpkgs-unstable = getFlake "dragnpkgs-unstable";
|
||||
pkgs = dragnpkgs.legacyPackages.${currentSystem};
|
||||
pkgs-unstable = dragnpkgs-unstable.legacyPackages.${currentSystem};
|
||||
inherit (pkgs) lib;
|
||||
|
||||
f = getFlake "git+file:${builtins.getEnv "PWD"}";
|
||||
fp =
|
||||
if (builtins.hasAttr "legacyPackages" f) then
|
||||
f.legacyPackages.${currentSystem}
|
||||
else
|
||||
f.packages.${currentSystem};
|
||||
fs = f.devShells.${currentSystem};
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
use flake
|
|
@ -0,0 +1,16 @@
|
|||
/my-beamer-presentation.pdf
|
||||
|
||||
*.aux
|
||||
*.fdb_latexmk
|
||||
*.fls
|
||||
*.log
|
||||
*.nav
|
||||
*.out
|
||||
*.snm
|
||||
*.synctex.gz
|
||||
*.toc
|
||||
|
||||
result
|
||||
result-tex
|
||||
|
||||
.direnv
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
description = "A very basic presentation with Beamer";
|
||||
|
||||
outputs = { self, dragnpkgs } @ inputs: dragnpkgs.lib.mkFlake {
|
||||
# Define a texlive environment to use
|
||||
packages.texlive-custom = { texliveMedium, texliveDragonPackages }:
|
||||
texliveMedium.withPackages (ps: with ps; [
|
||||
fontawesome5
|
||||
texliveDragonPackages.moloch
|
||||
]);
|
||||
|
||||
# Package definition for building the PDF
|
||||
packages.default = { system, stdenvNoCC }: stdenvNoCC.mkDerivation rec {
|
||||
pname = "my-beamer-presentation";
|
||||
|
||||
name = "${pname}.pdf";
|
||||
|
||||
nativeBuildInputs = [
|
||||
self.packages.${system}.texlive-custom
|
||||
];
|
||||
|
||||
src = self;
|
||||
|
||||
buildPhase = ''
|
||||
latexmk -pdf ${pname}.tex
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
cp ${pname}.pdf $out
|
||||
'';
|
||||
};
|
||||
|
||||
# Runnable package (ie `nix run`) to start the presentation
|
||||
apps.default = { lib, system, writeShellScript, pympress }: {
|
||||
type = "app";
|
||||
program = "${writeShellScript "start-presentation" ''
|
||||
exec ${lib.getExe pympress} ${self.packages.${system}.default}
|
||||
''}";
|
||||
};
|
||||
|
||||
# Devshell definition to expose the texlive environment to eg nvim
|
||||
devShells.default = { mkShell, system }: mkShell {
|
||||
packages = [ self.packages.${system}.texlive-custom ];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,93 @@
|
|||
\documentclass[aspectratio=169]{beamer}
|
||||
\usepackage[english]{babel}
|
||||
\usepackage{fontawesome5}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{arrows,calc,fit,positioning}
|
||||
|
||||
|
||||
\usetheme{moloch}
|
||||
\usefonttheme[onlymath]{serif}
|
||||
|
||||
|
||||
% this can be commented out to produce a slide deck with no notes
|
||||
\setbeameroption{show notes}
|
||||
|
||||
|
||||
% useful tikz styles from previous slide decks
|
||||
\tikzset{%
|
||||
icon/.value required,
|
||||
icon/.style={%
|
||||
node contents={\faIcon{#1}},
|
||||
icon size=normal,
|
||||
},
|
||||
icon size/.is choice,
|
||||
icon size/.default=normal,
|
||||
icon size/normal/.style={%
|
||||
font={\fontsize{20.74}{20.74}\selectfont}
|
||||
},
|
||||
icon size/small/.style={%
|
||||
font={\fontsize{12}{12}\selectfont}
|
||||
},
|
||||
rounded box/.style={%
|
||||
inner sep=0.3em,
|
||||
draw,
|
||||
rounded corners,
|
||||
line width=0.1em
|
||||
},
|
||||
sequence diagram/.style={%
|
||||
font=\small,
|
||||
line width=1pt,
|
||||
sequence/.style={%
|
||||
every to/.style={%
|
||||
to path={(\tikztostart) -- (\tikztostart -| \tikztotarget) \tikztonodes} % chktex 1 chktex 8
|
||||
},
|
||||
->/.style={-stealth,every node/.style={above}},
|
||||
<-/.style={stealth-,every node/.style={below}},
|
||||
},
|
||||
note/.style={%
|
||||
color=example text.fg,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
\title{My Beamer Presentation}
|
||||
\subtitle{(From the template)}
|
||||
\author{You}
|
||||
\institute{Institute of Swag Nix Templates}
|
||||
\date{Now}
|
||||
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\section{My Section}
|
||||
\subsection{My Subsection}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Some Slide Title}
|
||||
|
||||
Sample text
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Some Other Slide Title}
|
||||
|
||||
Sample text 2
|
||||
\end{frame}
|
||||
|
||||
|
||||
\appendix
|
||||
|
||||
\begin{frame}[standout]
|
||||
Backup Slides
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Backup slide 1}
|
||||
|
||||
Some backup slide content
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
description = "A very basic flake";
|
||||
|
||||
outputs = { self, dragnpkgs } @ inputs: dragnpkgs.lib.mkFlake {
|
||||
packages.hello = { stdenv }: stdenv.mkDerivation {
|
||||
name = "hello";
|
||||
src = self;
|
||||
|
||||
installPhase = ''
|
||||
echo TODO
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue