{ config, pkgs, lib, ... }: { imports = [ modules/gnome modules/niri modules/sway ]; home = { username = "muhh"; homeDirectory = "/home/muhh"; activation.setupEtc = config.lib.dag.entryAfter [ "writeBoundary" ] '' /run/current-system/sw/bin/systemctl start --user sops-nix ''; packages = with pkgs; [ _1password-cli _1password-gui atkinson-hyperlegible atkinson-monolegible alacritty blueman brightnessctl chafa curl darktable ddcutil ddev devenv distrobox # dog fastfetch fd ffmpegthumbnailer fuzzel git gurk-rs heroku htop httpie jq just libreoffice localsend nerd-fonts.iosevka maid mediainfo mpv morgen obsidian offpunk pamixer pavucontrol powertop prettyping qutebrowser rclone rockbox-utility rose-pine-cursor signal-desktop solargraph sops spot sxiv steam-run tmux unzip via wget whois wl-clipboard wl-mirror sway-launcher-desktop vivaldi xdg-utils zellij zulip ]; # Home Manager is pretty good at managing dotfiles. The primary way to manage # plain files is through 'home.file'. file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. # ".screenrc".source = dotfiles/screenrc; # # You can also set the file content immediately. # ".gradle/gradle.properties".text = '' # org.gradle.console=verbose # org.gradle.daemon.idletimeout=3600000 # ''; }; # You can also manage environment variables but you will have to manually # source # # ~/.nix-profile/etc/profile.d/hm-session-vars.sh # # or # # /etc/profiles/per-user/muhh/etc/profile.d/hm-session-vars.sh # # if you don't want to manage your shell through Home Manager. sessionVariables = { EDITOR = "nvim"; }; }; accounts = { email = { accounts = { privat = { primary = true; address = "markus@heurung.net"; realName = "Markus Heurung"; userName = "markus@heurung.net"; passwordCommand = ''(/run/current-system/sw/bin/cat $XDG_RUNTIME_DIR/secrets/mail/privat/password)''; imap.host = "imap.mailbox.org"; # neomutt.enable = true; mbsync = { enable = true; create = "both"; }; }; }; }; }; programs = { atuin = { enable = true; enableFishIntegration = true; flags = [ "--disable-up-arrow" ]; settings = { auto_sync = true; history_filter = [ "^..$" "^cd " "^ls " "^mv " "^rm " ]; key_path = config.sops.secrets.atuin_key.path; }; }; bat = { enable = true; }; btop = { enable = true; }; direnv = { enable = true; nix-direnv.enable = true; }; firefox = { enable = true; }; fish = { enable = true; shellAliases = { cat = "bat"; ping = "prettyping"; }; }; fzf = { enable = true; enableFishIntegration = true; }; ghostty = { enable = true; enableFishIntegration = true; }; git = { enable = true; userEmail = "markus@heurung.net"; userName = "Markus Heurung"; extraConfig = { apply.whitespace = "warn"; color = { diff = "auto"; status = "auto"; branch = "auto"; ui = "always"; }; fetch.prune = true; init.defaultBranch = "main"; pull.ff = "only"; pull.rebase = true; push.default = "current"; status.submodule = "1"; user.useConfigOnly = true; }; delta = { enable = true; options = { light = false; line-numbers = true; navigate = true; }; }; ignores = [ "*~" ".DS_Store" ".sublime-*" "*.swp" ]; }; keychain = { enable = true; enableFishIntegration = true; keys = [ "id_ed25519" "id_rsa" ]; }; kitty = { enable = true; shellIntegration.enableFishIntegration = true; keybindings = { "ctrl+shift+g" = "show_last_command_output"; "ctrl+alt+enter" = "launch --cwd=current"; "ctrl+alt+t" = "launch --type=tab --cwd=current"; "ctrl+h" = "neighboring_window left"; "ctrl+j" = "neighboring_window bottom"; "ctrl+k" = "neighboring_window top"; "ctrl+l" = "neighboring_window right"; "ctrl+shift+h" = "move_window left"; "ctrl+shift+j" = "move_window down"; "ctrl+shift+k" = "move_window up"; "ctrl+shift+l" = "move_window right"; "ctrl+shift+z" = "next_layout"; "ctrl+shift+c" = "copy_to_clipboard"; "ctrl+shift+v" = "paste_from_clipboard"; }; settings = { background_opacity = lib.mkForce "0.95"; dynamic_background_opacity = true; enabled_layouts = "tall:bias=50;full_size=1;mirrored=false,stack"; scrollback_lines = 10000; scrollback_pager_history_size = 4096; strip_trailing_space = "smart"; tab_bar_edge = "bottom"; tab_bar_min_tabs = 2; tab_bar_style = "powerline"; tab_powerline_style = "round"; tab_title_template = "{title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}"; }; }; lazygit = { enable = true; }; lsd = { enable = true; enableAliases = true; }; neomutt = { enable = true; vimKeys = true; sidebar.enable = true; }; neovide = { enable = true; settings = {}; }; newsboat = { enable = true; extraConfig = '' color background color234 default # Dark Everforest background color listnormal color249 default # Neutral gray for readability color listnormal_unread color142 default # Highlighted for unread items color listfocus color234 color142 # Inverse for focused items color listfocus_unread color234 color142 bold color info color108 color234 # Subtle info text color article color249 default # Neutral for article content # Highlights highlight article "^(Feed|Link):.*$" color109 default bold highlight article "^(Title|Date|Author):.*$" color109 default bold highlight article "https?://[^ ]+" color214 default underline # Bright orange-yellow for links highlight article "\\[[0-9]+\\]" color142 default bold # Matches unread highlight highlight article "\\[image\\ [0-9]+\\]" color142 default bold # Matches unread highlight highlight feedlist "^─.*$" color142 color234 bold ''; }; nixvim = { enable = true; defaultEditor = true; vimAlias = true; viAlias = true; vimdiffAlias = true; clipboard.providers.wl-copy.enable = true; globals.mapleader = " "; globals.maplocalleader = " "; keymaps = [ { key = "ff"; action = "Telescope find_files"; } { key = "fg"; action = "Telescope live_grep"; } { key = "fb"; action = "Telescope buffers"; } { key = "fh"; action = "Telescope help_tags"; } { key = "\\"; action = "Neotree toggle"; } { key = "?"; action = "WhichKey"; } ]; opts = { conceallevel = 1; expandtab = true; ignorecase = true; number = true; relativenumber = true; ruler = true; shiftwidth = 2; smartcase = true; tabstop = 2; }; plugins = { colorizer.enable = true; comment.enable = true; cmp = { enable = true; autoEnableSources = true; settings.sources = [ { name = "cmdline"; } { name = "emoji"; } { name = "fish"; } { name = "nvim-lsp"; } ]; }; # lualine.enable = true; fidget.enable = true; fugitive.enable = true; gitblame.enable = true; gitsigns.enable = true; lsp = { enable = true; servers = { html.enable = true; jsonls.enable = true; marksman.enable = true; solargraph.enable = true; yamlls.enable = true; }; }; mini = { enable = true; mockDevIcons = true; modules = { files = {}; icons = {}; notify = {}; statusline = {}; }; }; neogit.enable = true; neo-tree = { enable = true; enableGitStatus = true; gitStatusAsync = true; enableModifiedMarkers = true; closeIfLastWindow = true; }; nix.enable = true; noice.enable = false; # notify.enable = false; nvim-autopairs.enable = true; obsidian = { enable = true; settings = { dir = "~/muhhmory"; daily_notes = { folder = "Journal/Daily Pages"; template = "Daily Page.md"; }; templates = { subdir = "Templates"; }; }; }; oil.enable = true; render-markdown.enable = true; vim-surround.enable = true; which-key.enable = true; telescope = { enable = true; extensions = { fzf-native.enable = true; }; }; transparent.enable = true; toggleterm.enable = true; treesitter = { enable = true; settings = { indent.enable = true; }; }; # web-devicons.enable = true; zen-mode.enable = true; }; extraPlugins = with pkgs.vimPlugins; [ ]; }; nnn = { enable = true; extraPackages = with pkgs; [ ffmpegthumbnailer mediainfo sxiv ]; package = pkgs.nnn.override ({ withNerdIcons = true; }); plugins = { mappings = { c = "fzcd"; f = "finder"; v = "imgview"; }; src = (pkgs.fetchFromGitHub { owner = "jarun"; repo = "nnn"; rev = "v4.9"; sha256 = "sha256-Hpc8YaJeAzJoEi7aJ6DntH2VLkoR6ToP6tPYn3llR7k="; }) + "/plugins"; }; }; mbsync = { enable = true; }; obs-studio = { enable = true; plugins = [ pkgs.obs-studio-plugins.wlrobs ]; }; ripgrep.enable = true; starship = { enable = true; enableFishIntegration = true; }; waybar = { enable = true; systemd.enable = true; settings = { mainBar = { layer = "top"; position = "top"; height = 24; spacing = 3; output = [ "DP-1" ]; modules-left = [ "sway/workspaces" "sway/mode" "sway/scratchpad" "sway/window" "custom/media" ]; modules-center = [ "clock" "idle_inhibitor" ]; modules-right = [ "pulseaudio" "backlight" "network" "tray" "custom/notification" "custom/power" ]; "sway/scratchpad" = { format = "{icon} {count}"; show-empty = false; format-icons = ["" ""]; tooltip = true; tooltip-format = "{app}: {title}"; }; "backlight" = { device = "ddcci6"; format = "{percent}% {icon}"; format-icons = [ "" "" "" "" "" "" ""]; }; "clock" = { format = "{:%d. %B | %H:%M}"; tooltip-format = "{:%Y %B}\n{calendar}"; format-alt = "{: KW %OV, %A, %d. %B %Y | %H:%M}"; calendar = { mode = "year"; mode-mon-col = 3; weeks-pos = "right"; on-scroll = 1; on-click-right = "mode"; format = { months = "{}"; days = "{}"; weeks = "W{}"; weekdays = "{}"; today = "{}"; }; }; "actions" = { on-click-right = "mode"; on-click-forward = "tz_up"; on-click-backward = "tz_down"; on-scroll-up = "shift_up"; on-scroll-down = "shift_down"; }; }; "tray" = { icon-size = 16; spacing = 6; }; }; }; }; yazi = { enable = true; enableFishIntegration = true; }; zoxide = { enable = true; }; }; services = { mbsync = { enable = true; preExec = ""; postExec = ""; }; gnome-keyring.enable = true; playerctld.enable = true; syncthing = { enable = true; # dataDir = "/home/muhh/Sync"; # configDir = "/home/muhh/.config/syncthing"; }; }; sops = { age.keyFile = "${config.xdg.configHome}/sops/age/keys.txt"; defaultSopsFile = ./secrets/secrets.yaml; secrets = { atuin_key = {}; "mail/privat/address" = {}; "mail/privat/username" = {}; "mail/privat/password" = {}; "mail/icloud/address" = {}; "mail/icloud/username" = {}; "mail/icloud/password" = {}; }; }; stylix = { enable = true; image = /home/muhh/Sync/Backgrounds/wald.jpg; polarity = "dark"; # base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; # base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-city-terminal-dark.yaml"; #base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest.yaml"; base16Scheme = ./share/themes/flexoki-light.yaml; cursor = { name = "Rosé Pine"; package = pkgs.rose-pine-cursor; size = 48; }; fonts = { monospace = { package = pkgs.nerd-fonts.iosevka; name = "Iosevka Nerd Font"; # package = pkgs.atkinson-monolegible; # name = "Atkinson Monolegible"; }; sizes = { terminal = 14; }; }; }; # catppuccin = { # enable = true; # flavor = "mocha"; # }; xdg = { enable = true; mimeApps.enable = true; }; # leave things below alone. home.stateVersion = "23.05"; programs.home-manager.enable = true; }