Modular, context-aware and aspect-oriented dendritic Nix configurations.
Discussions: https://oeiuwq.zulipchat.com/join/nqp26cd4kngon6mo3ncgnuap/
den.oeiuwq.com
configurations
den
dendritic
nix
aspect
oriented
1{ lib, den, ... }:
2let
3 description = ''
4 Sets user as *primary*.
5
6 On NixOS adds wheel and networkmanager groups.
7 On Darwin sets user as system.primaryUser
8 On WSL sets defaultUser if host has `wsl` support.
9
10 ## Usage
11
12 den.aspects.my-user.includes = [ den._.primary-user ];
13
14 '';
15
16 userToHostContext =
17 { user, host, ... }:
18 {
19 inherit description;
20 darwin.system.primaryUser = user.userName;
21 wsl.defaultUser = user.userName;
22 nixos.users.users.${user.userName} = {
23 isNormalUser = true;
24 extraGroups = [
25 "wheel"
26 "networkmanager"
27 ];
28 };
29 };
30
31in
32{
33 den.provides.primary-user = den.lib.take.exactly userToHostContext;
34}