summaryrefslogtreecommitdiff
path: root/modules/sway.nix
blob: 034eb3a8dfe0897837a0d55eee7b7a222d588f20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# General Desktop-related config
{ config, pkgs, ... }:
{
  environment.systemPackages = with pkgs; [
    firefox-wayland
    wl-clipboard
    pulseaudioFull
    screen-message
    qbittorrent
    dino
    tdesktop
    signal-desktop
    gajim
    imv
    swayimg
    mpv
    zathura
    brightnessctl
    pulsemixer
    cmus
    termusic
    gsettings-desktop-schemas
    xdg-utils
    nextcloud-client
    foot
    qt5.qtwayland
    bashmount
    (xfce.thunar.override { thunarPlugins = with xfce; [ thunar-volman thunar-archive-plugin ]; })
    audacity
    yt-dlp
    tor-browser-bundle-bin
    ffmpeg-full
  ];

  #on the desktop, we need nice fonts ^^
  fonts.fonts = with pkgs; [
    monoid
    font-awesome
    dejavu_fonts
    julia-mono
    uw-ttyp0
    gohufont
    spleen
    terminus_font
    creep
    corefonts
    dina-font
    fira
    fira-mono
    hack-font
    liberation_ttf
    noto-fonts
    noto-fonts-cjk
    noto-fonts-emoji
    noto-fonts-extra
    proggyfonts
    symbola
    open-sans
    twemoji-color-font
    twitter-color-emoji
    iosevka
  ];

  fonts.enableDefaultFonts = true;
  fonts.fontconfig = {
    enable = true;
    allowBitmaps = true;
    useEmbeddedBitmaps = true;
    defaultFonts.emoji = [
      "Noto Color Emoji"
      "Twitter Color Emoji"
    ];
  };

  # Enable sound.
  security.rtkit.enable = true;
  hardware.pulseaudio = {
    enable = false;
    zeroconf.discovery.enable = true;
    extraClientConf = ''
      autospawn=yes
    '';
  };

  services.pipewire = {
    enable = true;
    alsa.enable = true;
    pulse.enable = true;
  };

  hardware.bluetooth = {
    enable = true;
    package = pkgs.bluez;
  };

  programs.zsh.vteIntegration = true;
  programs.bash.vteIntegration = true;
  services.upower.enable = true;

  services.acpid.enable = true;
  programs.light.enable = true;

  services.blueman.enable = true;

  programs.xwayland.enable = true;
  programs.sway = {
    enable = true;
    wrapperFeatures.gtk = true;
    extraSessionCommands = ''
      export SDL_VIDEODRIVER=wayland
      export QT_QPA_PLATFORM=wayland-egl
      export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
      export QT_QPA_PLATFORMTHEME="gnome"
      export QT_STYLE_OVERRIDE="adwaita-dark"
    '';
    extraPackages = with pkgs; [
      alacritty
      pamixer
      swaylock
      graphicsmagick
      swayidle
      wl-clipboard
      mako
      foot
      rofi-wayland
      grim
      slurp
      gnome.adwaita-icon-theme
      i3status-rust
      wlsunset
    ];
  };
  environment.sessionVariables = { GTK_THEME = "Adwaita:dark"; };
  xdg.portal = {
    enable = true;
    wlr.enable = true;
    extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
  };

  services.udisks2.enable = true;
  environment.shellAliases = {
    # mounting shit
    mnt = "udisksctl mount -b";
    umnt = "udisksctl unmount -b";
    unlock = "udisksctl unlock -b";
    lock = "udisksctl lock -b";
    # easier navigation
    pwc = "pwd|wl-copy";
    cdp = "cd $(wl-paste)";
  };

  qt = {
    enable = true;
    platformTheme = "gnome";
    style = "adwaita-dark";
  };

  services.gnome.gnome-keyring.enable = true;

  # required to autounlock gnome-keyring
  services.xserver = {
    enable = true;
    displayManager.gdm = {
      enable = true;
      wayland = true;
    };
  };
  programs.gnupg.agent.pinentryFlavor = "gnome3";
}