Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration: impermanence for home & machine state #199

Open
blaggacao opened this issue Mar 18, 2021 · 5 comments
Open

Integration: impermanence for home & machine state #199

blaggacao opened this issue Mar 18, 2021 · 5 comments
Labels
enhancement New feature or request

Comments

@blaggacao
Copy link
Contributor

blaggacao commented Mar 18, 2021

Would your feature fix an existing issue?

#180 & #187

Describe the solution you'd like

Impermanence is very handy and easy to use. It is intended for hosts with root file systems that do not persist between reboots—a strategy I also generally recommend—but is useful for consolidation of mutable state regardless. The chosen path(s) (e.g., /persistent from environment.persistence."/persistent") can then be managed as independent repositories as desired for versioning, backup, deployment, etc.

@ctem #180 (comment)

Describe alternatives you've considered

git lfs which is probably too git centric and also doesn't solve the problem as generically as impernanence does.

Additional context


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

@blaggacao blaggacao added the enhancement New feature or request label Mar 18, 2021
@nrdxp
Copy link
Collaborator

nrdxp commented Mar 18, 2021

I am currently experimenting with impermanence along with:

{
  # load blank root on every boot
  boot.initrd.postDeviceCommands = lib.mkAfter ''
    zfs rollback -r rpool/local/root@blank
  '';
}

To allow for an essentially temporary root directory where all state is opt in via environment.persistence, thanks to grahamc. I haven't synced it yet because I was wanting to break out the relavent bits into a profile, and I've been busy figuring out how to fix performance with zfs and the nix/store.

So far it's pretty great though.

@Th3Whit3Wolf
Copy link

For those who want to use impermanence for root and home you can import it as not a flake and use the modules.

inputs = {

  impermanence = {
    url = "github:nix-community/impermanence";
    flake = false;
  };

};
outputs = {

  nixos = {
    hostDefaults = {
      system = "x86_64-linux";
      channelName = "nixos";
      modules = ./modules/module-list.nix;
      externalModules = [
        { _module.args.ourLib = self.lib; }
        home.nixosModules.home-manager
        "${inputs.impermanence}/nixos.nix"
        ./modules/customBuilds.nix
      ];
    };
  };

  home = {
    modules = ./users/modules/module-list.nix;
    externalModules = [ "${inputs.impermanence}/home-manager.nix" ];

  };
};

I will note that have had issues getting age to work while using impermanence home-manager module.

@nrdxp
Copy link
Collaborator

nrdxp commented Jun 26, 2021

I'm doing this as well, just haven't gotten around to making a proper profile for it

@Th3Whit3Wolf
Copy link

I'm doing this as well, just haven't gotten around to making a proper profile for it

Have you had any issues getting age to work with it?

@nrdxp
Copy link
Collaborator

nrdxp commented Jul 2, 2021

@Th3Whit3Wolf Yes, I filed my chronicles on that issue here:
ryantm/agenix#45

You need a nixpkgs with the fix mentioned merged, nixos-unstable should have it now. Not sure if it's been backported to a release yet though (or if it will be).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants