My Nix Configuration
at main 3.2 kB view raw
1{ 2 config, 3 pkgs, 4 lib, 5 self', 6 self, 7 ... 8}: 9let 10 d = self.lib.data.services.nextcloud; 11 i = self.lib.data.services.nextcloud-imaginary; 12in 13{ 14 imports = [ 15 ./office.nix 16 ./imaginary.nix 17 ]; 18 services.nextcloud = { 19 enable = true; 20 package = pkgs.nextcloud32; 21 phpPackage = lib.mkForce pkgs.php82; 22 appstoreEnable = true; 23 caching.redis = true; 24 # Enable Webfinger 25 webfinger = true; 26 # Any additional PHP Extensions we need 27 phpExtraExtensions = all: [ 28 all.pdlib 29 all.bz2 30 ]; 31 config = { 32 adminpassFile = config.age.secrets.nextcloud-admin-pw.path; 33 adminuser = "pyrox"; 34 dbtype = "pgsql"; 35 }; 36 settings = { 37 default_phone_region = "US"; 38 overwriteprotocol = "https"; 39 trusted_proxies = [ "100.64.0.0/10" ]; 40 # Preview Settings 41 "preview_imaginary_url" = "http://localhost:${builtins.toString i.port}"; 42 "preview_format" = "webp"; 43 "preview_ffmpeg_path" = "${pkgs.ffmpeg-headless}/bin/ffmpeg"; 44 "enabledPreviewProviders" = [ 45 "OC\\Preview\\Font" 46 "OC\\Preview\\Krita" 47 "OC\\Preview\\MP3" 48 "OC\\Preview\\MarkDown" 49 "OC\\Preview\\MSOfficeDoc" 50 "OC\\Preview\\OpenDocument" 51 "OC\\Preview\\TXT" 52 "OC\\Preview\\Imaginary" 53 ]; 54 # Memories Configuration 55 "memories.exiftool" = "${pkgs.exiftool}/bin/exiftool"; 56 "memories.exiftool_no_local" = true; 57 # # Index Everything 58 "memories.index.mode" = "1"; 59 # # GIS Data in Postgres 60 "memories.gis_type" = 2; 61 # # Transcoding 62 "memories.vod.disable" = false; 63 "memories.vod.vaapi" = true; 64 "memories.vod.nvenc" = false; 65 "memories.vod.use_gop_size" = false; # NVENV-only 66 "memories.vod.ffmpeg" = "${pkgs.ffmpeg-headless}/bin/ffmpeg"; 67 "memories.vod.ffprobe" = "${pkgs.ffmpeg-headless}/bin/ffprobe"; 68 "memories.vod.path" = "/var/lib/nextcloud/store-apps/memories/bin-ext/go-vod-amd64"; 69 "memories.vod.external" = false; 70 71 # Recognize Options 72 "node_binary" = "${pkgs.nodejs_20}/bin/node"; 73 "tensorflow.cores" = 6; 74 "tensorflow.gpu" = false; 75 "musicnn.enabled" = false; 76 "movinet.enabled" = false; 77 "faces.enable" = true; 78 "imagenet.enabled" = true; 79 "landmarks.enabled" = true; 80 }; 81 phpOptions = { 82 "opcache.interned_strings_buffer" = "32"; 83 "opcache.jit" = "1255"; 84 "opcache.jit_buffer_size" = "256M"; 85 "opcache.save_comments" = "1"; 86 "opcache.validate_timestamps" = "0"; 87 }; 88 poolSettings = { 89 "pm" = "dynamic"; 90 "pm.max_children" = 43; 91 "pm.start_servers" = 10; 92 "pm.min_spare_servers" = 10; 93 "pm.max_spare_servers" = 32; 94 "pm.max_requests" = 500; 95 }; 96 configureRedis = true; 97 database.createLocally = true; 98 hostName = d.extUrl; 99 }; 100 age.secrets.nextcloud-admin-pw = { 101 file = ./nextcloud-admin-pw.age; 102 owner = "nextcloud"; 103 group = "nextcloud"; 104 }; 105 services.anubis.instances.nextcloud = { 106 settings = { 107 BIND = ":${toString d.anubis}"; 108 POLICY_FNAME = "${self'.packages.anubis-files}/policies/nextcloud.yaml"; 109 TARGET = "http://localhost:${toString d.port}"; 110 }; 111 }; 112}