aboutsummaryrefslogtreecommitdiff
path: root/home/rices/finals/system.nix
blob: bd336888a01f38cd0d166127e6b6f4e21ac6852d (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
{
  pkgs,
  lib,
  ...
}: {
  # Desktop environment - Niri compositor
  programs.niri.enable = true;
  services.displayManager.defaultSession = "niri";

  # Keyboard layout - change to your preference
  services.xserver.xkb = {
    layout = "us";
  };

  # Polkit for Niri
  security.polkit.enable = true;
  systemd.user.services.niri-flake-polkit.enable = false;
  systemd.user.services.polkit-gnome-authentication-agent-1 = {
    description = "polkit-gnome-authentication-agent-1";
    wantedBy = ["graphical-session.target"];
    wants = ["graphical-session.target"];
    after = ["graphical-session.target"];
    serviceConfig = {
      Type = "simple";
      ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
      Restart = "on-failure";
      RestartSec = 1;
      TimeoutStopSec = 10;
    };
  };

  # Audio - Pipewire
  services.pipewire = {
    enable = true;
    alsa.enable = true;
    alsa.support32Bit = true;
    pulse.enable = true;
  };
  environment.systemPackages = with pkgs; [
    playerctl
    pulsemixer
  ];

  # XDG portals
  xdg.portal.extraPortals = [
    pkgs.xdg-desktop-portal-cosmic
  ];
  xdg.portal.config.common.default = [
    "gnome"
  ];

  # Fonts
  fonts = {
    packages = with pkgs; [
      nerd-fonts.fira-code
      noto-fonts-color-emoji
      inter
    ];
    fontDir.enable = true;
  };

  # Stylix - pick your scheme
  stylix = {
    enable = true;
    polarity = "dark";
    base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
    fonts = {
      sansSerif = {
        package = pkgs.inter;
        name = "Inter";
      };
      monospace = {
        package = pkgs.nerd-fonts.fira-code;
        name = "FiraCode Nerd Font";
      };
      emoji = {
        package = pkgs.noto-fonts-color-emoji;
        name = "Noto Color Emoji";
      };
    };
  };

  # Services
  services.upower.enable = true;
}