Add all of iogamaster modules
This commit is contained in:
105
modules/nixos/user/default.nix
Normal file
105
modules/nixos/user/default.nix
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
options,
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
with lib.frajul;
|
||||
let
|
||||
cfg = config.user;
|
||||
defaultIconFileName = "profile.png";
|
||||
defaultIcon = pkgs.stdenvNoCC.mkDerivation {
|
||||
name = "default-icon";
|
||||
src = ./. + "/${defaultIconFileName}";
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
cp $src $out
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
fileName = defaultIconFileName;
|
||||
};
|
||||
};
|
||||
propagatedIcon =
|
||||
pkgs.runCommandNoCC "propagated-icon"
|
||||
{
|
||||
passthru = {
|
||||
inherit (cfg.icon) fileName;
|
||||
};
|
||||
}
|
||||
''
|
||||
local target="$out/share/icons/user/${cfg.name}"
|
||||
mkdir -p "$target"
|
||||
|
||||
cp ${cfg.icon} "$target/${cfg.icon.fileName}"
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.user = with types; {
|
||||
name = mkOpt str "julian" "The name to use for the user account.";
|
||||
initialPassword = mkOpt str "julian" "The initial password to use when the user is first created.";
|
||||
icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user.";
|
||||
extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned.";
|
||||
extraOptions = mkOpt attrs { } "Extra options passed to <option>users.users.<name></option>.";
|
||||
};
|
||||
|
||||
config = {
|
||||
environment.systemPackages = with pkgs; [ propagatedIcon ];
|
||||
|
||||
environment.sessionVariables.FLAKE = "/home/julian/.dotfiles";
|
||||
|
||||
home = {
|
||||
file = {
|
||||
"Documents/.keep".text = "";
|
||||
"Downloads/.keep".text = "";
|
||||
"Music/.keep".text = "";
|
||||
"Pictures/.keep".text = "";
|
||||
"dev/.keep".text = "";
|
||||
"git/.keep".text = "";
|
||||
".face".source = cfg.icon;
|
||||
"Pictures/${cfg.icon.fileName or (builtins.baseNameOf cfg.icon)}".source = cfg.icon;
|
||||
"Pictures/profile_old.png".source = ./profile_old.png;
|
||||
};
|
||||
|
||||
persist.directories = [
|
||||
"Documents"
|
||||
"Music"
|
||||
"Pictures"
|
||||
"dev"
|
||||
"git"
|
||||
|
||||
".dotfiles"
|
||||
];
|
||||
};
|
||||
|
||||
users.users.${cfg.name} = {
|
||||
isNormalUser = true;
|
||||
inherit (cfg) name initialPassword;
|
||||
home = "/home/${cfg.name}";
|
||||
group = "${cfg.name}";
|
||||
|
||||
# hashedPasswordFile = lib.mkForce config.sops.secrets."system/password".path;
|
||||
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"audio"
|
||||
"sound"
|
||||
"video"
|
||||
"networkmanager"
|
||||
"input"
|
||||
"tty"
|
||||
"docker"
|
||||
] ++ cfg.extraGroups;
|
||||
} // cfg.extraOptions;
|
||||
|
||||
users.groups.${cfg.name} = { };
|
||||
|
||||
# users.users.root.hashedPasswordFile = lib.mkForce config.sops.secrets."system/password".path;
|
||||
|
||||
users.mutableUsers = false;
|
||||
};
|
||||
}
|
BIN
modules/nixos/user/profile.png
Normal file
BIN
modules/nixos/user/profile.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
BIN
modules/nixos/user/profile_old.png
Normal file
BIN
modules/nixos/user/profile_old.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.0 KiB |
Reference in New Issue
Block a user