Declarative user management

Similarly to Declarative host management, this project also provides a way to declare home-manager users. This is also presented as a custom flake-parts module as well, ready to be configured at setups.home-manager namespace of the flake-parts config.

This module is a bit simpler that it only makes configured users to be added to homeConfigurations and deploy.nodes.

Here’s an example user with complete schema.

A user with complete schema
{
  setups.home-manager.sharedModules = [
    inputs.your-mom.homeModules.default
  ];

  # Here is the meat, what you're likely going to do.
  setups.home-manager.configs.foo-dogsquared = {
    systems = [ "x86_64-linux" "aarch64-linux" ];
    nixpkgsBranch = "nixos-stable";
    homeManagerBranch = "home-manager-23.05";
    homeDirectory = "/home/foo-dogsquared";
    username = "foodogsquared";
    modules = [
      ({ config, lib, ... }: {
        services.foo.enable = true;
      })
    ];
    overlays = [
      inputs.neovim-nightly-overlay.overlays.default
    ];
    deploy = {
      hostname = "local.foodogsquared.one";
      fastConnection = true;
      autoRollback = true;
      magicRollback = true;
      remoteBuild = true;
    };
  };
}