lifetracker/modules/components/networking/default.nix
2025-01-25 16:03:42 -08:00

61 lines
1.5 KiB
Nix

{
lib,
pkgs,
config,
username,
...
}:
let
cfg = config.networking;
in
{
options = {
networking = {
enable = lib.mkEnableOption "Enable networking in NixOS and home-manager";
};
};
config = lib.mkIf cfg.enable {
environment = {
systemPackages = [ ];
};
networking = {
extraHosts = ''
10.0.0.24 desktop
'';
networkmanager = {
enable = true;
};
useDHCP = lib.mkDefault true;
wireguard.enable = true;
timeServers = [ "router.home" ];
};
# Fix for automatic-timezoned not working currently (Jan 2025)
systemd.services.set-timezone = {
description = "Kludgily set the timezone based on IP, with an API request to some sketchasaurus website.";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.writeShellScript "set-timezone.sh" ''
IP=$(${pkgs.curl}/bin/curl -s https://api.ipify.org)
/run/current-system/sw/bin/logger "Got IP $IP."
${pkgs.curl}/bin/curl "https://api.ipgeolocation.io/timezone?apiKey=2309807339f84c26a2cb8cb44c31e183&ip=$IP" > /tmp/tz
TZ=$(${pkgs.jq}/bin/jq -r .timezone < /tmp/tz)
timedatectl set-timezone $TZ
/run/current-system/sw/bin/logger "Set timezone to $TZ."
''}";
Restart = "no";
StandardOutput = "journal";
StandardError = "journal";
};
};
};
}