nixos-config/configuration-desktop.nix

259 lines
7.6 KiB
Nix

{ config, lib, pkgs, ... }:
let
swaylockCmd = "swaylock -c 1a1b26";
in
{
networking.networkmanager.enable = true;
fonts.packages = builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
services = {
xserver.enable = true;
printing.enable = true;
pipewire = {
enable = true;
pulse.enable = true;
};
libinput.enable = true;
desktopManager.plasma6 = {
enable = true;
};
blueman.enable = true;
};
# sway stuff
programs.ydotool.enable = true;
users.users.audrey.extraGroups = [ "ydotool" ];
programs.regreet.enable = true;
services.greetd.settings = {
default_session.command = "${pkgs.dbus}/bin/dbus-run-session ${lib.getExe config.programs.sway.package} -c /etc/sway/greeter-config";
};
programs.regreet.settings = {
background.path = "/home/audrey/Pictures/smotsgamed.jpg";
background.fit = "Fill";
GTK.application_prefer_dark_theme = true;
};
environment.etc."sway/greeter-config".source = lib.mkForce (pkgs.writeText "sway-greeter-config" ''
exec "${lib.getExe config.programs.regreet.package}; swaymsg exit"
output * scale 2
input type:keyboard {
xkb_options "caps:escape"
}
input type:touchpad {
dwt enabled
dwtp enabled
tap enabled
tap_button_map lrm
natural_scroll enabled
}
# Brightness
bindsym --locked XF86MonBrightnessDown exec light -U 10
bindsym --locked XF86MonBrightnessUp exec light -A 10
blur enable
corner_radius 8
shadows enable
shadow_blur_radius 8
'');
programs.uwsm = {
enable = true;
waylandCompositors.sway = {
prettyName = "Sway";
binPath = "/run/current-system/sw/bin/sway";
};
};
programs.sway = {
enable = true;
package = pkgs.swayfx;
wrapperFeatures.gtk = true;
xwayland.enable = true;
extraPackages = with pkgs; [
swaylock
swayr
pavucontrol
libnotify
wdisplays
playerctl
grim
slurp
wl-clipboard
wlogout
fuzzel
gsettings-desktop-schemas
adwaita-icon-theme
glib
kdePackages.kwallet
];
extraSessionCommands = ''
export ELECTRON_OZONE_PLATFORM_HINT=wayland
export SDL_VIDEODRIVER=wayland
export QT_QPA_PLATFORM=wayland-egl
export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
'';
};
environment.sessionVariables.XDG_DATA_DIRS = [ "/run/current-system/sw/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" ];
programs.light.enable = lib.mkIf config.programs.sway.enable true;
security.pam.services.swaylock = {};
security.pam.loginLimits = [
{ domain = "@users"; item = "rtprio"; type = "-"; value = 1; }
];
security.pam.services = {
greetd.kwallet = {
enable = true;
package = pkgs.kdePackages.kwallet-pam;
forceRun = true;
};
greetd.rules.session.kwallet.settings.auto_start = true;
};
programs.dconf.enable = true;
systemd.user.targets.graphical-environment = lib.mkIf config.programs.sway.enable { };
systemd.user.services.kanshi = lib.mkIf config.programs.sway.enable {
description = "Monitor hotswap daemon";
serviceConfig = {
Type = "simple";
ExecStart = lib.getExe pkgs.kanshi;
};
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.swayidle = lib.mkIf config.programs.sway.enable {
description = "Idle lock + sleep manager";
serviceConfig = {
Type = "simple";
ExecStart = ''${lib.getExe pkgs.swayidle} -w \
timeout 300 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
timeout 360 '${swaylockCmd} -f' \
timeout 600 'systemctl suspend' before-sleep '${swaylockCmd} -f'
'';
};
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.waybar = lib.mkIf config.programs.sway.enable {
description = "Desktop status bar";
serviceConfig = {
Type = "simple";
ExecStart = lib.getExe pkgs.waybar;
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.networkmanagerapplet = lib.mkIf config.programs.sway.enable {
description = "Networkmanager applet";
serviceConfig = {
Type = "simple";
ExecStart = lib.getExe pkgs.networkmanagerapplet;
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.swaynotificationcenter = lib.mkIf config.programs.sway.enable {
description = "Sway Notification Center";
serviceConfig = {
Type = "simple";
ExecStart = lib.getExe pkgs.swaynotificationcenter;
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.pasystray = lib.mkIf config.programs.sway.enable {
description = "Pulseaudio system tray icon";
serviceConfig = {
Type = "simple";
ExecStart = "${lib.getExe pkgs.pasystray} --notify source --notify sink -m 100";
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.kdeconnect-indicator = lib.mkIf config.programs.sway.enable {
description = "KDE connect indicator";
serviceConfig = {
Type = "simple";
ExecStart = "${lib.getBin pkgs.kdePackages.kdeconnect-kde}/bin/kdeconnect-indicator";
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
systemd.user.services.swayr = lib.mkIf config.programs.sway.enable {
description = "Sway MRU window switcher";
serviceConfig = {
Type = "simple";
ExecStart = "${lib.getBin pkgs.swayr}/bin/swayrd";
};
path = [ "/run/current-system/sw" ];
partOf = [ "graphical-environment.target" ];
wantedBy = [ "graphical-environment.target" ];
};
virtualisation.docker = {
enable = true;
storageDriver = "zfs";
logDriver = "journald";
daemon.settings = {
insecure-registries = [ "docker.shell.phish" "registry.finals.2025.nautilus.institute:5000" ];
};
};
programs = {
chromium.enable = true;
firefox.enable = true;
kdeconnect.enable = true;
partition-manager.enable = true;
wireshark.enable = true;
wireshark.package = pkgs.wireshark;
foot.enable = true;
obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
obs-livesplit-one
];
};
};
environment.sessionVariables.TERMINAL = "foot";
environment.systemPackages = with pkgs; [
dino
discord
element-desktop
signal-desktop
slack
zotero
via
dwarfdump
kdePackages.plasma-thunderbolt
];
systemd.tmpfiles.settings.usersetup."/home/audrey/Downloads"."e!" = {
user = "audrey";
group = "users";
mode = "0700";
age = "1d";
};
systemd.services.sysfs-settings = {
description = "Set desktop sysfs tunables";
script = ''
# https://bugzilla.kernel.org/show_bug.cgi?id=219112
test "$(cat /sys/module/kvm/parameters/nx_huge_pages)" = "never" && exit 0 || true
echo "never" | tee /sys/module/kvm/parameters/nx_huge_pages
'';
before = [ "boot-complete.target" ];
};
hardware.keyboard.qmk.enable = true;
services.udev.packages = [ pkgs.via ];
}