feat(rpi4): add photoprism
This commit is contained in:
parent
e444b0818e
commit
5b58081b61
78
flake.lock
78
flake.lock
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
21
flake.nix
21
flake.nix
|
@ -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;
|
||||||
|
|
1
rpi4.nix
1
rpi4.nix
|
@ -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
24
services/photoprism.nix
Normal 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;
|
||||||
|
}
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in a new issue