237 lines
6.7 KiB
Nix
237 lines
6.7 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.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
|
|
pavucontrol
|
|
pasystray
|
|
libnotify
|
|
wdisplays
|
|
playerctl
|
|
grim
|
|
slurp
|
|
wl-clipboard
|
|
wlogout
|
|
fuzzel
|
|
gsettings-desktop-schemas
|
|
adwaita-icon-theme
|
|
glib
|
|
kdePackages.kwallet
|
|
swaynotificationcenter
|
|
];
|
|
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.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" ];
|
|
};
|
|
|
|
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.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 ];
|
|
}
|