diff --git a/machines/nunotaba/configuration.nix b/machines/nunotaba/configuration.nix index e1acaa3..ae23a9a 100644 --- a/machines/nunotaba/configuration.nix +++ b/machines/nunotaba/configuration.nix @@ -6,7 +6,6 @@ ./hardware-configuration.nix ../../modules/cpu/intel.nix ../../modules/gpu/intel.nix - ../../modules/ssd.nix ../../modules/libvirt.nix ../../modules ../../profiles/dev.nix @@ -16,6 +15,7 @@ sbruder = { gui = true; restic.enable = true; + ssd.enable = true; wireguard.home = { enable = true; address = "10.80.0.4"; diff --git a/machines/sayuri/configuration.nix b/machines/sayuri/configuration.nix index 3c532bd..60ecd62 100644 --- a/machines/sayuri/configuration.nix +++ b/machines/sayuri/configuration.nix @@ -7,7 +7,6 @@ ../../modules/cpu/intel.nix ../../modules/gpu/amd.nix ../../modules/libvirt.nix - ../../modules/ssd.nix ../../modules ../../profiles/dev.nix ../../users/simon @@ -16,6 +15,7 @@ sbruder = { gui = true; restic.enable = true; + ssd.enable = true; wireguard.home = { enable = true; address = "10.80.0.5"; diff --git a/modules/default.nix b/modules/default.nix index 4588bb7..6678f5b 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -22,6 +22,7 @@ ./prometheus/node_exporter.nix ./pulseaudio.nix ./restic.nix + ./ssd.nix ./ssh.nix ./sway.nix ./tools.nix diff --git a/modules/ssd.nix b/modules/ssd.nix index 74607eb..3230b0c 100644 --- a/modules/ssd.nix +++ b/modules/ssd.nix @@ -1,4 +1,32 @@ +{ config, lib, ... }: +let + cfg = config.sbruder.ssd; +in { - fileSystems."/".options = [ "noatime" "nodiratime" "discard" ]; - services.fstrim.enable = true; + options.sbruder.ssd = { + enable = lib.mkEnableOption "ssd optimisations"; + fileSystems = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ "/" ]; + description = "List of file systems to apply optimisations to"; + }; + }; + + config = lib.mkIf cfg.enable { + fileSystems = builtins.listToAttrs + (builtins.map + (fs: { + name = fs; + value = { + options = [ + "discard" + "noatime" + "nodiratime" + ]; + }; + }) + cfg.fileSystems); + + services.fstrim.enable = true; + }; }