Configuration for my NixOS based systems and Home Manager
at othinus 102 lines 2.5 kB view raw
1{ pkgs, ... }: let 2 unstable = import <nixos-unstable> { }; 3in { 4 # Enable the X11 windowing system. 5 services.xserver = { 6 enable = true; 7 videoDrivers = ["amdgpu"]; 8 }; 9 10 # Configure keymap in X11 11 # services.xserver.xkb.layout = "us"; 12 # services.xserver.xkb.options = "eurosign:e,caps:escape"; 13 14 # Enable CUPS to print documents. 15 # services.printing.enable = true; 16 17 # Enable sound. 18 security.rtkit.enable = true; 19 services.pipewire = { 20 enable = true; 21 alsa.enable = true; 22 alsa.support32Bit = true; 23 pulse.enable = true; 24 wireplumber.enable = true; 25 }; 26 27 # Graphics and parallel compute configuration 28 hardware.opengl = { 29 enable = true; 30 driSupport = true; 31 extraPackages = with pkgs; [ 32 # TODO: figure out why this doesn't work 33 # Looks like it requires unfree 34 # rocmPackages.clr.icd 35 amdvlk 36 libva 37 mesa.drivers 38 rocmPackages.clr.icd 39 ]; 40 }; 41 42 43 44 # Enable touchpad support (enabled default in most desktopManager). 45 # services.xserver.libinput.enable = true; 46 47 # Fonts 48 fonts.packages = with pkgs; [ 49 fira-code 50 fira-code-symbols 51 noto-fonts 52 noto-fonts-cjk 53 noto-fonts-emoji 54 noto-fonts-extra 55 (nerdfonts.override { fonts = ["FiraCode"]; }) 56 ]; 57 58 # Polkit is a dependency of Sway. It's responsible for handling security policies 59 security.polkit.enable = true; 60 61 # Enable the sway window manager 62 programs.sway = { 63 enable = true; 64 package = unstable.sway; 65 wrapperFeatures.gtk = true; 66 }; 67 # Use greetd as the displaymanager 68 #services.xserver.displayManager.greetd.enable = true; 69 #services.xserver.displayManager.lightdm.enable = false; 70 services.xserver.displayManager.sddm.enable = true; 71 services.xserver.displayManager.defaultSession = "none+i3"; 72 services.xserver.displayManager.autoLogin = { 73 enable = true; 74 user = "noah"; 75 }; 76 77 # i3, for when I need XOrg 78 services.xserver.windowManager.i3 = { 79 enable = true; 80 extraPackages = with pkgs; [ 81 dmenu 82 i3status 83 i3lock 84 i3blocks 85 ]; 86 }; 87 88 xdg.portal = { 89 enable = true; 90 wlr.enable = true; 91 extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; 92 }; 93 xdg.mime = { 94 enable = true; 95 defaultApplications = { 96 "x-scheme-handler/http" = "org.firefox.firefox.desktop"; 97 "x-scheme-handler/https" = "org.firefox.firefox.desktop"; 98 }; 99 }; 100 services.dbus.enable = true; 101 services.gnome.gnome-keyring.enable = true; 102}