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 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; }; }