Browse Source

chore: Add nix flake with development shell

Signed-off-by: provokateurin <kate@provokateurin.de>
pull/52891/head
provokateurin 5 months ago
parent
commit
0c2cc0e9e1
Failed to extract signature
  1. 3
      .envrc
  2. 2
      .gitignore
  3. 2
      .reuse/dep5
  4. 3
      build/files-checker.php
  5. 61
      flake.lock
  6. 88
      flake.nix

3
.envrc

@ -0,0 +1,3 @@
watch_file lib/versioncheck.php
watch_file package.json
use flake

2
.gitignore

@ -183,3 +183,5 @@ core/js/mimetypelist.js
cypress/downloads
cypress/snapshots
cypress/videos
/.direnv

2
.reuse/dep5

@ -351,6 +351,6 @@ Files: apps/theming/fonts/OpenDyslexic-Bold.otf apps/theming/fonts/OpenDyslexic-
Copyright: 2012-2019 Abbie Gonzalez <https://abbiecod.es|support@abbiecod.es>, with Reserved Font Name OpenDyslexic.
License: OFL-1.1-RFN
Files: openapi.json
Files: openapi.json .envrc flake.nix flake.lock
Copyright: 2025 Nextcloud GmbH and Nextcloud contributors
License: AGPL-3.0-or-later

3
build/files-checker.php

@ -11,6 +11,7 @@ $expectedFiles = [
'..',
'.devcontainer',
'.editorconfig',
'.envrc',
'.eslintignore',
'.eslintrc.js',
'.git',
@ -61,6 +62,8 @@ $expectedFiles = [
'cypress.d.ts',
'cypress',
'dist',
'flake.lock',
'flake.nix',
'index.html',
'index.php',
'lib',

61
flake.lock

@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1747428706,
"narHash": "sha256-XVds9FkRrY59xRNNq14FNsFGqDiexXX/mlHcX4hPyyk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "2e1496bf8652ff4af4e4d4737277f71e4a4f5cb2",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

88
flake.nix

@ -0,0 +1,88 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { nixpkgs, flake-utils, ... }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
lib = pkgs.lib;
in
{
devShells.default =
let
php_version = lib.strings.concatStrings (builtins.match ".*PHP_VERSION_ID < ([0-9])0([0-9])00.*" (builtins.readFile ./lib/versioncheck.php));
php = pkgs.pkgs."php${php_version}".buildEnv {
# Based off https://docs.nextcloud.com/server/latest/admin_manual/installation/php_configuration.html
extensions = ({ enabled, all }: enabled ++ (with all; [
# Required
ctype
curl
dom
fileinfo
filter
gd
mbstring
openssl
posix
session
simplexml
xmlreader
xmlwriter
zip
zlib
# Database connectors
pdo_sqlite
pdo_mysql
pdo_pgsql
# Recommended
intl
sodium
# Required for specific apps
ldap
smbclient
ftp
imap
# Recommended for specific apps (optional)
gmp
exif
# For enhanced server performance (optional)
apcu
memcached
redis
# For preview generation (optional)
imagick
# For command line processing (optional)
pcntl
# Debugging
xdebug
]));
extraConfig = ''
max_execution_time=300
memory_limit=-1
xdebug.mode=debug
'';
};
node_version = builtins.substring 1 (-1) (builtins.elemAt (lib.strings.splitString "." (builtins.fromJSON (builtins.readFile ./package.json)).engines.node) 0);
node = pkgs."nodejs_${node_version}";
in
pkgs.mkShell {
NOCOVERAGE = 1;
packages = [
php
php.packages.composer
node
# Preview generation
pkgs.ffmpeg
pkgs.libreoffice
];
};
}
);
}
Loading…
Cancel
Save