diff --git a/modules/core/desktop/nix7.nix b/modules/core/desktop/nix7.nix new file mode 100644 index 0000000..1e9beb9 --- /dev/null +++ b/modules/core/desktop/nix7.nix @@ -0,0 +1,19 @@ +{ + den.aspects.nix = { + nixos = { + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + programs.aeroshell = { + enable = true; + fonts.segoe.enable = true; + polkit.enable = true; + aerothemeplasma = { + enable = true; + sddm.enable = true; + plymouth.enable = true; + }; + }; + }; + }; +} diff --git a/modules/core/infra/cloudflared.nix b/modules/core/infra/cloudflared.nix index 5fb2ad1..a9e7467 100644 --- a/modules/core/infra/cloudflared.nix +++ b/modules/core/infra/cloudflared.nix @@ -1,5 +1,5 @@ let - uuid = "4118935e-359b-4dd2-95bd-eb27f7b0c5bb"; + uuid = "d4c4a385-05c7-4dff-b6f1-9bd02693a80a"; domain = "bug.tools"; creds = "/home/bug/.cloudflared/${uuid}.json"; in { diff --git a/modules/core/infra/syncthing.nix b/modules/core/infra/syncthing.nix index bb2d8d8..6beb195 100644 --- a/modules/core/infra/syncthing.nix +++ b/modules/core/infra/syncthing.nix @@ -36,7 +36,7 @@ "nix" = mkFolder "/home/bug/nix"; "hytale" = mkFolder "/home/bug/.local/share/Hytale/UserData/Saves"; "ssh" = mkFolder "/home/bug/.ssh"; - "cloudflared" = mkFolder "/home/bug/.cloudflared"; + #"cloudflared" = mkFolder "/home/bug/.cloudflared"; "copyparty" = mkFolder "/home/bug/copyparty"; }; }; diff --git a/modules/hosts/box.nix b/modules/hosts/box.nix index bc1e0b3..9c86270 100644 --- a/modules/hosts/box.nix +++ b/modules/hosts/box.nix @@ -17,7 +17,6 @@ vscode-server gitea # omnisearch - tailscale catppuccin diff --git a/modules/hosts/defaults.nix b/modules/hosts/defaults.nix index e84d2e4..c4ee29a 100644 --- a/modules/hosts/defaults.nix +++ b/modules/hosts/defaults.nix @@ -9,6 +9,7 @@ dns openssh syncthing + tailscale fish ]; diff --git a/modules/hosts/nix.nix b/modules/hosts/nix.nix index 5d04e13..740b7bf 100644 --- a/modules/hosts/nix.nix +++ b/modules/hosts/nix.nix @@ -11,11 +11,11 @@ janitor - llama - alc897 #cad + + llama ]; nixos = { diff --git a/modules/hosts/styx.nix b/modules/hosts/styx.nix index f342bed..7573e42 100644 --- a/modules/hosts/styx.nix +++ b/modules/hosts/styx.nix @@ -14,6 +14,8 @@ janitor neu + + nix7 ]; nixos = { diff --git a/modules/services/ports.nix b/modules/services/ports.nix index 61c7737..8c01362 100644 --- a/modules/services/ports.nix +++ b/modules/services/ports.nix @@ -18,6 +18,7 @@ omnisearch = 8087; mail = 8088; email = 8088; + llama = 8080; }; }; } diff --git a/modules/software/fish.nix b/modules/software/fish.nix index 9fe8156..35bfc4d 100644 --- a/modules/software/fish.nix +++ b/modules/software/fish.nix @@ -1,20 +1,28 @@ { den.aspects.fish = { nixos = { pkgs, ...}: { - programs.fish.shellAliases = { - fetch = "fastfetch --file ~/nix/nix.ans"; + programs.fish = { + shellAliases = { + fetch = "fastfetch --file ~/nix/nix.ans"; - box = "ssh box.bug.tools"; - unbox = "sh -c 'ssh -N -L \"$1\":0.0.0.0:\"$1\" box.bug.tools &' --"; - rebox = "sh -c 'fuser -k \"$1\"/tcp' --"; - dock = "sh -c 'ssh -N -D \"$1\" box.bug.tools &' --"; + box = "ssh box.bug.tools"; + unbox = "sh -c 'ssh -N -L \"$1\":0.0.0.0:\"$1\" box.bug.tools &' --"; + rebox = "sh -c 'fuser -k \"$1\"/tcp' --"; + dock = "sh -c 'ssh -N -D \"$1\" box.bug.tools &' --"; - vpn = "sshuttle --dns --python python3 -r box.bug.tools 0/0"; + vpn = "sshuttle --dns --python python3 -r box.bug.tools 0/0"; - pico = "ssh pico.sh"; + pico = "ssh pico.sh"; - ns = "nh os switch ~/nix --impure -H (hostname)"; - rebuild = "ns"; + ns = "nh os switch ~/nix --impure -H (hostname)"; + rebuild = "ns"; + }; + + shellInit = '' + function tssh + ssh (tailscale status | awk -v host=$argv[1] '$2 == host {print $1}') + end + ''; }; environment.systemPackages = with pkgs.fishPlugins; [ diff --git a/modules/software/gaming/gaming.nix b/modules/software/gaming/gaming.nix index 6527614..4bc1a8b 100644 --- a/modules/software/gaming/gaming.nix +++ b/modules/software/gaming/gaming.nix @@ -7,7 +7,7 @@ polytoria game-tools emulators - star-citizen + #star-citizen minecraft ]; }; diff --git a/modules/software/ollama.nix b/modules/software/ollama.nix index 45fc87e..f76984e 100644 --- a/modules/software/ollama.nix +++ b/modules/software/ollama.nix @@ -1,26 +1,75 @@ { ... }: { den.aspects.llama = { - nixos = { pkgs, ... }: { - services.llama-cpp = { + nixos = { pkgs, lib, ... }: { + environment.systemPackages = [ pkgs.cloudflared ]; + environment.etc."cloudflared/9c1a18f9-a2c4-41bd-9a64-86ebb3e3283d.json".source = "/home/bug/.cloudflared/9c1a18f9-a2c4-41bd-9a64-86ebb3e3283d.json"; + + services.cloudflared = { + enable = true; + tunnels = { + "9c1a18f9-a2c4-41bd-9a64-86ebb3e3283d" = { + credentialsFile = "/etc/cloudflared/9c1a18f9-a2c4-41bd-9a64-86ebb3e3283d.json"; + + ingress = { + "llama.bug.tools" = "http://127.0.0.1:8080"; + }; + + default = "http_status:404"; + }; + }; + }; + + systemd.services."cloudflared-tunnel-9c1a18f9-a2c4-41bd-9a64-86ebb3e3283d".environment = { + TUNNEL_TRANSPORT_PROTOCOL = pkgs.lib.mkForce "http2"; + }; + + + services.llama-cpp = let + # https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md + modelsPreset = { + "*" = rec { + # keep-sorted start + agent = true; + cache-ram = 0; # unified memory + cache-type-k = "q8_0"; + cache-type-v = "q8_0"; + ctx-size = 256 * 256 * parallel; + fit = "off"; + flash-attn = "on"; + kv-unified = false; + mlock = true; + mmap = false; + n-gpu-layers = "all"; + parallel = 1; + reasoning-preserve = true; + sleep-idle-seconds = -1; + spec-draft-type-k = "q8_0"; + spec-draft-type-v = "q8_0"; + # keep-sorted end + }; + + "qwen3.6-35b-a3b" = { + # keep-sorted start + hf-repo = "unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_XL"; + min-p = 0.0; + temperature = 1.0; + top-k = 20; + top-p = 0.95; + # keep-sorted end + }; + }; + in { enable = true; package = pkgs.llama-cpp.override { cudaSupport = true; }; + settings = { host = "0.0.0.0"; port = 8080; ctx-size = 65536; - models-preset = (pkgs.formats.ini { }).generate "llama-cpp-models-preset.ini" { - "Qwen3.6-35B-A3B" = { - hf-repo = "unsloth/Qwen3.6-35B-A3B-GGUF"; - hf-file = "Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf"; - alias = "qwen3.6-35b-a3b"; - temp = "1.0"; - top-p = "0.95"; - top-k = "20"; - n-gpu-layers = 80; - ctx-size = 65536; - }; - }; + models-max = 1; + models-preset = pkgs.writeText "llama-models.ini" (lib.generators.toINI { } modelsPreset); + no-models-autoload = true; }; }; };