nixos-config/modules/desktop/default.nix

302 lines
7.9 KiB
Nix

{ lib
, pkgs
, config
, inputs
, self-overlay
, ...
}:
with lib; let
cfg = config.eboskma.desktop;
bt = config.eboskma.bluetooth;
in
{
# imports = [ ../../users/erwin.nix ../../users/root.nix ];
options.eboskma.desktop = {
enable = mkEnableOption "Enable default desktop configuration";
home-manager = mkOption {
type = types.bool;
default = false;
description = ''
Enable home-manager for this desktop
'';
};
terminal = mkOption {
type = types.str;
default = "foot";
description = "Terminal emulator to use. Specify the .desktop filename, e.g. 'foot' or 'Alacritty'";
};
};
config = mkIf cfg.enable {
home-manager.users.erwin = mkIf cfg.home-manager {
_module.args.flake-inputs = inputs;
programs.home-manager.enable = true;
programs.command-not-found.enable = true;
services.blueman-applet.enable = bt.enable;
home.username = "erwin";
home.homeDirectory = "/home/erwin";
home.sessionVariables = {
EDITOR = "${pkgs.neovim}/bin/nvim";
};
nixpkgs.config = { allowUnfree = true; };
home.stateVersion = "21.11";
eboskma = {
programs = {
alacritty.enable = true;
bat.enable = true;
dropbox.enable = true;
dunst.enable = false;
emacs = {
enable = true;
daemon = true;
};
electron = {
enable = true;
wayland = true;
};
firefox = {
enable = true;
work = config.eboskma.base.work;
};
fish.enable = true;
foot.enable = true;
git = {
enable = true;
name = "Erwin Boskma";
email = "erwin@datarift.nl";
signingKey = "EE7ADEFE1D943C7B";
};
gpg.enable = true;
neovim.enable = true;
obs-studio.enable = true;
rofi.enable = true;
vscode.enable = true;
solvespace.enable = true;
ssh.enable = true;
sway.enable = true;
tmux.enable = true;
waybar.enable = true;
zathura.enable = true;
};
};
home.packages = with pkgs;
[
bandwhich
bitwarden
bottom
# inputs.cq-flake.packages.${pkgs.system}.cq-editor
fd
ffmpeg
ffmpeg.bin
git
gnome.nautilus
imagemagick
imv
iotop
(jetbrains.clion.override { jdk = pkgs.jetbrains.jdk; })
kicad
mpv
nomachine-client
nordzy-cursor-theme
pamedia
pass
quintom-cursor-theme
procs
ripgrep
solo2-cli
steam
steamcmd
steam-tui
unzip
xdg-utils
wireshark
wl-clipboard
]
++ (with gst_all_1; [ gstreamer gstreamer.dev gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-vaapi ]);
xdg = {
enable = true;
mime.enable = true;
mimeApps = {
enable = true;
defaultApplications = {
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/chrome" = "firefox.desktop";
"x-scheme-handler/terminal" = "${cfg.terminal}.desktop";
"text/html" = "firefox.desktop";
"application/x-extension-htm" = "firefox.desktop";
"application/x-extension-html" = "firefox.desktop";
"application/x-extension-shtml" = "firefox.desktop";
"application/xhtml+xml" = "firefox.desktop";
"application/x-extension-xhtml" = "firefox.desktop";
"application/x-extension-xht" = "firefox.desktop";
};
associations = {
added = {
"image/jpeg" = "imv.desktop";
"image/png" = "imv.desktop";
"image/gif" = "imv.desktop";
"application/zip" = "org.gnome.FileRoller.desktop";
};
};
};
userDirs = {
enable = true;
createDirectories = true;
};
};
i18n.inputMethod = {
enabled = "fcitx5";
fcitx5.addons = with pkgs; [ fcitx5-m17n fcitx5-gtk fcitx5-configtool ];
};
gtk = {
enable = true;
theme = {
name = "Arc-Dark";
package = pkgs.arc-theme;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
gtk3 = {
bookmarks = [
"file:///home/erwin/workspace"
];
extraConfig = {
gtk-application-prefer-dark-theme = true;
# gtk-cursor-theme-name = "Quintom_Ink";
gtk-cursor-theme-name = "Nordzy-cursors";
};
};
};
imports = [
{
nixpkgs.overlays = [
self-overlay
inputs.ha-now-playing.overlays.${pkgs.system}
inputs.pamedia.overlays.${pkgs.system}
inputs.emacs-overlay.overlay
];
}
../../home-manager/modules/alacritty
../../home-manager/modules/bat
../../home-manager/modules/dropbox
../../home-manager/modules/dunst
../../home-manager/modules/emacs
../../home-manager/modules/electron
../../home-manager/modules/firefox
../../home-manager/modules/fish
../../home-manager/modules/foot
../../home-manager/modules/git
../../home-manager/modules/gpg
../../home-manager/modules/neovim
../../home-manager/modules/obs-studio
../../home-manager/modules/rofi
../../home-manager/modules/vscode
../../home-manager/modules/solvespace
../../home-manager/modules/ssh
../../home-manager/modules/sway
../../home-manager/modules/tmux
../../home-manager/modules/waybar
../../home-manager/modules/zathura
];
};
programs = {
dconf.enable = true;
seahorse.enable = true;
steam.enable = true;
sway = {
enable = true;
wrapperFeatures = {
gtk = true;
base = true;
};
extraPackages = with pkgs; [
swaylock-effects
# swaylock
swayidle
swaynotificationcenter
];
};
};
xdg = {
mime.enable = true;
menus.enable = true;
icons.enable = true;
sounds.enable = true;
autostart.enable = true;
portal = {
enable = true;
wlr.enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
gtkUsePortal = true;
};
};
services = {
dbus.packages = [ pkgs.gcr ];
avahi.publish.workstation = true;
gvfs.enable = true;
pcscd.enable = true;
ratbagd.enable = true;
};
security = {
pam.services.swaylock = {
# text = ''
# auth include login
# '';
unixAuth = true;
setLoginUid = true;
enableGnomeKeyring = true;
allowNullPassword = true;
updateWtmp = true;
startSession = true;
};
pki.certificates = [ (builtins.readFile ./horus-ca.pem) ];
};
environment = {
sessionVariables = {
_JAVA_AWT_WM_NONREPARENTING = "1";
MOZ_ENABLE_WAYLAND = "1";
MOZ_DBUS_REMOTE = "1";
QT_QPA_PLATFORM = "wayland";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_QPA_PLATFORMTHEME = "qt5ct";
SDL_VIDEODRIVER = "wayland";
SSH_AUTH_SOCK = ''''${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh'';
AMD_VULKAN_ICD = "RADV";
# NIXOS_OZONE_WL = "1";
};
etc = {
"X11/xkb".source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
};
systemPackages = with pkgs; [
piper
];
};
};
}