This commit is contained in:
Oliver Davies 2023-04-06 14:07:08 +01:00
parent 63bf55b978
commit 8b18e05fbc
25 changed files with 1042 additions and 1 deletions

View file

@ -0,0 +1,12 @@
FROM php:{{ php.version }} AS base
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
RUN which composer && composer -V
ARG DOCKER_UID=1000
ENV DOCKER_UID="${DOCKER_UID}"
WORKDIR {{ project_root }}
RUN adduser --disabled-password --uid "${DOCKER_UID}" app \
&& chown app:app -R {{ project_root }}

View file

@ -0,0 +1,13 @@
alias cp="cp -v"
alias mv="mv -v"
alias rm="rm -v"
alias g="git"
alias gs="git status"
alias dk="docker"
alias dkp="docker ps"
alias dkc="docker compose"
alias dkcu="docker compose up"
alias docker-composer="docker-compose"

View file

@ -0,0 +1,46 @@
name: docker-example-drupal
language: php
type: drupal-project
web:
type: nginx
database:
type: mariadb
version: 10
php:
version: 8.1-fpm-bullseye
phpcs:
standard: Drupal,DrupalPractice
phpstan:
level: max
drupal:
docroot: web
docker-compose:
services:
database: ~
php:
build:
target: build
dockerfile:
stages:
build:
extends: base
packages:
- git
- libpng-dev
- libzip-dev
- mariadb-client
- unzip
extensions:
install:
- gd
- pdo_mysql
- zip
commands:
- composer validate --strict
- composer install

View file

@ -0,0 +1,26 @@
{ config, pkgs, ... }:
{
imports = [ ./hardware-configuration.nix ];
nix.settings.experimental-features = [ "nix-command" "flakes" ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "nixedo";
networking.networkmanager.enable = true;
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
users.users.opdavies = {
isNormalUser = true;
description = "Oliver Davies";
extraGroups = [ "docker" "networkmanager" "wheel" ];
packages = with pkgs; [ firefox ];
};

View file

@ -0,0 +1,15 @@
{% if "php" == language %}
php:
<<: *default-app
build:
context: .
target: build
args:
- "DOCKER_UID=${DOCKER_UID:-1000}"
volumes:
- .:{{ project_root }}
{% if "database" in dockerCompose.services|keys -%}
depends_on:
- database
{% endif -%}
profiles: [php]

View file

@ -0,0 +1,19 @@
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.devshell.url = "github:numtide/devshell";
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ inputs.devshell.flakeModule ];
systems = [ "x86_64-linux" ];
perSystem = { config, self', inputs', pkgs, system, ... }: {
devshells.default = {
packages = with pkgs; [ php82 php82Packages.composer ];
};
};
flake = { };
};
}

View file

@ -0,0 +1,27 @@
programs.git = {
enable = true;
userName = "Oliver Davies";
userEmail = "oliver@oliverdavies.uk";
aliases = {
aa = "add --all";
assume = "update-index --assume-unchanged";
assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-";
b = "branch";
# ...
};
extraConfig = {
branch = {
autosetupmerge = true;
autosetuprebase = "always";
};
checkout.defaultRemote = "origin";
color.ui = true;
commit = {
template = "~/.gitmessage";
};
core = {
editor = "nvim";
excludesFile = "~/.gitignore-global";
pager = "delta";
};

View file

@ -0,0 +1,15 @@
[alias]
aa = "add --all"
assume = "update-index --assume-unchanged"
assumed = "!git ls-files -v | grep '^[hsmrck?]' | cut -c 3-"
b = "branch"
browse = "!gh repo view --web"
ca = "commit --amend --verbose"
car = "commit --amend --no-edit"
[branch]
autosetupmerge = true
autosetuprebase = "always"
[checkout]
defaultRemote = "origin"

View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules =
[ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.kernelParams = [ "i8042.reset" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/7c6d69ec-ba06-4ddb-b9c4-62b3994fda91";
fsType = "ext4";
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/B729-9A75";
fsType = "vfat";
};
swapDevices =
[{ device = "/dev/disk/by-uuid/5db0a0e6-93fb-4d0b-8fb0-fdb3cb76b89d"; }];

View file

@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
home.username = "opdavies";
home.homeDirectory = "/home/opdavies";
home.packages = with pkgs; [
php82
php82Packages.composer
];
};

View file

@ -0,0 +1,12 @@
{% if "php" is same as language %}
composer *args:
{{ "just _exec php composer {{ args }}" | raw }}
{% if "drupal-project" is same as type %}
drush *args:
{{ "just _exec php drush {{ args }}" | raw }}
install *args:
{{ "just _exec php drush site:install -y {{ args }}" | raw }}
{% endif %}
{% endif %}