You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							88 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							88 lines
						
					
					
						
							2.5 KiB
						
					
					
				| { | |
|   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 | |
|             ]; | |
|           }; | |
|       } | |
|     ); | |
| }
 |