diff --git a/flake.lock b/flake.lock index 5a10b98..761f9fc 100644 --- a/flake.lock +++ b/flake.lock @@ -460,11 +460,11 @@ "secrets": { "flake": false, "locked": { - "lastModified": 1778873193, - "narHash": "sha256-RCK8ucxAV4voI/eAnZrY2/RxRohlXYVP4eFWO4ES4n8=", + "lastModified": 1779441912, + "narHash": "sha256-Le50mFgpetFC8gyc1j3+oXEjRV3lZdeU2vqBtoWaAJo=", "ref": "refs/heads/main", - "rev": "b0dd25d41a5ffa4fc1cfb57eeaf24cc9fb777589", - "revCount": 36, + "rev": "847ed2f52fd5ff0ead5958d6932b219b4254a2bf", + "revCount": 38, "type": "git", "url": "ssh://git@git.jfreudenberger.de/JuliusFreudenberger/nix-private.git" }, diff --git a/flake.nix b/flake.nix index e8d1f34..217baab 100644 --- a/flake.nix +++ b/flake.nix @@ -163,6 +163,23 @@ ]; }; + busch-gpu-docker = nixpkgs.lib.nixosSystem rec { + system = "x86_64-linux"; + + specialArgs = { + inherit inputs outputs; + pkgs-unstable = import nixpkgs-unstable { + inherit system; + }; + }; + + modules = [ + ./hosts/busch-gpu-docker + disko.nixosModules.disko + agenix.nixosModules.default + ]; + }; + srv01-hf = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; diff --git a/hosts/busch-gpu-docker/default.nix b/hosts/busch-gpu-docker/default.nix new file mode 100644 index 0000000..d7870cd --- /dev/null +++ b/hosts/busch-gpu-docker/default.nix @@ -0,0 +1,72 @@ +{ inputs, outputs, config, lib, pkgs, pkgs-unstable, ... }: + +{ + imports = + [ + ../../modules/disko/legacy-full-ext4.nix + ./secrets.nix + + ../../users/julius/nixos-server.nix + ../../modules/nix.nix + ../../modules/auto-upgrade.nix + ../../modules/locale.nix + ../../modules/server-cli.nix + ../../modules/sshd.nix + ../../modules/docker.nix + ../../modules/hawser.nix + ../../modules/netbird-client.nix + "${inputs.secrets}/modules/opkssh.nix" + + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # Use the GRUB 2 boot loader. + boot = { + loader.grub = { + enable = true; + }; + tmp.useTmpfs = true; + }; + + hardware = { + graphics.enable = true; + nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.legacy_470; + # TODO GTX 970 or GTX 960 driver 580 (>= 545) + }; + nvidia-container-toolkit.enable = true; + }; + nixpkgs.config.nvidia.acceptLicense = true; + services.xserver.videoDrivers = [ "nvidia" ]; + + networking.hostName = "docker-gpu"; # Define your hostname. + + services.netbird-client = { + enable = true; + managementUrl = "https://netbird.jfreudenberger.de"; + host.setupKey = "830217A8-BE0A-4919-A262-3CF7599487BA"; + docker.setupKey = "C4C9FAE3-5FAE-4949-B8E8-BEDA3B954859"; + dockerSubnet = "40"; + }; + + services.hawser = { + enable = true; + dockhandServerUrl = "wss://dockhand-connect.jfreudenberger.de/api/hawser/connect"; + tokenSecretFile = config.age.secrets.hawser-token; + }; + + # This option defines the first version of NixOS you have installed on this particular machine, + # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. + # Most users should NEVER change this value after the initial install, for any reason, + # even if you've upgraded your system to a new NixOS release. + # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, + # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how + # to actually do that. + # This value being lower than the current NixOS release does NOT mean your system is + # out of date, out of support, or vulnerable. + # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, + # and migrated your data accordingly. + # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . + system.stateVersion = "25.05"; # Did you read the comment? +} diff --git a/hosts/busch-gpu-docker/hardware-configuration.nix b/hosts/busch-gpu-docker/hardware-configuration.nix new file mode 100644 index 0000000..ada6268 --- /dev/null +++ b/hosts/busch-gpu-docker/hardware-configuration.nix @@ -0,0 +1,17 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "ehci_pci" "ahci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/hosts/busch-gpu-docker/secrets.nix b/hosts/busch-gpu-docker/secrets.nix new file mode 100644 index 0000000..093c7a0 --- /dev/null +++ b/hosts/busch-gpu-docker/secrets.nix @@ -0,0 +1,6 @@ +{ inputs, ... }: +{ + age.secrets = { + hawser-token.file = "${inputs.secrets}/secrets/busch-gpu-docker/hawser-token"; + }; +}