Your one-stop-cake-shop for everything Freshly Baked has to offer

feat(ingredients): switch to system module

I've written a nilla module to convert strings into enable options for
ingredients. I couldn't think of a nice way to do portable submodules
(since as things can rely on options from other ingredients, removing
portability anyway) so for now this'll have to do... it does, however,
pretty nicely sugar this annoying-ish definition.

+118 -119
+7
packetmix/modules/default.nix
··· 1 + # SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2 + # 3 + # SPDX-License-Identifier: MIT 4 + 5 + { 6 + includes = [ ./ingredients.nix ]; 7 + }
+33
packetmix/modules/ingredients.nix
··· 1 + # SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2 + # 3 + # SPDX-License-Identifier: MIT 4 + 5 + { config, lib, ... }@nilla: 6 + { 7 + options.systems.nixos = 8 + let 9 + ingredientModules = nilla.config.lib.ingredients.collectIngredientsModules ../systems { }; 10 + in 11 + nilla.lib.options.create { 12 + type = nilla.lib.types.attrs.of ( 13 + nilla.lib.types.submodule ( 14 + { config, name, ... }@submodule: 15 + { 16 + options.ingredients = nilla.lib.options.create { 17 + description = "Ingredients to activate for the system"; 18 + type = nilla.lib.types.list.of nilla.lib.types.string; 19 + default = [ ]; 20 + }; 21 + 22 + config = { 23 + modules = 24 + ingredientModules 25 + ++ (map (ingredient: { 26 + config.ingredient.${ingredient}.enable = true; 27 + }) submodule.config.ingredients); 28 + }; 29 + } 30 + ) 31 + ); 32 + }; 33 + }
+1
packetmix/nilla.nix
··· 20 20 ./homes 21 21 ./inputs.nix 22 22 ./lib 23 + ./modules 23 24 ./packages 24 25 ./systems 25 26 "${pins.nilla-home}/modules/home.nix" # We can't use config.inputs here without infinitely-recursing
+77 -119
packetmix/systems/default.nix
··· 6 6 { config, lib, ... }: 7 7 let 8 8 nixpkgs = config.inputs.nixpkgs.result; 9 - 10 - modules = config.lib.ingredients.collectIngredientsModules ./. {}; 11 9 in 12 10 { 13 11 config.systems.nixos."redhead" = { 14 12 pkgs = nixpkgs.x86_64-linux; 15 - modules = [ 16 - { 17 - ingredient = { 18 - common.enable = true; 19 - espanso.enable = true; 20 - freshlybakedcake.enable = true; 21 - javelin.enable = true; 22 - minion.enable = true; 23 - niri.enable = true; 24 - personal.enable = true; 25 - portable.enable = true; 26 - redhead.enable = true; 27 - }; 28 - } 29 - ] 30 - ++ modules; 13 + ingredients = [ 14 + "common" 15 + "espanso" 16 + "freshlybakedcake" 17 + "javelin" 18 + "minion" 19 + "niri" 20 + "personal" 21 + "portable" 22 + "redhead" 23 + ]; 31 24 args = { 32 25 system = "x86_64-linux"; 33 26 project = config; ··· 36 29 }; 37 30 config.systems.nixos."emden" = { 38 31 pkgs = nixpkgs.x86_64-linux; 39 - modules = [ 40 - { 41 - ingredient = { 42 - common.enable = true; 43 - espanso.enable = true; 44 - freshlybakedcake.enable = true; 45 - gaming.enable = true; 46 - javelin.enable = true; 47 - minion.enable = true; 48 - emden.enable = true; 49 - niri.enable = true; 50 - personal.enable = true; 51 - }; 52 - } 53 - ] 54 - ++ modules; 32 + ingredients = [ 33 + "common" 34 + "emden" 35 + "espanso" 36 + "freshlybakedcake" 37 + "gaming" 38 + "javelin" 39 + "minion" 40 + "niri" 41 + "personal" 42 + ]; 55 43 args = { 56 44 system = "x86_64-linux"; 57 45 project = config; ··· 60 48 }; 61 49 config.systems.nixos."marbled" = { 62 50 pkgs = nixpkgs.x86_64-linux; 63 - modules = [ 64 - { 65 - ingredient = { 66 - common.enable = true; 67 - espanso.enable = true; 68 - freshlybakedcake.enable = true; 69 - javelin.enable = true; 70 - minion.enable = true; 71 - niri.enable = true; 72 - personal.enable = true; 73 - portable.enable = true; 74 - marbled.enable = true; 75 - }; 76 - } 77 - ] 78 - ++ modules; 51 + ingredients = [ 52 + "common" 53 + "espanso" 54 + "freshlybakedcake" 55 + "javelin" 56 + "marbled" 57 + "minion" 58 + "niri" 59 + "personal" 60 + "portable" 61 + ]; 79 62 args = { 80 63 system = "x86_64-linux"; 81 64 project = config; ··· 84 67 }; 85 68 config.systems.nixos."ocicat" = { 86 69 pkgs = nixpkgs.x86_64-linux; 87 - modules = [ 88 - { 89 - ingredient = { 90 - coded.enable = true; 91 - common.enable = true; 92 - espanso.enable = true; 93 - freshlybakedcake.enable = true; 94 - gaming.enable = true; 95 - niri.enable = true; 96 - ocicat.enable = true; 97 - personal.enable = true; 98 - portable.enable = true; 99 - }; 100 - } 101 - ] 102 - ++ modules; 70 + ingredients = [ 71 + "coded" 72 + "common" 73 + "espanso" 74 + "freshlybakedcake" 75 + "gaming" 76 + "niri" 77 + "ocicat" 78 + "personal" 79 + "portable" 80 + ]; 103 81 args = { 104 82 system = "x86_64-linux"; 105 83 project = config; ··· 108 86 }; 109 87 config.systems.nixos."saurosuchus" = { 110 88 pkgs = nixpkgs.x86_64-linux; 111 - modules = [ 112 - { 113 - ingredient = { 114 - common.enable = true; 115 - espanso.enable = true; 116 - freshlybakedcake.enable = true; 117 - gaming.enable = true; 118 - kde.enable = true; 119 - personal.enable = true; 120 - pinea.enable = true; 121 - saurosuchus.enable = true; 122 - }; 123 - } 124 - ] 125 - ++ modules; 89 + ingredients = [ 90 + "common" 91 + "espanso" 92 + "freshlybakedcake" 93 + "gaming" 94 + "kde" 95 + "personal" 96 + "pinea" 97 + "saurosuchus" 98 + ]; 126 99 args = { 127 100 system = "x86_64-linux"; 128 101 project = config; ··· 131 104 }; 132 105 config.systems.nixos."shorthair" = { 133 106 pkgs = nixpkgs.x86_64-linux; 134 - modules = [ 135 - { 136 - ingredient = { 137 - coded.enable = true; 138 - common.enable = true; 139 - corsair.enable = true; 140 - espanso.enable = true; 141 - freshlybakedcake.enable = true; 142 - gaming.enable = true; 143 - niri.enable = true; 144 - shorthair.enable = true; 145 - personal.enable = true; 146 - }; 147 - } 148 - ] 149 - ++ modules; 107 + ingredients = [ 108 + "coded" 109 + "common" 110 + "corsair" 111 + "espanso" 112 + "freshlybakedcake" 113 + "gaming" 114 + "niri" 115 + "personal" 116 + "shorthair" 117 + ]; 150 118 args = { 151 119 system = "x86_64-linux"; 152 120 project = config; ··· 155 123 }; 156 124 config.systems.nixos."midnight" = { 157 125 pkgs = nixpkgs.x86_64-linux; 158 - modules = [ 159 - { 160 - ingredient = { 161 - common.enable = true; 162 - freshlybakedcake.enable = true; 163 - midnight.enable = true; 164 - server.enable = true; 165 - }; 166 - } 167 - ] 168 - ++ modules; 126 + ingredients = [ 127 + "common" 128 + "freshlybakedcake" 129 + "midnight" 130 + "server" 131 + ]; 169 132 args = { 170 133 system = "x86_64-linux"; 171 134 project = config; ··· 173 136 }; 174 137 config.systems.nixos."teal" = { 175 138 pkgs = nixpkgs.x86_64-linux; 176 - modules = [ 177 - { 178 - ingredient = { 179 - common.enable = true; 180 - freshlybakedcake.enable = true; 181 - teal.enable = true; 182 - server.enable = true; 183 - }; 184 - } 185 - ] 186 - ++ modules; 139 + ingredients = [ 140 + "common" 141 + "freshlybakedcake" 142 + "teal" 143 + "server" 144 + ]; 187 145 args = { 188 146 system = "x86_64-linux"; 189 147 project = config;