mio-ops/profiles/desktop_common.nix
2024-12-04 15:30:47 +10:00

126 lines
3.3 KiB
Nix

# Common configuration for MIO desktops
{
inputs,
config,
pkgs,
...
}: {
imports = [
../profiles/ebooks.nix
../profiles/games-kids.nix
../profiles/host_common.nix
../profiles/daedalus.nix
../profiles/openssh.nix
../profiles/powerManagement.nix
../profiles/users-core.nix
../profiles/users.nix
];
# Common Desktop Packages
environment.systemPackages = with pkgs; [
brave # Privacy-oriented browser
chromium
element-desktop # A feature-rich client for Matrix.org
librewolf # Firefox fork, focused on privacy, security and freedom
gnome-tweaks # A tool to customize advanced GNOME 3 options
krita # A free and open source painting application
libreoffice-fresh
mplayer # A movie player that supports many video formats
nextcloud-client # Nextcloud desktop client
pwgen # Password generator
rsync
shotwell # Photo organizer
signal-desktop # Private, simple, and secure messenger
usbutils # Tools for working with USB devices, such as lsusb
xorg.libxcb # X C binding
];
networking.networkmanager.enable =
true; # Enables network support via NetworkManager.
# Enable common desktop services
services = {
acpid.enable =
true; # A daemon for delivering ACPI events to userspace programs
blueman.enable = true; # GTK-based Bluetooth Manager
devmon.enable = true; # Enable external device automounting.`
displayManager = {
defaultSession = "pantheon"; # Set GNOME as the default session
};
libinput = {
enable = true; # Enable touchpad support.
touchpad = {
tapping = true;
tappingButtonMap = "lrm"; # Set the touchpad button mappeing
};
};
udev.packages = [
pkgs.android-udev-rules # Android udev rules list
];
udisks2.enable = true; # Enable udisks2
pantheon = {
apps.enable = true;
contractor.enable = true;
};
xserver = {
enable = true;
desktopManager = {
gnome.enable = false; # Enable GNOME desktop environment
pantheon.enable = true; # Enable Pantheon desktop environment
};
displayManager = {
gdm.enable = false; # Enable the GNOME display manager
lightdm.greeters.pantheon.enable = true;
};
};
pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
};
};
security.rtkit.enable = true; # realtime scheduling for sound
# Configure common hardware settings
hardware = {
pulseaudio = {
enable = false;
};
bluetooth = {
enable = true; # Enable bluetooth
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
NoPlugin = "sap";
};
Policy = {AutoEnable = "true";};
};
};
graphics.enable = true;
};
# Configure libreWolf and Chromium
nixpkgs.config = {allowUnfree = true;};
programs = {
chromium = {
enable = true;
homepageLocation = "https://start.duckduckgo.com/";
};
};
# Groups to add
users.groups = {
audio.members = ["craige" "fiona" "hamish" "logan" "xander"];
libvirtd.members = ["craige" "fiona" "hamish" "logan" "xander"];
networkmanager.members = ["craige" "fiona" "hamish" "logan" "xander"];
};
}