nixos-config/home/home.nix

695 lines
15 KiB
Nix

{ nix-flatpak, lib, config, pkgs, inputs, outputs, ... }:
{
nixpkgs = {
# You can add overlays here
overlays = [
# Add overlays your own flake exports (from overlays and pkgs dir):
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
];
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
home = {
packages = with pkgs; [
just
yt-dlp
erdtree
age
figlet
ffmpeg-full
rlwrap
pinentry
gcr
gnutar
unzip
zip
stdenv
tldr
delta
htop
dconf
dconf2nix
readline
gnupg
imagemagick
gcc
gnutls
gettext
xorg.libX11
xorg.libxcb
freetype.dev
gnumake
flex
bison
mesa
neofetch
nvd
xwayland
nitch
ripgrep-all
silver-searcher
# xclip
maestral
nix-index
fstl
godot_4
sane-airscan
xsane
dbus
gst_all_1.gstreamer
alsa-oss
powertop
age
sops
nix-du
usbutils
pciutils
util-linux
coreutils
binutils
libgcc
cmake
libuv.dev
SDL2.dev
protonplus
ispell
aspell
aspellDicts.en
aspellDicts.en-computers
texlive.combined.scheme-full
appimage-run
libappimage
transmission_4-gtk
lsof
ruby
janet
jpm
guile
python311
python311Packages.pip
python311Packages.mido
python311Packages.simpleeval
python311Packages.parsedatetime
python311Packages.pytz
python311Packages.pint
python311Packages.babel
python311Packages.requests
ruff
sbcl
ccl
racket
gdu
poppler_utils
editorconfig-core-c
clang-tools
cljfmt
libxml2
gdtoolkit_4
zulu
openssl.out
nixfmt-rfc-style
wl-clipboard
maim
php
rustup
shfmt
html-tidy
tree-sitter
libsecret
samba4Full
shellcheck
waylandpp.dev
wayland-utils
libffi.dev
nodejs_18
platformio-core
icloudpd
libheif.out
openal
pkg-config
ftgl
gperf
numbat
libGLU
glpng
libGL
nurl
freecad
rpi-imager
caligula
prusa-slicer
# global node packages
nodePackages.typescript-language-server
nodePackages.vscode-langservers-extracted
nodePackages.prettier
nodePackages.javascript-typescript-langserver
nodePackages.stylelint
nodePackages.svelte-language-server
nodePackages.typescript
nodePackages.js-beautify
nixd
nixdoc
nix-init
fishPlugins.foreign-env
fishPlugins.z
fishPlugins.fzf-fish
fishPlugins.bass
fishPlugins.autopair
fishPlugins.forgit
fishPlugins.colored-man-pages
imgcat
via
vial
bitwarden-cli
bitwarden-desktop
tailscale
trayscale
font-manager
scribus
pdfarranger
tdf
pdfchain
pdftk
ghostscript
zathura
gpu-viewer
mesa-demos
gnomeExtensions.just-perfection
gnomeExtensions.dash-to-dock
gnomeExtensions.solaar-extension
gnomeExtensions.paperwm
gnomeExtensions.media-controls
gnomeExtensions.looking-glass-button
gnomeExtensions.auto-power-profile
gnomeExtensions.appindicator
gnome-software
gnome-tweaks
gnome-photos
gpaste
ulauncher
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
soundconverter
gtop
wmctrl
sushi
colloid-gtk-theme
colloid-icon-theme
whitesur-gtk-theme
whitesur-cursors
whitesur-icon-theme
bibata-cursors
piper
icloudpd
squirreldisk
papers
newsflash
planify
borgbackup
vorta
stirling-pdf
trash-cli
wineWowPackages.stagingFull
winetricks
(yabridge.override {
wine = wineWowPackages.stagingFull;
})
(yabridgectl.override {
wine = wineWowPackages.stagingFull;
})
spice
spice-gtk
spice-protocol
virt-viewer
virt-manager
solaar
logitech-udev-rules
opensnitch
opensnitch-ui
thunderbird-latest
emojify
smile
gnomeExtensions.smile-complementary-extension
impression
zoom-us
nyxt
ungoogled-chromium
obsidian
vlc
polychromatic
discord
slack
signal-desktop
calcurse
onlyoffice-desktopeditors
libreoffice
hyphenDicts.en_US
plexamp
amberol
carla
# wireplumber
# audacity
tenacity
supercollider-with-plugins
# pkgs.unstable.bitwig-studio
bitwig-studio-beta
blender
davinci-resolve-studio
steam
zotero_7
handbrake
renoise
krita
darling
darling-dmg
rawtherapee
inkscape
gimp
epson-escpr
kicad
openscad-unstable
openscad-lsp
picard
evolutionWithPlugins
mpv
plugdata
pavucontrol
qpwgraph
helvum
alsa-utils
alsa-tools
clapper
ardour
parinfer-rust-emacs
dockfmt
mioctl
# Audio plugins (LV2, VST2, VST3, LADSPA)
eq10q
geonkick
bespokesynth
helm
surge
odin2
calf
chow-kick
chow-phaser
chow-centaur
chow-tape-model
easyeffects
vcv-rack
cardinal
roomeqwizard
guitarix
# paulxstretch
vital
helio-workstation
stochas
tal-bassline
tal-j8
tal-u-no-lx
amplocker
chair-snare
chair-cymb
tus-vavra
tus-nodal-red
tus-xenia
tus-ostirus
tus-osirus
# Fonts
fira-code
fira
cooper-hewitt
ibm-plex
jetbrains-mono
iosevka
spleen
fira-code-symbols
powerline-fonts
nerdfonts
noto-fonts-color-emoji
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
];
username = "emenel";
homeDirectory = "/home/emenel";
sessionPath = [ "/home/emenel/.config/emacs/bin" "/home/emenel/.npm-packages/bin" "/home/emenel/Applications" "/home/emenel/.local/bin" "/home/emenel/.local/share" "/home/emenel/.nix-profile/lib"];
sessionVariables = {
WINEFSYNC = 1;
PKG_CONFIG_PATH = "/home/emenel/.nix-profile/lib/pkgconfig:/home/emenel/.nix-profile/lib64/pkgconfig:/home/emenal/.nix-profile/share/pkgconfig";
GI_TYPELIB_PATH = "/run/current-system/sw/lib/girepository-1.0";
BW_CLIENTID = "$(cat ${config.sops.defaultSymlinkPath}/bw_client_id)";
BW_CLIENTSECRET = "$(cat ${config.sops.defaultSymlinkPath}/bw_api_key)";
NIXOS_OZONE_WL = "1";
};
stateVersion = "24.05";
};
fonts.fontconfig = {
enable = true;
};
sops = {
age.keyFile = "/home/emenel/.config/sops/age/keys.txt"; # must have no password!
defaultSopsFile = ./secrets.yaml;
defaultSymlinkPath = "/run/user/1000/secrets";
defaultSecretsMountPoint = "/run/user/1000/secrets.d";
secrets.bw_client_id = {
path = "${config.sops.defaultSymlinkPath}/bw_client_id";
};
secrets.bw_api_key = {
path = "${config.sops.defaultSymlinkPath}/bw_api_key";
};
};
programs = {
home-manager.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
fish = {
enable = true;
shellAliases = {
"ls" = "eza";
".j" = "just -g";
"em" = "emacsclient -n -r";
"mkdir" = "mkdir -pv";
};
plugins = [
{
name = "upto";
src = pkgs.fetchFromGitHub {
owner = "Markcial";
repo = "upto";
rev = "2d1f35453fb55747d50da8c1cb1809840f99a646";
sha256 = "sha256-Lv2XtP2x9dkIkUUjMBWVpAs/l55Ztu7gIjKYH6ZzK4s=";
};
}
];
};
starship = {
enable = true;
enableFishIntegration = true;
};
mu.enable = true;
mbsync.enable = true;
msmtp.enable = true;
emacs = {
enable = true;
package = (pkgs.emacs.override {
withXwidgets = true;
withGTK3 = true;
withNativeCompilation = true;
withTreeSitter = true;
withImageMagick = true;
});
extraPackages = epkgs: [
epkgs.mu4e
epkgs.vterm
epkgs.sly
epkgs.sly-quicklisp
epkgs.geiser-racket
epkgs.editorconfig
epkgs.shfmt
epkgs.nixpkgs-fmt
epkgs.nixfmt
epkgs.parinfer-rust-mode
epkgs.tree-sitter-langs
epkgs.gpastel
];
};
ripgrep = {
enable = true;
};
thefuck = {
enable = true;
enableFishIntegration = true;
};
wezterm = {
enable = true;
package = inputs.wezterm.packages.${pkgs.system}.default;
};
bat = {
enable = true;
};
borgmatic = {
enable = true;
backups = {
eddie = {
location = {
patterns = [
"R /home/emenel"
"- home/emenel/.cache"
"- home/emenel/.nix*"
"- home/emenel/.steam*"
"- home/emenel/Dropbox"
"- home/emenel/Sync"
"- home/emenel/.dropbox*"
"- home/emenel/.BitwigStudio"
"- home/emenel/.local/share/bitwig"
];
repositories = [
{
"path" = "ssh://oyi3ydnz@oyi3ydnz.repo.borgbase.com/./repo";
"label" = "eddie on borgbase";
}
];
};
retention = {
keepDaily = 3;
keepHourly = 3;
keepMonthly = 2;
};
};
};
};
eza = {
enable = true;
enableFishIntegration = true;
};
fd = {
enable = true;
};
fzf = {
enable = true;
enableFishIntegration = true;
};
broot = {
enable = true;
enableFishIntegration = true;
};
git = {
enable = true;
lfs.enable = true;
};
htop.enable = true;
nnn = {
enable = true;
};
pandoc.enable = true;
password-store.enable = true;
#waybar.enable = true;
lazygit.enable = true;
jq.enable = true;
firefox.enable = true;
# thunderbird = {
# enable = true;
# package = pkgs.thunderbird-latest;
# };
rbw.enable = true;
};
dconf.settings = {
"org/gnome/desktop/background" = {
picture-options = "none";
primary-color = "#222222";
};
"org/gnome/shell/keybindings" = {
shift-overview-up = ["disabled"];
shift-overview-down = ["disabled"];
switch-to-application-1 = ["disabled"];
switch-to-application-2 = ["disabled"];
switch-to-application-3 = ["disabled"];
switch-to-application-4 = ["disabled"];
switch-to-application-5 = ["disabled"];
switch-to-application-6 = ["disabled"];
switch-to-application-7 = ["disabled"];
switch-to-application-8 = ["disabled"];
switch-to-application-9 = ["disabled"];
switch-to-application-10 = ["disabled"];
};
"org/gnome/desktop/wm/keybindings" = {
switch-to-workspace-up = ["disabled"];
switch-to-workspace-down = ["disabled"];
move-to-workspace-up = ["disabled"];
move-to-workspace-down = ["disabled"];
};
};
nixpkgs.config.packageOverrides = pkgs: {
renoise = pkgs.renoise.override {
releasePath = ../binary-installers/rns_344_linux_x86_64.tar.gz;
};
};
services = {
flatpak.enable = true;
syncthing = {
enable = true;
# tray.enable = true;
};
borgmatic = {
enable = true;
};
gpg-agent = {
enable = true;
enableFishIntegration = true;
};
emacs = {
enable = true;
defaultEditor = true;
package = pkgs.emacs;
socketActivation.enable = true;
client = {
enable = true;
arguments = ["-n" "-r"];
};
};
opensnitch-ui.enable = true;
# clipman.enable = true;
};
xdg.systemDirs.data = [
"/home/emenel/.local/share/applications/wine/Programs"
"/home/emenel/.local/share/applications"
"/var/lib/flatpak/exports/share"
"/home/emenel/.local/share/flatpak/exports/share"
"/home/emenel/.nix-profile/share/applications"
];
services.flatpak.packages = [
"com.github.tchx84.Flatseal"
"com.heroicgameslauncher.hgl"
"nl.hjdskes.gcolor3"
"org.linuxshowplayer.LinuxShowPlayer"
];
systemd.user = {
enable = true;
startServices = "sd-switch"; # auto reload services when home is rebuilt
sessionVariables = {
GSK_RENDERER = "ngl";
MOZ_ENABLE_WAYLAND = 1;
};
services.ulauncher = {
Unit = {
Description = "Start Ulauncher";
After = "graphical-session.target";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
Restart = "always";
RestartSec = 1;
ExecStart = "${pkgs.ulauncher}/bin/ulauncher --hide-window";
};
};
};
# moving files!
home.file.".npmrc".source = ../dotfiles/dot_npmrc;
# xdg.configFile."kmonad".source = ../dotfiles/dot_config/kmonad;
xdg.configFile."just/justfile".source = ../dotfiles/dot_config/just/justfile;
xdg.configFile."starship.toml".source = ../dotfiles/dot_config/starship.toml;
xdg.configFile."wezterm".source = ../dotfiles/dot_config/wezterm;
xdg.configFile."git".source = ../dotfiles/dot_config/git;
xdg.configFile."rbw".source = ../dotfiles/dot_config/rbw;
home.file.".vst3/yabridge/yabridge.toml".source = ../dotfiles/dot_vst3/yabridge.toml;
home.file.".sbclrc".source = ../dotfiles/dot_sbclrc;
home.file.".signature".source = ../dotfiles/dot_signature;
home.file.".config/fish/functions" = {
source = ../dotfiles/dot_config/fish/functions;
recursive = true;
};
home.file.".config/fish/completions" = {
source = ../dotfiles/dot_config/fish/completions;
recursive = true;
};
xdg.configFile."emacs".enable = false;
home.file.".msmtprc".source = ../dotfiles/dot_msmtprc;
home.file.".mbsyncrc".source = ../dotfiles/dot_mbsyncrc;
xdg.configFile."isyncrc".enable = false;
home.file.".local/bin" = {
source = ../dotfiles/dot_local/bin;
recursive = true;
};
home.file.".local/share/flf".source = ../dotfiles/dot_local/share/flf;
home.file.".local/share/The Usual Suspects/Vavra" = {
recursive = true;
source = ../packages/the-usual-suspects/vavra;
};
home.file.".local/share/The Usual Suspects/Xenia" = {
recursive = true;
source = ../packages/the-usual-suspects/xenia;
};
home.file.".local/share/The Usual Suspects/Osirus" = {
recursive = true;
source = ../packages/the-usual-suspects/osirus;
};
home.file.".local/share/The Usual Suspects/OsTIrus" = {
recursive = true;
source = ../packages/the-usual-suspects/ostirus;
};
home.file.".local/share/The Usual Suspects/NodalRed2x" = {
recursive = true;
source = ../packages/the-usual-suspects/nodal-red;
};
}