feat!: move everything around to accomodate two system configurations in one repo
This commit is contained in:
parent
d735060641
commit
53a2609204
82 changed files with 1786 additions and 863 deletions
38
modules/home-manager/programs/alacritty.nix
Normal file
38
modules/home-manager/programs/alacritty.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
catppuccin-theme = pkgs.fetchFromGitHub {
|
||||
owner = "catppuccin";
|
||||
repo = "alacritty";
|
||||
rev = "94800165c13998b600a9da9d29c330de9f28618e";
|
||||
hash = "sha256-Pi1Hicv3wPALGgqurdTzXEzJNx7vVh+8B9tlqhRpR2Y=";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
import = [ "${catppuccin-theme}/catppuccin-frappe.toml" ];
|
||||
|
||||
font = {
|
||||
normal = {
|
||||
family = "FantasqueSansM Nerd Font";
|
||||
style = "Regular";
|
||||
};
|
||||
|
||||
size = 13;
|
||||
};
|
||||
|
||||
window = {
|
||||
decorations = "None";
|
||||
opacity = 0.88;
|
||||
blur = true;
|
||||
|
||||
padding = {
|
||||
x = 18;
|
||||
y = 18;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
19
modules/home-manager/programs/default.nix
Normal file
19
modules/home-manager/programs/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./alacritty.nix
|
||||
./direnv
|
||||
./emacs
|
||||
./fish
|
||||
./git.nix
|
||||
./hyprland
|
||||
./mangohud.nix
|
||||
./obs-studio.nix
|
||||
./rofi
|
||||
./spotify
|
||||
./tmux
|
||||
./waybar.nix
|
||||
./neovim
|
||||
];
|
||||
}
|
19
modules/home-manager/programs/direnv/default.nix
Normal file
19
modules/home-manager/programs/direnv/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
|
||||
config = {
|
||||
whitelist = {
|
||||
prefix = [
|
||||
"/mnt/internal/personal/projects"
|
||||
"/mnt/internal/repos"
|
||||
"/mnt/internal/shared/projects"
|
||||
"/mnt/internal/shared/work"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
33
modules/home-manager/programs/emacs/default.nix
Normal file
33
modules/home-manager/programs/emacs/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
# CORE
|
||||
git
|
||||
emacs
|
||||
ripgrep
|
||||
|
||||
# Optional for DOOM
|
||||
clang
|
||||
coreutils
|
||||
fd
|
||||
|
||||
pandoc # For org-pandoc
|
||||
(aspellWithDicts (
|
||||
dicts: with dicts; [
|
||||
en
|
||||
pt_BR
|
||||
]
|
||||
)) # for flyspell
|
||||
gnuplot_qt # for plotting graphs
|
||||
languagetool # for grammar
|
||||
ledger # for accounting and org-ledger
|
||||
gzip # Otherwise random errors occur from the onChange script
|
||||
];
|
||||
|
||||
# Neatly place the configuration files for doom in their right place.
|
||||
xdg.configFile."doom" = {
|
||||
source = ./doom;
|
||||
recursive = true;
|
||||
};
|
||||
}
|
103
modules/home-manager/programs/emacs/doom/config.el
Normal file
103
modules/home-manager/programs/emacs/doom/config.el
Normal file
|
@ -0,0 +1,103 @@
|
|||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets. It is optional.
|
||||
(setq user-full-name "Alexandre Cavalheiro S. Tiago da Silva"
|
||||
user-mail-address "contact@thewizard.link")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||
;;
|
||||
;; - `doom-font' -- the primary font to use
|
||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;; - `doom-symbol-font' -- for symbols
|
||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||
;;
|
||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||
;; accept. For example:
|
||||
;;
|
||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||
;;
|
||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||
(setq doom-font (font-spec :family "FantasqueSansM Nerd Font" :size 16))
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'catppuccin)
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/Documents/notes"
|
||||
org-agenda-files (doom-files-in `(,org-directory, "~/Documents/zettelkasten") :type 'files :match "\\.org\\'"))
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
;;
|
||||
;; (after! PACKAGE
|
||||
;; (setq x y))
|
||||
;;
|
||||
;; The exceptions to this rule:
|
||||
;;
|
||||
;; - Setting file/directory variables (like `org-directory')
|
||||
;; - Setting variables which explicitly tell you to set them before their
|
||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||
;;
|
||||
;; Here are some additional functions/macros that will help you configure Doom.
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||
;; etc).
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
;; Set the tab size to 2
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Configure initial major mode for the scratch buffer
|
||||
(setq initial-major-mode 'org-mode)
|
||||
|
||||
;; Configure orm-roam
|
||||
(setq org-roam-directory "~/Documents/zettelkasten")
|
||||
(map! (:leader :desc "Opens a daily note through the calendar" :n "nrdF" #'org-roam-dailies-find-date))
|
||||
|
||||
(use-package! org-roam-ui
|
||||
:after org-roam
|
||||
:config
|
||||
(setq org-roam-ui-sync-theme t
|
||||
org-roam-ui-follow t
|
||||
org-roam-ui-update-on-save t
|
||||
org-roam-ui-open-on-start t))
|
||||
|
||||
;; Configure doom-themes with treemacs
|
||||
(with-eval-after-load 'doom-themes
|
||||
(doom-themes-treemacs-config))
|
||||
|
||||
;; Configure elfeed-org
|
||||
(setq rmh-elfeed-org-files '("/home/wizardlink/Documents/notes/elfeed.org"))
|
202
modules/home-manager/programs/emacs/doom/init.el
Normal file
202
modules/home-manager/programs/emacs/doom/init.el
Normal file
|
@ -0,0 +1,202 @@
|
|||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
indent-guides ; highlighted indent columns
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
nav-flash ; blink cursor line after big motions
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
(treemacs +lsp) ; a project drawer, like neotree but cooler
|
||||
unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
term ; basic terminal emulator for Emacs
|
||||
;;vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell ; tasing you for misspelling mispelling
|
||||
+aspell
|
||||
+flyspell)
|
||||
grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;collab ; buffers with friends
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
lookup ; navigate your code and its documentation
|
||||
;lsp ; M-x vscode
|
||||
;;magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
;;(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
;;json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
(latex ; writing papers in Emacs has never been so fun
|
||||
+lsp
|
||||
+cdlatex)
|
||||
;;lean ; for folks with too much to prove
|
||||
ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
;;nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
(org ; organize your plain life in plain text
|
||||
+gnuplot
|
||||
+pandoc
|
||||
+pretty
|
||||
+roam2)
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
;;python ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
;;yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
57
modules/home-manager/programs/emacs/doom/packages.el
Normal file
57
modules/home-manager/programs/emacs/doom/packages.el
Normal file
|
@ -0,0 +1,57 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;; (package! another-package
|
||||
;; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;; (package! this-package
|
||||
;; :recipe (:host github :repo "username/repo"
|
||||
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;; (package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;; (package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;; (unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;; (unpin! t)
|
||||
|
||||
;; Add org-roam-ui so I can see the node graph of my notes.
|
||||
(unpin! org-roam)
|
||||
(package! org-roam-ui)
|
||||
|
||||
;; Add catppuccin theme.
|
||||
(package! catppuccin-theme)
|
|
@ -0,0 +1,19 @@
|
|||
# -*- mode: snippet -*-
|
||||
# name: daily
|
||||
# key: daily
|
||||
# --
|
||||
#+filetags: :daily:$1
|
||||
|
||||
* Tasks
|
||||
$2
|
||||
* Input
|
||||
* Output
|
||||
* Morning Journal
|
||||
** What are you grateful for?
|
||||
** What do you want today's highlight to be?
|
||||
** What's on your mind?
|
||||
* Evening Reflection
|
||||
** How are you feeling today?
|
||||
** What could you have done better?
|
||||
** Amazing things that happened
|
||||
** What did you learn today?
|
|
@ -0,0 +1,25 @@
|
|||
#+title: %<%Y-%m-%d>
|
||||
#+filetags: :daily:
|
||||
|
||||
* Morning Journal
|
||||
** What are you grateful for?
|
||||
|
||||
** What do you want the today's highlight to be?
|
||||
|
||||
** Daily affirmations
|
||||
*** What's on your mind?
|
||||
|
||||
* Tasks
|
||||
|
||||
* Input
|
||||
|
||||
* Output
|
||||
|
||||
* Evening Reflection
|
||||
** How are you feeling today?
|
||||
|
||||
** What could you have done better?
|
||||
|
||||
** Amazing things that happend
|
||||
|
||||
** What did you learn today?
|
30
modules/home-manager/programs/fish/Catppuccin-Frappe.theme
Normal file
30
modules/home-manager/programs/fish/Catppuccin-Frappe.theme
Normal file
|
@ -0,0 +1,30 @@
|
|||
# name: 'Catppuccin frappe'
|
||||
# url: 'https://github.com/catppuccin/fish'
|
||||
# preferred_background: 303446
|
||||
|
||||
fish_color_normal c6d0f5
|
||||
fish_color_command 8caaee
|
||||
fish_color_param eebebe
|
||||
fish_color_keyword e78284
|
||||
fish_color_quote a6d189
|
||||
fish_color_redirection f4b8e4
|
||||
fish_color_end ef9f76
|
||||
fish_color_comment 838ba7
|
||||
fish_color_error e78284
|
||||
fish_color_gray 737994
|
||||
fish_color_selection --background=414559
|
||||
fish_color_search_match --background=414559
|
||||
fish_color_option a6d189
|
||||
fish_color_operator f4b8e4
|
||||
fish_color_escape ea999c
|
||||
fish_color_autosuggestion 737994
|
||||
fish_color_cancel e78284
|
||||
fish_color_cwd e5c890
|
||||
fish_color_user 81c8be
|
||||
fish_color_host 8caaee
|
||||
fish_color_host_remote a6d189
|
||||
fish_color_status e78284
|
||||
fish_pager_color_progress 737994
|
||||
fish_pager_color_prefix f4b8e4
|
||||
fish_pager_color_completion c6d0f5
|
||||
fish_pager_color_description 737994
|
65
modules/home-manager/programs/fish/default.nix
Normal file
65
modules/home-manager/programs/fish/default.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
|
||||
interactiveShellInit = ''
|
||||
## Set vim mode
|
||||
set -g fish_key_bindings fish_vi_key_bindings
|
||||
|
||||
# Configure FZF
|
||||
set -x FZF_DEFAULT_OPTS '--color=fg:#f8f8f2,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4 --layout=reverse --height 50%'
|
||||
|
||||
# Remove welcome message
|
||||
set -x fish_greeting ""
|
||||
|
||||
## Add directories to $PATH
|
||||
fish_add_path /home/wizardlink/.local/share/scripts \
|
||||
/home/wizardlink/.config/emacs/bin \
|
||||
/home/wizardlink/.spicetify \
|
||||
/home/wizardlink/.nimble/bin \
|
||||
/home/wizardlink/.cargo/bin \
|
||||
/home/wizardlink/.local/bin \
|
||||
/lib/flatpak/exports/bin \
|
||||
/home/wizardlink/.local/share/scripts/burrito \
|
||||
${pkgs.vscode-extensions.vadimcn.vscode-lldb.adapter}/bin
|
||||
|
||||
zoxide init --cmd cd fish | source
|
||||
'';
|
||||
|
||||
shellAbbrs = {
|
||||
z = "zoxide";
|
||||
};
|
||||
|
||||
shellAliases = {
|
||||
del = "trash_file";
|
||||
dev = "nix develop -c fish";
|
||||
doom = "~/.emacs.d/bin/doom";
|
||||
};
|
||||
|
||||
functions = {
|
||||
fish_prompt.body = ''
|
||||
set_color CC241D
|
||||
echo '&' (set_color normal)
|
||||
'';
|
||||
|
||||
fzf_edit.body = ''
|
||||
fzf --multi --bind 'enter:become(nvim {+})'
|
||||
'';
|
||||
|
||||
trash_file.body = ''
|
||||
mv $argv ~/.local/share/Trash
|
||||
'';
|
||||
|
||||
ya.body = ''
|
||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||
yazi $argv --cwd-file="$tmp"
|
||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||
cd -- "$cwd"
|
||||
end
|
||||
rm -f -- "$tmp"
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
76
modules/home-manager/programs/gamemode.ini
Normal file
76
modules/home-manager/programs/gamemode.ini
Normal file
|
@ -0,0 +1,76 @@
|
|||
[general]
|
||||
; The reaper thread will check every 5 seconds for exited clients, for config file changes, and for the CPU/iGPU power balance
|
||||
reaper_freq=5
|
||||
|
||||
; The desired governor is used when entering GameMode instead of "performance"
|
||||
desiredgov=performance
|
||||
; The default governor is used when leaving GameMode instead of restoring the original value
|
||||
;defaultgov=powersave
|
||||
|
||||
; GameMode can change the scheduler policy to SCHED_ISO on kernels which support it (currently
|
||||
; not supported by upstream kernels). Can be set to "auto", "on" or "off". "auto" will enable
|
||||
; with 4 or more CPU cores. "on" will always enable. Defaults to "off".
|
||||
softrealtime=off
|
||||
|
||||
; GameMode can renice game processes. You can put any value between 0 and 20 here, the value
|
||||
; will be negated and applied as a nice value (0 means no change). Defaults to 0.
|
||||
renice=0
|
||||
|
||||
; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value
|
||||
; between 0 and 7 here (with 0 being highest priority), or one of the special values
|
||||
; "off" (to disable) or "reset" (to restore Linux default behavior based on CPU priority),
|
||||
; currently, only the best-effort class is supported thus you cannot set it here
|
||||
ioprio=reset
|
||||
|
||||
; Sets whether gamemode will inhibit the screensaver when active
|
||||
; Defaults to 1
|
||||
inhibit_screensaver=0
|
||||
|
||||
[filter]
|
||||
; If "whitelist" entry has a value(s)
|
||||
; gamemode will reject anything not in the whitelist
|
||||
;whitelist=RiseOfTheTombRaider
|
||||
|
||||
; Gamemode will always reject anything in the blacklist
|
||||
;blacklist=HalfLife3
|
||||
; glxgears
|
||||
|
||||
[gpu]
|
||||
; Here Be Dragons!
|
||||
; Warning: Use these settings at your own risk
|
||||
; Any damage to hardware incurred due to this feature is your responsibility and yours alone
|
||||
; It is also highly recommended you try these settings out first manually to find the sweet spots
|
||||
|
||||
; Setting this to the keyphrase "accept-responsibility" will allow gamemode to apply GPU optimisations such as overclocks
|
||||
apply_gpu_optimisations=accept-responsibility
|
||||
|
||||
; The DRM device number on the system (usually 0), ie. the number in /sys/class/drm/card0/
|
||||
gpu_device=1
|
||||
|
||||
; AMD specific settings
|
||||
; Requires a relatively up to date AMDGPU kernel module
|
||||
; See: https://dri.freedesktop.org/docs/drm/gpu/amdgpu.html#gpu-power-thermal-controls-and-monitoring
|
||||
; It is also highly recommended you use lm-sensors (or other available tools) to verify card temperatures
|
||||
; This corresponds to power_dpm_force_performance_level, "manual" is not supported for now
|
||||
amd_performance_level=auto
|
||||
|
||||
[supervisor]
|
||||
; This section controls the new gamemode functions gamemode_request_start_for and gamemode_request_end_for
|
||||
; The whilelist and blacklist control which supervisor programs are allowed to make the above requests
|
||||
;supervisor_whitelist=
|
||||
;supervisor_blacklist=
|
||||
|
||||
; In case you want to allow a supervisor to take full control of gamemode, this option can be set
|
||||
; This will only allow gamemode clients to be registered by using the above functions by a supervisor client
|
||||
;require_supervisor=0
|
||||
|
||||
[custom]
|
||||
; Custom scripts (executed using the shell) when gamemode starts and ends
|
||||
;start=notify-send "GameMode started"
|
||||
; /home/me/bin/stop_ethmining.sh
|
||||
|
||||
;end=notify-send "GameMode ended"
|
||||
; /home/me/bin/start_ethmining.sh
|
||||
|
||||
; Timeout for scripts (seconds). Scripts will be killed if they do not complete within this time.
|
||||
;script_timeout=10
|
95
modules/home-manager/programs/git.nix
Normal file
95
modules/home-manager/programs/git.nix
Normal file
|
@ -0,0 +1,95 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
# Enable GIT.
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
aliases = {
|
||||
# List aliases
|
||||
aliases = "config --get-regexp alias";
|
||||
|
||||
# List all the contributors with commit amount
|
||||
contributors = "shortlog --summary --numbered";
|
||||
|
||||
# Output verbose info about branches and tags
|
||||
branches = "branch -avv";
|
||||
|
||||
# List all tags
|
||||
tags = "tag -l";
|
||||
|
||||
# Pretty logs
|
||||
plog = "log --graph --decorate --all";
|
||||
|
||||
# Pretty grep
|
||||
gcommit = "log --graph --decorate --grep";
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
core = {
|
||||
# Set the editor to be used by GIT
|
||||
editor = "nvim";
|
||||
|
||||
# Custom .gitignore
|
||||
excludesfile = "~/.gitignore";
|
||||
|
||||
# Treat trailing whitespaces and spaces before tabs as an error
|
||||
whitespace = "space-before-tab,-indent-with-non-tab,trailing-space";
|
||||
};
|
||||
|
||||
color = {
|
||||
# Use colors in GIT commmands.
|
||||
ui = "auto";
|
||||
};
|
||||
|
||||
commit = {
|
||||
# https://help.github.com/articles/signing-commits-using-gpg/
|
||||
gpgsign = true;
|
||||
};
|
||||
|
||||
tag = {
|
||||
gpgsign = true;
|
||||
};
|
||||
|
||||
difftool = {
|
||||
prompt = true;
|
||||
};
|
||||
|
||||
mergetool = {
|
||||
# https://www.git-scm.com/docs/git-mergetool#Documentation/git-mergetool.txt---no-prompt
|
||||
prompt = false;
|
||||
};
|
||||
|
||||
merge = {
|
||||
# https://git-scm.com/docs/git-merge#_how_conflicts_are_presented
|
||||
conflictstyle = "diff3";
|
||||
};
|
||||
|
||||
push = {
|
||||
# https://stackoverflow.com/questions/21839651/git-what-is-the-difference-between-push-default-matching-and-simple
|
||||
default = "simple";
|
||||
|
||||
# git-push pushes relevant annotated tags when pushing branches out
|
||||
followTags = true;
|
||||
};
|
||||
|
||||
user = {
|
||||
name = "Alexandre Cavalheiro S. Tiago da Silva";
|
||||
email = "contact@thewizard.link";
|
||||
signingkey = "A1D3A2B4E14BD7C0445BB749A5767B54367CFBDF";
|
||||
};
|
||||
|
||||
pull = {
|
||||
ff = "only";
|
||||
};
|
||||
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
};
|
||||
|
||||
credential = {
|
||||
helper = "/usr/libexec/git-core/git-credential-libsecret";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
361
modules/home-manager/programs/hyprland/default.nix
Normal file
361
modules/home-manager/programs/hyprland/default.nix
Normal file
|
@ -0,0 +1,361 @@
|
|||
{
|
||||
xdg.configFile."hypr/frappe.conf".source = builtins.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/catppuccin/hyprland/main/themes/frappe.conf";
|
||||
sha256 = "1clw669i1n3dhawdw4clmjv75fy3smycb5iqk3sanzpr3y0i4vwx";
|
||||
};
|
||||
|
||||
# Enable hypridle and hyprlock
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on";
|
||||
ignore_dbus_inhibit = false;
|
||||
lock_cmd = "hyprlock";
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 120;
|
||||
on-timeout = "hyprlock";
|
||||
}
|
||||
{
|
||||
timeout = 180;
|
||||
on-timeout = "hyprctl dispatch dpms off";
|
||||
on-resume = "hyprctl dispatch dpms on";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
extraConfig = # hyprlang
|
||||
''
|
||||
source = $HOME/.config/hypr/frappe.conf
|
||||
|
||||
$accent = $mauve
|
||||
$accentAlpha = $mauveAlpha
|
||||
$font = JetBrainsMono Nerd Font
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
disable_loading_bar = true
|
||||
hide_cursor = true
|
||||
}
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = $HOME/internal/personal/wallpapers/wallhaven-2em8y6.jpg
|
||||
blur_passes = 0
|
||||
color = $base
|
||||
}
|
||||
|
||||
# LAYOUT
|
||||
label {
|
||||
monitor =
|
||||
text = Layout: $LAYOUT
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text
|
||||
font_size = 90
|
||||
font_family = $font
|
||||
position = -30, 0
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# DATE
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:43200000] date +"%A, %d %B %Y"
|
||||
color = $text
|
||||
font_size = 25
|
||||
font_family = $font
|
||||
position = -30, -150
|
||||
halign = right
|
||||
valign = top
|
||||
}
|
||||
|
||||
# USER AVATAR
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/.face
|
||||
size = 100
|
||||
border_color = $accent
|
||||
position = 0, 75
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 300, 60
|
||||
outline_thickness = 4
|
||||
dots_size = 0.2
|
||||
dots_spacing = 0.2
|
||||
dots_center = true
|
||||
outer_color = $accent
|
||||
inner_color = $surface0
|
||||
font_color = $text
|
||||
fade_on_empty = false
|
||||
placeholder_text = <span foreground="##$textAlpha"><i> Logged in as </i><span foreground="##$accentAlpha">$USER</span></span>
|
||||
hide_input = false
|
||||
check_color = $accent
|
||||
fail_color = $red
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i>
|
||||
capslock_color = $yellow
|
||||
position = 0, -47
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
# Configure hyprland - we enable it in NixOS.
|
||||
xdg.configFile."hypr/hyprland.conf".text = # hyprlang
|
||||
''
|
||||
source = $HOME/.config/hypr/frappe.conf
|
||||
|
||||
#
|
||||
# Please note not all available settings / options are set here.
|
||||
# For a full list, see the wiki
|
||||
#
|
||||
|
||||
autogenerated = 0 # remove this line to remove the warning
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = DP-3, 1920x1080@74.973, 2560x0, 1
|
||||
monitor = DP-2, 2560x1440@165.00301, 0x0, 1
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
|
||||
# Inject home-manager session variables
|
||||
exec-once = /etc/profiles/per-user/wizardlink/etc/profile.d/hm-session-vars.sh
|
||||
|
||||
# Start the core services of my desktop
|
||||
exec-once = ~/.local/share/scripts/hyprland/start_services.sh
|
||||
|
||||
# Open the apps I always use
|
||||
exec-once = ~/.local/share/scripts/hyprland/start_apps.sh
|
||||
|
||||
# Set cursor size.
|
||||
env = HYPRCURSOR_SIZE, 36
|
||||
env = XCURSOR_SIZE, 36
|
||||
|
||||
# Source a file (multi-file configs)
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input {
|
||||
kb_layout =
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
float_switch_override_focus = 1
|
||||
|
||||
accel_profile = flat
|
||||
force_no_accel = true
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
tablet {
|
||||
output = DP-2
|
||||
}
|
||||
}
|
||||
|
||||
general {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 6
|
||||
gaps_out = 18
|
||||
border_size = 2
|
||||
col.active_border = $base $surface0 $green 45deg
|
||||
col.inactive_border = $base $surface0 $blue 45deg
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
decoration {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 8
|
||||
# FIXME: Check these deprecations.
|
||||
#blur = yes
|
||||
#blur_size = 3
|
||||
#blur_passes = 1
|
||||
#blur_new_optimizations = on
|
||||
|
||||
drop_shadow = yes
|
||||
shadow_range = 4
|
||||
shadow_render_power = 3
|
||||
col.shadow = $crust
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 8, default
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
dwindle {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = yes # you probably want this
|
||||
}
|
||||
|
||||
master {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
new_status = slave
|
||||
}
|
||||
|
||||
gestures {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = off
|
||||
}
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
|
||||
# Bind workspaces to specific monitors
|
||||
workspace = 1, monitor:DP-2
|
||||
workspace = 2, monitor:DP-3
|
||||
workspace = 3, monitor:DP-2
|
||||
workspace = 4, monitor:DP-3
|
||||
workspace = 5, monitor:DP-2
|
||||
workspace = 6, monitor:DP-3
|
||||
workspace = 7, monitor:DP-2
|
||||
workspace = 8, monitor:DP-3
|
||||
workspace = 9, monitor:DP-2
|
||||
workspace = 0, monitor:DP-3
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
$mainMod = SUPER
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod CTRL, F, fullscreenstate, -1 2
|
||||
bind = $mainMod CTRL, L, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
|
||||
bind = $mainMod CTRL, P, exec, ~/.local/share/scripts/hyprland/screenshot_area.sh
|
||||
bind = $mainMod CTRL, V, pin
|
||||
bind = $mainMod SHIFT, F, fullscreen, 1
|
||||
bind = $mainMod SHIFT, P, exec, ~/.local/share/scripts/hyprland/screenshot.sh
|
||||
bind = $mainMod, C, killactive
|
||||
bind = $mainMod, E, exec, thunar
|
||||
bind = $mainMod, F, fullscreen
|
||||
bind = $mainMod, M, exit
|
||||
bind = $mainMod, O, togglesplit # dwindle
|
||||
bind = $mainMod, P, pseudo # dwindle
|
||||
bind = $mainMod, Q, exec, alacritty
|
||||
bind = $mainMod, R, exec, rofi -show drun
|
||||
bind = $mainMod, V, togglefloating
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, H, movefocus, l
|
||||
bind = $mainMod, L, movefocus, r
|
||||
bind = $mainMod, K, movefocus, u
|
||||
bind = $mainMod, J, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
#bind = $mainMod, 9, workspace, 9
|
||||
#bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bind = $mainMod SHIFT, H, movewindow, l
|
||||
bind = $mainMod SHIFT, L, movewindow, r
|
||||
bind = $mainMod SHIFT, K, movewindow, u
|
||||
bind = $mainMod SHIFT, J, movewindow, d
|
||||
bind = $mainMod ALT, H, resizeactive, -5% 0
|
||||
bind = $mainMod ALT, L, resizeactive, 5% 0
|
||||
bind = $mainMod ALT, K, resizeactive, 0 -5%
|
||||
bind = $mainMod ALT, J, resizeactive, 0 5%
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Volume changes
|
||||
binde = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%+
|
||||
binde = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 1%-
|
||||
bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
|
||||
# Passthrough binds
|
||||
bind = SHIFT CTRL, F12, pass, ^(com.obsproject.Studio)$
|
||||
|
||||
# Window rules for xwaylandvideobridge
|
||||
windowrulev2 = opacity 0.0 override 0.0 override,class:^(xwaylandvideobridge)$
|
||||
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
|
||||
windowrulev2 = nofocus,class:^(xwaylandvideobridge)$
|
||||
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$
|
||||
|
||||
# Rules for windowkill
|
||||
windowrule = noborder, ^(steam_app_2726450)$
|
||||
windowrule = pin, ^(steam_app_2726450)$
|
||||
windowrule = opacity 0.9, ^(steam_app_2726450)$
|
||||
|
||||
# Rules for Awakened PoE
|
||||
windowrulev2 = tag +poe, class:^(steam_app_238960)$
|
||||
windowrulev2 = allowsinput, tag:poe
|
||||
|
||||
windowrulev2 = tag +apt, class:^(awakened-poe-trade)$
|
||||
windowrulev2 = float, tag:apt
|
||||
windowrulev2 = noblur, tag:apt
|
||||
windowrulev2 = noborder, tag:apt
|
||||
windowrulev2 = noshadow, tag:apt
|
||||
|
||||
# Rules for anki
|
||||
windowrulev2 = float, class:^(anki)$
|
||||
|
||||
windowrulev2 = tag +gw2, class:^(steam_app_1284210)$
|
||||
windowrulev2 = noblur, tag:gw2
|
||||
windowrulev2 = noborder, tag:gw2
|
||||
'';
|
||||
}
|
32
modules/home-manager/programs/mako/config
Normal file
32
modules/home-manager/programs/mako/config
Normal file
|
@ -0,0 +1,32 @@
|
|||
anchor=bottom-right
|
||||
background-color=#282a36
|
||||
border-color=#282a36
|
||||
border-radius=20
|
||||
border-size=2
|
||||
default-timeout=10000
|
||||
format=<span font="FantasqueSansMono NF weight=325 Italic" size="12288">%s</span>\n<span font="FantasqueSansMono NF weight=325" size="12288">%b</span>
|
||||
group-by=summary
|
||||
height=125
|
||||
icon-location=right
|
||||
layer=top
|
||||
margin=0,20,15
|
||||
markup=1
|
||||
max-icon-size=48
|
||||
padding=10,5,10
|
||||
text-color=#44475a
|
||||
width=300
|
||||
|
||||
[grouped]
|
||||
format=<span font="FantasqueSansMono NF weight=325 Italic" size="12288">%s</span>\n<span font="FantasqueSansMono NF weight=325" size="12288">%b</span>
|
||||
|
||||
[mode=do-not-disturb]
|
||||
invisible=1
|
||||
|
||||
[urgency=low]
|
||||
border-color=#282a36
|
||||
|
||||
[urgency=normal]
|
||||
border-color=#f1fa8c
|
||||
|
||||
[urgency=high]
|
||||
border-color=#ff5555
|
101
modules/home-manager/programs/mangohud.nix
Normal file
101
modules/home-manager/programs/mangohud.nix
Normal file
|
@ -0,0 +1,101 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
programs.mangohud = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
# Limitations
|
||||
fps_limit = 165;
|
||||
vsync = 1;
|
||||
gl_vsync = 0;
|
||||
|
||||
# GPU Statistics
|
||||
gpu_core_clock = true;
|
||||
gpu_fan = true;
|
||||
gpu_junction_temp = true;
|
||||
gpu_load_change = true;
|
||||
gpu_load_color = [
|
||||
"39F900"
|
||||
"FDFD09"
|
||||
"B22222"
|
||||
];
|
||||
gpu_load_value = [
|
||||
60
|
||||
90
|
||||
];
|
||||
gpu_mem_clock = true;
|
||||
gpu_mem_temp = true;
|
||||
gpu_power = true;
|
||||
gpu_stats = true;
|
||||
gpu_temp = true;
|
||||
gpu_voltage = true;
|
||||
|
||||
# CPU Statistics
|
||||
cpu_load_change = true;
|
||||
cpu_load_color = [
|
||||
"39F900"
|
||||
"FDFD09"
|
||||
"B22222"
|
||||
];
|
||||
cpu_load_value = [
|
||||
60
|
||||
90
|
||||
];
|
||||
cpu_mhz = true;
|
||||
cpu_power = true;
|
||||
cpu_stats = true;
|
||||
cpu_temp = true;
|
||||
|
||||
# IO Statistics
|
||||
io_read = true;
|
||||
io_stats = true;
|
||||
io_write = true;
|
||||
|
||||
# RAM Statistics
|
||||
ram = true;
|
||||
swap = true;
|
||||
vram = true;
|
||||
|
||||
# FPS Statistics
|
||||
fps = true;
|
||||
fps_color_change = true;
|
||||
fps_value = [
|
||||
60
|
||||
90
|
||||
];
|
||||
fps_color = [
|
||||
"B22222"
|
||||
"FDFD09"
|
||||
"39F900"
|
||||
];
|
||||
frametime = true;
|
||||
frame_timing = true; # Display graphs
|
||||
histogram = true; # ^
|
||||
|
||||
# Show whether gamemode is enabled for the application.
|
||||
gamemode = true;
|
||||
|
||||
# Make so MangoHud starts hidden.
|
||||
no_display = true;
|
||||
|
||||
# Show whether the GPU is throttling.
|
||||
throttling_status = true;
|
||||
|
||||
# Show wine/proton version.
|
||||
wine = true;
|
||||
|
||||
# Show the vulkan driver in-use.
|
||||
vulkan_driver = true;
|
||||
|
||||
# Display the process' memory usage.
|
||||
procmem = true;
|
||||
|
||||
# Show the application's architecture.
|
||||
arch = true;
|
||||
|
||||
# Where to output log files.
|
||||
output_folder = /home/wizardlink/.config/MangoHud;
|
||||
};
|
||||
};
|
||||
}
|
73
modules/home-manager/programs/neovim/README.md
Normal file
73
modules/home-manager/programs/neovim/README.md
Normal file
|
@ -0,0 +1,73 @@
|
|||
# My [Home Manager] module for neovim configuration
|
||||
|
||||
This is my personal configuration for _[neovim]_ using [Nix](https://nixos.org/), so this will not work outside of it - though it can be made to be.
|
||||
|
||||
In this case, I am outputting a [Home Manager] module to be used directly in your configuration, it currently barely has
|
||||
any
|
||||
options and is opinionated due to it being my personal configuration for daily use... But I plan to slowly add options
|
||||
to make it usable by other people.
|
||||
|
||||
## Installing
|
||||
|
||||
First you add this repository as a flake input:
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs = {
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
wizardlink-neovim.url = "git+https://git.thewizard.link/wizardlink/neovim";
|
||||
};
|
||||
|
||||
outputs = { home-manager, ... }@inputs: {
|
||||
homeConfigurations.YOURHOSTNAME = home-manager.lib.homeManagerConfiguration {
|
||||
# ...
|
||||
extraSPecialArgs = inputs;
|
||||
};
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Then in your [Home Manager] configuration you can just import it:
|
||||
|
||||
```nix
|
||||
{ wizardlink-neovim }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
wizardlink-neovim.homeManagerModules.default
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
## Configuring
|
||||
|
||||
### [nixd](https://github.com/nix-community/nixd/)
|
||||
|
||||
```nix
|
||||
programs.neovim.flake = {
|
||||
hostname = "nixos"; # Your hostname used to build your system.
|
||||
location = "git+file:///home/wizardlink/.system"; # Where you store your flake.
|
||||
};
|
||||
```
|
||||
|
||||
## My neovim failed because of package X not existing
|
||||
|
||||
My configuration is based off of `nixos-unstable` so sometimes your package may not exist or have a different name, I
|
||||
apologise for that but I don't plan on maintaining backwards compatibility. :(
|
||||
|
||||
## How it looks
|
||||
|
||||
Here's some screenshots of how it currently looks like:
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
The theme I'm using is [catppuccin](https://github.com/catppuccin) in case you're curious.
|
||||
|
||||
[neovim]: https://neovim.io/
|
||||
[Home Manager]: https://github.com/nix-community/home-manager
|
284
modules/home-manager/programs/neovim/default.nix
Normal file
284
modules/home-manager/programs/neovim/default.nix
Normal file
|
@ -0,0 +1,284 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib) types mkOption;
|
||||
ollamaPackage =
|
||||
if config.programs.neovim.ollama.type == "amd" then pkgs.ollama-rocm else pkgs.ollama-cuda;
|
||||
in
|
||||
{
|
||||
options.programs.neovim = {
|
||||
flake = {
|
||||
hostname = mkOption {
|
||||
default = "wizdesk";
|
||||
description = "Your NixOS hostname, needed for nixd lsp.";
|
||||
example = "nixos";
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
location = mkOption {
|
||||
default = "git+file:///home/wizardlink/.system";
|
||||
description = "Path to your flake location, prepend 'file:///' to it and 'git+' before that if using git.";
|
||||
example = "git+file:///home/wizardlink/.system";
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
|
||||
ollama.type = mkOption {
|
||||
default = "amd";
|
||||
description = "The type of ollama package to install, AMD GPU accelerated or NVIDIA GPU accelerated.";
|
||||
example = "amd";
|
||||
type = types.enum [
|
||||
"amd"
|
||||
"nvidia"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
withNodeJs = true;
|
||||
withPython3 = true;
|
||||
|
||||
extraLuaConfig = builtins.readFile ./init.lua;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
# Needed by ollama.nvim
|
||||
curl
|
||||
ollamaPackage
|
||||
|
||||
# CMAKE
|
||||
neocmakelsp
|
||||
|
||||
# C/C++
|
||||
clang-tools
|
||||
gcc # Needed for treesitter
|
||||
|
||||
# HTML/CSS/JSON
|
||||
emmet-ls
|
||||
vscode-langservers-extracted
|
||||
|
||||
# LUA
|
||||
lua-language-server
|
||||
stylua
|
||||
|
||||
# Markdown
|
||||
markdownlint-cli
|
||||
marksman
|
||||
prettierd
|
||||
|
||||
# Nix
|
||||
nixd
|
||||
nixfmt-rfc-style
|
||||
|
||||
# TypeScript
|
||||
typescript-language-server
|
||||
|
||||
# Rust
|
||||
rust-analyzer
|
||||
taplo
|
||||
vscode-extensions.vadimcn.vscode-lldb.adapter
|
||||
|
||||
# Vue
|
||||
vue-language-server
|
||||
|
||||
# Svelte
|
||||
nodePackages.svelte-language-server
|
||||
|
||||
# YAML
|
||||
yaml-language-server
|
||||
];
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua" = {
|
||||
recursive = true;
|
||||
source = ./lua;
|
||||
};
|
||||
|
||||
xdg.configFile."nvim/lua/plugins/astrolsp.lua".text =
|
||||
let
|
||||
hostname = config.programs.neovim.flake.hostname;
|
||||
location = config.programs.neovim.flake.location;
|
||||
in
|
||||
#lua
|
||||
''
|
||||
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
|
||||
-- Configuration documentation can be found with `:h astrolsp`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrolsp",
|
||||
---@type AstroLSPOpts
|
||||
opts = {
|
||||
-- Configuration table of features provided by AstroLSP
|
||||
features = {
|
||||
autoformat = true, -- enable or disable auto formatting on start
|
||||
codelens = true, -- enable/disable codelens refresh on start
|
||||
inlay_hints = false, -- enable/disable inlay hints on start
|
||||
semantic_tokens = true, -- enable/disable semantic token highlighting
|
||||
},
|
||||
-- customize lsp formatting options
|
||||
formatting = {
|
||||
-- control auto formatting on save
|
||||
format_on_save = {
|
||||
enabled = true, -- enable or disable format on save globally
|
||||
allow_filetypes = { -- enable format on save for specified filetypes only
|
||||
-- "go",
|
||||
"c",
|
||||
"cpp",
|
||||
"h",
|
||||
"javascript",
|
||||
"jsx",
|
||||
"lua",
|
||||
"nix",
|
||||
"rust",
|
||||
"svelte",
|
||||
"tsx",
|
||||
"typescript",
|
||||
},
|
||||
ignore_filetypes = { -- disable format on save for specified filetypes
|
||||
-- "python",
|
||||
},
|
||||
},
|
||||
disabled = { -- disable formatting capabilities for the listed language servers
|
||||
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
|
||||
-- "lua_ls",
|
||||
},
|
||||
timeout_ms = 1000, -- default format timeout
|
||||
-- filter = function(client) -- fully override the default formatting function
|
||||
-- return true
|
||||
-- end
|
||||
},
|
||||
-- enable servers that you already have installed without mason
|
||||
servers = {
|
||||
-- "pyright"
|
||||
"clangd",
|
||||
"cmake",
|
||||
"cssls",
|
||||
"eslint",
|
||||
"html",
|
||||
"jsonls",
|
||||
"lua_ls",
|
||||
"marksman",
|
||||
"nixd",
|
||||
"rust_analyzer",
|
||||
"svelte",
|
||||
"taplo",
|
||||
"tsserver",
|
||||
"volar",
|
||||
"yamlls",
|
||||
},
|
||||
-- customize language server configuration options passed to `lspconfig`
|
||||
---@diagnostic disable: missing-fields
|
||||
config = {
|
||||
-- clangd = { capabilities = { offsetEncoding = "utf-8" } },
|
||||
nixd = {
|
||||
settings = {
|
||||
nixd = {
|
||||
options = {
|
||||
nixos = {
|
||||
expr = '(builtins.getFlake ("${location}")).nixosConfigurations.${hostname}.options',
|
||||
},
|
||||
home_manager = {
|
||||
expr =
|
||||
'(builtins.getFlake ("${location}")).homeConfigurations.${hostname}.options',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
tsserver = {
|
||||
init_options = {
|
||||
plugins = {
|
||||
{
|
||||
name = "@vue/typescript-plugin",
|
||||
location = "${pkgs.vue-language-server}/bin/vue-language-server",
|
||||
languages = { "javascript", "typescript", "vue" },
|
||||
},
|
||||
},
|
||||
},
|
||||
filetypes = {
|
||||
"javascript",
|
||||
"typescript",
|
||||
"vue",
|
||||
},
|
||||
},
|
||||
},
|
||||
-- customize how language servers are attached
|
||||
handlers = {
|
||||
-- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server
|
||||
-- function(server, opts) require("lspconfig")[server].setup(opts) end
|
||||
|
||||
-- the key is the server that is being setup with `lspconfig`
|
||||
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
|
||||
-- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed
|
||||
},
|
||||
-- Configure buffer local auto commands to add when attaching a language server
|
||||
autocmds = {
|
||||
-- first key is the `augroup` to add the auto commands to (:h augroup)
|
||||
lsp_document_highlight = {
|
||||
-- Optional condition to create/delete auto command group
|
||||
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
|
||||
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
|
||||
-- the auto commands will be deleted for that buffer
|
||||
cond = "textDocument/documentHighlight",
|
||||
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
|
||||
-- list of auto commands to set
|
||||
{
|
||||
-- events to trigger
|
||||
event = { "CursorHold", "CursorHoldI" },
|
||||
-- the rest of the autocmd options (:h nvim_create_autocmd)
|
||||
desc = "Document Highlighting",
|
||||
callback = function()
|
||||
vim.lsp.buf.document_highlight()
|
||||
end,
|
||||
},
|
||||
{
|
||||
event = { "CursorMoved", "CursorMovedI", "BufLeave" },
|
||||
desc = "Document Highlighting Clear",
|
||||
callback = function()
|
||||
vim.lsp.buf.clear_references()
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
-- mappings to be set up on attaching of a language server
|
||||
mappings = {
|
||||
n = {
|
||||
gl = {
|
||||
function()
|
||||
vim.diagnostic.open_float()
|
||||
end,
|
||||
desc = "Hover diagnostics",
|
||||
},
|
||||
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
|
||||
-- gD = {
|
||||
-- function() vim.lsp.buf.declaration() end,
|
||||
-- desc = "Declaration of current symbol",
|
||||
-- cond = "textDocument/declaration",
|
||||
-- },
|
||||
-- ["<Leader>uY"] = {
|
||||
-- function() require("astrolsp.toggles").buffer_semantic_tokens() end,
|
||||
-- desc = "Toggle LSP semantic highlight (buffer)",
|
||||
-- cond = function(client) return client.server_capabilities.semanticTokensProvider and vim.lsp.semantic_tokens end,
|
||||
-- },
|
||||
},
|
||||
},
|
||||
-- A custom `on_attach` function to be run after the default `on_attach` function
|
||||
-- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`)
|
||||
on_attach = function(client, bufnr)
|
||||
-- this would disable semanticTokensProvider for all clients
|
||||
-- client.server_capabilities.semanticTokensProvider = nil
|
||||
end,
|
||||
},
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
BIN
modules/home-manager/programs/neovim/docs/example_1.png
Normal file
BIN
modules/home-manager/programs/neovim/docs/example_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
BIN
modules/home-manager/programs/neovim/docs/example_2.png
Normal file
BIN
modules/home-manager/programs/neovim/docs/example_2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 MiB |
BIN
modules/home-manager/programs/neovim/docs/example_3.png
Normal file
BIN
modules/home-manager/programs/neovim/docs/example_3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.7 MiB |
19
modules/home-manager/programs/neovim/init.lua
Normal file
19
modules/home-manager/programs/neovim/init.lua
Normal file
|
@ -0,0 +1,19 @@
|
|||
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
|
||||
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
|
||||
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
|
||||
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
|
||||
-- stylua: ignore
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- validate that lazy is available
|
||||
if not pcall(require, "lazy") then
|
||||
-- stylua: ignore
|
||||
vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
|
||||
vim.fn.getchar()
|
||||
vim.cmd.quit()
|
||||
end
|
||||
|
||||
require "lazy_setup"
|
||||
require "polish"
|
40
modules/home-manager/programs/neovim/lua/community.lua
Normal file
40
modules/home-manager/programs/neovim/lua/community.lua
Normal file
|
@ -0,0 +1,40 @@
|
|||
-- AstroCommunity: import any community modules here
|
||||
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
|
||||
-- This guarantees that the specs are processed before any user plugins.
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrocommunity",
|
||||
{ import = "astrocommunity.colorscheme.catppuccin" },
|
||||
{
|
||||
"catppuccin/nvim",
|
||||
name = "catppuccin",
|
||||
opts = function(_, config)
|
||||
config.flavour = "frappe"
|
||||
config.transparent_background = true
|
||||
end,
|
||||
},
|
||||
|
||||
{ import = "astrocommunity.editing-support.todo-comments-nvim" },
|
||||
{ import = "astrocommunity.editing-support.zen-mode-nvim" },
|
||||
|
||||
{ import = "astrocommunity.motion.flash-nvim" },
|
||||
{ import = "astrocommunity.motion.flit-nvim" },
|
||||
{ import = "astrocommunity.motion.leap-nvim" },
|
||||
{ import = "astrocommunity.motion.mini-ai" },
|
||||
{ import = "astrocommunity.motion.mini-surround" },
|
||||
|
||||
{ import = "astrocommunity.pack.cmake" },
|
||||
{ import = "astrocommunity.pack.cpp" },
|
||||
{ import = "astrocommunity.pack.godot" },
|
||||
{ import = "astrocommunity.pack.html-css" },
|
||||
{ import = "astrocommunity.pack.json" },
|
||||
{ import = "astrocommunity.pack.lua" },
|
||||
{ import = "astrocommunity.pack.markdown" },
|
||||
{ import = "astrocommunity.pack.nix" },
|
||||
{ import = "astrocommunity.pack.rust" },
|
||||
{ import = "astrocommunity.pack.toml" },
|
||||
{ import = "astrocommunity.pack.typescript" },
|
||||
{ import = "astrocommunity.pack.vue" },
|
||||
{ import = "astrocommunity.pack.yaml" },
|
||||
}
|
31
modules/home-manager/programs/neovim/lua/lazy_setup.lua
Normal file
31
modules/home-manager/programs/neovim/lua/lazy_setup.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
require("lazy").setup({
|
||||
{
|
||||
"AstroNvim/AstroNvim",
|
||||
--version = "^4", -- Remove version tracking to elect for nighly AstroNvim
|
||||
import = "astronvim.plugins",
|
||||
opts = { -- AstroNvim options must be set here with the `import` key
|
||||
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
|
||||
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
|
||||
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
|
||||
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
|
||||
},
|
||||
},
|
||||
{ import = "community" },
|
||||
{ import = "plugins" },
|
||||
} --[[@as LazySpec]], {
|
||||
-- Configure any other `lazy.nvim` configuration options here
|
||||
install = { colorscheme = { "astrodark", "habamax" } },
|
||||
ui = { backdrop = 100 },
|
||||
performance = {
|
||||
rtp = {
|
||||
-- disable some rtp plugins, add more to your liking
|
||||
disabled_plugins = {
|
||||
"gzip",
|
||||
"netrwPlugin",
|
||||
"tarPlugin",
|
||||
"tohtml",
|
||||
"zipPlugin",
|
||||
},
|
||||
},
|
||||
},
|
||||
} --[[@as LazyConfig]])
|
|
@ -0,0 +1,84 @@
|
|||
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
|
||||
-- Configuration documentation can be found with `:h astrocore`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astrocore",
|
||||
---@type AstroCoreOpts
|
||||
opts = {
|
||||
-- Configure core features of AstroNvim
|
||||
features = {
|
||||
large_buf = { size = 1024 * 500, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
|
||||
autopairs = true, -- enable autopairs at start
|
||||
cmp = true, -- enable completion at start
|
||||
diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on)
|
||||
highlighturl = true, -- highlight URLs at start
|
||||
notifications = true, -- enable notifications at start
|
||||
},
|
||||
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
|
||||
diagnostics = {
|
||||
virtual_text = true,
|
||||
underline = true,
|
||||
},
|
||||
-- vim options can be configured here
|
||||
options = {
|
||||
opt = { -- vim.opt.<key>
|
||||
autoindent = true, -- indents automatically based on context
|
||||
expandtab = true, -- use spaces instead of tabs
|
||||
grepprg = "rg --vimgrep", -- use ripgrep on grep actions
|
||||
number = true, -- sets vim.opt.number
|
||||
relativenumber = true, -- sets vim.opt.relativenumber
|
||||
shiftwidth = 2, -- how many spaces after indentation
|
||||
signcolumn = "auto", -- sets vim.opt.signcolumn to auto
|
||||
smartindent = true, -- smartly indent
|
||||
spell = false, -- sets vim.opt.spell
|
||||
tabstop = 2, -- how many spaces to indent when pressing tab
|
||||
wrap = false, -- sets vim.opt.wrap
|
||||
},
|
||||
g = { -- vim.g.<key>
|
||||
-- configure global vim variables (vim.g)
|
||||
-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
|
||||
-- This can be found in the `lua/lazy_setup.lua` file
|
||||
},
|
||||
},
|
||||
-- Mappings can be configured through AstroCore as well.
|
||||
-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
|
||||
mappings = {
|
||||
-- first key is the mode
|
||||
n = {
|
||||
-- second key is the lefthand side of the map
|
||||
|
||||
-- navigate buffer tabs with `H` and `L`
|
||||
-- L = {
|
||||
-- function() require("astrocore.buffer").nav(vim.v.count > 0 and vim.v.count or 1) end,
|
||||
-- desc = "Next buffer",
|
||||
-- },
|
||||
-- H = {
|
||||
-- function() require("astrocore.buffer").nav(-(vim.v.count > 0 and vim.v.count or 1)) end,
|
||||
-- desc = "Previous buffer",
|
||||
-- },
|
||||
|
||||
-- mappings seen under group name "Buffer"
|
||||
["<Leader>bD"] = {
|
||||
function()
|
||||
require("astroui.status.heirline").buffer_picker(function(bufnr)
|
||||
require("astrocore.buffer").close(bufnr)
|
||||
end)
|
||||
end,
|
||||
desc = "Pick to close",
|
||||
},
|
||||
-- tables with just a `desc` key will be registered with which-key if it's installed
|
||||
-- this is useful for naming menus
|
||||
["<Leader>b"] = { desc = "Buffers" },
|
||||
-- quick save
|
||||
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
|
||||
},
|
||||
t = {
|
||||
-- setting a mapping to false will disable it
|
||||
-- ["<esc>"] = false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
37
modules/home-manager/programs/neovim/lua/plugins/astroui.lua
Normal file
37
modules/home-manager/programs/neovim/lua/plugins/astroui.lua
Normal file
|
@ -0,0 +1,37 @@
|
|||
-- AstroUI provides the basis for configuring the AstroNvim User Interface
|
||||
-- Configuration documentation can be found with `:h astroui`
|
||||
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||
-- as this provides autocomplete and documentation while editing
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"AstroNvim/astroui",
|
||||
---@type AstroUIOpts
|
||||
opts = {
|
||||
-- change colorscheme
|
||||
colorscheme = "catppuccin",
|
||||
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
|
||||
highlights = {
|
||||
init = { -- this table overrides highlights in all themes
|
||||
-- Normal = { bg = "#000000" },
|
||||
},
|
||||
astrotheme = { -- a table of overrides/changes when applying the astrotheme theme
|
||||
-- Normal = { bg = "#000000" },
|
||||
},
|
||||
},
|
||||
-- Icons can be configured throughout the interface
|
||||
icons = {
|
||||
-- configure the loading of the lsp in the status line
|
||||
LSPLoading1 = "⠋",
|
||||
LSPLoading2 = "⠙",
|
||||
LSPLoading3 = "⠹",
|
||||
LSPLoading4 = "⠸",
|
||||
LSPLoading5 = "⠼",
|
||||
LSPLoading6 = "⠴",
|
||||
LSPLoading7 = "⠦",
|
||||
LSPLoading8 = "⠧",
|
||||
LSPLoading9 = "⠇",
|
||||
LSPLoading10 = "⠏",
|
||||
},
|
||||
},
|
||||
}
|
31
modules/home-manager/programs/neovim/lua/plugins/mason.lua
Normal file
31
modules/home-manager/programs/neovim/lua/plugins/mason.lua
Normal file
|
@ -0,0 +1,31 @@
|
|||
-- Customize Mason plugins
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
-- use mason-lspconfig to configure LSP installations
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
-- overrides `require("mason-lspconfig").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
-- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
|
||||
{
|
||||
"jay-babu/mason-null-ls.nvim",
|
||||
-- overrides `require("mason-null-ls").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
{
|
||||
"jay-babu/mason-nvim-dap.nvim",
|
||||
-- overrides `require("mason-nvim-dap").setup(...)`
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = nil
|
||||
opts.automatic_installation = false
|
||||
end,
|
||||
},
|
||||
}
|
22
modules/home-manager/programs/neovim/lua/plugins/none-ls.lua
Normal file
22
modules/home-manager/programs/neovim/lua/plugins/none-ls.lua
Normal file
|
@ -0,0 +1,22 @@
|
|||
-- Customize None-ls sources
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"nvimtools/none-ls.nvim",
|
||||
opts = function(_, config)
|
||||
-- config variable is the default configuration table for the setup function call
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
-- Check supported formatters and linters
|
||||
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
||||
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
||||
config.sources = {
|
||||
-- Set a formatter
|
||||
null_ls.builtins.formatting.clang_format,
|
||||
null_ls.builtins.formatting.nixfmt,
|
||||
null_ls.builtins.formatting.prettier,
|
||||
null_ls.builtins.formatting.stylua,
|
||||
}
|
||||
return config -- return final config table
|
||||
end,
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
-- Customize Treesitter
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
-- add more things to the ensure_installed table protecting against community packs modifying it
|
||||
opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, {
|
||||
-- Programming
|
||||
"c",
|
||||
"cmake",
|
||||
"cpp",
|
||||
"css",
|
||||
"gdscript",
|
||||
"godot_resource",
|
||||
"html",
|
||||
"hyprlang",
|
||||
"javascript",
|
||||
"jsdoc",
|
||||
"lua",
|
||||
"nim",
|
||||
"nim_format_string",
|
||||
"objc",
|
||||
"proto",
|
||||
"python",
|
||||
"svelte",
|
||||
"tsx",
|
||||
"typescript",
|
||||
"vue",
|
||||
-- Scripting
|
||||
"bash",
|
||||
"glsl",
|
||||
-- Configuring
|
||||
"dockerfile",
|
||||
"json",
|
||||
"jsonc",
|
||||
"nix",
|
||||
"yaml",
|
||||
-- Misc
|
||||
"cuda",
|
||||
"markdown",
|
||||
"markdown_inline",
|
||||
"query",
|
||||
-- VIM
|
||||
"vim",
|
||||
"vimdoc",
|
||||
})
|
||||
end,
|
||||
}
|
93
modules/home-manager/programs/neovim/lua/plugins/user.lua
Normal file
93
modules/home-manager/programs/neovim/lua/plugins/user.lua
Normal file
|
@ -0,0 +1,93 @@
|
|||
-- You can also add or configure plugins by creating files in this `plugins/` folder
|
||||
-- Here are some examples:
|
||||
|
||||
---@type LazySpec
|
||||
return {
|
||||
|
||||
-- Discord presence
|
||||
"andweeb/presence.nvim",
|
||||
{
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "BufRead",
|
||||
config = function()
|
||||
require("lsp_signature").setup()
|
||||
end,
|
||||
},
|
||||
|
||||
-- Customize alpha options
|
||||
{
|
||||
"goolord/alpha-nvim",
|
||||
opts = function(_, opts)
|
||||
-- customize the dashboard header
|
||||
opts.section.header.val = {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⣷⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣾⣿⣿⣿⣿⣷⣶⣶⣤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⢀⣠⡴⠾⠟⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠉⠉⠙⠛⠷⢦⣄⡀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠘⠋⠁⠀⠀⢀⣀⣤⣶⣖⣒⣒⡲⠶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⠶⢖⣒⣒⣲⣶⣤⣀⡀⠀⠀⠈⠙⠂⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⣠⢖⣫⣷⣿⣿⣿⣿⣿⣿⣶⣤⡙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⢋⣤⣾⣿⣿⣿⣿⣿⣿⣾⣝⡲⣄⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⣄⣀⣠⢿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠻⢿⣿⣿⣦⣳⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣟⣴⣿⣿⡿⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⡻⣄⣀⣤⠀⠀⠀",
|
||||
"⠀⠀⠀⠈⠟⣿⣿⣿⡿⢻⣿⣿⣿⠃⠀⠀⠀⠀⠙⣿⣿⣿⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⣿⣿⣿⠋⠀⠀⠀⠀⠘⣿⣿⣿⡟⢿⣿⣿⣟⠻⠁⠀⠀⠀",
|
||||
"⠤⣤⣶⣶⣿⣿⣿⡟⠀⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⢻⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⡏⠀⠀⠀⠀⠀⠀⣹⣿⣿⣷⠈⢻⣿⣿⣿⣶⣦⣤⠤",
|
||||
"⠀⠀⠀⠀⠀⢻⣟⠀⠀⣿⣿⣿⣿⡀⠀⠀⠀⠀⢀⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⡀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠀⠀⣿⡟⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠻⣆⠀⢹⣿⠟⢿⣿⣦⣤⣤⣴⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⡿⢷⣤⣤⣤⣴⣿⣿⣿⣿⡇⠀⣰⠟⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠙⠂⠀⠙⢀⣀⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⠁⠀⣻⣿⣿⣿⣿⣿⣿⠏⠀⠘⠃⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡈⠻⠿⣿⣿⣿⡿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠻⢿⣿⣿⣿⠿⠛⢁⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⠛⣶⣦⣤⣤⣤⡤⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⢤⣤⣤⣤⣶⣾⠛⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}
|
||||
return opts
|
||||
end,
|
||||
},
|
||||
|
||||
-- Adds highlighting and lsp features for embedded code in documents.
|
||||
{
|
||||
"jmbuhr/otter.nvim",
|
||||
dependencies = {
|
||||
"hrsh7th/nvim-cmp",
|
||||
"neovim/nvim-lspconfig",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
},
|
||||
|
||||
-- Adds highlighting and custom commands for ledger files
|
||||
{
|
||||
"ledger/vim-ledger",
|
||||
},
|
||||
|
||||
-- Better UI hooks
|
||||
{
|
||||
"stevearc/dressing.nvim",
|
||||
},
|
||||
|
||||
-- Add Ollama support in-editor
|
||||
{
|
||||
"nomnivore/ollama.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
|
||||
-- All the user commands added by the plugin
|
||||
cmd = { "Ollama", "OllamaModel", "OllamaServe", "OllamaServeStop" },
|
||||
|
||||
keys = {
|
||||
-- Sample keybind for prompt menu. Note that the <c-u> is important for selections to work properly.
|
||||
{
|
||||
"<leader>oo",
|
||||
":<c-u>lua require('ollama').prompt()<cr>",
|
||||
desc = "ollama prompt",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
|
||||
-- Sample keybind for direct prompting. Note that the <c-u> is important for selections to work properly.
|
||||
{
|
||||
"<leader>oG",
|
||||
":<c-u>lua require('ollama').prompt('Generate_Code')<cr>",
|
||||
desc = "ollama Generate Code",
|
||||
mode = { "n", "v" },
|
||||
},
|
||||
},
|
||||
|
||||
---@type Ollama.Config
|
||||
opts = {
|
||||
-- your configuration overrides
|
||||
},
|
||||
},
|
||||
}
|
39
modules/home-manager/programs/neovim/lua/polish.lua
Normal file
39
modules/home-manager/programs/neovim/lua/polish.lua
Normal file
|
@ -0,0 +1,39 @@
|
|||
-- This will run last in the setup process and is a good place to configure
|
||||
-- things like custom filetypes. This just pure lua so anything that doesn't
|
||||
-- fit in the normal config locations above can go here
|
||||
|
||||
-- Set up custom filetypes
|
||||
vim.filetype.add {
|
||||
extension = {
|
||||
foo = "fooscript",
|
||||
},
|
||||
filename = {
|
||||
["Foofile"] = "fooscript",
|
||||
},
|
||||
pattern = {
|
||||
["~/%.config/foo/.*"] = "fooscript",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
local dap = require "dap"
|
||||
|
||||
dap.adapters.codelldb = {
|
||||
port = "${port}",
|
||||
type = "server",
|
||||
executable = {
|
||||
command = "codelldb",
|
||||
args = { "--port", "${port}" },
|
||||
},
|
||||
}
|
||||
|
||||
dap.configurations.rust = {
|
||||
{
|
||||
name = "Launch file",
|
||||
type = "codelldb",
|
||||
request = "launch",
|
||||
program = function() return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") end,
|
||||
cwd = "${workspaceFolder}",
|
||||
stopOnEntry = false,
|
||||
},
|
||||
}
|
12
modules/home-manager/programs/obs-studio.nix
Normal file
12
modules/home-manager/programs/obs-studio.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
input-overlay
|
||||
obs-backgroundremoval
|
||||
obs-pipewire-audio-capture
|
||||
];
|
||||
};
|
||||
}
|
111
modules/home-manager/programs/rofi/catppuccin-frappe.rasi
Normal file
111
modules/home-manager/programs/rofi/catppuccin-frappe.rasi
Normal file
|
@ -0,0 +1,111 @@
|
|||
* {
|
||||
bg-col: #303446;
|
||||
bg-col-light: #303446;
|
||||
border-col: #303446;
|
||||
selected-col: #303446;
|
||||
blue: #8caaee;
|
||||
fg-col: #c6d0f5;
|
||||
fg-col2: #e78284;
|
||||
grey: #737994;
|
||||
|
||||
width: 600;
|
||||
font: "FantasqueSansM Nerd Font 14";
|
||||
}
|
||||
|
||||
element-text, element-icon , mode-switcher {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
|
||||
window {
|
||||
height: 360px;
|
||||
border: 3px;
|
||||
border-color: @border-col;
|
||||
background-color: @bg-col;
|
||||
}
|
||||
|
||||
mainbox {
|
||||
background-color: @bg-col;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
children: [prompt,entry];
|
||||
background-color: @bg-col;
|
||||
border-radius: 5px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
prompt {
|
||||
background-color: @blue;
|
||||
padding: 6px;
|
||||
text-color: @bg-col;
|
||||
border-radius: 3px;
|
||||
margin: 20px 0px 0px 20px;
|
||||
}
|
||||
|
||||
textbox-prompt-colon {
|
||||
expand: false;
|
||||
str: ":";
|
||||
}
|
||||
|
||||
entry {
|
||||
padding: 6px;
|
||||
margin: 20px 0px 0px 10px;
|
||||
text-color: @fg-col;
|
||||
background-color: @bg-col;
|
||||
}
|
||||
|
||||
listview {
|
||||
border: 0px 0px 0px;
|
||||
padding: 6px 0px 0px;
|
||||
margin: 10px 0px 0px 20px;
|
||||
columns: 2;
|
||||
lines: 5;
|
||||
background-color: @bg-col;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 5px;
|
||||
background-color: @bg-col;
|
||||
text-color: @fg-col ;
|
||||
}
|
||||
|
||||
element-icon {
|
||||
size: 25px;
|
||||
}
|
||||
|
||||
element selected {
|
||||
background-color: @selected-col ;
|
||||
text-color: @fg-col2 ;
|
||||
}
|
||||
|
||||
mode-switcher {
|
||||
spacing: 0;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 10px;
|
||||
background-color: @bg-col-light;
|
||||
text-color: @grey;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.5;
|
||||
}
|
||||
|
||||
button selected {
|
||||
background-color: @bg-col;
|
||||
text-color: @blue;
|
||||
}
|
||||
|
||||
message {
|
||||
background-color: @bg-col-light;
|
||||
margin: 2px;
|
||||
padding: 2px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
textbox {
|
||||
padding: 6px;
|
||||
margin: 20px 0px 0px 20px;
|
||||
text-color: @blue;
|
||||
background-color: @bg-col-light;
|
||||
}
|
28
modules/home-manager/programs/rofi/default.nix
Normal file
28
modules/home-manager/programs/rofi/default.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
|
||||
font = "FantasqueSansM Nerd Font";
|
||||
|
||||
extraConfig = {
|
||||
disable-history = false;
|
||||
display-Network = " Network";
|
||||
display-drun = " Apps ";
|
||||
display-run = " Run ";
|
||||
display-window = " Window";
|
||||
drun-display-format = "{icon} {name}";
|
||||
hide-scrollbar = true;
|
||||
icon-theme = "Papirus-Dark";
|
||||
location = 0;
|
||||
modi = "run,drun,window";
|
||||
show-icons = true;
|
||||
sidebar-mode = true;
|
||||
terminal = "alacritty";
|
||||
};
|
||||
|
||||
theme = ./catppuccin-frappe.rasi;
|
||||
};
|
||||
}
|
19
modules/home-manager/programs/spotify/default.nix
Normal file
19
modules/home-manager/programs/spotify/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ pkgs, spicetify-nix, ... }:
|
||||
|
||||
let
|
||||
spicePkgs = spicetify-nix.legacyPackages.${pkgs.system};
|
||||
in
|
||||
{
|
||||
imports = [ spicetify-nix.homeManagerModules.default ];
|
||||
|
||||
programs.spicetify = {
|
||||
enable = true;
|
||||
theme = spicePkgs.themes.catppuccin;
|
||||
colorScheme = "frappe";
|
||||
|
||||
enabledExtensions = with spicePkgs.extensions; [
|
||||
autoVolume
|
||||
shuffle
|
||||
];
|
||||
};
|
||||
}
|
16
modules/home-manager/programs/tmux/default.nix
Normal file
16
modules/home-manager/programs/tmux/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
clock24 = true;
|
||||
plugins = with pkgs.tmuxPlugins; [
|
||||
{
|
||||
plugin = catppuccin;
|
||||
extraConfig = ''
|
||||
set -g @catppuccin_flavour 'frappe'
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
205
modules/home-manager/programs/waybar.nix
Normal file
205
modules/home-manager/programs/waybar.nix
Normal file
|
@ -0,0 +1,205 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
mainBar = {
|
||||
layer = "top";
|
||||
margin = "10px 10px 0";
|
||||
height = 30;
|
||||
|
||||
modules-left = [ "hyprland/workspaces" ];
|
||||
modules-center = [ "clock" ];
|
||||
modules-right = [
|
||||
"network"
|
||||
"memory"
|
||||
"cpu"
|
||||
"temperature"
|
||||
"battery"
|
||||
"tray"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
format = "{icon}";
|
||||
|
||||
format-icons = {
|
||||
active = "";
|
||||
default = "";
|
||||
empty = "";
|
||||
persistent = "";
|
||||
special = "";
|
||||
urgent = "";
|
||||
};
|
||||
};
|
||||
|
||||
clock = {
|
||||
format = "{:%H:%M} ";
|
||||
format-alt = "{:%A; %B %d, %Y (%R)} ";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "month";
|
||||
mode-mon-col = 3;
|
||||
weeks-pos = "right";
|
||||
on-scroll = 1;
|
||||
on-click-right = "mode";
|
||||
format = {
|
||||
months = "<span color='#e5c890'><b>{}</b></span>";
|
||||
days = "<span color='#c6d0f5'><b>{}</b></span>";
|
||||
weeks = "<span color='#81c8be'><b>W{}</b></span>";
|
||||
weekdays = "<span color='#ef9f76'><b>{}</b></span>";
|
||||
today = "<span color='#a6d189'><b><u>{}</u></b></span>";
|
||||
};
|
||||
actions = {
|
||||
on-click-backward = "tz_down";
|
||||
on-click-forward = "tz_up";
|
||||
on-click-right = "mode";
|
||||
on-scroll-down = "shift_down";
|
||||
on-scroll-up = "shift_up";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
network = {
|
||||
interval = 5;
|
||||
format = " {bandwidthUpBits} {bandwidthDownBits} ";
|
||||
format-disconnected = " No connection";
|
||||
tooltip-format-wifi = " {essid} ({signalStrength}%)";
|
||||
};
|
||||
|
||||
memory = {
|
||||
interval = 5;
|
||||
format = " {percentage}%";
|
||||
states = {
|
||||
warning = 70;
|
||||
critical = 90;
|
||||
};
|
||||
"tooltip-format" = " {used:0.1f}G/{total:0.1f}G";
|
||||
};
|
||||
|
||||
cpu = {
|
||||
interval = 5;
|
||||
tooltip = false;
|
||||
format = " {usage}%";
|
||||
format-alt = " {load}";
|
||||
states = {
|
||||
warning = 70;
|
||||
critical = 90;
|
||||
};
|
||||
};
|
||||
|
||||
temperature = {
|
||||
critical-threshold = 90;
|
||||
interval = 5;
|
||||
format = "{icon} {temperatureC}°";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
# Module configuration
|
||||
battery = {
|
||||
interval = 10;
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
|
||||
format-time = "{H}:{M:02}";
|
||||
format = "{icon} {capacity}% ({time})";
|
||||
format-charging = " {capacity}% ({time})";
|
||||
format-charging-full = " {capacity}%";
|
||||
format-full = "{icon} {capacity}%";
|
||||
format-alt = "{icon} {power}W";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
tooltip = false;
|
||||
};
|
||||
|
||||
tray = {
|
||||
icon-size = 18;
|
||||
spacing = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = ''
|
||||
/* Using https://github.com/catppuccin/catppuccin for color reference. */
|
||||
|
||||
/* Keyframes */
|
||||
@keyframes blink-critical {
|
||||
to {
|
||||
/*color: @white;*/
|
||||
background-color: @critical;
|
||||
}
|
||||
}
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
color: #c6d0f5;
|
||||
font-family: "FantasqueSansM Nerd Font", 'Courier New', Courier, monospace;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right,
|
||||
.modules-center {
|
||||
padding: 0 20px;
|
||||
border-radius: 10px;
|
||||
background-color: rgba(48, 52, 70, 0.85);
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background-color: rgba(48, 52, 70, 0.85);
|
||||
border-radius: 10px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
color: #c6d0f5;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
margin-left: -5px;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #414559;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#network, #cpu, #memory, #temperature {
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
#tray menu {
|
||||
background-color: rgba(48, 52, 70, 0.85);
|
||||
border-radius: 10px;
|
||||
padding: 8px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue