From a4067cefd21f3b5c73d9ccf1cc2cbcf173374acb Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Sun, 27 Sep 2015 16:17:09 +0200 Subject: Took care of pam_auth deps for prosody --- custom/luaPam.nix | 26 +++++++++++++++++++ customized/prosody.nix | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ ymir.nix | 13 +++++++--- 3 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 custom/luaPam.nix create mode 100644 customized/prosody.nix diff --git a/custom/luaPam.nix b/custom/luaPam.nix new file mode 100644 index 00000000..f0c93e4f --- /dev/null +++ b/custom/luaPam.nix @@ -0,0 +1,26 @@ +{ stdenv +, pkgs +, fetchgit +}: + +let + lua = pkgs.luaPackages.lua; +in pkgs.luaPackages.buildLuaPackage { + name = "lua-pam"; + buildInputs = (with pkgs; [ pam ]); + src = fetchgit { + url = "https://github.com/devurandom/lua-pam"; + rev = "3818ee6346a976669d74a5cbc2a83ad2585c5953"; + sha256 = "1aci3psyxwxbls93w5b4vdhnrrp3w94i97dl8qrmjgigzbjszwvr"; + }; + preBuild = '' + makeFlagsArray=( + LUA_CPPFLAGS="-I${lua}/include -L${lua}/lib" + LUA_LIBS="-L${lua}/lib -llua" + ); + ''; + installPhase = '' + mkdir -p $out/lib/lua/${lua.luaversion} + install pam.so $out/lib/lua/${lua.luaversion}/ + ''; +} diff --git a/customized/prosody.nix b/customized/prosody.nix new file mode 100644 index 00000000..4a6da4fb --- /dev/null +++ b/customized/prosody.nix @@ -0,0 +1,69 @@ +{ stdenv, fetchurl, libidn, openssl, makeWrapper, fetchhg +, lua5, luasocket, luasec, luaexpat, luafilesystem, luabitop, luaevent ? null, luazlib ? null +, withLibevent ? true, withZlib ? true +, extraModules ? [], extraLibs ? [] +}: + +assert withLibevent -> luaevent != null; +assert withZlib -> luazlib != null; + +with stdenv.lib; + +let + libs = [ luasocket luasec luaexpat luafilesystem luabitop ] + ++ optional withLibevent luaevent + ++ optional withZlib luazlib + ++ extraLibs; + getPath = lib : type : "${lib}/lib/lua/${lua5.luaversion}/?.${type};${lib}/share/lua/${lua5.luaversion}/?.${type}"; + getLuaPath = lib : getPath lib "lua"; + getLuaCPath = lib : getPath lib "so"; + copyModule = name : "cp -rv $communityModules/${name} $out/lib/prosody/modules/" + luaPath = concatStringsSep ";" (map getLuaPath libs); + luaCPath = concatStringsSep ";" (map getLuaCPath libs); + copyModules = concatStringsSep ";" (map copyModule (extraModules ++ ["mod_websocket"])); +in + +stdenv.mkDerivation rec { + version = "0.9.8"; + name = "prosody-${version}"; + + src = fetchurl { + url = "http://prosody.im/downloads/source/${name}.tar.gz"; + sha256 = "0wbq4ps69l09fjb5dfjzab6i30hzpi4bvyj5kc44gf70arf42w4l"; + }; + + communityModules = fetchhg { + url = "http://prosody-modules.googlecode.com/hg/"; + rev = "4b55110b0aa8"; + sha256 = "0010x2rl9f9ihy2nwqan2jdlz25433srj2zna1xh10490mc28hij"; + }; + + buildInputs = [ lua5 luasocket luasec luaexpat luabitop libidn openssl makeWrapper ] + ++ optional withLibevent luaevent + ++ optional withZlib luazlib; + + configureFlags = [ + "--ostype=linux" + "--with-lua-include=${lua5}/include" + "--with-lua=${lua5}" + ]; + + postInstall = '' + ${copyModules} + wrapProgram $out/bin/prosody \ + --set LUA_PATH '"${luaPath};"' \ + --set LUA_CPATH '"${luaCPath};"' + wrapProgram $out/bin/prosodyctl \ + --add-flags '--config "/etc/prosody/prosody.cfg.lua"' \ + --set LUA_PATH '"${luaPath};"' \ + --set LUA_CPATH '"${luaCPath};"' + ''; + + meta = { + description = "Open-source XMPP application server written in Lua"; + license = licenses.mit; + homepage = http://www.prosody.im; + platforms = platforms.linux; + maintainers = [ maintainers.flosse ]; + }; +} diff --git a/ymir.nix b/ymir.nix index 71f6a87b..a538f1eb 100644 --- a/ymir.nix +++ b/ymir.nix @@ -1,8 +1,7 @@ { config, pkgs, ... }: let - prosodyModules = pkgs.callPackage (import ./custom/prosody-modules.nix) { modules = [ "mod_auth_pam" - ]; }; + luaPam = pkgs.callPackage ./custom/luaPam.nix {}; in { imports = [ @@ -17,6 +16,11 @@ in { device = "/dev/vda"; }; + nixpkgs.config.packageOverrides = pkgs: + rec { + prosody = pkgs.callPackage ./customized/prosody.nix { extraModules = ["mod_auth_pam"]; extraLibs = [luaPam]; } + }; + environment.systemPackages = with pkgs; [ git mosh @@ -78,11 +82,14 @@ in { services.prosody = { enable = true; admins = [ - "g@xmpp.li" + "gkleen@xmpp.li" ]; allowRegistration = false; extraModules = [ "private" ]; + extraConfig = '' + authentication="pam" + ''; virtualHosts.default = { enabled = true; -- cgit v1.2.3