Configuration for my NixOS based systems and Home Manager
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}