Something went wrong. Try again.
my multi-platform nix flake
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207{ self, inputs, lib, allPkgs,}:let prism = inputs.prism.lib;
hostLib = import ./lib.nix { inherit self inputs lib allPkgs ; };
inherit (hostLib) commonSpecialArgs mkSelfPrime mkInputsPrime nixosExtraModules darwinExtraModules ;
enableServices = lib.mapAttrs ( _: cfg: (removeAttrs cfg [ "ingress" "dashboard" ]) // { enable = true; } );
host = { name, parents, desktops ? { }, secure-boot ? 0, services ? { }, extraModules ? [ ], }: { inherit parents; extraModules = [ ./${name} { networking.hostName = name; } ] ++ extraModules ++ [ { unravelled = { inherit desktops secure-boot; services = enableServices services; }; } ]; };
tags = self: { inherit (prism.presets) all;
nixos = { parents = [ self.all self.notIso self.notServer ]; pkgs = allPkgs.x86_64-linux; mkSystem = lib.nixosSystem; specialArgs = { class = "nixos"; self' = mkSelfPrime "x86_64-linux"; inputs' = mkInputsPrime "x86_64-linux"; }; extraModules = nixosExtraModules; };
darwin = { parents = [ self.all self.notServer self.darwinServer ]; pkgs = allPkgs.aarch64-darwin; mkSystem = inputs.nix-darwin.lib.darwinSystem; specialArgs = { class = "darwin"; self' = mkSelfPrime "aarch64-darwin"; inputs' = mkInputsPrime "aarch64-darwin"; }; extraModules = darwinExtraModules; };
graphical.parents = [ self.nixos ]; iso.parents = [ self.nixos ]; laptop.parents = [ self.nixos ];
headless = { }; desktop = { }; extras = { }; server = { };
notIso.select = { rootTags, ... }: !(builtins.elem "iso" rootTags); notServer.select = { rootTags, ... }: !(builtins.elem "server" rootTags); darwinServer.select = { rootTags, ... }: builtins.elem "darwin" rootTags && builtins.elem "server" rootTags;
katsu = host { name = "katsu"; parents = [ self.nixos self.graphical self.laptop self.extras ]; desktops.niri.enable = true; secure-boot = 2; };
bento = host { name = "bento"; parents = [ self.nixos self.headless self.server ]; services = import ./bento/services.nix; };
mochi = host { name = "mochi"; parents = [ self.nixos self.graphical self.desktop self.extras ]; desktops = { labwc.enable = true; niri.enable = true; }; };
gyoza = host { name = "gyoza"; parents = [ self.nixos self.headless self.server ]; services = import ./gyoza/services.nix; };
sushi = host { name = "sushi"; parents = [ self.nixos self.headless self.iso ]; extraModules = [ "${inputs.nixpkgs}/nixos/modules/installer/cd-dvd/iso-image.nix" ]; };
ramen = host { name = "ramen"; parents = [ self.darwin self.headless self.server self.extras ]; services = import ./ramen/services.nix; }; };
systems = prism.mkSystems { inherit tags; specialArgs = commonSpecialArgs; modules = [ ../modules/nixos/iso.nix ../modules/nixos/networking.nix ../modules/nixos/system.nix ../modules/nixos/graphical/default.nix ../modules/nixos/graphical/fonts.nix ../modules/nixos/graphical/pipewire.nix ../modules/nixos/graphical/theme.nix ../modules/darwin/default.nix ../users/graphical.nix ../users/shell.nix ../users/browsers.nix ../users/media.nix ]; };
darwinHosts = [ "ramen" ]; nixosHosts = builtins.filter (name: !(builtins.elem name darwinHosts)) (builtins.attrNames systems);in{ nixosConfigurations = lib.genAttrs nixosHosts (name: systems.${name}); darwinConfigurations = lib.genAttrs darwinHosts (name: systems.${name});}