k 5 Reaktor: init plugin infrastructure

This commit is contained in:
makefu 2015-12-25 00:04:52 +01:00
parent 58f37bde83
commit 70264d1e46
3 changed files with 46 additions and 0 deletions
krebs/5pkgs

View file

@ -0,0 +1,38 @@
{ stdenv, lib, pkgs, makeWrapper }:
rec {
buildReaktorPlugin = { name
# TODO: profiles
, extraConfig
, phases ? []
, ... } @ attrs:
stdenv.mkDerivation (attrs // {
name = "Reaktor-plugin-" + name;
phases = phases ++ [ "installPhase" ];
isReaktorPlugin = true;
});
random-emoji = buildReaktorPlugin rec {
name = "random-emoji";
src = ./scripts/random-emoji.sh;
phases = [ "installPhase" ];
buildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
install -vm 755 ${src} $out/bin/random-emoji.sh
wrapProgram $out/bin/random-emoji.sh \
--prefix PATH : ${lib.makeSearchPath "bin" (with pkgs; [
coreutils
gnused
gnugrep
xmlstarlet
curl])};
'';
extraConfig = ''
public_commands.insert(0,{
'capname' : "emoji",
'pattern' : indirect_pattern.format("emoji"),
'argv' : ["random-emoji.sh"])
'';
};
}

View file

@ -0,0 +1,6 @@
#!/bin/sh
curl http://emojicons.com/random -s | \
grep data-text | \
sed -n 's/.*>\(.*\)<\/textarea>/\1/p' | \
head -n 1 | \
xmlstarlet unesc

View file

@ -26,6 +26,8 @@ subdirs // rec {
inherit (subdirs) get jq;
};
ReaktorPlugins = pkgs.callPackage ./Reaktor/plugins.nix {};
execve = name: { filename, argv, envp ? {}, destination ? "" }:
writeC name { inherit destination; } ''
#include <unistd.h>