Skip to content
A collection of scripts & documentation for HorrificDev hosting.
Shell Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

  Usage: horrific [command] [options...]

  Where [command] is one of:
    ci    - index and update programs
    git   - run git operations
    make  - build programs

This ridiculous collection of bash scripts is used to manage the projects that run on HorrificDev servers, create CI workflow based on webhooks, and track resource usage.

Each repository should contain a HORRIFIC file, or a configuration file of similar function (#configurations). This is heavily inspired by the behavior of the PKGBUILD script used in Arch Linux, except for a few key differences:

  • The build runner is started as root (builds are run as a user process based on project variables)
  • "Builds" are applied to a single system, not distributed as packages
  • Addition of start/stop tasks to specify how to run the software.

This accomplishes two goals: providing an easy way to keep track of resource usage per-project/user, and making it possible to reproduce a production environment on a different machine. It offers the benefits of abstraction without the performance loss of full containerization.

This also makes it easy for other users to self-host such services (as the configuration and setup is clearly documented), and might enable practices such as Reproducible Builds to be implemented in the future.


This configuration file should be placed in /HORRIFIC or /config/HORRIFIC at the root of the repository.



function build() {
	# Build files in $DESTDIR
	# Call functions (build_nginx, build_service) for other functionality

function start() {
	# Start project services (start_service) / tasks

function stop() {
	# Stop project services (stop_service) / cleanup system

Alternate Configurations

"Default" configurations are provided for the following specifications, which should be at the root of the repository (and are detected in the following order):


Detected locations: /Dockerfile Config: presets/

You can’t perform that action at this time.