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
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat(batteries): mutual-provider allows user-to-users provides (#354)

authored by

Victor Borja and committed by
GitHub
ec44f529 88533ec7

+62
+14
modules/aspects/provides/mutual-provider.nix
··· 37 37 find-mutual = from: to: den.aspects.${from.aspect}._.${to.aspect} or { }; 38 38 user-to-hosts = user: den.aspects.${user.aspect}._.to-hosts or { }; 39 39 host-to-users = host: den.aspects.${host.aspect}._.to-users or { }; 40 + user-to-users = user: den.aspects.${user.aspect}._.to-users or { }; 41 + 42 + mutual-user-user = host: user: { 43 + includes = map ( 44 + from: 45 + parametric.fixedTo { inherit host user; } { 46 + includes = [ 47 + (find-mutual from user) 48 + (user-to-users from) 49 + ]; 50 + } 51 + ) (builtins.filter (u: u != user) (builtins.attrValues host.users)); 52 + }; 40 53 41 54 mutual-host-user = 42 55 { host, user }: ··· 47 60 (find-mutual user host) 48 61 (host-to-users host) 49 62 (user-to-hosts user) 63 + (mutual-user-user host user) 50 64 ]; 51 65 }; 52 66
+48
templates/ci/modules/features/user-host-mutual-config.nix
··· 244 244 } 245 245 ); 246 246 247 + test-user-provides-to-all-users = denTest ( 248 + { 249 + den, 250 + lib, 251 + igloo, 252 + ... 253 + }: 254 + { 255 + den.ctx.user.includes = [ den._.mutual-provider ]; 256 + 257 + den.hosts.x86_64-linux.igloo.users = { 258 + tux = { }; 259 + alice = { }; 260 + bob = { }; 261 + carl = { }; 262 + }; 263 + 264 + den.aspects.tux.provides.to-users = 265 + { user, ... }: 266 + { 267 + homeManager.programs.vim.enable = true; 268 + }; 269 + 270 + den.aspects.tux.provides.alice = { 271 + homeManager.programs.tmux.enable = true; 272 + }; 273 + 274 + expr = with igloo.home-manager.users; { 275 + tux = tux.programs.vim.enable; 276 + alice = alice.programs.vim.enable; 277 + bob = bob.programs.vim.enable; 278 + carl = carl.programs.vim.enable; 279 + aliceTmux = alice.programs.tmux.enable; 280 + bobTmux = bob.programs.tmux.enable; 281 + }; 282 + 283 + expected = { 284 + tux = false; 285 + alice = true; 286 + bob = true; 287 + carl = true; 288 + aliceTmux = true; 289 + bobTmux = false; 290 + }; 291 + 292 + } 293 + ); 294 + 247 295 }; 248 296 }