Compare commits
9 commits
e9edf5ad55
...
750f2efaa7
Author | SHA1 | Date | |
---|---|---|---|
750f2efaa7 | |||
346ad74c5d | |||
80c63d155d | |||
74dcb8fed0 | |||
42ef2d6c01 | |||
16d4a9e9d1 | |||
25cb9a6ff8 | |||
7866bc5bc7 | |||
e5e365a1e0 |
7 changed files with 145 additions and 97 deletions
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
149
nix/manifest.nix
149
nix/manifest.nix
|
@ -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";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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; };
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue