diff --git a/modules/darwin/system.nix b/modules/darwin/system.nix index 0b00011..9f896d2 100644 --- a/modules/darwin/system.nix +++ b/modules/darwin/system.nix @@ -27,6 +27,4 @@ TrackpadThreeFingerDrag = true; }; }; - - } diff --git a/modules/home/direnv.nix b/modules/home/direnv.nix index 27b2d77..2b51c9d 100644 --- a/modules/home/direnv.nix +++ b/modules/home/direnv.nix @@ -4,4 +4,3 @@ nix-direnv.enable = true; }; } - diff --git a/modules/nixos/home/default.nix b/modules/nixos/home/default.nix index 1ab86c0..7da3c4a 100644 --- a/modules/nixos/home/default.nix +++ b/modules/nixos/home/default.nix @@ -1,7 +1,4 @@ -{ - pkgs, - ... -}: { +{pkgs, ...}: { imports = [ ./zellij.nix ]; diff --git a/overlays/opencode.nix b/overlays/opencode.nix index 5978b12..36a22d2 100644 --- a/overlays/opencode.nix +++ b/overlays/opencode.nix @@ -105,4 +105,3 @@ final: prev: { ''; }); } - diff --git a/overlays/postgresql-darwin.nix b/overlays/postgresql-darwin.nix index dfb4dab..2683fcc 100644 --- a/overlays/postgresql-darwin.nix +++ b/overlays/postgresql-darwin.nix @@ -1,5 +1,9 @@ final: prev: { - postgresql = { config, lib, ... }: let + postgresql = { + config, + lib, + ... + }: let cfg = config.services.postgresql; postStartScript = prev.writeScript "postgresql-post-start" '' @@ -13,43 +17,45 @@ final: prev: { # Create databases if they don't exist ${prev.lib.concatMapStringsSep "\n" (db: '' - if ! ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -lqt | cut -d'|' -f1 | grep -qw ${prev.lib.escapeShellArg db}; then - echo "Creating database: ${prev.lib.escapeShellArg db}" - ${cfg.package}/bin/createdb -h localhost -p ${toString cfg.port} -U ${cfg.superUser} ${prev.lib.escapeShellArg db} - fi - '') cfg.ensureDatabases} + if ! ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -lqt | cut -d'|' -f1 | grep -qw ${prev.lib.escapeShellArg db}; then + echo "Creating database: ${prev.lib.escapeShellArg db}" + ${cfg.package}/bin/createdb -h localhost -p ${toString cfg.port} -U ${cfg.superUser} ${prev.lib.escapeShellArg db} + fi + '') + cfg.ensureDatabases} # Create users and set permissions ${prev.lib.concatMapStringsSep "\n" (user: '' - # Create user if it doesn't exist - if ! ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -tAc "SELECT 1 FROM pg_roles WHERE rolname='${prev.lib.escapeShellArg user.name}'" | grep -q 1; then - echo "Creating user: ${prev.lib.escapeShellArg user.name}" - ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "CREATE USER \"${prev.lib.escapeShellArg user.name}\"" - fi + # Create user if it doesn't exist + if ! ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -tAc "SELECT 1 FROM pg_roles WHERE rolname='${prev.lib.escapeShellArg user.name}'" | grep -q 1; then + echo "Creating user: ${prev.lib.escapeShellArg user.name}" + ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "CREATE USER \"${prev.lib.escapeShellArg user.name}\"" + fi - # Set user privileges - ${prev.lib.optionalString (user ? ensureDBOwnership && user.ensureDBOwnership) '' - echo "Setting database ownership for ${prev.lib.escapeShellArg user.name}" - ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" CREATEDB CREATEROLE" - ''} - - ${prev.lib.optionalString (user ? ensureClauses) '' - ${prev.lib.optionalString (user.ensureClauses ? superuser && user.ensureClauses.superuser) '' - echo "Granting superuser to ${prev.lib.escapeShellArg user.name}" - ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" SUPERUSER" + # Set user privileges + ${prev.lib.optionalString (user ? ensureDBOwnership && user.ensureDBOwnership) '' + echo "Setting database ownership for ${prev.lib.escapeShellArg user.name}" + ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" CREATEDB CREATEROLE" ''} - ${prev.lib.optionalString (user.ensureClauses ? createdb && user.ensureClauses.createdb) '' - echo "Granting createdb to ${prev.lib.escapeShellArg user.name}" - ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" CREATEDB" - ''} - ''} - # Grant permissions (legacy support) - ${prev.lib.concatMapStringsSep "\n" (perm: '' - echo "Granting ${prev.lib.escapeShellArg perm} to ${prev.lib.escapeShellArg user.name}" - ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "GRANT ${prev.lib.escapeShellArg perm} TO \"${prev.lib.escapeShellArg user.name}\"" - '') (prev.lib.optionals (user ? ensurePermissions) (prev.lib.mapAttrsToList (target: perm: "${perm} ON ${target}") user.ensurePermissions))} - '') cfg.ensureUsers} + ${prev.lib.optionalString (user ? ensureClauses) '' + ${prev.lib.optionalString (user.ensureClauses ? superuser && user.ensureClauses.superuser) '' + echo "Granting superuser to ${prev.lib.escapeShellArg user.name}" + ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" SUPERUSER" + ''} + ${prev.lib.optionalString (user.ensureClauses ? createdb && user.ensureClauses.createdb) '' + echo "Granting createdb to ${prev.lib.escapeShellArg user.name}" + ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "ALTER USER \"${prev.lib.escapeShellArg user.name}\" CREATEDB" + ''} + ''} + + # Grant permissions (legacy support) + ${prev.lib.concatMapStringsSep "\n" (perm: '' + echo "Granting ${prev.lib.escapeShellArg perm} to ${prev.lib.escapeShellArg user.name}" + ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -c "GRANT ${prev.lib.escapeShellArg perm} TO \"${prev.lib.escapeShellArg user.name}\"" + '') (prev.lib.optionals (user ? ensurePermissions) (prev.lib.mapAttrsToList (target: perm: "${perm} ON ${target}") user.ensurePermissions))} + '') + cfg.ensureUsers} # Run initial script if provided ${prev.lib.optionalString (cfg.initialScript != null) '' @@ -57,7 +63,6 @@ final: prev: { ${cfg.package}/bin/psql -h localhost -p ${toString cfg.port} -U ${cfg.superUser} -f ${cfg.initialScript} ''} ''; - in { config = prev.lib.mkIf cfg.enable { launchd.user.agents.postgresql = prev.lib.mkIf (cfg.ensureDatabases != [] || cfg.ensureUsers != [] || cfg.initialScript != null) {