nixos-config/hosts/plover/modules/services/atuin.nix

41 lines
1.2 KiB
Nix
Raw Normal View History

2023-01-12 13:22:55 +00:00
# A nice little sync server for my supercharged shell history done by Atuin.
# It's nice to have but not exactly what I need. It's just here because I want
# to give it a try.
{ config, lib, pkgs, ... }:
let
inherit (import ../hardware/networks.nix) preferredInternalTLD interfaces;
atuinDomain = "atuin.${config.networking.domain}.${preferredInternalTLD}";
host = interfaces.internal.IPv4.address;
2023-01-18 03:41:12 +00:00
in
{
2023-01-12 13:22:55 +00:00
# Atuin sync server because why not.
services.atuin = {
enable = true;
openFirewall = true;
openRegistration = false;
inherit host;
2023-01-12 13:22:55 +00:00
port = 8965;
};
# Putting a neat little script to create the appropriate schema since we're
# using secure schema usage pattern as encouraged from PostgreSQL
# documentation.
systemd.services.atuin = {
path = [ config.services.postgresql.package ];
preStart = ''
psql -tAc "SELECT 1 FROM information_schema.schemata WHERE schema_name='atuin';" \
grep -q 1 || psql -tAc "CREATE SCHEMA IF NOT EXISTS atuin;"
'';
};
# Putting it altogether in the reverse proxy of choice.
services.nginx.virtualHosts."${atuinDomain}" = {
locations."/" = {
proxyPass = "http://${host}:${toString config.services.atuin.port}";
2023-01-12 13:22:55 +00:00
};
};
}