{ 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; rclone = { enable = true; mounts = [ { remote = "org-roam"; local = "/home/erwin/org-roam"; remoteConfig = { type = "sftp"; host = "zh2088.rsync.net"; user = "zh2088"; key_file = "~/.ssh/id_ed25519-rsync.net"; md5sum_command = "md5 -r"; sha2sum_command = "sha1 -r"; }; } ]; }; rofi.enable = true; vscode.enable = true; solvespace.enable = true; ssh.enable = true; sway.enable = true; tea = { enable = true; settings = { logins = [ { name = "datarift"; url = "https://git.datarift.nl"; token = "abc"; default = true; ssh_host = "git.datarift.nl"; user = "erwin"; } ]; }; }; tmux.enable = true; waybar.enable = true; zathura.enable = true; }; }; home.packages = with pkgs; [ bandwhich bitwarden blink1-tool bottom fd ffmpeg ffmpeg.bin git gnome.nautilus imagemagick imv iotop (jetbrains.clion.override { jdk = pkgs.jetbrains.jdk; }) kicad libnotify libreoffice mpv nomachine-client nordzy-cursor-theme onefetch pamedia pass quintom-cursor-theme procs ripgrep signal-desktop 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 = "Nordzy-cursors"; }; }; }; imports = [ { nixpkgs.overlays = [ self-overlay inputs.ha-now-playing.overlays.${pkgs.system} inputs.pamedia.overlays.${pkgs.system} inputs.emacs-overlay.overlay ]; } ] ++ (map (mod: (../../home-manager/modules + "/${mod}")) (builtins.attrNames (builtins.readDir ../../home-manager/modules))); }; 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 ]; }; }; }