{ config, lib, pkgs, vars, ... }: let inherit (vars) username name locale hostname sshKeys; baseGroups = [ "users" "wheel" "audio" "video" "disk" "power" "adm" "plugdev" ]; rpiGroups = if config.hardware.raspberry-pi.enable then [ "i2c" "spi" ] else []; extraGroups = baseGroups ++ rpiGroups; basePackages = with pkgs; [home-manager]; wslPackages = if config.wsl.enable then with pkgs; [ wslu wsl-open ] else []; packages = basePackages ++ wslPackages; in { options = { hardware.raspberry-pi.enable = lib.mkEnableOption "raspberry pi features"; }; config = { users = { groups.${username} = {}; users = { ${username} = { inherit packages extraGroups; name = username; uid = 1000; isNormalUser = true; home = "/home/${username}"; description = name; group = config.users.groups.${username}.name; openssh.authorizedKeys.keys = sshKeys; shell = pkgs.zsh; }; }; }; }; }