{ lib, pkgs, desktop, ... }: {
    environment.systemPackages = [ pkgs.snapper ]  ++ lib.optional (builtins.isString desktop) pkgs.snapper-gui;

    services.snapper = {
        snapshotRootOnBoot = true;
        cleanupInterval = "7d";
        snapshotInterval = "hourly";
        configs = {
            root = {
                TIMELINE_CREATE = true;
                TIMELINE_CLEANUP = true;
                SUBVOLUME = "/";
            };
            home = {
                TIMELINE_CREATE = true;
                TIMELINE_CLEANUP = true;
                SUBVOLUME = "/home";
            };
            nix = {
                TIMELINE_CREATE = true;
                TIMELINE_CLEANUP = true;
                SUBVOLUME = "/nix";
            };
        };
    };
}