diff options
Diffstat (limited to 'flake.nix')
-rw-r--r-- | flake.nix | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000000..95cc8f9c87e --- /dev/null +++ b/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 + ]; + }; + } + ); +} |