From cfad4af862fab36472397a1768f1a68833191d2c Mon Sep 17 00:00:00 2001 From: rogueking Date: Mon, 18 Aug 2025 22:41:24 -0700 Subject: [PATCH] added eva-02 and darwin compatibility --- flake.nix | 20 ++- home-manager/commands/commands.nix | 4 + home-manager/programs/programs.nix | 2 +- hosts/eva-02/configuration.nix | 228 +++++++++++++++++++++++++++++ 4 files changed, 245 insertions(+), 9 deletions(-) create mode 100644 hosts/eva-02/configuration.nix diff --git a/flake.nix b/flake.nix index 6f7de5c..eafb5d4 100644 --- a/flake.nix +++ b/flake.nix @@ -4,6 +4,8 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + nix-darwin.url = "github:nix-darwin/nix-darwin/master"; + nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; home-manager = { url = "github:nix-community/home-manager/release-25.05"; @@ -28,7 +30,8 @@ outputs = { self, nixpkgs, - nixpkgs-unstable, + nixpkgs-unstable, + nix-darwin, home-manager, nixvim, nixos-hardware, @@ -64,13 +67,14 @@ nixos-hardware.nixosModules.lenovo-thinkpad-x1-nano-gen1 ]; }; - - eva-03 = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs pkgs-unstable configPath;} // {hostname = "eva-03";}; - system = system; - modules = [ - ./hosts/eva-03/configuration.nix - inputs.home-manager.nixosModules.default + }; + darwinConfigurations = { + eva-02 = nix-darwin.lib.darwinSystem{ + specialArgs = {inherit inputs configPath;} // {hostname = "eva-02";}; + system = "aarch64-darwin"; + module = [ + ./hosts/eva-02/configuration.nix + home-manager.darwinModules.home-manager ]; }; }; diff --git a/home-manager/commands/commands.nix b/home-manager/commands/commands.nix index 4c4beef..f5f9a90 100644 --- a/home-manager/commands/commands.nix +++ b/home-manager/commands/commands.nix @@ -87,6 +87,10 @@ thc-hydra ] + ++ lib.optionals (hostname == "eva-02") [ + + ] + ++ lib.optionals (hostname == "eva-03") [ ]; diff --git a/home-manager/programs/programs.nix b/home-manager/programs/programs.nix index e3801b1..920e34b 100644 --- a/home-manager/programs/programs.nix +++ b/home-manager/programs/programs.nix @@ -11,7 +11,7 @@ ]; home.packages = - lib.optionals (hostname != "buildbox") (with pkgs; [ + lib.optionals (! (lib.elem hostname [ "buildbox" "eva-02" ])) (with pkgs; [ #pwndbg bambu-studio blender diff --git a/hosts/eva-02/configuration.nix b/hosts/eva-02/configuration.nix new file mode 100644 index 0000000..709e741 --- /dev/null +++ b/hosts/eva-02/configuration.nix @@ -0,0 +1,228 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ + config, + pkgs, + pkgs-unstable, + inputs, + configPath, + hostname, + lib, + ... +}: + +{ + imports = + [ # Include the results of the hardware scan. + inputs.home-manager.nixosModules.default +# (modulesPath + "/profiles/qemu-guest.nix") + ]; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + + # Nix optimizations + nix.optimise.automatic = true; + nix.settings.auto-optimise-store = true; + nix.gc = { + automatic = true; + dates = "weekly"; + persistent = true; + options = "--delete-older-than 30d"; + }; + + networking.hostName = "eva-02"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + virtualisation.docker.enable = true; + + # Set your time zone. + time.timeZone = "America/Los_Angeles"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = true; # Enable for Darwin compatibility + + # Enable the KDE Plasma Desktop Environment. +# services.displayManager.sddm.enable = true; +# services.displayManager.sddm.wayland.enable = true; +# services.desktopManager.plasma6.enable = true; +# services.displayManager.sddm.theme = "sddm-astronaut-theme"; + + services.tailscale.enable = false; # Disable Tailscale for Darwin compatibility + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Enable CUPS to print documents. + services.printing.enable = false; + + # Enable sound with pipewire. + # hardware.pulseaudio.enable = false; + #hardware.pulseaudio = { + # enable = true; + # package = pkgs.pulseaudioFull; + #}; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + programs.zsh.enable = true; + users.users.rogueking = { + isNormalUser = true; + description = "rogueking"; + extraGroups = [ "networkmanager" "wheel" "docker" ]; + shell = pkgs.zsh; + #packages = [ inputs.home-manager.packages.${pkgs.system}.default ]; + packages = with pkgs; [ + #apps + #cli + # thunderbird + ]; + }; + + # Install firefox. + programs.firefox.enable = true; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + security.polkit.enable = true; + programs._1password.enable = true; + programs._1password-gui = { + enable = true; + # Certain features, including CLI integration and system authentication support, + # require enabling PolKit integration on some desktop environments (e.g. Plasma). + polkitPolicyOwners = [ "rogueking" ]; + }; + + # Enable OpenSSH daemon + services.openssh = { + enable = true; + ports = [ 22 ]; + settings = { + PasswordAuthentication = true; + AllowUsers = [ "rogueking" ]; + UseDns = true; + X11Forwarding = false; + PermitRootLogin = "no"; + MaxAuthTries = 8; + }; + }; + + users.users."rogueking".openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINXqriPZVIuduc/J7GS1mD171LL0gIbgEjlImsxedWVX" + ]; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + #apps + #cider-2 + guacamole-client +# sddm-astronaut + + #cli tools + btop + curl + docker + dust + file + findutils + git + gparted + kopia + lazydocker + nettools + nix-prefetch-github + nmap + openssh + openssl + parted + plocate + ptunnel + tailscale + tlp + unzip + vim + ]; + + home-manager = { + extraSpecialArgs = { + inherit + configPath + inputs + pkgs-unstable + hostname + ; + }; + users = { + "rogueking" = import ./../../home-manager/home.nix; + }; + backupFileExtension = "backup"; + }; + + #home-manager = { + # extraSpecialArgs = { inherit inputs; }; + # users = { + # "rogueking" = import ../home-manager/home.nix; + # }; + # backupFileExtension = "backup"; + #}; + + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.05"; # Did you read the comment? + +}