feat: add family account configuration

This commit is contained in:
Daniel Flanagan 2025-02-18 11:15:48 -06:00
parent 0b73d173f6
commit bca2b245da
5 changed files with 236 additions and 216 deletions

View file

@ -39,9 +39,7 @@ in
options = { options = {
lyte = { lyte = {
shell = { shell = {
enable = lib.mkEnableOption ( enable = lib.mkEnableOption "Enable home-manager shell configuration for the user";
builtins.trace "looked at lyte options" "Enable home-manager shell configuration for the user"
);
}; };
}; };
}; };
@ -262,15 +260,24 @@ in
fish = import ./fish.nix; fish = import ./fish.nix;
jujutsu = jujutsu =
{ config, lib, ... }:
{ {
config = lib.mkIf (builtins.hasAttr "primary" config.accounts.email.accounts) { fullName,
config,
lib,
...
}:
let
email = config.accounts.email.accounts.primary.address;
in
{
config = {
programs.jujutsu = { programs.jujutsu = {
enable = true; enable = true;
settings = { settings = {
user = { user = {
email = config.accounts.email.accounts.primary.address; inherit email;
name = "Daniel Flanagan"; name = fullName;
}; };
}; };
}; };
@ -278,15 +285,20 @@ in
}; };
git = git =
{ lib, ... }: {
config,
lib,
fullName,
...
}:
let let
email = lib.mkDefault "daniel@lyte.dev"; email = config.accounts.email.accounts.primary.address;
in in
{ {
programs.git = { programs.git = {
enable = true; enable = true;
userName = lib.mkDefault "Daniel Flanagan"; userName = lib.mkDefault fullName;
userEmail = email; userEmail = email;
delta = { delta = {
@ -475,14 +487,6 @@ in
blur-my-shell blur-my-shell
appindicator appindicator
]; ];
file.".face" = {
enable = true;
source = builtins.fetchurl {
url = "https://lyte.dev/img/avatar3-square-512.png";
sha256 = "sha256:15zwbwisrc01m7ad684rsyq19wl4s33ry9xmgzmi88k1myxhs93x";
};
};
}; };
programs.gnome-shell = { programs.gnome-shell = {
@ -1278,24 +1282,14 @@ in
daniel = daniel =
{ ... }: { ... }:
{ {
home = { home = {
username = "daniel"; username = "daniel";
homeDirectory = "/home/daniel/.home"; homeDirectory = "/home/daniel/.home";
}; };
accounts.email.accounts = { accounts.email.accounts.primary = {
primary = { primary = true;
primary = true; address = "daniel@lyte.dev";
address = "daniel@lyte.dev";
};
legacy = {
address = "wraithx2@gmail.com";
};
io = {
# TODO: finalize deprecation
address = "daniel@lytedev.io";
};
}; };
}; };
} }

View file

@ -25,7 +25,7 @@
TODO: extensions and their config/sync? TODO: extensions and their config/sync?
*/ */
profiles = { profiles = {
daniel = { primary = {
id = 0; id = 0;
settings = { settings = {
"alerts.useSystemBackend" = true; "alerts.useSystemBackend" = true;

View file

@ -31,6 +31,50 @@
postgres postgres
gaming gaming
restic restic
(
{ config, ... }:
lib.mkIf config.family-account.enable {
users.groups.flanfam = { };
users.users.flanfam = {
isNormalUser = true;
home = "/home/flanfam";
description = "Flanagan Family";
createHome = true;
openssh.authorizedKeys.keys = [ self.outputs.pubkey ];
group = "flanfam";
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
extraGroups = [
"users"
"video"
];
};
home-manager.users.flanfam = {
# TODO: .face
accounts.email.accounts.primary = {
primary = true;
address = "home@lyte.dev";
};
home = {
username = "flanfam";
homeDirectory = "/home/flanfam";
stateVersion = lib.mkDefault config.system.stateVersion;
file.".face" = {
enable = config.home-manager.users.daniel.lyte.desktop.enable;
source = builtins.fetchurl {
url = "https://lyte.dev/icon.png";
sha256 = "sha256:0nf22gwasc64yc5317d0k0api0fwyrf4g3wxljdi2p3ki079ky53";
};
};
};
imports = with self.outputs.homeManagerModules; [
{
_module.args.fullName = config.users.users.flanfam.description;
}
default
];
};
}
)
]; ];
options = { options = {
@ -39,177 +83,166 @@
}; };
}; };
config = config = {
{ lyte.shell.enable = lib.mkDefault true;
lyte.shell.enable = lib.mkDefault true; nixpkgs = {
nixpkgs = { config.allowUnfree = lib.mkDefault true;
config.allowUnfree = lib.mkDefault true; overlays = [ self.flakeLib.forSelfOverlay ];
overlays = [ self.flakeLib.forSelfOverlay ]; };
}; nix = {
nix = { nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry; # registry = lib.mapAttrs (_: value: { flake = value; }) self.inputs;
# registry = lib.mapAttrs (_: value: { flake = value; }) self.inputs;
settings = { settings = {
trusted-users = lib.mkDefault [ "@wheel" ]; trusted-users = lib.mkDefault [ "@wheel" ];
extra-experimental-features = lib.mkDefault [ extra-experimental-features = lib.mkDefault [
"nix-command" "nix-command"
"flakes" "flakes"
];
auto-optimise-store = lib.mkDefault true;
};
};
sops = {
age = {
sshKeyPaths = lib.mkDefault [ "/etc/ssh/ssh_host_ed25519_key" ];
keyFile = lib.mkDefault "/var/lib/sops-nix/key.txt";
generateKey = lib.mkDefault true;
};
};
# TODO: for each non-system user on the machine?
home-manager = {
useGlobalPkgs = lib.mkDefault true;
useUserPackages = lib.mkDefault true;
backupFileExtension = lib.mkDefault "hm-backup";
};
systemd.services.nix-daemon.environment.TMPDIR = lib.mkDefault "/var/tmp"; # TODO: why did I do this again?
boot.tmp.cleanOnBoot = lib.mkDefault true;
programs.gnupg.agent.enable = lib.mkDefault true;
time.timeZone = lib.mkDefault "America/Chicago";
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
hardware.enableRedistributableFirmware = lib.mkDefault true;
users.users.root = {
openssh.authorizedKeys.keys = lib.mkDefault [ self.outputs.pubkey ];
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
};
services = {
openssh = {
enable = lib.mkDefault true;
settings = {
PasswordAuthentication = lib.mkDefault false;
KbdInteractiveAuthentication = lib.mkDefault false;
PermitRootLogin = lib.mkForce "prohibit-password";
};
openFirewall = lib.mkDefault true;
/*
listenAddresses = [
{ addr = "0.0.0.0"; port = 22; }
];
*/
};
avahi = {
enable = lib.mkDefault true;
reflector = lib.mkDefault true;
openFirewall = lib.mkDefault true;
nssmdns4 = lib.mkDefault true;
};
tailscale = {
enable = lib.mkDefault true;
useRoutingFeatures = lib.mkDefault "client";
};
journald.extraConfig = lib.mkDefault "SystemMaxUse=1G";
xserver.xkb = {
layout = lib.mkDefault "us";
# have the caps-lock key instead be a ctrl key
options = lib.mkDefault "ctrl:nocaps";
};
smartd.enable = lib.mkDefault true;
fwupd.enable = lib.mkDefault true;
};
console = {
useXkbConfig = lib.mkDefault true;
earlySetup = lib.mkDefault true;
colors =
with self.outputs.style.colors;
lib.mkDefault [
bg
red
green
orange
blue
purple
yellow
fg3
fgdim
red
green
orange
blue
purple
yellow
fg
];
};
networking = {
hostName = lib.mkDefault "set-a-hostname-dingus";
useDHCP = lib.mkDefault true;
firewall = {
enable = lib.mkDefault true;
allowPing = lib.mkDefault true;
};
};
users.groups.daniel = { };
users.users.daniel = {
isNormalUser = true;
home = "/home/daniel/.home";
description = "Daniel Flanagan";
createHome = true;
openssh.authorizedKeys.keys = [ self.outputs.pubkey ];
group = "daniel";
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
extraGroups = [
"users"
"wheel"
"video"
"dialout"
"uucp"
"kvm"
];
packages = [ ];
};
home-manager.users.daniel = {
home.stateVersion = lib.mkDefault config.system.stateVersion;
imports = with self.outputs.homeManagerModules; [
default
];
};
}
// lib.mkIf config.family-account.enable {
users.groups.flanfam = { };
users.users.flanfam = {
isNormalUser = true;
home = "/home/flanfam";
description = "Flanagan Family";
createHome = true;
openssh.authorizedKeys.keys = [ self.outputs.pubkey ];
group = "flanfam";
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
extraGroups = [
"users"
"video"
];
packages = [ ];
};
home-manager.users.flanfam = {
home.stateVersion = lib.mkDefault config.system.stateVersion;
imports = with self.outputs.homeManagerModules; [
default
]; ];
auto-optimise-store = lib.mkDefault true;
}; };
}; };
sops = {
age = {
sshKeyPaths = lib.mkDefault [ "/etc/ssh/ssh_host_ed25519_key" ];
keyFile = lib.mkDefault "/var/lib/sops-nix/key.txt";
generateKey = lib.mkDefault true;
};
};
# TODO: for each non-system user on the machine?
home-manager = {
useGlobalPkgs = lib.mkDefault true;
useUserPackages = lib.mkDefault true;
backupFileExtension = lib.mkDefault "hm-backup";
};
systemd.services.nix-daemon.environment.TMPDIR = lib.mkDefault "/var/tmp"; # TODO: why did I do this again?
boot.tmp.cleanOnBoot = lib.mkDefault true;
programs.gnupg.agent.enable = lib.mkDefault true;
time.timeZone = lib.mkDefault "America/Chicago";
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
hardware.enableRedistributableFirmware = lib.mkDefault true;
users.users.root = {
openssh.authorizedKeys.keys = lib.mkDefault [ self.outputs.pubkey ];
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
};
services = {
openssh = {
enable = lib.mkDefault true;
settings = {
PasswordAuthentication = lib.mkDefault false;
KbdInteractiveAuthentication = lib.mkDefault false;
PermitRootLogin = lib.mkForce "prohibit-password";
};
openFirewall = lib.mkDefault true;
/*
listenAddresses = [
{ addr = "0.0.0.0"; port = 22; }
];
*/
};
avahi = {
enable = lib.mkDefault true;
reflector = lib.mkDefault true;
openFirewall = lib.mkDefault true;
nssmdns4 = lib.mkDefault true;
};
tailscale = {
enable = lib.mkDefault true;
useRoutingFeatures = lib.mkDefault "client";
};
journald.extraConfig = lib.mkDefault "SystemMaxUse=1G";
xserver.xkb = {
layout = lib.mkDefault "us";
# have the caps-lock key instead be a ctrl key
options = lib.mkDefault "ctrl:nocaps";
};
smartd.enable = lib.mkDefault true;
fwupd.enable = lib.mkDefault true;
};
console = {
useXkbConfig = lib.mkDefault true;
earlySetup = lib.mkDefault true;
colors =
with self.outputs.style.colors;
lib.mkDefault [
bg
red
green
orange
blue
purple
yellow
fg3
fgdim
red
green
orange
blue
purple
yellow
fg
];
};
networking = {
hostName = lib.mkDefault "set-a-hostname-dingus";
useDHCP = lib.mkDefault true;
firewall = {
enable = lib.mkDefault true;
allowPing = lib.mkDefault true;
};
};
users.groups.daniel = { };
users.users.daniel = {
isNormalUser = true;
home = "/home/daniel/.home";
# TODO: chown /home/daniel
description = "Daniel Flanagan";
createHome = true;
openssh.authorizedKeys.keys = [ self.outputs.pubkey ];
group = "daniel";
shell = lib.mkIf config.lyte.shell.enable pkgs.fish;
extraGroups = [
"users"
"wheel"
"video"
"dialout"
"uucp"
"kvm"
];
packages = [ ];
};
home-manager.users.daniel = {
home = {
stateVersion = lib.mkDefault config.system.stateVersion;
file.".face" = {
enable = config.home-manager.users.daniel.lyte.desktop.enable;
source = builtins.fetchurl {
url = "https://lyte.dev/img/avatar3-square-512.png";
sha256 = "sha256:15zwbwisrc01m7ad684rsyq19wl4s33ry9xmgzmi88k1myxhs93x";
};
};
};
imports = with self.outputs.homeManagerModules; [
{
_module.args.fullName = config.users.users.daniel.description;
}
default
daniel
];
};
};
} }

View file

@ -48,14 +48,4 @@ inputs: {
}; };
}; };
}; };
radio-tools =
{ pkgs, ... }:
{
environment = {
systemPackages = with pkgs; [
chirp
];
};
};
} }

View file

@ -68,15 +68,18 @@
programs.steam.enable = true; programs.steam.enable = true;
networking.wifi.enable = true; networking.wifi.enable = true;
lyte.desktop.enable = true; lyte.desktop.enable = true;
family-account.enable = true;
home-manager.users.daniel = { home-manager.users.daniel = {
lyte.shell.enable = true; lyte.shell.enable = true;
lyte.desktop.enable = true; lyte.desktop.enable = true;
home.file.".config/easyeffects/output" = { home = {
enable = true; file.".config/easyeffects/output" = {
source = fetchGit { enable = true;
url = "https://github.com/ceiphr/ee-framework-presets"; source = fetchGit {
rev = "27885fe00c97da7c441358c7ece7846722fd12fa"; url = "https://github.com/ceiphr/ee-framework-presets";
rev = "27885fe00c97da7c441358c7ece7846722fd12fa";
};
}; };
}; };
services.easyeffects = { services.easyeffects = {