https://github.com/myterminal/forge
Quickly create your daily-driver workstation setup from a simple-to-read configuration file
https://github.com/myterminal/forge
common-lisp sbcl workstation
Last synced: 10 months ago
JSON representation
Quickly create your daily-driver workstation setup from a simple-to-read configuration file
- Host: GitHub
- URL: https://github.com/myterminal/forge
- Owner: myTerminal
- License: mit
- Created: 2022-06-07T03:05:34.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-27T21:29:05.000Z (about 1 year ago)
- Last Synced: 2025-01-17T05:29:38.955Z (11 months ago)
- Topics: common-lisp, sbcl, workstation
- Language: Common Lisp
- Homepage:
- Size: 77.1 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# forge
[](https://lisp-lang.org)
[](https://opensource.org/licenses/MIT)
[](https://ko-fi.com/Y8Y5E5GL7)
Quickly create your daily-driver workstation setup from a simple-to-read configuration file
## What is *forge*?
*forge* tends to provide a way to quickly configure a Linux (or UNIX-like) setup by automating the process of setting up package repositories, installing software packages, creating users, and other steps involved in setting up a typical daily driver.
## History
This project takes birth from [one of my oldest projects](https://github.com/myTerminal/dotfiles) that I've used as a central repository to store not only my shared workstation configuration but also setup scripts for multiple operating systems, even further down to tweaks for specific computer hardware. I extracted all possible setup-related scripts into a re-usable program (just the way I did with my [.emacs.d](https://github.com/myTerminal/.emacs.d) so that it lives as a standalone and dedicated project to hold my Emacs configuration) and I hope to create *forge* as a re-usable setup tool driven with a minimal configuration file and the least number of external dependencies.
## Supported Platforms
- [Void](https://voidlinux.org) (TESTED)
- [Pop!_OS](https://pop.system76.com) (TESTED)
- [Arch](https://archlinux.org) (untested)
- [Fedora](https://getfedora.org) (untested)
- [Debian](https://www.debian.org) (untested)
- [macOS](https://www.apple.com/macos) (untested)
- more (untested)
## External Dependencies
Dependencies that are (mostly) installed automatically:
- [SBCL](http://www.sbcl.org)
Rest of the dependencies that are also needed:
- [MAKE](https://www.gnu.org/software/make)
## How to Use
*forge* can be used with your configuration file written in a Lisp-like format, specifying information about supported operating systems, software packages to be installed, and custom scripts to be executed in order to personalize the machine for one's own needs. *forge* can be started by executing [start](start) located at the root of the project and passing to it a run mode and a configuration file. Below is an example:
./start debug ~/.setup/forge-config.lisp
The above assumes that you are running the command at the root of the project directory cloned in a local workspace.
## Example(s)
Please refer to [the example config file](example/forge-config.lisp) for the basic layout or view [one that is being used](https://github.com/myTerminal/dotfiles/blob/master/.setup/forge-config.lisp) for a more detailed example.
## To-Do
- Fix execution of interactive scripts as setup steps