mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
Merge pull request #304257 from Raroh73/add/commafeed
commafeed: init at 4.3.3
This commit is contained in:
commit
5497cebc92
@ -164,6 +164,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- [go-camo](https://github.com/cactus/go-camo), a secure image proxy server. Available as [services.go-camo](#opt-services.go-camo.enable).
|
||||
|
||||
- [CommaFeed](https://github.com/Athou/commafeed), a Google Reader inspired self-hosted RSS reader. Available as [services.commafeed](#opt-services.commafeed.enable).
|
||||
|
||||
- [Monado](https://monado.freedesktop.org/), an open source XR runtime. Available as [services.monado](#opt-services.monado.enable).
|
||||
|
||||
- [intel-gpu-tools](https://drm.pages.freedesktop.org/igt-gpu-tools), tools for development and testing of the Intel DRM driver. Available as [hardware.intel-gpu-tools](#opt-hardware.intel-gpu-tools.enable).
|
||||
|
@ -1341,6 +1341,7 @@
|
||||
./services/web-apps/chatgpt-retrieval-plugin.nix
|
||||
./services/web-apps/cloudlog.nix
|
||||
./services/web-apps/code-server.nix
|
||||
./services/web-apps/commafeed.nix
|
||||
./services/web-apps/convos.nix
|
||||
./services/web-apps/crabfit.nix
|
||||
./services/web-apps/davis.nix
|
||||
|
114
nixos/modules/services/web-apps/commafeed.nix
Normal file
114
nixos/modules/services/web-apps/commafeed.nix
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.commafeed;
|
||||
in
|
||||
{
|
||||
options.services.commafeed = {
|
||||
enable = lib.mkEnableOption "CommaFeed";
|
||||
|
||||
package = lib.mkPackageOption pkgs "commafeed" { };
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "User under which CommaFeed runs.";
|
||||
default = "commafeed";
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = "Group under which CommaFeed runs.";
|
||||
default = "commafeed";
|
||||
};
|
||||
|
||||
stateDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = "Directory holding all state for CommaFeed to run.";
|
||||
default = "/var/lib/commafeed";
|
||||
};
|
||||
|
||||
environment = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.oneOf [
|
||||
lib.types.bool
|
||||
lib.types.int
|
||||
lib.types.str
|
||||
]
|
||||
);
|
||||
description = ''
|
||||
Extra environment variables passed to CommaFeed, refer to
|
||||
<https://github.com/Athou/commafeed/blob/master/commafeed-server/config.yml.example>
|
||||
for supported values. The default user is `admin` and the default password is `admin`.
|
||||
Correct configuration for H2 database is already provided.
|
||||
'';
|
||||
default = { };
|
||||
example = {
|
||||
CF_SERVER_APPLICATIONCONNECTORS_0_TYPE = "http";
|
||||
CF_SERVER_APPLICATIONCONNECTORS_0_PORT = 9090;
|
||||
};
|
||||
};
|
||||
|
||||
environmentFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
description = ''
|
||||
Environment file as defined in {manpage}`systemd.exec(5)`.
|
||||
'';
|
||||
default = null;
|
||||
example = "/var/lib/commafeed/commafeed.env";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.commafeed = {
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = lib.mapAttrs (
|
||||
_: v: if lib.isBool v then lib.boolToString v else toString v
|
||||
) cfg.environment;
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe cfg.package} server ${cfg.package}/share/config.yml";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
StateDirectory = baseNameOf cfg.stateDir;
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
# Hardening
|
||||
CapabilityBoundingSet = [ "" ];
|
||||
DevicePolicy = "closed";
|
||||
DynamicUser = true;
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
ProcSubset = "pid";
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@privileged"
|
||||
];
|
||||
UMask = "0077";
|
||||
} // lib.optionalAttrs (cfg.environmentFile != null) { EnvironmentFile = cfg.environmentFile; };
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = [ lib.maintainers.raroh73 ];
|
||||
}
|
@ -205,6 +205,7 @@ in {
|
||||
code-server = handleTest ./code-server.nix {};
|
||||
coder = handleTest ./coder.nix {};
|
||||
collectd = handleTest ./collectd.nix {};
|
||||
commafeed = handleTest ./commafeed.nix {};
|
||||
connman = handleTest ./connman.nix {};
|
||||
consul = handleTest ./consul.nix {};
|
||||
consul-template = handleTest ./consul-template.nix {};
|
||||
|
21
nixos/tests/commafeed.nix
Normal file
21
nixos/tests/commafeed.nix
Normal file
@ -0,0 +1,21 @@
|
||||
import ./make-test-python.nix (
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "commafeed";
|
||||
|
||||
nodes.server = {
|
||||
services.commafeed = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
server.start()
|
||||
server.wait_for_unit("commafeed.service")
|
||||
server.wait_for_open_port(8082)
|
||||
server.succeed("curl --fail --silent http://localhost:8082")
|
||||
'';
|
||||
|
||||
meta.maintainers = [ lib.maintainers.raroh73 ];
|
||||
}
|
||||
)
|
102
pkgs/by-name/co/commafeed/package.nix
Normal file
102
pkgs/by-name/co/commafeed/package.nix
Normal file
@ -0,0 +1,102 @@
|
||||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
jre,
|
||||
maven,
|
||||
makeWrapper,
|
||||
nixosTests,
|
||||
writeText,
|
||||
}:
|
||||
let
|
||||
version = "4.3.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Athou";
|
||||
repo = "commafeed";
|
||||
rev = version;
|
||||
hash = "sha256-y0gTmtlDg7sdunG1ne/3WkFx2KQkTGRlfYpXBHFFh2o=";
|
||||
};
|
||||
|
||||
frontend = buildNpmPackage {
|
||||
inherit version src;
|
||||
|
||||
pname = "commafeed-frontend";
|
||||
|
||||
sourceRoot = "${src.name}/commafeed-client";
|
||||
|
||||
npmDepsHash = "sha256-fye7MPWXUeFCMgcnesspd1giGG/ZldiOv00fjtXZSb4=";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r dist/ $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
gitProperties = writeText "git.properties" ''
|
||||
git.branch = none
|
||||
git.build.time = 1970-01-01T00:00:00+0000
|
||||
git.build.version = ${version}
|
||||
git.commit.id = none
|
||||
git.commit.id.abbrev = none
|
||||
'';
|
||||
in
|
||||
maven.buildMavenPackage {
|
||||
inherit version src;
|
||||
|
||||
pname = "commafeed";
|
||||
|
||||
mvnHash = "sha256-YnEDJf4GeyiXxOh8tZZTZdLOJrisG6lmShXU97ueGNE=";
|
||||
|
||||
mvnParameters = lib.escapeShellArgs [
|
||||
"-Dskip.installnodenpm"
|
||||
"-Dskip.npm"
|
||||
"-Dspotless.check.skip"
|
||||
"-Dmaven.gitcommitid.skip"
|
||||
"-DskipTests"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
configurePhase = ''
|
||||
runHook preConfigure
|
||||
|
||||
ln -sf "${frontend}" commafeed-client/dist
|
||||
|
||||
cp ${gitProperties} commafeed-server/src/main/resources/git.properties
|
||||
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin $out/share
|
||||
install -Dm644 commafeed-server/target/commafeed.jar $out/share/commafeed.jar
|
||||
install -Dm644 commafeed-server/config.yml.example $out/share/config.yml
|
||||
|
||||
makeWrapper ${jre}/bin/java $out/bin/commafeed \
|
||||
--add-flags "-jar $out/share/commafeed.jar"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
substituteInPlace $out/share/config.yml \
|
||||
--replace-fail 'url: jdbc:h2:/commafeed/data/db;DEFRAG_ALWAYS=TRUE' \
|
||||
'url: jdbc:h2:./database/db;DEFRAG_ALWAYS=TRUE'
|
||||
'';
|
||||
|
||||
passthru.tests = nixosTests.commafeed;
|
||||
|
||||
meta = {
|
||||
description = "Google Reader inspired self-hosted RSS reader";
|
||||
homepage = "https://github.com/Athou/commafeed";
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "commafeed";
|
||||
maintainers = [ lib.maintainers.raroh73 ];
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user