Work on getting a development environment set up
Some checks failed
/ dev-shell (push) Successful in 1m23s
/ rust-packages (push) Successful in 1m10s
/ terraform-providers (push) Successful in 59s
/ check (push) Has been cancelled
/ systems (push) Has been cancelled

for developing the mx-aliases service
This commit is contained in:
Kaare Hoff Skovgaard 2025-08-12 23:36:03 +02:00
parent af3c61d75c
commit 00121f2516
Signed by: khs
GPG key ID: C7D890804F01E9F0
6 changed files with 91 additions and 0 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
.direnv/ .direnv/
.dev/
result/ result/
.DS_Store .DS_Store
rust/target rust/target

View file

@ -0,0 +1,80 @@
{
pkgs,
lib,
...
}:
let
mock-oidc-provider = pkgs.stdenvNoCC.mkDerivation (finalAttrs: {
pname = "mock-oidc-provider";
version = "0.1.1";
src = pkgs.fetchFromGitHub {
owner = "bluecatengineering";
repo = "mock-oidc-provider";
tag = "v${finalAttrs.version}";
hash = "sha256-kGS8/4b/RuxUjr+GOeDXl2RCkBTu50gBdrrFwRhvRXE=";
};
npmDeps = pkgs.fetchNpmDeps {
inherit (finalAttrs) src;
hash = "sha256-f+ZjL1sCcyFewKOCX54sHAv5TUBx6LiWZUhnSpY2t0I=";
};
nativeBuildInputs = [
pkgs.npmHooks.npmConfigHook
pkgs.npmHooks.npmInstallHook
pkgs.nodejs
];
postInstall = ''
mkdir -p $out/bin
echo -e "#!${lib.getExe pkgs.bash}\nexec ${lib.getExe' pkgs.nodejs "node"} $out/lib/node_modules/@bluecateng/mock-oidc-provider/src/server.js" > $out/bin/mock-oidc-provider
chmod +x $out/bin/mock-oidc-provider
'';
});
start-postgres = pkgs.writeShellApplication {
name = "start-postgres";
runtimeInputs = [
pkgs.postgresql
pkgs.uutils-coreutils-noprefix
pkgs.khscodes.find-flake-root
];
text = ''
flake_root=$(find-flake-root)
PGDATA="$flake_root/.dev/mx-aliases/postgresql"
export PGDATA
PGPORT=55432
export PGPORT
PGHOST=127.0.0.1
export PGHOST
if [[ ! -d "$PGDATA" ]]; then
initdb --locale=C --encoding=UTF8
cp ${./postgresql.conf} "$PGDATA/postgresql.conf"
cp ${./pg_hba.conf} "$PGDATA/pg_hba.conf"
pg_ctl -D "$PGDATA" -w start -o "-c unix_socket_directories= -c listen_addresses=127.0.0.1,::1 -p 55432"
trap 'pg_ctl -D "$PGDATA" -m fast -w stop' EXIT
psql --dbname postgres < ${./init.sql}
pg_ctl -D "$PGDATA" -m fast -w stop
trap - EXIT
fi
exec postgres
'';
};
in
pkgs.writeShellApplication {
name = "mx-aliases-devenv-up";
runtimeInputs = [
start-postgres
mock-oidc-provider
];
text = ''
trap 'kill "$pg" > /dev/null 2> /dev/null || true; kill "$oidc" > /dev/null 2> /dev/null || true' EXIT
start-postgres &
pg=$!
mock-oidc-provider &
oidc=$!
wait -n
wait -n
'';
}

View file

@ -0,0 +1,3 @@
CREATE ROLE postgres SUPERUSER;
CREATE ROLE "mx-aliases";
CREATE DATABASE "mx-aliases" WITH OWNER "mx-aliases";

View file

@ -0,0 +1,3 @@
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
host all all ::1/128 trust

View file

@ -0,0 +1,3 @@
listen_addresses='127.0.0.1,::1'
port = 55432
unix_socket_directories=''

View file

@ -8,6 +8,7 @@ mkShell {
packages = [ packages = [
pkgs.nixd pkgs.nixd
pkgs.nixfmt-rfc-style pkgs.nixfmt-rfc-style
pkgs.khscodes.mx-aliases-devenv-up
] ]
++ (lib.khscodes.mkRust pkgs "${inputs.self}/rust").devDeps ++ (lib.khscodes.mkRust pkgs "${inputs.self}/rust").devDeps
++ (import "${inputs.self}/mx-aliases" { ++ (import "${inputs.self}/mx-aliases" {