diff options
author | genesis <camillemondon@free.fr> | 2023-02-12 19:01:48 +0100 |
---|---|---|
committer | pennae <82953136+pennae@users.noreply.github.com> | 2023-03-10 14:25:50 +0100 |
commit | f8fcd228dff4b3804762f5f401c6595dab297637 (patch) | |
tree | b1b075f9b0a8b1221f0855a8c780db0e4239411e | |
parent | bdd70a121bc54d0dcc37d84bd0c0e5cdd146e72f (diff) | |
download | nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar.gz nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar.bz2 nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar.lz nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar.xz nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.tar.zst nixpkgs-f8fcd228dff4b3804762f5f401c6595dab297637.zip |
jellyseerr: init at 1.4.1
-rw-r--r-- | pkgs/servers/jellyseerr/default.nix | 93 | ||||
-rw-r--r-- | pkgs/servers/jellyseerr/package.json | 246 | ||||
-rw-r--r-- | pkgs/servers/jellyseerr/pin.json | 5 | ||||
-rwxr-xr-x | pkgs/servers/jellyseerr/update.sh | 39 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 2 |
5 files changed, 385 insertions, 0 deletions
diff --git a/pkgs/servers/jellyseerr/default.nix b/pkgs/servers/jellyseerr/default.nix new file mode 100644 index 00000000000..80dffed68e3 --- /dev/null +++ b/pkgs/servers/jellyseerr/default.nix @@ -0,0 +1,93 @@ +{ lib +, stdenv +, fetchFromGitHub +, makeWrapper +, mkYarnPackage +, nodejs +, sqlite +, fetchYarnDeps +, python3 +, pkg-config +, glib +}: + +let + pin = lib.importJSON ./pin.json; +in + +mkYarnPackage rec { + pname = "jellyseerr"; + inherit (pin) version; + + src = fetchFromGitHub { + owner = "Fallenbagel"; + repo = "jellyseerr"; + rev = "v${version}"; + sha256 = pin.srcSha256; + }; + + packageJSON = ./package.json; + + offlineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + sha256 = pin.yarnSha256; + }; + + doDist = false; + + nativeBuildInputs = [ + nodejs + makeWrapper + ]; + + # Fixes "SQLite package has not been found installed" at launch + pkgConfig.sqlite3 = { + nativeBuildInputs = [ nodejs.pkgs.node-pre-gyp python3 ]; + postInstall = '' + export CPPFLAGS="-I${nodejs}/include/node" + node-pre-gyp install --prefer-offline --build-from-source --nodedir=${nodejs}/include/node + rm -r build-tmp-napi-v6 + ''; + }; + + pkgConfig.bcrypt = { + nativeBuildInputs = [ nodejs.pkgs.node-pre-gyp python3 ]; + postInstall = '' + export CPPFLAGS="-I${nodejs}/include/node" + node-pre-gyp install --prefer-offline --build-from-source --nodedir=${nodejs}/include/node + ''; + }; + + buildPhase = '' + runHook preBuild + ( + shopt -s dotglob + cd deps/jellyseerr + rm -r config/* + yarn build + rm -r .next/cache + ) + runHook postBuild + ''; + + postInstall = '' + makeWrapper '${nodejs}/bin/node' "$out/bin/jellyseerr" \ + --add-flags "$out/libexec/jellyseerr/deps/jellyseerr/dist/index.js" \ + --set NODE_ENV production + ''; + + passthru.updateScript = ./update.sh; + + meta = with lib; { + description = "Fork of overseerr for jellyfin support"; + homepage = "https://github.com/Fallenbagel/jellyseerr"; + longDescription = '' + Jellyseerr is a free and open source software application for managing + requests for your media library. It is a a fork of Overseerr built to + bring support for Jellyfin & Emby media servers! + ''; + license = licenses.mit; + maintainers = with maintainers; [ camillemndn ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/servers/jellyseerr/package.json b/pkgs/servers/jellyseerr/package.json new file mode 100644 index 00000000000..dd5fb6cf187 --- /dev/null +++ b/pkgs/servers/jellyseerr/package.json @@ -0,0 +1,246 @@ +{ + "name": "jellyseerr", + "version": "1.4.1", + "private": true, + "scripts": { + "dev": "nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/index.ts", + "build:server": "tsc --project server/tsconfig.json && copyfiles -u 2 server/templates/**/*.{html,pug} dist/templates && tsc-alias -p server/tsconfig.json", + "build:next": "next build", + "build": "yarn build:next && yarn build:server", + "lint": "eslint \"./server/**/*.{ts,tsx}\" \"./src/**/*.{ts,tsx}\" --cache", + "start": "NODE_ENV=production node dist/index.js", + "i18n:extract": "extract-messages -l=en -o src/i18n/locale -d en --flat true --overwriteDefault true \"./src/**/!(*.test).{ts,tsx}\"", + "migration:generate": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:generate -d server/datasource.ts", + "migration:create": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:create -d server/datasource.ts", + "migration:run": "ts-node -r tsconfig-paths/register --project server/tsconfig.json ./node_modules/typeorm/cli.js migration:run -d server/datasource.ts", + "format": "prettier --loglevel warn --write --cache .", + "format:check": "prettier --check --cache .", + "typecheck": "yarn typecheck:server && yarn typecheck:client", + "typecheck:server": "tsc --project server/tsconfig.json --noEmit", + "typecheck:client": "tsc --noEmit", + "prepare": "husky install", + "cypress:open": "cypress open", + "cypress:prepare": "ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/scripts/prepareTestDb.ts", + "cypress:build": "yarn build && yarn cypress:prepare" + }, + "repository": { + "type": "git", + "url": "https://github.com/fallenbagel/jellyseerr.git" + }, + "license": "MIT", + "dependencies": { + "@formatjs/intl-displaynames": "6.2.3", + "@formatjs/intl-locale": "3.0.11", + "@formatjs/intl-pluralrules": "5.1.8", + "@formatjs/intl-utils": "3.8.4", + "@headlessui/react": "1.7.7", + "@heroicons/react": "2.0.13", + "@supercharge/request-ip": "1.2.0", + "@svgr/webpack": "6.5.1", + "@tanem/react-nprogress": "5.0.22", + "ace-builds": "1.14.0", + "axios": "1.2.2", + "axios-rate-limit": "1.3.0", + "bcrypt": "5.1.0", + "bowser": "2.11.0", + "connect-typeorm": "1.1.4", + "cookie-parser": "1.4.6", + "copy-to-clipboard": "3.3.3", + "country-flag-icons": "1.5.5", + "cronstrue": "2.21.0", + "csurf": "1.11.0", + "date-fns": "2.29.3", + "dayjs": "1.11.7", + "email-templates": "9.0.0", + "email-validator": "2.0.4", + "express": "4.18.2", + "express-openapi-validator": "4.13.8", + "express-rate-limit": "6.7.0", + "express-session": "1.17.3", + "formik": "2.2.9", + "gravatar-url": "3.1.0", + "intl": "1.2.5", + "lodash": "4.17.21", + "next": "12.3.4", + "node-cache": "5.1.2", + "node-gyp": "9.3.1", + "node-schedule": "2.1.0", + "nodemailer": "6.8.0", + "openpgp": "5.5.0", + "plex-api": "5.3.2", + "pug": "3.0.2", + "pulltorefreshjs": "0.1.22", + "react": "18.2.0", + "react-ace": "10.1.0", + "react-animate-height": "2.1.2", + "react-aria": "3.22.0", + "react-dom": "18.2.0", + "react-intersection-observer": "9.4.1", + "react-intl": "6.2.5", + "react-markdown": "8.0.4", + "react-popper-tooltip": "4.4.2", + "react-select": "5.7.0", + "react-spring": "9.6.1", + "react-tailwindcss-datepicker-sct": "1.3.4", + "react-toast-notifications": "2.5.1", + "react-truncate-markup": "5.1.2", + "react-use-clipboard": "1.0.9", + "reflect-metadata": "0.1.13", + "secure-random-password": "0.2.3", + "semver": "7.3.8", + "sqlite3": "5.1.4", + "swagger-ui-express": "4.6.0", + "swr": "2.0.0", + "typeorm": "0.3.11", + "web-push": "3.5.0", + "winston": "3.8.2", + "winston-daily-rotate-file": "4.7.1", + "xml2js": "0.4.23", + "yamljs": "0.3.0", + "yup": "0.32.11", + "zod": "3.20.2" + }, + "devDependencies": { + "@babel/cli": "7.20.7", + "@commitlint/cli": "17.4.0", + "@commitlint/config-conventional": "17.4.0", + "@semantic-release/changelog": "6.0.2", + "@semantic-release/commit-analyzer": "9.0.2", + "@semantic-release/exec": "6.0.3", + "@semantic-release/git": "10.0.1", + "@tailwindcss/aspect-ratio": "0.4.2", + "@tailwindcss/forms": "0.5.3", + "@tailwindcss/typography": "0.5.8", + "@types/bcrypt": "5.0.0", + "@types/cookie-parser": "1.4.3", + "@types/country-flag-icons": "1.2.0", + "@types/csurf": "1.11.2", + "@types/email-templates": "8.0.4", + "@types/express": "4.17.15", + "@types/express-session": "1.17.5", + "@types/lodash": "4.14.191", + "@types/node": "17.0.36", + "@types/node-schedule": "2.1.0", + "@types/nodemailer": "6.4.7", + "@types/pulltorefreshjs": "0.1.5", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.10", + "@types/react-transition-group": "4.4.5", + "@types/secure-random-password": "0.2.1", + "@types/semver": "7.3.13", + "@types/swagger-ui-express": "4.1.3", + "@types/web-push": "3.3.2", + "@types/xml2js": "0.4.11", + "@types/yamljs": "0.2.31", + "@types/yup": "0.29.14", + "@typescript-eslint/eslint-plugin": "5.48.0", + "@typescript-eslint/parser": "5.48.0", + "autoprefixer": "10.4.13", + "babel-plugin-react-intl": "8.2.25", + "babel-plugin-react-intl-auto": "3.3.0", + "commitizen": "4.2.6", + "copyfiles": "2.4.1", + "cy-mobile-commands": "0.3.0", + "cypress": "12.3.0", + "cz-conventional-changelog": "3.3.0", + "eslint": "8.31.0", + "eslint-config-next": "12.3.4", + "eslint-config-prettier": "8.6.0", + "eslint-plugin-formatjs": "4.3.9", + "eslint-plugin-jsx-a11y": "6.6.1", + "eslint-plugin-no-relative-import-paths": "1.5.2", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-react": "7.31.11", + "eslint-plugin-react-hooks": "4.6.0", + "extract-react-intl-messages": "4.1.1", + "husky": "8.0.3", + "lint-staged": "13.1.0", + "nodemon": "2.0.20", + "postcss": "8.4.20", + "prettier": "2.8.1", + "prettier-plugin-organize-imports": "3.2.1", + "prettier-plugin-tailwindcss": "0.2.1", + "semantic-release": "19.0.5", + "semantic-release-docker-buildx": "1.0.1", + "tailwindcss": "3.2.4", + "ts-node": "10.9.1", + "tsc-alias": "1.8.2", + "tsconfig-paths": "4.1.2", + "typescript": "4.9.4" + }, + "resolutions": { + "sqlite3/node-gyp": "8.4.1", + "@types/react": "18.0.26", + "@types/react-dom": "18.0.10" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "lint-staged": { + "**/*.{ts,tsx,js}": [ + "prettier --write", + "eslint" + ], + "**/*.{json,md,css}": [ + "prettier --write" + ] + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ] + }, + "release": { + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + [ + "@semantic-release/changelog", + { + "changelogFile": "CHANGELOG.md" + } + ], + "@semantic-release/npm", + [ + "@semantic-release/git", + { + "assets": [ + "package.json", + "CHANGELOG.md" + ], + "message": "chore(release): ${nextRelease.version}" + } + ], + "semantic-release-docker-buildx", + [ + "@semantic-release/github", + { + "addReleases": "bottom" + } + ] + ], + "branches": [ + "main" + ], + "npmPublish": false, + "publish": [ + { + "path": "semantic-release-docker-buildx", + "buildArgs": { + "COMMIT_TAG": "$GIT_SHA" + }, + "imageNames": [ + "fallenbagel/jellyseerr" + ], + "platforms": [ + "linux/amd64", + "linux/arm64", + "linux/arm/v7" + ] + }, + "@semantic-release/github" + ] + } +} diff --git a/pkgs/servers/jellyseerr/pin.json b/pkgs/servers/jellyseerr/pin.json new file mode 100644 index 00000000000..3681e3df685 --- /dev/null +++ b/pkgs/servers/jellyseerr/pin.json @@ -0,0 +1,5 @@ +{ + "version": "1.4.1", + "srcSha256": "LDqlQfy1bm2xMNn1oulImfanQmJX57P48VaZn0Jxwpk=", + "yarnSha256": "162aip7r5vcpfj1sn42qwwdlwnaii32bd2k0gp9py1z0zmw0lwlf" +} diff --git a/pkgs/servers/jellyseerr/update.sh b/pkgs/servers/jellyseerr/update.sh new file mode 100755 index 00000000000..b1561bae217 --- /dev/null +++ b/pkgs/servers/jellyseerr/update.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix curl jq prefetch-yarn-deps nix-prefetch-github + +set -euo pipefail + +if [[ "$#" -gt 1 || "$1" == -* ]]; then + echo "Regenerates packaging data for jellyseerr." + echo "Usage: $0 [git release tag]" + exit 1 +fi + +tag="$1" + +if [ -z "$tag" ]; then + tag="$( + curl "https://api.github.com/repos/Fallenbagel/jellyseerr/releases?per_page=1" | + jq -r '.[0].tag_name' + )" +fi + +src="https://raw.githubusercontent.com/Fallenbagel/jellyseerr/$tag" +src_sha256=$(nix-prefetch-github Fallenbagel jellyseerr --rev ${tag} | jq -r .sha256) + +tmpdir=$(mktemp -d) +trap 'rm -rf "$tmpdir"' EXIT + +pushd $tmpdir +curl -O "$src/yarn.lock" +yarn_sha256=$(prefetch-yarn-deps yarn.lock) +popd + +curl -O "$src/package.json" +cat > pin.json << EOF +{ + "version": "$(echo $tag | grep -P '(\d|\.)+' -o)", + "srcSha256": "$src_sha256", + "yarnSha256": "$yarn_sha256" +} +EOF diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 521b00eb5f5..ac6e8f9f06b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5049,6 +5049,8 @@ with pkgs; jellyfin-web = callPackage ../servers/jellyfin/web.nix { }; + jellyseerr = callPackage ../servers/jellyseerr { }; + jiten = callPackage ../applications/misc/jiten { }; kanjidraw = callPackage ../applications/misc/kanjidraw { }; |