feat: add family account configuration
This commit is contained in:
parent
0b73d173f6
commit
bca2b245da
5 changed files with 236 additions and 216 deletions
|
@ -39,9 +39,7 @@ in
|
|||
options = {
|
||||
lyte = {
|
||||
shell = {
|
||||
enable = lib.mkEnableOption (
|
||||
builtins.trace "looked at lyte options" "Enable home-manager shell configuration for the user"
|
||||
);
|
||||
enable = lib.mkEnableOption "Enable home-manager shell configuration for the user";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -262,15 +260,24 @@ in
|
|||
fish = import ./fish.nix;
|
||||
|
||||
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 = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
email = config.accounts.email.accounts.primary.address;
|
||||
name = "Daniel Flanagan";
|
||||
inherit email;
|
||||
name = fullName;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -278,15 +285,20 @@ in
|
|||
};
|
||||
|
||||
git =
|
||||
{ lib, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
fullName,
|
||||
...
|
||||
}:
|
||||
let
|
||||
email = lib.mkDefault "daniel@lyte.dev";
|
||||
email = config.accounts.email.accounts.primary.address;
|
||||
in
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
userName = lib.mkDefault "Daniel Flanagan";
|
||||
userName = lib.mkDefault fullName;
|
||||
userEmail = email;
|
||||
|
||||
delta = {
|
||||
|
@ -475,14 +487,6 @@ in
|
|||
blur-my-shell
|
||||
appindicator
|
||||
];
|
||||
|
||||
file.".face" = {
|
||||
enable = true;
|
||||
source = builtins.fetchurl {
|
||||
url = "https://lyte.dev/img/avatar3-square-512.png";
|
||||
sha256 = "sha256:15zwbwisrc01m7ad684rsyq19wl4s33ry9xmgzmi88k1myxhs93x";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.gnome-shell = {
|
||||
|
@ -1278,24 +1282,14 @@ in
|
|||
daniel =
|
||||
{ ... }:
|
||||
{
|
||||
|
||||
home = {
|
||||
username = "daniel";
|
||||
homeDirectory = "/home/daniel/.home";
|
||||
};
|
||||
|
||||
accounts.email.accounts = {
|
||||
primary = {
|
||||
primary = true;
|
||||
address = "daniel@lyte.dev";
|
||||
};
|
||||
legacy = {
|
||||
address = "wraithx2@gmail.com";
|
||||
};
|
||||
io = {
|
||||
# TODO: finalize deprecation
|
||||
address = "daniel@lytedev.io";
|
||||
};
|
||||
accounts.email.accounts.primary = {
|
||||
primary = true;
|
||||
address = "daniel@lyte.dev";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
TODO: extensions and their config/sync?
|
||||
*/
|
||||
profiles = {
|
||||
daniel = {
|
||||
primary = {
|
||||
id = 0;
|
||||
settings = {
|
||||
"alerts.useSystemBackend" = true;
|
||||
|
|
|
@ -31,6 +31,50 @@
|
|||
postgres
|
||||
gaming
|
||||
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 = {
|
||||
|
@ -39,177 +83,166 @@
|
|||
};
|
||||
};
|
||||
|
||||
config =
|
||||
{
|
||||
lyte.shell.enable = lib.mkDefault true;
|
||||
nixpkgs = {
|
||||
config.allowUnfree = lib.mkDefault true;
|
||||
overlays = [ self.flakeLib.forSelfOverlay ];
|
||||
};
|
||||
nix = {
|
||||
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
||||
# registry = lib.mapAttrs (_: value: { flake = value; }) self.inputs;
|
||||
config = {
|
||||
lyte.shell.enable = lib.mkDefault true;
|
||||
nixpkgs = {
|
||||
config.allowUnfree = lib.mkDefault true;
|
||||
overlays = [ self.flakeLib.forSelfOverlay ];
|
||||
};
|
||||
nix = {
|
||||
nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
|
||||
# registry = lib.mapAttrs (_: value: { flake = value; }) self.inputs;
|
||||
|
||||
settings = {
|
||||
trusted-users = lib.mkDefault [ "@wheel" ];
|
||||
extra-experimental-features = lib.mkDefault [
|
||||
"nix-command"
|
||||
"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
|
||||
settings = {
|
||||
trusted-users = lib.mkDefault [ "@wheel" ];
|
||||
extra-experimental-features = lib.mkDefault [
|
||||
"nix-command"
|
||||
"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";
|
||||
# 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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -48,14 +48,4 @@ inputs: {
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
radio-tools =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
chirp
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -68,15 +68,18 @@
|
|||
programs.steam.enable = true;
|
||||
networking.wifi.enable = true;
|
||||
lyte.desktop.enable = true;
|
||||
family-account.enable = true;
|
||||
|
||||
home-manager.users.daniel = {
|
||||
lyte.shell.enable = true;
|
||||
lyte.desktop.enable = true;
|
||||
home.file.".config/easyeffects/output" = {
|
||||
enable = true;
|
||||
source = fetchGit {
|
||||
url = "https://github.com/ceiphr/ee-framework-presets";
|
||||
rev = "27885fe00c97da7c441358c7ece7846722fd12fa";
|
||||
home = {
|
||||
file.".config/easyeffects/output" = {
|
||||
enable = true;
|
||||
source = fetchGit {
|
||||
url = "https://github.com/ceiphr/ee-framework-presets";
|
||||
rev = "27885fe00c97da7c441358c7ece7846722fd12fa";
|
||||
};
|
||||
};
|
||||
};
|
||||
services.easyeffects = {
|
||||
|
|
Loading…
Add table
Reference in a new issue