nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 155 lines 3.6 kB view raw
1{ 2 stdenvNoCC, 3 lib, 4 nixosTests, 5 fetchFromGitHub, 6 fetchpatch, 7 applyPatches, 8 bundlerEnv, 9 callPackage, 10 procps, 11 ruby, 12 postgresql, 13 jq, 14 moreutils, 15 nodejs, 16 pnpm_9, 17 fetchPnpmDeps, 18 pnpmConfigHook, 19 cacert, 20 valkey, 21 dataDir ? "/var/lib/zammad", 22}: 23 24let 25 pname = "zammad"; 26 version = "6.5.2"; 27 28 src = applyPatches { 29 src = fetchFromGitHub (lib.importJSON ./source.json); 30 patches = [ 31 ./fix-sendmail-location.diff 32 # Fix mail fetch failing with OpenSSL 3.6 33 # https://github.com/zammad/zammad/pull/5888 34 (fetchpatch { 35 url = "https://github.com/zammad/zammad/commit/01376d45f48df057e4377518e6f7e4a0db7de624.patch"; 36 hash = "sha256-uH1/t0dP5nvh12GsJz6Yf/RXpf8+hkYoVJnLJAXqpuc="; 37 }) 38 ]; 39 40 postPatch = '' 41 sed -i -e "s|ruby '3.2.[0-9]\+'|ruby '${ruby.version}'|" Gemfile 42 sed -i -e "s|ruby 3.2.[0-9]\+p[0-9]\+|ruby ${ruby.version}|" Gemfile.lock 43 sed -i -e "s|3.2.[0-9]\+|${ruby.version}|" .ruby-version 44 ${jq}/bin/jq '. += {name: "Zammad", version: "${version}"}' package.json | ${moreutils}/bin/sponge package.json 45 ''; 46 }; 47 48 rubyEnv = bundlerEnv { 49 name = "zammad-gems-${version}"; 50 inherit version; 51 52 # Which ruby version to select: 53 # https://docs.zammad.org/en/latest/prerequisites/software.html#ruby-programming-language 54 inherit ruby; 55 56 gemdir = src; 57 gemset = ./gemset.nix; 58 groups = [ 59 "assets" 60 "unicorn" # server 61 "test" 62 "mysql" 63 "puma" 64 "development" 65 "postgres" # database 66 ]; 67 }; 68 69in 70stdenvNoCC.mkDerivation { 71 inherit pname version src; 72 73 buildInputs = [ 74 rubyEnv 75 rubyEnv.wrappedRuby 76 rubyEnv.bundler 77 ]; 78 79 nativeBuildInputs = [ 80 valkey 81 postgresql 82 pnpmConfigHook 83 pnpm_9 84 nodejs 85 procps 86 cacert 87 ]; 88 89 env.RAILS_ENV = "production"; 90 91 pnpmDeps = fetchPnpmDeps { 92 inherit pname src; 93 pnpm = pnpm_9; 94 95 fetcherVersion = 1; 96 hash = "sha256-mfdzb/LXQYL8kaQpWi9wD3OOroOOonDlJrhy9Dwl1no"; 97 }; 98 99 buildPhase = '' 100 mkdir redis-work 101 pushd redis-work 102 redis-server & 103 REDIS_PID=$! 104 popd 105 106 mkdir postgres-work 107 initdb -D postgres-work --encoding=utf8 108 pg_ctl start -D postgres-work -o "-k $PWD/postgres-work -h '''" 109 createuser -h $PWD/postgres-work zammad -R -S 110 createdb -h $PWD/postgres-work --encoding=utf8 --owner=zammad zammad 111 112 rake DATABASE_URL="postgresql:///zammad?host=$PWD/postgres-work" assets:precompile 113 114 kill $REDIS_PID 115 pg_ctl stop -D postgres-work -m immediate 116 rm -r redis-work postgres-work 117 ''; 118 119 installPhase = '' 120 cp -R . $out 121 rm -rf $out/config/database.yml $out/config/secrets.yml $out/tmp $out/log 122 # dataDir will be set in the module, and the package gets overridden there 123 ln -s ${dataDir}/config/database.yml $out/config/database.yml 124 ln -s ${dataDir}/config/secrets.yml $out/config/secrets.yml 125 ln -s ${dataDir}/log $out/log 126 ln -s ${dataDir}/storage $out/storage 127 ln -s ${dataDir}/tmp $out/tmp 128 ''; 129 130 passthru = { 131 inherit rubyEnv; 132 updateScript = [ 133 "${callPackage ./update.nix { }}/bin/update.sh" 134 pname 135 (toString ./.) 136 ]; 137 tests = { 138 inherit (nixosTests) zammad; 139 }; 140 }; 141 142 meta = { 143 description = "Web-based, open source user support/ticketing solution"; 144 homepage = "https://zammad.org"; 145 license = lib.licenses.agpl3Plus; 146 platforms = [ 147 "x86_64-linux" 148 "aarch64-linux" 149 ]; 150 maintainers = with lib.maintainers; [ 151 taeer 152 netali 153 ]; 154 }; 155}