2021-09-02 10:16:35 +00:00
|
|
|
{
|
2021-09-03 08:57:05 +00:00
|
|
|
description = "Syndicate utilities";
|
2021-09-02 10:16:35 +00:00
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
inputs.naersk.url = "github:nix-community/naersk";
|
|
|
|
inputs.nixpkgs.follows = "naersk/nixpkgs";
|
2021-09-02 10:16:35 +00:00
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
outputs = { self, naersk, nixpkgs, }: {
|
2022-03-14 19:12:50 +00:00
|
|
|
lib = nixpkgs.lib.extend (import ./lib.nix);
|
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
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;
|
2022-03-14 19:13:50 +00:00
|
|
|
};
|
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
naersk = prev.callPackage naersk { };
|
2022-03-25 14:34:50 +00:00
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
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 { };
|
|
|
|
});
|
2022-03-25 14:34:50 +00:00
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
python3Packages = prev.python3Packages.override {
|
|
|
|
overrides = final': prev': {
|
|
|
|
preserves = final'.callPackage ./preserves-py { };
|
|
|
|
syndicate = final'.callPackage ./syndicate-py { };
|
|
|
|
};
|
2022-03-14 19:12:50 +00:00
|
|
|
};
|
|
|
|
|
2022-09-06 17:08:01 +00:00
|
|
|
preserves-tools = final.callPackage ./preserves-tools { };
|
|
|
|
|
|
|
|
squeak = final.callPackage ./squeak { };
|
|
|
|
squeaker = final.python3Packages.callPackage ./squeaker { };
|
|
|
|
|
|
|
|
syndicate-server = final.callPackage ./syndicate-server { };
|
|
|
|
};
|
|
|
|
|
2022-03-14 19:12:50 +00:00
|
|
|
legacyPackages =
|
2022-03-16 19:22:35 +00:00
|
|
|
self.lib.mapAttrs (system: pkgs: pkgs.extend self.overlays.default)
|
|
|
|
(builtins.removeAttrs nixpkgs.legacyPackages [ "mipsel-linux" ]);
|
2022-03-14 19:12:50 +00:00
|
|
|
|
|
|
|
packages = self.lib.mapAttrs (system: pkgs:
|
|
|
|
with pkgs; {
|
2022-03-25 14:34:50 +00:00
|
|
|
inherit preserves-tools squeak squeaker syndicate-server;
|
2022-06-27 15:45:32 +00:00
|
|
|
inherit (nimPackages) syndicate_utils xdg_open_ng;
|
2022-03-14 19:12:50 +00:00
|
|
|
preserves-nim = nimPackages.preserves;
|
2022-03-14 19:13:50 +00:00
|
|
|
preserves-py = python3Packages.preserves;
|
2022-03-17 19:41:42 +00:00
|
|
|
syndicate-nim = nimPackages.syndicate;
|
2022-03-14 19:13:50 +00:00
|
|
|
syndicate-py = python3Packages.syndicate;
|
2022-03-14 19:12:50 +00:00
|
|
|
}) self.legacyPackages;
|
|
|
|
|
2022-06-11 18:13:07 +00:00
|
|
|
nixosModules.default = self.nixosModules.syndicate-server;
|
2022-03-14 19:12:50 +00:00
|
|
|
nixosModules.syndicate-server =
|
|
|
|
# A little hack to apply our overlay to this module only.
|
2022-06-11 18:13:07 +00:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
(import ./nixos/syndicate-server.nix) {
|
2022-03-14 19:12:50 +00:00
|
|
|
inherit config lib;
|
|
|
|
pkgs = pkgs.extend self.overlays.default;
|
|
|
|
};
|
|
|
|
|
|
|
|
devShells = self.lib.mapAttrs (system: pkgs:
|
|
|
|
with pkgs; {
|
|
|
|
default =
|
|
|
|
mkShell { packages = builtins.attrValues self.packages.${system}; };
|
|
|
|
}) self.legacyPackages;
|
|
|
|
|
2022-06-29 13:48:45 +00:00
|
|
|
checks = self.lib.mapAttrs (system: pkgs':
|
|
|
|
with import (nixpkgs + "/nixos/lib/testing-python.nix") {
|
|
|
|
inherit system;
|
|
|
|
pkgs = pkgs';
|
|
|
|
}; {
|
|
|
|
http = simpleTest {
|
|
|
|
nodes.machine = { config, pkgs, ... }: {
|
|
|
|
imports = [ self.nixosModules.syndicate-server ];
|
|
|
|
|
|
|
|
nixpkgs.pkgs = pkgs';
|
|
|
|
|
|
|
|
services.syndicate.http = {
|
|
|
|
enable = true;
|
|
|
|
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>
|
|
|
|
]
|
|
|
|
'')
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
|
|
|
};
|
|
|
|
testScript = ''
|
|
|
|
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; };
|
2022-03-14 19:12:50 +00:00
|
|
|
};
|
2021-09-02 10:16:35 +00:00
|
|
|
}
|