summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hosts/surtr/postgresql/default.nix2
-rw-r--r--modules/envfs.nix69
-rw-r--r--modules/pgbackrest.nix2
3 files changed, 69 insertions, 4 deletions
diff --git a/hosts/surtr/postgresql/default.nix b/hosts/surtr/postgresql/default.nix
index 8c373f49..dc6c531d 100644
--- a/hosts/surtr/postgresql/default.nix
+++ b/hosts/surtr/postgresql/default.nix
@@ -31,6 +31,8 @@ in {
31 repo2-retention-archive = 7; 31 repo2-retention-archive = 7;
32 }; 32 };
33 33
34 archive.archive-timout = 3600;
35
34 "global" = { 36 "global" = {
35 compress-type = "zst"; 37 compress-type = "zst";
36 compress-level = 9; 38 compress-level = 9;
diff --git a/modules/envfs.nix b/modules/envfs.nix
index 6aa12c1c..1463dce8 100644
--- a/modules/envfs.nix
+++ b/modules/envfs.nix
@@ -1,4 +1,67 @@
1{ lib, ... }: 1{ pkgs, config, lib, ... }:
2{ 2
3 config.services.envfs.enable = lib.mkDefault true; 3let
4 cfg = config.services.envfs;
5 mounts = {
6 "/usr/bin" = {
7 device = "none";
8 fsType = "envfs";
9 options = [
10 "fallback-path=${pkgs.symlinkJoin {
11 name = "fallback-path";
12 inherit (cfg) paths;
13 }}"
14 ];
15 };
16 "/bin" = {
17 device = "/usr/bin";
18 fsType = "none";
19 options = [ "bind" "nofail" ];
20 };
21 };
22in {
23 disabledModules = [ "tasks/filesystems/envfs.nix" ];
24
25 options = {
26 services.envfs = {
27 enable = lib.mkEnableOption (lib.mdDoc "Envfs filesystem") // {
28 default = true;
29 description = lib.mdDoc ''
30 Fuse filesystem that returns symlinks to executables based on the PATH
31 of the requesting process. This is useful to execute shebangs on NixOS
32 that assume hard coded locations in locations like /bin or /usr/bin
33 etc.
34 '';
35 };
36
37 package = lib.mkOption {
38 type = lib.types.package;
39 default = pkgs.envfs;
40 defaultText = lib.literalExpression "pkgs.envfs";
41 description = lib.mdDoc "Which package to use for the envfs.";
42 };
43
44 paths = lib.mkOption {
45 type = lib.types.listOf lib.types.package;
46 default = [
47 (pkgs.runCommand "fallback-path-environment" {} ''
48 mkdir -p $out
49 ln -s ${config.environment.usrbinenv} $out/env
50 ln -s ${config.environment.binsh} $out/sh
51 '')
52 ];
53 description = lib.mdDoc "Extra packages to join into collection of fallback executables in case not other executable is found";
54 };
55 };
56 };
57
58 config = lib.mkIf (cfg.enable) {
59 environment.systemPackages = [ cfg.package ];
60 # we also want these mounts in virtual machines.
61 fileSystems = if config.virtualisation ? qemu then lib.mkVMOverride mounts else mounts;
62
63 # We no longer need those when using envfs
64 system.activationScripts.usrbinenv = lib.mkForce "";
65 system.activationScripts.binsh = lib.mkForce "";
66 };
4} 67}
diff --git a/modules/pgbackrest.nix b/modules/pgbackrest.nix
index d4a4f9d6..41a7b381 100644
--- a/modules/pgbackrest.nix
+++ b/modules/pgbackrest.nix
@@ -143,7 +143,7 @@ in {
143 environment.systemPackages = [ cfg.package ]; 143 environment.systemPackages = [ cfg.package ];
144 144
145 services.postgresql.settings = mkIf cfg.configurePostgresql.enable { 145 services.postgresql.settings = mkIf cfg.configurePostgresql.enable {
146 archive_command = "pgbackrest --stanza ${cfg.configurePostgresql.stanza} archive-push %p"; 146 archive_command = "pgbackrest --stanza ${escapeSystemdExecArg cfg.configurePostgresql.stanza} archive-push %p";
147 archive_mode = true; 147 archive_mode = true;
148 max_wal_senders = mkDefault 3; 148 max_wal_senders = mkDefault 3;
149 wal_level = "replica"; 149 wal_level = "replica";