mirror of
https://github.com/nextcloud/server.git
synced 2025-12-18 15:56:14 -05:00
chore: Add nix flake with development shell
Signed-off-by: provokateurin <kate@provokateurin.de>
This commit is contained in:
parent
4b62b5785e
commit
0c2cc0e9e1
6 changed files with 158 additions and 1 deletions
3
.envrc
Normal file
3
.envrc
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
watch_file lib/versioncheck.php
|
||||
watch_file package.json
|
||||
use flake
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -183,3 +183,5 @@ core/js/mimetypelist.js
|
|||
cypress/downloads
|
||||
cypress/snapshots
|
||||
cypress/videos
|
||||
|
||||
/.direnv
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
Normal file
61
flake.lock
Normal file
|
|
@ -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
Normal file
88
flake.nix
Normal file
|
|
@ -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…
Reference in a new issue