{ lib, inputs, ... }:
{
  imports = [
    (inputs.julm-nix + "/nixos/profiles/zfs.nix")
  ];

  /*
    fileSystems."/boot" =
    { device = "bpool/boot";
    fsType = "zfs";
    };
  */
  fileSystems."/" = {
    device = "rpool/root";
    fsType = "zfs"; # TODO: options = [ "zfsutil" ];
  };

  # This will automatically load the zfs password prompt on login
  # and kill the other prompt so boot can continue
  # The pkill zfs kills the zfs load-key from the console
  # allowing the boot to continue.
  boot.initrd.network.postCommands = ''
    echo >>/root/.profile "zfs load-key rpool && pkill zfs"
  '';
  boot.zfs.requestEncryptionCredentials = lib.mkForce [ "rpool" ];
  #boot.zfs.requestEncryptionCredentials = [ hostName ];

  fileSystems."/home" =
    {
      device = "rpool/home";
      fsType = "zfs";
    };

  fileSystems."/home/julm" =
    {
      device = "rpool/home/julm";
      fsType = "zfs";
    };

  fileSystems."/home/julm/log" =
    {
      device = "rpool/home/julm/log";
      fsType = "zfs";
    };

  fileSystems."/home/julm/mail" =
    {
      device = "rpool/home/julm/mail";
      fsType = "zfs";
    };

  fileSystems."/nix" =
    {
      device = "rpool/nix";
      fsType = "zfs";
    };

  fileSystems."/var" =
    {
      device = "rpool/var";
      fsType = "zfs";
    };

  fileSystems."/var/cache" =
    {
      device = "rpool/var/cache";
      fsType = "zfs";
    };

  fileSystems."/var/log" =
    {
      device = "rpool/var/log";
      fsType = "zfs";
    };

  fileSystems."/var/tmp" =
    {
      device = "rpool/var/tmp";
      fsType = "zfs";
    };

  fileSystems."/var/www" =
    {
      device = "rpool/var/www";
      fsType = "zfs";
    };
}