From bca2b245da49a673e2c58287313e64de0bd19420 Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Tue, 18 Feb 2025 11:15:48 -0600 Subject: [PATCH] feat: add family account configuration --- lib/modules/home/default.nix | 56 ++-- lib/modules/home/firefox.nix | 2 +- lib/modules/nixos/default-module.nix | 371 +++++++++++++++------------ lib/modules/nixos/default.nix | 10 - packages/hosts/foxtrot.nix | 13 +- 5 files changed, 236 insertions(+), 216 deletions(-) diff --git a/lib/modules/home/default.nix b/lib/modules/home/default.nix index 1f22beb..5990553 100644 --- a/lib/modules/home/default.nix +++ b/lib/modules/home/default.nix @@ -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"; }; }; } diff --git a/lib/modules/home/firefox.nix b/lib/modules/home/firefox.nix index 91ea8ce..89860f7 100644 --- a/lib/modules/home/firefox.nix +++ b/lib/modules/home/firefox.nix @@ -25,7 +25,7 @@ TODO: extensions and their config/sync? */ profiles = { - daniel = { + primary = { id = 0; settings = { "alerts.useSystemBackend" = true; diff --git a/lib/modules/nixos/default-module.nix b/lib/modules/nixos/default-module.nix index 23b3f81..58a047d 100644 --- a/lib/modules/nixos/default-module.nix +++ b/lib/modules/nixos/default-module.nix @@ -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 + ]; + }; + }; } diff --git a/lib/modules/nixos/default.nix b/lib/modules/nixos/default.nix index b859eec..d5fcf69 100644 --- a/lib/modules/nixos/default.nix +++ b/lib/modules/nixos/default.nix @@ -48,14 +48,4 @@ inputs: { }; }; }; - - radio-tools = - { pkgs, ... }: - { - environment = { - systemPackages = with pkgs; [ - chirp - ]; - }; - }; } diff --git a/packages/hosts/foxtrot.nix b/packages/hosts/foxtrot.nix index 13e9b77..270c82b 100644 --- a/packages/hosts/foxtrot.nix +++ b/packages/hosts/foxtrot.nix @@ -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 = {