diff --git a/modules/misc/news/2026/02/2026-02-18_18-20-43.nix b/modules/misc/news/2026/02/2026-02-18_18-20-43.nix new file mode 100644 index 00000000..60efe6d2 --- /dev/null +++ b/modules/misc/news/2026/02/2026-02-18_18-20-43.nix @@ -0,0 +1,12 @@ +{ + time = "2026-02-18T17:20:43+00:00"; + condition = true; + message = '' + A new module is available: 'programs.rizin'. + + Rizin is a free and open-source reverse engineering framework + that delivers a comprehensive binary analysis experience. + It focuses on usability, stability, and functional features, + striving to create a welcoming environment for developers and users. + ''; +} diff --git a/modules/programs/rizin.nix b/modules/programs/rizin.nix new file mode 100644 index 00000000..43a6afab --- /dev/null +++ b/modules/programs/rizin.nix @@ -0,0 +1,44 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.programs.rizin; +in +{ + meta.maintainers = [ + lib.hm.maintainers.rsahwe + ]; + + options = { + programs.rizin = { + enable = lib.mkEnableOption "Rizin"; + + package = lib.mkPackageOption pkgs "rizin" { nullable = true; }; + + extraConfig = lib.mkOption { + type = lib.types.lines; + default = ""; + example = '' + e asm.bytes=true + e asm.bytes.space=true + ''; + description = '' + Run configuration written to {file}`rizinrc`. + See + for more information. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; + + xdg.configFile."rizin/rizinrc" = lib.mkIf (cfg.extraConfig != "") { + text = cfg.extraConfig; + }; + }; +} diff --git a/tests/modules/programs/rizin/basic-configuration.nix b/tests/modules/programs/rizin/basic-configuration.nix new file mode 100644 index 00000000..ca740885 --- /dev/null +++ b/tests/modules/programs/rizin/basic-configuration.nix @@ -0,0 +1,13 @@ +{ + programs.rizin = { + enable = true; + extraConfig = '' + e asm.bytes=true + e asm.bytes.space=true + ''; + }; + + nmt.script = '' + assertFileExists "home-files/.config/rizin/rizinrc" + ''; +} diff --git a/tests/modules/programs/rizin/default.nix b/tests/modules/programs/rizin/default.nix new file mode 100644 index 00000000..6358b458 --- /dev/null +++ b/tests/modules/programs/rizin/default.nix @@ -0,0 +1,4 @@ +{ + rizin-basic-configuration = ./basic-configuration.nix; + rizin-disabled-configuration = ./disabled-configuration.nix; +} diff --git a/tests/modules/programs/rizin/disabled-configuration.nix b/tests/modules/programs/rizin/disabled-configuration.nix new file mode 100644 index 00000000..822d56a8 --- /dev/null +++ b/tests/modules/programs/rizin/disabled-configuration.nix @@ -0,0 +1,13 @@ +{ + programs.rizin = { + enable = false; + extraConfig = '' + e asm.bytes=true + e asm.bytes.space=true + ''; + }; + + nmt.script = '' + assertPathNotExists "home-files/.config/rizin/rizinrc" + ''; +}