parent
2dfcbdb548
commit
b75887a4b1
@ -0,0 +1,84 @@ |
||||
{ stdenv, fetchFromGitHub, makeWrapper, bash, nodejs, nodePackages, gzip }: |
||||
|
||||
let |
||||
workaround-opencollective-buildfailures = stdenv.mkDerivation { |
||||
# FIXME: This should be removed when a complete fix is available |
||||
# https://github.com/svanderburg/node2nix/issues/145 |
||||
name = "workaround-opencollective-buildfailures"; |
||||
phases = [ "installPhase" ]; |
||||
installPhase = '' |
||||
mkdir -p $out/bin |
||||
touch $out/bin/opencollective-postinstall |
||||
chmod +x $out/bin/opencollective-postinstall |
||||
''; |
||||
}; |
||||
in |
||||
nodePackages.epgstation.override (drv: { |
||||
src = fetchFromGitHub { |
||||
owner = "l3tnun"; |
||||
repo = "EPGStation"; |
||||
rev = "v${drv.version}"; # version specified in ./generate.sh |
||||
sha256 = "15z1kdbamj97frp3dfnbm0h8krihmv2xdab4id0rxin29ibrw1k2"; |
||||
}; |
||||
|
||||
buildInputs = [ bash ]; |
||||
nativeBuildInputs = [ |
||||
workaround-opencollective-buildfailures |
||||
makeWrapper |
||||
nodePackages.node-pre-gyp |
||||
]; |
||||
|
||||
preRebuild = '' |
||||
# Fix for not being able to connect to mysql using domain sockets. |
||||
patch -p1 ${./use-mysql-over-domain-socket.patch} |
||||
''; |
||||
|
||||
postInstall = let |
||||
runtimeDeps = [ nodejs bash ]; |
||||
in |
||||
'' |
||||
mkdir -p $out/{bin,libexec,share/doc/epgstation,share/man/man1} |
||||
|
||||
pushd $out/lib/node_modules/EPGStation |
||||
|
||||
npm run build |
||||
|
||||
mv config/{enc.sh,enc.js} $out/libexec |
||||
mv LICENSE Readme.md $out/share/doc/epgstation |
||||
mv doc/* $out/share/doc/epgstation |
||||
sed 's/@DESCRIPTION@/${drv.meta.description}/g' ${./epgstation.1} \ |
||||
| ${gzip}/bin/gzip > $out/share/man/man1/epgstation.1.gz |
||||
rm -rf doc |
||||
|
||||
# just log to stdout and let journald do its job |
||||
rm -rf logs |
||||
|
||||
# Replace the existing configuration and runtime state directories with |
||||
# symlinks. Without this, they would all be non-writable because they reside |
||||
# in the Nix store. Note that the source path won't be accessible at build |
||||
# time. |
||||
rm -r config data recorded thumbnail |
||||
ln -sfT /etc/epgstation config |
||||
ln -sfT /var/lib/epgstation data |
||||
ln -sfT /var/lib/epgstation/recorded recorded |
||||
ln -sfT /var/lib/epgstation/thumbnail thumbnail |
||||
|
||||
makeWrapper ${nodejs}/bin/npm $out/bin/epgstation \ |
||||
--run "cd $out/lib/node_modules/EPGStation" \ |
||||
--prefix PATH : ${stdenv.lib.makeBinPath runtimeDeps} |
||||
|
||||
popd |
||||
''; |
||||
|
||||
meta = with stdenv.lib; drv.meta // { |
||||
maintainers = with maintainers; [ midchildan ]; |
||||
|
||||
# nodePackages.epgstation is a stub package to fetch npm dependencies and |
||||
# is marked as broken to prevent users from installing it directly. This |
||||
# technique ensures epgstation can share npm packages with the rest of |
||||
# nixpkgs while still allowing us to heavily customize the build. It also |
||||
# allows us to provide devDependencies for the epgstation build process |
||||
# without doing the same for all the other node packages. |
||||
broken = false; |
||||
}; |
||||
}) |
@ -0,0 +1,52 @@ |
||||
.Dd $Mdocdate$ |
||||
.Dt EPGSTATION 1 |
||||
.Os |
||||
.Sh NAME |
||||
.Nm epgstation |
||||
.Nd @DESCRIPTION@ |
||||
.Sh SYNOPSIS |
||||
.Nm |
||||
.Bk -words |
||||
.Op Ar command Op Ar args |
||||
.Ek |
||||
.Sh DESCRIPTION |
||||
.Nm |
||||
is a wrapper command for EPGStation provided by Nix. It's actually a thin |
||||
wrapper around the |
||||
.Xr npm 1 |
||||
command line tool which you can use to invoke npm commands from the EPGStation |
||||
project directory. The command line arguments are simply passed as-is to |
||||
.Xr npm 1 . |
||||
.Pp |
||||
On NixOS, it is strongly recommended that you enable the epgstation module |
||||
instead of invoking this command directly to launch EPGStation. On other |
||||
platforms, run |
||||
.Pp |
||||
.Dl $ epgstation start |
||||
.Pp |
||||
to start EPGStation. |
||||
.Sh FILES |
||||
.Bl -tag -width Ds -compact |
||||
.It Pa /etc/epgstation/config.json |
||||
.Nm |
||||
configuration file. |
||||
.El |
||||
.Sh EXAMPLES |
||||
Start EPGStation. |
||||
.Pp |
||||
.Dl $ epgstation start |
||||
.Pp |
||||
Start EPGStation in development mode. |
||||
.Pp |
||||
.Dl $ epgstation run dev-start |
||||
.Pp |
||||
Backup the EPGstation database. |
||||
.Pp |
||||
.Dl $ epgstation run backup /path/to/dst |
||||
.Pp |
||||
Restore the EPGstation database. |
||||
.Pp |
||||
.Dl $ epgstation run restore /path/to/src |
||||
.Pp |
||||
.Sh SEE ALSO |
||||
.Xr npm 1 |
@ -0,0 +1,28 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
# Script to generate the Nix package definition for EPGStation. Run this script |
||||
# when bumping the package version. |
||||
|
||||
VERSION="1.7.4" |
||||
URL="https://raw.githubusercontent.com/l3tnun/EPGStation/v$VERSION/package.json" |
||||
JQ_BIN="$(nix-build ../../../.. --no-out-link -A jq)/bin/jq" |
||||
|
||||
set -eu -o pipefail |
||||
cd "$(dirname "${BASH_SOURCE[0]}")" |
||||
|
||||
main() { |
||||
# update package.json |
||||
curl -sSfL "$URL" \ |
||||
| jq '. + {"dependencies": (.devDependencies + .dependencies)} | del(.devDependencies)' \ |
||||
> package.json |
||||
|
||||
# regenerate node packages to update the actual Nix package |
||||
cd ../../../development/node-packages \ |
||||
&& ./generate.sh |
||||
} |
||||
|
||||
jq() { |
||||
"$JQ_BIN" "$@" |
||||
} |
||||
|
||||
main "@" |
@ -0,0 +1,101 @@ |
||||
{ |
||||
"name": "EPGStation", |
||||
"version": "1.7.4", |
||||
"description": "DTV Software in Japan.", |
||||
"main": "dist/server/index.js", |
||||
"scripts": { |
||||
"start": "node dist/server/index.js", |
||||
"dev-start": "node dist/server/index.js --env development", |
||||
"clean": "gulp clean", |
||||
"build": "gulp build --max_old_space_size=768 --env production", |
||||
"dev-build": "gulp build --max_old_space_size=512 --env development", |
||||
"test": "echo \"Error: no test specified\" && exit 1", |
||||
"task": "gulp --max_old_space_size=512", |
||||
"install-win-service": "winser -i -a", |
||||
"uninstall-win-service": "winser -r -x", |
||||
"backup": "node dist/server/DBTools.js -m backup -o", |
||||
"restore": "node dist/server/DBTools.js -m restore -o", |
||||
"move-log": "node dist/server/LogFileMoveTools.js", |
||||
"convert-str": "node dist/server/ConvertDBStrTools.js" |
||||
}, |
||||
"repository": { |
||||
"type": "git", |
||||
"url": "https://github.com/l3tnun/EPGStation.git" |
||||
}, |
||||
"author": "l3tnun", |
||||
"license": "MIT", |
||||
"bugs": { |
||||
"url": "https://github.com/l3tnun/EPGStation/issues" |
||||
}, |
||||
"homepage": "https://github.com/l3tnun/EPGStation#readme", |
||||
"engines": { |
||||
"node": "^10.x.x < 11 || ^12.14.0 < 13 || ^14.5.0 < 15" |
||||
}, |
||||
"dependencies": { |
||||
"@types/basic-auth": "1.1.3", |
||||
"@types/body-parser": "1.19.0", |
||||
"@types/chart.js": "2.9.23", |
||||
"@types/express": "4.17.7", |
||||
"@types/hls.js": "0.13.0", |
||||
"@types/js-yaml": "3.12.5", |
||||
"@types/lodash": "4.14.158", |
||||
"@types/material-design-lite": "1.1.16", |
||||
"@types/minimist": "1.2.0", |
||||
"@types/mithril": "2.0.3", |
||||
"@types/mkdirp": "1.0.1", |
||||
"@types/multer": "1.4.3", |
||||
"@types/mysql": "2.15.15", |
||||
"@types/node": "14.0.26", |
||||
"@types/pg": "7.14.4", |
||||
"@types/request": "2.48.5", |
||||
"@types/socket.io": "2.1.10", |
||||
"@types/socket.io-client": "1.4.33", |
||||
"@types/sqlite3": "3.1.6", |
||||
"@types/url-join": "4.0.0", |
||||
"del": "5.1.0", |
||||
"gulp": "4.0.2", |
||||
"gulp-clean-css": "4.3.0", |
||||
"gulp-concat": "2.6.1", |
||||
"gulp-dart-sass": "1.0.2", |
||||
"gulp-plumber": "1.2.1", |
||||
"gulp-sourcemaps": "2.6.5", |
||||
"gulp-tslint": "8.1.4", |
||||
"gulp-typescript": "5.0.1", |
||||
"terser-webpack-plugin": "3.0.7", |
||||
"ts-loader": "8.0.1", |
||||
"tslint": "6.1.2", |
||||
"typescript": "3.9.7", |
||||
"webpack": "4.44.0", |
||||
"webpack-stream": "5.2.1", |
||||
"aribts": "^2.1.12", |
||||
"b24.js": "1.0.3", |
||||
"basic-auth": "2.0.1", |
||||
"body-parser": "1.19.0", |
||||
"chart.js": "2.9.3", |
||||
"css-ripple-effect": "1.0.5", |
||||
"diskusage": "1.1.3", |
||||
"express": "4.17.1", |
||||
"express-openapi": "7.0.0", |
||||
"fs-extra": "9.0.1", |
||||
"hls-b24.js": "0.12.3", |
||||
"js-yaml": "3.14.0", |
||||
"lodash": "4.17.19", |
||||
"log4js": "6.3.0", |
||||
"material-design-icons": "3.0.1", |
||||
"material-design-lite": "1.3.0", |
||||
"minimist": "1.2.5", |
||||
"mirakurun": "3.2.0", |
||||
"mithril": "2.0.4", |
||||
"mkdirp": "1.0.4", |
||||
"multer": "1.4.2", |
||||
"mysql": "2.18.1", |
||||
"openapi-types": "7.0.0", |
||||
"pg": "8.3.0", |
||||
"request": "2.88.2", |
||||
"socket.io": "2.3.0", |
||||
"socket.io-client": "2.3.0", |
||||
"sqlite3": "5.0.0", |
||||
"swagger-ui-dist": "3.30.2", |
||||
"url-join": "4.0.1" |
||||
} |
||||
} |
@ -0,0 +1,17 @@ |
||||
diff --git a/src/server/ConfigInterface.ts b/src/server/ConfigInterface.ts
|
||||
index d23badd..1dd2b98 100644
|
||||
--- a/src/server/ConfigInterface.ts
|
||||
+++ b/src/server/ConfigInterface.ts
|
||||
@@ -11,9 +11,10 @@ interface ConfigInterface {
|
||||
dbPath: string;
|
||||
dbInfoPath: string;
|
||||
mysql: {
|
||||
- host: string;
|
||||
+ host?: string;
|
||||
+ socketPath?: string;
|
||||
user: string;
|
||||
- password: string;
|
||||
+ password?: string;
|
||||
database: string;
|
||||
connectTimeout: number;
|
||||
connectionLimit: number;
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue