almost there for multiple users????

This commit is contained in:
Chris Kruining 2025-03-23 20:27:14 +01:00
parent f40207c455
commit ce69116c39
Signed by: chris
SSH key fingerprint: SHA256:nG82MUfuVdRVyCKKWqhY+pCrbz9nbX6uzUns4RKa1Pg
8 changed files with 68 additions and 50 deletions

22
lib/_root.nix Normal file
View file

@ -0,0 +1,22 @@
args@{ self, inputs, lib, pkgs, system ? "", config, options, ... }: let
inherit (lib.my) mapModulesRec';
in
{
imports = [
# (import ../modules/home/shell/default.nix (args // { user = "root"; }))
]
++(mapModulesRec' ../modules/home (file: (import file (args // { user = "root"; }))));
config = {
modules.root = {
user = {
full_name = "__ROOT__";
email = "__ROOT__@${config.networking.hostName}";
};
shell = {
default = "zsh";
};
};
};
}

View file

@ -8,10 +8,10 @@ let
in rec
{
mapModules = dir: fn:
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (n: v: let path = "${toString dir}/${n}"; in
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (n: v: let path = "${toString dir}/${n}"; in
if v == "directory" && pathExists "${path}/default.nix"
then nameValuePair n (fn path)
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n && !(hasPrefix "_" n)
then nameValuePair (removeSuffix ".nix" n) (fn path)
else nameValuePair "" null
) (readDir dir);
@ -19,7 +19,7 @@ in rec
mapModules' = dir: fn: attrValues (mapModules dir fn);
mapModulesRec = dir: fn:
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (n: v: let path = "${toString dir}/${n}"; in
mapFilterAttrs (n: v: v != null && !(hasPrefix "_" n)) (n: v: let path = "${toString dir}/${n}"; in
if v == "directory" && pathExists "${path}/default.nix"
then nameValuePair n (mapModulesRec path fn)
else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n

View file

@ -6,8 +6,8 @@ args@{
...
}: let
inherit (inputs.nixpkgs.lib) nixosSystem;
inherit (builtins) baseNameOf elem map mapAttrs;
inherit (lib) filterAttrs attrValues attrNames;
inherit (builtins) baseNameOf elem map listToAttrs;
inherit (lib) filterAttrs nameValuePair attrNames;
inherit (lib.modules) mkAliasOptionModule mkDefault mkIf;
inherit (lib.strings) removeSuffix;
inherit (self.modules) mapModules mapModulesRec';
@ -38,6 +38,7 @@ in rec
imports = [
inputs.home-manager.nixosModules.home-manager
"${path}/hardware.nix"
./_root.nix
]
++ (mapModulesRec' ../modules/system import);
@ -47,13 +48,13 @@ in rec
};
home-manager = {
backupFileExtension = "bak";
useGlobalPkgs = true;
useUserPackages = true;
sharedModules = [
inputs.plasma-manager.homeManagerModules.plasma-manager
];
users = mapModules "${path}/users" (p: mkHmUser p { inherit inputs lib options config system pkgs self stateVersion; });
users = listToAttrs (map (user: (nameValuePair user { home = { inherit stateVersion; }; })) (users ++ [ "root" ]));
};
})
(filterAttrs (n: v: !elem n ["system"]) attrs)

View file

@ -16,14 +16,11 @@ in rec
group = "users";
};
mkHmUser = path: args@{stateVersion, ...}: let
name = removeSuffix ".nix" (baseNameOf path);
in
{
# imports = (mapModulesRec' ../modules/home (file: import file (args // { user = name; })));
home = {
inherit stateVersion;
sessionPath = [ "$XDG_BIN_HOME" "$PATH" ]; # Pretty sure I don't need this.
};
mkHmUser = path: {stateVersion, ...}:
{
home = {
inherit stateVersion;
sessionPath = [ "$XDG_BIN_HOME" "$PATH" ]; # Pretty sure I don't need this.
};
};
}

View file

@ -12,27 +12,17 @@ in
home-manager.users.${user}.programs.starship = {
enable = true;
settings = {
scan_timeout = 10;
# Inserts a blank line between shell prompts
add_newline = true;
line_break.disabled = true;
format = "[ ](bold green)$os$username$hostname$nix_shell$git_branch$git_commit$git_state$git_status$directory$jobs$cmd_duration\n$character";
format = "[](bold green) $username@$hostname$nix_shell: $directory$cmd_duration$git_branch$git_commit$git_state$git_status$line_break[](green bold)$character";
username = {
style_user = "cyan bold";
style_root = "red bold";
format = "[$user]($style) ";
disabled = false;
format = "[$user]($style)";
show_always = true;
};
hostname = {
ssh_only = false;
ssh_symbol = "🌐 ";
format = "on [$hostname](bold red) ";
format = "[$hostname](bold red)";
trim_at = ".local";
disabled = false;
};
@ -51,9 +41,7 @@ in
};
git_commit = {
only_detached = true;
format = "[$hash]($style) ";
style = "yellow bold";
tag_disabled = false;
};
git_state = {
@ -61,12 +49,23 @@ in
};
git_status = {
style = "green bold";
format = "[$all_status $ahead_behind]($style) ";
style = "bold green";
conflicted = "🏳";
up_to_date = "";
untracked = " ";
ahead = "\${count}";
diverged = "\${ahead_count}\${behind_count}";
behind = "\${count}";
stashed = " ";
modified = " ";
staged = "[++\($count\)](green)";
renamed = " ";
deleted = " ";
};
directory = {
read_only = " 󰌾";
truncation_length = 0;
};
cmd_duration = {
@ -74,12 +73,8 @@ in
style = "blue";
};
jobs = {
style = "green bold";
};
os = {
format = "[$symbol](bold white) ";
format = "[$symbol](bold white)";
disabled = false;
symbols = {
@ -93,9 +88,8 @@ in
};
};
character = {
success_symbol = "[>](green bold)";
error_symbol = "[x](red bold)";
fill = {
symbol = " ";
};
};
};

View file

@ -1,16 +1,16 @@
{ config, options, lib, pkgs, user, ... }:
{ config, lib, user, ... }:
let
inherit (lib.modules) mkIf;
inherit (lib.strings) concatStringsSep;
inherit (lib.options) mkEnableOption;
cfg = config.modules.${user}.shell.toolset.yazi;
in
{
options.modules.${user}.shell.toolset.yazi = let
inherit (lib.options) mkEnableOption;
in {
enable = mkEnableOption "system-monitor";
options.modules.${user}.shell.toolset.yazi = {
enable = mkEnableOption "system-monitor";
};
config = mkIf config.modules.${user}.shell.toolset.yazi.enable {
config = mkIf cfg.enable {
home-manager.users.${user}.programs.yazi = {
enable = true;
};

View file

@ -39,7 +39,7 @@ in
};
};
config = {
config = mkIf (user != "root") {
users.users.${user} = {
description = (cfg.full_name or user);
extraGroups = cfg.groups ++ (if cfg.is_trusted then [ "wheel" ] else []);

4
shell.nix Normal file
View file

@ -0,0 +1,4 @@
{}:
{
}