131 lines
3.7 KiB
Nix
131 lines
3.7 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
# TODO: make this configurable
|
|
homeUser = "steveej";
|
|
in {
|
|
services.xserver.serverFlagsSection = ''
|
|
Option "BlankTime" "0"
|
|
Option "StandbyTime" "0"
|
|
Option "SuspendTime" "0"
|
|
Option "OffTime" "0"
|
|
'';
|
|
|
|
hardware.opengl.enable = true;
|
|
|
|
services.gvfs = {
|
|
enable = true;
|
|
package = lib.mkForce pkgs.gnome3.gvfs;
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
# provides a default authentification client for policykit
|
|
lxqt.lxqt-policykit
|
|
];
|
|
|
|
# required by swaywm
|
|
security.polkit.enable = true;
|
|
security.pam.services.swaylock = {};
|
|
|
|
# test these on https://mozilla.github.io/webrtc-landing/gum_test.html
|
|
xdg.portal = {
|
|
enable = true;
|
|
# FIXME: `true` breaks xdg-open from alacritty:
|
|
# $ xdg-open "https://github.com/"
|
|
# Error: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface “org.freedesktop.portal.OpenURI” on object at path /org/freedesktop/portal/desktop
|
|
xdgOpenUsePortal = true;
|
|
|
|
wlr = {
|
|
enable = true;
|
|
settings = {
|
|
screencast = {
|
|
chooser_type = "dmenu";
|
|
# display the output as a list in favor of the default mouse selection
|
|
chooser_cmd = lib.getExe (pkgs.writeShellApplication {
|
|
name = "chooser_cmd";
|
|
runtimeInputs = [
|
|
pkgs.sway
|
|
pkgs.jq
|
|
pkgs.fuzzel
|
|
pkgs.gnused
|
|
];
|
|
text = ''
|
|
swaymsg -t get_outputs | jq '.[] | "\(.name)@\(.current_mode.width)x\(.current_mode.height) on \(.model)"' | sed 's/"//g' | fuzzel -d | sed 's/@.*//'
|
|
'';
|
|
});
|
|
max_fps = 30;
|
|
};
|
|
};
|
|
};
|
|
|
|
# keep the behaviour in < 1.17, which uses the first portal implementation found in lexicographical order, use the following:
|
|
config = {
|
|
common = {
|
|
default = [
|
|
"wlr"
|
|
"gtk"
|
|
];
|
|
};
|
|
};
|
|
|
|
extraPortals = [
|
|
# repoFlake.inputs.nixpkgs-wayland.packages.${pkgs.system}.xdg-desktop-portal-wlr
|
|
|
|
pkgs.xdg-desktop-portal-gtk
|
|
# (pkgs.xdg-desktop-portal-gtk.override (_: {
|
|
# buildPortalsInGnome = false;
|
|
# }))
|
|
];
|
|
};
|
|
|
|
# rtkit is optional but recommended
|
|
security.rtkit.enable = true;
|
|
services.pipewire = {
|
|
audio.enable = true;
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
# If you want to use JACK applications, uncomment this
|
|
#jack.enable = true;
|
|
};
|
|
|
|
security.pam.services.getty.enableGnomeKeyring = true;
|
|
security.pam.services."autovt@tty1".enableGnomeKeyring = true;
|
|
services.gnome.gnome-keyring.enable = true;
|
|
|
|
# autologin steveej on tty1
|
|
# TODO: make user configurable
|
|
systemd.services."autovt@tty1".description = "Autologin at the TTY1";
|
|
systemd.services."autovt@tty1".after = ["systemd-logind.service"]; # without it user session not started and xorg can't be run from this tty
|
|
systemd.services."autovt@tty1".wantedBy = ["multi-user.target"];
|
|
systemd.services."autovt@tty1".serviceConfig = {
|
|
ExecStart = [
|
|
"" # override upstream default with an empty ExecStart
|
|
"@${pkgs.utillinux}/sbin/agetty agetty --login-program ${pkgs.shadow}/bin/login --autologin steveej --noclear %I $TERM"
|
|
];
|
|
Restart = "always";
|
|
Type = "idle";
|
|
};
|
|
|
|
programs = let
|
|
steveejSwayOnTty1 = ''
|
|
if test $(id --user steveej) = $(id -u) && test $(tty) = "/dev/tty1"; then
|
|
exec sway
|
|
fi
|
|
'';
|
|
in {
|
|
bash.loginShellInit = steveejSwayOnTty1;
|
|
# TODO: only do this when zsh is enabled. first naiv attempt lead infinite recursion
|
|
zsh.loginShellInit = steveejSwayOnTty1;
|
|
};
|
|
|
|
home-manager.users."${homeUser}" = _: {
|
|
imports = [
|
|
../../home-manager/profiles/sway-desktop.nix
|
|
];
|
|
};
|
|
}
|