nix-config icon indicating copy to clipboard operation
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, nixpkgs and machine configurations
  • Integration of Emacs package management

The following requirements are missing:

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:

License

nix-config is licensed under the MIT license, available at http://opensource.org/licenses/MIT and also in the LICENSE file.