summaryrefslogtreecommitdiff
path: root/default.nix
diff options
context:
space:
mode:
authorDennis Kobert <dennis@kobert.dev>2026-03-10 20:39:54 +0100
committerDennis Kobert <dennis@kobert.dev>2026-03-10 20:39:54 +0100
commit3341e1e694ad64c12055c42008c4927c327950de (patch)
tree15a9ddbdcd7a4d64fb5263fac9b9653e210b7819 /default.nix
parent334625d069b0adf9d046703daf20215bbc83bc4e (diff)
Support config file path, add NixOS module with mode option
Diffstat (limited to 'default.nix')
-rw-r--r--default.nix17
1 files changed, 17 insertions, 0 deletions
diff --git a/default.nix b/default.nix
index fa9d521..4ae9a74 100644
--- a/default.nix
+++ b/default.nix
@@ -28,6 +28,23 @@ rustPlatform.buildRustPackage (finalAttrs: {
pam
];
+ # Support reading config from a file path instead of only inline JSON,
+ # since NixOS appends comments to PAM rule lines which breaks JSON parsing.
+ postPatch = ''
+ substituteInPlace src/lib.rs \
+ --replace-fail \
+ 'let arg_string = args.iter().map(|s| s.to_str().unwrap()).collect::<Vec<_>>().join(" ");' \
+ 'let arg_string = {
+ let joined = args.iter().map(|s| s.to_str().unwrap()).collect::<Vec<_>>().join(" ");
+ if joined.starts_with("/") {
+ std::fs::read_to_string(joined.split_whitespace().next().unwrap())
+ .unwrap_or(joined)
+ } else {
+ joined
+ }
+ };'
+ '';
+
# cdylib produces no binaries, only libpam_any.so
installPhase = ''
runHook preInstall