From d843f0bf4cf27b33c6cf134c4bd3dfd4d646cbc8 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Tue, 12 Apr 2022 19:08:31 -0700 Subject: feat(wpcarro/ava): Support new machine ava is my new (NixOS!) work machine :) Change-Id: I1f089f00c02519d5d1d93d011f29075d53500e74 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5450 Reviewed-by: wpcarro Reviewed-by: tazjin Autosubmit: wpcarro Tested-by: BuildkiteCI --- ops/machines/all-systems.nix | 1 + users/wpcarro/nixos/ava/ava.el | 46 +++++++++++++++ users/wpcarro/nixos/ava/default.nix | 105 +++++++++++++++++++++++++++++++++++ users/wpcarro/nixos/ava/hardware.nix | 28 ++++++++++ users/wpcarro/nixos/default.nix | 7 ++- 5 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 users/wpcarro/nixos/ava/ava.el create mode 100644 users/wpcarro/nixos/ava/default.nix create mode 100644 users/wpcarro/nixos/ava/hardware.nix diff --git a/ops/machines/all-systems.nix b/ops/machines/all-systems.nix index 2536958c387f..73aec809385e 100644 --- a/ops/machines/all-systems.nix +++ b/ops/machines/all-systems.nix @@ -17,5 +17,6 @@ ]) ++ (with depot.users.wpcarro.nixos; [ + ava marcus ]) diff --git a/users/wpcarro/nixos/ava/ava.el b/users/wpcarro/nixos/ava/ava.el new file mode 100644 index 000000000000..77320b113e11 --- /dev/null +++ b/users/wpcarro/nixos/ava/ava.el @@ -0,0 +1,46 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'display) +(require 'window-manager) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Monitor Configuration +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(display-register primary + :output "HDMI-1" + :primary t + :coords (0 0) + :size (2560 1440) + :rate 30.0 + :dpi 96 + :rotate normal) + +(display-register secondary + :output "HDMI-2" + :primary nil + :coords (2561 0) + :size (2560 1440) + :rate 30.0 + :dpi 96 + :rotate normal) + +(display-arrangement main :displays (primary secondary)) + +(setq window-manager-named-workspaces + (list (make-window-manager-named-workspace + :label "Web Browsing" + :kbd "c" + :display display-secondary) + (make-window-manager-named-workspace + :label "Coding" + :kbd "d" + :display display-primary) + (make-window-manager-named-workspace + :label "Chatting" + :kbd "h" + :display display-secondary))) + +(window-manager-init :init-hook #'display-arrange-main) diff --git a/users/wpcarro/nixos/ava/default.nix b/users/wpcarro/nixos/ava/default.nix new file mode 100644 index 000000000000..238807adb91a --- /dev/null +++ b/users/wpcarro/nixos/ava/default.nix @@ -0,0 +1,105 @@ +{ depot, pkgs, lib, ... }: +{ ... }: + +let + inherit (depot.users) wpcarro; + + wpcarrosEmacs = wpcarro.emacs.nixos { + load = [ ./ava.el ]; + }; + + quasselClient = pkgs.quassel.override { + client = true; + enableDaemon = false; + monolithic = false; + }; +in +{ + imports = [ ./hardware.nix ]; + + # Use the TVL binary cache + tvl.cache.enable = true; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking = { + # The global useDHCP flag is deprecated, therefore explicitly set to false + # here. Per-interface useDHCP will be mandatory in the future, so this + # generated config replicates the default behaviour. + useDHCP = false; + hostName = "ava"; + networkmanager.enable = true; + interfaces.enp1s0.useDHCP = true; + interfaces.enp3s0.useDHCP = true; + interfaces.wlp2s0.useDHCP = true; + }; + + services = wpcarro.common.services // { + xserver = { + enable = true; + layout = "us"; + xkbOptions = "caps:escape"; + displayManager = { + # Give EXWM permission to control the session (from tazjin's setup). + sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +SI:localhost:$USER"; + lightdm.enable = true; + }; + windowManager.session = lib.singleton { + name = "exwm"; + start = "${wpcarrosEmacs}/bin/wpcarros-emacs"; + }; + }; + }; + + # Enable sound. + sound.enable = true; + hardware.pulseaudio.enable = true; + + users.mutableUsers = true; + users.users.wpcarro = { + isNormalUser = true; + extraGroups = [ + "networkmanager" + "wheel" + ]; + shell = pkgs.fish; + }; + + security.sudo.wheelNeedsPassword = false; + + fonts = { + fonts = with pkgs; [ + jetbrains-mono + ]; + + fontconfig = { + defaultFonts = { + monospace = [ "JetBrains Mono" ]; + }; + }; + }; + + programs = wpcarro.common.programs; + + environment.variables = { + EDITOR = "emacsclient"; + ALTERNATE_EDITOR = "emacs -q -nw"; + VISUAL = "emacsclient"; + }; + + environment.systemPackages = + wpcarro.common.shell-utils ++ + (with pkgs; [ + alacritty + firefox + google-chrome + pavucontrol + quasselClient + tdesktop + wpcarrosEmacs + xsecurelock + ]); + + system.stateVersion = "21.11"; +} diff --git a/users/wpcarro/nixos/ava/hardware.nix b/users/wpcarro/nixos/ava/hardware.nix new file mode 100644 index 000000000000..eb1fff3a8448 --- /dev/null +++ b/users/wpcarro/nixos/ava/hardware.nix @@ -0,0 +1,28 @@ +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/60d92789-c44e-4620-885d-1d81d0759f1d"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/C62C-9B32"; + fsType = "vfat"; + }; + + swapDevices = []; + + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +} diff --git a/users/wpcarro/nixos/default.nix b/users/wpcarro/nixos/default.nix index af98bb0ecd81..466b4a30c169 100644 --- a/users/wpcarro/nixos/default.nix +++ b/users/wpcarro/nixos/default.nix @@ -5,6 +5,8 @@ let systemFor = sys: (depot.ops.nixos.nixosFor sys).system; in { + avaSystem = systemFor depot.users.wpcarro.nixos.ava; + marcusSystem = systemFor depot.users.wpcarro.nixos.marcus; # Apply terraform updates and rebuild NixOS for diogenes. @@ -44,5 +46,8 @@ in ssh $target '${diogenes.osPath}/bin/switch-to-configuration switch' ''; - meta.ci.targets = [ "marcusSystem" ]; + meta.ci.targets = [ + "avaSystem" + "marcusSystem" + ]; } -- cgit 1.4.1