dragnpkgs/README.md

197 lines
5.0 KiB
Markdown
Raw Normal View History

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
2024-04-23 22:40:11 +00:00
### [`ghidra_headless`](./default.nix)
2024-04-10 16:29:18 +00:00
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 22:40:11 +00:00
### [`ocamlPackages.xlog`](./pkgs/ocaml/xlog)
2024-04-23 19:22:28 +00:00
logging for cats, in ocaml: <https://git.lain.faith/haskal/xlog>
2024-04-23 22:41:31 +00:00
### [`python312Packages.feedvalidator` or `feedvalidator`](./pkgs/python/feedvalidator)
2024-04-23 22:15:09 +00:00
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
2024-04-23 22:40:11 +00:00
### [`fetchFromSteam`](./lib/fetchsteam)
2024-04-15 19:57:00 +00:00
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-23 22:40:11 +00:00
### [`mkNginxServer`](./lib/dev-nginx)
2024-04-23 22:37:49 +00:00
creates a shell script that launches nginx in the foreground as the current user. the nginx is
configured to run an http server on `localhost:8080` with the given `siteConfig`
example:
```nix
pkgs.mkNginxServer {
siteConfig = ''
location / {
root path/to/development_site_root;
error_page 404 /404.html;
}
'';
}
```
2024-04-23 22:44:21 +00:00
## development
structure of this repo
- `default.nix`: the top level NixOS module, which can also be interpreted as a plain nix file
outside of NixOS for access to just the nixpkgs overlay. this contains all definitions for
packages, library functions, and NixOS modules
- `lib/`: library functions (ie functions that get added to the overlay) go here
- `modules/`: NixOS modules go here
- `pkgs/`: packages that get added to the overlay go here
- `support/`: WIP support tools (eg generating documentation)
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