{ config, pkgs, inputs, outputs, ... }: { nixpkgs = { overlays = [ outputs.overlays.additions outputs.overlays.modifications outputs.overlays.unstable-packages (import (builtins.fetchTarball { url = "https://github.com/nix-community/emacs-overlay/archive/master.tar.gz"; sha256 = "0cfz3178ija6s37pa5rdfmqpcqj38gchn1y9q4iln2jrqh8v600i"; })) ]; config = { allowUnfree = true; }; }; home = { packages = with pkgs; [ inputs.affinity-nix.packages.x86_64-linux.photo inputs.affinity-nix.packages.x86_64-linux.publisher inputs.affinity-nix.packages.x86_64-linux.designer guix unstable.thonny inputs.isd.packages.x86_64-linux.default wayback 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 gnumake flex bison mesa neofetch nvd nitch ripgrep-all silver-searcher maestral maestral-gui 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 (aspellWithDicts (dicts: with dicts; [ en en-computers en-science es fr ])) 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 python311Packages.distutils-extra python311Packages.distlib ruff (sbcl.withPackages (ps: with ps; [ # asdf_3_3 cffi arrow-macros alexandria serapeum ])) kdlfmt kdotool ccl racket gdu poppler_utils editorconfig-core-c cljfmt libxml2 gdtoolkit_4 openssl.out nixfmt-rfc-style wl-clipboard unstable.clipse maim php rustup shfmt html-tidy tree-sitter libsecret samba4Full shellcheck wayland-utils libffi.dev nodejs_18 platformio-core icloudpd libheif.out openal pkg-config ftgl gperf numbat glpng nurl freecad procs 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 git-annex 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.paperwm gnomeExtensions.custom-hot-corners-extended gnomeExtensions.media-controls gnomeExtensions.looking-glass-button gnomeExtensions.auto-power-profile gnomeExtensions.appindicator gnome-software gnome-tweaks gnome-photos gnome-keyring ulauncher unstable.nwg-look soundconverter gtop wmctrl colloid-gtk-theme colloid-icon-theme whitesur-gtk-theme whitesur-cursors whitesur-icon-theme bibata-cursors adwaita-qt icloudpd squirreldisk papers newsflash planify borgbackup vorta stirling-pdf trash-cli ripdrag wineWowPackages.stagingFull winetricks (yabridge.override { wine = wineWowPackages.stagingFull; }) (yabridgectl.override { wine = wineWowPackages.stagingFull; }) chayang sway-launcher-desktop unstable.swayosd spice spice-gtk spice-protocol virt-viewer virt-manager bfg-repo-cleaner thunderbird-latest emojify smile gnomeExtensions.smile-complementary-extension impression zoom-us nyxt unstable.ungoogled-chromium obsidian vlc unstable.polychromatic discord slack signal-desktop eyedropper calcurse onlyoffice-desktopeditors libreoffice hyphenDicts.en_US unstable.plexamp rmpc resources carla switcheroo # audacity tenacity supercollider-with-plugins #unstable.bitwig-studio bitwig-studio-beta blender davinci-resolve-studio steam unstable.processing zotero jre tesseract handbrake renoise krita darling darling-dmg rawtherapee inkscape gimp epsonscan2 kicad turbocase openscad-unstable openscad-lsp picard evolutionWithPlugins mpv plugdata pavucontrol qpwgraph helvum coppwr alsa-utils alsa-tools clapper ardour dockfmt impala unstable.playerctl mioctl unstable.door-knocker unstable.hyprpicker unstable.halloy paleta # 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"; GSK_RENDERER = "ngl"; MOZ_ENABLE_WAYLAND = 1; }; pointerCursor = { package = pkgs.bibata-cursors; name = "Bibtata-Modern-Classic"; size = 24; gtk.enable = true; x11.enable = true; }; stateVersion = "24.05"; }; # gtk.cursorTheme = { # name = "Bibata-Modern-Classic"; # package = pkgs.bibata-cursors; # }; 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"; }; bw_api_key = { path = "${config.sops.defaultSymlinkPath}/bw_api_key"; }; ssh_key = { path = "${config.sops.defaultSymlinkPath}/ssh_key"; }; borg_url = { path = "${config.sops.defaultSymlinkPath}/borg_url"; }; }; }; programs = { home-manager.enable = true; fuzzel = { enable = true; settings = { main = { terminal = "${pkgs.wezterm}/bin/wezterm"; dpi-aware = true; }; border = { radius = 8; width = 2; }; colors = { background="1e1e2edd"; text="cdd6f4ff"; prompt="bac2deff"; placeholder="7f849cff"; input="cdd6f4ff"; match="f5c2e7ff"; selection="585b70ff"; selection-text="cdd6f4ff"; selection-match="f5c2e7ff"; counter="7f849cff"; border="f5c2e7ff"; }; }; }; direnv = { enable = true; nix-direnv.enable = true; }; yazi = { enable = true; enableFishIntegration = true; package = inputs.yazi.packages.x86_64-linux.default; keymap = { manager.prepend_keymap = [ { on = ""; run = ''shell 'ripdrag "$@" -x 2>/dev/null &' --confirm''; } ]; }; settings = { }; }; fish = { enable = true; shellAliases = { "ls" = "eza"; ".j" = "just -g"; "em" = "emacsclient -n -r"; "mkdir" = "mkdir -pv"; }; interactiveShellInit = '' bind --erase \ct ''; plugins = [ { name = "upto"; src = pkgs.fetchFromGitHub { owner = "Markcial"; repo = "upto"; rev = "2d1f35453fb55747d50da8c1cb1809840f99a646"; sha256 = "sha256-Lv2XtP2x9dkIkUUjMBWVpAs/l55Ztu7gIjKYH6ZzK4s="; }; } ]; }; zoxide = { enable = true; }; starship = { enable = true; }; mu.enable = true; mbsync.enable = true; msmtp.enable = true; emacs = { enable = true; package = ((pkgs.emacsPackagesFor pkgs.emacs29-pgtk).emacsWithPackages ( epkgs: [ epkgs.vterm epkgs.mu4e 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.treesit-grammars.with-all-grammars epkgs.pretty-sha-path epkgs.pdf-tools ] )); }; ripgrep = { enable = true; }; thefuck = { enable = true; }; ghostty = { enable = true; package = inputs.ghostty.packages.x86_64-linux.ghostty; 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; }; fd = { enable = true; }; fzf = { enable = true; enableFishIntegration = false; }; broot = { enable = true; }; git = { enable = true; lfs.enable = true; }; htop.enable = true; nnn = { enable = true; }; pandoc.enable = true; password-store.enable = true; wlogout = { enable = true; }; swaylock = { enable = true; settings = { color="000000"; bs-hl-color="f5e0dc"; caps-lock-bs-hl-color="f5e0dc"; caps-lock-key-hl-color="a6e3a1"; inside-color="00000000"; inside-clear-color="00000000"; inside-caps-lock-color="00000000"; inside-ver-color="00000000"; inside-wrong-color="00000000"; key-hl-color="a6e3a1"; layout-bg-color="00000000"; layout-border-color="00000000"; layout-text-color="cdd6f4"; line-color="00000000"; line-clear-color="00000000"; line-caps-lock-color="00000000"; line-ver-color="00000000"; line-wrong-color="00000000"; ring-color="b4befe"; ring-clear-color="f5e0dc"; ring-caps-lock-color="fab387"; ring-ver-color="89b4fa"; ring-wrong-color="eba0ac"; separator-color="00000000"; text-color="cdd6f4"; text-clear-color="f5e0dc"; text-caps-lock-color="fab387"; text-ver-color="89b4fa"; text-wrong-color="eba0ac"; }; }; waybar = { enable = true; package = pkgs.unstable.waybar; # systemd = { # enable = true; # # target = "graphical-session.target"; # }; }; eww = { enable = true; configDir = ../dotfiles/dot_config/eww; }; lazygit.enable = true; jq.enable = true; firefox.enable = true; rbw = { enable = true; package = pkgs.rbw-latest; }; }; dconf.settings = { "org/gnome/desktop/background" = { picture-options = "none"; primary-color = "#333333"; }; "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; "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 = { swayidle = { enable = true; extraArgs = [ "-w" ]; timeouts = [ { timeout = 120; command = "${pkgs.swaylock}/bin/swaylock -fF"; } { timeout = 300; command = "${pkgs.systemd}/bin/systemctl suspend"; } ]; events = [ { event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock -fF"; } { event = "lock"; command = "lock"; } ]; }; playerctld = { enable = true; package = pkgs.unstable.playerctl; }; mako = { enable = true; defaultTimeout = 10000; }; flatpak.enable = true; syncthing = { enable = true; # tray.enable = true; }; borgmatic = { enable = true; }; gpg-agent = { enable = true; }; emacs = { enable = true; defaultEditor = true; package = ((pkgs.emacsPackagesFor pkgs.emacs29-pgtk).emacsWithPackages ( epkgs: [ epkgs.vterm epkgs.mu4e 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.treesit-grammars.with-all-grammars epkgs.pretty-sha-path epkgs.pdf-tools ] )); socketActivation.enable = true; client = { enable = true; arguments = ["-n" "-r"]; }; }; }; 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" "nl.hjdskes.gcolor3" "dev.qwery.AddWater" ]; systemd.user = { enable = true; startServices = "sd-switch"; # auto reload services when home is rebuilt sessionVariables = { GSK_RENDERER = "ngl"; MOZ_ENABLE_WAYLAND = 1; }; services = { # syncthingtray = { # Service.ExecStart = lib.mkForce "${pkgs.syncthingtray}/bin/syncthingtray --wait"; # }; # 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! xdg.configFile."halloy/config.toml".source = ../dotfiles/dot_config/halloy/config.toml; xdg.configFile."waybar".source = ../dotfiles/dot_config/waybar; xdg.configFile."just/justfile".source = ../dotfiles/dot_config/just/justfile; xdg.configFile."starship.toml".source = ../dotfiles/dot_config/starship.toml; xdg.configFile."ghostty".source = ../dotfiles/dot_config/ghostty; xdg.configFile."wezterm".source = ../dotfiles/dot_config/wezterm; xdg.configFile."git".source = ../dotfiles/dot_config/git; xdg.configFile."rbw".source = ../dotfiles/dot_config/rbw; xdg.configFile."niri/config.kdl".source = ../dotfiles/dot_config/niri/config.kdl; home.file.".ssh/config".source = ../dotfiles/dot_ssh/config; home.file.".npmrc".source = ../dotfiles/dot_npmrc; 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; }; }