From a2f852ac18b2c7b9f6d8b47bec03a7a7aafb3924 Mon Sep 17 00:00:00 2001 From: Daniel Bulant Date: Mon, 15 Jun 2026 00:27:05 +0200 Subject: [PATCH] update config --- flake.lock | 298 +++++++++++++++++++++++++++++++- flake.nix | 5 + servers/eisen/configuration.nix | 21 ++- servers/fern/configuration.nix | 103 +++++++++-- servers/ui-mode/home.nix | 22 +-- 5 files changed, 426 insertions(+), 23 deletions(-) diff --git a/flake.lock b/flake.lock index ceaf78d..f0ce419 100644 --- a/flake.lock +++ b/flake.lock @@ -485,6 +485,42 @@ "type": "github" } }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1775087534, + "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1775087534, + "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -551,6 +587,45 @@ "type": "github" } }, + "framewalk": { + "inputs": { + "flake-parts": "flake-parts_5", + "nixpkgs": [ + "reenv", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1776613820, + "narHash": "sha256-o/I21Gqvo/NI/wJPAxrdyp9aL6kalPkzKBr2q/OrDDo=", + "owner": "levigross", + "repo": "framewalk", + "rev": "2d11eb631f1e3487ffe4a0a0c84dfd1e2ddc49f8", + "type": "github" + }, + "original": { + "owner": "levigross", + "repo": "framewalk", + "type": "github" + } + }, + "ghidra-mcp": { + "flake": false, + "locked": { + "lastModified": 1776282734, + "narHash": "sha256-8djViBp/6wvW17+1vPvP+ULoZWlm8tgH8aNkv3Aom3s=", + "owner": "bethington", + "repo": "ghidra-mcp", + "rev": "d53d36afafeec4914499fae60a71fed84ea72837", + "type": "github" + }, + "original": { + "owner": "bethington", + "repo": "ghidra-mcp", + "type": "github" + } + }, "git-hooks": { "inputs": { "flake-compat": "flake-compat_2", @@ -1144,6 +1219,27 @@ "type": "github" } }, + "mcp-servers-nix": { + "inputs": { + "nixpkgs": [ + "reenv", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775901136, + "narHash": "sha256-5J+54o9YDgAeY1iYuSN7kVt0cTB90x4zO5whqdPg3Tw=", + "owner": "natsukium", + "repo": "mcp-servers-nix", + "rev": "59335c80be7b719df7b6e6473f14424b1e6647df", + "type": "github" + }, + "original": { + "owner": "natsukium", + "repo": "mcp-servers-nix", + "type": "github" + } + }, "niri": { "inputs": { "niri-stable": "niri-stable", @@ -1379,6 +1475,36 @@ "type": "github" } }, + "nixpkgs-lib_3": { + "locked": { + "lastModified": 1774748309, + "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "333c4e0545a6da976206c74db8773a1645b5870a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "lastModified": 1774748309, + "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "333c4e0545a6da976206c74db8773a1645b5870a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-regression": { "locked": { "lastModified": 1643052045, @@ -1395,6 +1521,22 @@ "type": "github" } }, + "nixpkgs-retdec": { + "locked": { + "lastModified": 1767313136, + "narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1779796641, @@ -1735,6 +1877,84 @@ "type": "github" } }, + "pwndbg": { + "inputs": { + "nixpkgs": [ + "reenv", + "nixpkgs" + ], + "pyproject-build-systems": "pyproject-build-systems", + "pyproject-nix": "pyproject-nix", + "uv2nix": "uv2nix" + }, + "locked": { + "lastModified": 1776098525, + "narHash": "sha256-fKxg8AUEa+0c0rNZJ3s6rZ2bJk9e/o3/nXTh57OSalQ=", + "owner": "pwndbg", + "repo": "pwndbg", + "rev": "1ec4d3fe69589235fc2802cba1b2057eeefab900", + "type": "github" + }, + "original": { + "owner": "pwndbg", + "repo": "pwndbg", + "type": "github" + } + }, + "pyproject-build-systems": { + "inputs": { + "nixpkgs": [ + "reenv", + "pwndbg", + "nixpkgs" + ], + "pyproject-nix": [ + "reenv", + "pwndbg", + "pyproject-nix" + ], + "uv2nix": [ + "reenv", + "pwndbg", + "uv2nix" + ] + }, + "locked": { + "lastModified": 1763662255, + "narHash": "sha256-4bocaOyLa3AfiS8KrWjZQYu+IAta05u3gYZzZ6zXbT0=", + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "rev": "042904167604c681a090c07eb6967b4dd4dae88c", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "build-system-pkgs", + "type": "github" + } + }, + "pyproject-nix": { + "inputs": { + "nixpkgs": [ + "reenv", + "pwndbg", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769936401, + "narHash": "sha256-kwCOegKLZJM9v/e/7cqwg1p/YjjTAukKPqmxKnAZRgA=", + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "rev": "b0d513eeeebed6d45b4f2e874f9afba2021f7812", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "pyproject.nix", + "type": "github" + } + }, "quickshell": { "inputs": { "nixpkgs": [ @@ -1757,6 +1977,32 @@ "url": "https://git.outfoxxed.me/quickshell/quickshell" } }, + "reenv": { + "inputs": { + "flake-parts": "flake-parts_4", + "framewalk": "framewalk", + "ghidra-mcp": "ghidra-mcp", + "mcp-servers-nix": "mcp-servers-nix", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-retdec": "nixpkgs-retdec", + "pwndbg": "pwndbg" + }, + "locked": { + "lastModified": 1776617462, + "narHash": "sha256-mrKOij4gGt9vko84cVegDNwBa1kGuniVMv5HhKy5Fuk=", + "owner": "levigross", + "repo": "NixRevAI", + "rev": "bca7f3da38e6808702e8c9a1bff967588fda3c33", + "type": "github" + }, + "original": { + "owner": "levigross", + "repo": "NixRevAI", + "type": "github" + } + }, "root": { "inputs": { "affinity-nix": "affinity-nix", @@ -1780,6 +2026,7 @@ "nixpkgs": "nixpkgs_13", "nixpkgs-unstable": "nixpkgs-unstable", "paseo": "paseo", + "reenv": "reenv", "rusic": "rusic", "zen-browser": "zen-browser" } @@ -1788,7 +2035,7 @@ "inputs": { "crane": "crane_2", "nixpkgs": "nixpkgs_14", - "rust-overlay": "rust-overlay_2" + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1780061474, @@ -1843,6 +2090,28 @@ } }, "rust-overlay_2": { + "inputs": { + "nixpkgs": [ + "reenv", + "framewalk", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1775358767, + "narHash": "sha256-f2eC+WIfhjevCPQILuV08i/kmKZzYZpUvkom/33VxCA=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "20fd44bc663daa53a2575e01293e24e681d62244", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { "inputs": { "nixpkgs": [ "rusic", @@ -1975,6 +2244,33 @@ "type": "github" } }, + "uv2nix": { + "inputs": { + "nixpkgs": [ + "reenv", + "pwndbg", + "nixpkgs" + ], + "pyproject-nix": [ + "reenv", + "pwndbg", + "pyproject-nix" + ] + }, + "locked": { + "lastModified": 1769957392, + "narHash": "sha256-6PkqwwYf5K2CHi2V+faI/9pqjfz/HxUkI/MVid6hlOY=", + "owner": "pyproject-nix", + "repo": "uv2nix", + "rev": "d18bc50ae1c3d4be9c41c2d94ea765524400af75", + "type": "github" + }, + "original": { + "owner": "pyproject-nix", + "repo": "uv2nix", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index f59fe04..30e9081 100644 --- a/flake.nix +++ b/flake.nix @@ -33,6 +33,10 @@ }; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + reenv = { + url = "github:levigross/NixRevAI"; + inputs.nixpkgs.follows = "nixpkgs"; + }; zen-browser.url = "github:0xc000022070/zen-browser-flake"; nixos-hardware.url = "github:NixOS/nixos-hardware"; # hyprland.url = "github:hyprwm/Hyprland/v0.48.1"; @@ -78,6 +82,7 @@ nix-index-database, hypr-kdeconnect-fix, paseo, + reenv, ... }@attrs: { diff --git a/servers/eisen/configuration.nix b/servers/eisen/configuration.nix index d931272..6ff3067 100644 --- a/servers/eisen/configuration.nix +++ b/servers/eisen/configuration.nix @@ -21,7 +21,7 @@ let grafana = 3002; tolgee = 8200; # ntfy = 3003; - llama-swap = 8080; + forgejo = 8300; }; internalPorts = { prometheus-node = 9000; @@ -114,6 +114,25 @@ in port = internalPorts.prometheus-llama-swap; }; + forgejo = { + enable = true; + settings = { + server = { + DOMAIN = "git.badapple.cz"; + ROOT_URL = "https://git.badapple.cz"; + HTTP_PORT = ports.forgejo; + }; + service.DISABLE_REGISTRATION = true; + }; + actions = { + ENABLED = true; + DEFAULT_ACTIONS_URL = "github"; + }; + lfs.enable = true; + dump.enable = true; + dump.age = "5d"; + }; + dnsmasq = { enable = true; }; diff --git a/servers/fern/configuration.nix b/servers/fern/configuration.nix index 41c5c2e..8e99ba8 100644 --- a/servers/fern/configuration.nix +++ b/servers/fern/configuration.nix @@ -2,10 +2,54 @@ pkgs, lib, config, + reenv, ... }: let + system = pkgs.stdenv.hostPlatform.system; + + ninfs = pkgs.python3Packages.buildPythonApplication { + pname = "ninfs"; + version = "1.7b2"; + format = "setuptools"; + + src = pkgs.fetchFromGitHub { + owner = "ihaveamac"; + repo = "ninfs"; + rev = "v1.7b2"; + hash = "sha256-x1BxY3YGfCPdqp44xLnbKimRoMPNqel/bP1mGdvx+98="; + }; + + postPatch = '' + sed -i '/#include /a #include ' ninfs/hac/_crypto.cpp + ''; + + nativeBuildInputs = with pkgs.python3Packages; [ + setuptools + wheel + ]; + + propagatedBuildInputs = with pkgs.python3Packages; [ + pycryptodomex + ]; + + doCheck = false; + }; + + reverseEngineeringPython = pkgs.python3.withPackages (pythonPackages: [ + pythonPackages.construct + pythonPackages.cryptography + pythonPackages.fusepy + pythonPackages.mcp + pythonPackages.pip + pythonPackages.pycryptodome + pythonPackages.pycryptodomex + pythonPackages.pyfatfs + pythonPackages.setuptools + pythonPackages.wheel + ]); + llama-cpp = ( (pkgs.llama-cpp.override { cudaSupport = true; @@ -125,16 +169,55 @@ in nvidia-vaapi-driver ]; }; - environment.systemPackages = with pkgs; [ - blender - android-studio-full - nvitop - # basalt-monado - cudaPackages.cuda_nvcc - llama-cpp - imgbrd-grabber - protonplus - ]; + environment.systemPackages = + (with pkgs; [ + blender + android-studio-full + nvitop + # basalt-monado + cudaPackages.cuda_nvcc + llama-cpp + imgbrd-grabber + protonplus + + # Reverse engineering tooling + bintools + binwalk + ctrtool + fuse + fuse3 + mtools + openssl + p7zip + sleuthkit + aircrack-ng + hostapd + iw + ninfs + tcpdump + wireshark-cli + reverseEngineeringPython + ]) + ++ (with reenv.packages.${system}; [ + bindiff + ghidra-with-extensions + retdec + ]); + + environment.sessionVariables = { + GHIDRA_MCP_BRIDGE = "${ + reenv.packages.${system}.ghidra-with-extensions + }/libexec/ghidra-mcp/bridge_mcp_ghidra.py"; + }; + + environment.extraInit = '' + export LD_LIBRARY_PATH="${ + pkgs.lib.makeLibraryPath [ + pkgs.fuse + pkgs.fuse3 + ] + }:''${LD_LIBRARY_PATH:-}" + ''; services.llama-swap = { enable = true; openFirewall = true; diff --git a/servers/ui-mode/home.nix b/servers/ui-mode/home.nix index 5d9efb2..c67b1c0 100644 --- a/servers/ui-mode/home.nix +++ b/servers/ui-mode/home.nix @@ -51,18 +51,18 @@ let deadlockModManager = dmm.packages.${pkgs.system}.nightly.overrideAttrs (oldAttrs: { postPatch = (oldAttrs.postPatch or "") + '' - substituteInPlace apps/desktop/src-tauri/Cargo.toml \ - --replace 'tauri-wry = ["tauri/wry"]' 'tauri-wry = ["tauri/wry"] -cef = []' + substituteInPlace apps/desktop/src-tauri/Cargo.toml \ + --replace 'tauri-wry = ["tauri/wry"]' 'tauri-wry = ["tauri/wry"] + cef = []' - substituteInPlace apps/desktop/src-tauri/src/mod_manager/steam_manager.rs \ - --replace ' let steam_dir = steamlocate::SteamDir::from_dir(&path).map_err(|_| {' ' if !path.join("steamapps").join("libraryfolders.vdf").exists() { - return Err(Error::InvalidInput( - "Invalid Steam path: not a valid Steam installation directory".to_string(), - )); - } + substituteInPlace apps/desktop/src-tauri/src/mod_manager/steam_manager.rs \ + --replace ' let steam_dir = steamlocate::SteamDir::from_dir(&path).map_err(|_| {' ' if !path.join("steamapps").join("libraryfolders.vdf").exists() { + return Err(Error::InvalidInput( + "Invalid Steam path: not a valid Steam installation directory".to_string(), + )); + } - let steam_dir = steamlocate::SteamDir::from_dir(&path).map_err(|_| {' + let steam_dir = steamlocate::SteamDir::from_dir(&path).map_err(|_| {' ''; }); @@ -331,7 +331,7 @@ in scc aircrack-ng strace - ghidra + # ghidra ffuf sqlmap nmap