From 7c0fdecdcfbec25c72712f09841d52dfc1b9c5ee Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Tue, 20 May 2025 20:06:02 -0600 Subject: [PATCH] ai vm stuff --- nix/ai-vm.nix | 130 ++++++++++++++++++++++++++++++++ nix/home-manager/ai-vm.home.nix | 117 ++++++++++++++++++++++++++++ 2 files changed, 247 insertions(+) create mode 100644 nix/ai-vm.nix create mode 100644 nix/home-manager/ai-vm.home.nix diff --git a/nix/ai-vm.nix b/nix/ai-vm.nix new file mode 100644 index 0000000..b371d69 --- /dev/null +++ b/nix/ai-vm.nix @@ -0,0 +1,130 @@ +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + + ]; + + # Bootloader. + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/vda"; + boot.loader.grub.useOSProber = true; + + networking.hostName = "nixos"; # Define your hostname. + networking.networkmanager.enable = true; + + time.timeZone = "America/Denver"; + 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"; + }; + + #https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229 + systemd.services."getty@tty1".enable = false; + systemd.services."autovt@tty1".enable = false; + + services.xserver.enable = true; + services.xserver.displayManager = { + gdm.enable = true; + autoLogin = { + enable = true; + user = "alex"; + }; + }; + services.xserver.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + + users.users.alex = { + isNormalUser = true; + description = "alex"; + extraGroups = [ "networkmanager" "wheel" "docker" ]; + shell = pkgs.fish; + + packages = with pkgs; [ + lazydocker + btop + nvtopPackages.nvidia + uv + git + ]; + }; + home-manager.users.alex = { pgks, ...}: { + home.stateVersion = "24.11"; + imports = [ + ./home-manager/ai-vm.home.nix + ]; + }; + + programs.firefox.enable = true; + nixpkgs.config.allowUnfree = true; + + system.stateVersion = "24.11"; # Did you read the comment? + + environment.systemPackages = with pkgs; [ + vim + ]; + programs.nix-ld.enable = true; + + programs.fish.enable = true; + services.tailscale.enable = true; + services.openssh.enable = true; + services.qemuGuest.enable = true; + virtualisation.docker.enable = true; + hardware.steam-hardware.enable = true; + + + + systemd.targets.sleep.enable = false; + systemd.targets.suspend.enable = false; + systemd.targets.hibernate.enable = false; + systemd.targets.hybrid-sleep.enable = false; + # gaming stuff + + services.flatpak.enable = true; + services.sunshine = { + enable = true; + autoStart = true; + capSysAdmin = true; + openFirewall = true; + }; + hardware.graphics = { + enable32Bit = true; + enable = true; + }; + hardware.nvidia = { + modesetting.enable = true; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.production; + powerManagement.enable = false; + powerManagement.finegrained = false; + }; + virtualisation.docker.enableNvidia = true; + hardware.nvidia-container-toolkit.enable = true; + services.xserver.videoDrivers = [ "nvidia" ]; +} \ No newline at end of file diff --git a/nix/home-manager/ai-vm.home.nix b/nix/home-manager/ai-vm.home.nix new file mode 100644 index 0000000..f14a073 --- /dev/null +++ b/nix/home-manager/ai-vm.home.nix @@ -0,0 +1,117 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + vscode-fhs + gnome-software + gnome-tweaks + nvtopPackages.nvidia + nerd-fonts.fira-code + nerd-fonts.droid-sans-mono + ghostty + ]; + + nixpkgs.config.allowUnfree = true; + programs.ghostty = { + enable = true; + enableFishIntegration = true; + }; + fonts.fontconfig.enable = true; + dconf.enable = true; + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + "org/gnome/desktop/wm/keybindings" = { + toggle-maximized=["m"]; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + binding = "t"; + command = "ghostty"; + name = "terminal"; + }; + }; + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + }; + programs.fish = { + enable = true; + shellInit = '' +function commit + git add --all + git commit -m "$argv" + git push +end + +# have ctrl+backspace delete previous word +bind \e\[3\;5~ kill-word +# have ctrl+delete delete following word +bind \b backward-kill-word + +set -U fish_user_paths ~/.local/bin $fish_user_paths +#set -U fish_user_paths ~/.dotnet $fish_user_paths +#set -U fish_user_paths ~/.dotnet/tools $fish_user_paths + +export VISUAL=vim +export EDITOR="$VISUAL" +export DOTNET_WATCH_RESTART_ON_RUDE_EDIT=1 +export DOTNET_CLI_TELEMETRY_OPTOUT=1 +set -x LIBVIRT_DEFAULT_URI qemu:///system + ''; + }; + home.file = { + ".config/lazydocker/config.yml".text = '' +gui: + returnImmediately: true + screenMode: "half" + ''; + ".config/k9s/config.yaml".text = '' +k9s: + liveViewAutoRefresh: true + screenDumpDir: /home/alexm/.local/state/k9s/screen-dumps + refreshRate: 2 + maxConnRetry: 5 + readOnly: false + noExitOnCtrlC: false + ui: + enableMouse: false + headless: false + logoless: false + crumbsless: false + reactive: false + noIcons: false + defaultsToFullScreen: false + skipLatestRevCheck: false + disablePodCounting: false + shellPod: + image: busybox:1.35.0 + namespace: default + limits: + cpu: 100m + memory: 100Mi + imageScans: + enable: false + exclusions: + namespaces: [] + labels: {} + logger: + tail: 1000 + buffer: 5000 + sinceSeconds: -1 + textWrap: false + showTime: false + thresholds: + cpu: + critical: 90 + warn: 70 + memory: + critical: 90 + warn: 70 + namespace: + lockFavorites: false + ''; + }; +} \ No newline at end of file