nix-infra/common/fragments/graphical/default.nix

256 lines
5.9 KiB
Nix
Raw Normal View History

2023-03-26 16:33:03 +00:00
{ pkgs, config, lib, ... }: {
imports = [
./bspwm.nix
./picom.nix
./audio.nix
2023-03-26 16:33:03 +00:00
./polybar.nix
2023-03-27 15:21:43 +00:00
./dunst.nix
2023-04-07 16:20:16 +00:00
./rofi.nix
2023-03-26 16:33:03 +00:00
./iosevka.nix
./kitty.nix
./element.nix
2023-04-07 16:20:16 +00:00
./url-eater.nix
2023-06-01 17:07:54 +00:00
./spotify.nix
2023-03-26 16:33:03 +00:00
];
# User packages
users.users.agatha.packages = with pkgs; [
2023-06-01 17:07:54 +00:00
blueberry
2023-03-26 16:33:03 +00:00
brightnessctl
broot
2023-06-01 17:07:54 +00:00
clipmenu
2023-03-26 16:33:03 +00:00
colmena
element-desktop
ffmpeg
2023-03-26 16:33:03 +00:00
flameshot
gimp
2023-03-27 15:21:43 +00:00
glib
2023-03-26 16:33:03 +00:00
gnome.eog
gnome.file-roller
gnome.gnome-calendar
gnome.gnome-control-center
gnome.gnome-disk-utility
gnome.gnome-font-viewer
gnome.nautilus
gnome.totem
hyperfine
lxappearance
magic-wormhole
neofetch
2023-06-01 17:07:54 +00:00
nil
2023-03-26 16:33:03 +00:00
nitrogen
2023-06-01 17:07:54 +00:00
obs-studio
obsidian
2023-03-26 16:33:03 +00:00
pfetch
pridefetch
2023-06-01 17:07:54 +00:00
prismlauncher
2023-03-26 16:33:03 +00:00
rofi-calc
rofimoji
tdesktop
wireguard-tools
xdg-utils
2023-03-27 15:21:43 +00:00
xdotool
2023-06-01 17:07:54 +00:00
yubioath-flutter
2023-06-20 15:19:03 +00:00
bspm
polybar-spotify
2023-03-26 16:33:03 +00:00
];
# Brightness/volume keys
users.users.agatha.extraGroups = [ "video" ];
location = {
latitude = 49.0;
longitude = 8.4;
};
services.redshift = {
enable = true;
brightness.night = "0.8";
};
2023-03-26 16:33:03 +00:00
services.xserver = {
enable = true;
displayManager = {
gdm.enable = true;
# gdm.wayland = true;
sessionPackages = [ pkgs.sway ];
session = [{
manage = "window";
name = "bspwm";
start = let cfg = config.home-manager.users.agatha;
in ''
${cfg.services.sxhkd.package}/bin/sxhkd ${
toString cfg.services.sxhkd.extraOptions
} &
${cfg.xsession.windowManager.bspwm.package}/bin/bspwm -c ${cfg.xdg.configHome}/bspwm/bspwmrc
'';
}];
};
# Layout overrides
layout = lib.mkForce "eu,de(qwerty),ua,ru";
xkbOptions = "ctrl:nocaps,compose:rctrl";
2023-06-01 17:07:54 +00:00
libinput.enable = true;
2023-03-26 16:33:03 +00:00
};
home-manager.users.agatha = {
# Compose key sequences
home.file.".XCompose".text = ''
include "%L"
<Multi_key> <l> <f> : "( ͡° ͜ʖ ͡°)"
<Multi_key> <s> <f> : "¯\\_()_/¯"
<Multi_key> <g> <f> : " _ "
<Multi_key> <B> <B> : "🅱"
<Multi_key> <o> <asterisk> : ""
<Multi_key> <h> <r> : ""
<Multi_key> <v> <v> : ""
<Multi_key> <v> <period> <v> : ""
<Multi_key> <space> <space> : ""
<Multi_key> <s> <0> : "§"
<Multi_key> <b><l> : ""
<Multi_key> <h><s> : ""
<Multi_key> <s><r> : ""
<Multi_key> <t><r> : " trans rights uwu"
<Multi_key> <w><apostrophe> : "òwó"
<Multi_key> <W><apostrophe> : "ÒwÓ"
<Multi_key> <p><t> : "👉👈"
<Multi_key> <p><l> : "🥺"
<Multi_key> <m><s> : "/html <span data-mx-spoiler=\"\"></span>"
'';
# Cursor theme
home.pointerCursor = {
name = "Adwaita";
package = pkgs.gnome.adwaita-icon-theme;
size = 24;
x11 = {
enable = true;
defaultCursor = "Adwaita";
};
};
2023-04-07 16:20:16 +00:00
# Lockscreen
services.betterlockscreen = {
enable = true;
arguments = [ "dimblur" ];
};
# GTK theme
home.file.".themes" = {
recursive = true;
source = pkgs.fetchgit {
url = "https://github.com/ZorinOS/zorin-desktop-themes.git";
rev = "6708d5148545c6d9a99712f63b5efe5a5c0eb2d9";
sha256 = "sha256-3KEPP39dCr0ZjyqbAb/isoGdeiySDTvHL9k4oxcw19M=";
sparseCheckout = [ "ZorinPurple-Dark" "ZorinPurple-Light" ];
2023-04-07 16:20:16 +00:00
};
};
gtk = {
enable = true;
theme.name = if config.environment.graphical.theme.light then
"ZorinPurple-Light"
else
"ZorinPurple-Dark";
};
programs.helix.settings.theme =
if config.environment.graphical.theme.light then
"paramount-light"
else
"paramount-dark";
programs.direnv.enable = true;
home.sessionVariables = { "DIRENV_LOG_FORMAT" = ""; };
programs.ssh.enable = true;
programs.ssh.matchBlocks = {
"bloodletting" = { hostname = "technogothic.net"; };
"backups" = {
match = ''originalhost backups exec "ip r | rg 10.42.0.0/24"'';
hostname = "10.20.1.2";
user = "agatha";
identityFile = [ "~/.ssh/id_ed25519" ];
};
"work" = {
match = ''originalhost work exec "ip r | rg 10.42.0.0/24"'';
hostname = "10.42.0.222";
forwardX11 = true;
forwardX11Trusted = true;
extraOptions."TCPKeepAlive" = "yes";
};
"ritual" = {
match = ''originalhost ritual exec "ip r | rg 10.42.0.0/24"'';
hostname = "10.42.0.230";
};
};
2023-03-26 16:33:03 +00:00
};
environment.graphical.colorschemes = {
purple = {
image = ../../../external/the_reliquary.png;
params = [ "--lighten" "0.05" "--bold-delta" "0.1" ];
};
purple-light = {
image = ../../../external/the_reliquary.png;
params = [ "--light" "--bold-delta" "0.2" "--saturate" "0.1" ];
};
blue = { image = ../../../external/blue.jpg; };
dark = { image = ../../../external/the_falls_by_night.jpg; };
2023-04-20 20:22:22 +00:00
};
environment.graphical.theme.name = "dark";
2023-03-27 15:21:43 +00:00
services.gvfs.enable = true;
2023-03-26 16:33:03 +00:00
security.polkit.enable = true;
programs.dconf.enable = true;
2023-03-26 16:33:03 +00:00
2023-04-07 16:20:16 +00:00
programs.geary.enable = true;
programs.steam.enable = true;
programs.firefox = {
enable = true;
autoConfig = ''
pref("privacy.webrtc.legacyGlobalIndicator", false);
pref("privacy.webrtc.hideGlobalIndicator", true);
'';
};
2023-04-07 16:20:16 +00:00
2023-03-26 16:33:03 +00:00
# Screenshare on wlroots
xdg = {
portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
wlr.enable = true;
};
};
fonts.fontconfig.enable = true;
2023-04-19 08:24:08 +00:00
fonts.fontDir.enable = true;
2023-03-26 16:33:03 +00:00
fonts.fonts = with pkgs; [
2023-04-02 10:53:12 +00:00
(nerdfonts.override { fonts = [ "DaddyTimeMono" "NerdFontsSymbolsOnly" ]; })
2023-03-26 16:33:03 +00:00
cantarell-fonts
2023-04-02 10:53:12 +00:00
cm_unicode
corefonts
2023-03-26 16:33:03 +00:00
crimson
dejavu_fonts
fira-code
fira-code-symbols
font-awesome_5
iosevka
noto-fonts-cjk
siji
twitter-color-emoji
];
services.printing.enable = true;
}