Jafner.net/dotfiles/home-manager/desktop/home.nix
2024-11-02 18:11:06 -07:00

358 lines
11 KiB
Nix

{ pkgs, pkgs-unstable, inputs, vars, ... }:
{
imports = [
./unstable.nix
./python.nix
#./scripts.nix
];
sops = {
age.sshKeyPaths = [ "/home/${vars.user.username}/.ssh/main_id_ed25519" ];
defaultSopsFile = ./secrets.yaml;
};
stylix = {
enable = true;
autoEnable = false;
polarity = "dark";
image = ./plasma6.jpg;
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-medium.yaml";
fonts = {
monospace = {
name = "DejaVu Sans Mono";
package = pkgs.dejavu_fonts;
};
serif = {
name = "DejaVu Serif";
package = pkgs.dejavu_fonts;
};
sansSerif = {
name = "DejaVu Sans";
package = pkgs.dejavu_fonts;
};
emoji = {
name = "Noto Color Emoji";
package = pkgs.noto-fonts-color-emoji;
};
};
targets = {
bat.enable = true;
btop.enable = true;
firefox.enable = true;
fzf.enable = true;
gtk.enable = true;
kde.enable = false; # Currently, this breaks most of KDE.
kitty.enable = true;
tmux.enable = true;
vesktop.enable = true;
vim.enable = true;
vscode.enable = true;
};
};
services.flatpak = {
enable = true;
uninstallUnmanaged = true;
remotes = [
{ name = "flathub"; location = "https://flathub.org/repo/flathub.flatpakrepo"; }
{ name = "fedora"; location = "oci+https://registry.fedoraproject.org"; }
];
packages = [
"dev.vencord.Vesktop/x86_64/stable"
"io.github.zen_browser.zen/x86_64/stable"
"io.missioncenter.MissionCenter/x86_64/stable"
"no.mifi.losslesscut/x86_64/stable"
"org.freedesktop.Platform/x86_64/22.08"
"org.freedesktop.Platform/x86_64/23.08"
"org.freedesktop.Platform/x86_64/24.08"
"org.freedesktop.Platform.GL.default/x86_64/23.08"
"org.freedesktop.Platform.GL.default/x86_64/23.08-extra"
"org.freedesktop.Platform.GL.default/x86_64/24.08"
"org.freedesktop.Platform.GL.default/x86_64/24.08extra"
"org.freedesktop.Platform.GL32.default/x86_64/23.08"
"org.freedesktop.Platform.VulkanLayer.MangoHud/x86_64/23.08"
"org.freedesktop.Platform.VulkanLayer.vkBasalt/x86_64/23.08"
"org.freedesktop.Platform.ffmpeg-full/x86_64/23.08"
"org.freedesktop.Platform.ffmpeg-full/x86_64/24.08"
"org.freedesktop.Platform.ffmpeg_full.i386/x86_64/23.08"
"org.freedesktop.Platform.openh264/x86_64/2.2.0"
"org.freedesktop.Platform.openh264/x86_64/2.4.1"
"org.freedesktop.Sdk/x86_64/23.08"
"org.gnome.Platform/x86_64/47"
"org.gnome.Platform.Compat.i386/x86_64/46"
"org.gtk.Gtk3theme.Breeze/x86_64/3.22"
"org.gtk.Gtk3theme.adw-gtk3/x86_64/3.22"
"org.kde.KStyle.Adwaita/x86_64/5.15-23.08"
"org.kde.KStyle.Adwaita/x86_64/6.6"
"org.kde.KStyle.Adwaita/x86_64/6.7"
"org.kde.Platform/x86_64/5.15-23.08"
"org.kde.Platform/x86_64/6.6"
"org.kde.Platform/x86_64/6.7"
"org.kde.PlatformTheme.QGnomePlatform/x86_64/5.15-23.08"
"org.kde.PlatformTheme.QGnomePlatform/x86_64/6.6"
"org.kde.WaylandDecoration.QAdwaitaDecorations/x86_64/5.15-23.08"
"org.kde.WaylandDecoration.QAdwaitaDecorations/x86_64/6.6"
"org.kde.WaylandDecoration.QGnomePlatform-decoration/x86_64/5.15-23.08"
"org.prismlauncher.PrismLauncher/x86_64/stable"
"org.videolan.VLC/x86_64/stable"
"org.winehq.Wine.DLLs.dxvk/x86_64/stable-23.08"
"org.winehq.Wine.gecko/x86_64/stable-23.08"
"org.winehq.Wine.mono/x86_64/stable-23.08"
"xyz.z3ntu.razergenie/x86_64/stable"
{ appId = "org.fedoraproject.Platform/x86_64/f40"; origin = "fedora"; }
{ appId = "org.gimp.GIMP/x86_64/stable"; origin = "fedora"; }
{ appId = "org.fedoraproject.KDE6Platform/x86_64/f40"; origin = "fedora"; }
{ appId = "org.fedoraproject.Platform/x86_64/f40"; origin = "fedora"; }
];
};
programs.vscode = {
enable = true;
package = pkgs.vscodium;
extensions = with pkgs.vscode-extensions; [
jnoortheen.nix-ide
adzero.vscode-sievehighlight
#continue.continue
];
userSettings = {
"editor.fontFamily" = "'DejaVu Sans Mono'";
"nix.serverPath" = "nixd";
"nix.enableLanguageServer" = true;
"explorer.confirmDragAndDrop" = false;
"explorer.confirmDelete" = false;
"git.autofetch" = true;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"security.workspace.trust.untrustedFiles" = "open";
"terminal.integrated.defaultProfile.linux" = "zsh";
"terminal.integrated.profiles.linux.zsh.path" = "/usr/bin/zsh";
};
};
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
obs-vaapi
obs-vkcapture
input-overlay
wlrobs
];
package = pkgs.writeShellScriptBin "obs" ''
#!/bin/sh
${pkgs-unstable.nixgl.nixVulkanIntel}/bin/nixVulkanIntel ${pkgs-unstable.obs-studio}/bin/obs "$@"
'';
};
xdg.desktopEntries."obs" = {
name = "OBS Studio";
genericName = "Streaming/Recording Software";
type = "Application";
comment = "Free and Open Source Streaming/Recording Software";
categories = [ "AudioVideo" "Recorder" ];
exec = "nixGL obs";
icon = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/d/d3/OBS_Studio_Logo.svg";
sha256 = "sha256-7kTlDSmknwahRiiSPZPU7Fs49q2ViSIPsI/1s8z8mIs=";
};
terminal = false;
settings = {
StartupNotify = "true";
StartupWMClass = "obs";
};
};
programs.git = {
enable = true;
userName = "${vars.user.realname}";
userEmail = "${vars.user.email}";
extraConfig = {
core.sshCommand = "ssh -i /home/${vars.user.username}/.ssh/main_id_ed25519";
};
delta.enable = true;
delta.options = {
side-by-side = true;
};
};
programs.kitty = {
enable = true;
package =
pkgs.writeShellScriptBin "kitty" ''
#!/bin/sh
${pkgs-unstable.nixgl.auto.nixGLDefault}/bin/nixGL ${pkgs-unstable.kitty}/bin/kitty "$@"
'';
};
programs.tmux = {
enable = true;
newSession = true;
shell = "$HOME/.nix-profile/bin/zsh";
};
programs.zsh = {
enable = true;
dotDir = ".config/zsh";
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
bat = "bat --paging=never --color=always";
fd = "fd -Lu";
ls = "eza";
lt = "eza --tree";
fetch = "fastfetch";
neofetch = "fetch";
find = ''fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"'';
hmu = "home-manager switch -b backup --flake ~/Git/Jafner.net/dotfiles#joey-desktop --impure";
nixgc = "nix-env --delete-generations 7d && nix-store --gc --print-dead";
kitty = "nixGL kitty";
fzf-ssh = "ssh $(cat ~/.ssh/profiles | fzf --height 20%)";
fsh = "fzf-ssh";
k = "kubectl";
};
history = {
share = true;
save = 10000;
size = 10000;
expireDuplicatesFirst = false;
extended = false;
ignoreAllDups = false;
ignoreDups = true;
};
initExtra = ''
bindkey '^[[1;5A' history-search-backward # Ctrl+Up-arrow
bindkey '^[[1;5B' history-search-forward # Ctrl+Down-arrow
bindkey '^[[1;5D' backward-word # Ctrl+Left-arrow
bindkey '^[[1;5C' forward-word # Ctrl+Right-arrow
bindkey '^[[H' beginning-of-line # Home
bindkey '^[[F' end-of-line # End
bindkey '^[w' kill-region # Delete
bindkey '^I^I' autosuggest-accept # Tab, Tab
bindkey '^[' autosuggest-clear # Esc
bindkey -s '^E' 'fzf-ssh\n'
_fzf_compgen_path() {
fd --hidden --exclude .git . "$1"
}
_fzf_compgen_dir() {
fd --hidden --exclude .git . "$1"
}
eval "$(~/.nix-profile/bin/fzf --zsh)"
'';
};
programs.eza = {
enable = true;
enableZshIntegration = true;
git = true;
extraOptions = [
"--color=always"
"--long"
"--icons=always"
"--no-time"
"--no-user"
];
};
programs.vim = {
enable = true;
defaultEditor = true;
settings = {
copyindent = true;
relativenumber = true;
expandtab = true;
tabstop = 2;
};
extraConfig = ''
set nocompatible
filetype on
filetype plugin on
filetype indent on
syntax on
set cursorline
set wildmenu
set wildmode=list:longest
'';
};
programs.fzf = {
enable = true;
package = pkgs-unstable.fzf;
};
programs.rofi = {
enable = true;
};
programs.spotify-player = {
enable = true;
package = pkgs-unstable.spotify-player;
};
systemd.user.services = {
librespot = {
Unit = {
Description = "Librespot (an open source Spotify client)";
Documentation = [ "https://github.com/librespot-org/librespot" "https://github.com/librespot-org/librespot/wiki/Options" ];
};
Service = {
Restart = "always";
RestartSec = 10;
ExecStart = "${pkgs-unstable.librespot}/bin/librespot --backend pulseaudio --system-cache /home/${vars.user.username}/.spotify -j";
};
};
goxlr-utility = {
Unit = {
Description = "Unofficial GoXLR App replacement for Linux, Windows and MacOS";
Documentation = [ "https://github.com/GoXLR-on-Linux/goxlr-utility" ];
};
Service = {
Restart = "always";
RestartSec = 30;
ExecStart = "${pkgs.goxlr-utility}/bin/goxlr-daemon";
};
};
};
home.enableNixpkgsReleaseCheck = false;
home.preferXdgDirectories = true;
home.username = "${vars.user.username}";
home.homeDirectory = "/home/${vars.user.username}";
home.stateVersion = "24.05";
home.packages = with pkgs; [
rofi rofi-rbw-wayland rbw pinentry-rofi pinentry-all
flatpak
fastfetch
nixd
git kdePackages.kdeconnect-kde
vesktop
vlc
tree btop
bat fd eza fzf-git-sh
wl-clipboard
base16-schemes
ollama
protonup-ng
protonmail-bridge-gui
obsidian
gamepad-tool
linuxKernel.packages.linux_6_11.xpadneo
];
home.file = {
"continue-config.json" = {
source = ./continue-config.json;
target = ".continue/config.json";
};
"ssh-profiles" = {
source = ./profiles;
target = ".ssh/profiles";
};
"rbw-config" = {
target = ".config/rbw/config.json";
text = ''
{
"email": "jafner425@gmail.com",
"sso_id": null,
"base_url": "https://bitwarden.jafner.tools",
"identity_url": null,
"ui_url": null,
"notifications_url": null,
"lock_timeout": 3600,
"sync_interval": 3600,
"pinentry": "pinentry-curses",
"client_cert_path": null
}
'';
};
};
home.sessionVariables = {
};
programs.home-manager.enable = true;
xdg.systemDirs.data = [
"/usr/share"
];
}