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

static include dups tests

+201 -197
+201 -197
templates/ci/modules/features/deadbugs/static-include-dup-package.nix
··· 1 1 { denTest, ... }: 2 2 { 3 3 4 - flake.tests.deadbugs.dups.test-static-include = denTest ( 5 - { 6 - den, 7 - lib, 8 - tuxHm, 9 - ... 10 - }: 11 - { 12 - den.default.homeManager.home.stateVersion = "25.11"; 4 + flake.tests.deadbugs-static-include-dups = { 13 5 14 - den.hosts.x86_64-linux.igloo.users.tux = { }; 6 + test-static-include = denTest ( 7 + { 8 + den, 9 + lib, 10 + tuxHm, 11 + ... 12 + }: 13 + { 14 + den.default.homeManager.home.stateVersion = "25.11"; 15 15 16 - den.aspects.tux.includes = [ 17 - { 18 - homeManager = 19 - { pkgs, ... }: 16 + den.hosts.x86_64-linux.igloo.users.tux = { }; 17 + 18 + den.aspects.tux.includes = [ 19 + { 20 + homeManager = 21 + { pkgs, ... }: 22 + { 23 + programs.emacs.enable = true; 24 + programs.emacs.package = pkgs.emacs-nox; 25 + }; 26 + } 27 + ]; 28 + 29 + expr = lib.getName tuxHm.programs.emacs.package; 30 + expected = "emacs-nox"; 31 + } 32 + ); 33 + 34 + test-default-func-include = denTest ( 35 + { 36 + den, 37 + lib, 38 + igloo, 39 + ... 40 + }: 41 + { 42 + den.default.homeManager.home.stateVersion = "25.11"; 43 + 44 + den.hosts.x86_64-linux.igloo.users.tux = { }; 45 + 46 + den.default.nixos.imports = [ 47 + { options.foo = lib.mkOption { type = lib.types.listOf lib.types.str; }; } 48 + ]; 49 + 50 + den.default.includes = [ 51 + ( 52 + { user, ... }: 20 53 { 21 - programs.emacs.enable = true; 22 - programs.emacs.package = pkgs.emacs-nox; 23 - }; 24 - } 25 - ]; 54 + nixos.foo = [ user.name ]; 55 + } 56 + ) 57 + ]; 26 58 27 - expr = lib.getName tuxHm.programs.emacs.package; 28 - expected = "emacs-nox"; 29 - } 30 - ); 59 + expr = igloo.foo; 60 + expected = [ "tux" ]; 61 + } 62 + ); 31 63 32 - flake.tests.deadbugs.dups.test-default-func-include = denTest ( 33 - { 34 - den, 35 - lib, 36 - igloo, 37 - ... 38 - }: 39 - { 40 - den.default.homeManager.home.stateVersion = "25.11"; 64 + test-host-owned = denTest ( 65 + { 66 + den, 67 + lib, 68 + igloo, 69 + ... 70 + }: 71 + { 72 + den.default.homeManager.home.stateVersion = "25.11"; 41 73 42 - den.hosts.x86_64-linux.igloo.users.tux = { }; 74 + den.hosts.x86_64-linux.igloo.users.tux = { }; 43 75 44 - den.default.nixos.imports = [ 45 - { options.foo = lib.mkOption { type = lib.types.listOf lib.types.str; }; } 46 - ]; 47 - 48 - den.default.includes = [ 49 - ( 50 - { user, ... }: 76 + den.aspects.igloo.includes = [ 51 77 { 52 - nixos.foo = [ user.name ]; 78 + nixos.imports = [ 79 + { options.foo = lib.mkOption { type = lib.types.listOf lib.types.str; }; } 80 + ]; 53 81 } 54 - ) 55 - ]; 82 + ]; 56 83 57 - expr = igloo.foo; 58 - expected = [ "tux" ]; 59 - } 60 - ); 84 + den.aspects.igloo.nixos.foo = [ "bar" ]; 61 85 62 - flake.tests.deadbugs.dups.test-host-owned = denTest ( 63 - { 64 - den, 65 - lib, 66 - igloo, 67 - ... 68 - }: 69 - { 70 - den.default.homeManager.home.stateVersion = "25.11"; 86 + expr = igloo.foo; 87 + expected = [ "bar" ]; 88 + } 89 + ); 71 90 72 - den.hosts.x86_64-linux.igloo.users.tux = { }; 91 + test-default-owned-package = denTest ( 92 + { 93 + den, 94 + lib, 95 + igloo, 96 + ... 97 + }: 98 + { 99 + den.hosts.x86_64-linux.igloo.users.tux = { }; 73 100 74 - den.aspects.igloo.includes = [ 75 - { 76 - nixos.imports = [ 77 - { options.foo = lib.mkOption { type = lib.types.listOf lib.types.str; }; } 78 - ]; 79 - } 80 - ]; 101 + den.default.nixos = 102 + { pkgs, ... }: 103 + { 104 + services.locate.package = pkgs.plocate; 105 + }; 81 106 82 - den.aspects.igloo.nixos.foo = [ "bar" ]; 107 + expr = lib.getName igloo.services.locate.package; 108 + expected = "plocate"; 109 + } 110 + ); 83 111 84 - expr = igloo.foo; 85 - expected = [ "bar" ]; 86 - } 87 - ); 112 + test-default-static-package = denTest ( 113 + { 114 + den, 115 + lib, 116 + igloo, 117 + ... 118 + }: 119 + { 120 + den.hosts.x86_64-linux.igloo.users.tux = { }; 88 121 89 - flake.tests.deadbugs.dups.test-default-owned-package = denTest ( 90 - { 91 - den, 92 - lib, 93 - igloo, 94 - ... 95 - }: 96 - { 97 - den.hosts.x86_64-linux.igloo.users.tux = { }; 98 - 99 - den.default.nixos = 100 - { pkgs, ... }: 101 - { 102 - services.locate.package = pkgs.plocate; 103 - }; 122 + den.default.includes = [ 123 + { 124 + nixos = 125 + { pkgs, ... }: 126 + { 127 + services.locate.package = pkgs.plocate; 128 + }; 129 + } 130 + ]; 104 131 105 - expr = lib.getName igloo.services.locate.package; 106 - expected = "plocate"; 107 - } 108 - ); 132 + expr = lib.getName igloo.services.locate.package; 133 + expected = "plocate"; 134 + } 135 + ); 109 136 110 - flake.tests.deadbugs.dups.test-default-static-package = denTest ( 111 - { 112 - den, 113 - lib, 114 - igloo, 115 - ... 116 - }: 117 - { 118 - den.hosts.x86_64-linux.igloo.users.tux = { }; 137 + test-default-owned-list = denTest ( 138 + { 139 + den, 140 + lib, 141 + igloo, 142 + ... 143 + }: 144 + { 145 + den.hosts.x86_64-linux.igloo.users.tux = { }; 119 146 120 - den.default.includes = [ 121 - { 122 - nixos = 123 - { pkgs, ... }: 124 - { 125 - services.locate.package = pkgs.plocate; 147 + den.default.nixos.imports = [ 148 + { 149 + options.tags = lib.mkOption { 150 + type = lib.types.listOf lib.types.str; 151 + default = [ ]; 126 152 }; 127 - } 128 - ]; 153 + } 154 + ]; 155 + den.default.nixos.tags = [ "server" ]; 129 156 130 - expr = lib.getName igloo.services.locate.package; 131 - expected = "plocate"; 132 - } 133 - ); 157 + expr = igloo.tags; 158 + expected = [ "server" ]; 159 + } 160 + ); 134 161 135 - flake.tests.deadbugs.dups.test-default-owned-list = denTest ( 136 - { 137 - den, 138 - lib, 139 - igloo, 140 - ... 141 - }: 142 - { 143 - den.hosts.x86_64-linux.igloo.users.tux = { }; 162 + test-host-owned-package = denTest ( 163 + { 164 + den, 165 + lib, 166 + igloo, 167 + ... 168 + }: 169 + { 170 + den.hosts.x86_64-linux.igloo.users.tux = { }; 144 171 145 - den.default.nixos.imports = [ 146 - { 147 - options.tags = lib.mkOption { 148 - type = lib.types.listOf lib.types.str; 149 - default = [ ]; 172 + den.aspects.igloo.nixos = 173 + { pkgs, ... }: 174 + { 175 + services.locate.package = pkgs.plocate; 150 176 }; 151 - } 152 - ]; 153 - den.default.nixos.tags = [ "server" ]; 154 177 155 - expr = igloo.tags; 156 - expected = [ "server" ]; 157 - } 158 - ); 178 + expr = lib.getName igloo.services.locate.package; 179 + expected = "plocate"; 180 + } 181 + ); 159 182 160 - flake.tests.deadbugs.dups.test-host-owned-package = denTest ( 161 - { 162 - den, 163 - lib, 164 - igloo, 165 - ... 166 - }: 167 - { 168 - den.hosts.x86_64-linux.igloo.users.tux = { }; 183 + test-host-owned-list = denTest ( 184 + { 185 + den, 186 + lib, 187 + igloo, 188 + ... 189 + }: 190 + { 191 + den.hosts.x86_64-linux.igloo.users.tux = { }; 169 192 170 - den.aspects.igloo.nixos = 171 - { pkgs, ... }: 172 - { 173 - services.locate.package = pkgs.plocate; 174 - }; 193 + den.aspects.igloo.nixos.imports = [ 194 + { 195 + options.tags = lib.mkOption { 196 + type = lib.types.listOf lib.types.str; 197 + default = [ ]; 198 + }; 199 + } 200 + ]; 201 + den.aspects.igloo.nixos.tags = [ "server" ]; 175 202 176 - expr = lib.getName igloo.services.locate.package; 177 - expected = "plocate"; 178 - } 179 - ); 203 + expr = igloo.tags; 204 + expected = [ "server" ]; 205 + } 206 + ); 180 207 181 - flake.tests.deadbugs.dups.test-host-owned-list = denTest ( 182 - { 183 - den, 184 - lib, 185 - igloo, 186 - ... 187 - }: 188 - { 189 - den.hosts.x86_64-linux.igloo.users.tux = { }; 208 + test-default-list-multi-user = denTest ( 209 + { 210 + den, 211 + lib, 212 + igloo, 213 + ... 214 + }: 215 + { 216 + den.hosts.x86_64-linux.igloo.users = { 217 + tux = { }; 218 + pingu = { }; 219 + }; 190 220 191 - den.aspects.igloo.nixos.imports = [ 192 - { 193 - options.tags = lib.mkOption { 194 - type = lib.types.listOf lib.types.str; 195 - default = [ ]; 196 - }; 197 - } 198 - ]; 199 - den.aspects.igloo.nixos.tags = [ "server" ]; 221 + den.default.nixos.imports = [ 222 + { 223 + options.tags = lib.mkOption { 224 + type = lib.types.listOf lib.types.str; 225 + default = [ ]; 226 + }; 227 + } 228 + ]; 229 + den.default.nixos.tags = [ "server" ]; 200 230 201 - expr = igloo.tags; 202 - expected = [ "server" ]; 203 - } 204 - ); 231 + expr = igloo.tags; 232 + expected = [ "server" ]; 233 + } 234 + ); 205 235 206 - flake.tests.deadbugs.dups.test-default-list-multi-user = denTest ( 207 - { 208 - den, 209 - lib, 210 - igloo, 211 - ... 212 - }: 213 - { 214 - den.hosts.x86_64-linux.igloo.users = { 215 - tux = { }; 216 - pingu = { }; 217 - }; 218 - 219 - den.default.nixos.imports = [ 220 - { 221 - options.tags = lib.mkOption { 222 - type = lib.types.listOf lib.types.str; 223 - default = [ ]; 224 - }; 225 - } 226 - ]; 227 - den.default.nixos.tags = [ "server" ]; 228 - 229 - expr = igloo.tags; 230 - expected = [ "server" ]; 231 - } 232 - ); 236 + }; 233 237 234 238 }