feat(rpi4): add photoprism

This commit is contained in:
Felix Schröter 2021-04-04 18:49:39 +02:00
parent e444b0818e
commit 5b58081b61
No known key found for this signature in database
GPG key ID: 910ACB9F6BD26F58
5 changed files with 114 additions and 11 deletions

View file

@ -104,11 +104,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1616815633, "lastModified": 1617493660,
"narHash": "sha256-U9DO04sb+8Qy13EJckxOJIxT2Vlc/8i089XkfBnXH0M=", "narHash": "sha256-PnPSs6RkkI2M6GyB2iGsL6hgDTe01yk5ZGP9q/Q14M8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "7b30fc99227e6c7c331a01a9fb87599e4cd8cee1", "rev": "25a6a6d2984e70c9a07c8f8a69ebe24e6c700abf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -120,11 +120,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1616527350, "lastModified": 1617082367,
"narHash": "sha256-VkMevY2WLU+K7T/P4wVj18Ms8zyeRfp05ILf556m5Y8=", "narHash": "sha256-W0cQPGjc4IVzryaGycuoS8KZkXafS1P23w/fcKLoD5Y=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "d3f7e969b9860fb80750147aeb56dab1c730e756", "rev": "04a2b269d8921505a2969fc9ec25c1f517f2b307",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -136,11 +136,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1616847717, "lastModified": 1617544900,
"narHash": "sha256-MgVs0lnB0MIcqyMAsE3tu5m+6B1ifJSFBbGt4jJ9hes=", "narHash": "sha256-C4uHa3IJHvQFmF4M4hK1FhASliEyag9M/qZLQsQD1iE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "32be682ed10262773f99f0f531237cdf66a297e1", "rev": "18e3badc327531f85031b09511dc16bbb0bdd8f4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -166,6 +166,49 @@
"type": "github" "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": { "pre-commit-hooks": {
"inputs": { "inputs": {
"cabal-fmt-src": "cabal-fmt-src", "cabal-fmt-src": "cabal-fmt-src",
@ -192,6 +235,22 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
@ -199,6 +258,7 @@
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nur": "nur", "nur": "nur",
"obelisk": "obelisk", "obelisk": "obelisk",
"photoprism-flake": "photoprism-flake",
"pre-commit-hooks": "pre-commit-hooks" "pre-commit-hooks": "pre-commit-hooks"
} }
} }

View file

@ -15,6 +15,13 @@
flake = false; 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 = { inputs.pre-commit-hooks = {
url = url =
# "github:Myhlamaeus/pre-commit-hooks.nix/feat/flake"; # "github:Myhlamaeus/pre-commit-hooks.nix/feat/flake";
@ -23,7 +30,7 @@
}; };
outputs = { self, nixpkgs, flake-utils, home-manager, nur, obelisk outputs = { self, nixpkgs, flake-utils, home-manager, nur, obelisk
, pre-commit-hooks }: , photoprism-flake, pre-commit-hooks }:
let let
overlays = { overlays = {
deconz = self: super: { deconz = self: super: {
@ -32,6 +39,10 @@
obelisk = self: super: { obelisk = self: super: {
obelisk = (import obelisk { inherit (self) system; }).command; 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 }: systemModule = { hostName, hardwareConfig, config }:
({ pkgs, ... }: { ({ pkgs, ... }: {
@ -43,7 +54,12 @@
nix.registry.nixpkgs.flake = nixpkgs; nix.registry.nixpkgs.flake = nixpkgs;
nixpkgs.overlays = [ nur.overlay overlays.deconz overlays.obelisk ]; nixpkgs.overlays = [
nur.overlay
overlays.deconz
overlays.photoprism
overlays.obelisk
];
imports = imports =
[ hardwareConfig home-manager.nixosModules.home-manager config ]; [ hardwareConfig home-manager.nixosModules.home-manager config ];
@ -85,6 +101,7 @@
modules = [ modules = [
nixpkgs.nixosModules.notDetected nixpkgs.nixosModules.notDetected
{ home-manager.users.felschr.imports = [ homeManagerModules.git ]; } { home-manager.users.felschr.imports = [ homeManagerModules.git ]; }
photoprism-flake.nixosModules.photoprism
(systemModule { (systemModule {
hostName = "felix-rpi4"; hostName = "felix-rpi4";
hardwareConfig = ./hardware/rpi4.nix; hardwareConfig = ./hardware/rpi4.nix;

View file

@ -12,6 +12,7 @@ with builtins; {
./services/kodi.nix ./services/kodi.nix
./services/jellyfin.nix ./services/jellyfin.nix
./services/etebase.nix ./services/etebase.nix
./services/photoprism.nix
./services/home-assistant.nix ./services/home-assistant.nix
./services/owntracks.nix ./services/owntracks.nix
]; ];

24
services/photoprism.nix Normal file
View file

@ -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;
}

View file

@ -46,6 +46,7 @@ in {
"/var/lib/etebase-server" "/var/lib/etebase-server"
"/var/lib/hass" "/var/lib/hass"
"/var/lib/mosquitto" "/var/lib/mosquitto"
"/var/lib/photoprism"
"/var/lib/syncthing" "/var/lib/syncthing"
"/var/lib/jellyfin" "/var/lib/jellyfin"
"/var/lib/owntracks" "/var/lib/owntracks"