{ self, inputs, ... }: { flake.nixosModules.user-nathan = { config, lib, pkgs, ... }: let laptop = [ "laptop" ]; homebox = [ "homebox" ]; iso = [ "iso" ]; #pi4 = [ "pi4" ]; #z2w = [ "red-black" "blue-white" ]; useWith = x: y: (lib.mkIf (builtins.any (z: z == config.networking.hostName) x) y); in { config = { users.users.nathan = { shell = pkgs.zsh; name = lib.mkDefault "nathan"; isNormalUser = lib.mkDefault true; hashedPassword = lib.mkIf (config.users.users.nathan.hashedPasswordFile == null) "$y$j9T$F0pn6l4C45lz4a0FTZLqE0$Fc48Ptbmz/3MJCk/Jsaqop4ff.bY3J3GcjhmJx5R7k6"; extraGroups = [ "networkmanager" "docker" "libvirtd" "wheel" ]; openssh.authorizedKeys.keys = lib.mkMerge [ (useWith (homebox ++ iso) [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAsU69CxfQk58CvItPN426h5Alnpb60SH37wet97Vb57 nathan@laptop" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEnUhN2uHwAJF/SLRX3wlGRmfhV3zpP88JQAYB+gh8jW nathan@localhost" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCM7ZgIu4+ntHZbzo9iQPq5pUt7AhpOnfvvI0lWDgO4CgtkPGvyFrDnW87wjAKGKYkgKeHWHIkwq2hkEDqlPD+7xxtPpwzfyo7ZS23xlP31rL14HcG21jGHgx9SO7RmGDHHylu4PwJzz/KX59hcVmpSSV4hgB/mYA9UKe6VHv39X4y3HsjmiHwNBOKXltG4V+VkxOZD6HcZ62sgkyDTaqDpE7p+q8vHPbm6dVTKC9cMjtJmjB5EesMGKcEAy3VN2tA9M0EndtaLcBKM39vDXGpBsjURYZTu7NbQnncnO7L8kVL0nT4vA/d4mCjB51dPoXIcxn1ise0TOb9G7TxMbBQQO5YMOpiB2iuZRRvB3sYoKwbO8YfSxZi0EhvLcxkF9GBFw+pWPl0p0D2fPBbW88YQfEpoAt2EWvEu/pgaMJsTHpgaIuDwPLVQmDciX4MRoi324oElGSK8yN0P8IaCHhFchuehLBWvTi34Qot0GpnxeTzmlLzImICO9Yq0I7dk2rk= nathan@rpi-3dp" ]) (useWith laptop [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEnUhN2uHwAJF/SLRX3wlGRmfhV3zpP88JQAYB+gh8jW nathan@localhost" ]) ]; packages = lib.mkIf (false) [ pkgs.home-manager ]; }; services.wyoming.satellite.user = lib.mkDefault "nathan"; home-manager.users.nathan = with self.homeModules; lib.mkMerge [ self.homeModules.nathan (useWith (laptop ++ iso) nathan-aurora) (useWith (laptop ++ iso) nathan-firefox) (useWith (laptop ++ iso) nathan-rofi) (useWith (laptop ++ iso) nathan-hypridle) (useWith (laptop ++ iso) nathan-hyprland) (useWith (laptop ++ iso) nathan-kitty) (useWith (laptop ++ iso) nathan-scripts) (useWith (laptop ++ iso) nathan-pywal) (useWith (laptop ++ homebox) nathan-sops) (useWith laptop { wayland.windowManager.hyprland.extraConfig = '' monitor=eDP-1,1920x1080@60,0x0,1 bind = CTRL SHIFT, XF86Launch2, exec, bash -c 'if [[ $(hyprctl monitors | grep 0x0 | sed -n -e "s/\t*1920x1080@//" -e "s/.[1234567890]* at 0x0//p") == 300 ]]; then pkexec --user root /nix/var/nix/profiles/system/bin/switch-to-configuration switch; else pkexec --user root /nix/var/nix/profiles/system/specialisation/docked/bin/switch-to-configuration switch; fi' bind = ALT, Escape, exec, if [[ $(hyprctl monitors | grep 0x0 | sed -n -e "s/\t*1920x1080@//" -e "s/.[1234567890]* at 0x0//p") == 300 ]]; then hyprctl keyword monitor eDP-1,1920x1080@60,0x0,1; else hyprctl keyword monitor eDP-1,1920x1080@300,0x0,1; fi ''; }) (useWith iso { olympus = { packageSet = "minimal"; }; wayland.windowManager.hyprland.extraConfig = '' monitor=,preferred,auto,1 ''; }) ]; }; }; flake.homeModules.nathan-sops = { ... }: { imports = [ inputs.sops-nix.homeManagerModules.sops ]; config = { sops.defaultSopsFile = ./secrets.yaml; }; }; flake.homeModules.nathan-standalone = { ... }: { config = { nix = { nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; settings = { experimental-features = [ "nix-command" "flakes" ]; builders = "ssh://builder x86_64-linux,aarch64-linux /run/secrets/remoteBuildKey 1 1 nixos-test,benchmark,big-parallel,kvm - -"; builders-use-substitutes = true; }; }; programs.home-manager.enable = true; }; }; flake.homeConfigurations.nathan = inputs.home-manager.lib.homeManagerConfiguration { pkgs = import inputs.nixpkgs { system = builtins.currentSystem; }; modules = [ self.homeModules.nathan self.homeModules.nathan-standalone ]; }; }