Skip to content
1npoPublic

About

The tool I use to provision new Debian systems on my network and keep their user configurations synchronized.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

169 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

encamp

The tool I use to provision new Debian systems on my network and keep their user configurations synchronized.

This is a personal project - read the contents before running these scripts on your machine.

Contents

Installation

Run the bootstrap script on the target machine:

wget -qO- https://raw.githubusercontent.com/1npo/encamp/main/install.sh | bash

This clones the repository to ~/.local/share/encamp and adds encamp and encamp-sync to ~/.local/bin as symlinks.

Usage

encamp

encamp <target> [module]

Targets define the machine type:

Target Description
base Common baseline for all machines
desktop Machines with a graphical desktop environment
headless-workstation Machines serving as workstations without a GUI
lan-services Machines providing network services to the LAN
iot-node Machines that are embedded or small IoT devices

Modules select what to install:

Module Description
all Installs everything (default)
packages Installs applications (via curl or a package manager)
config-user Installs user configurations (via stow)
config-system Installs system configuration (per hostname)
services Enables systemd user and system services

Examples

Set up a fresh desktop machine:

encamp base all
encamp desktop all

Install desktop-specific packages only:

encamp desktop packages

Apply desktop-specific user configurations only:

encamp desktop config-user

encamp-sync

Synchronizes user configurations with the git remote.

encamp-sync <command> [message]
Command Description
pull Pull latest changes from the remote and re-stow configurations
push <message> Commit local configuration changes and push them to the remote

Examples

encamp-sync pull
encamp-sync push "updated zsh config"

Documentation

Project Documentation

See docs/ for reference materials to help you understand and maintain this project.

Document Description
Architecture How encamp is structured and how its components work together
Configs How user and system configurations are organized and managed
Adding a new machine A checklist for onboarding a new host

Guides

See docs/guides/ for instructions on how to perform some manual setups.

LLM Usage Disclosure

The tasks listed below were performed by or with the aid of a LLM (Claude Sonnet 4.6, Claude Code):

  • Writing the first draft of this README.md
  • Writing the first drafts of the project documentation
  • Troubleshooting errors
  • Writing the test suite
  • Writing docs/developers.md
  • Suggesting and implementing various best practice changes:
    • Reorganizing the project layout to reduce complexity and number of files needed
    • Implementing the following code using the conventions and style used in other modules:
      • scripts/lib/install_services.sh
      • scripts/lib/install_configs.sh
      • scripts/sync.sh
      • install.sh
      • The following functions in scripts/lib/install_app.sh:
        • install_obsidian
        • install_proton_bridge
      • The method used in the header of all scripts to safely import the library scripts
      • The run_step function in scripts/lib/utils.sh

About

The tool I use to provision new Debian systems on my network and keep their user configurations synchronized.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages