nftable-migration
 1{
 2  libx,
 3  globals,
 4  lib,
 5  pkgs,
 6  ...
 7}:
 8{
 9  users.users.vincent.linger = true;
10
11  services = {
12    wireguard = {
13      enable = true;
14      ips = libx.wg-ips globals.machines.aion.net.vpn.ips;
15      endpoint = "${globals.net.vpn.endpoint}";
16      endpointPublicKey = "${globals.machines.kerkouane.net.vpn.pubkey}";
17    };
18
19    immich = {
20      enable = true;
21      user = "vincent";
22      group = "users";
23      mediaLocation = "/neo/pictures/photos";
24    };
25
26    postgresql = {
27      ensureDatabases = [ "immich" ];
28      ensureUsers = [
29        {
30          name = "vincent";
31        }
32      ];
33    };
34  };
35
36  # Grant vincent ownership of the immich database and schemas
37  systemd.services.postgresql.postStart = lib.mkAfter ''
38    $PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname = 'vincent'" | grep -q 1 || $PSQL -tAc "CREATE ROLE vincent WITH LOGIN"
39    $PSQL -tAc "ALTER DATABASE immich OWNER TO vincent"
40    $PSQL immich -tAc "ALTER SCHEMA public OWNER TO vincent"
41    $PSQL immich -tAc "ALTER SCHEMA vectors OWNER TO vincent" || true
42    $PSQL immich -tAc "GRANT ALL PRIVILEGES ON SCHEMA public TO vincent"
43    $PSQL immich -tAc "GRANT ALL PRIVILEGES ON SCHEMA vectors TO vincent" || true
44    $PSQL immich -tAc "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO vincent"
45    $PSQL immich -tAc "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO vincent"
46    $PSQL immich -tAc "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA vectors TO vincent" || true
47    $PSQL immich -tAc "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO vincent"
48    $PSQL immich -tAc "ALTER DEFAULT PRIVILEGES IN SCHEMA vectors GRANT ALL ON TABLES TO vincent" || true
49  '';
50
51  networking.useDHCP = lib.mkDefault true;
52
53  environment.systemPackages = with pkgs; [
54    lm_sensors
55    gnumake
56  ];
57
58}