Emery Hemingway f64ffaf188 | ||
---|---|---|
src | ||
.envrc | ||
.gitignore | ||
README.md | ||
Tupfile | ||
Tuprules.tup | ||
config.prs | ||
inotify_actor.prs | ||
lock.json | ||
mountpoints.prs | ||
mpv.config-example.pr | ||
net_mapper.prs | ||
rofi.prs | ||
shell.nix | ||
syndicate_utils.nimble |
README.md
Syndicate utils
cache_actor
An actor that observes patterns and reässerts the values they capture for a given lifetime. Takes the arguments { dataspace: #!any lifetime: double }
. The lifetime of a cache counts down from moment a value is asserted.
Example configuration:
? <nixspace ?nixspace> [
; Require the nix_actor during observations.
?nixspace> ? <Observe <rec eval _> _> [
$config <require-service <daemon nix_actor>> ]
?nixspace> ? <Observe <rec realise _> _> [
$config <require-service <daemon nix_actor>> ]
; Cache anything captured by observers in the $nixspace for an hour.
; The nix_actor is not required during caching.
$config ? <service-object <daemon cache_actor> ?cap> [
$cap { dataspace: $nixspace lifetime: 3600.0 } ]
]
json_translator
Wrapper that executes a command, parses its JSON output, converts to Preserves record <recv @jsonData any>
, and publishes and messages to its initial dataspace.
json_socket_translator
Utility to communicate with sockets that send and receive lines of JSON using <send …>
and <recv …>
messages. Compatible with mpv, see mpv.config-example.pr.
Do not send messages immediately to the dataspace passed json_socket_translator
, wait until it asserts <connected @socketPath string>
.
mintsturdyref
A utility for minting Sturdyrefs.
mount_actor
Actor for mounting filesystems on Linux.
Sample Syndicate server script:
# Assert a file-system we want to mount.
<mount "/dev/sda3" "/boot" "vfat">
# Transform mount assertions into mount status observations.
? <mount ?source ?target ?fs> [
? <mount $source $target $fs _> [ ]
]
# Assert mounting succeded.
? <mount _ ?target _ #t> [
<service-state <mountpoint $target> ready>
]
# Assert mount failed.
? <mount _ ?target _ <failure _>> [
<service-state <mountpoint $target> failed>
]
# Assert the details into the machine dataspace.
? <machine-dataspace ?machine> [
$config ? <mount ?source ?target ?fs ?status> [
$machine <mount $source $target $fs $status>
]
]
# Require the mount_actor daemon.
<require-service <daemon mount_actor>>
<daemon mount_actor {
argv: ["/home/emery/src/bin/mount_actor"]
protocol: application/syndicate
}>
# Pass the daemon the config dataspace.
? <service-object <daemon mount_actor> ?cap> [
$cap { dataspace: $config }
]
msg
A utility that sends messages to $SYNDICATE_ROUTE
.
net_mapper
Publishes ICMP packet round-trip-times. See net_mapper.prs for a protocol description. Source.
Example script:
? <machine-dataspace ?machine> [
$machine ? <rtt "10.0.33.136" ?min ?avg ?max> [
$log ! <log "-" { ping: { min: $min avg: $avg max: $max } }>
]
$config [
<require-service <daemon net_mapper>>
<daemon net_mapper {
argv: ["/bin/net_mapper"]
protocol: application/syndicate
}>
? <service-object <daemon net_mapper> ?cap> [
$cap { dataspace: $machine }
]
]
]
preserve_process_environment
This utility serializes it's process environment to Preserves and prints it to stdout. It can be used to feed the environment variables of a nested child of the Syndicate server back to the server. For example, to retreive the environmental variables that a desktop manager passed on to its children.
syndump
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects a dataspace via $SYNDICATE_ROUTE
, and writes observations to standard-output. Published assertions are prefixed by the +
character, retractions by -
, and messages by !
.
Example
# Print patterns in use, filter down with AWK to only the published patterns.
$ FS=':' syndump '<Observe ? _>' | awk -F : '/^+/ { print $2 }'