aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/overlays/rpcs3.nix16
-rw-r--r--modules/pkgs/ida-pro-mcp.nix98
-rw-r--r--modules/pkgs/ida-pro.nix335
-rw-r--r--modules/services/git.nix5
-rw-r--r--modules/services/nextcloud.nix11
-rw-r--r--modules/services/openssh.nix96
-rw-r--r--modules/system/wine.nix2
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