diff options
| author | Leander Scherer <leander@schererleander.de> | 2026-07-02 14:54:54 +0200 |
|---|---|---|
| committer | Leander Scherer <leander@schererleander.de> | 2026-07-02 14:54:54 +0200 |
| commit | dc1f81ad51c14f1f08a9e20b17c9debdad76d358 (patch) | |
| tree | 59539a934089a7d2f2d10c50803ff67bf6367fe1 | |
| parent | db73679be2279c14fa17db71718759e9be2eff1b (diff) | |
chore: formatting
| -rw-r--r-- | modules/overlays/rpcs3.nix | 16 | ||||
| -rw-r--r-- | modules/pkgs/ida-pro-mcp.nix | 98 | ||||
| -rw-r--r-- | modules/pkgs/ida-pro.nix | 335 | ||||
| -rw-r--r-- | modules/services/git.nix | 5 | ||||
| -rw-r--r-- | modules/services/nextcloud.nix | 11 | ||||
| -rw-r--r-- | modules/services/openssh.nix | 96 | ||||
| -rw-r--r-- | modules/system/wine.nix | 2 |
7 files changed, 289 insertions, 274 deletions
diff --git a/modules/overlays/rpcs3.nix b/modules/overlays/rpcs3.nix index 9076317..fbfab94 100644 --- a/modules/overlays/rpcs3.nix +++ b/modules/overlays/rpcs3.nix @@ -1,12 +1,14 @@ { ... }: { flake.overlays.rpcs3 = final: prev: { - rpcs3 = (prev.rpcs3.override { - glew = prev.glew.override { enableEGL = false; }; - }).overrideAttrs (old: { - cmakeFlags = old.cmakeFlags or [] ++ [ - (prev.lib.cmakeBool "BUILD_SHARED_LIBS" false) - ]; - }); + rpcs3 = + (prev.rpcs3.override { + glew = prev.glew.override { enableEGL = false; }; + }).overrideAttrs + (old: { + cmakeFlags = old.cmakeFlags or [ ] ++ [ + (prev.lib.cmakeBool "BUILD_SHARED_LIBS" false) + ]; + }); }; } diff --git a/modules/pkgs/ida-pro-mcp.nix b/modules/pkgs/ida-pro-mcp.nix index 37d604d..b178497 100644 --- a/modules/pkgs/ida-pro-mcp.nix +++ b/modules/pkgs/ida-pro-mcp.nix @@ -1,66 +1,68 @@ { ... }: { - perSystem = { pkgs, ... }: - let - idapro = pkgs.python313.pkgs.buildPythonPackage rec { - pname = "idapro"; - version = "0.0.9"; + perSystem = + { pkgs, ... }: + let + idapro = pkgs.python313.pkgs.buildPythonPackage rec { + pname = "idapro"; + version = "0.0.9"; - pyproject = true; + pyproject = true; - src = pkgs.fetchPypi { - inherit pname version; - hash = "sha256-igQ6ic5QdTPlAuj2WBpPtYut4l6PpgSVRbeexjZ5LjU="; - }; + src = pkgs.fetchPypi { + inherit pname version; + hash = "sha256-igQ6ic5QdTPlAuj2WBpPtYut4l6PpgSVRbeexjZ5LjU="; + }; - build-system = [ - pkgs.python313.pkgs.setuptools - ]; + build-system = [ + pkgs.python313.pkgs.setuptools + ]; - doCheck = false; + doCheck = false; - meta = with pkgs.lib; { - description = "IDA Library Python module"; - license = licenses.mit; - platforms = platforms.all; + meta = with pkgs.lib; { + description = "IDA Library Python module"; + license = licenses.mit; + platforms = platforms.all; + }; }; - }; - in { - packages.ida-pro-mcp = pkgs.python313.pkgs.buildPythonApplication rec { - pname = "ida-pro-mcp"; - version = "2.0.0"; + in + { + packages.ida-pro-mcp = pkgs.python313.pkgs.buildPythonApplication rec { + pname = "ida-pro-mcp"; + version = "2.0.0"; - pyproject = true; + pyproject = true; - src = pkgs.fetchFromGitHub { - owner = "mrexodia"; - repo = "ida-pro-mcp"; - rev = "main"; - hash = "sha256-U/+l/HQBUk5Pfu5AnC+dsicQ+CnPAdJkm6mxNyL2Q0w="; - }; + src = pkgs.fetchFromGitHub { + owner = "mrexodia"; + repo = "ida-pro-mcp"; + rev = "main"; + hash = "sha256-U/+l/HQBUk5Pfu5AnC+dsicQ+CnPAdJkm6mxNyL2Q0w="; + }; - build-system = [ - pkgs.python313.pkgs.setuptools - ]; + build-system = [ + pkgs.python313.pkgs.setuptools + ]; - dependencies = [ - idapro - pkgs.python313.pkgs.tomli-w - ]; + dependencies = [ + idapro + pkgs.python313.pkgs.tomli-w + ]; - pythonImportsCheck = [ - "ida_pro_mcp" - ]; + pythonImportsCheck = [ + "ida_pro_mcp" + ]; - doCheck = false; + doCheck = false; - meta = with pkgs.lib; { - description = "IDA Pro MCP server"; - homepage = "https://github.com/mrexodia/ida-pro-mcp"; - license = licenses.mit; - mainProgram = "ida-pro-mcp"; - platforms = platforms.all; + meta = with pkgs.lib; { + description = "IDA Pro MCP server"; + homepage = "https://github.com/mrexodia/ida-pro-mcp"; + license = licenses.mit; + mainProgram = "ida-pro-mcp"; + platforms = platforms.all; + }; }; }; - }; } diff --git a/modules/pkgs/ida-pro.nix b/modules/pkgs/ida-pro.nix index 69bdfe5..c70d1d3 100644 --- a/modules/pkgs/ida-pro.nix +++ b/modules/pkgs/ida-pro.nix @@ -1,194 +1,197 @@ { inputs, ... }: { - perSystem = { system, ... }: let - pkgs = import inputs.nixpkgs { - inherit system; - config.allowUnfree = true; - }; - in { - packages.ida-pro = pkgs.callPackage ( - { - autoPatchelfHook, - cairo, - copyDesktopItems, - curl, - dbus, - fontconfig, - freetype, - glib, - gtk3, - lib, - libGL, - libdrm, - libice, - libkrb5, - libsecret, - libsm, - libunwind, - libx11, - libxau, - libxcb, - libxcrypt-legacy, - libxext, - libxi, - libxkbcommon, - libxrender, - libxcb-image, - libxcb-keysyms, - libxcb-render-util, - libxcb-wm, - makeDesktopItem, - makeWrapper, - openssl, - patchelf, - perl, - python313, - qt6, - requireFile, - stdenv, - zlib, - }: - let - pythonForIDA = python313.withPackages (ps: with ps; [ rpyc ]); + perSystem = + { system, ... }: + let + pkgs = import inputs.nixpkgs { + inherit system; + config.allowUnfree = true; + }; + in + { + packages.ida-pro = pkgs.callPackage ( + { + autoPatchelfHook, + cairo, + copyDesktopItems, + curl, + dbus, + fontconfig, + freetype, + glib, + gtk3, + lib, + libGL, + libdrm, + libice, + libkrb5, + libsecret, + libsm, + libunwind, + libx11, + libxau, + libxcb, + libxcrypt-legacy, + libxext, + libxi, + libxkbcommon, + libxrender, + libxcb-image, + libxcb-keysyms, + libxcb-render-util, + libxcb-wm, + makeDesktopItem, + makeWrapper, + openssl, + patchelf, + perl, + python313, + qt6, + requireFile, + stdenv, + zlib, + }: + let + pythonForIDA = python313.withPackages (ps: with ps; [ rpyc ]); - src = requireFile { - name = "ida-pro_93_x64linux.run"; - url = "https://my.hex-rays.com/"; - sha256 = "a64e6589feeca0f4e1bfb962d1a283761fb38c5158f5f82c8f1e7ddf32f69850"; - }; + src = requireFile { + name = "ida-pro_93_x64linux.run"; + url = "https://my.hex-rays.com/"; + sha256 = "a64e6589feeca0f4e1bfb962d1a283761fb38c5158f5f82c8f1e7ddf32f69850"; + }; - libida = requireFile { - name = "libida.so"; - url = "https://my.hex-rays.com/"; - sha256 = "86cff5a0dbf26eb56076313181e9ca8e7db48212d60d00588217cfac36060531"; - }; + libida = requireFile { + name = "libida.so"; + url = "https://my.hex-rays.com/"; + sha256 = "86cff5a0dbf26eb56076313181e9ca8e7db48212d60d00588217cfac36060531"; + }; - libida32 = requireFile { - name = "libida32.so"; - url = "https://my.hex-rays.com/"; - sha256 = "55afb0edcec85139b99cb36c80d460ab7679c87e50bf4d5b111f7910935e69c2"; - }; + libida32 = requireFile { + name = "libida32.so"; + url = "https://my.hex-rays.com/"; + sha256 = "55afb0edcec85139b99cb36c80d460ab7679c87e50bf4d5b111f7910935e69c2"; + }; - runtimeDependencies = [ - cairo - dbus - fontconfig - freetype - glib - gtk3 - libdrm - libGL - libkrb5 - libsecret - qt6.qtbase - qt6.qtwayland - libunwind - libxkbcommon - openssl.out - stdenv.cc.cc - libice - libsm - libx11 - libxau - libxcb - libxcrypt-legacy - libxext - libxi - libxrender - libxcb-image - libxcb-keysyms - libxcb-render-util - libxcb-wm - zlib - curl.out - pythonForIDA - ]; - in - stdenv.mkDerivation rec { - pname = "ida-pro"; - version = "9.3"; + runtimeDependencies = [ + cairo + dbus + fontconfig + freetype + glib + gtk3 + libdrm + libGL + libkrb5 + libsecret + qt6.qtbase + qt6.qtwayland + libunwind + libxkbcommon + openssl.out + stdenv.cc.cc + libice + libsm + libx11 + libxau + libxcb + libxcrypt-legacy + libxext + libxi + libxrender + libxcb-image + libxcb-keysyms + libxcb-render-util + libxcb-wm + zlib + curl.out + pythonForIDA + ]; + in + stdenv.mkDerivation rec { + pname = "ida-pro"; + version = "9.3"; - inherit src; + inherit src; - desktopItem = makeDesktopItem { - name = "ida-pro"; - exec = "ida"; - icon = "ida-pro"; - comment = meta.description; - desktopName = "IDA Pro"; - genericName = "Interactive Disassembler"; - categories = [ "Development" ]; - startupWMClass = "IDA"; - }; + desktopItem = makeDesktopItem { + name = "ida-pro"; + exec = "ida"; + icon = "ida-pro"; + comment = meta.description; + desktopName = "IDA Pro"; + genericName = "Interactive Disassembler"; + categories = [ "Development" ]; + startupWMClass = "IDA"; + }; - desktopItems = [ desktopItem ]; + desktopItems = [ desktopItem ]; - nativeBuildInputs = [ - makeWrapper - copyDesktopItems - autoPatchelfHook - qt6.wrapQtAppsHook - perl - patchelf - ]; + nativeBuildInputs = [ + makeWrapper + copyDesktopItems + autoPatchelfHook + qt6.wrapQtAppsHook + perl + patchelf + ]; - buildInputs = runtimeDependencies; + buildInputs = runtimeDependencies; - dontUnpack = true; - dontWrapQtApps = true; + dontUnpack = true; + dontWrapQtApps = true; - installPhase = '' - runHook preInstall + installPhase = '' + runHook preInstall - mkdir -p "$out/bin" "$out/lib" "$out/opt" "$out/share/pixmaps" + mkdir -p "$out/bin" "$out/lib" "$out/opt" "$out/share/pixmaps" - IDADIR="$out/opt" - HOME="$out/opt" + IDADIR="$out/opt" + HOME="$out/opt" - $(cat "$NIX_CC/nix-support/dynamic-linker") "$src" \ - --mode unattended --debuglevel 4 --prefix "$IDADIR" || true + $(cat "$NIX_CC/nix-support/dynamic-linker") "$src" \ + --mode unattended --debuglevel 4 --prefix "$IDADIR" || true - install -m 0644 "${libida}" "$IDADIR/libida.so" - install -m 0644 "${libida32}" "$IDADIR/libida32.so" + install -m 0644 "${libida}" "$IDADIR/libida.so" + install -m 0644 "${libida32}" "$IDADIR/libida32.so" - for libFile in "$IDADIR"/*.so "$IDADIR"/*.so.6; do - ln -s "$libFile" "$out/lib/$(basename "$libFile")" - done + for libFile in "$IDADIR"/*.so "$IDADIR"/*.so.6; do + ln -s "$libFile" "$out/lib/$(basename "$libFile")" + done - patchelf --add-needed libpython3.13.so "$out/lib/libida.so" - patchelf --add-needed libcrypto.so "$out/lib/libida.so" - patchelf --add-needed libsecret-1.so.0 "$out/lib/libida.so" + patchelf --add-needed libpython3.13.so "$out/lib/libida.so" + patchelf --add-needed libcrypto.so "$out/lib/libida.so" + patchelf --add-needed libsecret-1.so.0 "$out/lib/libida.so" - addAutoPatchelfSearchPath "$IDADIR" + addAutoPatchelfSearchPath "$IDADIR" - if [ -f "$IDADIR/appico.png" ]; then - ln -s "$IDADIR/appico.png" "$out/share/pixmaps/ida-pro.png" - fi + if [ -f "$IDADIR/appico.png" ]; then + ln -s "$IDADIR/appico.png" "$out/share/pixmaps/ida-pro.png" + fi - wrapProgram "$IDADIR/ida" \ - --prefix IDADIR : "$IDADIR" \ - --prefix QT_PLUGIN_PATH : "$IDADIR/plugins/platforms" \ - --prefix PYTHONPATH : "$out/bin/idalib/python" \ - --prefix PATH : "${pythonForIDA}/bin:$IDADIR" \ - --prefix LD_LIBRARY_PATH : "$out/lib" \ - --set QT_QPA_PLATFORM xcb + wrapProgram "$IDADIR/ida" \ + --prefix IDADIR : "$IDADIR" \ + --prefix QT_PLUGIN_PATH : "$IDADIR/plugins/platforms" \ + --prefix PYTHONPATH : "$out/bin/idalib/python" \ + --prefix PATH : "${pythonForIDA}/bin:$IDADIR" \ + --prefix LD_LIBRARY_PATH : "$out/lib" \ + --set QT_QPA_PLATFORM xcb - ln -s "$IDADIR/ida" "$out/bin/ida" + ln -s "$IDADIR/ida" "$out/bin/ida" - runHook postInstall - ''; + runHook postInstall + ''; - meta = with lib; { - description = "IDA Pro"; - homepage = "https://hex-rays.com/ida-pro/"; - license = licenses.unfree; - mainProgram = "ida"; - platforms = [ "x86_64-linux" ]; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - }; - } - ) { }; - }; + meta = with lib; { + description = "IDA Pro"; + homepage = "https://hex-rays.com/ida-pro/"; + license = licenses.unfree; + mainProgram = "ida"; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + }; + } + ) { }; + }; flake.modules.nixos.ida-pro = { pkgs, ... }: diff --git a/modules/services/git.nix b/modules/services/git.nix index 12ef804..a9f8213 100644 --- a/modules/services/git.nix +++ b/modules/services/git.nix @@ -82,7 +82,10 @@ config.sops.secrets."borgbase_ssh_key".path } -o StrictHostKeyChecking=accept-new"; }; - extraCreateArgs = [ "--info" "--stats" ]; + extraCreateArgs = [ + "--info" + "--stats" + ]; compression = "auto,lzma"; startAt = "daily"; preHook = '' diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index 38b6145..43f801a 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -85,7 +85,10 @@ } -o StrictHostKeyChecking=accept-new"; TMPDIR = "/var/tmp"; }; - extraCreateArgs = [ "--info" "--stats" ]; + extraCreateArgs = [ + "--info" + "--stats" + ]; compression = "auto,lzma"; startAt = "daily"; readWritePaths = [ @@ -95,7 +98,7 @@ preHook = '' set -euo pipefail export BORG_REPO="$(cat ${config.sops.secrets."borg_nextcloud_repo".path})" - + INSTALL="${pkgs.coreutils}/bin/install" FIND="${pkgs.findutils}/bin/find" MYSQLDUMP="${pkgs.mariadb.client}/bin/mariadb-dump" @@ -122,7 +125,9 @@ ''; }; - systemd.services."borgbackup-job-nextcloud".unitConfig.OnFailure = [ "notify-backup-failure@%n.service" ]; + systemd.services."borgbackup-job-nextcloud".unitConfig.OnFailure = [ + "notify-backup-failure@%n.service" + ]; services.fail2ban = { enable = true; diff --git a/modules/services/openssh.nix b/modules/services/openssh.nix index 98241df..5775ca8 100644 --- a/modules/services/openssh.nix +++ b/modules/services/openssh.nix @@ -38,55 +38,55 @@ security.pam.services.sshd.text = lib.mkDefault ( lib.mkAfter '' session optional pam_exec.so ${pkgs.writeShellScript "ssh-login-notify" '' - if [ "$PAM_TYPE" = "open_session" ]; then - TIMESTAMP=$(${pkgs.coreutils}/bin/date "+%Y-%m-%d %H:%M:%S %Z") - HOSTNAME=$(${pkgs.coreutils}/bin/cat /etc/hostname) - - ( - ${pkgs.coreutils}/bin/echo "To: leander@schererleander.de" - ${pkgs.coreutils}/bin/echo "From: root@sachiel.schererleander.de" - ${pkgs.coreutils}/bin/echo "Subject: SSH Login Alert: $PAM_USER" - ${pkgs.coreutils}/bin/echo "Content-Type: text/html; charset=UTF-8" - ${pkgs.coreutils}/bin/echo "" - ${pkgs.coreutils}/bin/cat <<EOF - <!DOCTYPE html> - <html> - <head> - <meta name="color-scheme" content="light dark"> - <style> - :root { color-scheme: light dark; } - body { font-family: sans-serif; line-height: 1.5; color: #000; background: #fff; max-width: 800px; margin: 0 auto; padding: 20px; } - h1 { border-bottom: 2px solid #000; color: #d97706; } - table { width: 100%; border-collapse: collapse; margin-bottom: 15px; font-size: 13px; } - th, td { text-align: left; padding: 6px; border-bottom: 1px solid #ddd; } - a { color: #0066cc; } - @media (prefers-color-scheme: dark) { - body { background: #121212; color: #eee; } - h1, th { border-color: #555; } - h1 { color: #f59e0b; } - th, td { border-color: #333; } - a { color: #66b3ff; } - } - </style> - </head> - <body> - <h1>SSH Login Alert</h1> - - <p>A successful SSH login was just detected.</p> + if [ "$PAM_TYPE" = "open_session" ]; then + TIMESTAMP=$(${pkgs.coreutils}/bin/date "+%Y-%m-%d %H:%M:%S %Z") + HOSTNAME=$(${pkgs.coreutils}/bin/cat /etc/hostname) + + ( + ${pkgs.coreutils}/bin/echo "To: leander@schererleander.de" + ${pkgs.coreutils}/bin/echo "From: root@sachiel.schererleander.de" + ${pkgs.coreutils}/bin/echo "Subject: SSH Login Alert: $PAM_USER" + ${pkgs.coreutils}/bin/echo "Content-Type: text/html; charset=UTF-8" + ${pkgs.coreutils}/bin/echo "" + ${pkgs.coreutils}/bin/cat <<EOF + <!DOCTYPE html> + <html> + <head> + <meta name="color-scheme" content="light dark"> + <style> + :root { color-scheme: light dark; } + body { font-family: sans-serif; line-height: 1.5; color: #000; background: #fff; max-width: 800px; margin: 0 auto; padding: 20px; } + h1 { border-bottom: 2px solid #000; color: #d97706; } + table { width: 100%; border-collapse: collapse; margin-bottom: 15px; font-size: 13px; } + th, td { text-align: left; padding: 6px; border-bottom: 1px solid #ddd; } + a { color: #0066cc; } + @media (prefers-color-scheme: dark) { + body { background: #121212; color: #eee; } + h1, th { border-color: #555; } + h1 { color: #f59e0b; } + th, td { border-color: #333; } + a { color: #66b3ff; } + } + </style> + </head> + <body> + <h1>SSH Login Alert</h1> + + <p>A successful SSH login was just detected.</p> - <table> - <tr><th>User</th><td>$PAM_USER</td></tr> - <tr><th>Host</th><td>$HOSTNAME</td></tr> - <tr><th>Time</th><td>$TIMESTAMP</td></tr> - <tr><th>IP Address</th><td><a href="https://iplookup.flagfox.net/?ip=$PAM_RHOST">$PAM_RHOST</a></td></tr> - <tr><th>Service</th><td>$PAM_SERVICE</td></tr> - <tr><th>TTY</th><td>$PAM_TTY</td></tr> - </table> - </body> - </html> -EOF - ) | /run/wrappers/bin/sendmail -f root@sachiel.schererleander.de leander@schererleander.de - fi + <table> + <tr><th>User</th><td>$PAM_USER</td></tr> + <tr><th>Host</th><td>$HOSTNAME</td></tr> + <tr><th>Time</th><td>$TIMESTAMP</td></tr> + <tr><th>IP Address</th><td><a href="https://iplookup.flagfox.net/?ip=$PAM_RHOST">$PAM_RHOST</a></td></tr> + <tr><th>Service</th><td>$PAM_SERVICE</td></tr> + <tr><th>TTY</th><td>$PAM_TTY</td></tr> + </table> + </body> + </html> + EOF + ) | /run/wrappers/bin/sendmail -f root@sachiel.schererleander.de leander@schererleander.de + fi ''} '' ); diff --git a/modules/system/wine.nix b/modules/system/wine.nix index ac5074b..0de6315 100644 --- a/modules/system/wine.nix +++ b/modules/system/wine.nix @@ -4,7 +4,7 @@ let wine = pkgs.wineWow64Packages.waylandFull; - wineForWinetricks = pkgs.runCommand "wine-for-winetricks" {} '' + wineForWinetricks = pkgs.runCommand "wine-for-winetricks" { } '' mkdir -p $out/bin ln -s ${wine}/bin/wine $out/bin/wine |
