Start refactoring
- remove emacs - remove inputs - trying to speed up evaluation - update inputs
This commit is contained in:
parent
0ab8805aa5
commit
2d3e4844b7
39 changed files with 808 additions and 1452 deletions
|
@ -1,221 +1,23 @@
|
|||
# { lib, pkgs, config, ... }:
|
||||
# let
|
||||
# immichRoot = "/mnt/hd/immich";
|
||||
# immichData = "${immichRoot}/data";
|
||||
# # immichVersion = "v1.105.1";
|
||||
# immichVersion = "v1.105.1";
|
||||
# sharedEnv = {
|
||||
# # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
|
||||
# # The location where your uploaded files are stored
|
||||
# UPLOAD_LOCATION="./library";
|
||||
# DB_DATA_LOCATION="./postgres";
|
||||
# IMMICH_VERSION=immichVersion;
|
||||
# DB_PASSWORD="postgres";
|
||||
# DB_USERNAME="postgres";
|
||||
# DB_DATABASE_NAME="immich";
|
||||
# DB_HOSTNAME="postgres";
|
||||
# REDIS_HOSTNAME = "redis";
|
||||
# };
|
||||
# postgresRoot = "${immichRoot}/pgsql";
|
||||
# machineLearning = "${immichRoot}/ml-cache";
|
||||
# in {
|
||||
# systemd.tmpfiles.rules = [
|
||||
# "d ${immichRoot} 770 ccr wheel"
|
||||
# "d ${immichData} 770 ccr wheel"
|
||||
# "d ${postgresRoot} 770 ccr wheel"
|
||||
# "d ${machineLearning} 770 ccr wheel"
|
||||
# ];
|
||||
# virtualisation.docker.enable = lib.mkForce false;
|
||||
# virtualisation.podman.enable = lib.mkForce true;
|
||||
# virtualisation.podman.dockerSocket.enable = lib.mkForce true;
|
||||
# virtualisation.podman.defaultNetwork.settings.dns_enabled = lib.mkForce true;
|
||||
# networking.firewall.interfaces."podman+".allowedUDPPorts = [53 5353];
|
||||
# environment.systemPackages = [
|
||||
# pkgs.arion
|
||||
# ];
|
||||
# virtualisation.arion = {
|
||||
# backend = lib.mkForce "podman-socket";
|
||||
# projects.immich = {
|
||||
# serviceName = "immich";
|
||||
# settings = {
|
||||
# project.name = "immich";
|
||||
# networks.default = {
|
||||
# name = "immich";
|
||||
# };
|
||||
# services = {
|
||||
# "server" = {
|
||||
# service = {
|
||||
# image = "ghcr.io/immich-app/immich-server:${immichVersion}";
|
||||
# container_name = "server";
|
||||
# command = ["start.sh" "immich"];
|
||||
# environment = sharedEnv // {
|
||||
# # NODE_ENV = "production";
|
||||
# };
|
||||
# ports = [
|
||||
# "2283:3001"
|
||||
# ];
|
||||
# volumes = [
|
||||
# "${immichData}:/usr/src/app/upload:rw"
|
||||
# "/etc/localtime:/etc/localtime:ro"
|
||||
# ];
|
||||
# depends_on = ["redis" "postgres"];
|
||||
# restart = "always";
|
||||
# };
|
||||
# };
|
||||
# "microservices" = {
|
||||
# service = {
|
||||
# image = "ghcr.io/immich-app/immich-server:${immichVersion}";
|
||||
# container_name = "microservices";
|
||||
# command = ["start.sh" "microservices"];
|
||||
# environment = sharedEnv;
|
||||
# volumes = ["${immichData}:/usr/src/app/upload:rw"];
|
||||
# depends_on = ["redis" "postgres"];
|
||||
# restart = "always";
|
||||
# };
|
||||
# };
|
||||
# "machine_learning" = {
|
||||
# service = {
|
||||
# image = "ghcr.io/immich-app/immich-machine-learning:${immichVersion}";
|
||||
# container_name = "machine_learning";
|
||||
# volumes = [
|
||||
# "${machineLearning}:/cache"
|
||||
# ];
|
||||
# restart = "always";
|
||||
# environment = sharedEnv // {
|
||||
# # NODE_ENV = "production";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# "redis" = {
|
||||
# service = {
|
||||
# image = "docker.io/redis:6.2-alpine";
|
||||
# container_name = "redis";
|
||||
# restart = "always";
|
||||
# tmpfs = ["/data"];
|
||||
# };
|
||||
# };
|
||||
# "postgres" = {
|
||||
# service = {
|
||||
# image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0";
|
||||
# container_name = "postgres";
|
||||
# volumes = [
|
||||
# "${postgresRoot}:/var/lib/postgresql/data"
|
||||
# ];
|
||||
# restart = "always";
|
||||
# environment = {
|
||||
# POSTGRES_PASSWORD = sharedEnv.DB_PASSWORD;
|
||||
# POSTGRES_USER = sharedEnv.DB_USERNAME;
|
||||
# POSTGRES_DB = sharedEnv.DB_DATABASE_NAME;
|
||||
# POSTGRES_INITDB_ARGS = "--data-checksums";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# }
|
||||
{config, ...}: let
|
||||
immichHost = "immich.example.com"; # TODO: put your immich domain name here
|
||||
|
||||
immichRoot = "/mnt/hd/immich"; # TODO: Tweak these to your desired storage locations
|
||||
immichPhotos = "${immichRoot}/photos";
|
||||
immichAppdataRoot = "${immichRoot}/appdata";
|
||||
immichVersion = "release";
|
||||
# immichExternalVolume1 = "/tank/BackupData/Google Photos/someone@example.com"; # TODO: if external volumes are desired
|
||||
|
||||
postgresRoot = "${immichAppdataRoot}/pgsql";
|
||||
postgresPassword = "immich"; # TODO: put a random password here
|
||||
postgresUser = "immich";
|
||||
postgresDb = "immich";
|
||||
nixpkgsImmich = builtins.getFlake "github:NixOS/nixpkgs/c0ee4c1770aa1ef998c977c4cc653a07ec95d9bf";
|
||||
in {
|
||||
# The primary source for this configuration is the recommended docker-compose installation of immich from
|
||||
# https://immich.app/docs/install/docker-compose, which linkes to:
|
||||
# - https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
|
||||
# - https://github.com/immich-app/immich/releases/latest/download/example.env
|
||||
# and has been transposed into nixos configuration here. Those upstream files should probably be checked
|
||||
# for serious changes if there are any upgrade problems here.
|
||||
#
|
||||
# After initial deployment, these in-process configurations need to be done:
|
||||
# - create an admin user by accessing the site
|
||||
# - login with the admin user
|
||||
# - set the "Machine Learning Settings" > "URL" to http://immich_machine_learning:3003
|
||||
|
||||
virtualisation.oci-containers.containers.immich_server = {
|
||||
image = "ghcr.io/immich-app/immich-server:${immichVersion}";
|
||||
ports = ["127.0.0.1:2283:3001"];
|
||||
extraOptions = [
|
||||
"--pull=newer"
|
||||
# Force DNS resolution to only be the podman dnsname name server; by default podman provides a resolv.conf
|
||||
# that includes both this server and the upstream system server, causing resolutions of other pod names
|
||||
# to be inconsistent.
|
||||
"--dns=10.88.0.1"
|
||||
];
|
||||
cmd = ["start.sh" "immich"];
|
||||
environment = {
|
||||
IMMICH_VERSION = immichVersion;
|
||||
DB_HOSTNAME = "immich_postgres";
|
||||
DB_USERNAME = postgresUser;
|
||||
DB_DATABASE_NAME = postgresDb;
|
||||
DB_PASSWORD = postgresPassword;
|
||||
REDIS_HOSTNAME = "immich_redis";
|
||||
containers.nextcloud = {
|
||||
nixpkgs = nixpkgsImmich;
|
||||
autoStart = true;
|
||||
privateNetwork = true;
|
||||
# hostAddress = "192.168.100.10";
|
||||
# localAddress = "192.168.100.11";
|
||||
# hostAddress6 = "fc00::1";
|
||||
# localAddress6 = "fc00::2";
|
||||
config = {
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
services.immich = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
volumes = [
|
||||
"${immichPhotos}:/usr/src/app/upload"
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
# "${immichExternalVolume1}:${immichExternalVolume1}:ro"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.immich_microservices = {
|
||||
image = "ghcr.io/immich-app/immich-server:${immichVersion}";
|
||||
extraOptions = [
|
||||
"--pull=newer"
|
||||
# Force DNS resolution to only be the podman dnsname name server; by default podman provides a resolv.conf
|
||||
# that includes both this server and the upstream system server, causing resolutions of other pod names
|
||||
# to be inconsistent.
|
||||
"--dns=10.88.0.1"
|
||||
];
|
||||
cmd = ["start.sh" "microservices"];
|
||||
environment = {
|
||||
IMMICH_VERSION = immichVersion;
|
||||
DB_HOSTNAME = "immich_postgres";
|
||||
DB_USERNAME = postgresUser;
|
||||
DB_DATABASE_NAME = postgresDb;
|
||||
DB_PASSWORD = postgresPassword;
|
||||
REDIS_HOSTNAME = "immich_redis";
|
||||
};
|
||||
volumes = [
|
||||
"${immichPhotos}:/usr/src/app/upload"
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
# "${immichExternalVolume}1:${immichExternalVolume1}:ro"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.immich_machine_learning = {
|
||||
image = "ghcr.io/immich-app/immich-machine-learning:${immichVersion}";
|
||||
extraOptions = ["--pull=newer"];
|
||||
environment = {
|
||||
IMMICH_VERSION = immichVersion;
|
||||
};
|
||||
volumes = [
|
||||
"${immichAppdataRoot}/model-cache:/cache"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.immich_redis = {
|
||||
image = "redis:6.2-alpine@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5";
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.immich_postgres = {
|
||||
image = "tensorchord/pgvecto-rs:pg14-v0.1.11";
|
||||
environment = {
|
||||
POSTGRES_PASSWORD = postgresPassword;
|
||||
POSTGRES_USER = postgresUser;
|
||||
POSTGRES_DB = postgresDb;
|
||||
};
|
||||
volumes = [
|
||||
"${postgresRoot}:/var/lib/postgresql/data"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue