nixconfig/home.nix

642 lines
14 KiB
Nix
Raw Normal View History

2024-07-09 18:35:03 +00:00
args@{ config, pkgs, split-monitor-workspaces, flatpaks, ... }:
2023-11-15 16:09:47 +00:00
{
home.username = "zilti";
home.homeDirectory = "/home/zilti";
home.packages = with pkgs; [
2023-11-22 17:05:08 +00:00
appimage-run
binutils
2024-08-21 15:30:52 +00:00
bitwarden-desktop
bitwarden-cli
2024-09-30 13:37:47 +00:00
blueman
2023-11-20 17:18:47 +00:00
brightnessctl
2023-11-16 10:30:36 +00:00
coreutils-full
2024-07-10 08:41:11 +00:00
clojure-lsp
2023-11-15 16:09:47 +00:00
discord
2023-11-27 10:24:47 +00:00
edwood
2023-11-22 17:05:08 +00:00
file
2023-11-16 10:30:36 +00:00
fossil
2023-11-23 21:42:11 +00:00
fprintd-tod
2023-11-15 16:09:47 +00:00
freetube
freetype
2023-11-16 10:30:36 +00:00
gcc
2024-08-22 14:27:34 +00:00
ghostscript
2024-08-30 09:27:10 +00:00
gimp-with-plugins
2023-11-16 10:30:36 +00:00
git-cola
git-doc
git-filter-repo
2024-09-05 17:44:18 +00:00
gparted
2023-11-16 10:30:36 +00:00
grim
2023-11-27 10:24:47 +00:00
home-manager
2024-09-12 17:36:23 +00:00
#hyprcursor
2024-08-22 14:27:34 +00:00
hyprpaper
2023-11-16 10:30:36 +00:00
iconv
2024-09-25 23:07:10 +00:00
krita
2023-11-16 10:30:36 +00:00
kteatime
lagrange
2024-08-30 09:27:10 +00:00
libreoffice-qt6-fresh
2024-07-04 14:07:50 +00:00
liquidprompt
2024-08-30 15:17:48 +00:00
kdePackages.ark
kdePackages.breeze-icons
2024-07-02 17:45:10 +00:00
kdePackages.dolphin
2024-09-05 17:44:18 +00:00
# kdePackages.kdesu
# kdePackages.kde-cli-tools
2024-08-31 00:16:11 +00:00
kdePackages.kitinerary
2024-07-02 17:45:10 +00:00
kdePackages.ksshaskpass
2024-09-23 10:57:51 +00:00
kdePackages.ktorrent
2024-07-02 17:45:10 +00:00
kdePackages.okular
2024-08-31 00:16:11 +00:00
kdePackages.partitionmanager
2024-08-30 15:17:48 +00:00
kdePackages.qtsvg
kdePackages.qtwayland
kdePackages.wayland
kdePackages.wayland-protocols
2024-09-05 17:44:18 +00:00
libsForQt5.kde-cli-tools
2023-11-16 10:30:36 +00:00
libuuid
lm_sensors
2023-11-16 11:09:43 +00:00
gnumake
2024-08-21 15:30:52 +00:00
mattermost-desktop
2023-12-15 12:41:21 +00:00
# (nerdfonts.override { fonts = [ "VictorMono" "MPlus" ]; })
nerdfonts
2024-07-10 08:41:11 +00:00
nixd
nixfmt-rfc-style
2024-07-04 14:07:50 +00:00
nwg-displays
2024-09-11 15:44:12 +00:00
obs-studio
2023-11-16 10:30:36 +00:00
pciutils
2023-11-17 23:41:35 +00:00
pharo
2023-11-19 23:03:24 +00:00
pijul
2023-11-16 10:30:36 +00:00
pinentry-qt
pixman
2023-11-17 02:22:38 +00:00
plan9port
2024-07-10 11:07:51 +00:00
pynitrokey
nitrokey-app2
2023-11-16 10:30:36 +00:00
pwvucontrol
2024-08-31 00:16:11 +00:00
rar
retroarchFull
2024-09-26 21:15:38 +00:00
rlwrap
2023-11-27 10:24:47 +00:00
senpai
2023-11-16 10:30:36 +00:00
signal-desktop
slurp
space-cadet-pinball
2024-08-31 00:16:11 +00:00
sshfs
2024-09-16 06:32:13 +00:00
subversionClient
2023-11-16 10:30:36 +00:00
sqlite
stow
swappy
sysstat
telegram-desktop
ungoogled-chromium
unzip
usbutils
2023-11-28 15:46:57 +00:00
vlc
2023-11-16 10:30:36 +00:00
wlr-randr
2023-11-15 16:09:47 +00:00
];
2023-11-19 23:29:24 +00:00
imports = [ ./hyprland/hyprland.nix
./waybar/settings.nix
./emacs/emacs.nix
2024-09-16 23:16:26 +00:00
# ./chicken/chicken.nix
2023-12-06 12:12:37 +00:00
];
2023-11-15 16:09:47 +00:00
2024-07-09 15:11:26 +00:00
home.stateVersion = "24.05";
2023-11-15 16:09:47 +00:00
programs.home-manager.enable = true;
2023-12-06 11:16:14 +00:00
home.sessionPath = [ "${config.home.homeDirectory}/.config/emacs/bin" "${config.home.homeDirectory}/.local/bin" ];
2023-11-15 16:09:47 +00:00
home.sessionVariables = {
2024-07-04 14:07:50 +00:00
#PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.local/share/password-store";
PATH = "$PATH:~/.local/bin";
2024-07-09 18:35:03 +00:00
#PASSWORD_STORE_DIR = "$XDG_DATA_HOME/password-store";
2023-11-15 16:09:47 +00:00
SSH_ASKPASS = "${pkgs.libsForQt5.ksshaskpass}/bin/ksshaskpass";
2024-09-11 15:44:12 +00:00
CHICKEN_DOC_REPOSITORY = "${config.home.homeDirectory}/.local/chicken/doc/chicken-doc";
2024-09-16 23:16:26 +00:00
# CHICKEN_INSTALL_REPOSITORY = "${config.home.homeDirectory}/.local/chicken/eggs";
# CHICKEN_REPOSITORY_PATH = "$CHICKEN_REPOSITORY_PATH:${config.home.sessionVariables.CHICKEN_INSTALL_REPOSITORY}";
# CHICKEN_INSTALL_PREFIX = "/home/zilti/.local";
2024-07-04 14:07:50 +00:00
RTC_USE_PIPEWIRE = "true";
2024-09-16 23:16:26 +00:00
HYPRCURSOR_SIZE = 32;
2024-08-21 16:18:08 +00:00
BW_SESSION = (builtins.readFile "${config.home.homeDirectory}/.vw-session-key");
2024-08-30 15:17:48 +00:00
QT_QPA_PLATFORM = "wayland";
2023-11-15 16:09:47 +00:00
};
2024-09-16 12:33:19 +00:00
home.shellAliases = {
2024-09-23 10:57:51 +00:00
"git-init" = "git init --object-format=sha256";
2024-09-16 12:33:19 +00:00
};
2023-11-15 16:09:47 +00:00
accounts = {
2023-11-19 23:29:24 +00:00
# calendar = {
# basePath = "${config.home.homeDirectory}/calendars";
# accounts = {
# nextcloud = {
# primary = true;
# remote = {
# type = "caldav";
# url = "https://nextcloud.lyrion.ch/remote.php/dav/calendars/zilti";
# userName = "dziltener@lyrion.ch";
# passwordCommand = [ "pass" "Privat/Nextcloud" ];
# };
# vdirsyncer = {
# enable = false;
# auth = "guess";
# itemTypes = "caldav";
# };
# khal = {
# enable = true;
# type = "discover";
# };
# };
# };
# };
# contact = {
# basePath = "${config.home.homeDirectory}/contacts";
# accounts = {
# nextcloud = {
# remote = {
# type = "carddav";
# url =
# "https://nextcloud.lyrion.ch/rempte.php/dav/addressbooks/users/zilti";
# userName = "dziltener@lyrion.ch";
# passwordCommand = [ "pass" "Privat/Nextcloud" ];
# };
# vdirsyncer = {
# enable = false;
# auth = "digest";
# };
# khal = { enable = true; };
# khard = { enable = true; };
# };
# };
# };
2023-11-15 16:09:47 +00:00
email = {
accounts = {
LMail = {
realName = "Daniel Ziltener";
userName = "dziltener";
passwordCommand = "pass Privat/Mailaccount | head -n 1";
primary = true;
address = "dziltener@lyrion.ch";
imap = {
host = "lyrion.ch";
2024-08-22 14:27:34 +00:00
port = 993;
2023-11-15 16:09:47 +00:00
tls = {
enable = true;
};
};
smtp = {
host = "lyrion.ch";
2024-08-22 14:27:34 +00:00
port = 465;
2023-11-15 16:09:47 +00:00
tls = {
enable = true;
2024-08-21 15:30:52 +00:00
};
};
thunderbird = { enable = true; };
aerc = { enable = true; };
};
bevuta = {
realName = "Daniel Ziltener";
userName = "daniel.ziltener@bevuta.com";
2024-09-30 00:51:03 +00:00
passwordCommand = "pass Bevuta/E-Mail | head -n 1";
2024-08-21 15:30:52 +00:00
address = "daniel.ziltener@bevuta.com";
imap = {
host = "mail.networkname.de";
2024-09-30 00:51:03 +00:00
port = 993;
2024-08-21 15:30:52 +00:00
tls = {
enable = true;
};
};
smtp = {
host = "mail.networkname.de";
2024-09-30 00:51:03 +00:00
port = 465;
2024-08-21 15:30:52 +00:00
tls = {
enable = true;
2023-11-15 16:09:47 +00:00
};
};
thunderbird = { enable = true; };
aerc = { enable = true; };
};
};
};
};
services.flatpak = {
enableModule = true;
remotes = {
"flathub" = "https://dl.flathub.org/repo/flathub.flatpakrepo";
"flathub-beta" =
"https://dl.flathub.org/beta-repo/flathub-beta.flatpakrepo";
};
packages = [
"flathub:app/com.github.tchx84.Flatseal//stable"
"flathub:app/com.usebottles.bottles//stable"
"flathub:app/info.beyondallreason.bar//stable"
2024-08-25 19:38:33 +00:00
"flathub:app/com.valvesoftware.Steam//stable"
2024-10-03 15:23:45 +00:00
"flathub:app/net.lutris.Lutris//stable"
2024-08-25 19:38:33 +00:00
"flathub:runtime/org.freedesktop.Platform.VulkanLayer.gamescope//stable"
2023-11-15 16:09:47 +00:00
];
};
2024-09-12 17:36:23 +00:00
home.pointerCursor = {
package = pkgs.hackneyed;
name = "Hackneyed";
2024-09-16 23:16:26 +00:00
size = 32;
2024-09-12 17:36:23 +00:00
};
2024-07-04 14:07:50 +00:00
services.syncthing = {
enable = true;
2024-07-12 19:32:57 +00:00
# tray.enable = true;
2024-07-04 14:07:50 +00:00
};
2023-11-15 16:09:47 +00:00
fonts.fontconfig.enable = true;
services.plan9port = {
fontsrv.enable = true;
plumber.enable = true;
};
programs.kitty = {
enable = true;
environment = { };
settings = {
background_opacity = "0.85";
kitty_mod = "ctrl+shift";
enabled_layouts = "horizontal";
};
keybindings = { "kitty_mod+enter" = "new_window"; };
font = {
name = "VictorMono Nerd Font Mono";
size = 10;
};
theme = "Catppuccin-Frappe";
};
programs.bash = {
enable = true;
enableCompletion = true;
bashrcExtra = ''
2024-07-09 23:10:05 +00:00
shopt -s histappend
shopt -s checkwinsize
shopt -s extglob
shopt -s globstar
shopt -s checkjobs
2024-08-21 16:18:08 +00:00
eval "$(cat ${pkgs.liquidprompt}/bin/liquidprompt)"
eval "$(cat ${pkgs.liquidprompt}/share/liquidprompt/themes/alternate_vcs/alternate_vcs.theme)"
2023-11-15 16:09:47 +00:00
'';
};
programs.tmux = {
enable = true;
mouse = true;
extraConfig = ''set-option -sa terminal-overrides ",xterm*:Tc"'';
};
# https://github.com/nix-community/nix-direnv
programs.direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
programs.hstr = { enable = true; };
programs.htop = { enable = true; };
programs.ripgrep = { enable = true; };
2023-11-27 10:24:47 +00:00
home.file.".config/senpai/senpai.scfg" = {
enable = true;
text = ''
address ircs://lyrion.ch
nickname zilti
realname "Daniel Ziltener"
password-cmd pass show Privat/Soju
'';
};
2024-07-09 23:10:05 +00:00
home.file.".config/xdg-desktop-portal/hyprland-portals.conf" = {
enable = true;
text = ''
[preferred]
default=hyprland;gtk
org.freedesktop.impl.portal.FileChooser=kde
'';
};
2024-07-09 18:35:03 +00:00
programs.gpg = {
2023-11-15 16:09:47 +00:00
enable = true;
2024-07-09 18:35:03 +00:00
settings = {
utf8-strings = true;
auto-key-retrieve = true;
};
};
services.gpg-agent = {
enable = true;
2024-07-10 11:13:19 +00:00
enableScDaemon = true;
2024-07-09 18:35:03 +00:00
enableSshSupport = true;
defaultCacheTtl = 7200;
maxCacheTtl = 7200;
defaultCacheTtlSsh = 7200;
maxCacheTtlSsh = 7200;
pinentryPackage = pkgs.pinentry-qt;
extraConfig = ''
2023-11-15 16:09:47 +00:00
allow-emacs-pinentry
allow-loopback-pinentry
'';
};
programs.rbw = {
enable = true;
settings = {
base_url = "vaultwarden.lyrion.ch";
email = "dziltener@lyrion.ch";
2024-07-09 18:35:03 +00:00
pinentry = pkgs.pinentry-qt;
2023-11-15 16:09:47 +00:00
};
};
programs.git = {
enable = true;
userName = "Daniel Ziltener";
userEmail = "dziltener@lyrion.ch";
signing = {
key = "37F655BAF43BC0FF300A91A1B38976E82C9DAE42";
signByDefault = true;
};
diff-so-fancy = { enable = true; };
extraConfig = {
sendemail = {
2024-09-26 21:38:57 +00:00
annotate = true;
2023-11-15 16:09:47 +00:00
smtpserver = "lyrion.ch";
smtpuser = "dziltener";
2024-09-26 21:38:57 +00:00
smtpencryption = "ssl";
2023-11-15 16:09:47 +00:00
smtpserverport = 465;
};
rebase.autoStash = true;
pull.rebase = true;
push.autoSetupRemote = true;
2024-09-16 08:11:29 +00:00
init = {
defaultBranch = "master";
2024-09-16 12:33:19 +00:00
};
extensions = {
2024-09-16 08:11:29 +00:00
objectFormat = "sha256";
};
2024-09-30 00:51:03 +00:00
"gitlab.dev.bevuta.com/api/v4" = {
user = "daniel.ziltener@bevuta.com";
};
2023-11-15 16:09:47 +00:00
};
};
programs.git-cliff = {
enable = true;
# https://git-cliff.org/docs/configuration
settings = { };
};
programs.tealdeer = { enable = true; };
# https://github.com/ianthehenry/sd
programs.script-directory = {
enable = true;
settings = { SD_EDITOR = "vim"; };
};
programs.password-store = {
enable = true;
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
};
programs.browserpass = { enable = true; };
services.pueue = { enable = true; };
services.network-manager-applet.enable = true;
services.batsignal = { enable = true; };
# services.fusuma = {
# enable = true;
# };
services.copyq = { enable = true; };
# programs.vdirsyncer = {
# enable = true;
# };
# programs.khal = {
# enable = true;
# };
# programs.khard = {
# enable = true;
# };
2023-11-19 23:29:24 +00:00
# programs.aerc = {
# enable = true;
# extraConfig = { general = { unsafe-accounts-conf = true; }; };
# };
2023-11-15 16:09:47 +00:00
services.kdeconnect = {
enable = true;
2024-08-27 20:22:50 +00:00
package = pkgs.kdePackages.kdeconnect-kde;
2023-11-15 16:09:47 +00:00
indicator = true;
};
programs.ssh = {
enable = true;
2024-08-21 18:32:40 +00:00
addKeysToAgent = "yes";
2023-11-15 16:09:47 +00:00
matchBlocks = {
2024-08-21 18:32:40 +00:00
"dev.bevuta.com" = {
user = "git";
hostname = "dev.bevuta.com";
identitiesOnly = true;
identityFile = "~/.ssh/personal_ed";
};
"git.sr.ht" = {
user = "git";
hostname = "git.sr.ht";
identitiesOnly = true;
identityFile = "~/.ssh/personal_ed";
};
2023-11-15 16:09:47 +00:00
"github.com" = {
user = "git";
hostname = "github.com";
identitiesOnly = true;
identityFile = "~/.ssh/personal_ed";
};
2024-09-30 00:51:03 +00:00
"forgejo.lyrion.ch" = {
2023-11-15 16:09:47 +00:00
user = "git";
2024-09-30 00:51:03 +00:00
hostname = "forgejo.lyrion.ch";
2023-11-15 16:09:47 +00:00
port = 7920;
identitiesOnly = true;
identityFile = "~/.ssh/personal_ed";
};
};
};
2024-07-09 15:11:26 +00:00
# services.nextcloud-client = {
# enable = true;
# startInBackground = true;
# };
2023-11-15 16:09:47 +00:00
2024-07-02 17:45:10 +00:00
# programs.swaylock = {
# enable = true;
# package = "${pkgs.swaylock-effects}";
# settings = {
# screenshots = true;
# clock = true;
# indicator-idle-visible = true;
# grace = 3;
# fade-in = 3;
# effect-blur = "7x5";
# effect-vignette = "0.5:0.5";
# };
# };
2024-07-09 15:11:26 +00:00
programs.hyprlock = {
enable = true;
settings = {
general = {
grace = 3;
};
background = {
path = "screenshot";
blur_passes = 2;
2024-08-22 14:27:34 +00:00
blur_size = 8;
2024-07-09 15:11:26 +00:00
noise = 0.0117;
contrast = 0.8916;
brightness = 0.8172;
vibrancy = 0.1696;
vibrancy_darkness = 0.0;
};
input-field = {
size = "200, 50";
outline_thickness = 3;
dots_size = 0.33;
dots_spacing = 0.15;
dots_center = true;
dots_rounding = -1;
outer_color = "rgb(151515)";
inner_color = "rgb(200,200,200)";
font_color = "rgb(10,10,10)";
fade_on_empty = true;
fade_timeout = 1000;
placeholder_text = "<i>Input Password...</i>";
hide_input = false;
rounding = -1;
check_color = "rgb(204,136,34)";
fail_color = "rgb(204,34,34)";
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
fail_transition = 300;
capslock_color = -1;
numlock_color = -1;
bothlock_color = -1;
invert_numlock = false;
position = "0, -20";
halign = "center";
valign = "center";
};
};
};
2024-07-02 17:45:10 +00:00
# services.swayidle = {
# enable = true;
# events = [ ];
# timeouts = [{
# timeout = 600;
2024-07-12 20:48:19 +00:00
# #command = "${pkgs.swaylock-effects}/bin/swaylock";
# command = "hyprlock";
2024-07-02 17:45:10 +00:00
# }];
# };
2024-07-09 15:11:26 +00:00
services.hypridle = {
enable = true;
settings = {
general = {
after_sleep_cmd = "hyprctl dispatch dpms on";
};
listener = [
{
timeout = 300;
2024-08-23 17:32:20 +00:00
on-timeout = "${pkgs.hyprlock}/bin/hyprlock";
2024-07-09 15:11:26 +00:00
}
{
timeout = 1200;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
2024-07-09 18:35:03 +00:00
}
2024-07-09 15:11:26 +00:00
];
};
};
2024-09-19 13:52:32 +00:00
services.hyprpaper = {
2024-08-22 14:27:34 +00:00
enable = true;
settings = {
ipc = "on";
splash = true;
splash_offset = 2.0;
preload = [
"${config.home.homeDirectory}/Stow/Desktop/config/wallpapers/Next/contents/images/3840x2160.png"
];
wallpaper = [
",${config.home.homeDirectory}/Stow/Desktop/config/wallpapers/Next/contents/images/3840x2160.png"
];
};
};
2024-07-02 17:45:10 +00:00
# services.mako = {
# enable = true;
# defaultTimeout = 5000;
# };
# services.gammastep = {
# enable = true;
# provider = "geoclue2";
# temperature = {
# day = 5500;
# night = 2700;
# };
# };
2024-07-09 15:11:26 +00:00
services.swaync = {
enable = true;
# https://github.com/ErikReider/SwayNotificationCenter/blob/main/src/configSchema.json
settings = {
notification-inline-replies = true;
};
};
2024-07-04 14:07:50 +00:00
programs.wlogout = { enable = true; };
2024-07-02 17:45:10 +00:00
2024-07-04 14:07:50 +00:00
programs.fuzzel = {
enable = true;
settings = {
main = {
terminal = "${pkgs.kitty}/bin/kitty";
width = 100;
fields = "filename,name,generic,exec";
show-actions = true;
filter-desktop = false;
layer = "overlay";
};
};
};
2024-07-02 17:45:10 +00:00
2024-07-04 14:07:50 +00:00
qt = {
enable = true;
2024-08-29 08:26:26 +00:00
style = {
name = "breeze";
package = pkgs.kdePackages.breeze;
};
2024-07-04 14:07:50 +00:00
};
2023-11-15 16:09:47 +00:00
programs.firefox = {
enable = true;
profiles.default = { isDefault = true; };
};
programs.thunderbird = {
enable = true;
profiles.default = { isDefault = true; };
};
}