Compare commits

..

27 Commits

Author SHA1 Message Date
marc
dbd7c5db8c Updated consul docu 2026-03-22 18:55:04 +01:00
marc
c64186fad8 New emacs config and claude 2026-03-22 18:54:56 +01:00
marc
2e960ac460 Added new thingvellir consul server keys 2026-03-22 18:43:15 +01:00
marc
4ac83de410 Fix input methods and add shell utils 2026-03-14 18:43:58 +01:00
marc
e87b0ddd24 Added screenshots module 2025-10-05 18:23:02 +02:00
marc
18cfc610e1 Add anki 2025-10-05 15:43:21 +02:00
marc
7277d5b080 Add input modules (greek and japanese) 2025-10-05 15:43:04 +02:00
marc
ed00a90dda Better emoji support in emacs (+ other) 2025-09-20 16:48:38 +02:00
marc
97b58f141a Change theme 2025-09-20 16:47:58 +02:00
marc
d388d2192a Added cliphist and changed starship config 2025-06-01 22:57:57 +02:00
marc
41d47f6152 Use ghostty, starship and remove powerlevel 10k 2025-05-25 14:20:12 +02:00
marc
df6c1c9402 Upgrade to nixpkgs 25.05 2025-05-24 19:06:04 +02:00
marc
fc548af96a Update folkugat nomad deployment 2025-05-24 17:20:10 +02:00
marc
1b8db86a98 Doom emacs: use eglot LSP 2025-03-24 23:01:12 +01:00
marc
e24078ec81 Moved nomad data files 2025-03-24 23:01:12 +01:00
marc
411bf5b0f2 Thingvellir fixes 2025-03-24 22:56:23 +01:00
marc
7312947723 Add folkugat host volume in thingvellir 2025-03-24 22:10:27 +01:00
marc
428a1756f3 Renew consul certificates 2025-03-14 20:01:35 +01:00
marc
f7afbe6973 Other changes 2025-02-16 22:51:35 +01:00
marc
e917ea97c6 Add zen browser 2025-02-16 22:51:22 +01:00
marc
8378eec1e0 Configure kanata for voyager (disable it) 2025-02-16 22:50:51 +01:00
marc
a39f38b3f2 Added keyboard settings for voyager 2025-02-01 00:54:05 +01:00
marc
aef9169245 Add Cargo.toml to Rust devenv 2024-12-30 18:59:35 +01:00
marc
bb7b073fe9 Changed kanata config 2024-12-30 18:59:14 +01:00
marc
b1a8174ea1 More changes in greeter 2024-12-30 18:59:03 +01:00
marc
4518cccec1 Changes in greeter 2024-12-24 17:57:58 +01:00
marc
8da975b098 Fix install docs and deploy keys script 2024-12-24 17:57:40 +01:00
54 changed files with 1422 additions and 2595 deletions

View File

@@ -1,6 +1,6 @@
* NixOS * NixOS
** [[file:docs/install.org][Installing]] ** [[file:docs/install.org][Installing]]
** Rebuilding *** Rebuilding
#+BEGIN_SRC bash #+BEGIN_SRC bash
sudo nixos-rebuild switch --impure --flake ".#${HOST}" sudo nixos-rebuild switch --impure --flake ".#${HOST}"
#+END_SRC #+END_SRC

View File

@@ -10,22 +10,23 @@
(setq display-line-numbers-type t) (setq display-line-numbers-type t)
;; Fonts ;; Fonts
(setq doom-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 15)) (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 ;; Themeing
;; (use-package base16-theme (use-package base16-theme
;; :init (add-to-list 'custom-theme-load-path "~/.config/doom/themes") :init (add-to-list 'custom-theme-load-path "~/.config/doom/themes")
;; :ensure t :ensure t
;; :config
;; (load-theme 'base16-samfelag t))
(after! doom-themes
(load-theme 'doom-nano-dark t))
(use-package! doom-nano-modeline
:config :config
(doom-nano-modeline-mode 1) (load-theme 'base16-samfelag t))
(global-hide-mode-line-mode 1)) ;; (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: ;; Here are some additional functions/macros that could help you configure Doom:
;; ;;
@@ -48,6 +49,18 @@
(setq-default tab-width 4) (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 ;; Projectile
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
@@ -74,14 +87,14 @@
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
;; LSP ;; LSP
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
(use-package lsp-mode ;; (use-package lsp-mode
:init ;; :init
:hook (;; ;; :hook (;;
(clojure-mode . lsp-deferred) ;; (clojure-mode . lsp-deferred)
(python-mode . lsp-deferred) ;; (python-mode . lsp-deferred)
;; if you want which-key integration ;; ;; if you want which-key integration
(lsp-mode . lsp-enable-which-key-integration)) ;; (lsp-mode . lsp-enable-which-key-integration))
:commands (lsp lsp-deferred)) ;; :commands (lsp lsp-deferred))
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
@@ -106,10 +119,14 @@
(setq pipenv-with-projectile t) (setq pipenv-with-projectile t)
(setenv "PIPENV_MAX_DEPTH" "10")) (setenv "PIPENV_MAX_DEPTH" "10"))
;; (with-eval-after-load 'eglot
;; (add-to-list 'eglot-server-programs
;; '(python-mode . ("ty" "server"))))
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
;; Web (HTML + CSS) ;; Web (HTML + CSS)
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
(use-package! lsp-tailwindcss) ;; (use-package! lsp-tailwindcss)
;; ----------------------------------------------------------------------------- ;; -----------------------------------------------------------------------------
;; Org ;; Org

View File

@@ -30,7 +30,7 @@
doom ; what makes DOOM look the way it does doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs doom-dashboard ; a nifty splash screen for Emacs
;; doom-quit ; DOOM quit-message prompts when you quit Emacs ;; doom-quit ; DOOM quit-message prompts when you quit Emacs
;;(emoji +unicode) ; 🙂 (emoji +unicode) ; 🙂
;; fill-column ; a `fill-column' indicator ;; fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra ;;hydra
@@ -94,7 +94,7 @@
(eval +overlay) ; run code, run (also, repls) (eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists ;;gist ; interacting with github gists
lookup ; navigate your code and its documentation lookup ; navigate your code and its documentation
lsp (lsp +eglot)
magit ; a git porcelain for Emacs magit ; a git porcelain for Emacs
;;make ; run make tasks from Emacs ;;make ; run make tasks from Emacs
;;pass ; password manager for nerds ;;pass ; password manager for nerds
@@ -136,7 +136,9 @@
;;idris ; a language you can depend on ;;idris ; a language you can depend on
json ; At least it ain't XML json ; At least it ain't XML
;;(java +meghanada) ; the poster child for carpal tunnel syndrome ;;(java +meghanada) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here)))))) (javascript ; all(hope(abandon(ye(who(enter(here))))))
+lsp
+tree-sitter)
;;julia ; a better, faster MATLAB ;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script) ;;kotlin ; a better, slicker Java(Script)
latex ; writing papers in Emacs has never been so fun latex ; writing papers in Emacs has never been so fun
@@ -154,9 +156,9 @@
php ; perl's insecure younger brother php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more ;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional ;;purescript ; javascript, but functional
(python (python ; beautiful is better than ugly
+lsp +lsp
+pyright) ; beautiful is better than ugly +tree-sitter)
;;qt ; the 'cutest' gui framework ever ;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs ;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6 ;;raku ; the artist formerly known as perl6
@@ -172,7 +174,10 @@
;;solidity ; do you need a blockchain? No. ;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables? ;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance. ;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes (web ; the tubes
+html
+css
+lsp)
yaml ; JSON, but readable yaml ; JSON, but readable
:email :email

View File

@@ -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

View 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

70
config/kanata/kanata.kbd Normal file
View 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 _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _
_ _ _
)

View File

@@ -31,4 +31,10 @@ client {
path = "/mnt/vatnajokull/nomad_volumes/gitea/data" path = "/mnt/vatnajokull/nomad_volumes/gitea/data"
read_only = false read_only = false
} }
# Folkugat
host_volume "folkugat" {
path = "/var/lib/nomad_volumes/folkugat"
read_only = false
}
} }

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

View 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

File diff suppressed because it is too large Load Diff

View 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
View 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"
}
}
}
}

View File

@@ -38,7 +38,7 @@ job "gitea" {
resources { resources {
cpu = 1000 cpu = 1000
memory = 256 memory = 400
} }
service { service {

View File

@@ -1,6 +1,6 @@
#+title: Consul #+title: Consul
* Server setup * Server setup
** Create a server keypair ** Create a server keypair <<create_keypair>>
Decrypt the CA (from the agenix secrets) Decrypt the CA (from the agenix secrets)
#+begin_src bash #+begin_src bash
agenix -i ~/.ssh/id_reykjavik -d consul.d/consul-agent-ca.pem.age > ~/tmp/consul-agent-ca.pem agenix -i ~/.ssh/id_reykjavik -d consul.d/consul-agent-ca.pem.age > ~/tmp/consul-agent-ca.pem
@@ -8,8 +8,11 @@ agenix -i ~/.ssh/id_reykjavik -d consul.d/consul-agent-ca-key.pem.age > ~/tmp/co
#+end_src #+end_src
Create the keypair using consul: Create the keypair using consul:
#+begin_src bash #+begin_src bash
nix-shell -p consul NIXPKGS_ALLOW_UNFREE=1 nix-shell -p consul
consul tls cert create -server -dc samfelag # Server cert
consul tls cert create -server -dc samfelag --ca=/home/marc/tmp/consul-agent-ca.pem --key=/home/marc/tmp/consul-agent-ca-key.pem
# Client cert
consul tls cert create -client -dc samfelag --ca=/home/marc/tmp/consul-agent-ca.pem --key=/home/marc/tmp/consul-agent-ca-key.pem
#+end_src #+end_src
* ACLs * ACLs
** Policies ** Policies
@@ -78,3 +81,10 @@ JSON config:
} }
} }
#+end_src #+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]].

View File

@@ -105,7 +105,7 @@ cp ~/.ssh/id_<hostname> /mnt/home/marc/.ssh/id_<hostname>
* Initialization * Initialization
Steps after reboot Steps after reboot
** Set up the user ** 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 #+BEGIN_SRC bash
passwd marc passwd marc
#+END_SRC #+END_SRC

533
flake.lock generated
View File

@@ -23,6 +23,39 @@
"type": "github" "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": { "base16-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -58,6 +91,44 @@
"type": "github" "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": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -86,20 +157,69 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1733050161, "lastModified": 1747556831,
"narHash": "sha256-lYnT+EYE47f5yY3KS/Kd4pJ6CO9fhCqumkYYkQ3TK20=", "narHash": "sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "62d536255879be574ebfe9b87c4ac194febf47c5", "rev": "d0bbd221482c2713cccb80220f3c9d16a6e20a33",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "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": { "hyprcursor-rose-pine": {
"inputs": { "inputs": {
"hyprlang": "hyprlang", "hyprlang": "hyprlang",
@@ -120,6 +240,187 @@
"type": "github" "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": { "hyprlang": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -142,6 +443,85 @@
"type": "github" "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": { "nix-colors": {
"inputs": { "inputs": {
"base16-schemes": "base16-schemes", "base16-schemes": "base16-schemes",
@@ -226,16 +606,48 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1732981179, "lastModified": 1747744144,
"narHash": "sha256-F7thesZPvAMSwjRu0K8uFshTk3ZZSNAsXTIFvXBT+34=", "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", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "62c435d93bf046a5396f3016472e8f7c8e2aed65", "rev": "55d1f923c480dadce40f5231feb472e81b0bab48",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-24.11", "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", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -255,15 +667,42 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"emacs-overlay": "emacs-overlay", "emacs-overlay": "emacs-overlay",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"hy3": "hy3",
"hyprcursor-rose-pine": "hyprcursor-rose-pine", "hyprcursor-rose-pine": "hyprcursor-rose-pine",
"hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins",
"nix-colors": "nix-colors", "nix-colors": "nix-colors",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"nur": "nur" "nur": "nur",
"zen-browser": "zen-browser"
} }
}, },
"systems": { "systems": {
@@ -311,6 +750,21 @@
"type": "github" "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": { "utils": {
"inputs": { "inputs": {
"systems": "systems_3" "systems": "systems_3"
@@ -328,6 +782,65 @@
"repo": "flake-utils", "repo": "flake-utils",
"type": "github" "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", "root": "root",

View File

@@ -4,10 +4,10 @@
inputs = { inputs = {
# - Nixpkgs ---------------------------------- # - Nixpkgs ----------------------------------
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
# - Home Manager ----------------------------- # - Home Manager -----------------------------
home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.url = "github:nix-community/home-manager/release-25.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
# - Agenix ----------------------------------- # - Agenix -----------------------------------
@@ -26,7 +26,20 @@
nix-colors.url = "github:misterio77/nix-colors"; nix-colors.url = "github:misterio77/nix-colors";
# - Hyprland --------------------------------- # - 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"; 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, ... }: outputs = inputs @ { self, nixpkgs, home-manager, ... }:

View File

@@ -3,7 +3,7 @@
with lib; with lib;
let let
nix-colors-lib = inputs.nix-colors.lib-contrib { inherit pkgs; }; nix-colors-lib = inputs.nix-colors.lib-contrib { inherit pkgs; };
wallpaper = ../../data/wallpapers/wallhaven/muntanya.png; wallpaper = ../../data/wallpapers/globus.jpg;
in in
{ {
imports = [ imports = [
@@ -65,6 +65,15 @@ in
server.vatnajokull.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 ----------------------------------
desktop = { desktop = {
inherit wallpaper; inherit wallpaper;
@@ -72,8 +81,8 @@ in
# Use Γραφείο (custom) desktop environment # Use Γραφείο (custom) desktop environment
grapheio.enable = true; grapheio.enable = true;
# Add greek keyboard layout # # Add greek keyboard layout -- currently commented as fcitx5 adds greek support
wm.hyprland.kb_layout = "es,gr"; # wm.hyprland.kb_layout = "es,gr";
}; };
# - Editors and development ------------------ # - Editors and development ------------------
@@ -87,8 +96,9 @@ in
dev.docker.users = ["marc"]; dev.docker.users = ["marc"];
# - Other apps ------------------------------- # - Other apps -------------------------------
app.anki.enable = true;
app.spotify.enable = true; app.spotify.enable = true;
app.skype.enable = true; # app.skype.enable = true;
app.nextcloud.enable = true; app.nextcloud.enable = true;
app.yazi.enable = true; app.yazi.enable = true;
@@ -100,5 +110,7 @@ in
# - Extra / Temporary -------------------------- # - Extra / Temporary --------------------------
programs.dconf.enable = true; # Inkscape crashes programs.dconf.enable = true; # Inkscape crashes
environment.systemPackages = with pkgs; [
];
fonts.packages = []; fonts.packages = [];
} }

View File

@@ -10,6 +10,7 @@
}; };
kernelModules = [ "kvm-intel" ]; kernelModules = [ "kvm-intel" ];
extraModulePackages = [ ]; extraModulePackages = [ ];
supportedFilesystems = [ "ntfs" ];
}; };
fileSystems = { fileSystems = {

View File

@@ -18,7 +18,7 @@ in
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
iosevka iosevka
(nerdfonts.override { fonts = [ "Iosevka" ]; }) pkgs.nerd-fonts.iosevka
]; ];
hm.xdg.configFile."alacritty/alacritty.toml".source = ../../config/alacritty/alacritty.toml; hm.xdg.configFile."alacritty/alacritty.toml".source = ../../config/alacritty/alacritty.toml;

15
modules/app/anki.nix Normal file
View 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
];
};
}

44
modules/app/ghostty.nix Normal file
View 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"
];
};
}

View File

@@ -26,7 +26,7 @@ in
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
iosevka iosevka
(nerdfonts.override { fonts = [ "Iosevka" ]; }) pkgs.nerd-fonts.iosevka
]; ];

View 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"
];
};
}

View File

@@ -27,7 +27,7 @@
# - Locale ------------------------------------- # - Locale -------------------------------------
time.timeZone = "Europe/Madrid"; time.timeZone = "Europe/Madrid";
i18n.defaultLocale = "ca_ES.utf8"; i18n.defaultLocale = "ca_ES.UTF-8";
console.keyMap = "es"; console.keyMap = "es";
services.xserver.xkb = { services.xserver.xkb = {
layout = "es"; layout = "es";
@@ -39,7 +39,7 @@
environment.pathsToLink = [ "/libexec" ]; environment.pathsToLink = [ "/libexec" ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
curl curl
htop btop
pciutils pciutils
psmisc psmisc
]; ];

View File

@@ -92,7 +92,6 @@ in
system.audio.enable = true; system.audio.enable = true;
system.brightness.enable = true; system.brightness.enable = true;
system.kanata.enable = true;
desktop = { desktop = {
# Window Manager # Window Manager
@@ -114,12 +113,16 @@ in
rofi.enable = true; rofi.enable = true;
# Notification center # Notification center
swaync.enable = true; swaync.enable = true;
# Clipboard manager (history)
cliphist.enable = true;
# Take screenshots
screenshot.enable = true;
}; };
}; };
app = { app = {
alacritty.enable = true; ghostty.enable = true;
firefox.enable = true; zen-browser.enable = true;
}; };
}; };

View 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"
];
};
};
}

View File

@@ -32,17 +32,57 @@ in {
environment.etc."greetd/greetd.css".text = '' environment.etc."greetd/greetd.css".text = ''
window { window {
background-image: url("file://${config.samfelag.modules.desktop.wallpaper}"); background-image: url("file://${config.samfelag.modules.desktop.wallpaper}");
background-size: cover; background-size: cover;
background-position: center; background-position: center;
font-family: Iosevka; font-family: Iosevka;
color: #${config.colorScheme.palette.base00};
} }
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 { box#body {
background-color: #${config.colorScheme.palette.base06};
opacity: 0.75;
border-radius: 10px;
padding: 50px; padding: 50px;
} }
''; '';

View File

@@ -12,9 +12,9 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
# environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# hypridle hypridle
# ]; ];
hm.programs.hyprlock = { hm.programs.hyprlock = {
enable = true; enable = true;
@@ -107,9 +107,9 @@ in
}; };
# - Execute on startup ----------------------- # - Execute on startup -----------------------
# hm.wayland.windowManager.hyprland.settings.exec-once = [ hm.wayland.windowManager.hyprland.settings.exec-once = [
# "hypridle" "hypridle"
# ]; ];
}; };
} }

View 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"
];
};
};
}

View File

@@ -24,13 +24,13 @@ in {
hm.wayland.windowManager.hyprland = { hm.wayland.windowManager.hyprland = {
enable = true; enable = true;
package = pkgs.hyprland; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
xwayland.enable = true; xwayland.enable = true;
systemd.enable = true; systemd.enable = true;
plugins = [ plugins = [
pkgs.hyprlandPlugins.hy3 inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3
]; ];
settings = { settings = {
@@ -109,8 +109,8 @@ in {
"${cfg.mod} SHIFT, 5, movetoworkspace, 5" "${cfg.mod} SHIFT, 5, movetoworkspace, 5"
"${cfg.mod} SHIFT, 0, movetoworkspace, 6" "${cfg.mod} SHIFT, 0, movetoworkspace, 6"
# - Keyboard --------------------------- # # - Keyboard ---------------------------
"${cfg.mod}, Escape, exec, hyprctl switchxkblayout current next" # "${cfg.mod}, Escape, exec, hyprctl switchxkblayout current next"
] ++ cfg.extraKeybindings; ] ++ cfg.extraKeybindings;

View File

@@ -31,7 +31,7 @@ in {
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
iosevka iosevka
(nerdfonts.override { fonts = [ "Iosevka" ]; }) pkgs.nerd-fonts.iosevka
]; ];
services.xserver = { services.xserver = {

15
modules/dev/claude.nix Normal file
View File

@@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
let
cfg = config.samfelag.modules.dev.claude;
in
{
options.samfelag.modules.dev.claude = with lib.types; {
enable = lib.mkEnableOption "claude";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
claude
];
};
}

View File

@@ -19,6 +19,11 @@ in
userName = cfg.userName; userName = cfg.userName;
userEmail = cfg.userEmail; userEmail = cfg.userEmail;
ignores = [
".direnv"
".project"
];
extraConfig = { extraConfig = {
init.defaultBranch = "main"; init.defaultBranch = "main";
}; };

View File

@@ -7,6 +7,11 @@ let
hyprCfg = config.samfelag.modules.desktop.wm.hyprland; hyprCfg = config.samfelag.modules.desktop.wm.hyprland;
emacsPackages = epkgs: [ emacsPackages = epkgs: [
epkgs.vterm epkgs.vterm
(epkgs.treesit-grammars.with-grammars (grammars: [
grammars.tree-sitter-typescript
grammars.tree-sitter-tsx
grammars.tree-sitter-python
]))
]; ];
emacsWithPackages = with pkgs; ((emacsPackagesFor emacs-unstable).emacsWithPackages emacsPackages); emacsWithPackages = with pkgs; ((emacsPackagesFor emacs-unstable).emacsWithPackages emacsPackages);
in { in {
@@ -53,6 +58,7 @@ in {
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
iosevka iosevka
emacs-all-the-icons-fonts emacs-all-the-icons-fonts
noto-fonts-color-emoji
]; ];
env.PATH = [ "$HOME/.config/emacs/bin" ]; env.PATH = [ "$HOME/.config/emacs/bin" ];
@@ -63,34 +69,34 @@ in {
"doom/custom.el".source = ../../config/doom/custom.el; "doom/custom.el".source = ../../config/doom/custom.el;
"doom/init.el".source = ../../config/doom/init.el; "doom/init.el".source = ../../config/doom/init.el;
"doom/packages.el".source = ../../config/doom/packages.el; "doom/packages.el".source = ../../config/doom/packages.el;
"doom/themes".source = ../../config/doom/themes; # "doom/themes".source = ../../config/doom/themes;
# # Themeing # Themeing
# "doom/themes/base16-samfelag-theme.el".text = '' "doom/themes/base16-samfelag-theme.el".text = ''
# (require 'base16-theme) (require 'base16-theme)
# (defvar base16-samfelag-theme-colors (defvar base16-samfelag-theme-colors
# '(:base00 "#${config.colorScheme.palette.base00}" '(:base00 "#${config.colorScheme.palette.base00}"
# :base01 "#${config.colorScheme.palette.base01}" :base01 "#${config.colorScheme.palette.base01}"
# :base02 "#${config.colorScheme.palette.base02}" :base02 "#${config.colorScheme.palette.base02}"
# :base03 "#${config.colorScheme.palette.base03}" :base03 "#${config.colorScheme.palette.base03}"
# :base04 "#${config.colorScheme.palette.base04}" :base04 "#${config.colorScheme.palette.base04}"
# :base05 "#${config.colorScheme.palette.base05}" :base05 "#${config.colorScheme.palette.base05}"
# :base06 "#${config.colorScheme.palette.base06}" :base06 "#${config.colorScheme.palette.base06}"
# :base07 "#${config.colorScheme.palette.base07}" :base07 "#${config.colorScheme.palette.base07}"
# :base08 "#${config.colorScheme.palette.base08}" :base08 "#${config.colorScheme.palette.base08}"
# :base09 "#${config.colorScheme.palette.base09}" :base09 "#${config.colorScheme.palette.base09}"
# :base0A "#${config.colorScheme.palette.base0A}" :base0A "#${config.colorScheme.palette.base0A}"
# :base0B "#${config.colorScheme.palette.base0B}" :base0B "#${config.colorScheme.palette.base0B}"
# :base0C "#${config.colorScheme.palette.base0C}" :base0C "#${config.colorScheme.palette.base0C}"
# :base0D "#${config.colorScheme.palette.base0D}" :base0D "#${config.colorScheme.palette.base0D}"
# :base0E "#${config.colorScheme.palette.base0E}" :base0E "#${config.colorScheme.palette.base0E}"
# :base0F "#${config.colorScheme.palette.base0F}") :base0F "#${config.colorScheme.palette.base0F}")
# "All colors for Base16 Samfelag are defined here.") "All colors for Base16 Samfelag are defined here.")
# (deftheme base16-samfelag) (deftheme base16-samfelag)
# (base16-theme-define 'base16-samfelag base16-samfelag-theme-colors) (base16-theme-define 'base16-samfelag base16-samfelag-theme-colors)
# (provide-theme 'base16-samfelag) (provide-theme 'base16-samfelag)
# (provide 'base16-samfelag-theme) (provide 'base16-samfelag-theme)
# ''; '';
}; };

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

View File

@@ -8,11 +8,21 @@ in
enable = lib.mkEnableOption "Basic shell utils"; enable = lib.mkEnableOption "Basic shell utils";
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
hm.programs = {
fzf = {
enable = true;
enableZshIntegration = true;
};
eza = {
enable = true;
enableZshIntegration = true;
};
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
bat bat
eza
fd fd
fzf
jq jq
ripgrep ripgrep
tldr tldr

View File

@@ -11,7 +11,6 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
zsh zsh
zsh-powerlevel10k
]; ];
programs.zsh.enable = true; programs.zsh.enable = true;
@@ -23,27 +22,26 @@ in
enableCompletion = true; enableCompletion = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
initExtra = '' initContent = let
# Source generic (bash) configuration zshConfig = lib.mkOrder 1000 ''
if [ -d $HOME/.config/shell/sh ]; then # Source generic (bash) configuration
for rc in $HOME/.config/shell/sh/*.sh; do if [ -d $HOME/.config/shell/sh ]; then
emulate bash -c ". $rc" for rc in $HOME/.config/shell/sh/*.sh; do
done emulate bash -c ". $rc"
fi done
fi
# Source zsh specific configuration # Source zsh specific configuration
if [[ -d $HOME/.config/shell/zsh ]]; then if [[ -d $HOME/.config/shell/zsh ]]; then
for rc in $HOME/.config/shell/zsh/*.zsh; do for rc in $HOME/.config/shell/zsh/*.zsh; do
source $rc source $rc
done done
fi fi
''; '';
in
initExtraBeforeCompInit = '' lib.mkMerge [
# p10k instant prompt zshConfig
P10K_INSTANT_PROMPT="$XDG_CACHE_HOME/p10k-instant-prompt-''${(%):-%n}.zsh" ];
[[ ! -r "$P10K_INSTANT_PROMPT" ]] || source "$P10K_INSTANT_PROMPT"
'';
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
@@ -54,11 +52,6 @@ in
}; };
plugins = [ plugins = [
{
file = "powerlevel10k.zsh-theme";
name = "powerlevel10k";
src = "${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k";
}
{ {
name = "zsh-nix-shell"; name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh"; file = "nix-shell.plugin.zsh";
@@ -69,10 +62,14 @@ in
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91"; 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;
}; };
} }

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

View 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"
];
};
};
}

View File

@@ -0,0 +1,49 @@
{ 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 = {
waylandFrontend = true;
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"
];
};
};
}

View File

@@ -18,34 +18,7 @@ in
keyboards = { keyboards = {
internalKeyboard = { internalKeyboard = {
extraDefCfg = "process-unmapped-keys yes"; extraDefCfg = "process-unmapped-keys yes";
config = '' configFile = ../../config/kanata/kanata.kbd;
(defsrc
caps a s d f h j k l
)
(defvar
tap-time 200
hold-time 250
)
(defalias
caps (tap-hold $tap-time $hold-time caps (layer-while-held arrows))
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
@caps @a @s @d @f @h @j @k @l
)
(deflayer arrows
_ _ _ _ _ left down up right
)
'';
}; };
}; };
}; };

View File

@@ -8,12 +8,15 @@ in
enable = lib.mkEnableOption "ssh"; enable = lib.mkEnableOption "ssh";
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services.openssh = { services = {
enable = true; openssh = {
settings = { enable = true;
# TODO: Use ssh keys settings = {
PasswordAuthentication = true; # TODO: Use ssh keys
PasswordAuthentication = true;
};
}; };
# fail2ban.enable = true;
}; };
networking.firewall.allowedTCPPorts = [ 22 ]; networking.firewall.allowedTCPPorts = [ 22 ];

View File

@@ -11,7 +11,15 @@ fi
read -p "Username: " USERNAME read -p "Username: " USERNAME
PRIVATE_KEY="id_$HOSTNAME" PRIVATE_KEY="id_$HOSTNAME"
ENCRYPTED_PRIVATE_KEY="$PRIVATE_KEY.gpg"
PUBLIC_KEY="id_$HOSTNAME.pub" 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) ..." echo "Deploying private key ($PRIVATE_KEY) to ($USERNAME@$HOSTIP) ..."
scp $PRIVATE_KEY $USERNAME@$HOSTIP:.ssh/$PRIVATE_KEY scp $PRIVATE_KEY $USERNAME@$HOSTIP:.ssh/$PRIVATE_KEY
@@ -19,4 +27,9 @@ scp $PRIVATE_KEY $USERNAME@$HOSTIP:.ssh/$PRIVATE_KEY
echo "Deploying public key ($PUBLIC_KEY) to ($USERNAME@$HOSTIP) ..." echo "Deploying public key ($PUBLIC_KEY) to ($USERNAME@$HOSTIP) ..."
scp $PUBLIC_KEY $USERNAME@$HOSTIP:.ssh/$PUBLIC_KEY scp $PUBLIC_KEY $USERNAME@$HOSTIP:.ssh/$PUBLIC_KEY
if [ "$DECRYPTED" = 't' ]; then
echo "Deleting decrypted private key ..."
rm $PRIVATE_KEY
fi
echo "Done" echo "Done"