234 lines
6.3 KiB
Nix
234 lines
6.3 KiB
Nix
{ pkgs, username, ... }:
|
|
{
|
|
nixpkgs.config.chromium.commandLineArgs = "--password-store='gnome-libsecret' --enable-features=UseOzonePlatform --ozone-platform=wayland";
|
|
hardware.bluetooth.enable = true;
|
|
networking.networkmanager.enable = true;
|
|
environment = {
|
|
sessionVariables = {
|
|
NIXOS_OZONE_WL = "1";
|
|
MOZ_ENABLE_WAYLAND = "1";
|
|
WEBKIT_DISABLE_COMPOSITING_MODE = "1";
|
|
MPLBACKEND = "TkAgg";
|
|
GDK_BACKEND = "wayland,x11";
|
|
XDG_SESSION_TYPE = "wayland";
|
|
QT_QPA_PLATFORM = "wayland";
|
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
};
|
|
systemPackages = with pkgs; [
|
|
libsecret
|
|
libnotify
|
|
xdg-utils
|
|
hunspell
|
|
hunspellDicts.en_GB-large
|
|
wl-clipboard
|
|
overskride
|
|
grim
|
|
slurp
|
|
swappy
|
|
gnome.nautilus
|
|
libreoffice
|
|
evince
|
|
image-roll
|
|
imagemagick
|
|
clapper
|
|
g4music
|
|
ffmpeg
|
|
picard
|
|
whipper
|
|
remmina
|
|
fractal
|
|
webcord
|
|
signal-desktop
|
|
whatsapp-for-linux
|
|
teams-for-linux
|
|
twinkle
|
|
nomachine-client
|
|
];
|
|
};
|
|
security = {
|
|
polkit.enable = true;
|
|
pam.loginLimits = [
|
|
{
|
|
domain = "@users";
|
|
item = "rtprio";
|
|
type = "-";
|
|
value = 1;
|
|
}
|
|
];
|
|
};
|
|
programs = {
|
|
dconf.enable = true;
|
|
noisetorch.enable = true;
|
|
seahorse.enable = true;
|
|
file-roller.enable = true;
|
|
hyprland.enable = true;
|
|
xwayland.enable = true;
|
|
};
|
|
gtk.iconCache.enable = true;
|
|
qt = {
|
|
enable = true;
|
|
style = "adwaita";
|
|
platformTheme = "gnome";
|
|
};
|
|
services = {
|
|
gnome.gnome-keyring.enable = true;
|
|
flatpak.enable = true;
|
|
printing.enable = true;
|
|
tumbler.enable = true;
|
|
udisks2.enable = true;
|
|
gnome.sushi.enable = true;
|
|
gvfs = {
|
|
enable = true;
|
|
package = pkgs.gnome3.gvfs;
|
|
};
|
|
kanata = {
|
|
enable = true;
|
|
keyboards.main = {
|
|
config = builtins.readFile ./kanata.kbd;
|
|
extraDefCfg = "process-unmapped-keys yes";
|
|
};
|
|
};
|
|
pipewire = {
|
|
enable = true;
|
|
pulse.enable = true;
|
|
alsa = {
|
|
enable = true;
|
|
support32Bit = true;
|
|
};
|
|
};
|
|
greetd = {
|
|
enable = true;
|
|
settings =
|
|
let
|
|
default_session.command = "Hyprland";
|
|
in
|
|
{
|
|
inherit default_session;
|
|
initial_session = {
|
|
inherit (default_session) command;
|
|
user = username;
|
|
};
|
|
};
|
|
};
|
|
xserver = {
|
|
enable = true;
|
|
xkb.layout = "gb";
|
|
};
|
|
};
|
|
xdg.portal = {
|
|
enable = true;
|
|
config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes
|
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
};
|
|
home-manager.users.${username} =
|
|
{
|
|
config,
|
|
pkgs,
|
|
osConfig,
|
|
...
|
|
}:
|
|
{
|
|
imports = [
|
|
./home/hyprland.nix
|
|
./home/terminal/default.nix
|
|
./home/browser/firefox.nix
|
|
./home/emacs/default.nix
|
|
./home/email/default.nix
|
|
./home/calendar/default.nix
|
|
./home/password-store/default.nix
|
|
];
|
|
home.file.${config.gtk.gtk2.configLocation}.force = true;
|
|
services = {
|
|
syncthing.enable = true;
|
|
gammastep = {
|
|
inherit (osConfig.location) latitude longitude provider;
|
|
enable = true;
|
|
tray = true;
|
|
};
|
|
};
|
|
gtk = {
|
|
enable = true;
|
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
|
iconTheme = {
|
|
package = (pkgs.papirus-icon-theme.override { color = "cyan"; });
|
|
name = if config.lib.stylix.scheme.variant == "light" then "Papirus-Light" else "Papirus-Dark";
|
|
};
|
|
};
|
|
stylix.targets.gtk.extraCss = with config.lib.stylix.scheme.withHashtag; ''
|
|
@define-color accent_color ${base0C-hex};
|
|
@define-color accent_bg_color ${base0C-hex};
|
|
'';
|
|
xdg = {
|
|
mime.enable = true;
|
|
mimeApps =
|
|
let
|
|
defaultApplications = import ./mimeapps.nix;
|
|
in
|
|
{
|
|
enable = true;
|
|
inherit defaultApplications;
|
|
associations.added = defaultApplications;
|
|
};
|
|
userDirs = {
|
|
enable = true;
|
|
createDirectories = true;
|
|
extraConfig = {
|
|
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects";
|
|
};
|
|
};
|
|
configFile = {
|
|
# Stop programs from overriding mimeapps
|
|
"mimeapps.list".force = true;
|
|
# Ensure GTK config is set
|
|
"gtk-3.0/gtk.css".force = true;
|
|
"gtk-3.0/settings.ini".force = true;
|
|
"gtk-4.0/gtk.css".force = true;
|
|
"gtk-4.0/settings.ini".force = true;
|
|
# Set Swappy config so that it saves to Screenshots directory
|
|
"swappy/config".text = ''
|
|
[Default]
|
|
save_dir=${config.xdg.userDirs.pictures}/Screenshots/
|
|
save_filename_format=swappy-%Y%m%d-%H%M%S.png
|
|
show_panel=false
|
|
line_size=5
|
|
text_size=${toString config.stylix.fonts.sizes.desktop}
|
|
text_font=${config.stylix.fonts.sansSerif.name}
|
|
paint_mode=brush
|
|
early_exit=false
|
|
fill_shape=false
|
|
'';
|
|
# WhatsApp config
|
|
"whatsapp-for-linux/settings.conf" = {
|
|
force = true;
|
|
text = ''
|
|
[web]
|
|
allow-permissions=true
|
|
hw-accel=2
|
|
|
|
[general]
|
|
notification-sounds=true
|
|
close-to-tray=true
|
|
start-in-tray=true
|
|
'';
|
|
};
|
|
# Teams config
|
|
"teams-for-linux/config.json" = {
|
|
force = true;
|
|
text = builtins.toJSON {
|
|
awayOnSystemIdle = true;
|
|
closeAppOnCross = false;
|
|
followSystemTheme = true;
|
|
notificationMethod = "electron";
|
|
optInTeamsV2 = true;
|
|
spellCheckerLanguages = [ "en_GB" ];
|
|
};
|
|
};
|
|
# Autostart some programs
|
|
"autostart/signal-desktop.desktop".source = "${pkgs.signal-desktop}/share/applications/signal-desktop.desktop";
|
|
"autostart/com.github.eneshecan.WhatsAppForLinux.desktop".source = "${pkgs.whatsapp-for-linux}/share/applications/com.github.eneshecan.WhatsAppForLinux.desktop";
|
|
};
|
|
};
|
|
};
|
|
}
|