the_prg_server_configuration/nix-system-configs/modules/system/database.nix

142 lines
4.4 KiB
Nix

{
config,
pkgs,
lib,
...
}: let
choose = paths: builtins.head (builtins.filter (p: builtins.pathExists p) paths);
in {
options.local = {
hostname = lib.mkOption {
type = lib.types.str;
default = "nixos-default";
description = "System hostname";
};
username = lib.mkOption {
type = lib.types.str;
default = "user";
description = "Primary user username";
};
userDescription = lib.mkOption {
type = lib.types.str;
default = "NixOS User";
description = "Primary user description";
};
address = lib.mkOption {
type = lib.types.str;
default = "10.1.1.100";
description = "Static IP address";
};
};
imports =
[
(choose [./modules/desktop-manager/gnome.nix ../desktop-manager/gnome.nix])
(choose [./modules/local/hostname_username.nix ../local/hostname_username.nix])
(choose [./modules/local/networking_local.nix ../local/networking_local.nix])
# (choose [./modules/bootloader/seabios-assigned-iso-at-birth.nix ../bootloader/seabios-assigned-iso-at-birth.nix])
(choose [./modules/lix-default.nix ../lix-default.nix])
(choose [./modules/toolsets/grafana_metric.nix ../toolsets/grafana_metric.nix])
(choose [./modules/secrets-config/sops-database.nix ../secrets-config/sops-database.nix])
(choose [./modules/system_scripts/gcloud_backup.nix ../system_scripts/gcloud_backup.nix])
## TODO: Make this more elegant and less risky for unexpected errors happening.
]
++ lib.optional (builtins.pathExists ./hardware-configuration.nix) ./hardware-configuration.nix;
config = {
local.hostname = "nixosdd";
local.username = "nixosdd";
local.userDescription = "NixOS Dedicated Database";
local.address = "10.1.1.251";
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
# Filesystems (explicitly configured)
fileSystems."/" = {
device = "/dev/disk/by-uuid/0ebe91dc-d396-43d1-8111-5d48a69868eb";
fsType = "btrfs";
options = [ "subvol=@" ];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/0ebe91dc-d396-43d1-8111-5d48a69868eb";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/D517-B83D";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
networking.firewall.allowedTCPPorts = [
5432 # PostgreSQL
3306 # MariaDB/MySQL
];
networking.firewall.allowedUDPPorts = [
5432 # PostgreSQL
3306 # MariaDB/MySQL
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable PostgreSQL
services.postgresql = {
enable = true;
enableTCPIP = true;
ensureDatabases = ["forgejo" "part_db_database"];
settings = {
listen_addresses = "*";
};
authentication = pkgs.lib.mkOverride 10 ''
local all all trust
host all all 10.1.1.4/32 scram-sha-256
host all all 10.1.1.249/32 scram-sha-256
host all all 10.1.1.244/32 scram-sha-256
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
'';
};
# Enable MariaDB
services.mysql = {
enable = true;
package = pkgs.mariadb;
};
# Enable Tailscale
services.tailscale.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget
helix
fastfetch
hyfetch
pgadmin4
python3
python3Packages.pip
python3Packages.setuptools
python3Packages.wheel
python3Packages.cryptography
google-cloud-sdk
];
system.stateVersion = "25.11";
};
}
# For Postgres you may need to allow remote connections and adjust pg_hba.conf