Summary Files Commits Branches @commit @diff @stats
path: root / modules / personal / openbox-de.nix
blob: aa9a16b4c260a0589eed9e3fcfdb010957bc2f75 (plain) (blame)
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
{ pkgs, ... }: {
  environment.systemPackages = with pkgs; [
    # Essential libs
    dbus cairo libnotify gtk3 yad gnome.zenity gnome.gvfs gmtp at-spi2-atk
    # Main apps and their config apps
    # window manager, compositor, taskbar, notifications, app menu, lockscreen, session manager
    openbox lxappearance obconf picom nixpkgs-2305.tint2 dunst jgmenu i3lock-color lightdm lightdm-gtk-greeter
    # General X11 tools
    lxqt.lxqt-policykit xorg.xev xfontsel xorg.xmodmap xorg.xwininfo xorg.xprop clipnotify xdotool xautolock xcape xorg.setxkbmap xkbmon xorg.xhost xclip wmctrl
    menu-cache
    # Tray
    libappindicator networkmanagerapplet pnmixer
    # File openers
    evince gnome.eog nixpkgs-2305.gnome.file-roller cinnamon.nemo-with-extensions gnome.seahorse
    # System
    gnome.gnome-system-monitor udisks gnome.gnome-disk-utility baobab gnome.simple-scan
    # Theme
    nixpkgs-mint.cinnamon.mint-themes nixpkgs-mint.cinnamon.mint-y-icons oreo-black-bordered-cursor
    openbox-theme-collections openbox-blocks-dark

    xdg-desktop-portal-gtk xdg-desktop-portal-xapp
  ];

  security.polkit.enable = true;

  xdg.portal = {
    enable = true;
    configPackages = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-xapp ];
    config.common = {
      default = [ "gtk" "xapp" ];
      "org.freedesktop.impl.portal.Screenshot" = [ "xapp" ];
    };
  };

  programs = {
    dconf.enable = true;
    gnome-disks.enable = true;
  };

  services = {
    dbus.packages = with pkgs; [ gnome2.GConf ];
    udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];

    udisks2.enable = true; # gnome-disks disk access
    gnome.gnome-keyring.enable = true;
    gvfs.enable = true; # MTP (for nemo)

    logind.extraConfig = ''
      InhibitDelayMaxSec=1
      HoldoffTimeoutSec=1s
      HandlePowerKey=poweroff'';
  };

  services.xserver = {
    enable = true;
    # Window manager
    windowManager.openbox.enable = true;

    xautolock = {
      enable = true;
      time = 15;
      locker = "/home/kamen/.a/sys/lock.sh";
      extraOptions = [ "-detectsleep" "-secure" ];
    };
  };

  systemd.services = {
    lockscreen = {
      wantedBy = [ "sleep.target" ];
      before = [ "suspend.target" ];
      serviceConfig = {
        User = "kamen";
        Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" "DBUS_SESSION_BUS_ADDRESS=\"unix:path=/run/user/1000/bus\"" ];
        ExecStart = "/home/kamen/.a/sys/lock.sh";
      };
    };
  };

  systemd.user.services = {
    lxqt-policykit = {
      description = "lxqt-policykit runner";
      wantedBy = [ "graphical-session.target" ];
      wants = [ "graphical-session.target" ];
      after = [ "graphical-session.target" ];
      serviceConfig = {
        Type = "simple";
        ExecStart = "${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent";
        Restart = "on-failure";
        RestartSec = 1;
        TimeoutStopSec = 10;
      };
    };

    # This is kinda gross, because the xautolock service is already defined and configured
    # inside services.xserver.xautolock, but it's the only way I know
    xautolock.serviceConfig.Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" ];
  };
}