nix-config
nix-config copied to clipboard
My personal declarative macOS machine configuration
nix-config
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).
Rationale
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,nixpkgsand 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)
Bootstrap
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
Acknowledgments
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
License
nix-config is licensed under the MIT license, available at http://opensource.org/licenses/MIT and also in the LICENSE file.