Compare commits
39 Commits
7cbf3cb37b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e87b0ddd24 | ||
|
|
18cfc610e1 | ||
|
|
7277d5b080 | ||
|
|
ed00a90dda | ||
|
|
97b58f141a | ||
|
|
d388d2192a | ||
|
|
41d47f6152 | ||
|
|
df6c1c9402 | ||
|
|
fc548af96a | ||
|
|
1b8db86a98 | ||
|
|
e24078ec81 | ||
|
|
411bf5b0f2 | ||
|
|
7312947723 | ||
|
|
428a1756f3 | ||
|
|
f7afbe6973 | ||
|
|
e917ea97c6 | ||
|
|
8378eec1e0 | ||
|
|
a39f38b3f2 | ||
|
|
aef9169245 | ||
|
|
bb7b073fe9 | ||
|
|
b1a8174ea1 | ||
|
|
4518cccec1 | ||
|
|
8da975b098 | ||
|
|
d452ec86dd | ||
|
|
ed305126a2 | ||
|
|
a59c52a2a3 | ||
|
|
ab380782c3 | ||
|
|
5fd64d47cd | ||
|
|
2956327b0c | ||
|
|
40b3eaba12 | ||
|
|
7fe62ab2ce | ||
|
|
2af075c7dd | ||
|
|
a5cd3713e7 | ||
|
|
c62acaa77f | ||
|
|
39cdbaa430 | ||
|
|
228c57679b | ||
|
|
81fedb6261 | ||
|
|
154b7fb9b2 | ||
|
|
0584a50f5f |
@@ -1,6 +1,6 @@
|
||||
* NixOS
|
||||
** [[file:docs/install.org][Installing]]
|
||||
** Rebuilding
|
||||
*** Rebuilding
|
||||
#+BEGIN_SRC bash
|
||||
sudo nixos-rebuild switch --impure --flake ".#${HOST}"
|
||||
#+END_SRC
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
[general]
|
||||
import = ["~/.config/alacritty/theme.toml"]
|
||||
|
||||
[font]
|
||||
|
||||
@@ -10,22 +10,23 @@
|
||||
(setq display-line-numbers-type t)
|
||||
|
||||
;; Fonts
|
||||
(setq doom-font (font-spec :family "Iosevka Nerd Font" :size 15))
|
||||
(setq doom-unicode-font (font-spec :family "Iosevka Nerd Font" :size 15))
|
||||
(setq doom-font (font-spec :family "Iosevka Nerd Font" :size 18))
|
||||
(setq doom-symbol-font (font-spec :family "Iosevka Nerd Font" :size 18))
|
||||
(setq doom-emoji-font (font-spec :family "Noto Color Emoji" :size 18))
|
||||
|
||||
;; Themeing
|
||||
;; (use-package base16-theme
|
||||
;; :init (add-to-list 'custom-theme-load-path "~/.config/doom/themes")
|
||||
;; :ensure t
|
||||
;; :config
|
||||
;; (load-theme 'base16-samfelag t))
|
||||
(after! doom-themes
|
||||
(load-theme 'doom-nano-dark t))
|
||||
|
||||
(use-package! doom-nano-modeline
|
||||
(use-package base16-theme
|
||||
:init (add-to-list 'custom-theme-load-path "~/.config/doom/themes")
|
||||
:ensure t
|
||||
:config
|
||||
(doom-nano-modeline-mode 1)
|
||||
(global-hide-mode-line-mode 1))
|
||||
(load-theme 'base16-samfelag t))
|
||||
;; (after! doom-themes
|
||||
;; (load-theme 'doom-nano-dark t))
|
||||
|
||||
;; (use-package! doom-nano-modeline
|
||||
;; :config
|
||||
;; (doom-nano-modeline-mode 1)
|
||||
;; (global-hide-mode-line-mode 1))
|
||||
|
||||
;; Here are some additional functions/macros that could help you configure Doom:
|
||||
;;
|
||||
@@ -48,13 +49,25 @@
|
||||
|
||||
(setq-default tab-width 4)
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; Emojify
|
||||
;; -----------------------------------------------------------------------------
|
||||
(use-package! emojify
|
||||
:config
|
||||
(when (member "Noto Color Emoji" (font-family-list))
|
||||
(set-fontset-font
|
||||
t 'emoji (font-spec :family "Noto Color Emoji") nil 'prepend))
|
||||
(setq emojify-display-style 'image)
|
||||
(setq emojify-emoji-styles '(unicode)))
|
||||
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; Projectile
|
||||
;; -----------------------------------------------------------------------------
|
||||
(use-package projectile
|
||||
:config
|
||||
(setq projectile-project-search-path '("~/projects")))
|
||||
|
||||
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; vterm
|
||||
@@ -62,7 +75,7 @@
|
||||
(use-package vterm
|
||||
:config
|
||||
(setq vterm-shell "zsh"))
|
||||
|
||||
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; elisp
|
||||
@@ -74,14 +87,14 @@
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; LSP
|
||||
;; -----------------------------------------------------------------------------
|
||||
(use-package lsp-mode
|
||||
:init
|
||||
:hook (;;
|
||||
(clojure-mode . lsp-deferred)
|
||||
(python-mode . lsp-deferred)
|
||||
;; if you want which-key integration
|
||||
(lsp-mode . lsp-enable-which-key-integration))
|
||||
:commands (lsp lsp-deferred))
|
||||
;; (use-package lsp-mode
|
||||
;; :init
|
||||
;; :hook (;;
|
||||
;; (clojure-mode . lsp-deferred)
|
||||
;; (python-mode . lsp-deferred)
|
||||
;; ;; if you want which-key integration
|
||||
;; (lsp-mode . lsp-enable-which-key-integration))
|
||||
;; :commands (lsp lsp-deferred))
|
||||
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
@@ -94,13 +107,13 @@
|
||||
;; accept underscore as part of a word
|
||||
(superword-mode 1)
|
||||
(modify-syntax-entry ?_ "w" python-mode-syntax-table))
|
||||
|
||||
|
||||
(add-hook 'python-mode-hook 'my-python-mode-hook)
|
||||
|
||||
(use-package py-autopep8
|
||||
:config
|
||||
(setq py-autopep8-options '("--max-line-length=120")))
|
||||
|
||||
|
||||
(use-package pipenv
|
||||
:config
|
||||
(setq pipenv-with-projectile t)
|
||||
@@ -109,7 +122,7 @@
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; Web (HTML + CSS)
|
||||
;; -----------------------------------------------------------------------------
|
||||
(use-package! lsp-tailwindcss)
|
||||
;; (use-package! lsp-tailwindcss)
|
||||
|
||||
;; -----------------------------------------------------------------------------
|
||||
;; Org
|
||||
@@ -138,8 +151,8 @@
|
||||
("lambda" "λ")
|
||||
("not in" "∉")
|
||||
("in" "∈"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(pretty-hook emacs-lisp-mode)
|
||||
;; ("defun" "𝙛")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
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) ; 🙂
|
||||
(emoji +unicode) ; 🙂
|
||||
;; fill-column ; a `fill-column' indicator
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
@@ -94,7 +94,7 @@
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
lsp
|
||||
(lsp +eglot)
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
@@ -155,8 +155,7 @@
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
(python
|
||||
+lsp
|
||||
+pyright) ; beautiful is better than ugly
|
||||
+lsp) ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
|
||||
@@ -1,700 +0,0 @@
|
||||
;;; doom-nano-dark-theme.el --- Dark theme for Doom Emacs based on N Λ N O -*- lexical-binding: t; -*-
|
||||
|
||||
;; Copyright (C) 2023 Ronan Arraes Jardim Chagas
|
||||
;;
|
||||
;; This package is the implementation of N Λ N O theme by Nicolas P. Rougier
|
||||
;; <Nicolas.Rougier@inria.fr> using doom-themes framework.
|
||||
;;
|
||||
;; Author : Ronan Arraes Jardim Chagas
|
||||
;; Created : February 2023
|
||||
;; Keywords : mode-line, header-line
|
||||
;; Package-Requires : ((emacs "28") (doom-themes "2"))
|
||||
;; URL : https://github.com/ronisbr/doom-nano-themes/
|
||||
;; Version : 0.2.3
|
||||
;;
|
||||
;;; Usage:
|
||||
;; 1. Copy this file to `~/.doom.d/themes/' or `~/.config/doom/themes/`.
|
||||
;; 2. Load the theme using `(setq doom-theme 'doom-nano-dark)'.
|
||||
;;
|
||||
;;; License:
|
||||
;; Permission is hereby granted, free of charge, to any person obtaining
|
||||
;; a copy of this software and associated documentation files (the
|
||||
;; "Software"), to deal in the Software without restriction, including
|
||||
;; without limitation the rights to use, copy, modify, merge, publish,
|
||||
;; distribute, sublicense, and/or sell copies of the Software, and to
|
||||
;; permit persons to whom the Software is furnished to do so, subject to
|
||||
;; the following conditions:
|
||||
;;
|
||||
;; The above copyright notice and this permission notice shall be
|
||||
;; included in all copies or substantial portions of the Software.
|
||||
;;
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
|
||||
;; FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
||||
;; THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
;;
|
||||
;;; Commentary:
|
||||
;; This package provides a dark theme for Doom Emacs based on N Λ N O.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defgroup doom-nano-dark-theme nil
|
||||
"Options for the `doom-nano-dark' theme."
|
||||
:group 'doom-themes)
|
||||
|
||||
(defcustom doom-nano-dark-theme-highlight-tab-whitespaces nil
|
||||
"If non-nil, the tab whitespaces will be highlighted."
|
||||
:group 'doom-nano-dark-theme
|
||||
:type 'boolean)
|
||||
|
||||
(def-doom-theme doom-nano-dark
|
||||
"A dark theme for Doom Emacs based on N Λ N O."
|
||||
|
||||
(;; Colors defined by N Λ N O theme. Some colors for the 256 and 16 modes were
|
||||
;; obtained from the Doom Nord theme.
|
||||
(nano-foreground '("#ECEFF4" "#ECECEC" "white"))
|
||||
(nano-background '("#2E3440" "#2E2E2E" "black"))
|
||||
(nano-highlight '("#3B4252" "#262626" "brightblack"))
|
||||
(nano-subtle '("#434C5E" "#3F3F3F" "brightblack"))
|
||||
(nano-faded '("#677691" "#5699AF" "cyan"))
|
||||
(nano-salient '("#81A1C1" "#51AFEF" "brightblue"))
|
||||
(nano-strong '("#FFFFFF" "#FFFFFF" "brightwhite"))
|
||||
(nano-popout '("#D08770" "#DD8844" "brightred"))
|
||||
(nano-critical '("#EBCB8B" "#ECBE7B" "yellow"))
|
||||
|
||||
;; Required colors for a Doom theme.
|
||||
(bg nano-background)
|
||||
(fg nano-foreground)
|
||||
|
||||
(bg-alt nano-highlight)
|
||||
(fg-alt nano-foreground)
|
||||
|
||||
(base0 '("#191C25" "black" "black" ))
|
||||
(base1 '("#242832" "#1E1E1E" "brightblack" ))
|
||||
(base2 '("#2C333F" "#2E2E2E" "brightblack" ))
|
||||
(base3 '("#373E4C" "#262626" "brightblack" ))
|
||||
(base4 '("#434C5E" "#3F3F3F" "brightblack" ))
|
||||
(base5 '("#4C566A" "#525252" "brightblack" ))
|
||||
(base6 '("#9099AB" "#6B6B6B" "brightblack" ))
|
||||
(base7 '("#D8DEE9" "#979797" "brightblack" ))
|
||||
(base8 '("#F0F4FC" "#DFDFDF" "white" ))
|
||||
|
||||
(bright-blue '("#BBDEFB" "#BBDEFB" "brightblue"))
|
||||
(bright-cyan '("#B2EBF2" "#B2EBF2" "brightcyan"))
|
||||
(bright-green '("#C8E6C9" "#C8E6C9" "brightgreen"))
|
||||
(bright-magenta '("#E1BEE7" "#E1BEE7" "brightmagenta"))
|
||||
(bright-red '("#FFCDD2" "#FFCDD2" "brightred"))
|
||||
(bright-white nano-background)
|
||||
(bright-yellow '("#FFF9C4" "#FFF9C4" "brightyellow"))
|
||||
|
||||
(blue '("#42A5F5" "#42A5F5" "blue"))
|
||||
(cyan '("#26C6DA" "#26C6DA" "cyan"))
|
||||
(dark-blue '("#A0BCF8" "#A0BCF8" "blue"))
|
||||
(dark-cyan '("#005478" "#005478" "cyan"))
|
||||
(green '("#66BB6A" "#66BB6A" "green"))
|
||||
(grey base4)
|
||||
(magenta '("#AB47BC" "#AB47BC" "magenta"))
|
||||
(orange '("#DA8548" "#DD8844" "brightred"))
|
||||
(red '("#EF5350" "#EF5350" "red"))
|
||||
(teal '("#4DB5BD" "#44B9B1" "brightgreen"))
|
||||
(violet '("#B751B6" "#B751B6" "brightmagenta"))
|
||||
(white nano-subtle)
|
||||
(yellow '("#FFEE58" "#FFEE58" "yellow"))
|
||||
|
||||
(highlight nano-highlight)
|
||||
(vertical-bar nano-background)
|
||||
(selection nano-subtle)
|
||||
(builtin nano-salient)
|
||||
(comments nano-faded)
|
||||
(doc-comments nano-faded)
|
||||
(constants nano-salient)
|
||||
(functions nano-strong)
|
||||
(keywords nano-salient)
|
||||
(methods nano-strong)
|
||||
(operators nano-salient)
|
||||
(type nano-salient)
|
||||
(strings nano-faded)
|
||||
(variables nano-salient)
|
||||
(numbers nano-salient)
|
||||
(region nano-subtle)
|
||||
(error nano-critical)
|
||||
(warning nano-popout)
|
||||
(success nano-salient)
|
||||
(vc-modified nano-popout)
|
||||
(vc-added nano-salient)
|
||||
(vc-deleted nano-faded))
|
||||
|
||||
(;; Overwrite faces set by Doom theme framework.
|
||||
|
||||
;; === Base =================================================================
|
||||
|
||||
(cursor :foreground bg :background fg)
|
||||
(mouse :foreground fg :background bg)
|
||||
|
||||
;; === General ==============================================================
|
||||
|
||||
(buffer-menu-buffer :foreground nano-strong :weight 'bold)
|
||||
(completions-annotations :foreground nano-faded)
|
||||
(completions-common-part :foreground nano-strong :weight 'bold)
|
||||
(completions-first-difference :foreground fg)
|
||||
(fill-column-indicator :foreground nano-subtle)
|
||||
(help-argument-name :foreground nano-faded)
|
||||
(isearch :foreground nano-strong :weight 'bold)
|
||||
(isearch-fail :foreground nano-faded)
|
||||
(lazy-highlight :background nano-subtle)
|
||||
(minibuffer-prompt :foreground nano-strong :weight 'bold)
|
||||
(nobreak-hyphen :foreground nano-popout)
|
||||
(nobreak-space :foreground nano-popout)
|
||||
(read-multiple-choice-face :foreground nano-strong :weight 'bold)
|
||||
(secondary-selection :background nano-subtle)
|
||||
(show-paren-match :foreground nano-strong :weight 'bold)
|
||||
(show-paren-mismatch :foreground nano-critical)
|
||||
(tabulated-list-fake-header :foreground nano-strong :weight 'bold)
|
||||
(tool-bar :foreground bg :background nano-faded)
|
||||
(tooltip :background nano-subtle)
|
||||
(trailing-whitespace :background nano-subtle)
|
||||
|
||||
(whitespace-tab :background
|
||||
(if doom-nano-dark-theme-highlight-tab-whitespaces
|
||||
nano-subtle
|
||||
bg))
|
||||
|
||||
;; === Ace window ===========================================================
|
||||
|
||||
(aw-leading-char-face :foreground nano-popout)
|
||||
(aw-background-face :foreground nano-faded :background bg)
|
||||
|
||||
;; === ANSI colors ==========================================================
|
||||
|
||||
(ansi-color-black :foreground fg)
|
||||
(ansi-color-bold :foreground nano-strong :weight 'bold)
|
||||
(ansi-color-bright-black :foreground nano-strong :weight 'bold)
|
||||
(ansi-color-faint :foreground nano-faded)
|
||||
(ansi-color-fast-blink :foreground nano-faded)
|
||||
(ansi-color-slow-blink :foreground nano-faded)
|
||||
(ansi-color-inverse :foreground bg :background fg)
|
||||
(ansi-color-italic :foreground fg :slant 'italic)
|
||||
(ansi-color-underline :foreground nano-faded)
|
||||
(ansi-color-blue :foreground blue)
|
||||
(ansi-color-bright-blue :foreground bright-blue)
|
||||
(ansi-color-cyan :foreground cyan)
|
||||
(ansi-color-bright-cyan :foreground bright-cyan)
|
||||
(ansi-color-green :foreground green)
|
||||
(ansi-color-bright-green :foreground bright-green)
|
||||
(ansi-color-magenta :foreground magenta)
|
||||
(ansi-color-bright-magenta :foreground bright-magenta)
|
||||
(ansi-color-red :foreground red)
|
||||
(ansi-color-bright-red :foreground bright-red)
|
||||
(ansi-color-white :foreground white)
|
||||
(ansi-color-bright-white :foreground bright-white)
|
||||
(ansi-color-yellow :foreground yellow)
|
||||
(ansi-color-bright-yellow :foreground bright-yellow)
|
||||
|
||||
;; === Buttons ==============================================================
|
||||
|
||||
(button :foreground nano-faded :background nano-highlight :box nil)
|
||||
((custom-button &override) :foreground nano-faded :background nano-highlight :box nil)
|
||||
((custom-button-unraised &override) :foreground nano-faded :background nano-highlight :box nil)
|
||||
((custom-button-mouse &override) :foreground fg :background nano-subtle :box nil)
|
||||
((custom-button-pressed &override) :foreground bg :background fg :box nil)
|
||||
|
||||
;; === Custom edit ==========================================================
|
||||
|
||||
(custom-changed :foreground nano-salient)
|
||||
(custom-comment :foreground nano-faded)
|
||||
(custom-comment-tag :foreground nano-faded)
|
||||
(custom-face-tag :foreground nano-strong :weight 'bold)
|
||||
(custom-group-subtitle :foreground nano-strong :weight 'bold)
|
||||
(custom-group-tag :foreground nano-strong :weight 'bold)
|
||||
(custom-group-tag-1 :foreground nano-strong :weight 'bold)
|
||||
(custom-invalid :foreground nano-popout)
|
||||
(custom-link :foreground nano-salient)
|
||||
(custom-modified :foreground nano-salient)
|
||||
(custom-state :foreground nano-salient)
|
||||
(custom-variable-obsolete :foreground nano-faded)
|
||||
(custom-variable-tag :foreground nano-strong :weight 'bold)
|
||||
(custom-visibility :foreground nano-salient)
|
||||
(widget-button :foreground nano-strong :weight 'bold)
|
||||
(widget-field :background base2)
|
||||
(widget-single-line-field :background base2)
|
||||
|
||||
;; === Company tooltip ======================================================
|
||||
|
||||
(company-scrollbar-bg :foreground bg :background nano-faded)
|
||||
(company-scrollbar-fg :foreground bg :background fg)
|
||||
(company-tooltip :background nano-subtle)
|
||||
(company-tooltip-annotation :foreground fg)
|
||||
(company-tooltip-annotation-selection :background nano-salient)
|
||||
(company-tooltip-common :foreground nano-strong :weight 'bold)
|
||||
(company-tooltip-common-selection :foreground bg :background nano-salient :weight 'normal)
|
||||
(company-tooltip-mouse :foreground bg :background nano-faded)
|
||||
(company-tooltip-scrollbar-thumb :foreground bg :background fg)
|
||||
(company-tooltip-scrollbar-track :foreground bg :foreground nano-faded)
|
||||
(company-tooltip-selection :foreground bg :background nano-salient)
|
||||
|
||||
;; === Diff =================================================================
|
||||
|
||||
(diff-header :foreground nano-faded)
|
||||
(diff-file :foreground nano-strong :weight 'bold)
|
||||
(diff-context :foreground fg)
|
||||
(diff-removed :foreground nano-faded)
|
||||
(diff-changed :foreground nano-popout)
|
||||
(diff-added :foreground nano-salient)
|
||||
(diff-refine-added :foreground nano-salient :weight 'bold)
|
||||
(diff-refine-changed :foreground nano-popout)
|
||||
(diff-refine-removed :foreground nano-faded :strike-through t)
|
||||
|
||||
;; === Doom NANO modeline ===================================================
|
||||
|
||||
(doom-nano-modeline-evil-emacs-state-face :foreground bg :background nano-faded)
|
||||
(doom-nano-modeline-evil-insert-state-face :foreground bg :background nano-popout)
|
||||
(doom-nano-modeline-evil-motion-state-face :foreground bg :background nano-faded)
|
||||
(doom-nano-modeline-evil-normal-state-face :foreground bg :background nano-faded)
|
||||
(doom-nano-modeline-evil-operator-state-face :foreground bg :background nano-faded)
|
||||
(doom-nano-modeline-evil-replace-state-face :foreground bg :background nano-critical)
|
||||
(doom-nano-modeline-evil-visual-state-face :foreground bg :background nano-salient)
|
||||
(doom-nano-modeline-inactive-face :foreground nano-faded :background nano-highlight)
|
||||
|
||||
;; === Evil mode ============================================================
|
||||
|
||||
(evil-snipe-first-match-face :background nano-highlight :weight 'bold)
|
||||
(evil-snipe-matches-face :background nano-subtle)
|
||||
|
||||
;; === Flycheck =============================================================
|
||||
|
||||
(flycheck-posframe-background-face :background nano-subtle)
|
||||
|
||||
;; === Font lock ============================================================
|
||||
|
||||
(font-lock-variable-name-face :foreground nano-salient :weight 'bold)
|
||||
(font-lock-function-name-face :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Info =================================================================
|
||||
|
||||
(Info-quoted :foreground nano-faded)
|
||||
(info-header-node :foreground fg)
|
||||
(info-index-match :foreground nano-salient)
|
||||
(info-menu-header :foreground nano-strong :weight 'bold)
|
||||
(info-menu-star :foreground fg)
|
||||
(info-node :foreground nano-strong :weight 'bold)
|
||||
(info-title-1 :foreground nano-strong :weight 'bold)
|
||||
(info-title-2 :foreground nano-strong :weight 'bold)
|
||||
(info-title-3 :foreground nano-strong :weight 'bold)
|
||||
(info-title-4 :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Helpful ==============================================================
|
||||
|
||||
(helpful-heading :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Highlight indent guides ==============================================
|
||||
|
||||
(highlight-indent-guides-f)
|
||||
|
||||
;; === Hydra ================================================================
|
||||
|
||||
(hydra-face-red :foreground nano-popout :weight 'bold)
|
||||
|
||||
;; === Line numbers =========================================================
|
||||
|
||||
(line-number :foreground nano-faded)
|
||||
(line-number-current-line :foreground fg)
|
||||
(line-number-major-tick :foreground nano-faded)
|
||||
(line-number-minor-tick :foreground nano-faded)
|
||||
|
||||
;; === LSP ==================================================================
|
||||
|
||||
(lsp-face-highlight-textual :background base1)
|
||||
|
||||
;; === Markdown =============================================================
|
||||
|
||||
(markdown-blockquote-face :foreground fg)
|
||||
(markdown-bold-face :foreground nano-strong :weight 'bold)
|
||||
(markdown-code-face :foreground fg)
|
||||
(markdown-comment-face :foreground nano-faded)
|
||||
(markdown-footnote-marker-face :foreground fg)
|
||||
(markdown-footnote-text-face :foreground fg)
|
||||
(markdown-gfm-checkbox-face :foreground fg)
|
||||
(markdown-header-delimiter-face :foreground nano-faded)
|
||||
(markdown-header-face :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-1 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-2 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-3 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-4 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-5 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-face-6 :foreground nano-strong :weight 'bold)
|
||||
(markdown-header-rule-face :foreground fg)
|
||||
(markdown-highlight-face :foreground fg)
|
||||
(markdown-hr-face :foreground fg)
|
||||
(markdown-html-attr-name-face :foreground fg)
|
||||
(markdown-html-attr-value-face :foreground fg)
|
||||
(markdown-html-entity-face :foreground fg)
|
||||
(markdown-html-tag-delimiter-face :foreground fg)
|
||||
(markdown-html-tag-name-face :foreground fg)
|
||||
(markdown-inline-code-face :foreground nano-popout)
|
||||
(markdown-italic-face :foreground nano-faded :slant 'italic)
|
||||
(markdown-language-info-face :foreground fg)
|
||||
(markdown-language-keyword-face :foreground fg)
|
||||
(markdown-line-break-face :foreground fg)
|
||||
(markdown-link-face :foreground nano-salient)
|
||||
(markdown-link-title-face :foreground fg)
|
||||
(markdown-list-face :foreground nano-faded)
|
||||
(markdown-markup-face :foreground nano-faded)
|
||||
(markdown-math-face :foreground fg)
|
||||
(markdown-metadata-key-face :foreground nano-faded)
|
||||
(markdown-metadata-value-face :foreground nano-faded)
|
||||
(markdown-missing-link-face :foreground fg)
|
||||
(markdown-plain-url-face :foreground fg)
|
||||
(markdown-pre-face :foreground nano-popout)
|
||||
(markdown-reference-face :foreground nano-salient)
|
||||
(markdown-strike-through-face :foreground nano-faded)
|
||||
(markdown-table-face :foreground fg)
|
||||
(markdown-url-face :foreground nano-salient)
|
||||
|
||||
;; === Magit ================================================================
|
||||
|
||||
(magit-bisect-bad :foreground fg)
|
||||
(magit-bisect-good :foreground fg)
|
||||
(magit-bisect-skip :foreground fg)
|
||||
(magit-blame-date :foreground fg)
|
||||
(magit-blame-dimmed :foreground fg)
|
||||
(magit-blame-hash :foreground nano-faded)
|
||||
(magit-blame-heading :background nano-subtle :weight 'bold)
|
||||
(magit-blame-highlight :background highlight)
|
||||
(magit-blame-margin :foreground fg)
|
||||
(magit-blame-name :foreground fg)
|
||||
(magit-blame-summary :foreground fg)
|
||||
(magit-branch-current :foreground nano-salient :weight 'bold)
|
||||
(magit-branch-local :foreground nano-salient)
|
||||
(magit-branch-remote :foreground nano-salient)
|
||||
(magit-branch-remote-head :foreground nano-salient)
|
||||
(magit-branch-upstream :foreground nano-salient)
|
||||
(magit-cherry-equivalent :foreground fg)
|
||||
(magit-cherry-unmatched :foreground fg)
|
||||
(magit-diff-added :foreground nano-salient :weight 'bold)
|
||||
(magit-diff-added-highlight :foreground nano-salient :weight 'bold)
|
||||
(magit-diff-base :foreground fg)
|
||||
(magit-diff-base-highlight :background highlight)
|
||||
(magit-diff-conflict-heading :background nano-subtle :weight 'bold)
|
||||
(magit-diff-context :foreground nano-faded)
|
||||
(magit-diff-context-highlight :foreground nano-faded)
|
||||
(magit-diff-file-heading :foreground nano-strong :weight 'bold)
|
||||
(magit-diff-file-heading-highlight :background highlight :weight 'bold)
|
||||
(magit-diff-file-heading-selection :foreground fg)
|
||||
(magit-diff-hunk-heading :background nano-subtle)
|
||||
(magit-diff-hunk-heading-highlight :foreground fg)
|
||||
(magit-diff-hunk-heading-selection :foreground fg)
|
||||
(magit-diff-hunk-region :foreground fg)
|
||||
(magit-diff-lines-boundary :foreground fg)
|
||||
(magit-diff-lines-heading :background nano-subtle :weight 'bold)
|
||||
(magit-diff-our :foreground fg)
|
||||
(magit-diff-our-highlight :background highlight)
|
||||
(magit-diff-removed :foreground nano-popout :weight 'bold)
|
||||
(magit-diff-removed-highlight :foreground nano-popout :weight 'bold)
|
||||
(magit-diff-revision-summary :foreground nano-popout)
|
||||
(magit-diff-revision-summary-highlight :foreground fg)
|
||||
(magit-diff-their :foreground fg)
|
||||
(magit-diff-their-highlight :background highlight)
|
||||
(magit-diff-whitespace-warning :background nano-subtle)
|
||||
(magit-diffstat-added :foreground fg)
|
||||
(magit-diffstat-removed :foreground fg)
|
||||
(magit-dimmed :foreground nano-faded)
|
||||
(magit-filename :foreground fg)
|
||||
(magit-hash :foreground nano-faded)
|
||||
(magit-head :foreground fg)
|
||||
(magit-header-line :foreground fg)
|
||||
(magit-header-line-key :foreground fg)
|
||||
(magit-header-line-log-select :foreground fg)
|
||||
(magit-keyword :foreground nano-salient)
|
||||
(magit-keyword-squash :foreground nano-salient)
|
||||
(magit-log-author :foreground fg)
|
||||
(magit-log-date :foreground fg)
|
||||
(magit-log-graph :foreground fg)
|
||||
(magit-mode-line-process :foreground fg)
|
||||
(magit-mode-line-process-error :foreground nano-critical)
|
||||
(magit-process-ng :foreground fg)
|
||||
(magit-process-ok :foreground fg)
|
||||
(magit-reflog-amend :foreground fg)
|
||||
(magit-reflog-checkout :foreground fg)
|
||||
(magit-reflog-cherry-pick :foreground fg)
|
||||
(magit-reflog-commit :foreground fg)
|
||||
(magit-reflog-merge :foreground fg)
|
||||
(magit-reflog-other :foreground fg)
|
||||
(magit-reflog-rebase :foreground fg)
|
||||
(magit-reflog-remote :foreground fg)
|
||||
(magit-reflog-reset :foreground fg)
|
||||
(magit-refname :foreground fg)
|
||||
(magit-refname-pullreq :foreground fg)
|
||||
(magit-refname-stash :foreground fg)
|
||||
(magit-refname-wip :foreground fg)
|
||||
(magit-section-heading :foreground nano-salient :weight 'bold)
|
||||
(magit-section-heading-selection :foreground fg)
|
||||
(magit-section-highlight :background highlight)
|
||||
(magit-section-secondary-heading :foreground fg)
|
||||
(magit-sequence-done :foreground fg)
|
||||
(magit-sequence-drop :foreground fg)
|
||||
(magit-sequence-exec :foreground fg)
|
||||
(magit-sequence-head :foreground fg)
|
||||
(magit-sequence-onto :foreground fg)
|
||||
(magit-sequence-part :foreground fg)
|
||||
(magit-sequence-pick :foreground fg)
|
||||
(magit-sequence-stop :foreground fg)
|
||||
(magit-signature-bad :foreground fg)
|
||||
(magit-signature-error :foreground fg)
|
||||
(magit-signature-expired :foreground fg)
|
||||
(magit-signature-expired-key :foreground fg)
|
||||
(magit-signature-good :foreground fg)
|
||||
(magit-signature-revoked :foreground fg)
|
||||
(magit-signature-untrusted :foreground fg)
|
||||
(magit-tag :foreground nano-strong)
|
||||
|
||||
;; === Marginalia ===========================================================
|
||||
|
||||
(marginalia-archive :foreground nano-faded)
|
||||
(marginalia-char :foreground nano-faded)
|
||||
(marginalia-date :foreground nano-faded)
|
||||
(marginalia-documentation :foreground nano-faded)
|
||||
(marginalia-file-name :foreground nano-faded)
|
||||
(marginalia-file-owner :foreground nano-faded)
|
||||
(marginalia-file-priv-dir :foreground nano-faded)
|
||||
(marginalia-file-priv-exec :foreground nano-faded)
|
||||
(marginalia-file-priv-link :foreground nano-faded)
|
||||
(marginalia-file-priv-no :foreground nano-faded)
|
||||
(marginalia-file-priv-other :foreground nano-faded)
|
||||
(marginalia-file-priv-rare :foreground nano-faded)
|
||||
(marginalia-file-priv-read :foreground nano-faded)
|
||||
(marginalia-file-priv-write :foreground nano-faded)
|
||||
(marginalia-function :foreground nano-faded)
|
||||
(marginalia-installed :foreground nano-faded)
|
||||
(marginalia-key :foreground nano-faded)
|
||||
(marginalia-lighter :foreground nano-faded)
|
||||
(marginalia-list :foreground nano-faded)
|
||||
(marginalia-mode :foreground nano-faded)
|
||||
(marginalia-modified :foreground nano-faded)
|
||||
(marginalia-null :foreground nano-faded)
|
||||
(marginalia-number :foreground nano-faded)
|
||||
(marginalia-off :foreground nano-faded)
|
||||
(marginalia-on :foreground nano-faded)
|
||||
(marginalia-size :foreground nano-faded)
|
||||
(marginalia-string :foreground nano-faded)
|
||||
(marginalia-symbol :foreground nano-faded)
|
||||
(marginalia-true :foreground nano-faded)
|
||||
(marginalia-type :foreground nano-faded)
|
||||
(marginalia-value :foreground nano-faded)
|
||||
(marginalia-version :foreground nano-faded)
|
||||
|
||||
;; === Message ==============================================================
|
||||
|
||||
(message-cited-text :foreground nano-faded)
|
||||
(message-cited-text-1 :foreground nano-faded)
|
||||
(message-cited-text-2 :foreground nano-faded)
|
||||
(message-cited-text-3 :foreground nano-faded)
|
||||
(message-cited-text-4 :foreground nano-faded)
|
||||
(message-header-cc :foreground fg)
|
||||
(message-header-name :foreground nano-strong :weight 'bold)
|
||||
(message-header-newsgroups :foreground fg)
|
||||
(message-header-other :foreground fg)
|
||||
(message-header-subject :foreground nano-salient)
|
||||
(message-header-to :foreground nano-salient)
|
||||
(message-header-xheader :foreground fg)
|
||||
(message-mml :foreground nano-popout)
|
||||
(message-separator :foreground nano-faded)
|
||||
|
||||
;; === Modeline =============================================================
|
||||
|
||||
(mode-line :foreground fg :background nano-subtle)
|
||||
(mode-line-inactive :foreground nano-strong :background nano-highlight)
|
||||
(mode-line-emphasis :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Packages =============================================================
|
||||
|
||||
(package-description :foreground fg)
|
||||
(package-help-section-name :foreground fg)
|
||||
(package-name :foreground nano-salient)
|
||||
(package-status-avail-obso :foreground nano-faded)
|
||||
(package-status-available :foreground fg)
|
||||
(package-status-built-in :foreground nano-salient)
|
||||
(package-status-dependency :foreground nano-salient)
|
||||
(package-status-disabled :foreground nano-faded)
|
||||
(package-status-external :foreground fg)
|
||||
(package-status-held :foreground fg)
|
||||
(package-status-incompat :foreground nano-faded)
|
||||
(package-status-installed :foreground nano-salient)
|
||||
(package-status-new :foreground fg)
|
||||
(package-status-unsigned :foreground fg)
|
||||
|
||||
;; === Orderless ============================================================
|
||||
|
||||
(orderless-match-face-0 :foreground nano-salient :weight 'bold)
|
||||
(orderless-match-face-1 :foreground nano-strong :weight 'bold)
|
||||
(orderless-match-face-2 :foreground nano-strong :weight 'bold)
|
||||
(orderless-match-face-3 :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Org mode =============================================================
|
||||
|
||||
(org-archived :foreground nano-faded)
|
||||
(org-block :background highlight)
|
||||
(org-block-begin-line :background nano-subtle :foreground nano-faded)
|
||||
(org-block-end-line :background nano-subtle :foreground nano-faded)
|
||||
(org-checkbox :foreground nano-faded)
|
||||
(org-checkbox-statistics-done :foreground nano-faded)
|
||||
(org-checkbox-statistics-todo :foreground nano-faded)
|
||||
(org-clock-overlay :foreground nano-faded)
|
||||
(org-code :foreground nano-salient)
|
||||
(org-column :foreground nano-faded)
|
||||
(org-column-title :foreground nano-faded)
|
||||
(org-date :foreground nano-faded)
|
||||
(org-date-selected :foreground nano-popout)
|
||||
(org-default :foreground nano-faded)
|
||||
(org-document-info :foreground nano-faded)
|
||||
(org-document-info-keyword :foreground nano-faded)
|
||||
(org-document-title :foreground nano-faded)
|
||||
(org-done :foreground nano-faded)
|
||||
(org-drawer :foreground nano-faded)
|
||||
(org-ellipsis :foreground nano-faded)
|
||||
(org-footnote :foreground nano-faded)
|
||||
(org-formula :foreground nano-faded)
|
||||
(org-headline-done :foreground nano-faded)
|
||||
(org-latex-and-related :foreground nano-faded)
|
||||
(org-level-1 :foreground nano-strong :weight 'bold)
|
||||
(org-level-2 :foreground nano-strong :weight 'bold)
|
||||
(org-level-3 :foreground nano-strong :weight 'bold)
|
||||
(org-level-4 :foreground nano-strong :weight 'bold)
|
||||
(org-level-5 :foreground nano-strong :weight 'bold)
|
||||
(org-level-6 :foreground nano-strong :weight 'bold)
|
||||
(org-level-7 :foreground nano-strong :weight 'bold)
|
||||
(org-level-8 :foreground nano-strong :weight 'bold)
|
||||
(org-link :foreground nano-salient)
|
||||
(org-list-dt :foreground nano-faded)
|
||||
(org-macro :foreground nano-faded)
|
||||
(org-meta-line :foreground nano-faded)
|
||||
(org-mode-line-clock :foreground nano-faded)
|
||||
(org-mode-line-clock-overrun :foreground nano-faded)
|
||||
(org-priority :foreground nano-faded)
|
||||
(org-property-value :foreground nano-faded)
|
||||
(org-quote :foreground nano-faded)
|
||||
(org-scheduled :foreground nano-faded)
|
||||
(org-scheduled-previously :foreground nano-faded)
|
||||
(org-scheduled-today :foreground nano-faded)
|
||||
(org-sexp-date :foreground nano-faded)
|
||||
(org-special-keyword :foreground nano-faded)
|
||||
(org-table :foreground nano-faded)
|
||||
(org-tag :foreground nano-popout)
|
||||
(org-tag-group :foreground nano-faded)
|
||||
(org-target :foreground nano-faded)
|
||||
(org-time-grid :foreground nano-faded)
|
||||
(org-todo :foreground nano-salient)
|
||||
(org-upcoming-deadline :foreground nano-popout)
|
||||
(org-verbatim :foreground nano-popout)
|
||||
(org-verse :foreground nano-faded)
|
||||
(org-warning :foreground nano-popout)
|
||||
|
||||
;; === Org-agenda ===========================================================
|
||||
|
||||
(org-agenda-calendar-event :foreground fg)
|
||||
(org-agenda-calendar-sexp :foreground nano-salient)
|
||||
(org-agenda-clocking :foreground nano-faded)
|
||||
(org-agenda-column-dateline :foreground nano-faded)
|
||||
(org-agenda-current-time :foreground nano-salient :weight 'bold)
|
||||
(org-agenda-date :foreground nano-strong :weight 'bold)
|
||||
(org-agenda-date-today :foreground nano-salient :weight 'bold)
|
||||
(org-agenda-date-weekend :foreground nano-faded)
|
||||
(org-agenda-diary :foreground nano-faded)
|
||||
(org-agenda-dimmed-todo-face :foreground nano-faded)
|
||||
(org-agenda-done :foreground nano-faded)
|
||||
(org-agenda-filter-category :foreground nano-faded)
|
||||
(org-agenda-filter-effort :foreground nano-faded)
|
||||
(org-agenda-filter-regexp :foreground nano-faded)
|
||||
(org-agenda-filter-tags :foreground nano-faded)
|
||||
(org-agenda-property-face :foreground nano-faded)
|
||||
(org-agenda-restriction-lock :foreground nano-faded)
|
||||
(org-agenda-structure :foreground nano-strong :weight 'bold)
|
||||
|
||||
;; === Popup ================================================================
|
||||
|
||||
(popup-face :foreground highlight)
|
||||
(popup-isearch-match :foreground nano-popout)
|
||||
(popup-menu-face :foreground nano-subtle)
|
||||
(popup-menu-mouse-face :foreground bg :background nano-faded)
|
||||
(popup-menu-selection-face :foreground bg :background nano-salient)
|
||||
(popup-menu-summary-face :foreground nano-faded)
|
||||
(popup-scroll-bar-background-face :foreground nano-subtle)
|
||||
(popup-scroll-bar-foreground-face :foreground nano-subtle)
|
||||
(popup-summary-face :foreground nano-faded)
|
||||
(popup-tip-face :foreground bg :background nano-popout)
|
||||
|
||||
;; === Semantics ============================================================
|
||||
|
||||
(match :foreground nano-popout)
|
||||
(shadow :foreground nano-faded)
|
||||
|
||||
;; === smerge ===============================================================
|
||||
|
||||
(smerge-lower :background bg)
|
||||
(smerge-markers :background nano-subtle :weight 'bold :distant-foreground 'unspecified)
|
||||
(smerge-refined-added :foreground nano-salient :weight 'bold)
|
||||
(smerge-refined-changed :foreground nano-popout)
|
||||
(smerge-refined-removed :foreground nano-faded :strike-through t)
|
||||
(smerge-upper :background bg)
|
||||
|
||||
;; === Structural ===========================================================
|
||||
|
||||
(bold :foreground nano-strong :weight 'bold)
|
||||
(bold-italic :foreground nano-strong :weight 'bold)
|
||||
(fixed-pitch :foreground fg)
|
||||
(fixed-pitch-serif :foreground fg)
|
||||
(fringe :foreground nano-faded)
|
||||
(hl-line :background highlight)
|
||||
(italic :foreground nano-faded :slant 'italic)
|
||||
(link :foreground nano-salient)
|
||||
(region :background nano-subtle :distant-foreground 'unspecified)
|
||||
|
||||
;; === Terminal =============================================================
|
||||
|
||||
(term-bold :foreground nano-strong :weight 'bold)
|
||||
(term-color-black :foreground fg)
|
||||
(term-color-blue :foreground blue :background bright-blue)
|
||||
(term-color-cyan :foreground cyan :background bright-cyan)
|
||||
(term-color-green :foreground green :background bright-green)
|
||||
(term-color-magenta :foreground magenta :background bright-magenta)
|
||||
(term-color-red :foreground red :background bright-red)
|
||||
(term-color-yellow :foreground yellow :background bright-yellow)
|
||||
|
||||
;; === Transient ============================================================
|
||||
|
||||
;; Set only faces that influence Magit.
|
||||
(transient-value :foreground fg)
|
||||
|
||||
;; === Vertico ==============================================================
|
||||
|
||||
(vertico-current :background nano-subtle :weight 'bold)
|
||||
(vertico-group-separator :foreground nano-faded)
|
||||
(vertico-group-title :foreground nano-faded)
|
||||
(vertico-multiline :foreground nano-faded)
|
||||
|
||||
;;; === Vterm ===============================================================
|
||||
|
||||
(vterm-color-black :foreground fg :background fg)
|
||||
(vterm-color-blue :foreground blue :background bright-blue)
|
||||
(vterm-color-cyan :foreground cyan :background bright-cyan)
|
||||
(vterm-color-green :foreground green :background bright-green)
|
||||
(vterm-color-magenta :foreground magenta :background bright-magenta)
|
||||
(vterm-color-red :foreground red :background bright-red)
|
||||
(vterm-color-yellow :foreground yellow :background bright-yellow)
|
||||
(vterm-color-white :foreground white :background white)
|
||||
|
||||
;; === Workspaces ===========================================================
|
||||
|
||||
(+workspace-tab-selected-face :foreground nano-salient :weight 'bold)
|
||||
|
||||
;; === Which key ============================================================
|
||||
|
||||
(which-key-command-description-face :foreground fg)
|
||||
(which-key-key-face :foreground nano-strong :weight 'bold)
|
||||
(which-key-key-group-description-face :foreground nano-salient)))
|
||||
|
||||
(provide 'doom-nano-dark-theme)
|
||||
|
||||
;;; doom-nano-dark-theme.el ends here
|
||||
72
config/grapheio/scripts/brightness.sh
Executable file
72
config/grapheio/scripts/brightness.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Dependencies:
|
||||
# - amixer
|
||||
# - pactl
|
||||
# - jq
|
||||
# - libnotify
|
||||
|
||||
ACTION=$1
|
||||
|
||||
get_brightness() {
|
||||
brightnessctl | \
|
||||
grep "Current brightness" | \
|
||||
sed -e 's/^\s\+Current brightness: [0-9]\+ (\([0-9]\+\)%).*$/\1/'
|
||||
}
|
||||
|
||||
get_kb_brightness() {
|
||||
brightnessctl -d platform::kbd_backlight | \
|
||||
grep "Current brightness" | \
|
||||
sed -e 's/^\s\+Current brightness: [0-9]\+ (\([0-9]\+\)%).*$/\1/'
|
||||
}
|
||||
|
||||
notify() {
|
||||
notify-send "$1" "$2" -e -t 1500 -h string:x-canonical-private-synchronous:brightness
|
||||
}
|
||||
|
||||
set_brightness() {
|
||||
# Set the brightness
|
||||
TARGET=$1
|
||||
brightnessctl set $TARGET > /dev/null
|
||||
|
||||
# Send a notification
|
||||
BRIGHTNESS=$(get_brightness)
|
||||
ACTION=$([[ ${TARGET:0:1} == "+" ]] && echo "Brightness Up" || echo "Brightness Down")
|
||||
|
||||
BRIGHTNESS_ICON=""
|
||||
|
||||
TITLE=$(echo "$BRIGHTNESS_ICON $ACTION")
|
||||
BODY=$(echo "$BRIGHTNESS%")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
set_kb_brightness() {
|
||||
# Set the brightness
|
||||
TARGET=$1
|
||||
brightnessctl -d platform::kbd_backlight set $TARGET > /dev/null
|
||||
|
||||
# Send a notification
|
||||
BRIGHTNESS=$(get_kb_brightness)
|
||||
ACTION=$([[ ${TARGET:0:1} == "+" ]] && echo "Keyboard brightness Up" || echo "Keyboard brightness Down")
|
||||
|
||||
BRIGHTNESS_ICON=""
|
||||
|
||||
TITLE=$(echo "$BRIGHTNESS_ICON $ACTION")
|
||||
BODY=$(echo "$BRIGHTNESS%")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
|
||||
case $ACTION in
|
||||
set)
|
||||
set_brightness $2
|
||||
;;
|
||||
kb_set)
|
||||
set_kb_brightness $2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
27
config/grapheio/scripts/screenshot.sh
Executable file
27
config/grapheio/scripts/screenshot.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Dependencies:
|
||||
# - slurp
|
||||
# - grim
|
||||
|
||||
ACTION=$1
|
||||
|
||||
DATESTAMP=$(date +"%Y%m%d%H%M%S")
|
||||
OUT_DIR="${HOME}/screenshots"
|
||||
OUT_FILE="capture-${ACTION}-${DATESTAMP}.png"
|
||||
|
||||
case $ACTION in
|
||||
region)
|
||||
[[ ! -d "${OUT_DIR}" ]] && mkdir $OUT_DIR
|
||||
slurp | grim -t png -g - "${OUT_DIR}/${OUT_FILE}"
|
||||
;;
|
||||
screen)
|
||||
[[ ! -d "${OUT_DIR}" ]] && mkdir $OUT_DIR
|
||||
grim -t png "${OUT_DIR}/${OUT_FILE}"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
79
config/grapheio/scripts/volume.sh
Executable file
79
config/grapheio/scripts/volume.sh
Executable file
@@ -0,0 +1,79 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Dependencies:
|
||||
# - amixer
|
||||
# - pactl
|
||||
# - jq
|
||||
# - libnotify
|
||||
|
||||
ACTION=$1
|
||||
|
||||
get_volume_info() {
|
||||
amixer sget Master | \
|
||||
grep 'Left:' | \
|
||||
sed -e 's/[^[]*\[\([0-9]*\)%\][^[]\[\(\w*\)\]/{"volume": \1, "muted": \2}/' \
|
||||
-e 's/on/false/' \
|
||||
-e 's/off/true/'
|
||||
}
|
||||
|
||||
notify() {
|
||||
notify-send "$1" "$2" -e -t 1500 -h string:x-canonical-private-synchronous:volume
|
||||
}
|
||||
|
||||
mute() {
|
||||
pactl set-sink-mute @DEFAULT_SINK@ toggle
|
||||
|
||||
VOLUME_INFO=$(get_volume_info)
|
||||
VOLUME=$(echo $VOLUME_INFO | jq .volume)
|
||||
if [ $(echo $VOLUME_INFO | jq .muted) == "true" ]
|
||||
then
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="Muted"
|
||||
BODY=""
|
||||
else
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="Unmuted"
|
||||
BODY=$(echo "$VOLUME%")
|
||||
fi
|
||||
|
||||
TITLE=$(echo "$AUDIO_ICON $MUTED_STR")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
set_volume() {
|
||||
# Set the volume
|
||||
TARGET=$1
|
||||
pactl set-sink-volume @DEFAULT_SINK@ $TARGET
|
||||
|
||||
# Send a notification
|
||||
VOLUME_INFO=$(get_volume_info)
|
||||
ACTION=$([[ ${TARGET:0:1} == "+" ]] && echo "Volume Up" || echo "Volume Down")
|
||||
VOLUME=$(echo $VOLUME_INFO | jq .volume)
|
||||
|
||||
if [ $(echo $VOLUME_INFO | jq .muted) == "true" ]
|
||||
then
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR="[muted]"
|
||||
else
|
||||
AUDIO_ICON=""
|
||||
MUTED_STR=""
|
||||
fi
|
||||
|
||||
TITLE=$(echo "$AUDIO_ICON $ACTION")
|
||||
BODY=$(echo "$VOLUME% $MUTED_STR")
|
||||
notify "$TITLE" "$BODY"
|
||||
}
|
||||
|
||||
case $ACTION in
|
||||
mute)
|
||||
mute
|
||||
;;
|
||||
set)
|
||||
set_volume $2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown action"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
70
config/kanata/kanata.kbd
Normal file
70
config/kanata/kanata.kbd
Normal file
@@ -0,0 +1,70 @@
|
||||
(defcfg
|
||||
linux-dev-names-exclude (
|
||||
"ZSA Technology Labs Voyager"
|
||||
"ZSA Technology Labs Voyager Consumer Control"
|
||||
"ZSA Technology Labs Voyager Keyboard"
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deflocalkeys-linux
|
||||
ImpPt 99
|
||||
º 41
|
||||
' 12
|
||||
¡ 13
|
||||
` 26
|
||||
+ 27
|
||||
ñ 39
|
||||
´ 40
|
||||
ç 43
|
||||
< 86
|
||||
- 53
|
||||
)
|
||||
|
||||
(defsrc
|
||||
esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 ins ImpPt del home end pgup pgdn
|
||||
º 1 2 3 4 5 6 7 8 9 0 ' ¡ Backspace nlck kp/ kp* kp-
|
||||
tab q w e r t y u i o p ` + kp7 kp8 kp9
|
||||
caps a s d f g h j k l ñ ´ ç ret kp4 kp5 kp6 kp+
|
||||
lsft < z x c v b n m , . - rsft kp1 kp2 kp3
|
||||
lctl lmet lalt spc ralt rctl up kp0 kp. kprt
|
||||
left down rght
|
||||
)
|
||||
|
||||
(defvar
|
||||
tap-time 200
|
||||
hold-time 250
|
||||
)
|
||||
|
||||
(defalias
|
||||
caps (tap-hold $tap-time $hold-time caps (layer-while-held layer1))
|
||||
a (tap-hold $tap-time $hold-time a lalt)
|
||||
s (tap-hold $tap-time $hold-time s lsft)
|
||||
d (tap-hold $tap-time $hold-time d lmet)
|
||||
f (tap-hold $tap-time $hold-time f lctl)
|
||||
g (tap-hold $tap-time $hold-time g (layer-while-held layer1))
|
||||
h (tap-hold $tap-time $hold-time h rctl)
|
||||
j (tap-hold $tap-time $hold-time j rmet)
|
||||
k (tap-hold $tap-time $hold-time k rsft)
|
||||
l (tap-hold $tap-time $hold-time l ralt)
|
||||
)
|
||||
|
||||
(deflayer base
|
||||
esc mute vold volu - brdn brup - - - - - - ins ImpPt del home end pgup pgdn
|
||||
º 1 2 3 4 5 6 7 8 9 0 ' ¡ Backspace nlck kp/ kp* kp-
|
||||
tab q w e r t y u i o p ` + kp7 kp8 kp9
|
||||
@caps @a @s @d @f @g @h @j @k @l ñ ´ ç ret kp4 kp5 kp6 kp+
|
||||
lsft < z x c v b n m , . - rsft kp1 kp2 kp3
|
||||
lctl lmet lalt spc ralt rctl up kp0 kp. kprt
|
||||
left down rght
|
||||
)
|
||||
|
||||
(deflayer layer1
|
||||
_ f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 _ _ _ _ _ _ _
|
||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
_ _ _ _ _ _ left down up right _ _ _ _ _ _ _ _
|
||||
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
@@ -31,4 +31,10 @@ client {
|
||||
path = "/mnt/vatnajokull/nomad_volumes/gitea/data"
|
||||
read_only = false
|
||||
}
|
||||
|
||||
# Folkugat
|
||||
host_volume "folkugat" {
|
||||
path = "/var/lib/nomad_volumes/folkugat"
|
||||
read_only = false
|
||||
}
|
||||
}
|
||||
|
||||
147
config/rofi/menus/cliphist/cliphist.rasi
Executable file
147
config/rofi/menus/cliphist/cliphist.rasi
Executable file
@@ -0,0 +1,147 @@
|
||||
/**
|
||||
*
|
||||
* Author : Marc Sastre, based on Aditya Shakya (adi1090x, Github : @adi1090x)
|
||||
*
|
||||
**/
|
||||
|
||||
@import "~/.config/rofi/theme.rasi"
|
||||
|
||||
/*****----- Configuration -----*****/
|
||||
configuration {
|
||||
show-icons: false;
|
||||
}
|
||||
|
||||
/*****----- Main Window -----*****/
|
||||
window {
|
||||
/* properties for window widget */
|
||||
transparency: "real";
|
||||
location: center;
|
||||
anchor: center;
|
||||
fullscreen: false;
|
||||
width: 800px;
|
||||
x-offset: 0px;
|
||||
y-offset: 0px;
|
||||
|
||||
/* properties for all widgets */
|
||||
enabled: true;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 2px solid;
|
||||
border-radius: 15px;
|
||||
border-color: @background-alt;
|
||||
cursor: "default";
|
||||
background-color: @background;
|
||||
}
|
||||
|
||||
/*****----- Main Box -----*****/
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 15px;
|
||||
margin: 0px;
|
||||
padding: 30px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
children: [ "inputbar", "listview" ];
|
||||
}
|
||||
message {
|
||||
enabled: true;
|
||||
margin: 0px;
|
||||
padding: 10px;
|
||||
border: 0px solid;
|
||||
border-radius: 10px;
|
||||
border-color: @selected;
|
||||
background-color: @background-alt;
|
||||
text-color: @foreground;
|
||||
}
|
||||
textbox {
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
placeholder-color: @foreground;
|
||||
blink: true;
|
||||
markup: true;
|
||||
}
|
||||
|
||||
/*****----- Inputbar -----*****/
|
||||
inputbar {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
padding: 15px;
|
||||
border-radius: 10px;
|
||||
background-color: @background-alt;
|
||||
text-color: @foreground;
|
||||
children: [ "textbox-prompt-colon", "entry" ];
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
enabled: true;
|
||||
expand: false;
|
||||
str: "";
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
entry {
|
||||
enabled: true;
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
/*****----- Listview -----*****/
|
||||
listview {
|
||||
enabled: true;
|
||||
columns: 1;
|
||||
lines: 5;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 5px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
/*****----- Elements -----*****/
|
||||
element {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
margin: 0px;
|
||||
padding: 12px;
|
||||
border: 0px solid;
|
||||
border-radius: 100%;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: pointer;
|
||||
}
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
cursor: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: var(selected);
|
||||
text-color: var(background);
|
||||
}
|
||||
element active {
|
||||
background-color: var(active);
|
||||
text-color: var(background);
|
||||
}
|
||||
element selected.active {
|
||||
background-color: var(selected);
|
||||
text-color: var(background);
|
||||
}
|
||||
12
config/rofi/menus/cliphist/cliphist.sh
Executable file
12
config/rofi/menus/cliphist/cliphist.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# For debugging/development purposes
|
||||
# PREFIX=projects/samfelag/config/
|
||||
|
||||
# Rofi command to pipe into, can add any options here
|
||||
dir="$HOME/$PREFIX.config/rofi/menus/cliphist/"
|
||||
theme='cliphist'
|
||||
|
||||
rofi_command="rofi -dmenu -i -theme ${dir}/${theme}.rasi"
|
||||
|
||||
cliphist list | $rofi_command | cliphist decode | wl-copy
|
||||
@@ -81,8 +81,8 @@ case ${chosen} in
|
||||
$lock)
|
||||
if command -v i3lock-color; then
|
||||
i3lock-color -c 808F85 && sleep 1
|
||||
# elif command -v betterlockscreen; then
|
||||
# betterlockscreen -l
|
||||
elif command -v hyprlock; then
|
||||
hyprlock
|
||||
fi
|
||||
;;
|
||||
$suspend)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[[ -x "$(command -v eza)" ]] && {
|
||||
alias ll="eza --group-directories-first --color=auto --git -la"
|
||||
alias ll="eza --group-directories-first --color=auto --icons=auto --git -la"
|
||||
} || {
|
||||
alias ll="ls -alh --color=always --group-directories-first"
|
||||
}
|
||||
|
||||
1723
config/zsh/.p10k.zsh
1723
config/zsh/.p10k.zsh
File diff suppressed because it is too large
Load Diff
8
data/devenv/templates/rust/Cargo.toml
Normal file
8
data/devenv/templates/rust/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = ""
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
62
data/nomad/folkugat.nomad
Normal file
62
data/nomad/folkugat.nomad
Normal file
@@ -0,0 +1,62 @@
|
||||
job "folkugat" {
|
||||
region = "global"
|
||||
datacenters = ["samfelag"]
|
||||
type = "service"
|
||||
|
||||
group "folkugat" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 5
|
||||
delay = "15s"
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
# Volumes
|
||||
|
||||
volume "folkugat" {
|
||||
type = "host"
|
||||
read_only = false
|
||||
source = "folkugat"
|
||||
}
|
||||
|
||||
# FOLKUGAT WEB
|
||||
task "folkugat" {
|
||||
driver = "docker"
|
||||
|
||||
env {
|
||||
JWT_SECRET = "12345"
|
||||
ADMIN_PASSWORD = "banshee"
|
||||
URL_SCHEME = "https"
|
||||
DB_DIR = "/folkugat/db"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "marc.sastre.cat/folkugat-web:latest"
|
||||
ports = ["http"]
|
||||
}
|
||||
|
||||
volume_mount {
|
||||
volume = "folkugat"
|
||||
destination = "/folkugat/db"
|
||||
read_only = false
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 100
|
||||
memory = 512
|
||||
}
|
||||
|
||||
service {
|
||||
name = "folkugat"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ job "gitea" {
|
||||
|
||||
resources {
|
||||
cpu = 1000
|
||||
memory = 256
|
||||
memory = 400
|
||||
}
|
||||
|
||||
service {
|
||||
|
||||
46
data/nomad/old/cua-quinto.nomad
Normal file
46
data/nomad/old/cua-quinto.nomad
Normal file
@@ -0,0 +1,46 @@
|
||||
job "cua-quinto" {
|
||||
region = "global"
|
||||
datacenters = ["samfelag"]
|
||||
type = "service"
|
||||
|
||||
group "cua-quinto" {
|
||||
count = 1
|
||||
|
||||
restart {
|
||||
attempts = 5
|
||||
delay = "15s"
|
||||
}
|
||||
|
||||
network {
|
||||
port "http" {
|
||||
to = 80
|
||||
}
|
||||
}
|
||||
|
||||
# CUA-QUINTO APP
|
||||
task "cua-quinto" {
|
||||
driver = "docker"
|
||||
|
||||
env {
|
||||
API_PREFIX = "/cua-quinto"
|
||||
API_SCHEME = "https"
|
||||
}
|
||||
|
||||
config {
|
||||
image = "marc.sastre.cat/quinto-cua:latest"
|
||||
ports = ["http"]
|
||||
}
|
||||
|
||||
resources {
|
||||
cpu = 50
|
||||
memory = 64
|
||||
}
|
||||
|
||||
service {
|
||||
name = "cua-quinto"
|
||||
port = "http"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#+title: Consul
|
||||
* Server setup
|
||||
** Create a server keypair
|
||||
** Create a server keypair <<create_keypair>>
|
||||
Decrypt the CA (from the agenix secrets)
|
||||
#+begin_src bash
|
||||
agenix -i ~/.ssh/id_reykjavik -d consul.d/consul-agent-ca.pem.age > ~/tmp/consul-agent-ca.pem
|
||||
@@ -78,3 +78,10 @@ JSON config:
|
||||
}
|
||||
}
|
||||
#+end_src
|
||||
* Renew expired certificates
|
||||
** Find the expired certificate
|
||||
#+begin_src
|
||||
openssl x509 -in /etc/consul.d/certs/samfelag-server-consul.pem -enddate -noout
|
||||
#+end_src
|
||||
|
||||
Follow the steps described in [[create_keypair][Create a server keypair]].
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
#+title: Hosts
|
||||
* Setting up a new vult host
|
||||
** Generate a password for your host
|
||||
#+begin_src bash
|
||||
pass generate samfelag/<host>
|
||||
#+end_src
|
||||
** Change the password in the host
|
||||
Enter into the host via the vultr dashboard "View Console"
|
||||
#+begin_src bash
|
||||
passwd
|
||||
#+end_src
|
||||
** You can now ssh into the host with the new password
|
||||
#+begin_src bash
|
||||
ssh nixos@<host_public_ip>
|
||||
#+end_src
|
||||
* Setting up a new host
|
||||
** Generate a host ssh key pair
|
||||
Generate the key pair (we'll use the name `id_<host>`)
|
||||
|
||||
@@ -105,7 +105,7 @@ cp ~/.ssh/id_<hostname> /mnt/home/marc/.ssh/id_<hostname>
|
||||
* Initialization
|
||||
Steps after reboot
|
||||
** Set up the user
|
||||
You'll set the root password during the installation. You can then reboot and use the installed OS. First thing you'll have to do is log in as root and set the password for your user:
|
||||
You'll set the root password during the installation. You can then reboot and use the installed OS. First thing you'll have to do is log in as root (via vultr dashboard) and set the password for your user:
|
||||
#+BEGIN_SRC bash
|
||||
passwd marc
|
||||
#+END_SRC
|
||||
|
||||
666
flake.lock
generated
666
flake.lock
generated
@@ -23,6 +23,39 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"aquamarine": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747864449,
|
||||
"narHash": "sha256-PIjVAWghZhr3L0EFM2UObhX84UQxIACbON0IC0zzSKA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "389372c5f4dc1ac0e7645ed29a35fd6d71672ef5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"base16-schemes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -45,11 +78,11 @@
|
||||
"nixpkgs-stable": "nixpkgs-stable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731257787,
|
||||
"narHash": "sha256-QmijaEOYVhmj8V1bUtCQUQyanEHZ2n9HMCcMXveJMuI=",
|
||||
"lastModified": 1733127808,
|
||||
"narHash": "sha256-UJUFsa1jmYSgAhrii1HVEl//ggT3Nzaw6kDN6TnkGXM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "10001900f78be46ab8642edde7455aa5f0d54a6a",
|
||||
"rev": "51d6aafb5e3bbf10a29bd8ff417b617e35b14d0e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -58,6 +91,44 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"pre-commit-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -86,20 +157,371 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726989464,
|
||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
||||
"lastModified": 1747556831,
|
||||
"narHash": "sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
||||
"rev": "d0bbd221482c2713cccb80220f3c9d16a6e20a33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"ref": "release-25.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hy3": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747077256,
|
||||
"narHash": "sha256-ryaXKevnISRiJb93QIAv7tGc6ZJqSkwETKm4oGh8HWI=",
|
||||
"owner": "outfoxxed",
|
||||
"repo": "hy3",
|
||||
"rev": "567dc9dd20e15d95a56a81c516a70dba30bc2c9c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "outfoxxed",
|
||||
"repo": "hy3",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745948457,
|
||||
"narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "ac903e80b33ba6a88df83d02232483d99f327573",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor-rose-pine": {
|
||||
"inputs": {
|
||||
"hyprlang": "hyprlang",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1718180692,
|
||||
"narHash": "sha256-J5IYvKcdGRL/sBuST5WaoESEIl7KPv8aJK8aLY6C91E=",
|
||||
"owner": "ndom91",
|
||||
"repo": "rose-pine-hyprcursor",
|
||||
"rev": "40ce26cb29206722ff73839ead0d871d94751e90",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ndom91",
|
||||
"repo": "rose-pine-hyprcursor",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprgraphics": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745015490,
|
||||
"narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "60754910946b4e2dc1377b967b7156cb989c5873",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland": {
|
||||
"inputs": {
|
||||
"aquamarine": "aquamarine",
|
||||
"hyprcursor": "hyprcursor",
|
||||
"hyprgraphics": "hyprgraphics",
|
||||
"hyprland-protocols": "hyprland-protocols",
|
||||
"hyprland-qtutils": "hyprland-qtutils",
|
||||
"hyprlang": "hyprlang_2",
|
||||
"hyprutils": "hyprutils",
|
||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"pre-commit-hooks": "pre-commit-hooks",
|
||||
"systems": "systems_4",
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748036495,
|
||||
"narHash": "sha256-kYyrhoxu8pZ/YHd2Yy2VNaRGeqydOh1OTayvknhweGg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "81cd526f923f4a9074bbfef59b4c7e9f3350c349",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-plugins": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland-plugins",
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748089895,
|
||||
"narHash": "sha256-XS2inFEyCsA91E2yRUlylHN7DUBwbLpqX1og4JDSXoE=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "c04dee3d0cd92423a2b970614ec4b423cf5a3f9c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-protocols": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1743714874,
|
||||
"narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-qt-support": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"hyprlang"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737634706,
|
||||
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qt-support",
|
||||
"rev": "8810df502cdee755993cb803eba7b23f189db795",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qt-support",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprland-qtutils": {
|
||||
"inputs": {
|
||||
"hyprland-qt-support": "hyprland-qt-support",
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprland-qtutils",
|
||||
"hyprlang",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745951494,
|
||||
"narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprcursor-rose-pine",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709914708,
|
||||
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang_2": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747484975,
|
||||
"narHash": "sha256-+LAQ81HBwG0lwshHlWe0kfWg4KcChIPpnwtnwqmnoEU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "163c83b3db48a17c113729c220a60b94596c9291",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprutils": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746635225,
|
||||
"narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "674ea57373f08b7609ce93baff131117a0dfe70d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprwayland-scanner": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747584298,
|
||||
"narHash": "sha256-PH9qZqWLHvSBQiUnA0NzAyQA3tu2no2z8kz0ZeHWj4w=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "e511882b9c2e1d7a75d45d8fddd2160daeafcbc3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-colors": {
|
||||
"inputs": {
|
||||
"base16-schemes": "base16-schemes",
|
||||
@@ -121,11 +543,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1730785428,
|
||||
"narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=",
|
||||
"lastModified": 1733015953,
|
||||
"narHash": "sha256-t4BBVpwG9B4hLgc6GUBuj3cjU7lP/PJfpTHuSqE+crk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7",
|
||||
"rev": "ac35b104800bff9028425fec3b6e8a41de2bbfff",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -152,43 +574,91 @@
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"locked": {
|
||||
"lastModified": 1730963269,
|
||||
"narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=",
|
||||
"lastModified": 1732981179,
|
||||
"narHash": "sha256-F7thesZPvAMSwjRu0K8uFshTk3ZZSNAsXTIFvXBT+34=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc",
|
||||
"rev": "62c435d93bf046a5396f3016472e8f7c8e2aed65",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-24.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1730963269,
|
||||
"narHash": "sha256-rz30HrFYCHiWEBCKHMffHbMdWJ35hEkcRVU0h7ms3x0=",
|
||||
"lastModified": 1710272261,
|
||||
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1747744144,
|
||||
"narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1747953325,
|
||||
"narHash": "sha256-y2ZtlIlNTuVJUZCqzZAhIw5rrKP4DOSklev6c8PyCkQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "83fb6c028368e465cd19bb127b86f971a5e41ebc",
|
||||
"rev": "55d1f923c480dadce40f5231feb472e81b0bab48",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"locked": {
|
||||
"lastModified": 1727348695,
|
||||
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1731264423,
|
||||
"narHash": "sha256-DTWprnE/7Oud9JpJL1LOGVJP9CFod7YeArsb0U3yXWo=",
|
||||
"lastModified": 1733136078,
|
||||
"narHash": "sha256-F+gLv1YTOfP5BP0kHPEOLtrJWL1s3XGoaBhfwDsndNw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "00516a12c8792c11daa0982b8285b54c9a4e3c5e",
|
||||
"rev": "aadc32a2305cd303d1866be1d500ad6f7b344b82",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -197,14 +667,42 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"pre-commit-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1747372754,
|
||||
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"home-manager": "home-manager_2",
|
||||
"hy3": "hy3",
|
||||
"hyprcursor-rose-pine": "hyprcursor-rose-pine",
|
||||
"hyprland": "hyprland",
|
||||
"hyprland-plugins": "hyprland-plugins",
|
||||
"nix-colors": "nix-colors",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nur": "nur"
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nur": "nur",
|
||||
"zen-browser": "zen-browser"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
@@ -221,6 +719,128 @@
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
"hyprland",
|
||||
"hyprland-protocols"
|
||||
],
|
||||
"hyprlang": [
|
||||
"hyprland",
|
||||
"hyprlang"
|
||||
],
|
||||
"hyprutils": [
|
||||
"hyprland",
|
||||
"hyprutils"
|
||||
],
|
||||
"hyprwayland-scanner": [
|
||||
"hyprland",
|
||||
"hyprwayland-scanner"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hyprland",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": [
|
||||
"hyprland",
|
||||
"systems"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745871725,
|
||||
"narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"zen-browser": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1739222645,
|
||||
"narHash": "sha256-6FsTAjrO0TN5+gVxx3hmWqEJWs1sJ1p3E8DKWHdlN6M=",
|
||||
"owner": "youwen5",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "7e60ade066a54797b376ebaf554bc2efa255ff8a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "youwen5",
|
||||
"repo": "zen-browser-flake",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
||||
20
flake.nix
20
flake.nix
@@ -4,10 +4,10 @@
|
||||
inputs = {
|
||||
|
||||
# - Nixpkgs ----------------------------------
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
|
||||
|
||||
# - Home Manager -----------------------------
|
||||
home-manager.url = "github:nix-community/home-manager/release-24.05";
|
||||
home-manager.url = "github:nix-community/home-manager/release-25.05";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# - Agenix -----------------------------------
|
||||
@@ -24,6 +24,22 @@
|
||||
|
||||
# - Themeing ---------------------------------
|
||||
nix-colors.url = "github:misterio77/nix-colors";
|
||||
|
||||
# - Hyprland ---------------------------------
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
hy3 = {
|
||||
url = "github:outfoxxed/hy3";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
hyprcursor-rose-pine.url = "github:ndom91/rose-pine-hyprcursor";
|
||||
|
||||
# - More stuff -------------------------------
|
||||
zen-browser.url = "github:youwen5/zen-browser-flake";
|
||||
|
||||
};
|
||||
|
||||
outputs = inputs @ { self, nixpkgs, home-manager, ... }:
|
||||
|
||||
55
hosts/quinto/default.nix
Normal file
55
hosts/quinto/default.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{ config, pkgs, lib, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
{
|
||||
imports = [
|
||||
./hardware.nix
|
||||
./secrets.nix
|
||||
];
|
||||
|
||||
# - Basic --------------------------------------
|
||||
|
||||
user.name = "marc";
|
||||
user.shell = pkgs.zsh;
|
||||
networking = {
|
||||
hostName = "quinto";
|
||||
firewall = {
|
||||
enable = false;
|
||||
allowedUDPPorts = [
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# - Bootloader ---------------------------------
|
||||
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
device = "/dev/vda";
|
||||
};
|
||||
|
||||
# - Agenix ---------------------------------
|
||||
|
||||
age.identityPaths = [
|
||||
"/home/marc/.ssh/id_ed25519"
|
||||
];
|
||||
|
||||
# - Modules ------------------------------------
|
||||
|
||||
samfelag.modules = {
|
||||
# - Common -----------------------------------
|
||||
# See modules/common.nix for common packages installed
|
||||
|
||||
# - System -----------------------------------
|
||||
system.utils.enable = true;
|
||||
system.ssh.enable = true;
|
||||
|
||||
# - Server ----------------------------------
|
||||
|
||||
# - Editors and development ------------------
|
||||
dev.git.userName = "marc";
|
||||
dev.git.userEmail = "marc@sastre.cat";
|
||||
|
||||
dev.docker.enable = true;
|
||||
dev.docker.users = ["marc"];
|
||||
};
|
||||
}
|
||||
35
hosts/quinto/hardware.nix
Normal file
35
hosts/quinto/hardware.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [ ];
|
||||
|
||||
boot = {
|
||||
initrd = {
|
||||
availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [ ];
|
||||
extraModulePackages = [ ];
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{ device = "/dev/disk/by-label/swap"; }
|
||||
];
|
||||
|
||||
networking = {
|
||||
useDHCP = lib.mkDefault true;
|
||||
interfaces = {
|
||||
ens3.useDHCP = lib.mkDefault true;
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.hypervGuest.enable = true;
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
}
|
||||
2
hosts/quinto/quinto.org
Normal file
2
hosts/quinto/quinto.org
Normal file
@@ -0,0 +1,2 @@
|
||||
* Quinto
|
||||
Servidor a Vultr per a la cua del quinto
|
||||
6
hosts/quinto/secrets.nix
Normal file
6
hosts/quinto/secrets.nix
Normal file
@@ -0,0 +1,6 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
age.secrets = {
|
||||
};
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
with lib;
|
||||
let
|
||||
nix-colors-lib = inputs.nix-colors.lib-contrib { inherit pkgs; };
|
||||
wallpaper = ../../data/wallpapers/wallhaven/muntanya.png;
|
||||
wallpaper = ../../data/wallpapers/globus.jpg;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
@@ -62,16 +62,27 @@ in
|
||||
system.gpg.enable = true;
|
||||
system.pass.enable = true;
|
||||
system.sshfs.enable = true;
|
||||
system.kanata.enable = true;
|
||||
|
||||
server.vatnajokull.enable = true;
|
||||
|
||||
# - Keyboards -
|
||||
system.kanata.enable = true;
|
||||
system.devices.voyager.enable = true;
|
||||
|
||||
system.input = {
|
||||
japanese.enable = true;
|
||||
greek.enable = true;
|
||||
};
|
||||
|
||||
# - Desktop ----------------------------------
|
||||
desktop = {
|
||||
inherit wallpaper;
|
||||
enable = true;
|
||||
laptop = true;
|
||||
hyprland.enable = true;
|
||||
|
||||
# Use Γραφείο (custom) desktop environment
|
||||
grapheio.enable = true;
|
||||
|
||||
# # Add greek keyboard layout -- currently commented as fcitx5 adds greek support
|
||||
# wm.hyprland.kb_layout = "es,gr";
|
||||
};
|
||||
|
||||
# - Editors and development ------------------
|
||||
@@ -85,9 +96,11 @@ in
|
||||
dev.docker.users = ["marc"];
|
||||
|
||||
# - Other apps -------------------------------
|
||||
app.anki.enable = true;
|
||||
app.spotify.enable = true;
|
||||
app.skype.enable = true;
|
||||
# app.skype.enable = true;
|
||||
app.nextcloud.enable = true;
|
||||
app.yazi.enable = true;
|
||||
|
||||
# - Gaming -----------------------------------
|
||||
gaming.lutris.enable = true;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
};
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
extraModulePackages = [ ];
|
||||
supportedFilesystems = [ "ntfs" ];
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.alacritty;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.alacritty = {
|
||||
@@ -18,7 +18,7 @@ in
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
iosevka
|
||||
(nerdfonts.override { fonts = [ "Iosevka" ]; })
|
||||
pkgs.nerd-fonts.iosevka
|
||||
];
|
||||
|
||||
hm.xdg.configFile."alacritty/alacritty.toml".source = ../../config/alacritty/alacritty.toml;
|
||||
@@ -57,12 +57,12 @@ in
|
||||
white = "0x${config.colorScheme.palette.base07}"
|
||||
'';
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Return" = "exec ${pkgs.alacritty}/bin/alacritty";
|
||||
"${i3Cfg.mod}+Shift+Return" = "exec ${pkgs.alacritty}/bin/alacritty -t floating-term";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod}, Return, exec, ${pkgs.alacritty}/bin/alacritty"
|
||||
"${hyprCfg.mod} SHIFT, Return, exec, [float] ${pkgs.alacritty}/bin/alacritty"
|
||||
];
|
||||
|
||||
15
modules/app/anki.nix
Normal file
15
modules/app/anki.nix
Normal file
@@ -0,0 +1,15 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.anki;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.anki = {
|
||||
enable = lib.mkEnableOption "anki";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
hm.home.packages = with pkgs; [
|
||||
anki
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.firefox;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.firefox = {
|
||||
@@ -27,11 +27,11 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+i" = "exec ${pkgs.firefox}/bin/firefox";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod} SHIFT, i, exec, ${pkgs.firefox}/bin/firefox"
|
||||
];
|
||||
};
|
||||
|
||||
44
modules/app/ghostty.nix
Normal file
44
modules/app/ghostty.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.ghostty;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.ghostty = {
|
||||
enable = lib.mkEnableOption "ghostty";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
hm.home.packages = with pkgs; [
|
||||
ghostty
|
||||
];
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
iosevka
|
||||
pkgs.nerd-fonts.iosevka
|
||||
];
|
||||
|
||||
hm.xdg.configFile."ghostty/config".text = ''
|
||||
background = "${config.colorScheme.palette.base00}"
|
||||
foreground = "${config.colorScheme.palette.base05}"
|
||||
|
||||
font-family = "Iosevka Nerd Font"
|
||||
background-opacity = 0.85
|
||||
background-blur = true
|
||||
'';
|
||||
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Return" = "exec ${pkgs.ghostty}/bin/ghostty";
|
||||
# "${i3Cfg.mod}+Shift+Return" = "exec ${pkgs.ghostty}/bin/ghostty -t floating-term";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod}, Return, exec, ${pkgs.ghostty}/bin/ghostty"
|
||||
"${hyprCfg.mod} SHIFT, Return, exec, [float] ${pkgs.ghostty}/bin/ghostty"
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.spotify;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.spotify = {
|
||||
@@ -14,11 +14,11 @@ in
|
||||
spotify
|
||||
];
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+m" = "exec ${pkgs.spotify}/bin/spotify";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod} SHIFT, m, exec, ${pkgs.spotify}/bin/spotify"
|
||||
];
|
||||
};
|
||||
|
||||
34
modules/app/yazi.nix
Normal file
34
modules/app/yazi.nix
Normal file
@@ -0,0 +1,34 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.yazi;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.yazi = {
|
||||
enable = lib.mkEnableOption "yazi";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
hm.home.packages = with pkgs; [
|
||||
yazi
|
||||
ffmpeg
|
||||
ffmpegthumbnailer
|
||||
jq
|
||||
poppler
|
||||
fd
|
||||
ripgrep
|
||||
fzf
|
||||
zoxide
|
||||
imagemagick
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
iosevka
|
||||
pkgs.nerd-fonts.iosevka
|
||||
];
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
26
modules/app/zen-browser.nix
Normal file
26
modules/app/zen-browser.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{ config, lib, pkgs, inputs, system, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.app.zen-browser;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
zen-pkg = inputs.zen-browser.packages."${system}".default;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.app.zen-browser = {
|
||||
enable = lib.mkEnableOption "zen-browser";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
zen-pkg
|
||||
];
|
||||
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+i" = "exec ${zen-pkg}/bin/zen";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod} SHIFT, i, exec, ${zen-pkg}/bin/zen"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -11,9 +11,9 @@
|
||||
system.stateVersion = "22.05";
|
||||
|
||||
nix = {
|
||||
package = pkgs.nixFlakes;
|
||||
package = pkgs.nixVersions.stable;
|
||||
|
||||
extraOptions = lib.optionalString (config.nix.package == pkgs.nixFlakes)
|
||||
extraOptions = lib.optionalString (config.nix.package == pkgs.nixVersions.stable)
|
||||
"experimental-features = nix-command flakes";
|
||||
|
||||
gc = {
|
||||
@@ -27,7 +27,7 @@
|
||||
# - Locale -------------------------------------
|
||||
|
||||
time.timeZone = "Europe/Madrid";
|
||||
i18n.defaultLocale = "ca_ES.utf8";
|
||||
i18n.defaultLocale = "ca_ES.UTF-8";
|
||||
console.keyMap = "es";
|
||||
services.xserver.xkb = {
|
||||
layout = "es";
|
||||
|
||||
@@ -3,75 +3,11 @@
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop;
|
||||
laptopPkgs = with pkgs; [
|
||||
];
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop = {
|
||||
|
||||
enable = mkEnableOption "desktop environment";
|
||||
|
||||
laptop = mkOption {
|
||||
description = "Enable features for a laptop (trackpad, battery, etc...)";
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
# Define generic desktop options to be used by the environments
|
||||
|
||||
wallpaper = my.mkOpt' types.path ../../data/wallpaper/flors "Path to wallpaper(s)";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# - Packages ---------------------------------
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pamixer
|
||||
i3lock-blur
|
||||
brightnessctl
|
||||
playerctl
|
||||
feh
|
||||
] ++ optionals cfg.laptop laptopPkgs;
|
||||
|
||||
# - Audio ------------------------------------
|
||||
|
||||
sound.enable = true;
|
||||
|
||||
hardware = {
|
||||
pulseaudio = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
};
|
||||
|
||||
# - Compositor -------------------------------
|
||||
|
||||
services.picom.enable = true;
|
||||
|
||||
# - Modules ----------------------------------
|
||||
|
||||
samfelag.modules = {
|
||||
|
||||
app.alacritty.enable = true;
|
||||
app.firefox.enable = true;
|
||||
|
||||
desktop.rofi.enable = true;
|
||||
desktop.polybar.enable = true;
|
||||
|
||||
desktop.i3 = {
|
||||
laptop = cfg.laptop;
|
||||
|
||||
extraStartup = [
|
||||
{ command = "systemctl --user restart polybar"; always = true; notification = false; }
|
||||
{ command = "feh --bg-fill -B \"#${config.colorScheme.palette.base00}\" -z --no-fehbg ${cfg.wallpaper}"; always = true; notification = false; }
|
||||
];
|
||||
|
||||
extraKeybindings = {
|
||||
"${cfg.i3.mod}+space" = "exec $HOME/.config/rofi/menus/launcher/launcher.sh";
|
||||
"${cfg.i3.mod}+End" = "exec $HOME/.config/rofi/menus/powermenu/powermenu.sh";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
130
modules/desktop/grapheio.nix
Normal file
130
modules/desktop/grapheio.nix
Normal file
@@ -0,0 +1,130 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.grapheio;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.grapheio = {
|
||||
enable = mkEnableOption "Γραφείο desktop environment - hyprland based";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# - Packages ---------------------------------
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# - Tools ----------------------------------
|
||||
jq
|
||||
# - Appearance -----------------------------
|
||||
rose-pine-gtk-theme
|
||||
rose-pine-icon-theme
|
||||
# - Cursor
|
||||
inputs.hyprcursor-rose-pine.packages.${pkgs.system}.default
|
||||
rose-pine-cursor
|
||||
];
|
||||
|
||||
# - Data files -------------------------------
|
||||
hm.xdg.configFile."grapheio".source = ../../config/grapheio;
|
||||
|
||||
# - Cursor -----------------------------------
|
||||
hm.home.pointerCursor = {
|
||||
gtk.enable = true;
|
||||
package = pkgs.rose-pine-cursor;
|
||||
name = "BreezeX Cursor";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
hm.gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
package = pkgs.rose-pine-gtk-theme;
|
||||
name = "rose-pine-gtk-theme";
|
||||
};
|
||||
iconTheme = {
|
||||
package = pkgs.rose-pine-icon-theme;
|
||||
name = "rose-pine-icons";
|
||||
};
|
||||
cursorTheme = {
|
||||
package = pkgs.rose-pine-cursor;
|
||||
name = "BreezeX-RoséPine";
|
||||
size = 24;
|
||||
};
|
||||
};
|
||||
|
||||
# - Hyprland keybindings ---------------------
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable {
|
||||
bind = [
|
||||
# Pulse Audio controls (mute)
|
||||
", XF86AudioMute, exec, $HOME/.config/grapheio/scripts/volume.sh mute"
|
||||
|
||||
# Media player controls
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioStop, exec, playerctl stop"
|
||||
|
||||
# Keyboard brightness control
|
||||
"${hyprCfg.mod}, XF86MonBrightnessUp, exec, brightnessctl -d platform::kbd_backlight set +1"
|
||||
"${hyprCfg.mod}, XF86MonBrightnessDown, exec, brightnessctl -d platform::kbd_backlight set -1"
|
||||
];
|
||||
|
||||
binde = [
|
||||
# Pulse Audio controls (keep button pressed)
|
||||
", XF86AudioRaiseVolume, exec, $HOME/.config/grapheio/scripts/volume.sh set +5%"
|
||||
", XF86AudioLowerVolume, exec, $HOME/.config/grapheio/scripts/volume.sh set -5%"
|
||||
|
||||
# Brightness control (keep button pressed)
|
||||
", XF86MonBrightnessUp, exec, $HOME/.config/grapheio/scripts/brightness.sh set +5%"
|
||||
", XF86MonBrightnessDown, exec, $HOME/.config/grapheio/scripts/brightness.sh set 5%-"
|
||||
|
||||
# Keyboard brightness control (keep button pressed)
|
||||
"${hyprCfg.mod}, XF86MonBrightnessUp, exec, $HOME/.config/grapheio/scripts/brightness.sh kb_set +1"
|
||||
"${hyprCfg.mod}, XF86MonBrightnessDown, exec, $HOME/.config/grapheio/scripts/brightness.sh kb_set 1-"
|
||||
];
|
||||
};
|
||||
|
||||
# - Modules ----------------------------------
|
||||
|
||||
samfelag.modules = {
|
||||
|
||||
system.audio.enable = true;
|
||||
system.brightness.enable = true;
|
||||
|
||||
desktop = {
|
||||
# Window Manager
|
||||
wm.hyprland.enable = true;
|
||||
|
||||
tools = {
|
||||
# Greeter (login screen)
|
||||
greetd = {
|
||||
enable = true;
|
||||
wm_cmd = "Hyprland";
|
||||
};
|
||||
# Locker
|
||||
hyprlock.enable = true;
|
||||
# Status bars
|
||||
eww.enable = true;
|
||||
# Wallpapper
|
||||
hyprpaper.enable = true;
|
||||
# Launcher
|
||||
rofi.enable = true;
|
||||
# Notification center
|
||||
swaync.enable = true;
|
||||
# Clipboard manager (history)
|
||||
cliphist.enable = true;
|
||||
# Take screenshots
|
||||
screenshot.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
app = {
|
||||
ghostty.enable = true;
|
||||
zen-browser.enable = true;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,181 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.hyprland;
|
||||
mod = "Mod4";
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.hyprland = with lib; {
|
||||
enable = mkEnableOption "hyprland window manager";
|
||||
|
||||
mod = my.mkOpt' types.str "Mod4" "Main modifier key for hyprland";
|
||||
|
||||
laptop = mkEnableOption "Enable features for a laptop (trackpad, battery, etc...)";
|
||||
|
||||
extraKeybindings = my.mkOpt (types.listOf types.str) [ ];
|
||||
extraStartup = my.mkOpt (types.listOf types.attrs) [ ];
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Wallpaper
|
||||
hyprpaper
|
||||
greetd.gtkgreet
|
||||
cage
|
||||
];
|
||||
|
||||
# - Login screen -----------------------------
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${pkgs.cage}/bin/cage -d -s ${pkgs.greetd.gtkgreet}/bin/gtkgreet -- -c Hyprland -s /etc/greetd/greetd.css";
|
||||
user = config.user.name;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."greetd/environments".text = ''
|
||||
Hyprland
|
||||
'';
|
||||
|
||||
environment.etc."greetd/greetd.css".text = ''
|
||||
window {
|
||||
background-image: url("file://${config.samfelag.modules.desktop.wallpaper}");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
font-family: Iosevka;
|
||||
color: #${config.colorScheme.palette.base00};
|
||||
}
|
||||
|
||||
box#body {
|
||||
background-color: #${config.colorScheme.palette.base06};
|
||||
opacity: 0.75;
|
||||
border-radius: 10px;
|
||||
padding: 50px;
|
||||
}
|
||||
'';
|
||||
|
||||
# - Dependencies -----------------------------
|
||||
samfelag.modules.desktop.rofi.enable = true;
|
||||
samfelag.modules.desktop.eww.enable = true;
|
||||
|
||||
# - Configuration -----------------------------
|
||||
|
||||
# Hyprpaper
|
||||
hm.xdg.configFile."hypr/hyprpaper.conf".text = ''
|
||||
preload = ${config.samfelag.modules.desktop.wallpaper}
|
||||
wallpaper = ,${config.samfelag.modules.desktop.wallpaper}
|
||||
'';
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
hm.wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
|
||||
package = pkgs.hyprland;
|
||||
# Optional
|
||||
# Whether to enable hyprland-session.target on hyprland startup
|
||||
systemd.enable = true;
|
||||
|
||||
settings = {
|
||||
input = {
|
||||
kb_layout = "es";
|
||||
};
|
||||
|
||||
monitor = ",highres,auto,1";
|
||||
|
||||
exec-once = [
|
||||
"hyprpaper"
|
||||
"eww open top-bar"
|
||||
];
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = true;
|
||||
};
|
||||
|
||||
bind = [
|
||||
|
||||
"${cfg.mod}, Q, killactive,"
|
||||
|
||||
"${cfg.mod}, F, fullscreen, 1"
|
||||
"${cfg.mod} SHIFT, F, fullscreen, 0"
|
||||
|
||||
"${cfg.mod} SHIFT, SPACE, togglefloating"
|
||||
|
||||
# Move focus
|
||||
"${cfg.mod}, left, movefocus, l"
|
||||
"${cfg.mod}, right, movefocus, r"
|
||||
"${cfg.mod}, up, movefocus, u"
|
||||
"${cfg.mod}, down, movefocus, d"
|
||||
|
||||
"${cfg.mod}, h, movefocus, l"
|
||||
"${cfg.mod}, l, movefocus, r"
|
||||
"${cfg.mod}, k, movefocus, u"
|
||||
"${cfg.mod}, j, movefocus, d"
|
||||
|
||||
# Move focus
|
||||
"${cfg.mod} SHIFT, left, movewindow, l"
|
||||
"${cfg.mod} SHIFT, right, movewindow, r"
|
||||
"${cfg.mod} SHIFT, up, movewindow, u"
|
||||
"${cfg.mod} SHIFT, down, movewindow, d"
|
||||
|
||||
"${cfg.mod} SHIFT, h, movewindow, l"
|
||||
"${cfg.mod} SHIFT, l, movewindow, r"
|
||||
"${cfg.mod} SHIFT, k, movewindow, u"
|
||||
"${cfg.mod} SHIFT, j, movewindow, d"
|
||||
|
||||
# Switch workspace
|
||||
"${cfg.mod}, 1, workspace, 1"
|
||||
"${cfg.mod}, 2, workspace, 2"
|
||||
"${cfg.mod}, 3, workspace, 3"
|
||||
"${cfg.mod}, 4, workspace, 4"
|
||||
"${cfg.mod}, 5, workspace, 5"
|
||||
"${cfg.mod}, 0, workspace, 6"
|
||||
|
||||
# Move to workspace
|
||||
"${cfg.mod} SHIFT, 1, movetoworkspace, 1"
|
||||
"${cfg.mod} SHIFT, 2, movetoworkspace, 2"
|
||||
"${cfg.mod} SHIFT, 3, movetoworkspace, 3"
|
||||
"${cfg.mod} SHIFT, 4, movetoworkspace, 4"
|
||||
"${cfg.mod} SHIFT, 5, movetoworkspace, 5"
|
||||
"${cfg.mod} SHIFT, 0, movetoworkspace, 6"
|
||||
|
||||
# - Media ------------------------------
|
||||
|
||||
# Pulse Audio controls (mute)
|
||||
", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||
|
||||
# Media player controls
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
", XF86AudioPrev, exec, playerctl previous"
|
||||
", XF86AudioStop, exec, playerctl stop"
|
||||
|
||||
] ++ cfg.extraKeybindings;
|
||||
|
||||
binde = [
|
||||
# Pulse Audio controls (volume)
|
||||
", XF86AudioRaiseVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ +5%"
|
||||
", XF86AudioLowerVolume, exec, pactl set-sink-volume @DEFAULT_SINK@ -5%"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"${cfg.mod}, mouse:272, movewindow"
|
||||
"${cfg.mod} SHIFT, mouse:272, resizewindow 1"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
36
modules/desktop/tools/cliphist.nix
Normal file
36
modules/desktop/tools/cliphist.nix
Normal file
@@ -0,0 +1,36 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.cliphist;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
rofiCfg = config.samfelag.modules.desktop.tools.rofi;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.tools.cliphist = {
|
||||
enable = mkEnableOption "Clipboard history";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# - Clipboard manager ------------------------
|
||||
hm.services.cliphist = {
|
||||
enable = true;
|
||||
extraOptions = [
|
||||
"-max-dedupe-search"
|
||||
"10"
|
||||
"-max-items"
|
||||
"500"
|
||||
];
|
||||
};
|
||||
|
||||
# - Hyprland keybindings ---------------------
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf (hyprCfg.enable && rofiCfg.enable) {
|
||||
bind = [
|
||||
# Clipboard manager
|
||||
"${hyprCfg.mod}, v, exec, $HOME/.config/rofi/menus/cliphist/cliphist.sh"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.eww;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
# Paths
|
||||
paths = {
|
||||
};
|
||||
cfg = config.samfelag.modules.desktop.tools.eww;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.eww = {
|
||||
options.samfelag.modules.desktop.tools.eww = {
|
||||
enable = lib.mkEnableOption "eww";
|
||||
};
|
||||
|
||||
@@ -23,11 +20,16 @@ in {
|
||||
socat
|
||||
];
|
||||
|
||||
hm.xdg.configFile."eww/eww.yuck".source = ../../config/eww/eww.yuck;
|
||||
hm.xdg.configFile."eww/eww.scss".source = ../../config/eww/eww.scss;
|
||||
hm.xdg.configFile."eww/bars".source = ../../config/eww/bars;
|
||||
hm.xdg.configFile."eww/widgets".source = ../../config/eww/widgets;
|
||||
hm.xdg.configFile."eww/scripts".source = ../../config/eww/scripts;
|
||||
hm.xdg.configFile."eww/eww.yuck".source = ../../../config/eww/eww.yuck;
|
||||
hm.xdg.configFile."eww/eww.scss".source = ../../../config/eww/eww.scss;
|
||||
hm.xdg.configFile."eww/bars".source = ../../../config/eww/bars;
|
||||
hm.xdg.configFile."eww/widgets".source = ../../../config/eww/widgets;
|
||||
hm.xdg.configFile."eww/scripts".source = ../../../config/eww/scripts;
|
||||
|
||||
# - Execute on startup -----------------------
|
||||
hm.wayland.windowManager.hyprland.settings.exec-once = lib.mkIf hyprCfg.enable [
|
||||
"eww open top-bar"
|
||||
];
|
||||
|
||||
# - Themeing ---------------------------------
|
||||
hm.xdg.configFile."eww/colour-scheme.scss".text = ''
|
||||
@@ -50,7 +52,7 @@ in {
|
||||
'';
|
||||
|
||||
# - Dependencies -----------------------------
|
||||
samfelag.modules.desktop.rofi.enable = true;
|
||||
samfelag.modules.desktop.tools.rofi.enable = true;
|
||||
|
||||
};
|
||||
}
|
||||
90
modules/desktop/tools/greetd.nix
Normal file
90
modules/desktop/tools/greetd.nix
Normal file
@@ -0,0 +1,90 @@
|
||||
{ inputs, config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.greetd;
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.tools.greetd = with lib; {
|
||||
enable = mkEnableOption "Greetd based greeter";
|
||||
wm_cmd = lib.my.mkOpt' types.str "" "Window manager command";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
greetd.gtkgreet
|
||||
cage
|
||||
];
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${pkgs.cage}/bin/cage -d -s ${pkgs.greetd.gtkgreet}/bin/gtkgreet -- -c ${cfg.wm_cmd} -s /etc/greetd/greetd.css";
|
||||
user = config.user.name;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."greetd/environments".text = ''
|
||||
${cfg.wm_cmd}
|
||||
'';
|
||||
|
||||
environment.etc."greetd/greetd.css".text = ''
|
||||
window {
|
||||
background-image: url("file://${config.samfelag.modules.desktop.wallpaper}");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
font-family: Iosevka;
|
||||
}
|
||||
|
||||
label#clock {
|
||||
font-size: 25px;
|
||||
color: #${config.colorScheme.palette.base00};
|
||||
}
|
||||
|
||||
entry {
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
padding: 0px 15px;
|
||||
background-color: #${config.colorScheme.palette.base00};
|
||||
border-color: #${config.colorScheme.palette.base02};
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
button.combo {
|
||||
box-shadow: none;
|
||||
margin-left: 5px;
|
||||
border-radius: 20px;
|
||||
border-color: #${config.colorScheme.palette.base02};
|
||||
background-image: image(#${config.colorScheme.palette.base00});
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
}
|
||||
|
||||
menu {
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
background-color: #${config.colorScheme.palette.base00};
|
||||
}
|
||||
|
||||
menuitem {
|
||||
border-radius: 20px;
|
||||
background-color: #${config.colorScheme.palette.base00};
|
||||
}
|
||||
|
||||
menuitem:hover {
|
||||
background-color: #${config.colorScheme.palette.base0C};
|
||||
}
|
||||
|
||||
.text-button {
|
||||
border-radius: 20px;
|
||||
border-color: #${config.colorScheme.palette.base02};
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
background-image: image(#${config.colorScheme.palette.base00});
|
||||
}
|
||||
|
||||
|
||||
box#body {
|
||||
padding: 50px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
115
modules/desktop/tools/hyprlock.nix
Normal file
115
modules/desktop/tools/hyprlock.nix
Normal file
@@ -0,0 +1,115 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.hyprlock;
|
||||
hexToRGBString = inputs.nix-colors.lib-core.conversions.hexToRGBString ",";
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.tools.hyprlock = {
|
||||
enable = mkEnableOption "Hyprlock screen locker";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
hypridle
|
||||
];
|
||||
|
||||
hm.programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
# disable_loading_bar = true;
|
||||
# grace = 5;
|
||||
};
|
||||
|
||||
background = [
|
||||
{
|
||||
path = "${config.samfelag.modules.desktop.wallpaper}";
|
||||
blur_passes = 2;
|
||||
blur_size = 4;
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
font_family = "Iosevka";
|
||||
size = "300, 40";
|
||||
position = "0, -80";
|
||||
outline_thickness = 1;
|
||||
fade_on_empty = "false";
|
||||
placeholder_text = "";
|
||||
|
||||
outer_color = "rgba(${hexToRGBString config.colorScheme.palette.base02},1.0)";
|
||||
inner_color = "rgba(${hexToRGBString config.colorScheme.palette.base00},1.0)";
|
||||
font_color = "rgba(${hexToRGBString config.colorScheme.palette.base05},1.0)";
|
||||
|
||||
check_color = "rgba(${hexToRGBString config.colorScheme.palette.base07},1.0)";
|
||||
fail_color = "rgba(${hexToRGBString config.colorScheme.palette.base06},1.0)";
|
||||
}
|
||||
];
|
||||
|
||||
label = [
|
||||
{
|
||||
text = "$TIME";
|
||||
color = "rgba(${hexToRGBString config.colorScheme.palette.base00},1.0)";
|
||||
font_size = 25;
|
||||
font_family = "Iosevka";
|
||||
|
||||
position = "0, 80";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
hm.services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 90;
|
||||
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = "brightnessctl -r"; # monitor backlight restore.
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 90;
|
||||
on-timeout = "brightnessctl -sd platform::kbd_backlight set 0"; # turn off keyboard backlight.
|
||||
on-resume = "brightnessctl -rd platform::kbd_backlight"; # turn on keyboard backlight.
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 300; # 5min
|
||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 330; # 5.5min
|
||||
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
||||
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
|
||||
{
|
||||
timeout = 1800; # 30min
|
||||
on-timeout = "systemctl suspend"; # suspend pc
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# - Execute on startup -----------------------
|
||||
hm.wayland.windowManager.hyprland.settings.exec-once = [
|
||||
"hypridle"
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
28
modules/desktop/tools/hyprpaper.nix
Normal file
28
modules/desktop/tools/hyprpaper.nix
Normal file
@@ -0,0 +1,28 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.hyprpaper;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.tools.hyprpaper = {
|
||||
enable = mkEnableOption "Hyprpaper desktop wallpaper";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
hm.services.hyprpaper = {
|
||||
enable = true;
|
||||
settings = {
|
||||
preload = "${config.samfelag.modules.desktop.wallpaper}";
|
||||
wallpaper = ",${config.samfelag.modules.desktop.wallpaper}";
|
||||
};
|
||||
};
|
||||
|
||||
# - Execute on startup -----------------------
|
||||
hm.wayland.windowManager.hyprland.settings.exec-once = [
|
||||
"hyprpaper"
|
||||
];
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.polybar;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
cfg = config.samfelag.modules.desktop.tools.polybar;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
polybar_pkg = pkgs.polybar.override {
|
||||
i3Support = true;
|
||||
pulseSupport = true;
|
||||
@@ -13,13 +13,13 @@ let
|
||||
'';
|
||||
# Paths
|
||||
paths = {
|
||||
config = ../../config/polybar/config.ini;
|
||||
bars = ../../config/polybar/bars;
|
||||
scripts = ../../config/polybar/scripts;
|
||||
config = ../../../config/polybar/config.ini;
|
||||
bars = ../../../config/polybar/bars;
|
||||
scripts = ../../../config/polybar/scripts;
|
||||
};
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.polybar = {
|
||||
options.samfelag.modules.desktop.tools.polybar = {
|
||||
enable = lib.mkEnableOption "polybar";
|
||||
};
|
||||
|
||||
@@ -59,10 +59,14 @@ in {
|
||||
# - Dependencies -----------------------------
|
||||
|
||||
# The polybar modules use rofi
|
||||
samfelag.modules.desktop.rofi.enable = true;
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.tools.rofi.enable = true;
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+w" = "exec $HOME/.config/rofi/menus/wifi/wifi.sh";
|
||||
};
|
||||
samfelag.modules.desktop.wm.i3.extraStartup = lib.mkIf i3Cfg.enable [
|
||||
{ command = "systemctl --user restart polybar"; always = true; notification = false; }
|
||||
{ command = "feh --bg-fill -B \"#${config.colorScheme.palette.base00}\" -z --no-fehbg ${cfg.wallpaper}"; always = true; notification = false; }
|
||||
];
|
||||
|
||||
# - Services ---------------------------------
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.rofi;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
cfg = config.samfelag.modules.desktop.tools.rofi;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
nix-colors-lib = inputs.nix-colors.lib-contrib { inherit pkgs; };
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.rofi = {
|
||||
options.samfelag.modules.desktop.tools.rofi = {
|
||||
enable = lib.mkEnableOption "rofi";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
@@ -17,7 +18,7 @@ in
|
||||
rofi
|
||||
];
|
||||
|
||||
hm.xdg.configFile."rofi/menus".source = ../../config/rofi/menus;
|
||||
hm.xdg.configFile."rofi/menus".source = ../../../config/rofi/menus;
|
||||
hm.xdg.configFile."rofi/nix.png".source = nix-colors-lib.nixWallpaperFromScheme {
|
||||
scheme = config.colorScheme;
|
||||
width = 600;
|
||||
@@ -38,11 +39,17 @@ in
|
||||
}
|
||||
'';
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod}, SPACE, exec, $HOME/.config/rofi/menus/launcher/launcher.sh"
|
||||
"${hyprCfg.mod}, END, exec, $HOME/.config/rofi/menus/powermenu/powermenu.sh"
|
||||
"${hyprCfg.mod} SHIFT, P, exec, $HOME/.config/rofi/menus/powermenu/powermenu.sh"
|
||||
"${hyprCfg.mod} SHIFT, W, exec, $HOME/.config/rofi/menus/wifi/wifi.sh"
|
||||
];
|
||||
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+space" = "exec $HOME/.config/rofi/menus/launcher/launcher.sh";
|
||||
"${i3Cfg.mod}+End" = "exec $HOME/.config/rofi/menus/powermenu/powermenu.sh";
|
||||
"${i3Cfg.mod}+Shift+w" = "exec $HOME/.config/rofi/menus/wifi/wifi.sh";
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
31
modules/desktop/tools/screenshot.nix
Normal file
31
modules/desktop/tools/screenshot.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.screenshot;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.desktop.tools.screenshot = {
|
||||
enable = mkEnableOption "Screenshot utilities";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# - Screenshot utilities ---------------------
|
||||
environment.systemPackages = [
|
||||
pkgs.slurp # to select the region
|
||||
pkgs.grim # actual screenshot program
|
||||
];
|
||||
|
||||
# - Hyprland keybindings ---------------------
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable {
|
||||
bind = [
|
||||
# Screenshots
|
||||
"${hyprCfg.mod}, s, exec, $HOME/.config/grapheio/scripts/screenshot.sh region"
|
||||
"${hyprCfg.mod}, SHIFT s, exec, $HOME/.config/grapheio/scripts/screenshot.sh screen"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
121
modules/desktop/tools/swaync.nix
Normal file
121
modules/desktop/tools/swaync.nix
Normal file
@@ -0,0 +1,121 @@
|
||||
{ inputs, config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.tools.swaync;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.tools.swaync = with lib; {
|
||||
enable = mkEnableOption "Sway Notification Center";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
libnotify
|
||||
swaynotificationcenter
|
||||
];
|
||||
|
||||
hm.services.swaync = {
|
||||
enable = true;
|
||||
settings = {
|
||||
widgets = [
|
||||
"title"
|
||||
"dnd"
|
||||
"notifications"
|
||||
];
|
||||
widget-config = {
|
||||
dnd = {
|
||||
text = "Silence";
|
||||
};
|
||||
title = {
|
||||
text = "Notifications";
|
||||
clear-all-button = true;
|
||||
button-text = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
font-family: Iosevka;
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
}
|
||||
|
||||
.notification {
|
||||
border-width: 2px;
|
||||
padding: 2px 4px;
|
||||
background-color: #${config.colorScheme.palette.base00};
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
}
|
||||
|
||||
.notification-content {
|
||||
background-color: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.critical.notification {
|
||||
background-color: #${config.colorScheme.palette.base0C};
|
||||
}
|
||||
|
||||
.image {
|
||||
margin: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.control-center {
|
||||
margin: 30px;
|
||||
margin-left: 0px;
|
||||
border-radius: 10px;
|
||||
border: solid #${config.colorScheme.palette.base05} 1px;
|
||||
background-color: #${config.colorScheme.palette.base01};
|
||||
color: #${config.colorScheme.palette.base05};
|
||||
opacity: 0.95;
|
||||
}
|
||||
|
||||
.control-center-clear-all {
|
||||
background: #${config.colorScheme.palette.base02};
|
||||
}
|
||||
|
||||
.control-center-dnd:checked {
|
||||
background: #${config.colorScheme.palette.base08};
|
||||
}
|
||||
|
||||
.close-button {
|
||||
background: #${config.colorScheme.palette.base08};
|
||||
}
|
||||
|
||||
.notification-group-collapse-button {
|
||||
margin: 4px;
|
||||
box-shadow: none;
|
||||
background: #${config.colorScheme.palette.base0A};
|
||||
}
|
||||
|
||||
.notification-group-close-all-button {
|
||||
margin: 4px;
|
||||
box-shadow: none;
|
||||
background: #${config.colorScheme.palette.base08};
|
||||
}
|
||||
|
||||
'';
|
||||
};
|
||||
|
||||
# - Execute on startup -----------------------
|
||||
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable {
|
||||
exec-once = [
|
||||
"swaync"
|
||||
];
|
||||
|
||||
layerrule = [
|
||||
"animation slide top, swaync-control-center"
|
||||
"animation slide top, swaync-notification-window"
|
||||
];
|
||||
|
||||
bind = [
|
||||
# Notification center
|
||||
"${hyprCfg.mod}, n, exec, swaync-client -t -sw"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
124
modules/desktop/wm/hyprland.nix
Normal file
124
modules/desktop/wm/hyprland.nix
Normal file
@@ -0,0 +1,124 @@
|
||||
{ inputs, config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
mod = "Mod4";
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.wm.hyprland = with lib; {
|
||||
enable = mkEnableOption "hyprland window manager";
|
||||
mod = my.mkOpt' types.str "Mod4" "Main modifier key for hyprland";
|
||||
kb_layout = my.mkOpt' types.str "es" "Keyboard layout(s) for hyprland";
|
||||
extraKeybindings = my.mkOpt (types.listOf types.str) [ ];
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
# - Configuration -----------------------------
|
||||
|
||||
# Hyprland config
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
hm.wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
|
||||
xwayland.enable = true;
|
||||
systemd.enable = true;
|
||||
|
||||
plugins = [
|
||||
inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3
|
||||
];
|
||||
|
||||
settings = {
|
||||
|
||||
general = {
|
||||
layout = "hy3";
|
||||
};
|
||||
|
||||
env = [
|
||||
"HYPRCURSOR_THEME,rose-pine-hyprcursor"
|
||||
"HYPRCURSOR_SIZE,24"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = cfg.kb_layout;
|
||||
};
|
||||
|
||||
monitor = ",highres,auto,1";
|
||||
|
||||
exec-once = [
|
||||
];
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
workspace_swipe = true;
|
||||
};
|
||||
|
||||
bind = [
|
||||
|
||||
"${cfg.mod}, Q, killactive,"
|
||||
|
||||
"${cfg.mod}, F, fullscreen, 1"
|
||||
"${cfg.mod} SHIFT, F, fullscreen, 0"
|
||||
|
||||
"${cfg.mod} SHIFT, SPACE, togglefloating"
|
||||
|
||||
# Move focus
|
||||
"${cfg.mod}, left, hy3:movefocus, l"
|
||||
"${cfg.mod}, right, hy3:movefocus, r"
|
||||
"${cfg.mod}, up, hy3:movefocus, u"
|
||||
"${cfg.mod}, down, hy3:movefocus, d"
|
||||
|
||||
"${cfg.mod}, h, hy3:movefocus, l"
|
||||
"${cfg.mod}, l, hy3:movefocus, r"
|
||||
"${cfg.mod}, k, hy3:movefocus, u"
|
||||
"${cfg.mod}, j, hy3:movefocus, d"
|
||||
|
||||
# Move focus
|
||||
"${cfg.mod} SHIFT, left, hy3:movewindow, l"
|
||||
"${cfg.mod} SHIFT, right, hy3:movewindow, r"
|
||||
"${cfg.mod} SHIFT, up, hy3:movewindow, u"
|
||||
"${cfg.mod} SHIFT, down, hy3:movewindow, d"
|
||||
|
||||
"${cfg.mod} SHIFT, h, hy3:movewindow, l"
|
||||
"${cfg.mod} SHIFT, l, hy3:movewindow, r"
|
||||
"${cfg.mod} SHIFT, k, hy3:movewindow, u"
|
||||
"${cfg.mod} SHIFT, j, hy3:movewindow, d"
|
||||
|
||||
# Switch workspace
|
||||
"${cfg.mod}, 1, workspace, 1"
|
||||
"${cfg.mod}, 2, workspace, 2"
|
||||
"${cfg.mod}, 3, workspace, 3"
|
||||
"${cfg.mod}, 4, workspace, 4"
|
||||
"${cfg.mod}, 5, workspace, 5"
|
||||
"${cfg.mod}, 0, workspace, 6"
|
||||
|
||||
# Move to workspace
|
||||
"${cfg.mod} SHIFT, 1, movetoworkspace, 1"
|
||||
"${cfg.mod} SHIFT, 2, movetoworkspace, 2"
|
||||
"${cfg.mod} SHIFT, 3, movetoworkspace, 3"
|
||||
"${cfg.mod} SHIFT, 4, movetoworkspace, 4"
|
||||
"${cfg.mod} SHIFT, 5, movetoworkspace, 5"
|
||||
"${cfg.mod} SHIFT, 0, movetoworkspace, 6"
|
||||
|
||||
# # - Keyboard ---------------------------
|
||||
# "${cfg.mod}, Escape, exec, hyprctl switchxkblayout current next"
|
||||
|
||||
] ++ cfg.extraKeybindings;
|
||||
|
||||
bindm = [
|
||||
"${cfg.mod}, mouse:272, hy3:movewindow"
|
||||
"${cfg.mod} SHIFT, mouse:272, resizewindow 1"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.desktop.i3;
|
||||
cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
mod = "Mod4";
|
||||
in {
|
||||
|
||||
options.samfelag.modules.desktop.i3 = with lib; {
|
||||
options.samfelag.modules.desktop.wm.i3 = with lib; {
|
||||
enable = mkEnableOption "i3 window manager";
|
||||
|
||||
mod = my.mkOpt' types.str "Mod4" "Main modifier key for i3";
|
||||
@@ -23,11 +23,15 @@ in {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
playerctl
|
||||
i3lock-blur
|
||||
feh
|
||||
];
|
||||
|
||||
samfelag.modules.desktop.tools.polybar.enable = true;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
iosevka
|
||||
(nerdfonts.override { fonts = [ "Iosevka" ]; })
|
||||
pkgs.nerd-fonts.iosevka
|
||||
];
|
||||
|
||||
services.xserver = {
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.dev.devenv;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.dev.devenv = {
|
||||
@@ -21,7 +21,7 @@ in
|
||||
};
|
||||
|
||||
# TODO: This assumes we have alacritty and a python311 devenv set up (may want to fix this at some point)
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+P" = "exec ${pkgs.alacritty}/bin/alacritty -t floating-term -e zsh -c \"direnv exec ~/sandbox/python311 ipython\"";
|
||||
};
|
||||
|
||||
|
||||
@@ -19,6 +19,11 @@ in
|
||||
userName = cfg.userName;
|
||||
userEmail = cfg.userEmail;
|
||||
|
||||
ignores = [
|
||||
".direnv"
|
||||
".project"
|
||||
];
|
||||
|
||||
extraConfig = {
|
||||
init.defaultBranch = "main";
|
||||
};
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.editors.emacs;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
emacsPackages = epkgs: [
|
||||
epkgs.vterm
|
||||
];
|
||||
@@ -53,6 +53,7 @@ in {
|
||||
fonts.packages = with pkgs; [
|
||||
iosevka
|
||||
emacs-all-the-icons-fonts
|
||||
noto-fonts-color-emoji
|
||||
];
|
||||
|
||||
env.PATH = [ "$HOME/.config/emacs/bin" ];
|
||||
@@ -63,34 +64,34 @@ in {
|
||||
"doom/custom.el".source = ../../config/doom/custom.el;
|
||||
"doom/init.el".source = ../../config/doom/init.el;
|
||||
"doom/packages.el".source = ../../config/doom/packages.el;
|
||||
"doom/themes".source = ../../config/doom/themes;
|
||||
# "doom/themes".source = ../../config/doom/themes;
|
||||
|
||||
# # Themeing
|
||||
# "doom/themes/base16-samfelag-theme.el".text = ''
|
||||
# (require 'base16-theme)
|
||||
# (defvar base16-samfelag-theme-colors
|
||||
# '(:base00 "#${config.colorScheme.palette.base00}"
|
||||
# :base01 "#${config.colorScheme.palette.base01}"
|
||||
# :base02 "#${config.colorScheme.palette.base02}"
|
||||
# :base03 "#${config.colorScheme.palette.base03}"
|
||||
# :base04 "#${config.colorScheme.palette.base04}"
|
||||
# :base05 "#${config.colorScheme.palette.base05}"
|
||||
# :base06 "#${config.colorScheme.palette.base06}"
|
||||
# :base07 "#${config.colorScheme.palette.base07}"
|
||||
# :base08 "#${config.colorScheme.palette.base08}"
|
||||
# :base09 "#${config.colorScheme.palette.base09}"
|
||||
# :base0A "#${config.colorScheme.palette.base0A}"
|
||||
# :base0B "#${config.colorScheme.palette.base0B}"
|
||||
# :base0C "#${config.colorScheme.palette.base0C}"
|
||||
# :base0D "#${config.colorScheme.palette.base0D}"
|
||||
# :base0E "#${config.colorScheme.palette.base0E}"
|
||||
# :base0F "#${config.colorScheme.palette.base0F}")
|
||||
# "All colors for Base16 Samfelag are defined here.")
|
||||
# (deftheme base16-samfelag)
|
||||
# (base16-theme-define 'base16-samfelag base16-samfelag-theme-colors)
|
||||
# (provide-theme 'base16-samfelag)
|
||||
# (provide 'base16-samfelag-theme)
|
||||
# '';
|
||||
# Themeing
|
||||
"doom/themes/base16-samfelag-theme.el".text = ''
|
||||
(require 'base16-theme)
|
||||
(defvar base16-samfelag-theme-colors
|
||||
'(:base00 "#${config.colorScheme.palette.base00}"
|
||||
:base01 "#${config.colorScheme.palette.base01}"
|
||||
:base02 "#${config.colorScheme.palette.base02}"
|
||||
:base03 "#${config.colorScheme.palette.base03}"
|
||||
:base04 "#${config.colorScheme.palette.base04}"
|
||||
:base05 "#${config.colorScheme.palette.base05}"
|
||||
:base06 "#${config.colorScheme.palette.base06}"
|
||||
:base07 "#${config.colorScheme.palette.base07}"
|
||||
:base08 "#${config.colorScheme.palette.base08}"
|
||||
:base09 "#${config.colorScheme.palette.base09}"
|
||||
:base0A "#${config.colorScheme.palette.base0A}"
|
||||
:base0B "#${config.colorScheme.palette.base0B}"
|
||||
:base0C "#${config.colorScheme.palette.base0C}"
|
||||
:base0D "#${config.colorScheme.palette.base0D}"
|
||||
:base0E "#${config.colorScheme.palette.base0E}"
|
||||
:base0F "#${config.colorScheme.palette.base0F}")
|
||||
"All colors for Base16 Samfelag are defined here.")
|
||||
(deftheme base16-samfelag)
|
||||
(base16-theme-define 'base16-samfelag base16-samfelag-theme-colors)
|
||||
(provide-theme 'base16-samfelag)
|
||||
(provide 'base16-samfelag-theme)
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
@@ -103,11 +104,11 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+Shift+e" = "exec ${emacsWithPackages}/bin/emacs";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod} SHIFT, e, exec, ${emacsWithPackages}/bin/emacs"
|
||||
];
|
||||
|
||||
|
||||
25
modules/shell/starship.nix
Normal file
25
modules/shell/starship.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.shell.starship;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.shell.starship = {
|
||||
enable = lib.mkEnableOption "A prompt for any shell";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
hm.programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
add_newline = false;
|
||||
|
||||
# Prompt on the right
|
||||
right_format = "$time";
|
||||
time.disabled = false;
|
||||
|
||||
# Status: Show error code of failed commands
|
||||
status.disabled = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -11,14 +11,8 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
zsh
|
||||
zsh-powerlevel10k
|
||||
];
|
||||
|
||||
# fonts.packages = with pkgs; [
|
||||
# iosevka
|
||||
# (nerdfonts.override { fonts = [ "Iosevka" ]; })
|
||||
# ];
|
||||
|
||||
programs.zsh.enable = true;
|
||||
hm.programs.zsh = {
|
||||
enable = true;
|
||||
@@ -28,27 +22,26 @@ in
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
|
||||
initExtra = ''
|
||||
# Source generic (bash) configuration
|
||||
if [ -d $HOME/.config/shell/sh ]; then
|
||||
for rc in $HOME/.config/shell/sh/*.sh; do
|
||||
emulate bash -c ". $rc"
|
||||
done
|
||||
fi
|
||||
initContent = let
|
||||
zshConfig = lib.mkOrder 1000 ''
|
||||
# Source generic (bash) configuration
|
||||
if [ -d $HOME/.config/shell/sh ]; then
|
||||
for rc in $HOME/.config/shell/sh/*.sh; do
|
||||
emulate bash -c ". $rc"
|
||||
done
|
||||
fi
|
||||
|
||||
# Source zsh specific configuration
|
||||
if [[ -d $HOME/.config/shell/zsh ]]; then
|
||||
for rc in $HOME/.config/shell/zsh/*.zsh; do
|
||||
source $rc
|
||||
done
|
||||
fi
|
||||
'';
|
||||
|
||||
initExtraBeforeCompInit = ''
|
||||
# p10k instant prompt
|
||||
P10K_INSTANT_PROMPT="$XDG_CACHE_HOME/p10k-instant-prompt-''${(%):-%n}.zsh"
|
||||
[[ ! -r "$P10K_INSTANT_PROMPT" ]] || source "$P10K_INSTANT_PROMPT"
|
||||
'';
|
||||
# Source zsh specific configuration
|
||||
if [[ -d $HOME/.config/shell/zsh ]]; then
|
||||
for rc in $HOME/.config/shell/zsh/*.zsh; do
|
||||
source $rc
|
||||
done
|
||||
fi
|
||||
'';
|
||||
in
|
||||
lib.mkMerge [
|
||||
zshConfig
|
||||
];
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
@@ -59,11 +52,6 @@ in
|
||||
};
|
||||
|
||||
plugins = [
|
||||
{
|
||||
file = "powerlevel10k.zsh-theme";
|
||||
name = "powerlevel10k";
|
||||
src = "${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k";
|
||||
}
|
||||
{
|
||||
name = "zsh-nix-shell";
|
||||
file = "nix-shell.plugin.zsh";
|
||||
@@ -74,10 +62,14 @@ in
|
||||
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "vi-mode";
|
||||
src = pkgs.zsh-vi-mode;
|
||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
hm.xdg.configFile."zsh/.p10k.zsh".source = ../../config/zsh/.p10k.zsh;
|
||||
|
||||
samfelag.modules.shell.starship.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
23
modules/system/audio.nix
Normal file
23
modules/system/audio.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.system.audio;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.audio = {
|
||||
enable = mkEnableOption "Audio support";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
alsa-utils
|
||||
playerctl
|
||||
brightnessctl
|
||||
];
|
||||
|
||||
services.pipewire.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.system.bluetooth;
|
||||
desktopCfg = config.samfelag.modules.desktop;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.bluetooth = {
|
||||
@@ -11,9 +10,5 @@ in
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.bluetooth.enable = true;
|
||||
services.blueman.enable = true;
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf desktopCfg.enable {
|
||||
"${desktopCfg.i3.mod}+b" = "exec $HOME/.config/rofi/menus/bluetooth/bluetooth.sh";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
19
modules/system/brightness.nix
Normal file
19
modules/system/brightness.nix
Normal file
@@ -0,0 +1,19 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.system.brightness;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.brightness = {
|
||||
enable = mkEnableOption "Brightness support";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
brightnessctl
|
||||
];
|
||||
};
|
||||
}
|
||||
17
modules/system/devices/voyager.nix
Normal file
17
modules/system/devices/voyager.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.system.devices.voyager;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.devices.voyager = {
|
||||
enable = lib.mkEnableOption "voyager";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
hardware.keyboard.zsa.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
keymapp
|
||||
];
|
||||
};
|
||||
}
|
||||
39
modules/system/input/greek.nix
Normal file
39
modules/system/input/greek.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.system.input.greek;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.input.greek = {
|
||||
enable = mkEnableOption "Enable greek input";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
i18n.inputMethod = {
|
||||
type = "fcitx5";
|
||||
enable = true;
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-gtk
|
||||
fcitx5-nord
|
||||
];
|
||||
};
|
||||
|
||||
environment.variables = {
|
||||
GTK_IM_MODULE = "fcitx";
|
||||
QT_IM_MODULE = "fcitx";
|
||||
XMODIFIERS = "@im=fcitx";
|
||||
};
|
||||
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable {
|
||||
windowrule = "pseudo, class:fcitx";
|
||||
exec-once = [
|
||||
"fcitx -d -r"
|
||||
"fcitx-remote -r"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
46
modules/system/input/japanese.nix
Normal file
46
modules/system/input/japanese.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.samfelag.modules.system.input.japanese;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.input.japanese = {
|
||||
enable = mkEnableOption "Enable japanese input";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
i18n.inputMethod = {
|
||||
type = "fcitx5";
|
||||
enable = true;
|
||||
fcitx5.addons = with pkgs; [
|
||||
fcitx5-mozc-ut
|
||||
fcitx5-gtk
|
||||
fcitx5-nord
|
||||
];
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
ipafont
|
||||
kochi-substitute
|
||||
noto-fonts-cjk-sans
|
||||
];
|
||||
|
||||
environment.variables = {
|
||||
GTK_IM_MODULE = "fcitx";
|
||||
QT_IM_MODULE = "fcitx";
|
||||
XMODIFIERS = "@im=fcitx";
|
||||
};
|
||||
|
||||
hm.wayland.windowManager.hyprland.settings = lib.mkIf hyprCfg.enable {
|
||||
windowrule = "pseudo, class:fcitx";
|
||||
exec-once = [
|
||||
"fcitx -d -r"
|
||||
"fcitx-remote -r"
|
||||
];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
@@ -18,28 +18,7 @@ in
|
||||
keyboards = {
|
||||
internalKeyboard = {
|
||||
extraDefCfg = "process-unmapped-keys yes";
|
||||
config = ''
|
||||
(defsrc
|
||||
a s d f h j k l
|
||||
)
|
||||
(defvar
|
||||
tap-time 150
|
||||
hold-time 200
|
||||
)
|
||||
(defalias
|
||||
a (tap-hold $tap-time $hold-time a lalt)
|
||||
s (tap-hold $tap-time $hold-time s lsft)
|
||||
d (tap-hold $tap-time $hold-time d lmet)
|
||||
f (tap-hold $tap-time $hold-time f lctl)
|
||||
h (tap-hold $tap-time $hold-time h rctl)
|
||||
j (tap-hold $tap-time $hold-time j rmet)
|
||||
k (tap-hold $tap-time $hold-time k rsft)
|
||||
l (tap-hold $tap-time $hold-time l ralt)
|
||||
)
|
||||
(deflayer base
|
||||
@a @s @d @f @h @j @k @l
|
||||
)
|
||||
'';
|
||||
configFile = ../../config/kanata/kanata.kbd;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -23,17 +23,21 @@ in
|
||||
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
hardware = {
|
||||
graphics.enable = true;
|
||||
nvidia = {
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
open = true;
|
||||
prime = {
|
||||
offload.enable = true;
|
||||
|
||||
hardware.nvidia.prime = {
|
||||
offload.enable = true;
|
||||
# Bus ID of the Intel GPU. You can find it using lspci, either under 3D or VGA
|
||||
intelBusId = cfg.intelBusId;
|
||||
|
||||
# Bus ID of the Intel GPU. You can find it using lspci, either under 3D or VGA
|
||||
intelBusId = cfg.intelBusId;
|
||||
|
||||
# Bus ID of the NVIDIA GPU. You can find it using lspci, either under 3D or VGA
|
||||
nvidiaBusId = cfg.nvidiaBusId;
|
||||
# Bus ID of the NVIDIA GPU. You can find it using lspci, either under 3D or VGA
|
||||
nvidiaBusId = cfg.nvidiaBusId;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
let
|
||||
cfg = config.samfelag.modules.system.pass;
|
||||
i3Cfg = config.samfelag.modules.desktop.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.hyprland;
|
||||
i3Cfg = config.samfelag.modules.desktop.wm.i3;
|
||||
hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
|
||||
in
|
||||
{
|
||||
options.samfelag.modules.system.pass = {
|
||||
@@ -36,11 +36,11 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
samfelag.modules.desktop.wm.i3.extraKeybindings = lib.mkIf i3Cfg.enable {
|
||||
"${i3Cfg.mod}+p" = "exec rofi-pass";
|
||||
};
|
||||
|
||||
samfelag.modules.desktop.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
samfelag.modules.desktop.wm.hyprland.extraKeybindings = lib.mkIf hyprCfg.enable [
|
||||
"${hyprCfg.mod}, P, exec, rofi-pass"
|
||||
];
|
||||
};
|
||||
|
||||
@@ -8,12 +8,15 @@ in
|
||||
enable = lib.mkEnableOption "ssh";
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# TODO: Use ssh keys
|
||||
PasswordAuthentication = true;
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# TODO: Use ssh keys
|
||||
PasswordAuthentication = true;
|
||||
};
|
||||
};
|
||||
# fail2ban.enable = true;
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 22 ];
|
||||
|
||||
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 GWuf0Q 8KY3le+D4r6SJVPdkjL3P4fLA7rS00F+LkRieMGcrA0
|
||||
0ffzmUzTFEPiYmLG02Y0XweXTvFjEt6lao8ySE73Eoo
|
||||
-> ssh-ed25519 kNjiNQ 0Hg11FGDMDrus/MA9UMRA8jt3aoJYbQMJ8vM4PrYtyY
|
||||
H9ZURqsrkmviJMpsbiKDUk8r+NWlAsrQ0OpO5U7U0dg
|
||||
--- jQa7EUd7cX7AexX3FCJaOb4xVZ9/TP7WXakcgVKH5PM
|
||||
COˆ`ÎPØg‡êhe«E™ hyÖ×<C396>ê<EFBFBD>‹‚õø‡ƒFùfãÇ¥<C387>@ì¥AUGý ³LÑêʳÝ:÷;{ø¹<kH±í -Ú¥âŒÈwËm›6Ù`ÅèœÔé~)øÄwoÏ¡šE‚b{÷’#{çøT
|
||||
-> ssh-ed25519 GWuf0Q z5DKW5ikWJPBjNjrgoUuJF8be9f9naDOxZ74sOpf5FY
|
||||
kiV2yRp+BVwTInS1EMkzhGyfGGEdHcB9DGlbzTA9lpQ
|
||||
-> ssh-ed25519 kNjiNQ YLZNTRHp6sj3v0wu7WMitqBykTcqaGYcfZbJkF0ougM
|
||||
dI8B6KF6bvSONOo/dTOq6jyYIn6Rj1AMABUeOU2hWUQ
|
||||
--- V+29XmjyMdtKIFBz9VW/D/A9sM6HPLYe1HZf458md64
|
||||
'”w"<22>2sÿýIIê©§çgȦM£&”;X±éjŽS{Å ñçÂŒHxlôy¼¾úîkóòcrÅϽܟkdZÑ”\ÜÞ|¦Y²¥Þƒ¸û"ì˜S,íwQkÝ@¡ìKnÕùªTÞ83G˜^€ŸµÇ2ð38,¼ˆdJùNgüûŸŸ¹µ¸f–dþÓ¯LDÍ]éBÏîfvTO„ºÅýèŸlnž÷ŽŠ-ŽZmMn<7qwé
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,9 +1,10 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 GWuf0Q V6HZPuKmDsfaVVnJveBuLwLCndktAB7xudXvB9niGRg
|
||||
hEKkg2Ltbt3Ie1Ci6VabOSjp/pZeandKlZl67kqZd9A
|
||||
-> ssh-ed25519 zhVGHw BwZzAbAXSX/frkhi5wFJzDaEWXOQaqNfdEC4EIZwBX0
|
||||
cbysAZi82rbqH2T+cipPPNgsnHn2aU/tQYMlmt8zpPE
|
||||
-> ssh-ed25519 kNjiNQ ijvaL5MqfKqzD5X9uOAx78PfsUNSJkQ+nhC/EGyG03Y
|
||||
uq2HskFBaNjTiNeipz4H9eoHJ4KDz614DSMfW3rz9Yk
|
||||
--- FWfT5xb1cTntOfVIjzbw1ZD6nFRfKunQL0k/0/xx+dQ
|
||||
hµôqÂâsaƒmîíì`v¸»öíŠãBÙxeZp „}§àÏÌý'’d2$ürÏ»0ÚqßKE5‰NÐÊ®9®£R&(–tuxX4¶<34>ï–ëÝ<>qgÄŒŒzvkèŸXän9B Ò
|
||||
-> ssh-ed25519 GWuf0Q HU052z43DHXbPh4m0Cn8YWEabVMdT9Ab9ZvnRTkiGiM
|
||||
jsGBcbgj1JeYBdvnRqKT310VnWqZmRYIE+LbkPVmDxs
|
||||
-> ssh-ed25519 zhVGHw 1oy7y5z6KQy+JYRIPyqfeCgJUbGWdo77NiGnVRA0QRk
|
||||
qNrRnats5cFFv8K3YUtUXdSwhWkgcBGTeDlhWTkrNRM
|
||||
-> ssh-ed25519 kNjiNQ IWfsJxXu1Kg6Z5p1qNBopU0RkYt7/s6jw/DJDQXpTHc
|
||||
ouzaIxV7Y+pE8t/8s4Vk/AO/MccUpgHGhn1cq6C+E08
|
||||
--- LL3bXyeMTogvYXqjhwL75j64P9bNIFG2pwFanjOYm2o
|
||||
)Љ>‹ÊóFÚâ®ö=»!‰Ëvÿ•½ƒE`¹Æe*ëmOg¸Jö+CT‰
|
||||
Õèw+ïºÖÍtΫpû[ÝéÏ^8kÿ RYœ°_”ôýã=8xgîö–!ƒÇ
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,7 @@
|
||||
age-encryption.org/v1
|
||||
-> ssh-ed25519 GWuf0Q 4t1WD76CN3hhc3073abxAsobKWKDX+yemaIxHy8PiDk
|
||||
9O2cAi7MJVqGiTNnOIez4MACEYMB3/YyLSz4Z4YWe2c
|
||||
-> ssh-ed25519 kNjiNQ WaXpqZbqRuLo9q241VclrLfHOQ94VRB8D0RY2es8KBM
|
||||
P6iayA+emjHOEg59EzXU32RCRKZaGS0j7d3wk4Is6tQ
|
||||
--- QsnjyrQe2d1K59Q/i3/NIXaK87rsDf4neQS5sKJ6yeY
|
||||
±&8"Ú¨?4™?¬”
|
||||
$É!þÈÄëYíêjuÌ*8Éc¿DÖC°Á–!"<22>
|
||||
-> ssh-ed25519 GWuf0Q GSvUmcsNXSkoVOD8V/UP+KAGfKX4REahFDmwlROkoSw
|
||||
ruTijdplgtQZP3wjnNGemh3a0omKK95xsfXzkWce0lM
|
||||
-> ssh-ed25519 kNjiNQ zT/ticPDHAujEWqSUrPaGsgPBdbaLvLQ/RSMz5C0aW8
|
||||
JTy+b/N6yjfPtrhYXkFWb26PGa+b/M1DVKeGsW2oimg
|
||||
--- TKdmCeaBKPBBIkKvUqqqQz9DQigRuLRT2ZFto7Jtqr0
|
||||
ÈëW†3L®<EFBFBD>þj䯕¤'HgçR’s†;•w§¸Û‘<C39B>¿Ö<C2BF>t{E"Üævó‚Ÿè©Š•÷õÍ17%&Óü(†ô{Ë<>õŸE¦.§Óô3ÇSˆzNcÅçVÒ·läˆfŠWÊ–u5d2
|
||||
@@ -2,12 +2,14 @@ let
|
||||
id-reykjavik = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFwwpKfxNmUyBoPZqz1jYc6arCdHPvJrEsBN49m/P3By";
|
||||
id-hvannadal = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICy1ocZywBvFHpIj+FvaC7QspRWuLXjy6fwakq9t+0Ev";
|
||||
id-thingvellir = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEIvWEwYayFK8iRb4g2+cnQXlqiMBu3aWxTahXkaCNG7";
|
||||
id-quinto = " ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINxgIT2+aoP+ZLMPupV8M0UwCLX6A3s+H6z3BJPCjJc0";
|
||||
|
||||
# --- Host lists ---
|
||||
# Since we want to be able to manage/edit all secrets from reykjavik, we create helper lists that
|
||||
# always contain reykjavik
|
||||
reykjavik = [id-reykjavik];
|
||||
thingvellir = [id-reykjavik id-thingvellir];
|
||||
quinto = [id-reykjavik id-quinto];
|
||||
|
||||
samfelag-hosts = [
|
||||
id-reykjavik
|
||||
|
||||
35
secrets/ssh-keys/deploy_keys.sh
Executable file
35
secrets/ssh-keys/deploy_keys.sh
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
read -p "Hostname: " HOSTNAME
|
||||
read -p "IP (leave empty tu use hostname): " HOSTIP
|
||||
if [ -z "${HOSTIP}" ]; then
|
||||
HOSTIP=$HOSTNAME
|
||||
echo "Using $HOSTIP"
|
||||
fi
|
||||
read -p "Username: " USERNAME
|
||||
|
||||
PRIVATE_KEY="id_$HOSTNAME"
|
||||
ENCRYPTED_PRIVATE_KEY="$PRIVATE_KEY.gpg"
|
||||
PUBLIC_KEY="id_$HOSTNAME.pub"
|
||||
DECRYPTED=f
|
||||
|
||||
if [ ! -f $PRIVATE_KEY ]; then
|
||||
DECRYPTED=t
|
||||
echo "Decrypting private key ..."
|
||||
gpg -d $ENCRYPTED_PRIVATE_KEY > $PRIVATE_KEY
|
||||
fi
|
||||
|
||||
echo "Deploying private key ($PRIVATE_KEY) to ($USERNAME@$HOSTIP) ..."
|
||||
scp $PRIVATE_KEY $USERNAME@$HOSTIP:.ssh/$PRIVATE_KEY
|
||||
|
||||
echo "Deploying public key ($PUBLIC_KEY) to ($USERNAME@$HOSTIP) ..."
|
||||
scp $PUBLIC_KEY $USERNAME@$HOSTIP:.ssh/$PUBLIC_KEY
|
||||
|
||||
if [ "$DECRYPTED" = 't' ]; then
|
||||
echo "Deleting decrypted private key ..."
|
||||
rm $PRIVATE_KEY
|
||||
fi
|
||||
|
||||
echo "Done"
|
||||
BIN
secrets/ssh-keys/id_quinto.gpg
Normal file
BIN
secrets/ssh-keys/id_quinto.gpg
Normal file
Binary file not shown.
1
secrets/ssh-keys/id_quinto.pub
Normal file
1
secrets/ssh-keys/id_quinto.pub
Normal file
@@ -0,0 +1 @@
|
||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINxgIT2+aoP+ZLMPupV8M0UwCLX6A3s+H6z3BJPCjJc0 marc@reykjavik
|
||||
Reference in New Issue
Block a user