diff --git a/flake.lock b/flake.lock index 328b23e..1ffaf93 100644 --- a/flake.lock +++ b/flake.lock @@ -104,11 +104,11 @@ ] }, "locked": { - "lastModified": 1616815633, - "narHash": "sha256-U9DO04sb+8Qy13EJckxOJIxT2Vlc/8i089XkfBnXH0M=", + "lastModified": 1617493660, + "narHash": "sha256-PnPSs6RkkI2M6GyB2iGsL6hgDTe01yk5ZGP9q/Q14M8=", "owner": "nix-community", "repo": "home-manager", - "rev": "7b30fc99227e6c7c331a01a9fb87599e4cd8cee1", + "rev": "25a6a6d2984e70c9a07c8f8a69ebe24e6c700abf", "type": "github" }, "original": { @@ -120,11 +120,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1616527350, - "narHash": "sha256-VkMevY2WLU+K7T/P4wVj18Ms8zyeRfp05ILf556m5Y8=", + "lastModified": 1617082367, + "narHash": "sha256-W0cQPGjc4IVzryaGycuoS8KZkXafS1P23w/fcKLoD5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3f7e969b9860fb80750147aeb56dab1c730e756", + "rev": "04a2b269d8921505a2969fc9ec25c1f517f2b307", "type": "github" }, "original": { @@ -136,11 +136,11 @@ }, "nur": { "locked": { - "lastModified": 1616847717, - "narHash": "sha256-MgVs0lnB0MIcqyMAsE3tu5m+6B1ifJSFBbGt4jJ9hes=", + "lastModified": 1617544900, + "narHash": "sha256-C4uHa3IJHvQFmF4M4hK1FhASliEyag9M/qZLQsQD1iE=", "owner": "nix-community", "repo": "NUR", - "rev": "32be682ed10262773f99f0f531237cdf66a297e1", + "rev": "18e3badc327531f85031b09511dc16bbb0bdd8f4", "type": "github" }, "original": { @@ -166,6 +166,49 @@ "type": "github" } }, + "photoprism": { + "flake": false, + "locked": { + "lastModified": 1613655548, + "narHash": "sha256-ip5QC2fZyJLYdcgaeCiCmbIb6byoqP9SYN79KAZSsVc=", + "owner": "photoprism", + "repo": "photoprism", + "rev": "a9f64f98c2c99c07a9e69a82a1122e3b520790cf", + "type": "github" + }, + "original": { + "owner": "photoprism", + "repo": "photoprism", + "rev": "a9f64f98c2c99c07a9e69a82a1122e3b520790cf", + "type": "github" + } + }, + "photoprism-flake": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ], + "photoprism": "photoprism", + "ranz2nix": "ranz2nix" + }, + "locked": { + "lastModified": 1617552772, + "narHash": "sha256-qwx9FXWyVctsQ71at/SMuQqWLqb8PsWO70rGhl89ISc=", + "owner": "felschr", + "repo": "photoprism-flake", + "rev": "506288386361021db9b8b0c878ffe317bcc8a11c", + "type": "github" + }, + "original": { + "owner": "felschr", + "ref": "multi-arch", + "repo": "photoprism-flake", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "cabal-fmt-src": "cabal-fmt-src", @@ -192,6 +235,22 @@ "type": "github" } }, + "ranz2nix": { + "flake": false, + "locked": { + "lastModified": 1594668772, + "narHash": "sha256-JE7lk0rDP5itZqWOwjuv8N18xLbGc6XL/0u9rMnhXUk=", + "owner": "andir", + "repo": "ranz2nix", + "rev": "637276c3110716d2a798e737fe62e54b37190d50", + "type": "github" + }, + "original": { + "owner": "andir", + "repo": "ranz2nix", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", @@ -199,6 +258,7 @@ "nixpkgs": "nixpkgs", "nur": "nur", "obelisk": "obelisk", + "photoprism-flake": "photoprism-flake", "pre-commit-hooks": "pre-commit-hooks" } } diff --git a/flake.nix b/flake.nix index 2bead35..1399972 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,13 @@ flake = false; }; + inputs.photoprism-flake = { + # url = "github:GTrunSec/photoprism-flake"; + url = "github:felschr/photoprism-flake/multi-arch"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; + inputs.pre-commit-hooks = { url = # "github:Myhlamaeus/pre-commit-hooks.nix/feat/flake"; @@ -23,7 +30,7 @@ }; outputs = { self, nixpkgs, flake-utils, home-manager, nur, obelisk - , pre-commit-hooks }: + , photoprism-flake, pre-commit-hooks }: let overlays = { deconz = self: super: { @@ -32,6 +39,10 @@ obelisk = self: super: { obelisk = (import obelisk { inherit (self) system; }).command; }; + # custom overlay so it's using the flake's nixpkgs + photoprism = self: super: { + photoprism = photoprism-flake.defaultPackage.${self.system}; + }; }; systemModule = { hostName, hardwareConfig, config }: ({ pkgs, ... }: { @@ -43,7 +54,12 @@ nix.registry.nixpkgs.flake = nixpkgs; - nixpkgs.overlays = [ nur.overlay overlays.deconz overlays.obelisk ]; + nixpkgs.overlays = [ + nur.overlay + overlays.deconz + overlays.photoprism + overlays.obelisk + ]; imports = [ hardwareConfig home-manager.nixosModules.home-manager config ]; @@ -85,6 +101,7 @@ modules = [ nixpkgs.nixosModules.notDetected { home-manager.users.felschr.imports = [ homeManagerModules.git ]; } + photoprism-flake.nixosModules.photoprism (systemModule { hostName = "felix-rpi4"; hardwareConfig = ./hardware/rpi4.nix; diff --git a/rpi4.nix b/rpi4.nix index 77f8876..f537a78 100644 --- a/rpi4.nix +++ b/rpi4.nix @@ -12,6 +12,7 @@ with builtins; { ./services/kodi.nix ./services/jellyfin.nix ./services/etebase.nix + ./services/photoprism.nix ./services/home-assistant.nix ./services/owntracks.nix ]; diff --git a/services/photoprism.nix b/services/photoprism.nix new file mode 100644 index 0000000..600be0b --- /dev/null +++ b/services/photoprism.nix @@ -0,0 +1,24 @@ +{ pkgs, config, ... }: + +{ + environment.systemPackages = [ pkgs.photoprism ]; + + services.nginx = { + enable = true; + virtualHosts."photos.felschr.com" = { + enableACME = true; + forceSSL = true; + locations."/" = { + proxyPass = + "http://localhost:${toString config.services.photoprism.port}"; + proxyWebsockets = true; + extraConfig = '' + client_max_body_size 100M; + proxy_read_timeout 300s; + ''; + }; + }; + }; + + services.photoprism.enable = true; +} diff --git a/services/restic/rpi4.nix b/services/restic/rpi4.nix index 6488e4c..3aec923 100644 --- a/services/restic/rpi4.nix +++ b/services/restic/rpi4.nix @@ -46,6 +46,7 @@ in { "/var/lib/etebase-server" "/var/lib/hass" "/var/lib/mosquitto" + "/var/lib/photoprism" "/var/lib/syncthing" "/var/lib/jellyfin" "/var/lib/owntracks"