{ pkgs, lib, config, ... }: with lib; let cfg = config.node; mkSANs = host: [ host.name host.address "127.0.0.1" ]; configuration = { deployment.targetHost = cfg.address; boot = { loader.systemd-boot.enable = false; loader.efi.canTouchEfiVariables = true; }; console = { font = "Lat2-Terminus16"; keyMap = "us"; }; i18n = { defaultLocale = "en_DK.UTF-8"; extraLocaleSettings = { LC_TIME = "en_DK.UTF-8"; }; }; time.timeZone = "Europe/Oslo"; features = { os = { externalInterface = "ens3"; docker.enable = true; adminAuthorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKiAS30ZO+wgfAqDE9Y7VhRunn2QszPHA5voUwo+fGOf jonas" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDULdlLC8ZLu9qBZUYsjhpr6kv5RH4yPkekXQdD7prkqapyoptUkO1nOTDwy7ZsKDxmp9Zc6OtdhgoJbowhGW3VIZPmooWO8twcaYDpkxEBLUehY/n8SlAwBtiHJ4mTLLcynJMVrjmTQLF3FeWVof0Aqy6UtZceFpLp1eNkiHTCM3anwtb9+gfr91dX1YsAOqxqv7ooRDu5rCRUvOi4OvRowepyuBcCjeWpTkJHkC9WGxuESvDV3CySWkGC2fF2LHkAu6SFsFE39UA5ZHo0b1TK+AFqRFiBAb7ULmtuno1yxhpBxbozf8+Yyc7yLfMNCyBpL1ci7WnjKkghQv7yM1xN2XMJLpF56v0slSKMoAs7ThoIlmkRm/6o3NCChgu0pkpNg/YP6A3HfYiEDgChvA6rAHX6+to50L9xF3ajqk4BUzWd/sCk7Q5Op2lzj31L53Ryg8vMP8hjDjYcgEcCCsGOcjUVgcsmfC9LupwRIEz3aF14AWg66+3zAxVho8ozjes= jonas.juselius@juselius.io" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCk5EKXxo/KLogjqSxSf/GkQdZ30UxB3wXc5k6Y6RRKQ/5iJ+XyYTbuqYOUp30p54apZzbayU2icahE/upr754lQicQwJtOXW/Iut57VRhSpq4P+mKCIdT58xCUkAZYr8Aja8UjHlYeJgFvp023K/fqmwbapu8R1gh4bzXm7uU1XeJoYfuOb+Cb8NGMn1ICrw2aztA0yVOXZ7tyJd2qyr1+6PuM/Ca2nKN4wLIX2vwyN3vZjR15nkIaHQGlTaJlNk2NEG1YTxsIQ9axDjNtyL80kjUr5M8zxW6s0h3451zr1b21EetP1i+1POIjS9uWXv5iabF+1Qb1GaS4FAYzzpqNY+moLzY7Zqfi05MPsMYkNoZ1Kg5aj0IuZb0OM9i6ZJrFs9nYAGG0uLSUTfrs957f9nokFyILGYg5xY46YN3uQrqfZifvcR0KaEdxEKvnfq0qrNG3uYLR/OYm2yblRcNbWgDoQ1hH7qa9uJM2JrPM07s4sJGkqfAib8Hwz9+l7jMrL6KIGUOA4aX0B1KZaIKKiZa42WlgdbeA17aW3laIqS5mZCkI3pLMYZAxe+A6rQi+V8ZAvDSyOL/Vws3lboXaN5QLu17R8uCY7MkIAvRBiZSpdWNeX3JO5m6zexkxkrFlxyEBf+ott4ATSw+eMYMs8i5xQRqPjgO1cABWkUdGpw== martin.moe.carstens@itpartner.no" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCmqQuK1c56lBhSjWIXDFaaL44rm61Q15RULEI1qFd+mqVNNsrQ4t+IEx8rh99SYF0C8oD4eJqO78H+XkRBFCP/d/VArtPOdCAl9fPPHXtT3KgPywwRccVG7qpOsKs4VZmVM/Hd5t7cfkaeF0v+CWrodVxqozHxLPwkQ0xVg4bVpo8+9OZ2Hy09F3yBJviDvxcWtevFeUUeFX4rdNVnX5ew2knmDXn6/EFuIHhTYIlYMlIXOdCejPrRqcgw0F1sJSzOX7u+bumeOHJ1LBaHnts2y9Sc5tDQ5mpbWG868WkRhElnhOYzlDpqUxlhJRfQnsFvyHGbmDetzOS9uJTZDrdCTScjmEGxWyMh/dY5e3SVe8pEsIY5lWjyxkavkBUWTdLsV4a1oQjnwbvGWJQI2rYYBjDw2N4RU3j388P6H2IjAhtTwtCX2V8Qji27Y4U3RRzzY+UWqAyEiPNVNLXmnPTivXtEHL4fqVmDjLRoGwrvQ77Ir2V9bdaJ8sYwCbaktyQ2rwYDU+4yjlnJo2Ftb4iTgrlVorIFn+Ovu3UvG6ygxVjKaoJ9ka3w8hMIb4EA3lw7DlIVd1elbMgsybLiiamf5aPPZ/W5EPQ53aAs1ef6OPkOWW+SdIgZBXYL3lFuDc/15vmnWyVomrOf7/sWTTUkxp1YfgaLi7+YcSMfz/ZBDQ== rjod@SWAMPTHING" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDEN59dUXFwoGL3reyVukqZA59fKJOCUZg19zndEqmnv39/Wi5JGS8uwSjetpwrmtwdwc4pq4fOeiAHtWm6oq7dNjMEvUqP2THehGXMr+fK4ElDgrA1NzUxvSXFhTmuQXGGNt7hl8Knsr5ySkLWrmcWkUn6z8rvefx++pTh3J7oDCYugTW/VGQaKYxHwQfZf1goppkQo8tJH5crJwgeaiTCn6645+rkVTYIzY4JVvXlvNuYWxwUaaeV7ztvdkHJc6WGCWQZGg9M3fYp52tC4HOlZ2aWRQ3PJuQ4wpNHGODwsZqB0yNgGnWZ9KH5+sOz0+3He5ZIPJo89HaqGCZi8wWNfhm+GHMDysxA2Ht+hvgBDccN9dDaSvXlUP1EtgFp8rG2baXEeHk3qMMJACxNuqVf4d8j/WIf0O5KswsiCLxdJFEcfDv573iA6rmM6R6oVvlAmO76K+sCD2T2Uy9WGlGIKdGtvC9dhbiB6d8clO4qDRzBPk6EUEFRFxwo4JkRx7XKpJkmbIl1gT22Btkwf5qjyPp025opaNFeEsP5s3LV0e+RY8VN0SpnOBdfyfwiXRDbunqRqZ662aBLGH0dAY1ocfUO1CdZerJ2ceLEY8ma/rC045arzwx4v+R538SnokyKzWsfwGWB7VzdwQZ2os/hLA6wmu9RPhuzmNFzjdrIsQ== remi@fork" ]; }; k8s = { enable = true; node.enable = true; clusterName = "k1"; initca = ./ca; cidr = "10.11.0.0/16"; master = { name = "k1-0"; address = "10.1.30.100"; extraSANs = [ "k1.itpartner.no" ]; }; ingressNodes = [ "k1-0.itpartner.intern" "k1-1.itpartner.intern" "k1-2.itpartner.intern" ]; fileserver = "fs1-0"; charts = { acme_email = "innovasjon@itpartner.no"; grafana_smtp_user = "utvikling"; grafana_smtp_password = "S0m3rp0m@de#21!"; }; }; }; networking = { hostName = cfg.name; domain = "itpartner.intern"; nameservers = [ "8.8.8.8" ]; search = [ "itpartner.no" ]; defaultGateway = "10.1.30.1"; extraHosts = import ../hosts.nix; interfaces.ens3 = { useDHCP = false; ipv4.addresses = [ { address = cfg.address; prefixLength = 24; } ]; }; }; services.kubernetes.kubelet.extraSANs = mkSANs { name = cfg.name; address = cfg.address; }; }; in { options.node = { address = mkOption { type = types.str; default = null; }; name = mkOption { type = types.str; default = null; }; }; config = configuration; imports = [ ../../modules ../../nixos ]; }