Compare commits
9 Commits
fbbef69fa1
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b08d81ab0 | |||
| a3df8a8162 | |||
|
|
48dc241b0b | ||
|
|
7b70909a16 | ||
|
|
ff07a0a8c6 | ||
| 05aac965f1 | |||
| a4f23b64d3 | |||
|
|
268a06af61 | ||
| c9478fa513 |
64
flake.lock
generated
64
flake.lock
generated
@@ -31,7 +31,6 @@
|
||||
"llm-agents",
|
||||
"flake-parts"
|
||||
],
|
||||
"import-tree": "import-tree",
|
||||
"nixpkgs": [
|
||||
"llm-agents",
|
||||
"nixpkgs"
|
||||
@@ -46,16 +45,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1776182890,
|
||||
"narHash": "sha256-+/VOe8XGq5klpU+I19D+3TcaR7o+Cwbq67KNF7mcFak=",
|
||||
"owner": "Mic92",
|
||||
"lastModified": 1777369708,
|
||||
"narHash": "sha256-1xW7cRZNsFNPQD+cE0fwnLVStnDth0HSoASEIFeT7uI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "bun2nix",
|
||||
"rev": "648d293c51e981aec9cb07ba4268bc19e7a8c575",
|
||||
"rev": "e659e1cc4b8e1b21d0aa85f1c481f9db61ecfa98",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Mic92",
|
||||
"ref": "catalog-support",
|
||||
"owner": "nix-community",
|
||||
"ref": "staging-2.1.0",
|
||||
"repo": "bun2nix",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -68,11 +67,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775087534,
|
||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
||||
"lastModified": 1777988971,
|
||||
"narHash": "sha256-qIoWPDs+0/8JecyYgE3gpKQxW/4bLW/gp45vow9ioCQ=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
||||
"rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -91,11 +90,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773656868,
|
||||
"narHash": "sha256-IvWd8A3MM2qASf2U5diOoYEc2dCxqR4BOhB5RuOQnZM=",
|
||||
"lastModified": 1777767341,
|
||||
"narHash": "sha256-lV2i2hBWxUKU2dgHza9SGfizOsV+uUcTQD/De+6/X3M=",
|
||||
"owner": "glide-browser",
|
||||
"repo": "glide.nix",
|
||||
"rev": "1a3dd001865f6ac5a3562d2cb484388672ad6eaf",
|
||||
"rev": "790c9d37e3dcf9bb04ae4486a0320b999a8eec32",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -111,11 +110,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1776891022,
|
||||
"narHash": "sha256-vEe2f4NEhMvaNDpM1pla4hteaIIGQyAMKUfIBPLasr0=",
|
||||
"lastModified": 1778248595,
|
||||
"narHash": "sha256-dhFgEjoeJMYN/7OY6xfxS799YB4IjbbYXTjyGIJyLpc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "508daf831ab8d1b143d908239c39a7d8d39561b2",
|
||||
"rev": "fdb2ccba9d5e1238d32e0c4a3ec1a277efa80c1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -165,21 +164,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"import-tree": {
|
||||
"locked": {
|
||||
"lastModified": 1763762820,
|
||||
"narHash": "sha256-ZvYKbFib3AEwiNMLsejb/CWs/OL/srFQ8AogkebEPF0=",
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"rev": "3c23749d8013ec6daa1d7255057590e9ca726646",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"llm-agents": {
|
||||
"inputs": {
|
||||
"blueprint": "blueprint",
|
||||
@@ -190,11 +174,11 @@
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1776864758,
|
||||
"narHash": "sha256-qQFek7fJDmMpwT0B1KlW+4DMjAlMYrLF0SbVRhkYqHI=",
|
||||
"lastModified": 1778247177,
|
||||
"narHash": "sha256-ZSe9r9xbx72NnBCCiC1UZxmIFzFA9IPno10Esp1kjiE=",
|
||||
"owner": "Qumulo",
|
||||
"repo": "llm-agents",
|
||||
"rev": "a3532e7336c51044432a7d35a184510baf149a28",
|
||||
"rev": "02444d83933d3ca28c9fd5d0be28812bdcf1232e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -221,11 +205,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1776329215,
|
||||
"narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=",
|
||||
"lastModified": 1778124196,
|
||||
"narHash": "sha256-pYEytCNic/czazbV9r3tbQ6BZzqRBg/41x2dIC5ymOo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b86751bc4085f48661017fa226dee99fab6c651b",
|
||||
"rev": "68a8af93ff4297686cb68880845e61e5e2e41d92",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -237,11 +221,11 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1776548001,
|
||||
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
||||
"lastModified": 1777954456,
|
||||
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
||||
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
nix-fast-build
|
||||
colmena
|
||||
;
|
||||
openldap = prev.openldap.overrideAttrs {
|
||||
doCheck = !prev.stdenv.hostPlatform.isi686;
|
||||
};
|
||||
})
|
||||
];
|
||||
nix.package = pkgs.lixPackageSets.stable.lix;
|
||||
@@ -101,7 +104,6 @@
|
||||
} -C $out/bin
|
||||
chmod +x $out/bin/llama-swap
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
# 🇺🇸
|
||||
@@ -233,6 +235,12 @@
|
||||
nasctui
|
||||
trilium-desktop
|
||||
haruna
|
||||
(pkgs.runCommand "nvenc-compress" { nativeBuildInputs = [ pkgs.bash ]; }
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
cp ${./nvenc_compress.sh} $out/bin/nvenc-compress
|
||||
chmod +x $out/bin/nvenc-compress
|
||||
'')
|
||||
];
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
|
||||
87
global/nvenc_compress.sh
Executable file
87
global/nvenc_compress.sh
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Usage: nvenc_compress.sh <video_path> [target_size_mb]
|
||||
|
||||
VIDEO="$1"
|
||||
TARGET_MB="${2:-9}"
|
||||
TARGET_BYTES=$((TARGET_MB * 1024 * 1024))
|
||||
|
||||
if [[ ! -f "$VIDEO" ]]; then
|
||||
echo "Error: file not found: $VIDEO"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BASENAME="${VIDEO##*/}"
|
||||
BASENAME="${BASENAME%.*}"
|
||||
OUTDIR="$(dirname "$VIDEO")"
|
||||
OUTFILE="$OUTDIR/${BASENAME}_compressed.mp4"
|
||||
|
||||
# nvenc cq range: 0 (best/largest) to 51 (worst/smallest)
|
||||
# We binary search this range to hit the target file size
|
||||
LO=0
|
||||
HI=51
|
||||
BEST_DIFF=999999999
|
||||
BEST_CQ=23
|
||||
MAX_ITERATIONS=20
|
||||
|
||||
echo "Target size: ${TARGET_MB}MB (${TARGET_BYTES} bytes)"
|
||||
echo "Encoding with nvenc (h264_nvenc)..."
|
||||
echo ""
|
||||
|
||||
for ((i=0; i<MAX_ITERATIONS; i++)); do
|
||||
CQ=$(( (LO + HI) / 2 ))
|
||||
TMPFILE="${OUTFILE}_iter_${i}_cq${CQ}.mp4"
|
||||
|
||||
echo "--- Iteration $((i+1))/$MAX_ITERATIONS ---"
|
||||
echo "Trying cq=$CQ (lo=$LO, hi=$HI)"
|
||||
|
||||
ffmpeg -y -i "$VIDEO" -c:v h264_nvenc -cq "$CQ" -c:a copy -preset p7 -f mp4 "$TMPFILE" 2>/dev/null
|
||||
|
||||
if [[ ! -f "$TMPFILE" ]]; then
|
||||
echo "Error: ffmpeg failed at cq=$CQ"
|
||||
rm -f "$TMPFILE"
|
||||
break
|
||||
fi
|
||||
|
||||
FILE_SIZE=$(stat -c%s "$TMPFILE" 2>/dev/null || stat -f%z "$TMPFILE" 2>/dev/null)
|
||||
DIFF=$(( FILE_SIZE - TARGET_BYTES ))
|
||||
ABS_DIFF=${DIFF#-}
|
||||
|
||||
echo " Size: $(( FILE_SIZE / 1024 / 1024 ))MB (diff: $(( DIFF / 1024 / 1024 ))MB)"
|
||||
|
||||
if (( ABS_DIFF < BEST_DIFF )); then
|
||||
BEST_DIFF=$ABS_DIFF
|
||||
BEST_CQ=$CQ
|
||||
cp "$TMPFILE" "$OUTFILE"
|
||||
fi
|
||||
|
||||
rm -f "$TMPFILE"
|
||||
|
||||
# If within 1% of target, we're close enough
|
||||
if (( ABS_DIFF < TARGET_BYTES / 100 )); then
|
||||
echo ""
|
||||
echo "Within tolerance! Stopping."
|
||||
break
|
||||
fi
|
||||
|
||||
# Binary search direction:
|
||||
# Higher cq = smaller file, lower cq = larger file
|
||||
if (( FILE_SIZE > TARGET_BYTES )); then
|
||||
# File too big, need higher cq (smaller)
|
||||
LO=$(( CQ + 1 ))
|
||||
else
|
||||
# File too small, need lower cq (larger)
|
||||
HI=$(( CQ - 1 ))
|
||||
fi
|
||||
|
||||
if (( LO > HI )); then
|
||||
echo ""
|
||||
echo "Range exhausted. Stopping."
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo "Done! Best cq=$BEST_CQ, final size: $(( BEST_DIFF / 1024 / 1024 ))MB from target"
|
||||
echo "Output: $OUTFILE"
|
||||
@@ -32,6 +32,8 @@
|
||||
# Configure network connections interactively with nmcli or nmtui.
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
virtualization.podman.enableNvidia = true;
|
||||
|
||||
# Only computer I own that can actually run ollama, and I don't want to make an ai folder.
|
||||
# services.ollama = {
|
||||
# enable = true;
|
||||
@@ -49,6 +51,7 @@
|
||||
pkgs.llama-cpp
|
||||
pkgs.llama-swap
|
||||
# pkgs.agent-browser
|
||||
pkgs.nvidia-container-toolkit
|
||||
|
||||
inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.pi
|
||||
inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.rtk
|
||||
@@ -112,20 +115,14 @@
|
||||
"Qwen3-4B-Claude-Opus-Distill":
|
||||
cmd: llama-server --port ''${PORT} -hf TeichAI/Qwen3-4B-Thinking-2507-Claude-4.5-Opus-High-Reasoning-Distill-GGUF:Q4_K_M --ctx-size 32768 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256
|
||||
ttl: 300
|
||||
"Qwen3.5-9B-Thinking":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-9B-GGUF:Q4_K_M --ctx-size 128000 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256 --chat-template-kwargs '{\"enable_thinking\": true}' --no-mmproj --no-kv-offload"
|
||||
"Qwen3.5-9B":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-9B-GGUF:Q4_K_M --ctx-size 64000 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256"
|
||||
ttl: 300
|
||||
"Qwen3.5-9B-Claude-Opus-Distill":
|
||||
cmd: "llama-server --port ''${PORT} -hf Jackrong/Qwen3.5-9B-Claude-4.6-Opus-Reasoning-Distilled-GGUF:Q4_K_S --ctx-size 32000 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 512 --chat-template-kwargs '{\"enable_thinking\": true}' --no-mmproj"
|
||||
ttl: 300
|
||||
"Qwen3.5-4B-Thinking":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-4B-GGUF:Q4_K_M --ctx-size 64000 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256 --chat-template-kwargs '{\"enable_thinking\": true}'"
|
||||
ttl: 300
|
||||
"Qwen3.5-9B-Non-Thinking":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-9B-GGUF:Q4_K_M --ctx-size 32000 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256 --no-mmproj"
|
||||
ttl: 300
|
||||
"Qwen3.5-4B-Non-Thinking":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-4B-GGUF:Q4_K_M --ctx-size 64000 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256"
|
||||
"Qwen3.5-4B":
|
||||
cmd: "llama-server --port ''${PORT} -hf unsloth/Qwen3.5-4B-GGUF:Q4_K_M --ctx-size 64000 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256"
|
||||
ttl: 300
|
||||
"Gemma4-E4B":
|
||||
cmd: "llama-server --port ''${PORT} -hf Abhiray/gemma-4-E4B-it-heretic-GGUF:Q4_K_M --ctx-size 64000 --temp 0.7 --top-p 0.8 --top-k 20 --min-p 0.00 -fa on --jinja -kvu -np 1 --fit-target 256"
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
{config, pkgs, lib, inputs, outputs, ...}:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
inputs,
|
||||
outputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# These both are probably always going to be the same, but I'll keep them local just in case:tm:
|
||||
home.username = "laythe";
|
||||
@@ -11,4 +18,6 @@
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
|
||||
fonts.fontconfig.subpixelRendering = "none";
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
ExecStart = "${pkgs.writeShellScript "wallpaper-rotator" ''
|
||||
WALLPAPER_DIR="$HOME/wallpapers"
|
||||
INTERVAL=600 # Time in seconds between wallpaper changes (600 = 10 mins)
|
||||
INTERVAL=60 # Time in seconds between wallpaper changes (600 = 10 mins)
|
||||
|
||||
# 1. Safely find Wayland and Sway sockets
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
@@ -286,7 +286,8 @@
|
||||
};
|
||||
|
||||
clock = {
|
||||
format = "{:%Y-%m-%d %H:%M}";
|
||||
"format" = "{:%I:%M %p}";
|
||||
"format-alt" = "{:%d-%m-%Y}";
|
||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||
};
|
||||
battery = {
|
||||
|
||||
@@ -14,5 +14,6 @@
|
||||
virtualisation.podman = {
|
||||
enable = true;
|
||||
dockerCompat = true;
|
||||
# enableNvidia = true;
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user