Merge pull request #204534 from SuperSandro2000/boot-tmp
This commit is contained in:
commit
603320b64f
@ -473,7 +473,7 @@ EOF
|
||||
}
|
||||
|
||||
# Don't emit tmpfs entry for /tmp, because it most likely comes from the
|
||||
# boot.tmpOnTmpfs option in configuration.nix (managed declaratively).
|
||||
# boot.tmp.useTmpfs option in configuration.nix (managed declaratively).
|
||||
next if ($mountPoint eq "/tmp" && $fsType eq "tmpfs");
|
||||
|
||||
# Emit the filesystem.
|
||||
|
@ -3,62 +3,67 @@
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.boot;
|
||||
cfg = config.boot.tmp;
|
||||
in
|
||||
{
|
||||
|
||||
###### interface
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "boot" "cleanTmpDir" ] [ "boot" "tmp" "cleanOnBoot" ])
|
||||
(mkRenamedOptionModule [ "boot" "tmpOnTmpfs" ] [ "boot" "tmp" "useTmpfs" ])
|
||||
(mkRenamedOptionModule [ "boot" "tmpOnTmpfsSize" ] [ "boot" "tmp" "tmpfsSize" ])
|
||||
];
|
||||
|
||||
options = {
|
||||
boot.tmp = {
|
||||
cleanOnBoot = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether to delete all files in {file}`/tmp` during boot.
|
||||
'';
|
||||
};
|
||||
|
||||
boot.cleanTmpDir = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether to delete all files in {file}`/tmp` during boot.
|
||||
'';
|
||||
tmpfsSize = mkOption {
|
||||
type = types.oneOf [ types.str types.types.ints.positive ];
|
||||
default = "50%";
|
||||
description = lib.mdDoc ''
|
||||
Size of tmpfs in percentage.
|
||||
Percentage is defined by systemd.
|
||||
'';
|
||||
};
|
||||
|
||||
useTmpfs = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether to mount a tmpfs on {file}`/tmp` during boot.
|
||||
|
||||
::: {.note}
|
||||
Large Nix builds can fail if the mounted tmpfs is not large enough.
|
||||
In such a case either increase the tmpfsSize or disable this option.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
boot.tmpOnTmpfs = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc ''
|
||||
Whether to mount a tmpfs on {file}`/tmp` during boot.
|
||||
'';
|
||||
};
|
||||
|
||||
boot.tmpOnTmpfsSize = mkOption {
|
||||
type = types.oneOf [ types.str types.types.ints.positive ];
|
||||
default = "50%";
|
||||
description = lib.mdDoc ''
|
||||
Size of tmpfs in percentage.
|
||||
Percentage is defined by systemd.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = {
|
||||
|
||||
# When changing remember to update /tmp mount in virtualisation/qemu-vm.nix
|
||||
systemd.mounts = mkIf cfg.tmpOnTmpfs [
|
||||
systemd.mounts = mkIf cfg.useTmpfs [
|
||||
{
|
||||
what = "tmpfs";
|
||||
where = "/tmp";
|
||||
type = "tmpfs";
|
||||
mountConfig.Options = concatStringsSep "," [ "mode=1777"
|
||||
"strictatime"
|
||||
"rw"
|
||||
"nosuid"
|
||||
"nodev"
|
||||
"size=${toString cfg.tmpOnTmpfsSize}" ];
|
||||
mountConfig.Options = concatStringsSep "," [
|
||||
"mode=1777"
|
||||
"strictatime"
|
||||
"rw"
|
||||
"nosuid"
|
||||
"nodev"
|
||||
"size=${toString cfg.tmpfsSize}"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
systemd.tmpfiles.rules = optional config.boot.cleanTmpDir "D! /tmp 1777 root root";
|
||||
|
||||
systemd.tmpfiles.rules = optional cfg.cleanOnBoot "D! /tmp 1777 root root";
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1069,12 +1069,12 @@ in
|
||||
fsType = "ext4";
|
||||
autoFormat = true;
|
||||
});
|
||||
"/tmp" = lib.mkIf config.boot.tmpOnTmpfs {
|
||||
"/tmp" = lib.mkIf config.boot.tmp.useTmpfs {
|
||||
device = "tmpfs";
|
||||
fsType = "tmpfs";
|
||||
neededForBoot = true;
|
||||
# Sync with systemd's tmp.mount;
|
||||
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
|
||||
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmp.tmpfsSize}" ];
|
||||
};
|
||||
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" = lib.mkIf cfg.useNixStoreImage {
|
||||
device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
|
||||
|
@ -17,7 +17,7 @@ let
|
||||
http = ":8000";
|
||||
};
|
||||
};
|
||||
boot.cleanTmpDir = true;
|
||||
boot.tmp.cleanOnBoot = true;
|
||||
# for exchange rates
|
||||
security.pki.certificateFiles = [ ./server.crt ];
|
||||
networking.extraHosts = "127.0.0.1 api.exchangerate.host";
|
||||
|
Loading…
Reference in New Issue
Block a user