Compare commits

..

37 Commits

Author SHA1 Message Date
Emery Hemingway 03374806ab Update Rust stuff (broken because the language is unstable) 2022-09-06 12:08:01 -05:00
Emery Hemingway 3f4c5ae37e Only one nixpkgs input 2022-09-06 11:18:29 -05:00
Emery Hemingway a85b1cb618 xdg-open: sure, mozilla whatever 2022-07-11 07:31:18 -05:00
Emery Hemingway e30bffdc72 squeak: 6.0rc1-22081-202206021410 -> 6.0-22101-202206021410 2022-07-05 07:00:28 -05:00
Emery Hemingway a3ffae7da3 squeak: 6.0beta-22058 -> 6.0rc1-22081 2022-07-01 06:26:47 -05:00
Emery Hemingway 53a6380759 Syndicate server test 2022-06-29 09:08:59 -05:00
Emery Hemingway 3d65eb0987 syndicate_utils: 20220627 -> 20220628 2022-06-29 08:51:22 -05:00
Emery Hemingway f75b35090e nixos: optionally wrap syndicate-server with dbus-run-session 2022-06-29 08:51:22 -05:00
Emery Hemingway e905aada34 syndicate_utils: init at 20220627 2022-06-27 10:45:32 -05:00
Emery Hemingway 327de24ea7 nixos: improve config loading for syndicate-server
Use an intermediary configuration file to allow configuration
reloading.
2022-06-26 18:39:15 -05:00
Emery Hemingway b7bf10234d preserves-nim, xdg_open_ng: update to 20220625 2022-06-26 08:39:44 -05:00
Emery Hemingway 48d979dbe4 nixos: add enabled dataspace servers to systemd wants 2022-06-24 09:19:36 -05:00
Emery Hemingway c8a9f38817 nixos: enable TTY dataspace server when enabled 2022-06-22 13:53:03 -05:00
Emery Hemingway effbe05d2b squeak: 6.0alpha-21540-202112201228 > 6.0beta-22058-202206021410 2022-06-22 08:25:21 -05:00
Emery Hemingway b355f98b60 nixos: refactor dataspace server for TTYs 2022-06-11 15:42:16 -05:00
Emery Hemingway 513ca8420e xdg_open_ng: 0.3.2 -> 0.4.0 2022-05-19 12:22:38 -05:00
Emery Hemingway 379840bea9 preserves-nim: 0.3.0 -> 0.3.1 2022-05-18 14:27:22 -05:00
Emery Hemingway 50876967b1 xdg_open_ng: 0.3.1 -> 0.3.2 2022-05-17 08:03:31 -05:00
Emery Hemingway b7af32fc66 xdg_open_ng: 0.3.0 -> 0.3.1
preserves-nim: 3.2.0 -> 3.3.0
syndicate-nim: 1.2.0 -> 1.3.0
2022-04-25 12:05:43 -05:00
Emery Hemingway 0ad63218fe xdg_open_ng: 0.1.0 -> 0.3.0 2022-04-15 18:19:13 -05:00
Emery Hemingway 18c63d8619 xdg_open_ng: add DesktopItem 2022-04-10 21:53:02 -05:00
Emery Hemingway 596580748f squeak: 6.0alpha-21485-… -> 6.0alpha-21540-…
Add 32bit build as well.
2022-04-03 02:38:33 +00:00
Emery Hemingway cecebbc118 Add Squeak and Squeaker 2022-03-25 09:37:32 -05:00
Emery Hemingway 7fee5e35fe Add xdg_open_ng 2022-03-17 14:41:42 -05:00
Emery Hemingway d243e63e9a Improve lib.generators.toPreserves
- Generate dictionaries with symbol keys. This breaks lossless
  JSON conversion but is consistent with Preserves in the wild.
- New record pattern: ``[ 1 2 3 { record = "foo"; } ]``.
2022-03-16 22:24:42 -05:00
Emery Hemingway a216ae43c4 More platforms 2022-03-16 15:56:53 -05:00
Emery Hemingway 2dfd2ac52b syndicate-nim: 1.1.0 -> 1.2.0 2022-03-16 15:56:53 -05:00
Emery Hemingway e5ecb0ac26 Remove NixOS module from README, not ready 2022-03-14 21:44:32 -05:00
Emery Hemingway 0e7ec9bb8a Add syndicate-nim 2022-03-14 15:09:52 -05:00
Emery Hemingway 51935e24db preserves-nim: 3.0.0 -> 3.2.0 2022-03-14 15:09:52 -05:00
Emery Hemingway 2ad8fed971 Add Python packages 2022-03-14 15:09:33 -05:00
Emery Hemingway ef8123e1a0 Refactor flake, update inputs 2022-03-14 15:09:00 -05:00
Emery Hemingway 666e30a8b1 Use a "master" branch for the sake of Nix tools 2022-03-01 17:37:59 -06:00
Emery Hemingway 07893891ea syndicate-rs-0.15.1 -> syndicate-server-0.24.0 2022-03-01 17:36:55 -06:00
Emery Hemingway 9d2342f5c1 Refactor NixOS configuration of Syndicate server 2022-03-01 17:36:55 -06:00
Emery Hemingway 0f6d38dfa1 lib.generators.toPreserves: quote keys of attrsets 2022-02-26 16:59:01 -06:00
Emery Hemingway 2ea129e1a1 preserves-tools: 1.0.0 -> 2.3.0 2021-12-05 12:05:22 +00:00
32 changed files with 403 additions and 533 deletions

View File

@ -1,11 +1,6 @@
# Syndicate Nix flake
Add as a Nix channel.
```sh
$ doas nix-channel --add https://git.syndicate-lang.org/ehmry/syndicate-flake/archive/trunk.tar.gz syndicate
```
To add to your local flake registry:
```sh
$ nix registry add syndicate "git+https://git.syndicate-lang.org/ehmry/syndicate-flake"
nix registry add syndicate "git+https://git.syndicate-lang.org/ehmry/syndicate-flake"
```

View File

@ -1,8 +0,0 @@
{ pkgs ? null }:
let
overlay = import ./overlay.nix;
pkgs' = if pkgs == null then
import <nixpkgs> { overlays = [ overlay ]; }
else
pkgs.extend overlay;
in builtins.intersectAttrs (overlay { } { }) pkgs'

View File

@ -1,12 +1,30 @@
{
"nodes": {
"naersk": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1662220400,
"narHash": "sha256-9o2OGQqu4xyLZP9K6kNe1pTHnyPz0Wr3raGYnr9AIgY=",
"owner": "nix-community",
"repo": "naersk",
"rev": "6944160c19cb591eb85bbf9b2f2768a935623ed3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1712449641,
"narHash": "sha256-U9DDWMexN6o5Td2DznEgguh8TRIUnIl9levmit43GcI=",
"lastModified": 1662096612,
"narHash": "sha256-R+Q8l5JuyJryRPdiIaYpO5O3A55rT+/pItBrKcy7LM4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "600b15aea1b36eeb43833a50b0e96579147099ff",
"rev": "21de2b973f9fee595a7a1ac4693efff791245c34",
"type": "github"
},
"original": {
@ -16,7 +34,11 @@
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
"naersk": "naersk",
"nixpkgs": [
"naersk",
"nixpkgs"
]
}
}
},

View File

@ -1,22 +1,58 @@
{
description = "Syndicate utilities";
outputs = { self, nixpkgs }: {
inputs.naersk.url = "github:nix-community/naersk";
inputs.nixpkgs.follows = "naersk/nixpkgs";
outputs = { self, naersk, nixpkgs, }: {
lib = nixpkgs.lib.extend (import ./lib.nix);
overlays.default = import ./overlay.nix;
overlays.default = final: prev: {
inherit (self) lib;
fetchFromSyndicateLang =
{ owner ? "syndicate-lang", repo, rev, hash ? prev.lib.fakeHash }:
prev.fetchFromGitea {
domain = "git.syndicate-lang.org";
inherit owner repo rev hash;
};
naersk = prev.callPackage naersk { };
nimPackages = prev.nimPackages.overrideScope' (final': prev': {
preserves = final'.callPackage ./preserves-nim { };
syndicate = final'.callPackage ./syndicate-nim { };
syndicate_utils = final'.callPackage ./syndicate_utils-nim { };
xdg_open_ng = final'.callPackage ./xdg_open_ng { };
});
python3Packages = prev.python3Packages.override {
overrides = final': prev': {
preserves = final'.callPackage ./preserves-py { };
syndicate = final'.callPackage ./syndicate-py { };
};
};
preserves-tools = final.callPackage ./preserves-tools { };
squeak = final.callPackage ./squeak { };
squeaker = final.python3Packages.callPackage ./squeaker { };
syndicate-server = final.callPackage ./syndicate-server { };
};
legacyPackages =
self.lib.mapAttrs (system: pkgs: pkgs.extend self.overlays.default) {
inherit (nixpkgs.legacyPackages) x86_64-linux;
};
self.lib.mapAttrs (system: pkgs: pkgs.extend self.overlays.default)
(builtins.removeAttrs nixpkgs.legacyPackages [ "mipsel-linux" ]);
packages = self.lib.mapAttrs (system: pkgs:
with pkgs; {
inherit fontconfig_actor libnotify_actor noise-c preserves-tools squeak
squeaker syndicate-server syndicated-open syndicate_utils;
inherit preserves-tools squeak squeaker syndicate-server;
inherit (nimPackages) syndicate_utils xdg_open_ng;
preserves-nim = nimPackages.preserves;
preserves-py = python3Packages.preserves;
syndicate-py = python3Packages.syndicate-py;
syndicate-nim = nimPackages.syndicate;
syndicate-py = python3Packages.syndicate;
}) self.legacyPackages;
nixosModules.default = self.nixosModules.syndicate-server;
@ -39,22 +75,44 @@
inherit system;
pkgs = pkgs';
}; {
simple = simpleTest {
name = "http";
http = simpleTest {
nodes.machine = { config, pkgs, ... }: {
imports = [ self.nixosModules.syndicate-server ];
nixpkgs.pkgs = pkgs';
services.syndicate.tty1 = {
services.syndicate.http = {
enable = true;
user = "loser";
config = [ ];
user = "nobody";
config = [
(pkgs.writeText "http.pr" ''
<require-service <daemon http_translator>>
<daemon http_translator {
argv: [ "${pkgs.nimPackages.syndicate_utils}/bin/http_translator" ]
protocol: text/syndicate
}>
let ?other = dataspace
$other [
? <http ?handle GET ?headers ?path ?body> [
<http $handle 200 {} "Hello world!">
]
]
? <service-object <daemon http_translator> ?cap> $cap [
<listen 8888>
<handler #{GET} [ "greeting" ] $other>
]
'')
];
};
users.users.loser.isNormalUser = true;
};
testScript = ''
machine.wait_for_job("syndicate-tty1")
machine.wait_for_job("syndicate-http")
machine.wait_for_open_port(8888)
machine.succeed("curl --fail http://localhost:8888/greeting")
'';
};
}) { inherit (self.legacyPackages) x86_64-linux; };

51
lib.nix
View File

@ -4,8 +4,55 @@ in with lib; {
generators = with final.generators;
prev.generators // {
toPreserves = throw
"moved to https://git.syndicate-lang.org/ehmry/nix-processmgmt/src/branch/synit/nixproc/backends/synit";
/* Generates text-encoded Preserves from an arbitrary value.
Records are generated for lists with a final element in
the form of `{ record = «label»; }`.
Type: toPreserves :: a -> string
Example:
toPreserves { } [{ a = 0; b = 1; } "c" [ true false ] { record = "foo"; }]
=> "<foo { a: 0 b: 1 } \"c\" [ #t #f ]>"
*/
toPreserves = { }@args:
let
toPreserves' = toPreserves args;
concatItems = toString;
recordLabel = list:
with builtins;
let len = length list;
in if len == 0 then
null
else
let end = elemAt list (len - 1);
in if (isAttrs end) && (attrNames end) == [ "record" ] then
end
else
null;
in v:
if isAttrs v then
"{ ${
concatItems (lib.attrsets.mapAttrsToList
(key: val: "${key}: ${toPreserves' val}") v)
} }"
else if isList v then
let label = recordLabel v;
in if label == null then
"[ ${concatItems (map toPreserves' v)} ]"
else
"<${label.record} ${
concatItems (map toPreserves' (lib.lists.init v))
}>"
else if isBool v then
(if v then "#t" else "#f")
else if isFunction v then
abort "generators.toPreserves: cannot convert a function to Preserves"
else if isNull v then
"null"
else
builtins.toJSON v;
};
}

View File

@ -1,7 +1,8 @@
{ config, lib, pkgs, ... }:
with lib;
{
options.services.syndicate = lib.mkOption {
options.services.syndicate = mkOption {
default = { };
example = {
tty1 = {
@ -15,26 +16,28 @@
If the key is in the form of "tty''${N}" it will
be attached to the appropriate teletypewriter.
'';
type = lib.types.attrsOf (lib.types.submodule {
type = types.attrsOf (types.submodule {
options = {
enable = lib.mkEnableOption "this Syndicate dataspace server instance";
enable = mkEnableOption "this Syndicate dataspace server instance";
user = lib.mkOption {
type = lib.types.str;
runInDbusSession = mkEnableOption "dbus-run-session wrapper";
user = mkOption {
type = types.str;
example = "jane";
description = "User account under which the Syndicate server runs.";
};
package = lib.mkOption {
package = mkOption {
default = pkgs.syndicate-server;
defaultText = "pkgs.syndicate-server";
type = lib.types.package;
type = types.package;
description =
"The package to use for the Syndicate dataspace server.";
};
config = lib.mkOption {
type = lib.types.listOf lib.types.path;
config = mkOption {
type = types.listOf types.path;
description = "Configurations to load.";
example = [ "/etc/syndicate" ];
};
@ -46,26 +49,37 @@
config = {
systemd.services = let
configure = name: cfg:
serverCfgs =
lib.attrsets.filterAttrs (_: cfg: cfg.enable) config.services.syndicate;
in builtins.listToAttrs (lib.lists.flatten (lib.attrsets.mapAttrsToList
(name: cfg:
let
configFile = lib.pipe cfg.config [
configFileName = "syndicate-nixos-config.pr";
runtimeConfig = "\${RUNTIME_DIRECTORY}/${configFileName}";
configFile = pkgs.writeText configFileName
(lib.strings.concatMapStrings (dir: ''
<require-service <config-watcher "${dir}" $.>>
''))
(pkgs.writeText "syndicate-nixos-config.pr")
];
'') cfg.config);
in [{
name = "syndicate-${name}";
value = let
serviceConfig = {
serviceConfig = let
loadConfig =
"${pkgs.coreutils}/bin/cp ${configFile} ${runtimeConfig}";
in {
RuntimeDirectory = name;
ExecStart = "${cfg.package}/bin/syndicate-server --no-banner --config ${configFile}";
ExecStartPre = loadConfig;
ExecStart = "${
lib.optionalString cfg.runInDbusSession
"${pkgs.dbus}/bin/dbus-run-session "
}${cfg.package}/bin/syndicate-server --no-banner --config ${runtimeConfig}";
ExecReload = loadConfig;
User = cfg.user;
};
in {
description = "Syndicate dataspace server";
restartIfChanged = false;
reloadIfChanged = false;
reloadTriggers = [ configFile ];
wantedBy = [ "multi-user.target" ];
} // (if builtins.match "tty[0-9]" name == null then {
inherit serviceConfig;
@ -92,14 +106,8 @@
WorkingDirectory = "~";
};
});
}];
serverCfgs =
lib.attrsets.filterAttrs (_: cfg: cfg.enable) config.services.syndicate;
in lib.pipe serverCfgs [
(lib.attrsets.mapAttrsToList configure)
lib.lists.flatten
builtins.listToAttrs
];
}]) (lib.attrsets.filterAttrs (_: cfg: cfg.enable)
config.services.syndicate)));
systemd.targets.multi-user.wants = lib.lists.flatten
(lib.attrsets.mapAttrsToList

View File

@ -1,54 +0,0 @@
final: prev:
let
rustPkgs = let
overlay = import (prev.fetchFromGitHub {
owner = "oxalica";
repo = "rust-overlay";
rev = "a2ccfb2134622b28668a274e403ba6f075ae1223";
hash = "sha256-9honwiIeMbBKi7FzfEy89f1ShUiXz/gVxZSS048pKyc=";
});
in final.extend overlay;
rust' = rustPkgs.rust-bin.nightly.latest.default;
in {
lib = prev.lib.extend (import ./lib.nix);
acpi_actor = final.callPackage ./packages/acpi_actor { };
fontconfig_actor =
final.callPackage ./packages/fontconfig_actor { };
libnotify_actor =
final.callPackage ./packages/libnotify_actor { };
nix_actor = final.callPackage ./packages/nix_actor { };
noiseprotocol = final.callPackage ./packages/nim/noiseprotocol { };
syndicate_utils = final.callPackage ./packages/syndicate_utils-nim { };
syndicated-open = final.callPackage ./packages/syndicated-open { };
noise-c = final.callPackage ./packages/noise-c { };
preserves-tools = final.callPackage ./packages/preserves-tools { };
python3Packages = prev.python3Packages.overrideScope (final': prev': {
preserves = final'.callPackage ./packages/preserves-py { };
syndicate-py = final'.callPackage ./packages/syndicate-py { };
synit-daemons = final'.callPackage ./packages/synit-daemons-py { };
});
sqlite_actor = final.callPackage ./packages/sqlite_actor { };
squeak = final.callPackage ./packages/squeak { };
squeaker = final.python3Packages.callPackage ./packages/squeaker { };
syndicate-server =
final.callPackage ./packages/syndicate-server { rust = rust'; };
synit-pid1 = final.callPackage ./packages/synit-pid1 { };
xapian_actor = final.callPackage ./packages/xapian_actor { };
}

View File

@ -1,21 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea }:
buildNimPackage rec {
pname = "acpi_actor";
version = "20231010";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-eN3VC2yL6UvjeIGvzx0PAujR/Xd6Rc1e9Ftf6fKKk2E=";
};
lockFile = "${src}/lock.json";
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
})

View File

@ -1,25 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, fontconfig, pkg-config }:
buildNimPackage rec {
pname = "fontconfig_actor";
version = "20231021";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-3LRIsZ6NA+E799/z6PGb4wH3CgJ6lx2CgKH/CzEuSzQ=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ fontconfig ];
lockFile = "${src}/lock.json";
meta = src.meta // {
description = "Syndicate actor for asserting Fontconfig information";
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

View File

@ -1,24 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, libnotify, pkg-config }:
buildNimPackage rec {
pname = "libnotify_actor";
version = "20231130";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-PNRscNm3axhEr1O2QGLs9JBH35err34y3wc9arPxZ5c=";
};
propagatedNativeBuildInputs = [ pkg-config ];
propagatedBuildInputs = [ libnotify ];
lockFile = "${src}/lock.json";
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

View File

@ -1,15 +0,0 @@
{ lib, buildNimPackage, noise-c }:
buildNimPackage rec {
pname = "noise";
version = "20230509";
src = null;
propagatedBuildInputs = [ noise-c ];
meta = {
inherit (noise-c.meta) license;
maintainers = [ lib.maintainers.ehmry ];
};
}

View File

@ -1,34 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, fetchFromGitHub, boost, nix, pkg-config
}:
let
nix' = nix.overrideAttrs (final: prev: {
src = fetchFromGitHub {
owner = "NixOS";
repo = "nix";
rev = "2.13.3";
hash = "sha256-jUc2ccTR8f6MGY2pUKgujm+lxSPNGm/ZAP+toX+nMNc=";
};
});
in buildNimPackage rec {
pname = "nix_actor";
version = "20231009";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-+wMhpmC1233Ze4+xnd5sNnIfsXkGEx67bZN3oMYu2EQ=";
};
lockFile = "${src}/lock.json";
propagatedNativeBuildInputs = [ pkg-config ];
propagatedBuildInputs = [ boost nix' ];
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

View File

@ -1,27 +0,0 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
stdenv.mkDerivation rec {
pname = "noise-c";
version = "20230309";
outputs = [ "bin" "out" ];
src = fetchFromGitHub {
owner = "rweather";
repo = pname;
rev = "ffa626bddd1f8182e47c634af686108ca5049e56";
hash = "sha256-HkcyV/WT4UNFWczbZZIDW2fWRliQb8IEykv2d7bZM7w=";
};
nativeBuildInputs = [ autoreconfHook ];
# excise protobuf bloat
prePatch = ''
substituteInPlace tools/Makefile.am \
--replace 'SUBDIRS = keytool protoc' 'SUBDIRS = keytool'
'';
meta = src.meta // {
description = "Plain C implementation of the Noise Protocol";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,20 +0,0 @@
{ lib, buildPythonPackage, fetchPypi, python, setuptools-scm }:
buildPythonPackage rec {
pname = "preserves";
version = "0.992.2";
pyproject = true;
src = fetchPypi {
inherit pname version;
hash = "sha256-VO9kN/nSB5K0LbpY6xjxgIUhZye/rX8gRxlHomUPRRk=";
};
nativeBuildInputs = [ setuptools-scm ];
meta = src.meta // {
description = "Preserves serialization format";
homepage = "https://preserves.dev/";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,25 +0,0 @@
{ lib, rustPlatform, rustc, fetchCrate }:
rustPlatform.buildRustPackage rec {
pname = "preserves-tool";
# use the name of the actual utility so that
# nix run …#preserves-tools works as expected.
version = "2.3.0";
src = fetchCrate {
pname = "preserves-tools"; # name of the crate
inherit version;
sha256 = "sha256-I9dqY2pej/HRQg2VGkEoWKOlo4c9TYwk/jw23eN1nlU=";
};
cargoHash = "sha256-0UMGDoyfdEJQQDoUadbU6Ev6yA2k0sQHRvO/Z+4QF5g=";
nativeBuildInputs = [ rustc ];
RUSTC_BOOTSTRAP = true;
meta = {
description = "Swiss army knife for working with Preserves documents";
homepage = "https://preserves.gitlab.io/preserves/doc/preserves-tool.html";
maintainers = with lib.maintainers; [ ehmry ];
mainProgram = "preserves-tool";
};
}

View File

@ -1,24 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, pkg-config, sqlcipher }:
buildNimPackage rec {
pname = "sqlite_actor";
version = "20231010";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-oKw5GUsK1F2RegOFiNYkLXT5CvtWcF/8H6QdE4DXa1A=";
};
propagatedNativeBuildInputs = [ pkg-config ];
propagatedBuildInputs = [ sqlcipher ];
lockFile = "${src}/lock.json";
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

View File

@ -1,21 +0,0 @@
{ lib, buildPythonPackage, fetchPypi, setuptools-scm, preserves, websockets
}:
buildPythonPackage rec {
pname = "syndicate-py";
version = "0.15.0";
src = fetchPypi {
inherit pname version;
hash = "sha256-ePCjzy5ros4H3rp0EszjUiUMCbPmNLWlXCaYcqSui0k=";
};
buildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ preserves websockets ];
meta = src.meta // {
description = "Syndicated Actor model for Python";
homepage = "https://syndicate-lang.org";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,25 +0,0 @@
# https://git.syndicate-lang.org/synit/synit/src/branch/main/packaging/packages/syndicate-server/APKBUILD
{ lib, rustPlatform, rust, fetchFromGitea, pkg-config, openssl }:
rustPlatform.buildRustPackage rec {
pname = "syndicate-server";
version = "0.45.0";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "syndicate-lang";
repo = "syndicate-rs";
rev = "${pname}-v${version}";
sha256 = "sha256-jyZlio+wo9YiaiIKCl6YC9Bym89fqUkJOqhBb0Nu/zQ=";
};
cargoHash = "sha256-WMX1GPU9GyXNP5qng6PGX++5PLvdViECTr8KPNkF4ps=";
nativeBuildInputs = [ rust pkg-config ];
buildInputs = [ openssl ];
meta = {
description = "Syndicate broker server";
homepage = "https://git.syndicate-lang.org/syndicate-lang/syndicate-rs/";
mainProgram = "syndicate-server";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,30 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, pkg-config
, postgresql, sqlite, libxml2, libxslt }:
let
version = "20240407";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = "syndicate_utils";
rev = version;
hash = "sha256-MFoN/2+fOsnJ9fX+5Adj7BDhBcbvh/bIOMnj9vIoq9A=";
};
in buildNimPackage (finalAttrs:
{ buildInputs ? [ ], ... }: {
pname = "syndicate_utils";
inherit version src;
nativeBuildInputs = [ pkg-config ];
buildInputs = buildInputs ++ [ postgresql sqlite libxml2 libxslt ];
lockFile = "${src}/lock.json";
meta = src.meta // {
description = "Utilities for the Syndicated Actor Model";
homepage = "https://git.syndicate-lang.org/ehmry/syndicate_utils";
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
})

View File

@ -1,51 +0,0 @@
{ lib, python3Packages, fetchFromGitea }:
python3Packages.buildPythonApplication rec {
pname = "synit-python-daemons";
version = "2023-11-01";
format = "other";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "synit";
repo = "synit";
rev = "a2ecd8a4e441f8622a57a99987cb0aa5be9e1dcd";
hash = "sha256-M79AJ8/Synzm4CYkt3+GYViJLJcuYBW+x32Vfy+oFUM=";
};
sourceRoot =
"${src.name}/packaging/packages/synit-config/files/usr/lib/synit/python/synit/daemon";
propagatedBuildInputs = with python3Packages; [
pyroute2
syndicate-py
];
postPatch = ''
for f in *.py; do
substituteInPlace $f --replace \
"/home/tonyg/src/synit/protocols" \
"$out/share/syndicate-protocols"
done
'';
buildPhase = ''
runHook preBuild
for f in *.py; do
sed -i '1i #!/bin/python' $f
done
runHook postBuild
'';
installPhase = ''
runHook preInstall
for f in *.py; do
bin_name=$f
bin_name=''${bin_name/.py}
bin_name=''${bin_name//_/-}
install --mode 0555 -D $f $out/bin/$bin_name
done
install -D -t $out/share/syndicate-protocols $src/protocols/schema-bundle.bin
runHook postInstall
'';
}

View File

@ -1,39 +0,0 @@
# https://git.syndicate-lang.org/synit/synit/src/branch/main/packaging/packages/synit-pid1/APKBUILD
{ lib, rustPlatform, rustc, fetchFromGitea }:
rustPlatform.buildRustPackage rec {
pname = "synit-pid1";
version = "unstable-2023-11-01";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "synit";
repo = "synit";
rev = "a2ecd8a4e441f8622a57a99987cb0aa5be9e1dcd";
hash = "sha256-M79AJ8/Synzm4CYkt3+GYViJLJcuYBW+x32Vfy+oFUM=";
};
patchPhase =
# Patch to take children and configuration from /run/booted-system.
''
runHook prePatch
substituteInPlace src/main.rs \
--replace '"/usr/bin/syndicate-server"' '"/run/booted-system/sw/bin/syndicate-server"' \
--replace '"/sbin/synit-log"' '"/run/booted-system/sw/bin/synit-log"' \
--replace '"/etc/syndicate/boot"' '"/run/booted-system/etc/syndicate/boot"' \
runHook postPatch
'';
sourceRoot = "source/${pname}";
cargoHash = "sha256-mO1gMtXEc34v9zBst1by1Ed8l/kvuJ9n4/6vJ1LhijM=";
nativeBuildInputs = [ rustc ];
RUSTC_BOOTSTRAP = true;
meta = src.meta // {
description = "Synit pid 1 program (patched for NixOS)";
homepage = "https://synit.org/";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,22 +0,0 @@
{ lib, buildNimPackage, fetchFromGitea, pkg-config, syndicate, xapian }:
buildNimPackage rec {
pname = "xapian_actor";
version = "20230610";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-f/+l+c6SCvHH8zDz3/9ndrT77ck5gfk5zESKL74IfNg=";
};
propagatedNativeBuildInputs = [ pkg-config ];
propagatedBuildInputs = [ syndicate xapian ];
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

47
preserves-nim/default.nix Normal file
View File

@ -0,0 +1,47 @@
{ lib, stdenv, buildNimPackage, fetchFromGitea, fetchFromGitHub, runCommand
, nim-unwrapped, preserves }:
let
compiler = runCommand "compiler.nimble" { inherit (nim-unwrapped) src; } ''
mkdir -p $out
tar xf $src --strip-components=1 -C $out
'';
npeg = fetchFromGitHub {
owner = "zevv";
repo = "npeg";
rev = "0.25.0";
hash = "sha256-E/0hCz0XsoAb/bAksqrKTyi8/FwBdP8kT6uUUAdru68=";
};
in buildNimPackage rec {
pname = "preserves";
version = "20220625";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = "${pname}-nim";
rev = version;
sha256 = "sha256-ZNgBlIOKyWD0R5wZvGb/0K5tUpz5q5QpET4Qa/kxhkA=";
};
propagatedBuildInputs = [ compiler npeg ];
propagatedNativeBuildInputs =
lib.optional (stdenv.hostPlatform != stdenv.buildPlatform) preserves;
# propagate the utilities of this package for this build platform
preConfigure = "substituteInPlace preserves.nimble --replace '# bin ' 'bin '";
postInstall = ''
pushd $out/bin
for link in preserves_decode preserves_from_json preserves_to_json;
do ln -s preserves_encode $link
done
popd
'';
doCheck = true;
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

26
preserves-py/default.nix Normal file
View File

@ -0,0 +1,26 @@
{ lib, buildPythonPackage, fetchFromGitea, python, setuptools-scm }:
buildPythonPackage rec {
pname = "preserves";
version = "unstable-2022-03-08";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "syndicate-lang";
repo = pname;
rev = "197359ff22fa701d8b497860e8eb84dba209e00e";
sha256 = "sha256-1nlyqcNIDGuNzo5/ObjF4YIWbpD8lxgVFXcKM+Dv6PY=";
};
sourceRoot = "source/implementations/python";
buildInputs = [ setuptools-scm ];
postInstall =
"install -t $out/lib/${python.libPrefix}/site-packages/preserves preserves/*.prb ";
meta = src.meta // {
homepage = "https://syndicate-lang.org";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -0,0 +1,18 @@
{ lib, naersk, fetchCrate }:
naersk.buildPackage rec {
pname = "preserves-tools";
version = "2.5.0";
src = fetchCrate {
inherit pname version;
sha256 = "sha256-OFL56fJQdv04QxfIPqDS1WO+H9ApcLgCZtpKq9cMlSs=";
};
meta = {
description = "Swiss army knife for working with Preserves documents";
homepage = "https://preserves.gitlab.io/preserves/doc/preserves-tool.html";
maintainers = with lib.maintainers; [ ehmry ];
mainProgram = "preserves-tool";
};
}

View File

@ -3,7 +3,7 @@
let
versionA = "6.0";
versionB = "22104";
versionB = "22101";
versionC = "202206021410";
bits = with stdenv.hostPlatform;
if is32bit then
@ -15,13 +15,13 @@ let
sources = {
i686-linux = fetchurl {
url =
"http://files.squeak.org/${versionA}/Squeak${versionA}-${versionB}-${bits}bit/Squeak${versionA}-${versionB}-${bits}bit-${versionC}-Linux-x86.tar.gz";
sha256 = "sha256-6o9GCeNsHV+OhHBUCqBmslgUEBrS3XPwsl/p8zgfJQs=";
"http://files.squeak.org/${versionA}/Squeak${versionA}-${versionB}-32bit/Squeak${versionA}-${versionB}-${bits}bit-${versionC}-Linux-x86.tar.gz";
sha256 = "sha256-z7o3R/KwqfYPMtjk93aCNrM2tHt+pDmYSLn3Sd53hVg=";
};
x86_64-linux = fetchurl {
url =
"http://files.squeak.org/${versionA}/Squeak${versionA}-${versionB}-${bits}bit/Squeak${versionA}-${versionB}-${bits}bit-${versionC}-Linux-x64.tar.gz";
sha256 = "sha256-pgTdFyqAQo3K6Th2FXL8Op1hakjcL4rJ6wnKuIlFZ9g=";
sha256 = "sha256-+HnISzA2LxgJTvAjXrpP6/jmo3w0ABzJdy3pPWceIcg=";
};
};
in stdenv.mkDerivation rec {

29
syndicate-nim/default.nix Normal file
View File

@ -0,0 +1,29 @@
{ lib, buildNimPackage, fetchFromGitea, fetchFromGitHub, preserves }:
let
nimSHA2 = fetchFromGitHub {
owner = "jangko";
repo = "nimSHA2";
rev = "b8f666069dff1ed0c5142dd1ca692f0e71434716";
hash = "sha256-Wqb3mQ7638UOTze71mf6WMyGiw9qTwhbJiGGb+9OR2k=";
};
in buildNimPackage rec {
pname = "syndicate";
version = "20220627";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = "${pname}-nim";
rev = version;
hash = "sha256-o9RvXLsGK1sJzA2eshAxxD2/PznIqmBrSTh8NmZdIJU=";
};
propagatedBuildInputs = [ nimSHA2 preserves ];
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

24
syndicate-py/default.nix Normal file
View File

@ -0,0 +1,24 @@
{ lib, buildPythonPackage, fetchFromGitea, setuptools-scm, preserves, websockets
}:
buildPythonPackage rec {
pname = "syndicate";
version = "unstable-2022-02-04";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "syndicate-lang";
repo = "${pname}-py";
rev = "3187c4642bd3816382c9c9d86d28ef35dc206f0d";
sha256 = "sha256-ilRoNtOV21naB5pJRM4DXEYAShGzFodwB5jAl94yIuo=";
};
buildInputs = [ setuptools-scm ];
propagatedBuildInputs = [ preserves websockets ];
meta = src.meta // {
homepage = "https://syndicate-lang.org";
description = "An implementation of Syndicated Actors for Python";
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -0,0 +1,22 @@
# https://git.syndicate-lang.org/synit/synit/src/branch/main/packaging/packages/syndicate-server/APKBUILD
{ lib, naersk, fetchFromSyndicateLang, pkg-config, openssl }:
naersk.buildPackage rec {
pname = "syndicate-rs";
version = "0.26.0";
src = fetchFromSyndicateLang {
repo = pname;
rev = "${pname}-v${version}";
hash = "sha256-6zCfvvaDfOUWbKjLhJ9xMpQnajxt1sQObrdhnm06Zuc=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ openssl ];
meta = {
description = "Syndicate broker server";
homepage = "https://git.syndicate-lang.org/syndicate-lang/syndicate-rs/";
maintainers = with lib.maintainers; [ ehmry ];
mainProgram = "syndicate-server";
};
}

View File

@ -0,0 +1,41 @@
{ lib, buildNimPackage, fetchFromGitea, fetchFromGitHub, syndicate, libnotify }:
let
gtk2 = fetchFromGitHub {
owner = "nim-lang";
repo = "gtk2";
rev = "v1.3";
hash = "sha256-KPHMF2gHIwjRuslJOhbf7KU0VUwp4Oe0+63YKKOBCPk=";
};
nim-libnotify = buildNimPackage rec {
pname = "libnotify";
version = "HEAD";
src = fetchFromGitHub {
owner = "FedericoCeratto";
repo = "nim-${pname}";
rev = "c715ca5b23377a9bceba93529339526fbca11517";
hash = "sha256-Ifp7cV+Jxa7ZotggIkR6OT6I/f4LZ7ZBtSdfkjVtg7w=";
};
propagatedBuildInputs = [ libnotify gtk2 ];
};
in buildNimPackage rec {
pname = "syndicate_utils";
version = "20220628";
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-/HoPR/SFZzIzICvscse4s13EKvjXs6qr2puhkv5qBso=";
};
propagatedBuildInputs = [ syndicate nim-libnotify ];
nimFlags =
[ "-p:${gtk2}/src/" ]; # everyone breaks the nimble rules, nim-lang included
meta = src.meta // {
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};
}

View File

@ -1,25 +1,23 @@
{ lib, buildNimPackage, fetchFromGitea, makeDesktopItem, pkg-config, pcre }:
{ lib, buildNimPackage, fetchFromGitea, makeDesktopItem, syndicate }:
buildNimPackage rec {
pname = "syndicated-open";
version = "20231010";
pname = "xdg_open_ng";
version = "20220625";
nimBinOnly = true;
src = fetchFromGitea {
domain = "git.syndicate-lang.org";
owner = "ehmry";
repo = pname;
rev = version;
hash = "sha256-DVBSsnN59XKV7Pc1spBxcLwyOIif3xMHXHID9khVJck=";
hash = "sha256-yOuR4KYAMxlRc4AIr3ud0HzidHDQPeIiN3dzlnphLug=";
};
nativeBuildInputs = [ pkg-config ];
propagatedBuildInputs = [ pcre ];
lockFile = "${src}/lock.json";
propagatedBuildInputs = [ syndicate ];
desktopItem = makeDesktopItem rec {
name = "open";
desktopName = "Syndicated URI open";
name = "xdg-open";
desktopName = "Syndicate URI dispatcher (xdg-open)";
exec = "${name} %U";
mimeTypes = [
"application/vnd.mozilla.xul+xml"
@ -32,12 +30,12 @@ buildNimPackage rec {
};
postInstall = ''
ln -s open $out/bin/xdg-open
mv $out/bin/xdg_open $out/bin/xdg-open
cp -a $desktopItem/* $out/
'';
meta = src.meta // {
description = "Syndicated open command";
description = "Replacement for xdg-open that uses Syndicate for messaging.";
maintainers = [ lib.maintainers.ehmry ];
license = lib.licenses.unlicense;
};