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