# 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 ]; } ``` 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 = [ ]; } ``` for standalone nix on other distros, use `~/.config/nixpkgs/overlays.nix` to enable the dragnpkgs overlay ```nix (import {}).nixpkgs.overlays ``` ## options documentation 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) #### services.ghidra-server.{package, jdkPackage} (`ghidra_headless`, `openjdk17_headless`) 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 #### services.ghidra-server.directory (`ghidra-server`) the root directory for server files, as a subdirectory of `/var/lib`. this is needed because this option is passed to systemd `StateDirectory=` #### services.ghidra-server.{user,group} (`ghidra`) the service user and group ### more coming soon(tm) ## packages documentation ### `ghidra_headless` a variant of ghidra built with a headless openjdk, intended to reduce closure size for server operation ### `ocamlPackages.xlog` logging for cats, in ocaml: ## 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; } ``` ## 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