mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 10:58:02 +00:00
55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
= Users configuration
|
|
:toc:
|
|
|
|
This is where user-specific configurations comes in.
|
|
Ideally, the configurations are link:https://nix-community.github.io/home-manager/[home-manager config].
|
|
The configs should assume to be used as a configuration as `.config/nixpkgs/home.nix` (i.e., `home-manager.lib.homeManagerConfiguration`, `home-manager.users.${user}`, in your ordinary home-manager setup in a foreign distro).
|
|
|
|
Here's an example of a sample user config placed in `users/hello.nix`.
|
|
|
|
[source, nix]
|
|
----
|
|
{ config, options, pkgs, lib, ... }:
|
|
|
|
{
|
|
programs.home-manager.enable = true;
|
|
programs.direnv.enable = true;
|
|
home.file.".npmrc".source = ./config/npmrc;
|
|
}
|
|
----
|
|
|
|
This is to be imported to `homeManagerConfiguration` in the flake outputs and when indicated from `config.modules.users.users` (e.g., `modules.users.users = [ "hello" ];`).
|
|
|
|
|
|
|
|
|
|
== Modules
|
|
|
|
There are also user modules (in link:./modules[`./modules`]) that are imported to use with home-manager, allowing you to extend it as you wish.
|
|
It works just like link:https://github.com/nix-community/home-manager/tree/master/modules[home-manager modules].
|
|
|
|
For easier identification, it should be stored with `modules` as the top-level attribute (e.g., `modules.alacritty`, `modules.i18n`).
|
|
|
|
Here's an example user module that simply ports my Alacritty config.
|
|
|
|
[source, nix]
|
|
----
|
|
{ config, options, lib, pkgs, ... }:
|
|
|
|
let
|
|
cfg = config.modules.alacritty;
|
|
in
|
|
{
|
|
options.modules.alacritty.enable = lib.mkEnableOption "Ports my Alacritty configuration.";
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = with pkgs; [ alacritty ];
|
|
xdg.configFile."alacritty" = {
|
|
source = ../config/alacritty
|
|
recursive = true;
|
|
};
|
|
};
|
|
}
|
|
----
|
|
|