My Nix Configuration
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

[flake] romm: remove

dish 443e38eb 8113cb85

+9 -896
-1
hosts/marvin/default.nix
··· 29 29 ./services/podman.nix 30 30 ./services/postgres.nix 31 31 ./services/prometheus.nix 32 - ./services/romm.nix 33 32 ./services/scrutiny.nix 34 33 ./services/syncthing.nix 35 34 ./services/tailscale.nix
+7 -88
hosts/marvin/services/nginx.nix
··· 1 1 { 2 2 self, 3 - pkgs, 4 - self', 5 3 ... 6 4 }: 7 5 let 8 6 n = self.lib.data.services.nextcloud; 9 - r = self.lib.data.services.romm; 10 7 in 11 8 { 12 9 services.nginx = { 13 10 recommendedGzipSettings = true; 14 - virtualHosts = { 15 - "${n.extUrl}" = { 16 - listen = [ 17 - { 18 - inherit (n) port; 19 - addr = "0.0.0.0"; 20 - } 21 - ]; 22 - }; 23 - "${r.tsHost}.${self.lib.data.tsNet}" = { 24 - locations = { 25 - "/" = { 26 - extraConfig = '' 27 - try_files $uri $uri/ /index.html; 28 - proxy_redirect off; 29 - add_header Access-Control-Allow-Origin *; 30 - add_header Access-Control-Allow-Methods *; 31 - add_header Access-Control-Allow-Headers *; 32 - add_header Cross-Origin-Embedder-Policy $coep_header; 33 - add_header Cross-Origin-Opener-Policy $coop_header; 34 - ''; 35 - }; 36 - "/assets".tryFiles = "$uri $uri/ =404"; 37 - "/openapi.json".proxyPass = "http://romm_wsgi"; 38 - "/api".extraConfig = '' 39 - proxy_pass http://romm_wsgi; 40 - proxy_request_buffering off; 41 - proxy_buffering off; 42 - ''; 43 - "/ws".extraConfig = '' 44 - proxy_pass http://romm_wsgi; 45 - proxy_http_version 1.1; 46 - proxy_set_header Upgrade $http_upgrade; 47 - proxy_set_header Connection "upgrade"; 48 - ''; 49 - "/library/".extraConfig = '' 50 - internal; 51 - alias "/var/media/roms/library/"; 52 - ''; 53 - "/decode".extraConfig = '' 54 - internal; 55 - js_path ${self'.packages.romm}/lib/romm/ngx_js; 56 - js_content decode.decodeBase64; 57 - ''; 58 - }; 59 - root = "${self'.packages.romm.frontend}/lib/node_modules/romm/dist"; 60 - extraConfig = '' 61 - proxy_set_header Host $host; 62 - proxy_set_header X-Real-IP $remote_addr; 63 - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 64 - proxy_set_header X-Forwarded-Proto $forwardscheme; 65 - ''; 66 - listen = [ 67 - { 68 - port = r.nginxPort; 69 - addr = "0.0.0.0"; 70 - } 71 - ]; 72 - }; 73 - }; 74 - commonHttpConfig = '' 75 - # Helper to get scheme regardless if we are behind a proxy or not 76 - map $http_x_forwarded_proto $forwardscheme { 77 - default $scheme; 78 - https https; 79 - } 80 - # COEP and COOP headers for cross-origin isolation, which are set only for the 81 - # EmulatorJS player path, to enable SharedArrayBuffer support, which is needed 82 - # for multi-threaded cores. 83 - map $request_uri $coep_header { 84 - default ""; 85 - ~^/rom/.*/ejs$ "require-corp"; 86 - } 87 - map $request_uri $coop_header { 88 - default ""; 89 - ~^/rom/.*/ejs$ "same-origin"; 90 - } 91 - 92 - ''; 93 - additionalModules = [ 94 - pkgs.nginxModules.zip 95 - pkgs.nginxModules.njs 96 - ]; 97 - upstreams.romm_wsgi.servers = { 98 - "unix:/run/romm/server.sock" = { }; 11 + virtualHosts."${n.extUrl}" = { 12 + listen = [ 13 + { 14 + inherit (n) port; 15 + addr = "0.0.0.0"; 16 + } 17 + ]; 99 18 }; 100 19 }; 101 20 }
-110
hosts/marvin/services/romm.nix
··· 1 - { 2 - config, 3 - self, 4 - self', 5 - lib, 6 - pkgs, 7 - ... 8 - }: 9 - let 10 - sec = config.age.secrets; 11 - d = self.lib.data.services.romm; 12 - configFileFormat = pkgs.formats.yaml { }; 13 - rommConfig = { 14 - exclude.platforms = [ ]; 15 - filesystem.roms_folder = "roms"; 16 - scan = { 17 - priority = { 18 - metadata = [ 19 - "igdb" 20 - "moby" 21 - "launchbox" 22 - "hasheous" 23 - "flashpoint" 24 - "ra" 25 - "hltb" 26 - ]; 27 - }; 28 - }; 29 - }; 30 - in 31 - { 32 - systemd.services = { 33 - romm-server = { 34 - wantedBy = [ "multi-user.target" ]; 35 - after = [ "network.target" ]; 36 - description = "Romm.app server"; 37 - path = [ pkgs.cron ]; 38 - environment = { 39 - # Server 40 - TZ = "US/New_York"; 41 - ROMM_BASE_PATH = "/var/media/roms"; 42 - ROMM_BASE_URL = "${d.tsHost}.${self.lib.data.tsNet}:${toString d.port}"; 43 - DB_HOST = "/run/postgresql"; 44 - DB_PORT = "5432"; 45 - DB_NAME = "romm"; 46 - DB_USER = "romm"; 47 - DB_PASSWD = "romm"; 48 - ROMM_DB_DRIVER = "postgresql"; 49 - REDIS_PORT = toString d.redisPort; 50 - CRON_COMMAND = lib.getExe pkgs.cron; 51 - ROMM_CONFIG_FILE = configFileFormat.generate "config.yml" rommConfig; 52 - 53 - # Metadata Providers 54 - LAUNCHBOX_API_ENABLED = "true"; 55 - PLAYMATCH_API_ENABLED = "true"; 56 - HASHEOUS_API_ENABLED = "true"; 57 - FLASHPOINT_API_ENABLED = "true"; 58 - HLTB_API_ENABLED = "true"; 59 - 60 - # Background Tasks 61 - ENABLE_RESCAN_ON_FILESYSTEM_CHANGE = "true"; 62 - ENABLE_SCHEDULED_UPDATE_LAUNCHBOX_METADATA = "true"; 63 - }; 64 - serviceConfig = { 65 - ExecStartPre = lib.getExe' self'.packages.romm "romm-startup"; 66 - ExecStart = "${lib.getExe self'.packages.romm} --bind=0.0.0.0:${toString d.port} --bind=unix:/run/romm/server.sock"; 67 - User = "romm"; 68 - Group = "romm"; 69 - EnvironmentFile = [ sec.romm-secrets.path ]; 70 - StateDirectory = "romm"; 71 - RuntimeDirectory = "romm"; 72 - }; 73 - }; 74 - }; 75 - 76 - users.users.romm = { 77 - isSystemUser = true; 78 - group = "romm"; 79 - }; 80 - users.groups.romm = { }; 81 - 82 - systemd.tmpfiles.settings."10-romm"."/var/media/roms".d = { 83 - group = "romm"; 84 - user = "romm"; 85 - mode = "755"; 86 - }; 87 - 88 - services.postgresql.ensureUsers = [ 89 - { 90 - name = "romm"; 91 - ensureDBOwnership = true; 92 - ensureClauses.login = true; 93 - } 94 - ]; 95 - services.postgresql.ensureDatabases = [ "romm" ]; 96 - 97 - services.redis.servers.romm = { 98 - enable = true; 99 - databases = 1; 100 - port = d.redisPort; 101 - }; 102 - 103 - age.secrets = { 104 - romm-secrets = { 105 - file = ./secrets/romm-secrets.age; 106 - owner = "romm"; 107 - group = "romm"; 108 - }; 109 - }; 110 - }
-1
hosts/marvin/services/secrets/secrets.nix
··· 37 37 "pinchflat-secrets.age".publicKeys = marvinDefault; 38 38 "planka-env.age".publicKeys = marvinDefault; 39 39 "pocket-id-secrets.age".publicKeys = marvinDefault; 40 - "romm-secrets.age".publicKeys = marvinDefault; 41 40 "vaultwarden-vars.age".publicKeys = marvinDefault; 42 41 "webmentiond-env.age".publicKeys = marvinDefault; 43 42 }
+2 -7
lib/data/services.toml
··· 5 5 # anubis: What port the anubis service for this domain will use, int 6 6 # tsHost: (optional) What Tailscale host this service will run on, for services only available via Tailscale. 7 7 # # Should only be set if this is available externally, if at all, since TS-only services aren't able to be scraped. 8 - # Current lowest unassigned port: 6941 8 + # Current lowest unassigned port: 6938 9 + 9 10 [authentik] 10 11 port = 6908 11 12 host = "marvin" ··· 118 119 port = 6901 119 120 host = "marvin" 120 121 tsHost = "reddit" 121 - 122 - [romm] 123 - port = 6938 124 - nginxPort = 6939 125 - tsHost = "romm" 126 - redisPort = 6940 127 122 128 123 129 124 [scrutiny]
-19
packages/romm/common.nix
··· 1 - { lib, fetchFromGitHub }: 2 - rec { 3 - version = "4.4.1"; 4 - src = fetchFromGitHub { 5 - owner = "rommapp"; 6 - repo = "romm"; 7 - tag = version; 8 - hash = "sha256-0xcGd0z4uNCFbqo6xiRqde83g2Ns1NZBB6CzfqZRjVU="; 9 - }; 10 - 11 - meta = { 12 - changelog = "https://github.com/rommapp/romm/releases/tag/${version}"; 13 - description = "Beautiful, powerful, self-hosted rom manager and player"; 14 - homepage = "https://romm.app/"; 15 - license = lib.licenses.agpl3Only; 16 - maintainers = [ lib.maintainers.pyrox0 ]; 17 - platforms = lib.platforms.linux; 18 - }; 19 - }
-38
packages/romm/emulatorjs.nix
··· 1 - { 2 - lib, 3 - stdenvNoCC, 4 - fetchurl, 5 - _7zz, 6 - }: 7 - stdenvNoCC.mkDerivation (finalAttrs: { 8 - pname = "emulatorjs"; 9 - version = "4.2.3"; 10 - 11 - src = fetchurl { 12 - url = "https://github.com/EmulatorJS/EmulatorJS/releases/download/v${finalAttrs.version}/${finalAttrs.version}.7z"; 13 - hash = "sha256-B9RRvAb6OtBKsw2blOtjrDStC6vuUtYDV7ACvejzhQs="; 14 - }; 15 - 16 - nativeBuildInputs = [ _7zz ]; 17 - 18 - dontUnpack = true; 19 - dontConfigure = true; 20 - dontBuild = true; 21 - 22 - installPhase = '' 23 - runHook preInstall 24 - 25 - mkdir -p $out/lib/emulatorjs 26 - 7zz x -y $src -o$out/lib/emulatorjs 27 - 28 - runHook postInstall 29 - ''; 30 - 31 - meta = { 32 - changelog = "https://github.com/EmulatorJS/EmulatorJS/releases/tag/v${finalAttrs.version}"; 33 - description = "Web-based frontend for RetroArch"; 34 - homepage = "https://emulatorjs.org/"; 35 - license = lib.licenses.gpl3Only; 36 - maintainers = [ lib.maintainers.pyrox0 ]; 37 - }; 38 - })
-25
packages/romm/frontend.nix
··· 1 - { 2 - lib, 3 - buildNpmPackage, 4 - common, 5 - ruffle-web, 6 - emulatorjs, 7 - }: 8 - buildNpmPackage { 9 - inherit (common) version src; 10 - pname = "romm-frontend"; 11 - 12 - sourceRoot = "${common.src.name}/frontend"; 13 - 14 - npmDepsHash = "sha256-ytbH58i1D63Z73tG4WLSDsLjscjSRjWg0yqOrtXhluo="; 15 - 16 - postInstall = '' 17 - cp -r $out/lib/node_modules/romm/assets/* $out/lib/node_modules/romm/dist/assets/ 18 - rm -rf $out/lib/node_modules/romm/{assets,*.js,public,*.json,src,node_modules} 19 - rommAssets="$out/lib/node_modules/romm/dist/assets" 20 - cp -r ${ruffle-web}/lib/ruffle-web/* $rommAssets/ruffle/ 21 - cp -r ${emulatorjs}/lib/emulatorjs/* $rommAssets/emulatorjs/ 22 - 23 - ''; 24 - meta = (lib.filterAttrs (n: _: n != "position") common.meta); 25 - }
-49
packages/romm/libchdr.nix
··· 1 - { 2 - lib, 3 - stdenv, 4 - fetchFromGitHub, 5 - cmake, 6 - zlib, 7 - zstd, 8 - }: 9 - stdenv.mkDerivation { 10 - pname = "libchdr"; 11 - version = "0-unstable-2025-06-08"; 12 - 13 - src = fetchFromGitHub { 14 - owner = "rtissera"; 15 - repo = "libchdr"; 16 - rev = "8bba7745d758627258b315997a860039244cedaf"; 17 - hash = "sha256-w/MwzXGi9ZtqNHuG00sw+l4lgmkcYHzebjVVM6u4Xhc="; 18 - }; 19 - 20 - postPatch = '' 21 - substituteInPlace pkg-config.pc.in \ 22 - --replace-fail "@CMAKE_INSTALL_LIBDIR@" "lib" \ 23 - --replace-fail "@CMAKE_INSTALL_INCLUDEDIR@" "include" 24 - ''; 25 - 26 - nativeBuildInputs = [ 27 - cmake 28 - ]; 29 - 30 - buildInputs = [ 31 - zlib 32 - zstd 33 - ]; 34 - 35 - cmakeFlags = [ 36 - (lib.cmakeBool "WITH_SYSTEM_ZLIB" true) 37 - (lib.cmakeBool "WITH_SYSTEM_ZSTD" true) 38 - (lib.cmakeBool "INSTALL_STATIC_LIBS" true) 39 - (lib.cmakeBool "BUILD_SHARED_LIBS" true) 40 - (lib.cmakeBool "BUILD_LTO" true) 41 - ]; 42 - 43 - meta = { 44 - description = "Standalone library for reading MAME's CHDv1-v5 formats"; 45 - homepage = "https://github.com/rtissera/libchdr"; 46 - license = lib.licenses.bsd3; 47 - maintainers = with lib.maintainers; [ pyrox0 ]; 48 - }; 49 - }
-142
packages/romm/package.nix
··· 1 - { 2 - lib, 3 - python3Packages, 4 - makeBinaryWrapper, 5 - callPackage, 6 - writeShellScript, 7 - python-packages ? (callPackage ./python-packages { }), 8 - rahasher ? (callPackage ./rahasher.nix { }), 9 - ruffle-web ? (callPackage ./ruffle-web.nix { }), 10 - emulatorjs ? (callPackage ./emulatorjs.nix { }), 11 - common ? (callPackage ./common.nix { }), 12 - frontend ? (callPackage ./frontend.nix { inherit common emulatorjs ruffle-web; }), 13 - }: 14 - python3Packages.buildPythonPackage { 15 - inherit (common) version src; 16 - pname = "romm"; 17 - pyproject = false; 18 - 19 - # Get config file from nix and not from a folder in the library 20 - postPatch = '' 21 - substituteInPlace backend/config/config_manager.py \ 22 - --replace-fail 'f"{ROMM_USER_CONFIG_PATH}/config.yml"' 'os.environ["ROMM_CONFIG_FILE"]' 23 - ''; 24 - 25 - dependencies = 26 - with python3Packages; 27 - [ 28 - pyyaml 29 - sqlalchemy 30 - unidecode 31 - aiohttp 32 - alembic 33 - anyio 34 - authlib 35 - colorama 36 - defusedxml 37 - python-packages.fastapi-pagination 38 - fastapi 39 - gunicorn 40 - httpx 41 - itsdangerous 42 - joserfc 43 - opentelemetry-distro 44 - opentelemetry-exporter-otlp 45 - opentelemetry-instrumentation-aiohttp-client 46 - opentelemetry-instrumentation-fastapi 47 - opentelemetry-instrumentation-httpx 48 - opentelemetry-instrumentation-redis 49 - opentelemetry-instrumentation-sqlalchemy 50 - passlib 51 - pillow 52 - psycopg 53 - pydash 54 - python-dotenv 55 - python-magic 56 - python-socketio 57 - redis 58 - rq 59 - python-packages.rq-scheduler 60 - sentry-sdk 61 - starlette 62 - streaming-form-data 63 - python-packages.strsimpy 64 - types-colorama 65 - python-packages.types-passlib 66 - types-pyyaml 67 - types-redis 68 - user-agents 69 - uvicorn 70 - uvicorn-worker 71 - watchfiles 72 - yarl 73 - python-packages.zipfile-inflate64 74 - ] 75 - ++ python3Packages.sqlalchemy.optional-dependencies.mariadb_connector 76 - ++ python3Packages.sqlalchemy.optional-dependencies.mysql_connector 77 - ++ python3Packages.sqlalchemy.optional-dependencies.postgresql_psycopg 78 - ++ python3Packages.passlib.optional-dependencies.bcrypt 79 - ++ python3Packages.psycopg.optional-dependencies.c 80 - ++ python3Packages.fastapi.optional-dependencies.standard 81 - ++ python-packages.fastapi-pagination.optional-dependencies.sqlalchemy; 82 - 83 - optional-dependencies = { 84 - test = with python3Packages; [ 85 - fakeredis 86 - pytest_8_3 87 - pytest-asyncio 88 - pytest-cov-stub 89 - pytest-env 90 - pytest-mock 91 - pytest-recording 92 - ]; 93 - }; 94 - 95 - buildInputs = [ 96 - rahasher 97 - makeBinaryWrapper 98 - python3Packages.gunicorn 99 - ]; 100 - 101 - installPhase = 102 - let 103 - mainScript = writeShellScript "romm-main" '' 104 - ${lib.getExe python3Packages.gunicorn} "$@" -k uvicorn.workers.UvicornWorker main:app; 105 - ''; 106 - in 107 - '' 108 - runHook postInstall 109 - 110 - mkdir -p $out/lib/romm 111 - mkdir $out/bin 112 - 113 - mv backend/* $out/lib/romm 114 - 115 - mv docker/nginx/js $out/lib/romm/ngx_js 116 - 117 - chmod +x $out/lib/romm/main.py 118 - 119 - makeWrapper ${python3Packages.python.pythonOnBuildForHost.interpreter} $out/bin/romm-startup \ 120 - --prefix PYTHONPATH : "$PYTHONPATH" \ 121 - --chdir "$out/lib/romm" \ 122 - --add-flag "$out/lib/romm/startup.py" 123 - 124 - makeWrapper ${mainScript} $out/bin/romm \ 125 - --chdir "$out/lib/romm" \ 126 - --prefix PYTHONPATH : "$PYTHONPATH" \ 127 - ''; 128 - 129 - passthru = { 130 - inherit 131 - common 132 - emulatorjs 133 - frontend 134 - python-packages 135 - rahasher 136 - ruffle-web 137 - ; 138 - }; 139 - meta = (lib.filterAttrs (n: _: n != "position") common.meta) // { 140 - mainProgram = "romm"; 141 - }; 142 - }
-9
packages/romm/python-packages/default.nix
··· 1 - { 2 - lib, 3 - callPackage, 4 - newScope, 5 - }: 6 - lib.packagesFromDirectoryRecursive { 7 - inherit callPackage newScope; 8 - directory = ./pkgs; 9 - }
-39
packages/romm/python-packages/pkgs/crontab/package.nix
··· 1 - { 2 - lib, 3 - python3Packages, 4 - fetchFromGitHub, 5 - }: 6 - python3Packages.buildPythonPackage rec { 7 - pname = "crontab"; 8 - version = "1.0.5"; 9 - pyproject = true; 10 - 11 - src = fetchFromGitHub { 12 - owner = "josiahcarlson"; 13 - repo = "parse-crontab"; 14 - tag = version; 15 - hash = "sha256-iZS4vkfp93BK5wp1S3qCg0bC7NcT7o5/nNMRI+SXTws="; 16 - }; 17 - 18 - build-system = [ python3Packages.setuptools ]; 19 - 20 - dependencies = with python3Packages; [ 21 - build 22 - python-dateutil 23 - pytz 24 - setuptools 25 - twine 26 - ]; 27 - 28 - nativeCheckInputs = [ python3Packages.pytestCheckHook ]; 29 - 30 - meta = { 31 - description = "Parse and use crontab schedules in Python"; 32 - homepage = "https://github.com/josiahcarlson/parse-crontab"; 33 - license = [ 34 - lib.licenses.lgpl21 35 - lib.licenses.lgpl3 36 - ]; 37 - maintainers = [ lib.maintainers.pyrox0 ]; 38 - }; 39 - }
-91
packages/romm/python-packages/pkgs/fastapi-pagination/package.nix
··· 1 - { 2 - lib, 3 - python3Packages, 4 - fetchFromGitHub, 5 - sqlakeyset, 6 - }: 7 - python3Packages.buildPythonPackage rec { 8 - pname = "fastapi-pagination"; 9 - version = "0.15.2"; 10 - pyproject = true; 11 - 12 - src = fetchFromGitHub { 13 - owner = "uriyyo"; 14 - repo = "fastapi-pagination"; 15 - tag = version; 16 - hash = "sha256-4ffpqSI/oyV5LOPGBsCI7EZ6lKPkMY8Bw9b1ONsBg8I="; 17 - }; 18 - 19 - build-system = [ python3Packages.hatchling ]; 20 - 21 - dependencies = with python3Packages; [ 22 - fastapi 23 - pydantic 24 - typing-extensions 25 - ]; 26 - 27 - optional-dependencies = with python3Packages; { 28 - sqlmodel = [ 29 - sqlmodel 30 - sqlakeyset 31 - ]; 32 - sqlalchemy = [ 33 - sqlalchemy 34 - sqlakeyset 35 - ]; 36 - databases = [ databases ]; 37 - # orm = [ 38 - # # orm 39 - # databases 40 - # ]; 41 - # tortoise = [tortoise-orm]; 42 - asyncpg = [ 43 - sqlalchemy 44 - asyncpg 45 - ]; 46 - django = [ 47 - django_5 48 - databases 49 - ]; 50 - piccolo = [ piccolo ]; 51 - motor = [ motor ]; 52 - # bunnet = [ bunnet ]; 53 - mongoengine = [ mongoengine ]; 54 - # beanie = [ beanie ]; 55 - # scylla-driver = [ scylla-driver ]; 56 - # odmantic = [ odmantic ]; 57 - elasticsearch = [ elasticsearch-dsl ]; 58 - firestore = [ google-cloud-firestore ]; 59 - }; 60 - 61 - disabledTestPaths = [ 62 - "tests/ext" 63 - ]; 64 - 65 - nativeCheckInputs = 66 - with python3Packages; 67 - [ 68 - pytestCheckHook 69 - pytest-cov-stub 70 - pytest-asyncio 71 - aiosqlite 72 - asgi-lifespan 73 - cassandra-driver 74 - httpx 75 - faker 76 - dirty-equals 77 - ] 78 - ++ lib.concatAttrValues optional-dependencies; 79 - 80 - pythonImportsCheck = [ "fastapi_pagination" ]; 81 - 82 - meta = { 83 - changelog = "https://github.com/uriyyo/fastapi-pagination/releases/tag/${version}"; 84 - description = "simplify pagination in FastAPI applications"; 85 - homepage = "https://uriyyo-fastapi-pagination.netlify.app/"; 86 - license = lib.licenses.mit; 87 - maintainers = with lib.maintainers; [ 88 - pyrox0 89 - ]; 90 - }; 91 - }
-44
packages/romm/python-packages/pkgs/rq-scheduler/package.nix
··· 1 - { 2 - lib, 3 - python3Packages, 4 - fetchFromGitHub, 5 - crontab, 6 - }: 7 - python3Packages.buildPythonPackage { 8 - pname = "rq-scheduler"; 9 - version = "0.14.0"; 10 - pyproject = true; 11 - 12 - src = fetchFromGitHub { 13 - owner = "adamantike"; 14 - repo = "rq-scheduler"; 15 - # https://github.com/rq/rq-scheduler/pull/325 16 - rev = "feat/script-options-username-ssl"; 17 - hash = "sha256-VOgMuzSDwCIWOlWc2+dxZHXqO3IigTi0F7ZRAzbgzLE="; 18 - }; 19 - 20 - postPatch = '' 21 - # Only contains python2 compat stuff, also causes warnings, so remove 22 - rm setup.cfg 23 - ''; 24 - 25 - build-system = [ python3Packages.setuptools ]; 26 - 27 - dependencies = with python3Packages; [ 28 - crontab 29 - rq 30 - python-dateutil 31 - ]; 32 - 33 - # Tests require running Redis server 34 - doCheck = false; 35 - 36 - pythonImportsCheck = [ "rq_scheduler" ]; 37 - 38 - meta = { 39 - description = "lightweight library that adds job scheduling capabilities to RQ"; 40 - homepage = "https://github.com/rq/rq-scheduler"; 41 - license = lib.licenses.mit; 42 - maintainers = [ lib.maintainers.pyrox0 ]; 43 - }; 44 - }
-29
packages/romm/python-packages/pkgs/sqlakeyset/package.nix
··· 1 - { 2 - python3Packages, 3 - fetchPypi, 4 - }: 5 - python3Packages.buildPythonPackage rec { 6 - pname = "sqlakeyset"; 7 - version = "2.0.1762907931"; 8 - pyproject = true; 9 - 10 - src = fetchPypi { 11 - inherit pname version; 12 - hash = "sha256-gLGrHYgTt8kf17Rd5ESJeL4s7bPHX/8/0ZKw+c+RUI0="; 13 - }; 14 - 15 - build-system = [ 16 - python3Packages.hatchling 17 - ]; 18 - 19 - dependencies = 20 - with python3Packages; 21 - [ 22 - sqlalchemy 23 - python-dateutil 24 - packaging 25 - ] 26 - ++ (lib.optionals (python3Packages.pythonOlder "3.13") [ 27 - typing-extensions 28 - ]); 29 - }
-37
packages/romm/python-packages/pkgs/strsimpy/package.nix
··· 1 - { 2 - lib, 3 - fetchFromGitHub, 4 - python3Packages, 5 - }: 6 - python3Packages.buildPythonPackage rec { 7 - pname = "strsimpy"; 8 - version = "0.2.1"; 9 - pyproject = true; 10 - 11 - src = fetchFromGitHub { 12 - owner = "luozhouyang"; 13 - repo = "python-string-similarity"; 14 - tag = "v${version}"; 15 - hash = "sha256-MMueTVLdNYpr37H7e5vc9TrGO+2bDPleH8xoSTQTUdQ="; 16 - }; 17 - 18 - postPatch = '' 19 - substituteInPlace strsimpy/sift4_test.py \ 20 - --replace-warn "assertEquals" "assertEqual" 21 - ''; 22 - 23 - build-system = [ python3Packages.setuptools ]; 24 - 25 - nativeCheckInputs = [ 26 - python3Packages.pytestCheckHook 27 - ]; 28 - 29 - pythonImportsCheck = [ "strsimpy" ]; 30 - 31 - meta = { 32 - description = "Library implementing different string similarity and distance measures using Python"; 33 - homepage = "https://github.com/luozhouyang/python-string-similarity"; 34 - license = lib.licenses.mit; 35 - maintainers = [ lib.maintainers.pyrox0 ]; 36 - }; 37 - }
-29
packages/romm/python-packages/pkgs/types-passlib/package.nix
··· 1 - { 2 - lib, 3 - python3Packages, 4 - fetchPypi, 5 - }: 6 - 7 - python3Packages.buildPythonPackage rec { 8 - pname = "types-passlib"; 9 - version = "1.7.7.20250602"; 10 - pyproject = true; 11 - 12 - src = fetchPypi { 13 - inherit version; 14 - pname = "types_passlib"; 15 - hash = "sha256-zyNQ5402trCeTbRChNlmUbVyhfSZz6vxEbYWBlq6t7M="; 16 - }; 17 - 18 - build-system = [ python3Packages.setuptools ]; 19 - 20 - # Module doesn't have tests 21 - doCheck = false; 22 - 23 - meta = with lib; { 24 - description = "Typing stubs for passlib"; 25 - homepage = "https://github.com/python/typeshed"; 26 - license = licenses.asl20; 27 - maintainers = with maintainers; [ pyrox0 ]; 28 - }; 29 - }
-38
packages/romm/python-packages/pkgs/zipfile-inflate64/package.nix
··· 1 - { 2 - lib, 3 - fetchFromGitea, 4 - python3Packages, 5 - }: 6 - python3Packages.buildPythonPackage rec { 7 - pname = "zipfile-inflate64"; 8 - version = "0.1"; 9 - pyproject = true; 10 - 11 - src = fetchFromGitea { 12 - domain = "codeberg.org"; 13 - owner = "miurahr"; 14 - repo = "zipfile-inflate64"; 15 - tag = "v${version}"; 16 - hash = "sha256-gdN5We/PWO5Ndf6wyF7Nqq5ps8KrdxhNsjSFzzkH5XQ="; 17 - fetchLFS = true; 18 - }; 19 - 20 - build-system = with python3Packages; [ 21 - setuptools 22 - wheel 23 - setuptools-scm 24 - ]; 25 - 26 - nativeCheckInputs = [ 27 - python3Packages.pytestCheckHook 28 - ]; 29 - 30 - dependencies = [ python3Packages.inflate64 ]; 31 - 32 - meta = { 33 - description = "Extract Enhanced Deflate ZIP archives with Python's zipfile API"; 34 - homepage = "https://codeberg.org/miurahr/zipfile-inflate64"; 35 - license = lib.licenses.gpl3Plus; 36 - maintainers = [ lib.maintainers.pyrox0 ]; 37 - }; 38 - }
-62
packages/romm/rahasher.nix
··· 1 - { 2 - lib, 3 - stdenv, 4 - callPackage, 5 - fetchFromGitHub, 6 - libchdr ? (callPackage ./libchdr.nix { }), 7 - }: 8 - stdenv.mkDerivation (finalAttrs: { 9 - pname = "rahasher"; 10 - version = "1.8.1"; 11 - 12 - src = fetchFromGitHub { 13 - owner = "RetroAchievements"; 14 - repo = "RALibretro"; 15 - tag = finalAttrs.version; 16 - hash = "sha256-jcn8WhNCjr6gqjbkTlPUJVR7q5TOItAkpof2dX5kX4E="; 17 - fetchSubmodules = true; 18 - }; 19 - 20 - # 21 - postPatch = '' 22 - sed -i '6a #include <unistd.h>' \ 23 - ./src/libchdr/deps/zlib-1.3.1/gzlib.c \ 24 - ./src/libchdr/deps/zlib-1.3.1/gzread.c \ 25 - ./src/libchdr/deps/zlib-1.3.1/gzwrite.c 26 - ''; 27 - 28 - env = { 29 - HAVE_CHD = 1; 30 - }; 31 - 32 - buildPhase = '' 33 - runHook preBuild 34 - 35 - make -f ./Makefile.RAHasher 36 - 37 - runHook postBuild 38 - ''; 39 - 40 - installPhase = '' 41 - runHook preInstall 42 - 43 - mkdir -p $out/bin 44 - mv bin64/RAHasher $out/bin/RAHasher 45 - 46 - runHook postInstall 47 - ''; 48 - 49 - passthru = { 50 - inherit libchdr; 51 - }; 52 - 53 - meta = { 54 - changelog = "https://github.com/RetroAchievements/RALibretro/releases/tag/${finalAttrs.version}"; 55 - description = "CLI utility for verifying ROM checksums"; 56 - homepage = "https://github.com/RetroAchievements/RALibretro"; 57 - license = lib.licenses.gpl3Only; 58 - maintainers = with lib.maintainers; [ pyrox0 ]; 59 - mainProgram = "RAHasher"; 60 - platforms = lib.platforms.linux; 61 - }; 62 - })
-38
packages/romm/ruffle-web.nix
··· 1 - { 2 - lib, 3 - stdenvNoCC, 4 - fetchzip, 5 - ruffle, 6 - }: 7 - let 8 - dlVersion = "nightly-2025_12_07"; 9 - version = builtins.replaceStrings [ "_" ] [ "-" ] dlVersion; 10 - in 11 - stdenvNoCC.mkDerivation { 12 - pname = "ruffle-web"; 13 - inherit version; 14 - 15 - src = fetchzip { 16 - url = "https://github.com/ruffle-rs/ruffle/releases/download/${version}/ruffle-${dlVersion}-web-selfhosted.zip"; 17 - stripRoot = false; 18 - hash = "sha256-4E+uW3cui18ynhMs5WyV1gV8L5ZhmEJybH5zLhFleTo="; 19 - }; 20 - 21 - installPhase = '' 22 - runHook preInstall 23 - mkdir -p $out/lib/ruffle-web 24 - mv * $out/lib/ruffle-web 25 - runHook postInstall 26 - ''; 27 - 28 - meta = { 29 - inherit (ruffle.meta) 30 - description 31 - downloadPage 32 - homepage 33 - license 34 - longDescription 35 - ; 36 - maintainers = [ lib.maintainers.pyrox0 ]; 37 - }; 38 - }