nixos-dotfiles/users/ultra/home.nix

552 lines
14 KiB
Nix
Raw Normal View History

inputs:
{ pkgs, lib, config, ... }:
let
# nix-software-center = inputs.nix-software-center.packages.${pkgs.system}.nix-software-center;
/*
doom-emacs = inputs.nix-doom-emacs.packages.${pkgs.system}.default.override {
doomPrivateDir = ./doom.d;
};
*/
# eww-git = inputs.eww.packages.${pkgs.system}.default;
emacs-package = (pkgs.emacsWithPackagesFromUsePackage rec{
package = pkgs.emacs-gtk;
/*
config = ''
(setq standard-indent 2)
(load (expand-file-name "~/.quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl")
(set-face-attribute 'default nil :height 120)
(use-package parinfer-rust-mode :hook emacs-lisp-mode)
'';
*/
config = builtins.readFile ./configs/emacs/init.el;
# defaultInitFile = ./configs/emacs/init.el;
defaultInitFile = pkgs.writeText "default.el" config;
/* ''
(setq standard-indent 2)
(load (expand-file-name "~/.quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl")
(set-face-attribute 'default nil :height 120)
'';*/
extraEmacsPackages = epkgs: with epkgs; [
use-package
nix-mode
slime
parinfer-rust-mode
sly
# spacemacs-theme
paredit
evil
magit
org
mastodon
eshell-z
bshell
eat
gruvbox-theme
uwu-theme
irony
hotfuzz
vertico
marginalia
consult
corfu
bind-key
2024-03-08 12:36:38 +02:00
highlight-indent-guides
doom-modeline
which-key
treesit-grammars.with-all-grammars
el-easydraw
# jabber
geiser
rainbow-delimiters
rainbow-mode
esh-autosuggest
fish-completion
steam
zone-sl
helm
dashboard
helpful
sublimity
workgroups2
linum-relative
pulsar
orderless
];
});
helix = inputs.helix.packages.${pkgs.system}.default;
nixpkgs-master-pkgs = inputs.nixpkgs-master.legacyPackages.${pkgs.system};
# nixpkgs-master = inputs.nixpkgs-master;
nixpkgs-master = import inputs.nixpkgs-master {
inherit (config.nixpkgs) config overlays;
inherit (pkgs) system;
};
hypr-contrib = inputs.hypr-contrib.packages.${pkgs.system};
# nh = inputs.nix-but-gigachad.packages.${pkgs.system}.default; # IT GOT UPSTREAMED WOOO
in {
imports = [
inputs.hyprland.homeManagerModules.default
inputs.nix-index-database.hmModules.nix-index
inputs.niri.homeModules.niri
];
# Allow unfree packages
nixpkgs = {
overlays = [
(import inputs.emacs-overlay)
inputs.niri.overlays.niri
];
config = {
allowUnfree = true;
allowUnfreePredicate = (pkg: true);
permittedInsecurePackages = [
"electron-21.4.0"
"electron-24.8.6"
"electron-25.9.0"
];
packageOverrides = pkgs: {
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
inherit pkgs;
};
};
};
};
/*
nixpkgs-master.config = {
allowUnfree = true;
allowUnfreePredicate = (pkg: true);
permittedInsecurePackages = [
"electron-21.4.0"
];
};
*/
home = {
username = "ultra";
homeDirectory = "/home/ultra/";
stateVersion = "22.11";
packages = with pkgs; [
firefox
tor-browser-bundle-bin
kate
distrobox
fish
nushell
git
bat
gnupg1
zoom-us
google-chrome
zoxide
# starship
atuin
clang
(lib.hiPrio gcc)
eza
gnumake
plasma-browser-integration
libsForQt5.bismuth
whatsapp-for-linux
signal-desktop
nodejs
onlyoffice-bin
drawio
xclip
steam
packagekit
# armcord # it has a CVE
rnote
obsidian
gnome-obfuscate
microsoft-edge
# doom-emacs
ripgrep
w3m
github-cli
mc
# zellij
(nixpkgs-master-pkgs.zellij)
lsd
tealdeer
fd
broot
fzf
bottom
hyperfine
procs
httpie
curlie
xh
du-dust
duf
virtualbox
spotify
appimage-run
# xivlauncher # No longer fails to build!
prismlauncher
ghostwriter
skypeforlinux
man-pages
ckan
cool-retro-term
# wofi
# hyprpaper
# alacritty
# tofi
# dunst
wl-clipboard
polkit-kde-agent
# grim
# hypr-contrib.grimblast
# hypr-contrib.scratchpad
# kitty
# waybar
/*
(eww-git.override {
withWayland = true;
})
*/
eww
# (eww.override { withWayland = true; })
notify-desktop
libnotify
xdg-desktop-portal-hyprland
jq
libsForQt5.alligator
thunderbird
nh
# irssi
syncthing
# android-studio # literally proprietary bloat, I don't want that garbage on my system.
flutter
comic-mono
screen
amfora
weechat
filezilla
# fluffychat # insecure apparently
bitwarden
akregator
# bitwarden
# schildichat-desktop # apparently it uses a really old version of electron
element-desktop
xonsh
kiwix
htmlq
lite
# heroic
steam-run
/*
(lutris.override {
extraPkgs = pkgs: [
pkgs.wine64Packages.stagingFull
];
})
*/
waypipe
# electron-mail
hydroxide
jujutsu
gparted
xournalpp
(lib.hiPrio netcat-gnu)
nmap
browsh
# beeper
halloy
mtpaint
fluent-reader
discord
f1viewer
vlc
wineWowPackages.wayland
blender
vesktop
ktailctl
caddy
floorp
mpris-scrobbler
sbcl
clang-tools
#emacs-package
dino
# cinny-desktop
(inputs.nix-inst.packages.${pkgs.system}.default)
dotnet-runtime_6
# dotnet-runtime_8
tea
thefuck
playerctl
fuzzel
# nyxt
lmms
cozette
];
file = {
"emacs.d/everblush-theme.el".source = ./configs/emacs/everblush-theme.el;
};
};
xdg = {
configFile = {
"emacs/init.el".source = ./configs/emacs/init.el;
"emacs/everblush-theme.el".source = ./configs/emacs/everblush-theme.el;
"hypr/hyprland.conf".source = ./configs/hyprland/hyprland.conf;
"presets/user/everblush.json".source = ./configs/presets/everblush.json;
};
};
programs = {
emacs = {
enable = true;
package = emacs-package;
/*
extraConfig = ''
(setq standard-indent 2)
(load (expand-file-name "~/.quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl")
(set-face-attribute 'default nil :height 120)
(use-package parinfer-rust-mode :hook emacs-lisp-mode)
'';
*/
extraConfig = builtins.readFile ./configs/emacs/init.el;
};
home-manager.enable = true;
# fish.enable = true;
zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion = {
enable = true;
};
syntaxHighlighting = {
enable = true;
};
shellAliases = {
cls = "clear";
# emcc = "emacsclient -c";
};
oh-my-zsh = {
enable = true;
plugins = [
"git"
"thefuck"
"history-substring-search"
"fzf"
"npm"
"sudo"
"vscode"
"web-search"
"starship"
"git-auto-fetch"
"nmap"
];
theme = "cloud";
};
history = {
size = 256 * 1024;
path = "${config.xdg.dataHome}/zsh/history";
extended = true;
};
initExtra = ''
zmodload zsh/complist
zstyle ':completion:*' menu yes select
bindkey -M menuselect '?' history-incremental-search-forward
eval $(thefuck --alias)
export PATH="$PATH:$HOME/.local/bin"
'';
zsh-abbr = {
enable = true;
abbreviations = {
emcc = "emacsclient -c";
sam = "git commit -sam";
hmbk = "home-manager switch --flake ~/.nixdotfiles -b backup";
hmup = "nh home switch ~/.nixdotfiles";
osup = "nh os switch ~/.nixdotfiles";
};
};
};
zoxide = {
enable = true;
enableNushellIntegration = true;
enableZshIntegration = true;
};
starship = {
enable = true;
settings = {
"$schema" = "https://starship.rs/config-schema.json";
add_newline = false;
character = {
success_symbol = "[](bold green)";
error_symbol = "[](bold red)";
};
format = ''
$directory$git_branch$git_status$git_state$nodejs$container$sudo$nix_shell$character
'';
};
};
# Helix config
helix = {
enable = true;
package = helix;
languages = {
language-server = with pkgs; {
cpp.command = "${clang-tools}/bin/clangd";
c.command = "${clang-tools}/bin/clangd";
nix.command = "${nixd}/bin/nixd";
};
language = [
{
name = "cpp";
scope = "source.cpp";
indent = {
tab-width = 4;
unit = " ";
};
# language-server.command = "clangd";
file-types = [ "cpp" ];
}
{
name = "c";
scope = "source.c";
indent = {
tab-width = 4;
unit = " ";
};
# language-server.command = "clangd";
file-types = [ "c" ];
}
{
name = "nix";
scope = "source.nix";
indent = {
tab-width = 4;
unit = " ";
};
# language-server.command = "nil";
file-types = [ "nix" ];
}
];
};
settings = {
theme = "everblush";
editor = {
line-number = "relative";
mouse = true;
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
file-picker.hidden = false;
auto-save = true;
true-color = true;
};
};
};
vscode = {
enable = true;
package = pkgs.vscodium;
mutableExtensionsDir = false;
extensions = with pkgs.vscode-extensions; [
enkia.tokyo-night # Tokyo Night theme
arcticicestudio.nord-visual-studio-code # Nord theme
jnoortheen.nix-ide # Nix stuff
# eamodio.gitlens # Giga git, but with some paid stuff
kahole.magit # Giga git
bmalehorn.vscode-fish # Fish in vscode
ms-vscode-remote.remote-ssh # SSH
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
{
name = "hungry-delete";
publisher = "jasonlhy";
version = "1.7.0";
sha256 = "sha256-TDs6i0/o0j9XFLQvWze4iloa6yRXce/xIqd2CnA5nug=";
}
];
userSettings = {
nix = {
serverPath = "nixd";
enableLanguageServer = true;
};
editor = {
fontLigatures = true;
fontFamily = "JetBrainsMono Nerd Font";
cursorBlinking = "smooth";
cursorSmoothCaretAnimation = "on";
tabSize = 2;
accessibilitySupport = "off";
};
workbench = {
colorTheme = "Tokyo Night";
};
files = {
autoSave = "on";
};
};
};
nix-index-database = {
comma = {
enable = true;
};
};
niri = {
enable = true;
package = pkgs.niri-stable;
settings = {
outputs = {
eDP-1 = {
enable = true;
scale = 2.25;
position = { x = 0; y = 0; };
};
DP-2 = {
enable = true;
scale = 2.25;
position = { x = 0; y = 960; };
};
};
binds = with config.lib.niri.actions; {
"Mod+T".action.spawn = "alacritty";
"Mod+D".action.spawn = "fuzzel";
"Mod+Shift+E".action = quit;
"Mod+Ctrl+shift+E".action = quit { skip-confirmation = true; };
"Mod+Shift+Slash".action = show-hotkey-overlay;
"Mod+F".action = fullscreen-window;
};
};
};
eww = {
enable = true;
configDir = ./configs/eww;
};
};
services = {
dunst.enable = false;
emacs = {
enable = true;
package = emacs-package;
client = {
enable = true;
arguments = [ "-c" ];
};
};
};
systemd.user = {
services = {
dunst.Unit = {
After = lib.mkForce [];
WantedBy = [ "hyprland-session.target" ];
PartOf = lib.mkForce [ "hyprland-session.target" ];
};
};
};
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.hyprland;
extraConfig = builtins.readFile ./configs/hyprland/hyprland.conf;
systemdIntegration = true;
};
}