This project defines my declarative multi-machine configuration for NixOS and macOS. It is based nix and nix-darwin. It is based upon sub-modules for tracking dependencies (e.g. machine specific dot-files, secret files).
The main objective for this project is to have single machine configurations in addition to machine dependent configurations. The setup of new machine should be as easy as running a single script beyond creating access credentials to repositories.
The following requirements are met:
- Single script bootstrap process
- Shareable across machines
- Shareable across architectures
- Extensible for machine-specific and per-user specific configurations
- Follows a declarative programming model for the system configuration
- Explicit dependency management for
nix-darwin
,nixpkgs
and machine configurations - Integration of Emacs package management
The following requirements are missing:
- Pinning for dependencies
- Integration of dot-emacs configuration
- Integration of Applications management (e.g. jwiegley's apps overlay)
To bootstrap this project a new macOS machine, you have to run the following script only:
$ curl https://raw.githubusercontent.com/periklis/nix-config/master/bin/bootstrap | \
bash -s -- $USERNAME $MACHINE_NAME $TARGET_NIXPGS_BRANCH $ARCH
This in projects is inspired on the work of other giants in the open source community, thus i would like to thank:
- John Wiegley's inspiring nix-config
- Daiderd Jordan for the amazing nix-darwin
- Matthew Justin Bauer for the single script bootstrap idea in bauer
nix-config is licensed under the MIT license, available at http://opensource.org/licenses/MIT and also in the LICENSE file.