From 87e01e119c4111d8278e294a5d66d0abd2c73e18 Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Fri, 23 Jun 2023 15:43:26 +0800 Subject: [PATCH] config: create declarative home-manager user management --- flake.nix | 13 ++++++++++--- users.toml | 8 ++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 users.toml diff --git a/flake.nix b/flake.nix index dc2037f7..ff6051e9 100644 --- a/flake.nix +++ b/flake.nix @@ -79,6 +79,9 @@ # support. images = lib'.importTOML ./images.toml; + # A set of users with their metadata to be deployed with home-manager. + users = lib'.importTOML ./users.toml; + # A set of image-related utilities for the flake outputs. inherit (import ./lib/images.nix { inherit inputs; lib = lib'; }) mkHost mkUser mkImage; @@ -310,8 +313,9 @@ # I can now install home-manager users in non-NixOS systems. # NICE! homeConfigurations = lib'.mapAttrs - (_: path: + (name: metadata: let + path = ./users/home-manager/${name}; extraModules = [ ({ pkgs, config, ... }: { # To be able to use the most of our config as possible, we want @@ -329,8 +333,11 @@ path ]; in - mkUser { inherit extraModules extraArgs; }) - (lib'.filesToAttr ./users/home-manager); + mkUser { + inherit extraModules extraArgs; + system = metadata.system or defaultSystem; + }) + users; # Extending home-manager with my custom modules, if anyone cares. homeModules = diff --git a/users.toml b/users.toml new file mode 100644 index 00000000..fae46f6e --- /dev/null +++ b/users.toml @@ -0,0 +1,8 @@ +# This is project data for deploying home-manager users with this flake. Each +# of the users defined here should correspond to one of the home-manager users +# at `./users/home-manager/`. +[foodogsquared] +system = "x86_64-linux" + +[plover] +system = "x86_64-linux"