Skip to content

Latest commit

 

History

History
77 lines (52 loc) · 2.24 KB

File metadata and controls

77 lines (52 loc) · 2.24 KB

Build Scripts

This directory contains build scripts that run during image creation. Scripts are executed in numerical order.

How It Works

Scripts are named with a number prefix (e.g., 10-build.sh, 20-onepassword.sh) and run in ascending order during the container build process.

Included Scripts

  • 10-build.sh - Main build script for base system modifications, package installation, and service configuration

Example Scripts

  • 20-onepassword.sh.example - Example showing how to install software from third-party RPM repositories (Google Chrome, 1Password)

To use an example script:

  1. Remove the .example extension
  2. Make it executable: chmod +x build/20-yourscript.sh
  3. The build system will automatically run it in numerical order

Creating Your Own Scripts

Create numbered scripts for different purposes:

# 10-build.sh - Base system (already exists)
# 20-drivers.sh - Hardware drivers  
# 30-development.sh - Development tools
# 40-gaming.sh - Gaming software
# 50-cleanup.sh - Final cleanup tasks

Script Template

#!/usr/bin/env bash
set -oue pipefail

echo "Running custom setup..."
# Your commands here

Best Practices

  • Use descriptive names: 20-nvidia-drivers.sh is better than 20-stuff.sh
  • One purpose per script: Easier to debug and maintain
  • Clean up after yourself: Remove temporary files and disable temporary repos
  • Test incrementally: Add one script at a time and test builds
  • Comment your code: Future you will thank present you

Disabling Scripts

To temporarily disable a script without deleting it:

  • Rename it with .disabled extension: 20-script.sh.disabled
  • Or remove execute permission: chmod -x build/20-script.sh

Execution Order

The Containerfile runs scripts like this:

RUN /ctx/build/10-build.sh

If you want to run multiple scripts, you can:

  1. Modify Containerfile to run each script explicitly
  2. Create a runner script that executes all numbered scripts
  3. Use the default and keep everything in 10-build.sh (simplest)

Notes

  • Scripts run as root during build
  • Build context is available at /ctx
  • Use dnf5 for package management (not dnf or yum)
  • Always use -y flag for non-interactive installs