Compare commits

...

9 commits

7 changed files with 145 additions and 97 deletions

View file

@ -28,7 +28,10 @@ let
name: value: name: value:
if class == "nixos" then if class == "nixos" then
nixosSystem { nixosSystem {
specialArgs.hostName = name; specialArgs = {
inherit (config.flake) self;
hostName = name;
};
modules = [ modules = [
cfg.modules.nixos.default cfg.modules.nixos.default
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
@ -38,11 +41,15 @@ let
} }
else if class == "darwin" then else if class == "darwin" then
darwinSystem { darwinSystem {
specialArgs = { inherit (config.flake) self; }; specialArgs = {
inherit (config.flake) self;
hostName = name;
};
modules = [ modules = [
cfg.modules.darwin.default cfg.modules.darwin.default
inputs.home-manager.darwinModules.home-manager inputs.home-manager.darwinModules.home-manager
{ home-manager = globalCfg name value; } { home-manager = globalCfg name value; }
(value.extraCfg or { })
] ++ optional value.graphical cfg.modules.darwin.graphical; ] ++ optional value.graphical cfg.modules.darwin.graphical;
} }
else else

View file

@ -4,7 +4,8 @@
enableTreesitter = true; enableTreesitter = true;
bash.enable = true; bash.enable = true;
clang.enable = true; clang.enable = true;
csharp.enable = true; # broken on macos
# csharp.enable = true;
css.enable = true; css.enable = true;
go.enable = true; go.enable = true;
html.enable = true; html.enable = true;

View file

@ -7,84 +7,95 @@
shell = "fish"; shell = "fish";
pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdsZyY3gu8IGB8MzMnLdh+ClDxQQ2RYG9rkeetIKq8n rafiq"; pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdsZyY3gu8IGB8MzMnLdh+ClDxQQ2RYG9rkeetIKq8n rafiq";
}; };
hosts.darwin.venus.graphical = true; hosts = {
hosts.nixos = { darwin = {
nemesis = { venus = {
graphical = true; graphical = true;
machine = { machine.platform = "intel";
platform = "amd";
gpu = "nvidia";
root.drive = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434";
monitors.main = {
id = "desc:OOO AN-270W04K";
resolution = "3840x2160";
refresh-rate = "60";
scale = "2";
};
}; };
extraCfg = { hephaestus = {
services.fwupd.enable = true; # FIXME: remove graphical = true;
machine = { machine.platform = "apple-silicon";
bluetooth.enable = true;
usb.automount = true;
virtualisation = {
podman.enable = true;
podman.distrobox.enable = true;
};
};
server.web-apps = {
comfy-ui.enable = true;
sd-webui-forge.enable = true;
};
}; };
}; };
apollo = { nixos = {
graphical = false; nemesis = {
machine = { graphical = true;
platform = "intel"; machine = {
root.drive = "/dev/disk/by-id/nvme-eui.002538d221b47b01"; platform = "amd";
}; gpu = "nvidia";
extraCfg.server = { root.drive = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434";
ddns = { monitors.main = {
enable = true; id = "desc:OOO AN-270W04K";
domains = [ resolution = "3840x2160";
"aenyrathia.wiki" refresh-rate = "60";
"slayment.com" scale = "2";
]; };
}; };
web-servers = { extraCfg = {
enableSSL = true; services.fwupd.enable = true; # FIXME: remove
nginx = { machine = {
bluetooth.enable = true;
usb.automount = true;
virtualisation = {
podman.enable = true;
podman.distrobox.enable = true;
};
};
server.web-apps = {
comfy-ui.enable = true;
sd-webui-forge.enable = true;
};
};
};
apollo = {
graphical = false;
machine = {
platform = "intel";
root.drive = "/dev/disk/by-id/nvme-eui.002538d221b47b01";
};
extraCfg.server = {
ddns = {
enable = true; enable = true;
proxies = [ domains = [
{ "aenyrathia.wiki"
source = "aenyrathia.wiki"; "slayment.com"
target = "http://helios:5896";
}
{
source = "il.bwfiq.com";
target = "http://helios:2283";
}
]; ];
}; };
}; web-servers = {
databases = { enableSSL = true;
mongodb.enable = true; nginx = {
mysql.enable = true; enable = true;
postgresql.enable = true; proxies = [
}; {
web-apps = { source = "aenyrathia.wiki";
librechat = { target = "http://helios:5896";
enable = true; }
domain = "chat.bwfiq.com"; {
source = "il.bwfiq.com";
target = "http://helios:2283";
}
];
};
}; };
forgejo = { databases = {
enable = true; mongodb.enable = true;
domain = "git.rrv.sh"; mysql.enable = true;
openFirewall = true; postgresql.enable = true;
};
web-apps = {
librechat = {
enable = true;
domain = "chat.bwfiq.com";
};
forgejo = {
enable = true;
domain = "git.rrv.sh";
openFirewall = true;
};
rrv-sh.enable = true;
rrv-sh.domain = "rrv.sh";
}; };
rrv-sh.enable = true;
rrv-sh.domain = "rrv.sh";
}; };
}; };
}; };

View file

@ -5,19 +5,31 @@ let
inherit (lib.attrsets) mapAttrs'; inherit (lib.attrsets) mapAttrs';
in in
{ {
flake.modules.nixos.default = flake.modules = {
{ pkgs, ... }: nixos.default =
{ { pkgs, ... }:
programs = mapAttrs' (name: value: { {
name = value.shell; programs = mapAttrs' (name: value: {
value.enable = true; name = value.shell;
}) cfg.manifest.users; value.enable = true;
users.users = forAllUsers' (_: value: { shell = pkgs.${value.shell}; }); }) cfg.manifest.users;
}; users.users = forAllUsers' (_: value: { shell = pkgs.${value.shell}; });
flake.modules.homeManager.default = };
{ config, ... }: darwin.default =
{ { pkgs, ... }:
programs.${cfg.manifest.users.${config.home.username}.shell}.enable = true; {
home.shell.enableShellIntegration = true; programs = mapAttrs' (name: value: {
}; name = value.shell;
value.enable = true;
}) cfg.manifest.users;
users.users = forAllUsers' (_: value: { shell = pkgs.${value.shell}; });
environment.shells = [ pkgs.fish ];
};
homeManager.default =
{ config, ... }:
{
programs.${cfg.manifest.users.${config.home.username}.shell}.enable = true;
home.shell.enableShellIntegration = true;
};
};
} }

View file

@ -12,9 +12,13 @@
nixpkgs.hostPlatform = "${arch}-linux"; nixpkgs.hostPlatform = "${arch}-linux";
}; };
flake.modules.darwin.default.nixpkgs = { flake.modules.darwin.default =
hostPlatform = "x86_64-darwin"; { hostName, ... }:
# config.allowUnsupportedSystem = true; let
}; inherit (config.flake.manifest.hosts.darwin.${hostName}.machine) platform;
arch = if platform == "intel" then "x86_64" else "aarch64";
in
{
nixpkgs.hostPlatform = "${arch}-darwin";
};
} }

View file

@ -14,7 +14,12 @@ in
persistDirs = [ "/var/lib/tailscale" ]; persistDirs = [ "/var/lib/tailscale" ];
sops.secrets."tailscale/client-secret".sopsFile = secrets + "/tailscale.yaml"; sops.secrets."tailscale/client-secret".sopsFile = secrets + "/tailscale.yaml";
}; };
flake.modules.darwin.default = { flake.modules.darwin.default =
services.tailscale.enable = true; { pkgs, ... }:
}; {
services.tailscale = {
enable = true;
package = pkgs.tailscale.overrideAttrs { doCheck = false; };
};
};
} }

View file

@ -1,7 +1,9 @@
{ config, ... }: { config, lib, ... }:
let let
cfg = config.flake; cfg = config.flake;
inherit (cfg.lib.modules) userListToAttrs forAllUsers'; inherit (cfg.lib.modules) userListToAttrs forAllUsers';
inherit (lib.lists) findFirstIndex;
inherit (builtins) attrNames;
in in
{ {
flake.modules.nixos.default = flake.modules.nixos.default =
@ -34,7 +36,13 @@ in
flake.modules.darwin.default = flake.modules.darwin.default =
{ config, ... }: { config, ... }:
{ {
users.users = forAllUsers' (name: _: { home = "/Users/${name}"; }); users.knownUsers = attrNames cfg.manifest.users;
users.users = forAllUsers' (
name: _: {
home = "/Users/${name}";
uid = 501 + (findFirstIndex (x: x == name) null (attrNames cfg.manifest.users));
}
);
home-manager.users = forAllUsers' ( home-manager.users = forAllUsers' (
name: _: { name: _: {
home.username = name; home.username = name;