Keystone

Self-sovereign infrastructure platform with secure, encrypted NixOS deployments


Project maintained by ncrmro Hosted on GitHub Pages — Theme by mattgraham

User Configuration

Basic Setup

keystone.users = {
  alice = {
    uid = 1000;
    fullName = "Alice Smith";
    extraGroups = [ "wheel" ];
    hashedPassword = "$6$...";  # mkpasswd -m sha-512
    zfsProperties = {
      quota = "500G";
      compression = "zstd";
    };
  };
};

Creates:

ZFS Integration

Datasets

Home directory backed by dedicated ZFS dataset at rpool/crypt/home/<username>.

Permissions

Users can:

Mount Limitation

Linux kernel restricts mounting to root. Use sudo for dataset creation and mounting:

# Create and mount child dataset (requires sudo)
sudo zfs create rpool/crypt/home/alice/documents

Snapshot Exclusion

Common datasets auto-created by Keystone modules (future):

Users rarely need to manually create ZFS child datasets - most common use cases are snapshots and backups.

Home Manager (Coming Soon)

Two Deployment Modes

System-wide (NixOS integration):

# In system configuration
keystone.users.alice.homeManager = {
  programs.helix.enable = true;
  # ... other home-manager config
};

Standalone (Rootless):

# In ~/.config/home-manager/home.nix
programs.helix.enable = true;

Use Cases

Replaces: stow, .dotfiles repos, manual config syncing

Enables:

Example: Engineer works on company macOS laptop, uses Codespaces for containerized work, and personal NixOS desktop - all with identical shell/editor configuration managed through home-manager.

References