From bb8e2171ceb93897cf08e3b35860fec0addbb671 Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Fri, 24 Jan 2025 19:53:44 -0500 Subject: [PATCH] add nixos & move home-manager config --- README.md | 56 +++--- flake.nix | 32 +++ home-manager/README.md | 37 ++++ {bash => home-manager/bash}/default.nix | 0 {direnv => home-manager/direnv}/default.nix | 0 .../fastfetch}/config/config.jsonc | 0 .../fastfetch}/default.nix | 0 .../ghostty}/config/ghostty.conf | 0 {ghostty => home-manager/ghostty}/default.nix | 0 {git => home-manager/git}/config/.gitignore | 0 {git => home-manager/git}/config/personal | 0 {git => home-manager/git}/config/work | 0 {git => home-manager/git}/default.nix | 0 home.nix => home-manager/home.nix | 0 {htop => home-manager/htop}/config/htoprc | 0 {htop => home-manager/htop}/default.nix | 0 .../nvim}/config/lua/aerial-config.lua | 0 .../nvim}/config/lua/autopairs-config.lua | 0 .../nvim}/config/lua/base.lua | 0 .../nvim}/config/lua/cmp-config.lua | 0 .../nvim}/config/lua/comment-config.lua | 0 .../nvim}/config/lua/dap-config.lua | 0 .../nvim}/config/lua/diffview-config.lua | 0 .../nvim}/config/lua/git-ref.lua | 0 .../nvim}/config/lua/git-signs.lua | 0 .../nvim}/config/lua/init.lua | 0 .../nvim}/config/lua/leap-config.lua | 0 .../nvim}/config/lua/llm.lua | 0 .../nvim}/config/lua/lsp-config.lua | 0 .../nvim}/config/lua/lsp-lines-config.lua | 0 .../nvim}/config/lua/lualine-config.lua | 0 .../nvim}/config/lua/neotree-config.lua | 0 .../nvim}/config/lua/noice-config.lua | 0 .../nvim}/config/lua/numb-config.lua | 0 .../nvim}/config/lua/silicon-config.lua | 0 .../nvim}/config/lua/telescope-config.lua | 0 .../nvim}/config/lua/toggleterm-config.lua | 0 .../nvim}/config/lua/ts-config.lua | 0 .../nvim}/config/lua/which-key-config.lua | 0 {nvim => home-manager/nvim}/default.nix | 0 .../powerline}/default.nix | 0 .../readline}/default.nix | 0 hosts/k3s.nix | 119 +++++++++++ hosts/llama-server.nix | 187 ++++++++++++++++++ 44 files changed, 406 insertions(+), 25 deletions(-) create mode 100644 flake.nix create mode 100644 home-manager/README.md rename {bash => home-manager/bash}/default.nix (100%) rename {direnv => home-manager/direnv}/default.nix (100%) rename {fastfetch => home-manager/fastfetch}/config/config.jsonc (100%) rename {fastfetch => home-manager/fastfetch}/default.nix (100%) rename {ghostty => home-manager/ghostty}/config/ghostty.conf (100%) rename {ghostty => home-manager/ghostty}/default.nix (100%) rename {git => home-manager/git}/config/.gitignore (100%) rename {git => home-manager/git}/config/personal (100%) rename {git => home-manager/git}/config/work (100%) rename {git => home-manager/git}/default.nix (100%) rename home.nix => home-manager/home.nix (100%) rename {htop => home-manager/htop}/config/htoprc (100%) rename {htop => home-manager/htop}/default.nix (100%) rename {nvim => home-manager/nvim}/config/lua/aerial-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/autopairs-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/base.lua (100%) rename {nvim => home-manager/nvim}/config/lua/cmp-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/comment-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/dap-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/diffview-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/git-ref.lua (100%) rename {nvim => home-manager/nvim}/config/lua/git-signs.lua (100%) rename {nvim => home-manager/nvim}/config/lua/init.lua (100%) rename {nvim => home-manager/nvim}/config/lua/leap-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/llm.lua (100%) rename {nvim => home-manager/nvim}/config/lua/lsp-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/lsp-lines-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/lualine-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/neotree-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/noice-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/numb-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/silicon-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/telescope-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/toggleterm-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/ts-config.lua (100%) rename {nvim => home-manager/nvim}/config/lua/which-key-config.lua (100%) rename {nvim => home-manager/nvim}/default.nix (100%) rename {powerline => home-manager/powerline}/default.nix (100%) rename {readline => home-manager/readline}/default.nix (100%) create mode 100644 hosts/k3s.nix create mode 100644 hosts/llama-server.nix diff --git a/README.md b/README.md index 9f1e134..5d997a6 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,43 @@ -# Nix Home Manager Configuration +# Deploy NixOS -## Upgrade +## Copy Config ```bash -# Update System Channels -sudo nix-channel --add https://nixos.org/channels/nixpkgs-24.11-darwin nixpkgs -sudo nix-channel --update - -# Update Home Manager -nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager -nix-channel --update - -# Build Home Manager -home-manager switch +scp -r * nixos@10.10.10.10:/tmp/ ``` -## Clean Garbage - -NOTE: This will remove previous generations +## Partition Drives ```bash -sudo nix-collect-garbage --delete-old -nix-collect-garbage --delete-old +# WARNING: Be sure to check drive mappings +sudo fdisk -l + +# Partition Disk +sudo nix \ + --experimental-features "nix-command flakes" \ + run github:nix-community/disko -- \ + --mode disko \ + --flake /tmp#lin-va-llama1 ``` -## OS Update - -`/etc/bashrc` may get overridden. To properly load Nix, prepend the following: +## Install NixOS ```bash -# Nix -if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then - . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' -fi -# End Nix +# Install +sudo nixos-install --flake /tmp#lin-va-llama1 + +# Reboot +sudo reboot +``` + +## Copy Config to Host + +```bash +scp -r * nixos@10.10.10.10:/etc/nixos +``` + +## Rebuild NixOS + +```bash +sudo nixos-rebuild switch ``` diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..95072b3 --- /dev/null +++ b/flake.nix @@ -0,0 +1,32 @@ +{ + description = "NixOS Hosts"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; + disko.url = "github:nix-community/disko"; + }; + + outputs = { self, nixpkgs, disko }: { + nixosConfigurations.lin-va-llama1 = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + disko.nixosModules.disko + ./hosts/llama-server.nix + { + networking.hostName = "lin-va-llama1"; + } + ]; + }; + + nixosConfigurations.lin-va-k3s1 = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + disko.nixosModules.disko + ./hosts/k3s.nix + { + networking.hostName = "lin-va-k3s1"; + } + ]; + }; + }; +} diff --git a/home-manager/README.md b/home-manager/README.md new file mode 100644 index 0000000..9f1e134 --- /dev/null +++ b/home-manager/README.md @@ -0,0 +1,37 @@ +# Nix Home Manager Configuration + +## Upgrade + +```bash +# Update System Channels +sudo nix-channel --add https://nixos.org/channels/nixpkgs-24.11-darwin nixpkgs +sudo nix-channel --update + +# Update Home Manager +nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.11.tar.gz home-manager +nix-channel --update + +# Build Home Manager +home-manager switch +``` + +## Clean Garbage + +NOTE: This will remove previous generations + +```bash +sudo nix-collect-garbage --delete-old +nix-collect-garbage --delete-old +``` + +## OS Update + +`/etc/bashrc` may get overridden. To properly load Nix, prepend the following: + +```bash +# Nix +if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then + . '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' +fi +# End Nix +``` diff --git a/bash/default.nix b/home-manager/bash/default.nix similarity index 100% rename from bash/default.nix rename to home-manager/bash/default.nix diff --git a/direnv/default.nix b/home-manager/direnv/default.nix similarity index 100% rename from direnv/default.nix rename to home-manager/direnv/default.nix diff --git a/fastfetch/config/config.jsonc b/home-manager/fastfetch/config/config.jsonc similarity index 100% rename from fastfetch/config/config.jsonc rename to home-manager/fastfetch/config/config.jsonc diff --git a/fastfetch/default.nix b/home-manager/fastfetch/default.nix similarity index 100% rename from fastfetch/default.nix rename to home-manager/fastfetch/default.nix diff --git a/ghostty/config/ghostty.conf b/home-manager/ghostty/config/ghostty.conf similarity index 100% rename from ghostty/config/ghostty.conf rename to home-manager/ghostty/config/ghostty.conf diff --git a/ghostty/default.nix b/home-manager/ghostty/default.nix similarity index 100% rename from ghostty/default.nix rename to home-manager/ghostty/default.nix diff --git a/git/config/.gitignore b/home-manager/git/config/.gitignore similarity index 100% rename from git/config/.gitignore rename to home-manager/git/config/.gitignore diff --git a/git/config/personal b/home-manager/git/config/personal similarity index 100% rename from git/config/personal rename to home-manager/git/config/personal diff --git a/git/config/work b/home-manager/git/config/work similarity index 100% rename from git/config/work rename to home-manager/git/config/work diff --git a/git/default.nix b/home-manager/git/default.nix similarity index 100% rename from git/default.nix rename to home-manager/git/default.nix diff --git a/home.nix b/home-manager/home.nix similarity index 100% rename from home.nix rename to home-manager/home.nix diff --git a/htop/config/htoprc b/home-manager/htop/config/htoprc similarity index 100% rename from htop/config/htoprc rename to home-manager/htop/config/htoprc diff --git a/htop/default.nix b/home-manager/htop/default.nix similarity index 100% rename from htop/default.nix rename to home-manager/htop/default.nix diff --git a/nvim/config/lua/aerial-config.lua b/home-manager/nvim/config/lua/aerial-config.lua similarity index 100% rename from nvim/config/lua/aerial-config.lua rename to home-manager/nvim/config/lua/aerial-config.lua diff --git a/nvim/config/lua/autopairs-config.lua b/home-manager/nvim/config/lua/autopairs-config.lua similarity index 100% rename from nvim/config/lua/autopairs-config.lua rename to home-manager/nvim/config/lua/autopairs-config.lua diff --git a/nvim/config/lua/base.lua b/home-manager/nvim/config/lua/base.lua similarity index 100% rename from nvim/config/lua/base.lua rename to home-manager/nvim/config/lua/base.lua diff --git a/nvim/config/lua/cmp-config.lua b/home-manager/nvim/config/lua/cmp-config.lua similarity index 100% rename from nvim/config/lua/cmp-config.lua rename to home-manager/nvim/config/lua/cmp-config.lua diff --git a/nvim/config/lua/comment-config.lua b/home-manager/nvim/config/lua/comment-config.lua similarity index 100% rename from nvim/config/lua/comment-config.lua rename to home-manager/nvim/config/lua/comment-config.lua diff --git a/nvim/config/lua/dap-config.lua b/home-manager/nvim/config/lua/dap-config.lua similarity index 100% rename from nvim/config/lua/dap-config.lua rename to home-manager/nvim/config/lua/dap-config.lua diff --git a/nvim/config/lua/diffview-config.lua b/home-manager/nvim/config/lua/diffview-config.lua similarity index 100% rename from nvim/config/lua/diffview-config.lua rename to home-manager/nvim/config/lua/diffview-config.lua diff --git a/nvim/config/lua/git-ref.lua b/home-manager/nvim/config/lua/git-ref.lua similarity index 100% rename from nvim/config/lua/git-ref.lua rename to home-manager/nvim/config/lua/git-ref.lua diff --git a/nvim/config/lua/git-signs.lua b/home-manager/nvim/config/lua/git-signs.lua similarity index 100% rename from nvim/config/lua/git-signs.lua rename to home-manager/nvim/config/lua/git-signs.lua diff --git a/nvim/config/lua/init.lua b/home-manager/nvim/config/lua/init.lua similarity index 100% rename from nvim/config/lua/init.lua rename to home-manager/nvim/config/lua/init.lua diff --git a/nvim/config/lua/leap-config.lua b/home-manager/nvim/config/lua/leap-config.lua similarity index 100% rename from nvim/config/lua/leap-config.lua rename to home-manager/nvim/config/lua/leap-config.lua diff --git a/nvim/config/lua/llm.lua b/home-manager/nvim/config/lua/llm.lua similarity index 100% rename from nvim/config/lua/llm.lua rename to home-manager/nvim/config/lua/llm.lua diff --git a/nvim/config/lua/lsp-config.lua b/home-manager/nvim/config/lua/lsp-config.lua similarity index 100% rename from nvim/config/lua/lsp-config.lua rename to home-manager/nvim/config/lua/lsp-config.lua diff --git a/nvim/config/lua/lsp-lines-config.lua b/home-manager/nvim/config/lua/lsp-lines-config.lua similarity index 100% rename from nvim/config/lua/lsp-lines-config.lua rename to home-manager/nvim/config/lua/lsp-lines-config.lua diff --git a/nvim/config/lua/lualine-config.lua b/home-manager/nvim/config/lua/lualine-config.lua similarity index 100% rename from nvim/config/lua/lualine-config.lua rename to home-manager/nvim/config/lua/lualine-config.lua diff --git a/nvim/config/lua/neotree-config.lua b/home-manager/nvim/config/lua/neotree-config.lua similarity index 100% rename from nvim/config/lua/neotree-config.lua rename to home-manager/nvim/config/lua/neotree-config.lua diff --git a/nvim/config/lua/noice-config.lua b/home-manager/nvim/config/lua/noice-config.lua similarity index 100% rename from nvim/config/lua/noice-config.lua rename to home-manager/nvim/config/lua/noice-config.lua diff --git a/nvim/config/lua/numb-config.lua b/home-manager/nvim/config/lua/numb-config.lua similarity index 100% rename from nvim/config/lua/numb-config.lua rename to home-manager/nvim/config/lua/numb-config.lua diff --git a/nvim/config/lua/silicon-config.lua b/home-manager/nvim/config/lua/silicon-config.lua similarity index 100% rename from nvim/config/lua/silicon-config.lua rename to home-manager/nvim/config/lua/silicon-config.lua diff --git a/nvim/config/lua/telescope-config.lua b/home-manager/nvim/config/lua/telescope-config.lua similarity index 100% rename from nvim/config/lua/telescope-config.lua rename to home-manager/nvim/config/lua/telescope-config.lua diff --git a/nvim/config/lua/toggleterm-config.lua b/home-manager/nvim/config/lua/toggleterm-config.lua similarity index 100% rename from nvim/config/lua/toggleterm-config.lua rename to home-manager/nvim/config/lua/toggleterm-config.lua diff --git a/nvim/config/lua/ts-config.lua b/home-manager/nvim/config/lua/ts-config.lua similarity index 100% rename from nvim/config/lua/ts-config.lua rename to home-manager/nvim/config/lua/ts-config.lua diff --git a/nvim/config/lua/which-key-config.lua b/home-manager/nvim/config/lua/which-key-config.lua similarity index 100% rename from nvim/config/lua/which-key-config.lua rename to home-manager/nvim/config/lua/which-key-config.lua diff --git a/nvim/default.nix b/home-manager/nvim/default.nix similarity index 100% rename from nvim/default.nix rename to home-manager/nvim/default.nix diff --git a/powerline/default.nix b/home-manager/powerline/default.nix similarity index 100% rename from powerline/default.nix rename to home-manager/powerline/default.nix diff --git a/readline/default.nix b/home-manager/readline/default.nix similarity index 100% rename from readline/default.nix rename to home-manager/readline/default.nix diff --git a/hosts/k3s.nix b/hosts/k3s.nix new file mode 100644 index 0000000..f1a1e01 --- /dev/null +++ b/hosts/k3s.nix @@ -0,0 +1,119 @@ +{ config, pkgs, ... }: + +{ + # Enable Flakes + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # System Configuration + boot.kernelModules = [ "nvme_tcp" ]; # OpenEBS Mayastor Requirement + boot.kernel.sysctl = { + "vm.nr_hugepages" = 1024; + }; + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot"; + + # Disk Configuration + disko.devices = { + disk = { + sda = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "512M"; + type = "EF00"; # EFI + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; + + + # Network Configuration + networking = { + networkmanager.enable = true; + firewall = { + enable = true; + + # Single Node Required Ports + allowedTCPPorts = [ 6443 ]; + + # Multi Node Required Ports + # allowedTCPPorts = [ 6443 2379 2380 10250 ]; + # allowedUDPPorts = [ 8472 ]; + }; + }; + + # Enable K3s + services.k3s = { + enable = true; + role = "server"; + extraFlags = toString [ + "--disable=traefik" # Should we enable? + "--disable=servicelb" + ]; + }; + + # Enable SSH Server + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = false; # Disable Password Login + PermitRootLogin = "prohibit-password"; # Disable Password Login + }; + }; + + # User Configuration + users.users.root = { + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA8P84lWL/p13ZBFNwITm/dLWWL8s9pVmdOImM5gaJAiTLY+DheUvG6YsveB2/5STseiJ34g7Na9TW1mtTLL8zDqPvj3NbprQiYlLJKMbCk6dtfdD4nLMHl8B48e1h699XiZDp2/c+jJb0MkLOFrps+FbPqt7pFt1Pj29tFy8BCg0LGndu6KO+HqYS+aM5tp5hZESo1RReiJ8aHsu5X7wW46brN4gfyyu+8X4etSZAB9raWqlln9NKK7G6as6X+uPypvSjYGSTC8TSePV1iTPwOxPk2+1xBsK7EBLg3jNrrYaiXLnZvBOOhm11JmHzqEJ6386FfQO+0r4iDVxmvi+ojw== rsa-key-20141114" + ]; + hashedPassword = null; # Disable Password Login + }; + + # System Packages + environment.systemPackages = with pkgs; [ + k9s + kubectl + kubernetes-helm + nfs-utils + vim + ]; + + # Enable Container Features + virtualisation = { + docker.enable = false; + containerd = { + enable = true; + settings = { + version = 2; + plugins."io.containerd.grpc.v1.cri" = { + containerd.runtimes.runc = { + runtime_type = "io.containerd.runc.v2"; + }; + }; + }; + }; + }; + + # System State Version + system.stateVersion = "24.11"; +} diff --git a/hosts/llama-server.nix b/hosts/llama-server.nix new file mode 100644 index 0000000..59d5c94 --- /dev/null +++ b/hosts/llama-server.nix @@ -0,0 +1,187 @@ +{ config, pkgs, ... }: + +let + cuda-llama = (pkgs.llama-cpp.override { + cudaSupport = true; + }).overrideAttrs (oldAttrs: { + cmakeFlags = oldAttrs.cmakeFlags ++ [ + "-DGGML_CUDA_ENABLE_UNIFIED_MEMORY=ON" + + # Disable CPU Instructions - Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz + "-DLLAMA_FMA=OFF" + "-DLLAMA_AVX2=OFF" + "-DLLAMA_AVX512=OFF" + "-DGGML_FMA=OFF" + "-DGGML_AVX2=OFF" + "-DGGML_AVX512=OFF" + ]; + }); + + # Define Model Vars + modelDir = "/models"; + modelName = "qwen2.5-coder-7b-q8_0.gguf"; + modelPath = "${modelDir}/${modelName}"; + modelUrl = "https://huggingface.co/ggml-org/Qwen2.5-Coder-7B-Q8_0-GGUF/resolve/main/${modelName}?download=true"; +in + +{ + # Enable Flakes + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # System Configuration + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot"; + + # Allow Nvidia & CUDA + nixpkgs.config.allowUnfree = true; + + # Enable Graphics + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = [ pkgs.cudatoolkit ]; + }; + + # Load Nvidia Driver Module + services.xserver.videoDrivers = [ "nvidia" ]; + + # Nvidia Package Configuration + hardware.nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.stable; + modesetting.enable = true; + powerManagement.enable = true; + open = false; + nvidiaSettings = true; + }; + + # Disk Configuration + disko.devices = { + disk = { + sda = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + boot = { + size = "512M"; + type = "EF00"; # EFI + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + root = { + size = "100%"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + }; + }; + }; + }; + }; + }; + }; + + + # Network Configuration + networking.networkmanager.enable = true; + + # Download Model + systemd.services.download-model = { + description = "Download Model"; + wantedBy = [ "multi-user.target" ]; + before = [ "llama-cpp.service" ]; + path = [ pkgs.curl pkgs.coreutils ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + User = "root"; + Group = "root"; + }; + script = '' + set -euo pipefail + + if [ ! -f "${modelPath}" ]; then + mkdir -p "${modelDir}" + # Add -f flag to follow redirects and -L for location + # Add --fail flag to exit with error on HTTP errors + # Add -C - to resume interrupted downloads + curl -f -L -C - \ + -H "Accept: application/octet-stream" \ + --retry 3 \ + --retry-delay 5 \ + --max-time 1800 \ + "${modelUrl}" \ + -o "${modelPath}.tmp" && \ + mv "${modelPath}.tmp" "${modelPath}" + fi + ''; + }; + + + # Setup LLama API Service + systemd.services.llama-cpp = { + after = [ "download-model.service" ]; + requires = [ "download-model.service" ]; + }; + + # Enable LLama API + services.llama-cpp = { + enable = true; + host = "0.0.0.0"; + package = cuda-llama; + model = modelPath; + port = 8080; + openFirewall = true; + extraFlags = [ + "-ngl" + "99" + "-fa" + "-ub" + "512" + "-b" + "512" + "-dt" + "0.1" + "--ctx-size" + "4096" + "--cache-reuse" + "256" + ]; + }; + + # Enable SSH Server + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = false; # Disable Password Login + PermitRootLogin = "prohibit-password"; # Disable Password Login + }; + }; + + # User Configuration + users.users.root = { + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA8P84lWL/p13ZBFNwITm/dLWWL8s9pVmdOImM5gaJAiTLY+DheUvG6YsveB2/5STseiJ34g7Na9TW1mtTLL8zDqPvj3NbprQiYlLJKMbCk6dtfdD4nLMHl8B48e1h699XiZDp2/c+jJb0MkLOFrps+FbPqt7pFt1Pj29tFy8BCg0LGndu6KO+HqYS+aM5tp5hZESo1RReiJ8aHsu5X7wW46brN4gfyyu+8X4etSZAB9raWqlln9NKK7G6as6X+uPypvSjYGSTC8TSePV1iTPwOxPk2+1xBsK7EBLg3jNrrYaiXLnZvBOOhm11JmHzqEJ6386FfQO+0r4iDVxmvi+ojw== rsa-key-20141114" + ]; + hashedPassword = null; # Disable Password Login + }; + + # System Packages + environment.systemPackages = with pkgs; [ + htop + nvtop + tmux + vim + wget + ]; + + # System State Version + system.stateVersion = "24.11"; +}