Skip to content

Commit b02fd11

Browse files
committed
Merge branch 'nix-flake'
2 parents 3d33988 + 4aa1609 commit b02fd11

File tree

5 files changed

+187
-1
lines changed

5 files changed

+187
-1
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/target
22
/files
3-
/previews
3+
/previews
4+
result

default.nix

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{ lib
2+
, rustPlatform
3+
, pkg-config
4+
, libgit2
5+
, openssl
6+
, zlib
7+
, stdenv
8+
, darwin
9+
, pandoc
10+
, texlive
11+
, makeWrapper
12+
}:
13+
14+
rustPlatform.buildRustPackage rec {
15+
pname = "remote-text-server";
16+
version = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package.version;
17+
18+
src = ./.;
19+
20+
cargoHash = "sha256-g6QiGH9eqC/mrGzeZOJ5wqm5V5D2xsDm4OOyzmE4sqM=";
21+
22+
nativeBuildInputs = [
23+
pkg-config
24+
];
25+
26+
buildInputs = [
27+
libgit2
28+
openssl
29+
zlib
30+
makeWrapper
31+
] ++ lib.optionals stdenv.isDarwin [
32+
darwin.apple_sdk.frameworks.IOKit
33+
darwin.apple_sdk.frameworks.Security
34+
];
35+
36+
postFixup = ''
37+
wrapProgram $out/bin/remote-text-server \
38+
--set PATH ${lib.makeBinPath [
39+
pandoc
40+
texlive
41+
]}
42+
'';
43+
44+
env = {
45+
OPENSSL_NO_VENDOR = true;
46+
VERGEN_IDEMPOTENT = true;
47+
};
48+
49+
meta = with lib; {
50+
description = "The server-side software for Remote Text";
51+
homepage = "https://github.com/Remote-Text/remote-text-server";
52+
license = with licenses; [ ];
53+
maintainers = with maintainers; [ ];
54+
};
55+
}

flake.lock

Lines changed: 41 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
description = "The server-side software for Remote Text";
3+
4+
inputs = {
5+
# nixpkgs.url = "github:NixOS/nixpkgs";
6+
flockenzeit.url = "github:balsoft/Flockenzeit";
7+
};
8+
9+
outputs = { self, flockenzeit, nixpkgs, ... }:
10+
let
11+
forAllSystems = gen:
12+
nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed
13+
(system: gen nixpkgs.legacyPackages.${system});
14+
in {
15+
packages = forAllSystems (pkgs: rec {
16+
remote-text-server = pkgs.callPackage ./. { texlive = pkgs.texliveFull; };
17+
default = remote-text-server;
18+
dockerImage = pkgs.dockerTools.buildImage {
19+
name = "remote-text-server";
20+
created = flockenzeit.lib.ISO-8601 self.lastModified;
21+
config = {
22+
Cmd = [ "${remote-text-server}/bin/remote-text-server" ];
23+
};
24+
};
25+
});
26+
nixosModules = rec {
27+
remote-text-server = import ./module.nix;
28+
default = remote-text-server;
29+
};
30+
};
31+
}

module.nix

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{ config, pkgs, lib, ... }:
2+
3+
with lib;
4+
5+
let
6+
cfg = config.services.remote-text-server;
7+
in
8+
{
9+
options.services.remote-text-server = {
10+
enable = mkEnableOption "remote-text-server";
11+
package = mkOption {
12+
default = pkgs.callPackage ./. { texlive = pkgs.texliveFull; };
13+
defaultText = "remote-text-server";
14+
example = "inputs.remote-text-server.packages.${pkgs.system}.default.override { texlive = pkgs.texliveMinimal; }";
15+
description = "The remote-text-server package to use";
16+
type = types.package;
17+
};
18+
port = mkOption {
19+
type = types.port;
20+
default = 7870;
21+
example = 46264;
22+
description = "The port to listen on. Currently ignored and always uses 3030";
23+
};
24+
};
25+
26+
config = mkIf cfg.enable {
27+
systemd.services.remote-text-server = {
28+
description = "RemoteText Server";
29+
30+
script = ''
31+
cd $STATE_DIRECTORY
32+
${cfg.package}/bin/remote-text-server --port ${toString cfg.port}
33+
'';
34+
35+
serviceConfig = {
36+
DynamicUser = true;
37+
# EnvironmentFile = "/etc/jekyll-comments-env";
38+
StateDirectory = "remote-text-server";
39+
40+
PrivateDevices = true;
41+
PrivateMounts = true;
42+
PrivateUsers = true;
43+
ProtectControlGroups = true;
44+
ProtectHome = true;
45+
ProtectHostname = true;
46+
ProtectKernelLogs = true;
47+
ProtectKernelModules = true;
48+
ProtectKernelTunables = true;
49+
};
50+
51+
wantedBy = [ "multi-user.target" ];
52+
after = [ "network-online.target" ];
53+
wants = [ "network-online.target" ];
54+
};
55+
# unnecessary bc tailscale is open. also should be set by the end user
56+
# networking.firewall.interfaces."tailscale0".allowedTCPPorts = [ cfg.port ];
57+
};
58+
}

0 commit comments

Comments
 (0)