Introduce a "user" module that can be interpolated everywhere.

Signed-off-by: Mariano Uvalle <juvallegarza@microsoft.com>
This commit is contained in:
Mariano Uvalle 2025-08-07 15:33:00 -07:00
parent c6aad094b0
commit 4c8cd258c1
5 changed files with 60 additions and 20 deletions

View file

@ -159,14 +159,15 @@
modules = [ modules = [
./hosts/msft-mac/configuration.nix ./hosts/msft-mac/configuration.nix
home-manager.darwinModules.home-manager home-manager.darwinModules.home-manager
{ ({ config, ... }: {
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
pkgs-unstable = pkgs-unstable_aarch64-darwin; pkgs-unstable = pkgs-unstable_aarch64-darwin;
inherit (config) user;
}; };
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.jmug.imports = [ ./hosts/msft-mac/home.nix ]; home-manager.users.jmug.imports = [ ./hosts/msft-mac/home.nix ];
} })
]; ];
}; };
}; };

View file

@ -1,10 +1,13 @@
{ self, pkgs, ... }: { { self, pkgs, config, ... }: {
imports = [ ./hotkeys.nix ]; imports = [
./hotkeys.nix
../../modules/common
];
# To reflect hotkeys without a login cycle. # To reflect hotkeys without a login cycle.
system.activationScripts.postActivation.text = '' system.activationScripts.postActivation.text = ''
sudo -u jmug /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u sudo -u ${config.user.name} /System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u
''; '';
# List packages installed in system profile. To search by name, run: # List packages installed in system profile. To search by name, run:
@ -14,7 +17,9 @@
git-credential-manager git-credential-manager
]; ];
system.primaryUser = "jmug"; user.name = "jmug";
system.primaryUser = config.user.name;
homebrew = { homebrew = {
enable = true; enable = true;
@ -45,7 +50,7 @@
nerd-fonts.bigblue-terminal nerd-fonts.bigblue-terminal
]; ];
users.users.jmug.home = "/Users/jmug"; users.users.${config.user.name}.home = config.user.homeDirectory;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;

View file

@ -2,8 +2,13 @@
config, config,
pkgs, pkgs,
pkgs-unstable, pkgs-unstable,
user,
... ...
} : { } :
let
username = user.name;
homeDirectory = user.homeDirectory;
in {
imports = [ imports = [
../../home-modules/default.nix ../../home-modules/default.nix
@ -28,8 +33,8 @@
}; };
home = { home = {
username = "jmug"; username = username;
homeDirectory = "/Users/jmug"; homeDirectory = homeDirectory;
packages = with pkgs; [ packages = with pkgs; [
jq jq
@ -67,24 +72,24 @@
enable = true; enable = true;
extraConfig = '' extraConfig = ''
Host * Host *
IdentityAgent /Users/jmug/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh IdentityAgent ${homeDirectory}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
''; '';
}; };
programs.zsh = { programs.zsh = {
shellAliases = { shellAliases = {
# TODO BEGIN Interpolate the name of the host here. # TODO BEGIN Interpolate the name of the host here.
flakeconf = "nvim /Users/jmug/nixos/flake.nix"; flakeconf = "nvim ${homeDirectory}/nixos/flake.nix";
sysconf = "nvim /Users/jmug/nixos/hosts/macbook/configuration.nix"; sysconf = "nvim ${homeDirectory}/nixos/hosts/macbook/configuration.nix";
homeconf = "nvim /Users/jmug/nixos/hosts/macbook/home.nix"; homeconf = "nvim ${homeDirectory}/nixos/hosts/macbook/home.nix";
nvconf = "nvim /Users/jmug/nixos/home-modules/explicit-configs/nvim/init.lua"; nvconf = "nvim ${homeDirectory}/nixos/home-modules/explicit-configs/nvim/init.lua";
# TODO: Interpolate the name of the host here. # TODO: Interpolate the name of the host here.
rshellconf="source /Users/jmug/.zshrc"; rshellconf="source ${homeDirectory}/.zshrc";
radev = "/Users/jmug/dev/aks-rp/bin/aksdev"; radev = "${homeDirectory}/dev/aks-rp/bin/aksdev";
ksc = "KUBECONFIG=/Users/jmug/Downloads/cxkubeconfig.yaml kubectl"; ksc = "KUBECONFIG=${homeDirectory}/Downloads/cxkubeconfig.yaml kubectl";
kso = "KUBECONFIG=/Users/jmug/Downloads/overlaykubeconfig.yaml kubectl"; kso = "KUBECONFIG=${homeDirectory}/Downloads/overlaykubeconfig.yaml kubectl";
k = "kubectl"; k = "kubectl";
nrsw = "sudo darwin-rebuild switch --flake /Users/jmug/nixos#msft-mac"; nrsw = "sudo darwin-rebuild switch --flake ${homeDirectory}/nixos#msft-mac";
}; };
initExtra = '' initExtra = ''
export GONOPROXY='github.com,golang.org,googlesource.com,opentelemetry.io,uber.org' export GONOPROXY='github.com,golang.org,googlesource.com,opentelemetry.io,uber.org'

View file

@ -0,0 +1,5 @@
{
imports = [
./user-config.nix
];
}

View file

@ -0,0 +1,24 @@
{ lib, pkgs, config, ... }:
{
options.user = lib.mkOption {
type = lib.types.submodule {
options = {
name = lib.mkOption {
type = lib.types.str;
description = "Primary username for the system";
};
homeDirectory = lib.mkOption {
type = lib.types.str;
description = "Home directory path for the user";
default =
if pkgs.stdenv.isDarwin
then "/Users/${config.user.name}"
else "/home/${config.user.name}";
};
};
};
description = "User configuration options";
};
}