{ config, lib, inputs, pkgs, ... }:
let
electronWaylandFlags = [
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
];
wrapped-sw = inputs.wrapper-manager.lib.build {
inherit pkgs;
modules = [
({ pkgs, ... }: {
wrappers.element = {
basePackage = pkgs.element-desktop;
flags = electronWaylandFlags;
};
wrappers.discord = {
basePackage = pkgs.vesktop;
flags = electronWaylandFlags;
};
})
];
};
in {
imports = [
./modules
../nixos/modules/nixos-config.nix
./laptop.nix
inputs.spicetify.homeManagerModules.default
];
programs.spicetify = let
spicePkgs = inputs.spicetify.legacyPackages.${pkgs.system};
in {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
shuffle
keyboardShortcut
];
theme = spicePkgs.themes.catppuccin;
colorScheme = "mocha";
};
nix.registry = lib.mapAttrs (n: input: {
flake = input;
}) inputs;
home.sessionVariables = {
NIX_PATH = "nixpkgs=flake:nixpkgs$\{NIX_PATH:+:$NIX_PATH}";
TERMINAL = config.home-config.defaultTerminal.meta.mainProgram;
EDITOR = "emacsclient -nc";
};
xdg = {
enable = true;
userDirs = let dir = s: "${config.home.homeDirectory}/${s}"; in {
enable = true;
documents = dir "doc";
download = dir "download";
music = dir "music";
pictures = dir "photos";
publicShare = dir "public";
videos = dir "videos";
};
mimeApps = {
enable = true;
defaultApplications = let
imageViewer = "nsxiv.desktop";
videoViewer = "mpv.desktop";
pdfViewer = "org.pwmt.zathura.desktop";
textEditor = "emacsclient.desktop";
webBrowser = "firefox.desktop";
fileBrowser = "emacsclient.desktop"; # "nautilus.desktop";
in {
# see https://www.iana.org/assignments/media-types/media-types.xhtml
# Pdf
"application/pdf" = pdfViewer;
# Image
"image/png" = imageViewer;
"image/jpeg" = imageViewer;
"image/gif" = imageViewer;
"image/tiff" = imageViewer;
"image/webp" = imageViewer;
# Video
"application/mp4" = videoViewer;
"video/mpeg" = videoViewer;
"video/h264" = videoViewer;
"video/h265" = videoViewer;
"video/h266" = videoViewer;
# Text Editor
"application/x-shellscript" = textEditor;
"text/plain" = textEditor;
"text/x-python3" = textEditor;
"text/javascript" = textEditor;
"text/markdown" = textEditor;
# Web Browser
"text/html" = webBrowser;
"x-scheme-handler/http" = webBrowser;
"x-scheme-handler/https" = webBrowser;
"x-scheme-handler/chrome" = webBrowser;
"x-scheme-handler/about" = webBrowser;
"x-scheme-handler/unknown" = webBrowser;
# File Browser
"x-scheme-handler/file" = fileBrowser;
# Chat
"x-scheme-handler/tg" = "org.telegram.desktop.desktop";
};
};
};
home = {
username = config.nixos-config.defaultUser;
homeDirectory = "/home/${config.nixos-config.defaultUser}";
packages = with pkgs; [
# Terminal
gtop # Resource Manager
htop # Resource Manager
ranger # File Manager
cinnamon.nemo # GUI File Manager
tldr # Helper
lazygit # Git tool
# Video/Audio
nsxiv # Image Viewer
feh # Image Viewer
mpv # Media Player
pavucontrol # Audio Control
vlc # Media Player
# Apps
chromium # Browser
vieb
# File Management
zathura # PDF Viewer
evince # PDF Viewer
foliate # Ebook viewer
rsync # Syncer - $ rsync -r dir1/ dir2/
unzip # Zip Files
zip # Zip
# General configuration
git # Repositories
pipewire # Sound
wacomtablet # Wacom Tablet
wget # Downloader
#
# General home-manager
alacritty
# Desktop
ffmpeg # Video Support (dslr)
# obsidian # Text Editor
# QoL CLI utilities
comma
bat
ripgrep
pdfgrep
ripgrep-all
fd
nvd
nix-diff
nix-tree
# Add that pdf tool that can merge pdfs, get only some pages etc.
# Images
pinta
# Wrapped software from wrapper-manager modules
wrapped-sw
];
stateVersion = "23.05";
};
programs = {
home-manager.enable = true;
nix-index = {
enableZshIntegration = false;
enableBashIntegration = false;
enableFishIntegration = false;
};
};
home.pointerCursor = {
gtk.enable = true;
name = "catppuccin-frappe-sapphire-cursors";
package = pkgs.catppuccin-cursors.frappeSapphire;
size = 16;
};
gtk = { # Theming
enable = true;
theme = {
name = "Graphite-orange-Dark";
package = pkgs.graphite-gtk-theme.override {
themeVariants = ["orange"];
colorVariants = ["dark"];
};
};
iconTheme = {
name = "Tela-circle-dark";
package = pkgs.tela-circle-icon-theme;
};
font = {
name = "FiraCode Nerd Font Mono Medium";
size = 10;
}; # Cursor is declared under home.pointerCursor
};
systemd.user.targets.tray = { # Tray.target can not be found when xsession is not enabled. This fixes the issue.
Unit = {
Description = "Home Manager System Tray";
Requires = [ "graphical-session-pre.target" ];
};
};
}