2024-04-23 22:16:35 +00:00
|
|
|
---
|
|
|
|
gitea: none
|
|
|
|
include_toc: true
|
|
|
|
---
|
|
|
|
|
2024-04-07 22:28:42 +00:00
|
|
|
# dragnpkgs
|
|
|
|
|
|
|
|
this is my personal nixos modules and packages repository. while it was designed for my own use,
|
|
|
|
it's also intended to be flexible and reusable enough for general purpose usage. i might consider
|
|
|
|
upstreaming into nixpkgs if there is sufficient interest
|
|
|
|
|
|
|
|
## usage
|
|
|
|
|
|
|
|
dragnpkgs provides a set of nixos modules and a nixpkgs overlay containing custom packages
|
|
|
|
(automatically applied). to use, import the top-level module into your system configuration, eg
|
|
|
|
|
|
|
|
```nix
|
|
|
|
{config, lib, pkgs, ...}:
|
|
|
|
{
|
|
|
|
imports = [
|
|
|
|
path/to/dragnpkgs
|
|
|
|
];
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2024-04-23 18:14:23 +00:00
|
|
|
alternatively, add it as a nix channel
|
|
|
|
```bash
|
|
|
|
nix-channel --add https://git.lain.faith/haskal/dragnpkgs/archive/main.tar.gz dragnpkgs
|
|
|
|
```
|
|
|
|
|
|
|
|
then in system config
|
|
|
|
```nix
|
|
|
|
{config, lib, pkgs, ...}:
|
|
|
|
{
|
|
|
|
imports = [
|
|
|
|
<dragnpkgs>
|
|
|
|
];
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
for standalone nix on other distros, use `~/.config/nixpkgs/overlays.nix` to enable the dragnpkgs
|
|
|
|
overlay
|
|
|
|
```nix
|
|
|
|
(import <dragnpkgs> {}).nixpkgs.overlays
|
|
|
|
```
|
|
|
|
|
2024-04-10 16:29:18 +00:00
|
|
|
## options documentation
|
2024-04-09 20:51:38 +00:00
|
|
|
|
|
|
|
documentation for options provided by dragnpkgs
|
|
|
|
|
|
|
|
|
|
|
|
### [`services.ghidra-server`](./modules/ghidra-server)
|
|
|
|
the shared project server for [ghidra](https://ghidra-sre.org)
|
|
|
|
|
|
|
|
example usage:
|
|
|
|
```nix
|
|
|
|
services.ghidra-server = {
|
|
|
|
enable = true;
|
|
|
|
host = "your.domain.or.ip";
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
#### services.ghidra-server.enable
|
|
|
|
|
|
|
|
enables the ghidra server service
|
|
|
|
|
|
|
|
#### services.ghidra-server.enableAdminCli
|
|
|
|
|
|
|
|
adds a system package for the CLI tool `ghidra-svrAdmin`, which allows anyone in the `ghidra` group
|
|
|
|
to administer the server (this corresponds to the `server/svrAdmin` tool in the stock ghidra
|
|
|
|
distribution)
|
|
|
|
|
2024-04-10 16:29:18 +00:00
|
|
|
#### services.ghidra-server.{package, jdkPackage} (`ghidra_headless`, `openjdk17_headless`)
|
2024-04-09 20:51:38 +00:00
|
|
|
|
|
|
|
allows overriding the ghidra package and jdk package used for the server
|
|
|
|
|
|
|
|
#### services.ghidra-server.host
|
|
|
|
|
|
|
|
the server hostname or IP; this is typically required (by java RMI) for correct operation
|
|
|
|
|
|
|
|
#### services.ghidra-server.basePort (`13100`)
|
|
|
|
|
|
|
|
the server will use 3 consecutive TCP ports starting from this port
|
|
|
|
|
2024-04-23 19:22:28 +00:00
|
|
|
#### services.ghidra-server.directory (`ghidra-server`)
|
2024-04-09 20:51:38 +00:00
|
|
|
|
2024-04-23 19:22:28 +00:00
|
|
|
the root directory for server files, as a subdirectory of `/var/lib`. this is needed because this
|
|
|
|
option is passed to systemd `StateDirectory=`
|
2024-04-09 20:51:38 +00:00
|
|
|
|
|
|
|
#### services.ghidra-server.{user,group} (`ghidra`)
|
|
|
|
|
|
|
|
the service user and group
|
|
|
|
|
|
|
|
|
|
|
|
### more coming soon(tm)
|
|
|
|
|
2024-04-10 16:29:18 +00:00
|
|
|
## packages documentation
|
|
|
|
|
|
|
|
### `ghidra_headless`
|
|
|
|
|
|
|
|
a variant of ghidra built with a headless openjdk, intended to reduce closure size for server
|
|
|
|
operation
|
2024-04-07 22:28:42 +00:00
|
|
|
|
2024-04-23 19:22:28 +00:00
|
|
|
### `ocamlPackages.xlog`
|
|
|
|
|
|
|
|
logging for cats, in ocaml: <https://git.lain.faith/haskal/xlog>
|
|
|
|
|
2024-04-23 22:15:09 +00:00
|
|
|
### `pythonPackages.feedvalidator` or `feedvalidator`
|
|
|
|
|
|
|
|
the W3C atom/RSS feed validator library, <https://github.com/w3c/feedvalidator>
|
|
|
|
|
|
|
|
this package comes with an additional CLI bin, `feedvalidator`, which is a simple wrapper around the
|
|
|
|
library that enables CLI usage
|
|
|
|
|
|
|
|
usage
|
|
|
|
```
|
|
|
|
usage: feedvalidator [-h] [-b BASE] file
|
|
|
|
|
|
|
|
W3C feedvalidator
|
|
|
|
|
|
|
|
positional arguments:
|
|
|
|
file File to validate
|
|
|
|
|
|
|
|
options:
|
|
|
|
-h, --help show this help message and exit
|
|
|
|
-b BASE, --base BASE Base URL of document
|
|
|
|
```
|
|
|
|
|
|
|
|
example
|
|
|
|
```bash
|
|
|
|
feedvalidator --base "https://my-base-url/atom.xml" path/to/atom.xml
|
|
|
|
```
|
|
|
|
|
2024-04-15 19:57:00 +00:00
|
|
|
## lib documentation
|
|
|
|
|
|
|
|
### `fetchFromSteam`
|
|
|
|
|
|
|
|
a fetcher that downloads binaries from [Steam](https://store.steampowered.com/) using
|
|
|
|
[DepotDownloader](https://github.com/SteamRE/DepotDownloader). this is intended for game servers
|
|
|
|
that are distributed via Steam. use [SteamDB](https://steamdb.info) to get the needed IDs.
|
|
|
|
|
|
|
|
Usage:
|
|
|
|
|
|
|
|
```nix
|
|
|
|
pkgs.fetchFromSteam {
|
|
|
|
name = "..."; # optional
|
|
|
|
appId = "...";
|
|
|
|
depot = {
|
|
|
|
depotId = "...";
|
|
|
|
manifestId = "...";
|
|
|
|
beta = "..."; # optional
|
|
|
|
};
|
|
|
|
|
|
|
|
additionalDepots = [
|
|
|
|
# same format as the main `depot`
|
|
|
|
# use this to include eg the steamworks redistributable depot
|
|
|
|
];
|
|
|
|
|
|
|
|
hash = pkgs.lib.fakeHash;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2024-04-07 22:28:42 +00:00
|
|
|
## licensing
|
|
|
|
|
|
|
|
this repository is NOT licensed under a "standard" FOSS license. instead, it uses
|
|
|
|
[CC-BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en). this means, in
|
|
|
|
particular that commercial use is forbidden. if you are, for whatever reason, interested in using
|
|
|
|
this code commercially, please contact me
|