Skip to content

Latest commit

 

History

336 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NixConfig

NixOS and nix-darwin system configurations using flake-parts and import-tree.

Architecture

Flake-parts modules

Every .nix file under modules/ and hosts/ is a flake-parts module, which defines NixOS and home-manager modules via flake.modules.nixos.<name> and flake.modules.homeManager.<name>.

Host configs

Host configs in hosts/ compose modules via imports. Hosts with the prefix hosts/nixos/ become nixosConfigurations, and hosts/darwin/ become darwinConfigurations. The prefix is stripped to form the config name (e.g., hosts/nixos/rwzfs becomes nixosConfigurations.rwzfs).

# hosts/nixos/rwzfs/default.nix
{
  config,
  ...
}:
{
  flake.modules.nixos."hosts/nixos/rwzfs" = {
    imports = with config.flake.modules.nixos; [
      base
      desktop
      # ...
    ];

    home-manager.users.myuser = {
      imports = with config.flake.modules.homeManager; [
        base
        desktop
        # ...
      ];
    };
  };
}

Directory structure

  • modules/: Reusable flake-parts modules (nixos + home-manager)
  • hosts/: Per-machine host configs that compose modules
  • tests/: NixOS tests and scripts

Secret Management and Provisioning

Secrets are fetched from 1Password with opnix.

Inspiration

About

Deterministic system configurations for Mac and Linux devices. 100% Nix (except for some scripts).

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages