summaryrefslogtreecommitdiff
path: root/sys/fs
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-07-14 17:53:13 -0600
committerAlejandro Soto <alejandro@34project.org>2024-07-15 09:34:00 -0600
commit02abf4ed0131237c25e0a10db50fa4c41a902a50 (patch)
tree20904894fc0952806e341cdaff5941e81b3ce51c /sys/fs
parent08e746700341dda3e3bdf704332fc3c07053d3e7 (diff)
sys: final merge of dmz, hv into sys
Diffstat (limited to '')
-rw-r--r--sys/btrfs/snapper.nix (renamed from sys/fs/btrfs.nix)59
-rw-r--r--sys/fs/default.nix35
-rw-r--r--sys/fs/layout.nix87
3 files changed, 8 insertions, 173 deletions
diff --git a/sys/fs/btrfs.nix b/sys/btrfs/snapper.nix
index f240b0d..27d2779 100644
--- a/sys/fs/btrfs.nix
+++ b/sys/btrfs/snapper.nix
@@ -1,60 +1,17 @@
-{ lib, config, pkgs, ... }:
+{ config, lib, pkgs, ... }:
with lib; let
- cfg = config.local;
+ cfg = config.local.btrfs;
in
{
- options.local = with lib.types; {
- snapperSubvols = mkOption {
- type = attrsOf str;
+ options.local.btrfs = {
+ snapper = mkOption {
+ type = with lib.types; attrsOf str;
default = { };
};
-
- fs.btrfs = mkOption {
- default = [ ];
-
- type = attrsOf (submodule {
- options = {
- device = mkOption {
- type = str;
- };
-
- subvol = mkOption {
- type = str;
- };
-
- ssd = mkOption {
- type = bool;
- };
-
- snapper = mkOption {
- type = nullOr str;
- default = null;
- };
- };
- });
- };
};
- config = {
- environment.systemPackages = optional (cfg.snapperSubvols != { }) pkgs.local.btclone;
-
- fileSystems =
- let
- inherit (cfg) fs;
- btrfs = { device, subvol, ssd, ... }: {
- inherit device;
- fsType = "btrfs";
- options = [ "noatime" "compress=zstd" "subvol=${subvol}" ] ++ optional ssd "ssd";
- };
- in
- mapAttrs (_: btrfs) cfg.fs.btrfs;
-
- local.snapperSubvols =
- let
- snapperEntry = path: opts: { name = opts.snapper; value = path; };
- validEntry = _: opts: opts.snapper != null;
- in
- mapAttrs' snapperEntry (filterAttrs validEntry cfg.fs.btrfs);
+ config = mkIf (cfg.snapper != { }) {
+ environment.systemPackages = [ pkgs.local.btclone ];
services.snapper.configs =
let
@@ -111,6 +68,6 @@ in
EMPTY_PRE_POST_MIN_AGE = "1800";
};
in
- mapAttrs snapperConfig cfg.snapperSubvols;
+ mapAttrs snapperConfig cfg.snapper;
};
}
diff --git a/sys/fs/default.nix b/sys/fs/default.nix
deleted file mode 100644
index 41871df..0000000
--- a/sys/fs/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, config, ... }:
-with lib; let
- cfg = config.local.fs;
-in
-{
- imports = [ ./btrfs.nix ./layout.nix ];
-
- options.local.fs = with lib.types; {
- impermanence = mkOption {
- type = bool;
- default = false;
- };
-
- boot.device = mkOption {
- type = str;
- };
- };
-
- config = {
- # !!!
- boot.tmp.useTmpfs = true;
-
- fileSystems."/" = mkIf cfg.impermanence {
- device = "tmpfs";
- fsType = "tmpfs";
- options = [ "size=1G" "mode=755" ];
- };
-
- fileSystems."/boot" = {
- inherit (cfg.boot) device;
- fsType = "vfat";
- options = [ "noatime" "umask=027" ];
- };
- };
-}
diff --git a/sys/fs/layout.nix b/sys/fs/layout.nix
deleted file mode 100644
index 7e1ac2e..0000000
--- a/sys/fs/layout.nix
+++ /dev/null
@@ -1,87 +0,0 @@
-{ lib, config, ... }:
-with lib; let
- cfg = config.local;
-in
-{
- options.local.fs.layout = with lib.types; {
- sysHddBtrfs = mkOption {
- default = null;
-
- type = nullOr (submodule {
- options = {
- sys = {
- device = mkOption {
- type = str;
- };
-
- ssd = mkOption {
- type = bool;
- };
-
- root = mkOption {
- type = str;
- };
-
- toplevel = mkOption {
- type = str;
- };
- };
-
- hdd = {
- device = mkOption {
- type = str;
- };
-
- home = mkOption {
- type = str;
- };
- };
- };
- });
- };
- };
-
- config = {
- local.fs.btrfs =
- let
- sysHddBtrfs = layout: {
- "/" = {
- inherit (layout.sys) device ssd;
- subvol = layout.sys.root;
- };
-
- "/toplevel" = {
- inherit (layout.sys) device ssd;
- subvol = layout.sys.toplevel;
- };
-
- "/hdd" = {
- inherit (layout.hdd) device;
- subvol = "/";
- ssd = false;
- };
-
- "/home" = {
- inherit (layout.hdd) device;
- subvol = layout.hdd.home;
- ssd = false;
- snapper = "home";
- };
- };
-
- inherit (cfg.fs) layout;
-
- layoutMaps = [ sysHddBtrfs ];
- layoutOpts = [ layout.sysHddBtrfs ];
- valid = filter ({ snd, ... }: snd != null) (zipLists layoutMaps layoutOpts);
- in
- optionalAttrs (valid != [ ]) ((head valid).fst (head valid).snd);
-
- assertions = [
- {
- assertion = length (filter (layout: layout != null) (attrValues cfg.fs.layout)) <= 1;
- message = "Cannot enable more than one filesystem layout";
- }
- ];
- };
-}