{ 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"; 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 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"; }; }