almost there for multiple users????
This commit is contained in:
parent
f40207c455
commit
ce69116c39
8 changed files with 68 additions and 50 deletions
22
lib/_root.nix
Normal file
22
lib/_root.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
15
lib/user.nix
15
lib/user.nix
|
@ -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.
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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 = " ";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
4
shell.nix
Normal file
|
@ -0,0 +1,4 @@
|
|||
{}:
|
||||
{
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue