2024-02-08 20:53:22 +01:00
{
pkgs ,
lib ,
config ,
. . .
} : let
2024-01-22 22:50:51 +01:00
# TODO: make this configurable
homeUser = " s t e v e e j " ;
2024-02-08 20:53:22 +01:00
in {
2024-01-22 22:50:51 +01:00
services . xserver . serverFlagsSection = ''
Option " B l a n k T i m e " " 0 "
Option " S t a n d b y T i m e " " 0 "
Option " S u s p e n d T i m e " " 0 "
Option " O f f T i m e " " 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 ;
2024-02-08 20:53:22 +01:00
security . pam . services . swaylock = { } ;
2024-01-22 22:50:51 +01:00
# 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 = false ;
2024-01-22 22:45:42 +00:00
# keep the behaviour in < 1.17, which uses the first portal implementation found in lexicographical order, use the following:
config . common . default = " * " ;
2024-01-22 22:50:51 +01:00
extraPortals = [
pkgs . xdg-desktop-portal-wlr
pkgs . xdg-desktop-portal-gtk
# repoFlake.inputs.nixpkgs-wayland.packages.${pkgs.system}.xdg-desktop-portal-wlr
# (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 ;
2024-01-24 00:24:04 +00:00
security . pam . services . " a u t o v t @ t t y 1 " . enableGnomeKeyring = true ;
2024-01-22 22:50:51 +01:00
services . gnome . gnome-keyring . enable = true ;
2024-01-22 23:47:48 +00:00
2024-01-22 22:50:51 +01:00
# autologin steveej on tty1
2024-01-22 23:47:48 +00:00
# TODO: make user configurable
2024-01-22 22:50:51 +01:00
systemd . services . " a u t o v t @ t t y 1 " . description = " A u t o l o g i n a t t h e T T Y 1 " ;
2024-02-08 20:53:22 +01:00
systemd . services . " a u t o v t @ t t y 1 " . after = [ " s y s t e m d - l o g i n d . s e r v i c e " ] ; # without it user session not started and xorg can't be run from this tty
systemd . services . " a u t o v t @ t t y 1 " . wantedBy = [ " m u l t i - u s e r . t a r g e t " ] ;
2024-01-22 23:47:48 +00:00
systemd . services . " a u t o v t @ t t y 1 " . serviceConfig = {
ExecStart = [
" " # override upstream default with an empty ExecStart
" @ ${ pkgs . utillinux } / s b i n / a g e t t y a g e t t y - - l o g i n - p r o g r a m ${ pkgs . shadow } / b i n / l o g i n - - a u t o l o g i n s t e v e e j - - n o c l e a r % I $ T E R M "
] ;
Restart = " a l w a y s " ;
Type = " i d l e " ;
} ;
2024-01-24 00:24:04 +00:00
2024-02-08 20:53:22 +01:00
programs = let
steveejSwayOnTty1 = ''
if test $ ( id - - user steveej ) = $ ( id - u ) && test $ ( tty ) = " / d e v / t t y 1 " ; 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 ;
} ;
2024-01-22 22:50:51 +01:00
2024-01-22 23:47:48 +00:00
home-manager . users . " ${ homeUser } " = _ : {
2024-01-22 22:50:51 +01:00
imports = [
../../home-manager/profiles/sway-desktop.nix
] ;
} ;
}