Browse Source

new approach 2

master
Lucian Pricop 2 years ago
parent
commit
ecc06d911f
  1. 1
      .gitignore
  2. 6
      new/configuration.nix
  3. 2
      new/server.nix
  4. 13
      new2/.loco/bin/loco-apache-init
  5. 8
      new2/.loco/bin/loco-php-init
  6. 121
      new2/.loco/config/apache/conf/httpd.conf.loco.tpl
  7. 385
      new2/.loco/config/apache/conf/magic
  8. 1855
      new2/.loco/config/apache/conf/mime.types
  9. 18
      new2/.loco/config/php/php-fpm.conf.loco.tpl
  10. 16
      new2/.loco/config/php/php.ini.d/php.ini
  11. 9
      new2/.loco/config/php/php.ini.d/xdebug.ini.loco.tpl
  12. 1378
      new2/.loco/config/redis/redis.conf.loco.tpl
  13. 48
      new2/.loco/loco.yml
  14. 43
      new2/.loco/pkgs/php-exts/default.nix
  15. 128
      new2/default.nix
  16. 21
      new2/shell.nix
  17. 5
      pkgs/generate channel file.txt

1
.gitignore

@ -3,3 +3,4 @@
*.iml
out
gen
pkgs/generate channel file.txt

6
new/configuration.nix

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, sqlite, pkgs, ... }:
let
sourcePath = import ./sourcecode.nix { inherit pkgs; };
in
@ -19,9 +19,6 @@ in
services.nginx = {
enable = true;
adminAddr = "admin@searchanddisplace.com";
enablePHP = true;
phpPackage = myPhp;
virtualHosts."demo.searchanddisplace.com" = {
enableACME = true;
forceSSL = true;
@ -48,5 +45,4 @@ in
};
};
services.sqlite.enable = true;
}

2
new/server.nix

@ -1,5 +1,5 @@
let
nixos = import <nixpkgs/nixos> {
nixos = import <nixpkgs> {
configuration = import ./configuration.nix;
};
in

13
new2/.loco/bin/loco-apache-init

@ -0,0 +1,13 @@
#!/usr/bin/env bash
cp "$LOCO_SVC_CFG/conf/magic" "$LOCO_SVC_CFG/conf/mime.types" \
"$LOCO_SVC_VAR/conf/"
REALHTTPDIR=$(dirname $(dirname $(which httpd)))
mkdir -p "$LOCO_SVC_VAR" "$LOCO_SVC_VAR/logs" "$LOCO_SVC_VAR/conf" "$LOCO_SVC_VAR/htdocs"
if [ ! -f "$LOCO_SVC_VAR/htdocs/index.html" ]; then
echo "<html><body>Placeholder</body></html>" > "$LOCO_SVC_VAR/htdocs/index.html"
fi
for SUBDIR in bin cgi-bin error icons modules ;do
[ ! -e "$LOCO_SVC_VAR/$SUBDIR" ] && ln -s "$REALHTTPDIR/$SUBDIR" "$LOCO_SVC_VAR/$SUBDIR"
done

8
new2/.loco/bin/loco-php-init

@ -0,0 +1,8 @@
#!/usr/bin/env bash
mkdir -p $LOCO_SVC_VAR/php.ini.d
## The list of extension paths needs to generated via nix.
if which php-exts 2>/dev/null > /dev/null; then
php-exts > $LOCO_SVC_VAR/php.ini.d/extensions.ini
fi

121
new2/.loco/config/apache/conf/httpd.conf.loco.tpl

@ -0,0 +1,121 @@
ServerRoot "{{LOCO_SVC_VAR}}"
Listen {{HTTPD_PORT}}
PidFile {{LOCO_SVC_VAR}}/httpd.pid
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
<IfModule !mpm_prefork_module>
#LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
#LoadModule cgi_module modules/mod_cgi.so
</IfModule>
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule ssl_module modules/mod_ssl.so
# LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
ServerAdmin you@example.com
ServerName localhost:{{HTTPD_PORT}}
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "{{LOCO_SVC_VAR}}/htdocs"
<Directory "{{LOCO_SVC_VAR}}/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
<Files ".ht*">
Require all denied
</Files>
ErrorLog "|/bin/cat"
LogLevel info
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
CustomLog "|/bin/cat" common
</IfModule>
<IfModule headers_module>
RequestHeader unset Proxy early
</IfModule>
<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
<VirtualHost *:{{HTTPD_PORT}}>
ServerAdmin webmaster@{{HTTPD_DOMAIN}}
ServerName {{HTTPD_DOMAIN}}
UseCanonicalName Off
DocumentRoot "{{HTTPD_ROOT}}"
<Directory "{{HTTPD_ROOT}}">
Options All
AllowOverride All
<IfModule mod_authz_host.c>
Require all granted
</IfModule>
</Directory>
## Added for php-fpm
# ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://{{LOCALHOST}}:{{PHPFPM_PORT}}/<?php echo $root ?>/$1
DirectoryIndex index.html index.php
<FilesMatch \.php$>
# SetHandler "proxy:fcgi://{{LOCALHOST}}:{{PHPFPM_PORT}}#"
# SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost"
SetHandler "proxy:fcgi://{{LOCALHOST}}:{{PHPFPM_PORT}}"
</FilesMatch>
</VirtualHost>
# IncludeOptional %%BKNIXDIR%%/var/amp/apache.d/*.conf

385
new2/.loco/config/apache/conf/magic

@ -0,0 +1,385 @@
# Magic data for mod_mime_magic Apache module (originally for file(1) command)
# The module is described in /manual/mod/mod_mime_magic.html
#
# The format is 4-5 columns:
# Column #1: byte number to begin checking from, ">" indicates continuation
# Column #2: type of data to match
# Column #3: contents of data to match
# Column #4: MIME type of result
# Column #5: MIME encoding of result (optional)
#------------------------------------------------------------------------------
# Localstuff: file(1) magic for locally observed files
# Add any locally observed files here.
#------------------------------------------------------------------------------
# end local stuff
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
# Java
0 short 0xcafe
>2 short 0xbabe application/java
#------------------------------------------------------------------------------
# audio: file(1) magic for sound formats
#
# from Jan Nicolai Langfeldt <janl@ifi.uio.no>,
#
# Sun/NeXT audio data
0 string .snd
>12 belong 1 audio/basic
>12 belong 2 audio/basic
>12 belong 3 audio/basic
>12 belong 4 audio/basic
>12 belong 5 audio/basic
>12 belong 6 audio/basic
>12 belong 7 audio/basic
>12 belong 23 audio/x-adpcm
# DEC systems (e.g. DECstation 5000) use a variant of the Sun/NeXT format
# that uses little-endian encoding and has a different magic number
# (0x0064732E in little-endian encoding).
0 lelong 0x0064732E
>12 lelong 1 audio/x-dec-basic
>12 lelong 2 audio/x-dec-basic
>12 lelong 3 audio/x-dec-basic
>12 lelong 4 audio/x-dec-basic
>12 lelong 5 audio/x-dec-basic
>12 lelong 6 audio/x-dec-basic
>12 lelong 7 audio/x-dec-basic
# compressed (G.721 ADPCM)
>12 lelong 23 audio/x-dec-adpcm
# Bytes 0-3 of AIFF, AIFF-C, & 8SVX audio files are "FORM"
# AIFF audio data
8 string AIFF audio/x-aiff
# AIFF-C audio data
8 string AIFC audio/x-aiff
# IFF/8SVX audio data
8 string 8SVX audio/x-aiff
# Creative Labs AUDIO stuff
# Standard MIDI data
0 string MThd audio/unknown
#>9 byte >0 (format %d)
#>11 byte >1 using %d channels
# Creative Music (CMF) data
0 string CTMF audio/unknown
# SoundBlaster instrument data
0 string SBI audio/unknown
# Creative Labs voice data
0 string Creative\ Voice\ File audio/unknown
## is this next line right? it came this way...
#>19 byte 0x1A
#>23 byte >0 - version %d
#>22 byte >0 \b.%d
# [GRR 950115: is this also Creative Labs? Guessing that first line
# should be string instead of unknown-endian long...]
#0 long 0x4e54524b MultiTrack sound data
#0 string NTRK MultiTrack sound data
#>4 long x - version %ld
# Microsoft WAVE format (*.wav)
# [GRR 950115: probably all of the shorts and longs should be leshort/lelong]
# Microsoft RIFF
0 string RIFF audio/unknown
# - WAVE format
>8 string WAVE audio/x-wav
# MPEG audio.
0 beshort&0xfff0 0xfff0 audio/mpeg
# C64 SID Music files, from Linus Walleij <triad@df.lth.se>
0 string PSID audio/prs.sid
#------------------------------------------------------------------------------
# c-lang: file(1) magic for C programs or various scripts
#
# XPM icons (Greg Roelofs, newt@uchicago.edu)
# ideally should go into "images", but entries below would tag XPM as C source
0 string /*\ XPM image/x-xbm 7bit
# this first will upset you if you're a PL/1 shop... (are there any left?)
# in which case rm it; ascmagic will catch real C programs
# C or REXX program text
0 string /* text/plain
# C++ program text
0 string // text/plain
#------------------------------------------------------------------------------
# compress: file(1) magic for pure-compression formats (no archives)
#
# compress, gzip, pack, compact, huf, squeeze, crunch, freeze, yabba, whap, etc.
#
# Formats for various forms of compressed data
# Formats for "compress" proper have been moved into "compress.c",
# because it tries to uncompress it to figure out what's inside.
# standard unix compress
0 string \037\235 application/octet-stream x-compress
# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
0 string \037\213 application/octet-stream x-gzip
# According to gzip.h, this is the correct byte order for packed data.
0 string \037\036 application/octet-stream
#
# This magic number is byte-order-independent.
#
0 short 017437 application/octet-stream
# XXX - why *two* entries for "compacted data", one of which is
# byte-order independent, and one of which is byte-order dependent?
#
# compacted data
0 short 0x1fff application/octet-stream
0 string \377\037 application/octet-stream
# huf output
0 short 0145405 application/octet-stream
# Squeeze and Crunch...
# These numbers were gleaned from the Unix versions of the programs to
# handle these formats. Note that I can only uncrunch, not crunch, and
# I didn't have a crunched file handy, so the crunch number is untested.
# Keith Waclena <keith@cerberus.uchicago.edu>
#0 leshort 0x76FF squeezed data (CP/M, DOS)
#0 leshort 0x76FE crunched data (CP/M, DOS)
# Freeze
#0 string \037\237 Frozen file 2.1
#0 string \037\236 Frozen file 1.0 (or gzip 0.5)
# lzh?
#0 string \037\240 LZH compressed data
#------------------------------------------------------------------------------
# frame: file(1) magic for FrameMaker files
#
# This stuff came on a FrameMaker demo tape, most of which is
# copyright, but this file is "published" as witness the following:
#
0 string \<MakerFile application/x-frame
0 string \<MIFFile application/x-frame
0 string \<MakerDictionary application/x-frame
0 string \<MakerScreenFon application/x-frame
0 string \<MML application/x-frame
0 string \<Book application/x-frame
0 string \<Maker application/x-frame
#------------------------------------------------------------------------------
# html: file(1) magic for HTML (HyperText Markup Language) docs
#
# from Daniel Quinlan <quinlan@yggdrasil.com>
# and Anna Shergold <anna@inext.co.uk>
#
0 string \<!DOCTYPE\ HTML text/html
0 string \<!doctype\ html text/html
0 string \<HEAD text/html
0 string \<head text/html
0 string \<TITLE text/html
0 string \<title text/html
0 string \<html text/html
0 string \<HTML text/html
0 string \<!-- text/html
0 string \<h1 text/html
0 string \<H1 text/html
# XML eXtensible Markup Language, from Linus Walleij <triad@df.lth.se>
0 string \<?xml text/xml
#------------------------------------------------------------------------------
# images: file(1) magic for image formats (see also "c-lang" for XPM bitmaps)
#
# originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
# additions by janl@ifi.uio.no as well as others. Jan also suggested
# merging several one- and two-line files into here.
#
# XXX - byte order for GIF and TIFF fields?
# [GRR: TIFF allows both byte orders; GIF is probably little-endian]
#
# [GRR: what the hell is this doing in here?]
#0 string xbtoa btoa'd file
# PBMPLUS
# PBM file
0 string P1 image/x-portable-bitmap 7bit
# PGM file
0 string P2 image/x-portable-greymap 7bit
# PPM file
0 string P3 image/x-portable-pixmap 7bit
# PBM "rawbits" file
0 string P4 image/x-portable-bitmap
# PGM "rawbits" file
0 string P5 image/x-portable-greymap
# PPM "rawbits" file
0 string P6 image/x-portable-pixmap
# NIFF (Navy Interchange File Format, a modification of TIFF)
# [GRR: this *must* go before TIFF]
0 string IIN1 image/x-niff
# TIFF and friends
# TIFF file, big-endian
0 string MM image/tiff
# TIFF file, little-endian
0 string II image/tiff
# possible GIF replacements; none yet released!
# (Greg Roelofs, newt@uchicago.edu)
#
# GRR 950115: this was mine ("Zip GIF"):
# ZIF image (GIF+deflate alpha)
0 string GIF94z image/unknown
#
# GRR 950115: this is Jeremy Wohl's Free Graphics Format (better):
# FGF image (GIF+deflate beta)
0 string FGF95a image/unknown
#
# GRR 950115: this is Thomas Boutell's Portable Bitmap Format proposal
# (best; not yet implemented):
# PBF image (deflate compression)
0 string PBF image/unknown
# GIF
0 string GIF image/gif
# JPEG images
0 beshort 0xffd8 image/jpeg
# PC bitmaps (OS/2, Windoze BMP files) (Greg Roelofs, newt@uchicago.edu)
0 string BM image/bmp
#>14 byte 12 (OS/2 1.x format)
#>14 byte 64 (OS/2 2.x format)
#>14 byte 40 (Windows 3.x format)
#0 string IC icon
#0 string PI pointer
#0 string CI color icon
#0 string CP color pointer
#0 string BA bitmap array
0 string \x89PNG image/png
0 string FWS application/x-shockwave-flash
0 string CWS application/x-shockwave-flash
#------------------------------------------------------------------------------
# lisp: file(1) magic for lisp programs
#
# various lisp types, from Daniel Quinlan (quinlan@yggdrasil.com)
0 string ;; text/plain 8bit
# Emacs 18 - this is always correct, but not very magical.
0 string \012( application/x-elc
# Emacs 19
0 string ;ELC\023\000\000\000 application/x-elc
#------------------------------------------------------------------------------
# mail.news: file(1) magic for mail and news
#
# There are tests to ascmagic.c to cope with mail and news.
0 string Relay-Version: message/rfc822 7bit
0 string #!\ rnews message/rfc822 7bit
0 string N#!\ rnews message/rfc822 7bit
0 string Forward\ to message/rfc822 7bit
0 string Pipe\ to message/rfc822 7bit
0 string Return-Path: message/rfc822 7bit
0 string Path: message/news 8bit
0 string Xref: message/news 8bit
0 string From: message/rfc822 7bit
0 string Article message/news 8bit
#------------------------------------------------------------------------------
# msword: file(1) magic for MS Word files
#
# Contributor claims:
# Reversed-engineered MS Word magic numbers
#
0 string \376\067\0\043 application/msword
0 string \333\245-\0\0\0 application/msword
# disable this one because it applies also to other
# Office/OLE documents for which msword is not correct. See PR#2608.
#0 string \320\317\021\340\241\261 application/msword
#------------------------------------------------------------------------------
# printer: file(1) magic for printer-formatted files
#
# PostScript
0 string %! application/postscript
0 string \004%! application/postscript
# Acrobat
# (due to clamen@cs.cmu.edu)
0 string %PDF- application/pdf
#------------------------------------------------------------------------------
# sc: file(1) magic for "sc" spreadsheet
#
38 string Spreadsheet application/x-sc
#------------------------------------------------------------------------------
# tex: file(1) magic for TeX files
#
# XXX - needs byte-endian stuff (big-endian and little-endian DVI?)
#
# From <conklin@talisman.kaleida.com>
# Although we may know the offset of certain text fields in TeX DVI
# and font files, we can't use them reliably because they are not
# zero terminated. [but we do anyway, christos]
0 string \367\002 application/x-dvi
#0 string \367\203 TeX generic font data
#0 string \367\131 TeX packed font data
#0 string \367\312 TeX virtual font data
#0 string This\ is\ TeX, TeX transcript text
#0 string This\ is\ METAFONT, METAFONT transcript text
# There is no way to detect TeX Font Metric (*.tfm) files without
# breaking them apart and reading the data. The following patterns
# match most *.tfm files generated by METAFONT or afm2tfm.
#2 string \000\021 TeX font metric data
#2 string \000\022 TeX font metric data
#>34 string >\0 (%s)
# Texinfo and GNU Info, from Daniel Quinlan (quinlan@yggdrasil.com)
#0 string \\input\ texinfo Texinfo source text
#0 string This\ is\ Info\ file GNU Info text
# correct TeX magic for Linux (and maybe more)
# from Peter Tobias (tobias@server.et-inf.fho-emden.de)
#
0 leshort 0x02f7 application/x-dvi
# RTF - Rich Text Format
0 string {\\rtf application/rtf
#------------------------------------------------------------------------------
# animation: file(1) magic for animation/movie formats
#
# animation formats, originally from vax@ccwf.cc.utexas.edu (VaX#n8)
# MPEG file
0 string \000\000\001\263 video/mpeg
#
# The contributor claims:
# I couldn't find a real magic number for these, however, this
# -appears- to work. Note that it might catch other files, too,
# so BE CAREFUL!
#
# Note that title and author appear in the two 20-byte chunks
# at decimal offsets 2 and 22, respectively, but they are XOR'ed with
# 255 (hex FF)! DL format SUCKS BIG ROCKS.
#
# DL file version 1 , medium format (160x100, 4 images/screen)
0 byte 1 video/unknown
0 byte 2 video/unknown
# Quicktime video, from Linus Walleij <triad@df.lth.se>
# from Apple quicktime file format documentation.
4 string moov video/quicktime
4 string mdat video/quicktime

1855
new2/.loco/config/apache/conf/mime.types
File diff suppressed because it is too large
View File

18
new2/.loco/config/php/php-fpm.conf.loco.tpl

@ -0,0 +1,18 @@
[global]
pid = {{LOCO_SVC_VAR}}/php-fpm.pid
error_log = {{LOCO_SVC_VAR}}/php-fpm.log
; include=/etc/php5/fpm/pool.d/*.conf
daemonize = no
[www]
; user = www-data
; group = www-data
listen = {{LOCALHOST}}:{{PHPFPM_PORT}}
; listen.owner = www-data
; listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /

16
new2/.loco/config/php/php.ini.d/php.ini

@ -0,0 +1,16 @@
;; Note: After changing, you should reinitialize+restart PHP.
; date.timezone = America/Los_Angeles
date.timezone = Europe/London
max_execution_time = 0
memory_limit = 256M
; Some test suites depend on $_ENV
variables_order=EGPCS
; By default, disable outbound mail
sendmail_path = "/usr/bin/env true"
; Display nicely formatted errors
display_errors = 1

9
new2/.loco/config/php/php.ini.d/xdebug.ini.loco.tpl

@ -0,0 +1,9 @@
;; Configure XDebug
;; Note: After changing, you should reinitialize+restart PHP.
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_mode=req
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port={{XDEBUG_PORT}}

1378
new2/.loco/config/redis/redis.conf.loco.tpl
File diff suppressed because it is too large
View File

48
new2/.loco/loco.yml

@ -0,0 +1,48 @@
format: 'loco-0.1'
## The following are *default* values for important environment variables.
## They are ignored if you have already set them elsewhere.
default_environment:
- HTTPD_DOMAIN=localhost
- HTTPD_PORT=8000
- HTTPD_ROOT=$LOCO_PRJ/web
- LOCALHOST=127.0.0.1
- MYSQL_PORT=3306
- PHPFPM_PORT=9000
- REDIS_PORT=6379
- XDEBUG_PORT=9000
- RAMDISK_SIZE=300
## The following are *mandatory* values for important environment variables.
## They will override any other values you might have set.
environment:
- PHP_INI_SCAN_DIR=$LOCO_VAR/php/php.ini.d:$LOCO_PRJ/.loco/config/php/php.ini.d
- MYSQL_HOME=$LOCO_VAR/mysql/conf
## All service data will be stored in a ramdisk.
## If you prefer to use a physical disk, comment out this section.
volume:
init: 'ramdisk start "$LOCO_VAR" "$RAMDISK_SIZE"'
cleanup: 'ramdisk stop "$LOCO_VAR"'
message: 'Loco data volume is a ram disk at "<comment>$LOCO_VAR</comment>".'
## The "services" are the programs we wish to run.
services:
redis:
run: 'redis-server --port "$REDIS_PORT" --bind "$LOCALHOST" --pidfile "$LOCO_SVC_VAR/redis.pid" --dir "$LOCO_SVC_VAR"'
pid_file: '$LOCO_SVC_VAR/redis.pid'
message: 'Redis is running on "<comment>$LOCALHOST:$REDIS_PORT</comment>".'
php:
init: 'loco-php-init'
run: 'php-fpm -y "$LOCO_SVC_VAR/php-fpm.conf"'
pid_file: '$LOCO_SVC_VAR/php-fpm.pid'
message: 'PHP-FPM is running on "<comment>$LOCALHOST:$PHPFPM_PORT</comment>" with config files in "<comment>$LOCO_SVC_VAR/php.ini.d</comment>" and "<comment>$LOCO_SVC_CFG/php.ini.d</comment>".'
apache:
depends: [php]
init: 'loco-apache-init'
run: 'apachectl -d "$LOCO_SVC_VAR" -DFOREGROUND'
pid_file: '$LOCO_SVC_VAR/httpd.pid'
message: 'Apache HTTPD is running at "<comment>http://$LOCALHOST:$HTTPD_PORT</comment>" with content from "<comment>$HTTPD_ROOT</comment>".'

43
new2/.loco/pkgs/php-exts/default.nix

@ -0,0 +1,43 @@
{pkgs ? import <nixpkgs> {
inherit system;
},
system ? builtins.currentSystem,
noDev ? false,
stdExts ? [],
zendExts ? []
}:
let
stdenv = pkgs.stdenv;
stdExtConcat = builtins.concatStringsSep " " stdExts;
zendExtConcat = builtins.concatStringsSep " " zendExts;
in stdenv.mkDerivation rec {
phpExtScript = ''
#!/usr/bin/env bash
echo '; This file has been auto-generated by php-exts/default.nix'
for d in ${zendExtConcat} ; do
for f in $d/lib/php/extensions/*.so ; do
echo "zend_extension=$f"
done
done
for d in ${stdExtConcat} ; do
for f in $d/lib/php/extensions/*.so ; do
echo "extension=$f"
done
done
'';
name = "php-exts";
buildInputs = zendExts ++ stdExts;
buildCommand = ''
mkdir -p $out/bin
echo "$phpExtScript" > $out/bin/php-exts
chmod +x $out/bin/php-exts
'';
}

128
new2/default.nix

@ -0,0 +1,128 @@
## locolamp: Download a collection of binaries for use in "LAMP"-style development
## (Apache, PHP, NodeJS, etc). Binaries are downloaded from nixpkgs.
##
## This file is generally organized into sections:
## 1. Import a list of available software packages.
## 2. Pick a list of specific packages.
{
system ? builtins.currentSystem,
}:
################################################################################
## Import a list of available software packages.
##
## Observe: The list of available software comes from Github (`https://github.com/OWNER/PROJECT/archive/REF.tar.gz`).
## The Github URLs can be changed to reference:
##
## - Branches
## - Tags or commits
## - Unofficial forks (different owners/projects)
##
## Referencing a branch means that `nix-shell` will (from time to time) automatically get
## newer versions of the packages. Referencing a tag or commit means that
## the exact versions of the software will be locked.
let
####
## Import the standard package repository (nixpkgs v18.09). Assign it the name "pkgs".
##
## Observe: The name "pkgs" follows a coding-convention, but it's just a
## local variable. We could call it anything (as long as we're consistent
## about it below).
##
## Observe: The notation `import (...url...) {...options...}` accepts a list of options.
## This can be useful if you need custom compilation options for some packages.
pkgs = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.09.tar.gz) {
inherit system;
};
####
## Import an older version of the standard package repository (nixpkgs v18.03). Assign it the name "oldPkgs".
##
## Observe: PHP 5.6 and PHP 7.0 are no longer distributed in nixpkgs
## v18.09+. But you can still get them from nixpkgs v18.03.
##
## Observe: This is not commonly done in the official "nixpkgs", but it's
## handy if you need to mix+match different versions.
##
## Observe: Older builds used libmysqlclient instead of mysqlnd. That can
## be problematic with, e.g., Drush+Drupal 8. So we set some custom build
## options.
oldPkgs = import (fetchTarball https://github.com/NixOS/nixpkgs-channels/archive/nixos-18.03.tar.gz) {
inherit system;
config = {
php = {
mysqlnd = false;
};
};
};
####
## Import some specific packages that are not available in nixpkgs.
## "callPackage" is a common helper/convention that makes it easier to get other packages.
callPackage = path: overrides:
let f = import path;
in f ((builtins.intersectAttrs (builtins.functionArgs f) pkgs) // overrides);
## By default, we download a specific version of loco. But if you had a
## local codebase for development purposes, you could use that instead.
loco = callPackage (fetchTarball https://github.com/totten/loco/archive/v0.2.1.tar.gz) {};
# loco = callPackage /home/myuser/src/loco { inherit pkgs; };
ramdisk = callPackage (fetchTarball https://github.com/totten/ramdisk/archive/5c699fbeb8ce3d8f3862a726e1e2684067b237dd.tar.gz) {};
## Generating php.ini requires some special work.
phpExtLoader = extSpec: (callPackage ./.loco/pkgs/php-exts/default.nix ({ inherit pkgs; } // extSpec));
################################################################################
## Now, we have a list of available software packages.
## Let's define the "locolamp" project and include some specific dependencies.
in [
## Major services / runtimes
ramdisk
pkgs.apacheHttpd /* ... or pkgs.nginx ... */
## pkgs.mariadb /* ... or pkgs.mysql57, pkgs.mysql55 ... */
pkgs.nodejs-10_x /* ... or pkgs.nodejs-8_x, pkgs.nodes-6_x ... */
pkgs.redis /* ... or pkgs.memcached ... */
pkgs.php74 /* ... or pkgs.php71, oldPkgs.php70, oldPkgs.php56 ... */
(phpExtLoader {
zendExts = [
##pkgs.php74Packages.xdebug
];
stdExts = [
pkgs.php74Packages.redis
## pkgs.php74Packages.imagick
];
})
# pkgs.mailcatcher
## CLI utilities
loco
pkgs.bzip2
pkgs.curl
pkgs.git
##pkgs.gnutar
pkgs.hostname
##pkgs.ncurses
pkgs.patch
pkgs.php74Packages.composer
##pkgs.rsync
##pkgs.unzip
pkgs.which
pkgs.zip
## Aside: Downloading a different version of PHP or MySQL or NodeJS is
## simple, but bear in mind: this is upgrading (or downgrading). You
## may need to change configuration files to match. Most services are
## pretty good about forward-compatibility, but some (*ahem*MySQL*MariaDB*)
## may give errors and require edits to the configuration.
]

21
new2/shell.nix

@ -0,0 +1,21 @@
## Based on locolamp https://github.com/totten/locolamp
{
pkgs ? import <nixpkgs> {
inherit system;
},
system ? builtins.currentSystem,
}:
pkgs.stdenv.mkDerivation rec {
name = "searchanddisplace-core";
buildInputs = import ./default.nix { inherit system; };
## When starting `nix-shell`, load all the project-wide config variables from `loco.yml`.
## This ensures that, e.g., the `mysql` and `mysqldump` commands have the right `MYSQL_HOME`.
shellHook = ''
eval $(loco env --export)
'';
}

5
pkgs/generate channel file.txt

@ -1,5 +0,0 @@
# run this after any update of sandd.nix
tar -cJf nixexprs.tar.xz ./pkgs/*.nix \
--transform "s,^,${PWD##*/}/," \
--owner=0 --group=0 --mtime="1970-01-01 00:00:00 UTC"
Loading…
Cancel
Save