personal nixos repo
Go to file
xenia f0fd21aafa add todo list 2024-04-23 16:50:54 -04:00
lib/fetchsteam lib: add fetchFromSteam fetcher 2024-04-15 15:57:00 -04:00
modules/ghidra-server oops 2024-04-23 15:30:21 -04:00
pkgs/ocaml/xlog add ocamlPackages.xlog 2024-04-23 14:05:46 -04:00
support create documentation rendering derivation 2024-04-09 17:24:56 -04:00
.gitignore create documentation rendering derivation 2024-04-09 17:24:56 -04:00
LICENSE.txt add readme and license 2024-04-07 18:28:42 -04:00
README.md fix ghidra-server statedirectory 2024-04-23 15:22:28 -04:00
TODO.md add todo list 2024-04-23 16:50:54 -04:00
default.nix update overrideScope' -> overrideScope 2024-04-23 14:12:08 -04:00

README.md

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

{config, lib, pkgs, ...}:
{
  imports = [
    path/to/dragnpkgs
  ];
}

alternatively, add it as a nix channel

nix-channel --add https://git.lain.faith/haskal/dragnpkgs/archive/main.tar.gz dragnpkgs

then in system config

{config, lib, pkgs, ...}:
{
  imports = [
    <dragnpkgs>
  ];
}

for standalone nix on other distros, use ~/.config/nixpkgs/overlays.nix to enable the dragnpkgs overlay

(import <dragnpkgs> {}).nixpkgs.overlays

options documentation

documentation for options provided by dragnpkgs

services.ghidra-server

the shared project server for ghidra

example usage:

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: https://git.lain.faith/haskal/xlog

lib documentation

fetchFromSteam

a fetcher that downloads binaries from Steam using DepotDownloader. this is intended for game servers that are distributed via Steam. use SteamDB to get the needed IDs.

Usage:

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. this means, in particular that commercial use is forbidden. if you are, for whatever reason, interested in using this code commercially, please contact me