From 5c37ad035c00d1e3b9d222a9b01a605cbb415dd9 Mon Sep 17 00:00:00 2001 From: ahuston-0 Date: Sun, 15 Mar 2026 15:56:06 -0400 Subject: [PATCH 1/5] add ollama --- systems/artemision/configuration.nix | 21 +++++++++++++++++++++ systems/palatine-hill/configuration.nix | 6 ++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/systems/artemision/configuration.nix b/systems/artemision/configuration.nix index 79a6c1b..607f7ee 100644 --- a/systems/artemision/configuration.nix +++ b/systems/artemision/configuration.nix @@ -58,6 +58,23 @@ }; gvfs.enable = true; + ollama = { + enable = true; + package = pkgs.ollama-rocm; + loadModels = [ + "dolphin3" + "gemma3" + "gemma3:27b" + "deepseek-r1:latest" + "deepseek-r1:1.5b" + "qwen3" + "qwen2.5-coder" + ]; + }; + open-webui = { + enable = true; + port = 21212; + }; fwupd = { enable = true; @@ -86,6 +103,10 @@ "KWIN_DRM_NO_DIRECT_SCANOUT" = "1"; }; + #nixpkgs.config = { + # rocmSupport = true; + #}; + sops = { defaultSopsFile = ./secrets.yaml; #secrets = { diff --git a/systems/palatine-hill/configuration.nix b/systems/palatine-hill/configuration.nix index c41c3e8..950c782 100644 --- a/systems/palatine-hill/configuration.nix +++ b/systems/palatine-hill/configuration.nix @@ -25,8 +25,10 @@ programs.git.lfs.enable = false; - nixpkgs.config.packageOverrides = pkgs: { - vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + nixpkgs.config = { + packageOverrides = pkgs: { + vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + }; }; boot = { -- 2.53.0 From acbda5c4c912b00792441b794acee1f66141cf9d Mon Sep 17 00:00:00 2001 From: ahuston-0 Date: Thu, 19 Mar 2026 23:17:17 -0400 Subject: [PATCH 2/5] add zed, ollama, kubernetes --- modules/kubernetes.nix | 78 ++++++++++++ systems/artemision/configuration.nix | 23 +--- systems/artemision/programs.nix | 1 + systems/palatine-hill/configuration.nix | 8 ++ systems/palatine-hill/ollama.nix | 53 +++++++++ users/alice/non-server.nix | 152 +++++++++++++++++------- 6 files changed, 256 insertions(+), 59 deletions(-) create mode 100644 modules/kubernetes.nix create mode 100644 systems/palatine-hill/ollama.nix diff --git a/modules/kubernetes.nix b/modules/kubernetes.nix new file mode 100644 index 0000000..fe269a0 --- /dev/null +++ b/modules/kubernetes.nix @@ -0,0 +1,78 @@ +{ + config, + pkgs, + lib, + ... +}: + +{ + options = { + services.kubernetes = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Whether to enable Kubernetes services"; + }; + + version = lib.mkOption { + type = lib.types.str; + default = "1.28.0"; + description = "Kubernetes version to use"; + }; + + clusterName = lib.mkOption { + type = lib.types.str; + default = "palatine-hill-cluster"; + description = "Name of the Kubernetes cluster"; + }; + + controlPlaneEndpoint = lib.mkOption { + type = lib.types.str; + default = "localhost:6443"; + description = "Control plane endpoint"; + }; + + networking = lib.mkOption { + type = lib.types.attrs; + default = { }; + description = "Kubernetes networking configuration"; + }; + }; + }; + + config = lib.mkIf config.services.kubernetes.enable { + environment.systemPackages = with pkgs; [ + kubectl + kubernetes + ]; + + # Enable containerd for Kubernetes + virtualisation.containerd.enable = true; + + # Enable kubelet + services.kubelet = { + enable = true; + extraFlags = { + "pod-infra-container-image" = "registry.k8s.io/pause:3.9"; + }; + }; + + # Enable kubeadm for cluster initialization + environment.etc."kubeadm.yaml".text = '' + apiVersion: kubeadm.k8s.io/v1beta3 + kind: InitConfiguration + localAPIEndpoint: + advertiseAddress: 127.0.0.1 + bindPort: 6443 + --- + apiVersion: kubeadm.k8s.io/v1beta3 + kind: ClusterConfiguration + clusterName: ${config.services.kubernetes.clusterName} + controlPlaneEndpoint: ${config.services.kubernetes.controlPlaneEndpoint} + networking: + serviceSubnet: 10.96.0.0/12 + podSubnet: 10.244.0.0/16 + dnsDomain: cluster.local + ''; + }; +} diff --git a/systems/artemision/configuration.nix b/systems/artemision/configuration.nix index 607f7ee..2edc4b9 100644 --- a/systems/artemision/configuration.nix +++ b/systems/artemision/configuration.nix @@ -1,5 +1,4 @@ { - config, lib, pkgs, ... @@ -58,23 +57,6 @@ }; gvfs.enable = true; - ollama = { - enable = true; - package = pkgs.ollama-rocm; - loadModels = [ - "dolphin3" - "gemma3" - "gemma3:27b" - "deepseek-r1:latest" - "deepseek-r1:1.5b" - "qwen3" - "qwen2.5-coder" - ]; - }; - open-webui = { - enable = true; - port = 21212; - }; fwupd = { enable = true; @@ -95,7 +77,10 @@ }; }; - users.users.alice.extraGroups = [ "calibre-web" ]; + users.users = { + alice.extraGroups = [ "calibre-web" ]; + }; + users.groups.ollama = { }; system.stateVersion = "24.05"; diff --git a/systems/artemision/programs.nix b/systems/artemision/programs.nix index f0d7e7c..af32a7d 100644 --- a/systems/artemision/programs.nix +++ b/systems/artemision/programs.nix @@ -16,6 +16,7 @@ candy-icons chromium chromedriver + claude-code croc deadnix direnv diff --git a/systems/palatine-hill/configuration.nix b/systems/palatine-hill/configuration.nix index 950c782..bb726bc 100644 --- a/systems/palatine-hill/configuration.nix +++ b/systems/palatine-hill/configuration.nix @@ -17,6 +17,7 @@ ./minio.nix ./networking.nix ./nextcloud.nix + ./ollama.nix #./plex ./postgresql.nix ./samba.nix @@ -99,6 +100,13 @@ smartd.enable = true; calibre-server.enable = false; + # Kubernetes example configuration + # To enable Kubernetes, uncomment the following: + # kubernetes = { + # enable = true; + # clusterName = "palatine-hill-cluster"; + # controlPlaneEndpoint = "localhost:6443"; + # }; }; nix.gc.options = "--delete-older-than 150d"; diff --git a/systems/palatine-hill/ollama.nix b/systems/palatine-hill/ollama.nix new file mode 100644 index 0000000..8ee64db --- /dev/null +++ b/systems/palatine-hill/ollama.nix @@ -0,0 +1,53 @@ +{ + pkgs, + ... +}: +{ + services = { + ollama = { + enable = true; + package = pkgs.ollama; + syncModels = true; + loadModels = [ + "gemma3" + "deepseek-r1:latest" + "deepseek-r1:1.5b" + "qwen3" + #"qwen3-coder-next" + "qwen3-coder" + "lennyerik/zeta" + "llama3.1:8b" + "qwen2.5-coder:1.5b-base" + "nomic-embed-text:latest" + ]; + environmentVariables = { + FLASH_ATTENTION = "1"; + OLLAMA_KV_CACHE_TYPE = "q8_0"; + # Ollama memory configuration + OLLAMA_MAX_LOADED_MODELS = "2"; + OLLAMA_MAX_QUEUE = "4"; + OLLAMA_NUM_PARALLEL = "2"; + + # ROCm memory optimization + #HIP_VISIBLE_DEVICES = "0"; + #ROCR_VISIBLE_DEVICES = "0"; + + # context length for agents + OLLAMA_CONTEXT_LENGTH = "64000"; + }; + }; + open-webui = { + enable = true; + port = 21212; + }; + }; + users.users.ollama = { + extraGroups = [ + "render" + "video" + ]; + group = "ollama"; + isSystemUser = true; + }; + users.groups.ollama = { }; +} diff --git a/users/alice/non-server.nix b/users/alice/non-server.nix index 4f349ad..d529c27 100644 --- a/users/alice/non-server.nix +++ b/users/alice/non-server.nix @@ -1,51 +1,123 @@ -{ pkgs, outputs, ... }: +{ pkgs, ... }: { - programs.emacs = { - enable = true; - package = pkgs.emacs30-pgtk; - }; - programs.vesktop = { - enable = true; - settings = { - appBadge = false; - arRPC = true; - checkUpdates = false; - customTitleBar = false; - hardwareAcceleration = true; + programs = { + emacs = { + enable = true; + package = pkgs.emacs30-pgtk; }; - vencord.useSystem = true; - vencord.settings = { - autoUpdate = false; - autoUpdateNotification = false; - notifyAboutUpdates = false; - plugins = { - AnonymiseFileNames.enabled = true; - BetterFolders.enabled = false; - BetterGifAltText.enabled = true; - CallTimer.enabled = true; - ClearURLs.enabled = true; - CopyFileContents.enabled = true; - CtrlEnterSend.enabled = true; - CustomIdle = { - enabled = true; - remainInIdle = false; + vesktop = { + enable = true; + settings = { + appBadge = false; + arRPC = true; + checkUpdates = false; + customTitleBar = false; + hardwareAcceleration = true; + }; + vencord.useSystem = true; + vencord.settings = { + autoUpdate = false; + autoUpdateNotification = false; + notifyAboutUpdates = false; + plugins = { + AnonymiseFileNames.enabled = true; + BetterFolders.enabled = false; + BetterGifAltText.enabled = true; + CallTimer.enabled = true; + ClearURLs.enabled = true; + CopyFileContents.enabled = true; + CtrlEnterSend.enabled = true; + CustomIdle = { + enabled = true; + remainInIdle = false; + }; + FriendsSince.enabled = true; + GameActivityToggle.enabled = true; + ImplicitRelationships.enabled = true; + MutualGroupDMs.enabled = true; + QuickMention.enabled = true; + QuickReply.enabled = true; + ReplaceGoogleSearch = { + enabled = true; + customEngineName = "DuckDuckGo"; + }; + ReviewDB.enabled = true; + ShowConnections.enabled = true; }; - FriendsSince.enabled = true; - GameActivityToggle.enabled = true; - ImplicitRelationships.enabled = true; - MutualGroupDMs.enabled = true; - QuickMention.enabled = true; - QuickReply.enabled = true; - ReplaceGoogleSearch = { - enabled = true; - customEngineName = "DuckDuckGo"; + }; + }; + zed-editor = { + enable = true; + mutableUserSettings = false; + extensions = [ + "nix" + "toml" + "rust" + "java" + "kotlin" + "git firefly" + "make" + "dockerfile" + "sql" + "latex" + "terraform" + "log" + ]; + userSettings = { + colorize_brackets = true; + hard_tabs = false; + vim_mode = true; + minimap = { + show = "auto"; + }; + buffer_line_height = "comfortable"; + auto_update = false; + autosave = "on_focus_change"; + agent = { + default_model = { + provider = "ollama"; + model = "qwen2.5-coder:latest"; + }; + favorite_models = [ ]; + model_parameters = [ ]; + }; + telemetry = { + diagnostics = false; + metrics = false; + }; + journal = { + hour_format = "hour24"; + }; + edit_preditions = { + provider = "open_ai_compatible_api"; + open_ai_compatible_api = { + api_url = "http://localhost:11434/v1/completions"; + model = "zeta:latest"; + prompt_format = "infer"; + max_requests = 64; + }; + }; + texlab = { + build = { + onSave = true; + forwardSearchAfter = true; + }; + forwardSearch = { + executable = "zathura"; + args = [ + "--synctex-forward" + "%l:1:%f" + "-x" + "zed %%{input}:%%{line}" + "%p" + ]; + }; }; - ReviewDB.enabled = true; - ShowConnections.enabled = true; }; }; }; + home.packages = with pkgs; [ cmake shellcheck -- 2.53.0 From 2a4b19a048bf9a6d263a4ebbe9d7e085629a5b2f Mon Sep 17 00:00:00 2001 From: ahuston-0 Date: Sat, 21 Mar 2026 20:09:02 -0400 Subject: [PATCH 3/5] cobblemon overclocked --- systems/palatine-hill/docker/minecraft.nix | 28 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/systems/palatine-hill/docker/minecraft.nix b/systems/palatine-hill/docker/minecraft.nix index 5357db5..ca22bd6 100644 --- a/systems/palatine-hill/docker/minecraft.nix +++ b/systems/palatine-hill/docker/minecraft.nix @@ -80,7 +80,7 @@ in # environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; #}; prominence-ii = { - image = "itzg/minecraft-server:java25-graalvm"; + image = "itzg/minecraft-server:java25"; volumes = [ "${minecraft_path}/prominence-ii/modpacks:/modpacks:ro" "${minecraft_path}/prominence-ii/data:/data" @@ -105,7 +105,7 @@ in environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; }; stoneblock-4 = { - image = "itzg/minecraft-server:java25-graalvm"; + image = "itzg/minecraft-server:java25"; volumes = [ "${minecraft_path}/stoneblock-4/modpacks:/modpacks:ro" "${minecraft_path}/stoneblock-4/data:/data" @@ -127,7 +127,7 @@ in environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; }; submerged-2 = { - image = "itzg/minecraft-server:java25-graalvm"; + image = "itzg/minecraft-server:java25"; volumes = [ "${minecraft_path}/submerged-2/modpacks:/modpacks:ro" "${minecraft_path}/submerged-2/data:/data" @@ -147,6 +147,28 @@ in log-driver = "local"; environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; }; + cobblemon-overclocked = { + image = "itzg/minecraft-server:java25"; + volumes = [ + "${minecraft_path}/cobblemon-overclocked/modpacks:/modpacks:ro" + "${minecraft_path}/cobblemon-overclocked/data:/data" + ]; + hostname = "cobblemon-overclocked"; + environment = defaultEnv // { + VERSION = "1.21.1"; + CF_SLUG = "modified-cobblemon-overclocked"; + CF_FILENAME_MATCHER = "1.11.2"; + USE_AIKAR_FLAGS = "false"; + USE_MEOWICE_FLAGS = "true"; + DIFFICULTY = "hard"; + ENABLE_COMMAND_BLOCK = "true"; + INIT_MEMORY = "4G"; + MAX_MEMORY = "16G"; + }; + extraOptions = defaultOptions; + log-driver = "local"; + environmentFiles = [ config.sops.secrets."docker/minecraft".path ]; + }; }; sops = { -- 2.53.0 From 121d5ed892bc03c99e83ae948d8e4385611864e0 Mon Sep 17 00:00:00 2001 From: ahuston-0 Date: Sat, 21 Mar 2026 20:17:00 -0400 Subject: [PATCH 4/5] remove python 3.12, remove kubelet since settings are not valid --- modules/kubernetes.nix | 46 +++++++++++++++++++++--------------------- modules/programs.nix | 7 ------- 2 files changed, 23 insertions(+), 30 deletions(-) delete mode 100644 modules/programs.nix diff --git a/modules/kubernetes.nix b/modules/kubernetes.nix index fe269a0..6e2cded 100644 --- a/modules/kubernetes.nix +++ b/modules/kubernetes.nix @@ -50,29 +50,29 @@ virtualisation.containerd.enable = true; # Enable kubelet - services.kubelet = { - enable = true; - extraFlags = { - "pod-infra-container-image" = "registry.k8s.io/pause:3.9"; - }; - }; + #services.kubelet = { + # enable = true; + # extraFlags = { + # "pod-infra-container-image" = "registry.k8s.io/pause:3.9"; + # }; + #}; - # Enable kubeadm for cluster initialization - environment.etc."kubeadm.yaml".text = '' - apiVersion: kubeadm.k8s.io/v1beta3 - kind: InitConfiguration - localAPIEndpoint: - advertiseAddress: 127.0.0.1 - bindPort: 6443 - --- - apiVersion: kubeadm.k8s.io/v1beta3 - kind: ClusterConfiguration - clusterName: ${config.services.kubernetes.clusterName} - controlPlaneEndpoint: ${config.services.kubernetes.controlPlaneEndpoint} - networking: - serviceSubnet: 10.96.0.0/12 - podSubnet: 10.244.0.0/16 - dnsDomain: cluster.local - ''; + ## Enable kubeadm for cluster initialization + #environment.etc."kubeadm.yaml".text = '' + # apiVersion: kubeadm.k8s.io/v1beta3 + # kind: InitConfiguration + # localAPIEndpoint: + # advertiseAddress: 127.0.0.1 + # bindPort: 6443 + # --- + # apiVersion: kubeadm.k8s.io/v1beta3 + # kind: ClusterConfiguration + # clusterName: ${config.services.kubernetes.clusterName} + # controlPlaneEndpoint: ${config.services.kubernetes.controlPlaneEndpoint} + # networking: + # serviceSubnet: 10.96.0.0/12 + # podSubnet: 10.244.0.0/16 + # dnsDomain: cluster.local + #''; }; } diff --git a/modules/programs.nix b/modules/programs.nix deleted file mode 100644 index 1dd00e3..0000000 --- a/modules/programs.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: -{ - environment.systemPackages = with pkgs; [ - git - python312 - ]; -} -- 2.53.0 From ee8883e6c18043671b7b5a1bb7f49a15b49662f9 Mon Sep 17 00:00:00 2001 From: ahuston-0 Date: Sat, 21 Mar 2026 20:25:32 -0400 Subject: [PATCH 5/5] add mco to router --- systems/palatine-hill/docker/minecraft.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/systems/palatine-hill/docker/minecraft.nix b/systems/palatine-hill/docker/minecraft.nix index ca22bd6..f4e130f 100644 --- a/systems/palatine-hill/docker/minecraft.nix +++ b/systems/palatine-hill/docker/minecraft.nix @@ -12,6 +12,7 @@ let rlcraft = "rlcraft.alicehuston.xyz"; arcanum-institute = "arcanum.alicehuston.xyz"; meits = "meits.alicehuston.xyz"; + cobblemon-overclocked = "mco.alicehuston.xyz"; # bcg-plus = "bcg.alicehuston.xyz"; pii = "pii.alicehuston.xyz"; }; -- 2.53.0