treewide format

This commit is contained in:
TheWanderingCrow 2026-04-04 22:59:23 -04:00
parent 653eb2d606
commit b346790feb
31 changed files with 150 additions and 104 deletions

View file

@ -1,4 +1,5 @@
{...}: { { ... }:
{
imports = [ imports = [
common/core common/core
]; ];

View file

@ -1,4 +1,5 @@
{...}: { { ... }:
{
imports = [ imports = [
common/core common/core
]; ];

View file

@ -11,12 +11,17 @@
languages = { languages = {
language-server.phpactor = with pkgs; { language-server.phpactor = with pkgs; {
command = "${phpactor}/bin/phpactor"; command = "${phpactor}/bin/phpactor";
args = ["language-server"]; args = [ "language-server" ];
}; };
language = [{ language = [
name = "php"; {
language-servers = ["intelephense" "phpactor"]; name = "php";
}]; language-servers = [
"intelephense"
"phpactor"
];
}
];
}; };
}; };
} }

View file

@ -3,7 +3,8 @@
lib, lib,
hostSpec, hostSpec,
... ...
}: { }:
{
home = { home = {
preferXdgDirectories = true; preferXdgDirectories = true;
}; };

View file

@ -1,5 +1,6 @@
{pkgs, ...}: { { pkgs, ... }:
services.swww= { {
services.swww = {
enable = true; enable = true;
package = pkgs.awww; package = pkgs.awww;
}; };

View file

@ -1,4 +1,5 @@
{lib, ...}: { { lib, ... }:
{
services.avahi = lib.mkDefault { services.avahi = lib.mkDefault {
enable = true; enable = true;
nssmdns4 = true; nssmdns4 = true;

View file

@ -1 +1 @@
{} { }

View file

@ -1,9 +1,13 @@
{pkgs, ...}: { { pkgs, ... }:
{
environment.systemPackages = [ environment.systemPackages = [
pkgs.nextdns pkgs.nextdns
]; ];
services.nextdns = { services.nextdns = {
enable = true; enable = true;
arguments = ["-config" "cc2b9b"]; arguments = [
"-config"
"cc2b9b"
];
}; };
} }

View file

@ -5,9 +5,11 @@
inputs, inputs,
config, config,
... ...
}: let }:
let
sopsFolder = builtins.toString inputs.nix-secrets + "/sops"; sopsFolder = builtins.toString inputs.nix-secrets + "/sops";
in { in
{
#the import for inputs.sops-nix.nixosModules.sops is handled in hosts/common/core/default.nix so that it can be dynamically input according to the platform #the import for inputs.sops-nix.nixosModules.sops is handled in hosts/common/core/default.nix so that it can be dynamically input according to the platform
sops = { sops = {
@ -16,7 +18,7 @@ in {
validateSopsFiles = false; validateSopsFiles = false;
age = { age = {
# automatically import host SSH keys as age keys # automatically import host SSH keys as age keys
sshKeyPaths = ["/etc/ssh/ssh_host_ed25519_key"]; sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
}; };
# secrets will be output to /run/secrets # secrets will be output to /run/secrets
# e.g. /run/secrets/msmtp-password # e.g. /run/secrets/msmtp-password
@ -49,13 +51,14 @@ in {
# The containing folders are created as root and if this is the first ~/.config/ entry, # The containing folders are created as root and if this is the first ~/.config/ entry,
# the ownership is busted and home-manager can't target because it can't write into .config... # the ownership is busted and home-manager can't target because it can't write into .config...
# FIXME(sops): We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed # FIXME(sops): We might not need this depending on how https://github.com/Mic92/sops-nix/issues/381 is fixed
system.activationScripts.sopsSetAgeKeyOwnership = let system.activationScripts.sopsSetAgeKeyOwnership =
ageFolder = "${config.hostSpec.home}/.config/sops/age"; let
user = config.users.users.${config.hostSpec.username}.name; ageFolder = "${config.hostSpec.home}/.config/sops/age";
group = config.users.users.${config.hostSpec.username}.group; user = config.users.users.${config.hostSpec.username}.name;
in '' group = config.users.users.${config.hostSpec.username}.group;
mkdir -p ${ageFolder} || true in
chown -R ${user}:${group} ${config.hostSpec.home}/.config ''
''; mkdir -p ${ageFolder} || true
chown -R ${user}:${group} ${config.hostSpec.home}/.config
'';
} }

View file

@ -34,7 +34,8 @@
services.fail2ban = { services.fail2ban = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
ignoreIP = [ # Expected internal IP ranges ignoreIP = [
# Expected internal IP ranges
"172.16.0.0/12" "172.16.0.0/12"
"192.168.0.0/16" "192.168.0.0/16"
]; ];

View file

@ -5,7 +5,8 @@
withSwap ? false, withSwap ? false,
swapSize, swapSize,
... ...
}: { }:
{
disko.devices = { disko.devices = {
disk = { disk = {
disk0 = { disk0 = {
@ -24,14 +25,14 @@
type = "filesystem"; type = "filesystem";
format = "vfat"; format = "vfat";
mountpoint = "/boot"; mountpoint = "/boot";
mountOptions = ["defaults"]; mountOptions = [ "defaults" ];
}; };
}; };
root = { root = {
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = ["-f"]; # Override existing partition extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted, # Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted # unless their parent is mounted
subvolumes = { subvolumes = {

View file

@ -5,7 +5,8 @@
swapSize, swapSize,
config, config,
... ...
}: { }:
{
fileSystems."/persist".neededForBoot = true; fileSystems."/persist".neededForBoot = true;
disko.devices = { disko.devices = {
disk = { disk = {
@ -25,14 +26,14 @@
type = "filesystem"; type = "filesystem";
format = "vfat"; format = "vfat";
mountpoint = "/boot"; mountpoint = "/boot";
mountOptions = ["defaults"]; mountOptions = [ "defaults" ];
}; };
}; };
root = { root = {
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = ["-f"]; # Override existing partition extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted, # Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted # unless their parent is mounted
subvolumes = { subvolumes = {

View file

@ -5,7 +5,8 @@
withSwap ? false, withSwap ? false,
swapSize, swapSize,
... ...
}: { }:
{
disko.devices = { disko.devices = {
disk = { disk = {
disk0 = { disk0 = {
@ -26,14 +27,14 @@
type = "filesystem"; type = "filesystem";
format = "vfat"; format = "vfat";
mountpoint = "/boot"; mountpoint = "/boot";
mountOptions = ["umask=0077"]; mountOptions = [ "umask=0077" ];
}; };
}; };
root = { root = {
size = "100%"; size = "100%";
content = { content = {
type = "btrfs"; type = "btrfs";
extraArgs = ["-f"]; # Override existing partition extraArgs = [ "-f" ]; # Override existing partition
# Subvolumes must set a mountpoint in order to be mounted, # Subvolumes must set a mountpoint in order to be mounted,
# unless their parent is mounted # unless their parent is mounted
subvolumes = { subvolumes = {

View file

@ -2,7 +2,7 @@
services.keyd = { services.keyd = {
enable = true; enable = true;
keyboards.default = { keyboards.default = {
ids = ["*"]; ids = [ "*" ];
settings = { settings = {
main = { main = {
capslock = "layer(standardL2)"; capslock = "layer(standardL2)";

View file

@ -1,6 +1,6 @@
{ {
services.mysql = { services.mysql = {
enable = true; enable = true;
package = pkgs.mariadb_118; package = pkgs.mariadb_118;
}; };
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
services.printing = { services.printing = {
enable = true; enable = true;
drivers = with pkgs; [ drivers = with pkgs; [

View file

@ -2,9 +2,9 @@
config, config,
lib, lib,
... ...
}: { }:
{
services.glances = { services.glances = {
enable = true; enable = true;
}; };
} }

View file

@ -1,4 +1,5 @@
{pkgs, ...}: { { pkgs, ... }:
{
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mycli mycli
]; ];
@ -6,7 +7,7 @@
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
3306 3306
]; ];
services.mysql = { services.mysql = {
enable = true; enable = true;
package = pkgs.mariadb_118; package = pkgs.mariadb_118;

View file

@ -7,15 +7,23 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: { }:
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"]; boot.initrd.availableKernelModules = [
boot.initrd.kernelModules = []; "nvme"
boot.kernelModules = []; "xhci_pci"
boot.extraModulePackages = []; "ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
hardware.coral.usb.enable = true; hardware.coral.usb.enable = true;
} }

View file

@ -7,15 +7,21 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: { }:
{
imports = [ imports = [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "usb_storage" "sd_mod"]; boot.initrd.availableKernelModules = [
boot.initrd.kernelModules = []; "xhci_pci"
boot.kernelModules = ["kvm-intel"]; "ahci"
boot.extraModulePackages = []; "usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
hardware.graphics.extraPackages = with pkgs; [ hardware.graphics.extraPackages = with pkgs; [
rocmPackages.clr.icd rocmPackages.clr.icd
]; ];

View file

@ -1,3 +1,4 @@
{lib, ...}: { { lib, ... }:
{
imports = lib.custom.scanPaths ./.; imports = lib.custom.scanPaths ./.;
} }

View file

@ -4,7 +4,8 @@
pkgs, pkgs,
lib, lib,
... ...
}: { }:
{
options.hostSpec = { options.hostSpec = {
# Data variables that don't dictate configuration settings # Data variables that don't dictate configuration settings
username = lib.mkOption { username = lib.mkOption {
@ -20,7 +21,7 @@
description = "The email of the user"; description = "The email of the user";
}; };
networking = lib.mkOption { networking = lib.mkOption {
default = {}; default = { };
type = lib.types.attrsOf lib.types.anything; type = lib.types.attrsOf lib.types.anything;
description = "An attribute set of networking information"; description = "An attribute set of networking information";
}; };
@ -44,12 +45,11 @@
home = lib.mkOption { home = lib.mkOption {
type = lib.types.str; type = lib.types.str;
description = "The home directory of the user"; description = "The home directory of the user";
default = let default =
user = config.hostSpec.username; let
in user = config.hostSpec.username;
if pkgs.stdenv.isLinux in
then "/home/${user}" if pkgs.stdenv.isLinux then "/home/${user}" else "/Users/${user}";
else "/Users/${user}";
}; };
persistFolder = lib.mkOption { persistFolder = lib.mkOption {
type = lib.types.str; type = lib.types.str;

View file

@ -1,4 +1,4 @@
{lib, ...}: { { lib, ... }:
{
imports = lib.custom.scanPaths ./.; imports = lib.custom.scanPaths ./.;
} }

View file

@ -2,7 +2,8 @@
lib, lib,
config, config,
... ...
}: { }:
{
options.monitors = lib.mkOption { options.monitors = lib.mkOption {
type = lib.types.listOf ( type = lib.types.listOf (
lib.types.submodule { lib.types.submodule {
@ -69,7 +70,7 @@
}; };
} }
); );
default = []; default = [ ];
}; };
config = { config = {
assertions = [ assertions = [

View file

@ -27,7 +27,8 @@ in
}; };
}; };
systemd.services.flamesite-backup = { # TODO: Remove when replication setup systemd.services.flamesite-backup = {
# TODO: Remove when replication setup
script = '' script = ''
${pkgs.podman}/bin/podman exec swgal_db_1 sh -c 'exec mysqldump --no-tablespaces -usgr_user -psgr_pass sgr_db' > ${volumePath}/flamesites/swgalaxyproject/dbBackups/db.sql ${pkgs.podman}/bin/podman exec swgal_db_1 sh -c 'exec mysqldump --no-tablespaces -usgr_user -psgr_pass sgr_db' > ${volumePath}/flamesites/swgalaxyproject/dbBackups/db.sql
${pkgs.podman}/bin/podman exec nnsbluegrass_db_1 sh -c 'exec mysqldump --no-tablespaces -unns_user -pnns_pass nns_db' > ${volumePath}/flamesites/nnsbluegrass/dbBackups/db.sql ${pkgs.podman}/bin/podman exec nnsbluegrass_db_1 sh -c 'exec mysqldump --no-tablespaces -unns_user -pnns_pass nns_db' > ${volumePath}/flamesites/nnsbluegrass/dbBackups/db.sql

View file

@ -5,7 +5,7 @@ in
{ {
sops.secrets = { sops.secrets = {
"mariadb/users/grimmory" = {}; "mariadb/users/grimmory" = { };
}; };
sops.templates."grimmory-secrets".content = '' sops.templates."grimmory-secrets".content = ''
@ -17,7 +17,7 @@ in
"grimmory" "grimmory"
]; ];
}; };
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /var/lib/grimmory 774 1000 1000" "d /var/lib/grimmory 774 1000 1000"
"d /var/lib/grimmory/data 774 1000 1000" "d /var/lib/grimmory/data 774 1000 1000"
@ -37,13 +37,13 @@ in
"${builtins.toString port}:6060" "${builtins.toString port}:6060"
]; ];
environments = { environments = {
TZ="Etc/UTC"; TZ = "Etc/UTC";
APP_USER_ID="1000"; APP_USER_ID = "1000";
APP_GROUP_ID="1000"; APP_GROUP_ID = "1000";
BOOKLORE_PORT="6060"; BOOKLORE_PORT = "6060";
DATABASE_URL="jdbc:mariadb://host.containers.internal:3306/grimmory"; DATABASE_URL = "jdbc:mariadb://host.containers.internal:3306/grimmory";
DATABASE_USERNAME="grimmory"; DATABASE_USERNAME = "grimmory";
}; };
environmentFiles = [ environmentFiles = [
config.sops.templates."grimmory-secrets".path config.sops.templates."grimmory-secrets".path

View file

@ -40,10 +40,10 @@ in
enable = true; enable = true;
virtualHosts = { virtualHosts = {
# "swgalaxyproject.com".extraConfig = '' # "swgalaxyproject.com".extraConfig = ''
# reverse_proxy http://localhost:8080 # reverse_proxy http://localhost:8080
# ''; # '';
# "nnsbluegrass.com".extraConfig = '' # "nnsbluegrass.com".extraConfig = ''
# reverse_proxy http://localhost:9821 # reverse_proxy http://localhost:9821
# ''; # '';
"swgalaxyproject.com".extraConfig = '' "swgalaxyproject.com".extraConfig = ''
file_server { file_server {

View file

@ -38,11 +38,11 @@ in
users.users.caddy.extraGroups = [ "tuwunel" ]; users.users.caddy.extraGroups = [ "tuwunel" ];
services.caddy = { services.caddy = {
enable = true; enable = true;
virtualHosts = { virtualHosts = {
"psychal.link, psychal.link:8448".extraConfig = '' "psychal.link, psychal.link:8448".extraConfig = ''
reverse_proxy unix//run/tuwunel/tuwunel.sock reverse_proxy unix//run/tuwunel/tuwunel.sock
''; '';
}; };
}; };
} }

View file

@ -7,19 +7,21 @@
nvix.url = "github:TheWanderingCrow/nvix"; nvix.url = "github:TheWanderingCrow/nvix";
}; };
outputs = { outputs =
self, {
nixpkgs, self,
... nixpkgs,
} @ inputs: { ...
nixosConfigurations = { }@inputs:
ISO = nixpkgs.lib.nixosSystem { {
specialArgs = {inherit inputs;}; nixosConfigurations = {
modules = [ ISO = nixpkgs.lib.nixosSystem {
./installers/ISO.nix specialArgs = { inherit inputs; };
./installer-config.nix modules = [
]; ./installers/ISO.nix
./installer-config.nix
];
};
}; };
}; };
};
} }

View file

@ -1,6 +1,9 @@
{pkgs ? import <nixpkgs> {}}: let {
pkgs ? import <nixpkgs> { },
}:
let
config = { config = {
imports = [<nixpkgs/nixos/modules/virtualisation/digital-ocean-image.nix>]; imports = [ <nixpkgs/nixos/modules/virtualisation/digital-ocean-image.nix> ];
}; };
in in
(pkgs.nixos config).digitalOceanImage (pkgs.nixos config).digitalOceanImage

View file

@ -3,7 +3,8 @@
inputs, inputs,
modulesPath, modulesPath,
... ...
}: { }:
{
imports = [ imports = [
inputs.disko.nixosModules.disko inputs.disko.nixosModules.disko
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix" "${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"