summary refs log tree commit diff
diff options
context:
space:
mode:
authorgenesis <camillemondon@free.fr>2023-02-12 19:01:48 +0100
committerpennae <82953136+pennae@users.noreply.github.com>2023-03-10 14:25:50 +0100
commitf8fcd228dff4b3804762f5f401c6595dab297637 (patch)
treeb1b075f9b0a8b1221f0855a8c780db0e4239411e
parentbdd70a121bc54d0dcc37d84bd0c0e5cdd146e72f (diff)
downloadnixpkgs-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.nix93
-rw-r--r--pkgs/servers/jellyseerr/package.json246
-rw-r--r--pkgs/servers/jellyseerr/pin.json5
-rwxr-xr-xpkgs/servers/jellyseerr/update.sh39
-rw-r--r--pkgs/top-level/all-packages.nix2
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 { };