133 lines
3.3 KiB
Nix
133 lines
3.3 KiB
Nix
|
{ lib, config, pkgs, ... }:
|
||
|
{
|
||
|
options.labwc = {
|
||
|
enable = lib.mkEnableOption "Enable labwc window manager.";
|
||
|
useNonFree = lib.mkOption {
|
||
|
default = false;
|
||
|
example = true;
|
||
|
description = "Whether to enable non-free software in the labwc config";
|
||
|
};
|
||
|
installGaming = lib.mkOption {
|
||
|
default = false;
|
||
|
example = true;
|
||
|
description = "Whether to install gaming software on the system.";
|
||
|
};
|
||
|
systemPackages = lib.mkOption {
|
||
|
default = [];
|
||
|
description = "Add any additional packages desired. Merged with labwc defaults.";
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
###
|
||
|
## Configuration
|
||
|
###
|
||
|
config = lib.mkIf config.labwc.enable {
|
||
|
|
||
|
programs.sway.enable = true;
|
||
|
|
||
|
nixpkgs.config.allowUnfree = config.labwc.useNonFree;
|
||
|
# For R2ModMan
|
||
|
# nixpkgs.config.permittedInsecurePackages = [
|
||
|
# "electron-25.9.0"
|
||
|
# ];
|
||
|
|
||
|
###
|
||
|
## XDG portal setup
|
||
|
###
|
||
|
xdg.portal = {
|
||
|
config = {
|
||
|
common = {
|
||
|
default = [
|
||
|
"wlr"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
extraPortals = with pkgs; [
|
||
|
xdg-desktop-portal-gtk
|
||
|
];
|
||
|
wlr.enable = true;
|
||
|
enable = true;
|
||
|
};
|
||
|
xdg.sounds.enable = true;
|
||
|
|
||
|
###
|
||
|
## System Packages
|
||
|
###
|
||
|
environment.systemPackages = with pkgs; lib.lists.flatten [
|
||
|
[
|
||
|
bash
|
||
|
foot
|
||
|
git
|
||
|
glib # gsettings
|
||
|
grim
|
||
|
labwc
|
||
|
libnotify
|
||
|
mako
|
||
|
ncspot
|
||
|
networkmanagerapplet
|
||
|
pavucontrol
|
||
|
slurp
|
||
|
swaylock
|
||
|
swayidle
|
||
|
swww
|
||
|
wl-clipboard
|
||
|
waybar
|
||
|
wdisplays
|
||
|
wofi
|
||
|
xdg-utils
|
||
|
zsh
|
||
|
# Fonts
|
||
|
]
|
||
|
config.labwc.systemPackages
|
||
|
# (lib.mkIf config.labwc.installGaming [
|
||
|
# pkgs.lutris
|
||
|
# ])
|
||
|
];
|
||
|
|
||
|
environment.loginShellInit = ''
|
||
|
[[ "$(tty)" == /dev/tty1 ]] && labwc
|
||
|
'';
|
||
|
# Thunar config
|
||
|
programs.thunar = {
|
||
|
enable = true;
|
||
|
plugins = with pkgs.xfce; [
|
||
|
thunar-archive-plugin
|
||
|
thunar-volman
|
||
|
];
|
||
|
};
|
||
|
programs.file-roller.enable = true;
|
||
|
programs.xfconf.enable = true;
|
||
|
|
||
|
programs.zsh.enable = true;
|
||
|
programs.steam.enable = config.labwc.installGaming;
|
||
|
|
||
|
# kdeconnect setup
|
||
|
programs.kdeconnect.enable = true;
|
||
|
|
||
|
###
|
||
|
## Services
|
||
|
###
|
||
|
services.gvfs.enable = true; # thunar functionalities
|
||
|
services.openssh.enable = true;
|
||
|
services.dbus.enable = true;
|
||
|
services.pipewire = {
|
||
|
enable = true;
|
||
|
alsa.enable = true;
|
||
|
pulse.enable = true;
|
||
|
};
|
||
|
|
||
|
###
|
||
|
## Misc
|
||
|
###
|
||
|
sound.enable = true;
|
||
|
# Necessary for home-manager labwc setup
|
||
|
security.polkit.enable = true;
|
||
|
|
||
|
hardware.opengl = {
|
||
|
enable = true;
|
||
|
driSupport = true;
|
||
|
};
|
||
|
};
|
||
|
}
|