nixos/servers
2026-02-16 13:25:54 -08:00
..
common.nix forgejo good, nginx coming along 2026-02-15 22:46:17 -08:00
forgejo.nix Update server configurations and remove outdated documentation 2026-02-16 13:25:54 -08:00
hugo.nix forgejo good, nginx coming along 2026-02-15 22:46:17 -08:00
nginx.nix Update server configurations and remove outdated documentation 2026-02-16 13:25:54 -08:00
README.md forgejo good, nginx coming along 2026-02-15 22:46:17 -08:00

NixOS Server Configurations

This directory contains server-specific configuration files and modules for various services.

Available Configurations

common.nix

Common server configuration that includes Docker support.

Features:

  • Docker container virtualization
  • Base server utilities

Usage: Include this module in your NixOS configuration for servers that need Docker support.

imports = [ ./nixos/servers/common.nix ];

forgejo.nix

Comprehensive Forgejo Git server configuration module.

Features:

  • Full Forgejo integration using NixOS native services
  • PostgreSQL database with local setup
  • TLS/SSL support via Let's Encrypt
  • Nginx reverse proxy with WebSocket support
  • Git LFS support
  • Automated daily backups with retention
  • OAuth2 authentication (GitHub)
  • Email notifications (SMTP)
  • Security hardening

Configuration Example:

{ config, pkgs, ... }: {
  imports = [ ./nixos/servers/forgejo.nix ];
  
  services.forgejo = {
    enable = true;
    domain = "git.example.com";
    database.createLocally = true;
    backup = {
      enable = true;
      interval = "daily";
      retentionDays = 7;
    };
  };
}

hugo.nix

Docker-based Hugo static site generator configuration.

Features:

  • Hugo web server
  • Remark42 comment system
  • Watchtower for automatic updates

Usage: This file uses a docker-compose style format. Deploy using Docker Compose or migrate to NixOS containers.

Adding a New Server

To add a new server configuration:

  1. Create a new .nix file in this directory
  2. Follow the NixOS module pattern:
    { config, pkgs, lib, ... }: {
      # Your configuration here
    }
    
  3. Import it in your system's flake.nix or configuration.nix

Best Practices

  • Reusable Modules: Design configurations to be reusable across multiple servers
  • Security: Keep sensitive data (passwords, API keys) out of version control
  • Documentation: Document complex configurations with inline comments
  • Modularization: Split complex services into separate files

Integration with Main Configuration

To use these server modules in your NixOS configuration, add them to your flake.nix:

{
  description = "My NixOS configuration";

  outputs = { self, nixpkgs, ... }: {
    nixosConfigurations.my-server = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        ./nixos/servers/common.nix
        ./nixos/servers/forgejo.nix
        # Other configurations
        ./systems/my-server.nix
      ];
    };
  };
}

Maintenance

Backups

Server configurations should be backed up regularly. The Forgejo module includes automated backups. For other services, implement appropriate backup strategies.

Updates

Update server configurations with:

sudo nixos-rebuild switch

Monitoring

Monitor server services:

sudo systemctl status <service-name>
sudo journalctl -u <service-name> -f

Troubleshooting

Common Issues

  1. Docker Not Starting:

    sudo systemctl status docker.service
    sudo journalctl -u docker.service -f
    
  2. Port Conflicts: Check if services are conflicting on ports:

    sudo netstat -tulpn
    
  3. Permission Issues: Verify file ownership and permissions for service directories

Additional Resources