let
systemsBase =
{
config,
lib,
...
}:
let
inherit (lib.options) mkOption;
inherit (lib.types) enum;
inherit (lib.strings) splitString;
inherit (lib.lists) last;
inherit (config.myLib) mkConst;
in
{
options = {
os = mkConst <| last <| splitString "-" config.nixpkgs.hostPlatform.system;
type = mkOption {
type = enum [
"desktop"
"server"
"wsl"
];
default = "server";
example = "server";
description = "The host system type";
};
isLinux = mkConst <| config.os == "linux";
isDarwin = mkConst <| config.os == "darwin";
isWsl = mkConst <| config.os == "wsl";
isDesktop = mkConst <| config.type == "desktop";
isServer = mkConst <| config.type == "server";
};
};
in
{
systems = [
"x86_64-linux"
"aarch64-darwin"
];
flake.modules.nixos.systems = systemsBase;
flake.modules.darwin.systems = systemsBase;
}