diff --git a/social/pleroma-module.nix b/social/pleroma-module.nix deleted file mode 100644 index 45b4b9e..0000000 --- a/social/pleroma-module.nix +++ /dev/null @@ -1,133 +0,0 @@ -{ config, options, lib, pkgs, stdenv, ... }: -let - cfg = config.services.pleroma; -in -{ - options = { - services.pleroma = with lib; { - enable = mkEnableOption "pleroma"; - - package = mkOption { - type = types.package; - default = pkgs.pleroma-otp; - description = "Pleroma package to use."; - }; - - user = mkOption { - type = types.str; - default = "pleroma"; - description = "User account under which pleroma runs."; - }; - - group = mkOption { - type = types.str; - default = "pleroma"; - description = "Group account under which pleroma runs."; - }; - - stateDir = mkOption { - type = types.str; - default = "/var/lib/pleroma"; - readOnly = true; - description = "Directory where the pleroma service will save the uploads and static files."; - }; - - configs = mkOption { - type = with types; listOf str; - description = '' - Pleroma public configuration. - This list gets appended from left to - right into /etc/pleroma/config.exs. Elixir evaluates its - configuration imperatively, meaning you can override a - setting by appending a new str to this NixOS option list. - DO NOT STORE ANY PLEROMA SECRET - HERE, use - services.pleroma.secretConfigFile - instead. - This setting is going to be stored in a file part of - the Nix store. The Nix store being world-readable, it's not - the right place to store any secret - Have a look to Pleroma section in the NixOS manual for more - informations. - ''; - }; - - secretConfigFile = mkOption { - type = types.str; - default = "/var/lib/pleroma/secrets.exs"; - description = '' - Path to the file containing your secret pleroma configuration. - DO NOT POINT THIS OPTION TO THE NIX - STORE, the store being world-readable, it'll - compromise all your secrets. - ''; - }; - }; - }; - - config = lib.mkIf cfg.enable { - users = { - users."${cfg.user}" = { - description = "Pleroma user"; - home = cfg.stateDir; - extraGroups = [ cfg.group ]; - }; - groups."${cfg.group}" = { }; - }; - - environment.systemPackages = [ cfg.package ]; - - environment.etc."/pleroma/config.exs".text = '' - ${lib.concatMapStrings (x: "${x}") cfg.configs} - # The lau/tzdata library is trying to download the latest - # timezone database in the OTP priv directory by default. - # This directory being in the store, it's read-only. - # Setting that up to a more appropriate location. - config :tzdata, :data_dir, "/var/lib/pleroma/elixir_tzdata_data" - import_config "${cfg.secretConfigFile}" - ''; - - systemd.services.pleroma = { - description = "Pleroma social network"; - after = [ "network-online.target" "postgresql.service" ]; - wantedBy = [ "multi-user.target" ]; - restartTriggers = [ config.environment.etc."/pleroma/config.exs".source ]; - serviceConfig = { - User = cfg.user; - Group = cfg.group; - Type = "exec"; - WorkingDirectory = "~"; - StateDirectory = "pleroma pleroma/static pleroma/uploads"; - StateDirectoryMode = "700"; - - # Checking the conf file is there then running the database - # migration before each service start, just in case there are - # some pending ones. - # - # It's sub-optimal as we'll always run this, even if pleroma - # has not been updated. But the no-op process is pretty fast. - # Better be safe than sorry migration-wise. - ExecStartPre = - let preScript = pkgs.writers.writeBashBin "pleromaStartPre" - "${cfg.package}/bin/pleroma_ctl migrate"; - in "${preScript}/bin/pleromaStartPre"; - - ExecStart = "${cfg.package}/bin/pleroma start"; - ExecStop = "${cfg.package}/bin/pleroma stop"; - ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID"; - - # Systemd sandboxing directives. - # Taken from the upstream contrib systemd service at - # pleroma/installation/pleroma.service - PrivateTmp = true; - ProtectHome = true; - ProtectSystem = "full"; - PrivateDevices = false; - NoNewPrivileges = true; - CapabilityBoundingSet = "~CAP_SYS_ADMIN"; - }; - }; - - }; - meta.maintainers = with lib.maintainers; [ ninjatrappeur ]; -} diff --git a/social/pleroma-package.nix b/social/pleroma-package.nix deleted file mode 100644 index 38f41e9..0000000 --- a/social/pleroma-package.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ lib -, stdenv -, autoPatchelfHook -, fetchurl -, file -, makeWrapper -, ncurses -, nixosTests -, openssl -, unzip -, zlib -}: -stdenv.mkDerivation { - pname = "pleroma-otp"; - version = "2.3.0"; - - # To find the latest binary release stable link, have a look at - # the CI pipeline for the latest commit of the stable branch - # https://git.pleroma.social/pleroma/pleroma/-/tree/stable - src = { - aarch64-linux = fetchurl { - url = "https://git.pleroma.social/pleroma/pleroma/-/jobs/182392/artifacts/download"; - sha256 = "1drpd6xh7m2damxi5impb8jwvjl6m3qv5yxynl12i8g66vi3rbwf"; - }; - x86_64-linux = fetchurl { - url = "https://git.pleroma.social/pleroma/pleroma/-/jobs/182388/artifacts/download"; - sha256 = "1c6l04gga9iigm249ywwcrjg6wzy8iiid652mws3j9dnl71w2sim"; - }; - }."${stdenv.hostPlatform.system}"; - - nativeBuildInputs = [ unzip ]; - - buildInputs = [ - autoPatchelfHook - file - makeWrapper - ncurses - openssl - zlib - ]; - - # mkDerivation fails to detect the zip nature of $src due to the - # missing .zip extension. - # Let's unpack the archive explicitely. - unpackCmd = "unzip $curSrc"; - - installPhase = '' - mkdir $out - cp -r * $out''; - - # Pleroma is using the project's root path (here the store path) - # as its TMPDIR. - # Patching it to move the tmp dir to the actual tmpdir - postFixup = '' - wrapProgram $out/bin/pleroma --set-default RELEASE_TMP "/tmp" - wrapProgram $out/bin/pleroma_ctl --set-default RELEASE_TMP "/tmp"''; - - passthru.tests = { - pleroma = nixosTests.pleroma; - }; - - meta = with lib; { - description = "ActivityPub microblogging server"; - homepage = https://git.pleroma.social/pleroma/pleroma; - license = licenses.agpl3; - maintainers = with maintainers; [ ninjatrappeur ]; - platforms = [ "x86_64-linux" "aarch64-linux" ]; - }; -} diff --git a/social/pleroma.nix b/social/pleroma.nix index 49f59ad..7066fd6 100644 --- a/social/pleroma.nix +++ b/social/pleroma.nix @@ -3,11 +3,6 @@ let cfg = config.services.userdata; in { - nixpkgs.overlays = [ - (self: super: { - pleroma-otp = self.callPackage ./pleroma-package.nix { }; - }) - ]; services = { pleroma = { enable = cfg.pleroma.enable;