emacs has been adapted
This commit is contained in:
+299
@@ -0,0 +1,299 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Droidnix: Emacs configuration setup for Nix/Org tangling, HTML export
|
||||
# For NixOS systems - assumes Emacs is already installed via Nix/NixOS
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Create a minimal Emacs config for package installation
|
||||
TEMP_CONFIG=$(mktemp /tmp/droidnix-emacs-setup.XXXXXX.el)
|
||||
cat > "$TEMP_CONFIG" << 'EOF'
|
||||
;; Minimal config for installing packages
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(package-initialize)
|
||||
EOF
|
||||
|
||||
# Install packages in batch mode with error handling
|
||||
echo "Installing Emacs packages..."
|
||||
emacs --batch \
|
||||
--load "$TEMP_CONFIG" \
|
||||
--eval "(package-refresh-contents)" \
|
||||
--eval "(package-install 'use-package)" \
|
||||
--eval "(package-install 'org)" \
|
||||
--eval "(package-install 'org-plus-contrib)" \
|
||||
--eval "(package-install 'nix-mode)" \
|
||||
--eval "(package-install 'htmlize)" \
|
||||
--eval "(package-install 'catppuccin-theme)" \
|
||||
--eval "(package-install 'org-bullets)" \
|
||||
--eval "(package-install 'magit)" \
|
||||
--eval "(package-install 'company)" \
|
||||
--eval "(package-install 'flycheck)" \
|
||||
--eval "(package-install 'doom-modeline)" \
|
||||
--eval "(package-install 'which-key)" \
|
||||
--eval "(package-install 'projectile)" \
|
||||
--eval "(package-install 'ivy)" \
|
||||
--eval "(package-install 'counsel)" \
|
||||
--eval "(package-install 'all-the-icons)" \
|
||||
--eval "(package-install 'doom-themes)" \
|
||||
--eval "(package-install 'treemacs)" \
|
||||
--eval "(package-install 'lsp-mode)" \
|
||||
--eval "(package-install 'ob-shell)" \
|
||||
--eval "(package-install 'ob-nix)" \
|
||||
--eval "(package-install 'dashboard)"
|
||||
|
||||
# Create a post-install config for interactive use
|
||||
USER_EMACSCONFIG="${HOME}/.emacs.d/init.el"
|
||||
if [ ! -f "$USER_EMACSCONFIG" ]; then
|
||||
mkdir -p "${HOME}/.emacs.d"
|
||||
cat > "$USER_EMACSCONFIG" << 'EOF'
|
||||
;; Droidnix Emacs Configuration for NixOS
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(package-initialize)
|
||||
|
||||
;; Basic UI improvements
|
||||
(tool-bar-mode -1) ; Disable toolbar
|
||||
(menu-bar-mode -1) ; Disable menu bar
|
||||
(scroll-bar-mode -1) ; Disable scroll bar
|
||||
(setq inhibit-startup-message t) ; Disable startup message
|
||||
(setq make-backup-files nil) ; Disable backup files
|
||||
(setq auto-save-default nil) ; Disable auto-save files
|
||||
|
||||
;; Enable Catppuccin Mocha theme
|
||||
(when (fboundp 'load-theme)
|
||||
(ignore-errors
|
||||
(load-theme 'catppuccin-mocha t)
|
||||
(setq catppuccin-disable-term-colors nil)
|
||||
(setq catppuccin-enable-bold t)
|
||||
(setq catppuccin-enable-italic t)))
|
||||
|
||||
;; Enable Doom Modeline
|
||||
(when (fboundp 'doom-modeline-mode)
|
||||
(doom-modeline-mode 1))
|
||||
|
||||
;; Enable All The Icons
|
||||
(when (fboundp 'all-the-icons-install-fonts)
|
||||
(all-the-icons-install-fonts)
|
||||
(global-all-the-icons-mode))
|
||||
|
||||
;; Enable Treemacs
|
||||
(when (fboundp 'treemacs)
|
||||
(treemacs-mode)
|
||||
(setq treemacs-width 30)
|
||||
(setq treemacs-position 'left)
|
||||
(setq treemacs-space-between-root-nodes nil)
|
||||
(setq treemacs-indent-level 2)
|
||||
(setq treemacs-file-follow-delay 0.1)
|
||||
(setq treemacs-git-icon-enabled t)
|
||||
(setq treemacs-project-follow t)
|
||||
(setq treemacs-display-project-root t)
|
||||
(setq treemacs-show-hidden-files t))
|
||||
|
||||
;; Enable Company for autocomplete
|
||||
(when (fboundp 'company-mode)
|
||||
(global-company-mode)
|
||||
(setq company-idle-delay 0.1)
|
||||
(setq company-minimum-prefix-length 1))
|
||||
|
||||
;; Enable Flycheck for syntax checking
|
||||
(when (fboundp 'flycheck-mode)
|
||||
(global-flycheck-mode)
|
||||
(setq flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
(setq flycheck-display-errors-delay 0.5))
|
||||
|
||||
;; Enable Ivy + Counsel for better completion
|
||||
(when (fboundp 'ivy-mode)
|
||||
(ivy-mode 1)
|
||||
(setq ivy-use-virtual-buffers t)
|
||||
(setq ivy-count-format "(%d/%d) ")
|
||||
(setq ivy-height 10)
|
||||
(when (fboundp 'counsel-mode)
|
||||
(counsel-mode 1)))
|
||||
|
||||
;; Enable Projectile for project management
|
||||
(when (fboundp 'projectile-mode)
|
||||
(projectile-mode +1)
|
||||
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
|
||||
(setq projectile-completion-system 'ivy)
|
||||
(setq projectile-switch-project-action 'projectile-dired))
|
||||
|
||||
;; Enable Which Key for keybindings help
|
||||
(when (fboundp 'which-key-mode)
|
||||
(which-key-mode 1)
|
||||
(setq which-key-idle-delay 0.5)
|
||||
(setq which-key-show-major-modes nil))
|
||||
|
||||
;; Configure Org Mode
|
||||
(require 'org)
|
||||
(require 'ob-shell) ; Required for shell code blocks
|
||||
(require 'ob-nix) ; Required for nix code blocks
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(nix . t)
|
||||
(shell . t)
|
||||
(python . t)
|
||||
(dockerfile . t)))
|
||||
(setq org-babel-tangle-lang-exts '(("nix" . "nix")))
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-src-tab-act-as-tab t)
|
||||
(setq org-edit-src-content-indentation 0)
|
||||
(setq org-startup-indented t)
|
||||
(setq org-startup-folded nil)
|
||||
(setq org-ellipsis "⤵")
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-image-actual-width nil)
|
||||
(setq org-html-htmlize-output-type 'css)
|
||||
(setq org-export-with-toc nil)
|
||||
(setq org-todo-keywords '("TODO" "DOING" "|" "DONE" "CANCELED"))
|
||||
(setq org-log-done 'time)
|
||||
(setq org-directory "~/org")
|
||||
(when (fboundp 'org-bullets-mode)
|
||||
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
||||
|
||||
;; Enable Magit for Git
|
||||
(when (fboundp 'magit-version)
|
||||
(setq magit-display-buffer-function 'magit-display-buffer-fullscreen)
|
||||
(setq magit-last-seen-setup-instruction "1.4.0"))
|
||||
|
||||
;; Enable LSP Mode for language server support
|
||||
(when (fboundp 'lsp-mode)
|
||||
(lsp-mode 1)
|
||||
(setq lsp-keymap-prefix "C-c l")
|
||||
(setq lsp-enable-snippets nil)
|
||||
(setq lsp-enable-indentation nil)
|
||||
(setq lsp-enable-on-type-formatting nil)
|
||||
(setq lsp-lens-enable nil)
|
||||
(setq lsp-signature-auto-activate nil))
|
||||
|
||||
;; Enable Dashboard
|
||||
(when (fboundp 'dashboard-refresh-buffer)
|
||||
(dashboard-mode 1)
|
||||
(setq dashboard-items '((recents . 5)
|
||||
(projects . 5)
|
||||
(agenda . 5)
|
||||
(bookmarks . 5)))
|
||||
(setq dashboard-center-content t)
|
||||
(setq dashboard-banner-logo-title "Droidnix Configuration"))
|
||||
|
||||
;; Enable Nix Mode
|
||||
(when (fboundp 'nix-mode)
|
||||
(setq auto-mode-alist (cons '("\\.nix\\'" . nix-mode) auto-mode-alist))
|
||||
(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode)))
|
||||
|
||||
;; Custom keybindings
|
||||
(global-set-key (kbd "C-c t") 'treemacs)
|
||||
(global-set-key (kbd "C-c p") 'projectile-command-map)
|
||||
(global-set-key (kbd "C-c g") 'magit-status)
|
||||
(global-set-key (kbd "C-c d") 'dashboard-refresh-buffer)
|
||||
(global-set-key (kbd "C-c b") 'ivy-switch-buffer)
|
||||
(global-set-key (kbd "C-c f") 'find-file)
|
||||
(global-set-key (kbd "C-c s") 'save-buffer)
|
||||
(global-set-key (kbd "C-c q") 'kill-buffer)
|
||||
(global-set-key (kbd "C-c w") 'widen)
|
||||
(global-set-key (kbd "C-c n") 'narrow-to-region)
|
||||
|
||||
;; Nix-specific configurations
|
||||
(setq nix-indent-width 2)
|
||||
(setq nix-continuation-indent-width 4)
|
||||
|
||||
;; HTML export settings for Org
|
||||
(setq org-html-head-include-default-style nil)
|
||||
(setq org-html-head-extra "
|
||||
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.css\">
|
||||
<script src=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.js\"></script>
|
||||
<style>
|
||||
.tree { font-family: monospace; white-space: pre; }
|
||||
#table-of-contents { display: none; }
|
||||
.org-src-container { background-color: #313244; color: #cdd6f4; padding: 1em; border-radius: 5px; }
|
||||
pre.src { background-color: #313244; padding: 1em; border-radius: 5px; }
|
||||
</style>")
|
||||
|
||||
;; Function to wrap tree output in div for HTML export
|
||||
(defun my/org-wrap-tree-in-div ()
|
||||
"Wrap the Nix tree output in a div with class 'tree' for HTML export."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "#+RESULTS:\n#+BEGIN_EXAMPLE\n\\(.*?\n\\)#+END_EXAMPLE" nil t)
|
||||
(goto-char (match-beginning 1))
|
||||
(insert "#+HTML: <div class=\"tree\">\n")
|
||||
(goto-char (match-end 1))
|
||||
(insert "#+HTML: </div>\n"))))
|
||||
|
||||
;; Add hook to automatically wrap tree output on export
|
||||
(add-hook 'org-export-before-processing-hook 'my/org-wrap-tree-in-div)
|
||||
|
||||
;; Set default mode for new buffers
|
||||
(setq-default major-mode 'text-mode)
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq default-tab-width 2)
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Enable line numbers globally
|
||||
(global-display-line-numbers-mode 1)
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; Configure fill column indicator
|
||||
(setq display-fill-column-indicator t)
|
||||
(setq display-fill-column-indicator-character ?│)
|
||||
(setq fill-column 80)
|
||||
|
||||
;; Enable delete-selection-mode for more intuitive editing
|
||||
(delete-selection-mode 1)
|
||||
|
||||
;; Configure modeline
|
||||
(setq display-time-day-and-date t)
|
||||
(setq display-time-24hr-format t)
|
||||
|
||||
;; Configure frame appearance
|
||||
(setq default-frame-alist '((fullscreen . maximized)
|
||||
(alpha . (95 95))
|
||||
(vertical-scroll-bars . nil)
|
||||
(tool-bar-lines . 0)
|
||||
(menu-bar-lines . 0)
|
||||
(line-spacing . 3)
|
||||
(font . "Fira Code-12")))
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm "$TEMP_CONFIG"
|
||||
|
||||
echo ""
|
||||
echo "Emacs configuration setup complete with Catppuccin Mocha and all plugins!"
|
||||
echo ""
|
||||
echo "Installed packages:"
|
||||
echo " ✅ Catppuccin Mocha (theme)"
|
||||
echo " ✅ Org mode + Org Plus Contrib + Org Bullets"
|
||||
echo " ✅ Magit (Git interface)"
|
||||
echo " ✅ Company (autocomplete)"
|
||||
echo " ✅ Flycheck (syntax checking)"
|
||||
echo " ✅ Doom Modeline (status bar)"
|
||||
echo " ✅ Which Key (keybindings help)"
|
||||
echo " ✅ Projectile (project management)"
|
||||
echo " ✅ Ivy + Counsel (completion framework)"
|
||||
echo " ✅ All The Icons (pretty icons)"
|
||||
echo " ✅ Treemacs (file tree)"
|
||||
echo " ✅ LSP Mode (language server)"
|
||||
echo " ✅ ob-shell (shell support for Org Babel)"
|
||||
echo " ✅ ob-nix (Nix support for Org Babel)"
|
||||
echo " ✅ Dashboard (start page)"
|
||||
echo " ✅ tree (for directory visualization)"
|
||||
echo ""
|
||||
echo "You can now:"
|
||||
echo "1. Tangle Org files: emacs README.org --batch -f org-babel-tangle"
|
||||
echo "2. Export to HTML: emacs -Q --batch README.org -f org-html-export-to-html"
|
||||
echo "3. Open Emacs: emacs"
|
||||
echo ""
|
||||
echo "The configuration includes:"
|
||||
echo "- Proper Org Babel support for shell and Nix"
|
||||
echo "- Tree.js integration for collapsible directory trees in HTML export"
|
||||
echo "- Custom keybindings for common operations"
|
||||
echo "- Enhanced UI with Treemacs, Doom Modeline, and Catppuccin theme"
|
||||
echo "- Optimized settings for Nix development"
|
||||
echo "- HTML export with embedded CSS for better styling"
|
||||
echo ""
|
||||
echo "For a more permanent solution, add Emacs with these packages to your"
|
||||
echo "NixOS configuration.nix or home-manager configuration."
|
||||
|
||||
@@ -1,946 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2026-03-05 do 21:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Droidnix: A Dendritic NixOS + Home Manager Configuration</title>
|
||||
<meta name="author" content="Henro Veijer" />
|
||||
<meta name="generator" content="Org Mode" />
|
||||
<style type="text/css">
|
||||
#content { max-width: 60em; margin: auto; }
|
||||
.title { text-align: center;
|
||||
margin-bottom: .2em; }
|
||||
.subtitle { text-align: center;
|
||||
font-size: medium;
|
||||
font-weight: bold;
|
||||
margin-top:0; }
|
||||
.todo { font-family: monospace; color: red; }
|
||||
.done { font-family: monospace; color: green; }
|
||||
.priority { font-family: monospace; color: orange; }
|
||||
.tag { background-color: #eee; font-family: monospace;
|
||||
padding: 2px; font-size: 80%; font-weight: normal; }
|
||||
.timestamp { color: #bebebe; }
|
||||
.timestamp-kwd { color: #5f9ea0; }
|
||||
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
|
||||
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
|
||||
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
|
||||
.underline { text-decoration: underline; }
|
||||
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
||||
p.verse { margin-left: 3%; }
|
||||
pre {
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 3px;
|
||||
background-color: #f2f2f2;
|
||||
padding: 8pt;
|
||||
font-family: monospace;
|
||||
overflow: auto;
|
||||
margin: 1.2em;
|
||||
}
|
||||
pre.src {
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
pre.src:before {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: -8px;
|
||||
right: 12px;
|
||||
padding: 3px;
|
||||
color: #555;
|
||||
background-color: #f2f2f299;
|
||||
}
|
||||
pre.src:hover:before { display: inline; margin-top: 14px;}
|
||||
/* Languages per Org manual */
|
||||
pre.src-asymptote:before { content: 'Asymptote'; }
|
||||
pre.src-awk:before { content: 'Awk'; }
|
||||
pre.src-authinfo::before { content: 'Authinfo'; }
|
||||
pre.src-C:before { content: 'C'; }
|
||||
/* pre.src-C++ doesn't work in CSS */
|
||||
pre.src-clojure:before { content: 'Clojure'; }
|
||||
pre.src-css:before { content: 'CSS'; }
|
||||
pre.src-D:before { content: 'D'; }
|
||||
pre.src-ditaa:before { content: 'ditaa'; }
|
||||
pre.src-dot:before { content: 'Graphviz'; }
|
||||
pre.src-calc:before { content: 'Emacs Calc'; }
|
||||
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
||||
pre.src-fortran:before { content: 'Fortran'; }
|
||||
pre.src-gnuplot:before { content: 'gnuplot'; }
|
||||
pre.src-haskell:before { content: 'Haskell'; }
|
||||
pre.src-hledger:before { content: 'hledger'; }
|
||||
pre.src-java:before { content: 'Java'; }
|
||||
pre.src-js:before { content: 'Javascript'; }
|
||||
pre.src-latex:before { content: 'LaTeX'; }
|
||||
pre.src-ledger:before { content: 'Ledger'; }
|
||||
pre.src-lisp:before { content: 'Lisp'; }
|
||||
pre.src-lilypond:before { content: 'Lilypond'; }
|
||||
pre.src-lua:before { content: 'Lua'; }
|
||||
pre.src-matlab:before { content: 'MATLAB'; }
|
||||
pre.src-mscgen:before { content: 'Mscgen'; }
|
||||
pre.src-ocaml:before { content: 'Objective Caml'; }
|
||||
pre.src-octave:before { content: 'Octave'; }
|
||||
pre.src-org:before { content: 'Org mode'; }
|
||||
pre.src-oz:before { content: 'OZ'; }
|
||||
pre.src-plantuml:before { content: 'Plantuml'; }
|
||||
pre.src-processing:before { content: 'Processing.js'; }
|
||||
pre.src-python:before { content: 'Python'; }
|
||||
pre.src-R:before { content: 'R'; }
|
||||
pre.src-ruby:before { content: 'Ruby'; }
|
||||
pre.src-sass:before { content: 'Sass'; }
|
||||
pre.src-scheme:before { content: 'Scheme'; }
|
||||
pre.src-screen:before { content: 'Gnu Screen'; }
|
||||
pre.src-sed:before { content: 'Sed'; }
|
||||
pre.src-sh:before { content: 'shell'; }
|
||||
pre.src-sql:before { content: 'SQL'; }
|
||||
pre.src-sqlite:before { content: 'SQLite'; }
|
||||
/* additional languages in org.el's org-babel-load-languages alist */
|
||||
pre.src-forth:before { content: 'Forth'; }
|
||||
pre.src-io:before { content: 'IO'; }
|
||||
pre.src-J:before { content: 'J'; }
|
||||
pre.src-makefile:before { content: 'Makefile'; }
|
||||
pre.src-maxima:before { content: 'Maxima'; }
|
||||
pre.src-perl:before { content: 'Perl'; }
|
||||
pre.src-picolisp:before { content: 'Pico Lisp'; }
|
||||
pre.src-scala:before { content: 'Scala'; }
|
||||
pre.src-shell:before { content: 'Shell Script'; }
|
||||
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
|
||||
/* additional language identifiers per "defun org-babel-execute"
|
||||
in ob-*.el */
|
||||
pre.src-cpp:before { content: 'C++'; }
|
||||
pre.src-abc:before { content: 'ABC'; }
|
||||
pre.src-coq:before { content: 'Coq'; }
|
||||
pre.src-groovy:before { content: 'Groovy'; }
|
||||
/* additional language identifiers from org-babel-shell-names in
|
||||
ob-shell.el: ob-shell is the only babel language using a lambda to put
|
||||
the execution function name together. */
|
||||
pre.src-bash:before { content: 'bash'; }
|
||||
pre.src-csh:before { content: 'csh'; }
|
||||
pre.src-ash:before { content: 'ash'; }
|
||||
pre.src-dash:before { content: 'dash'; }
|
||||
pre.src-ksh:before { content: 'ksh'; }
|
||||
pre.src-mksh:before { content: 'mksh'; }
|
||||
pre.src-posh:before { content: 'posh'; }
|
||||
/* Additional Emacs modes also supported by the LaTeX listings package */
|
||||
pre.src-ada:before { content: 'Ada'; }
|
||||
pre.src-asm:before { content: 'Assembler'; }
|
||||
pre.src-caml:before { content: 'Caml'; }
|
||||
pre.src-delphi:before { content: 'Delphi'; }
|
||||
pre.src-html:before { content: 'HTML'; }
|
||||
pre.src-idl:before { content: 'IDL'; }
|
||||
pre.src-mercury:before { content: 'Mercury'; }
|
||||
pre.src-metapost:before { content: 'MetaPost'; }
|
||||
pre.src-modula-2:before { content: 'Modula-2'; }
|
||||
pre.src-pascal:before { content: 'Pascal'; }
|
||||
pre.src-ps:before { content: 'PostScript'; }
|
||||
pre.src-prolog:before { content: 'Prolog'; }
|
||||
pre.src-simula:before { content: 'Simula'; }
|
||||
pre.src-tcl:before { content: 'tcl'; }
|
||||
pre.src-tex:before { content: 'TeX'; }
|
||||
pre.src-plain-tex:before { content: 'Plain TeX'; }
|
||||
pre.src-verilog:before { content: 'Verilog'; }
|
||||
pre.src-vhdl:before { content: 'VHDL'; }
|
||||
pre.src-xml:before { content: 'XML'; }
|
||||
pre.src-nxml:before { content: 'XML'; }
|
||||
/* add a generic configuration mode; LaTeX export needs an additional
|
||||
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
|
||||
pre.src-conf:before { content: 'Configuration File'; }
|
||||
|
||||
table { border-collapse:collapse; }
|
||||
caption.t-above { caption-side: top; }
|
||||
caption.t-bottom { caption-side: bottom; }
|
||||
td, th { vertical-align:top; }
|
||||
th.org-right { text-align: center; }
|
||||
th.org-left { text-align: center; }
|
||||
th.org-center { text-align: center; }
|
||||
td.org-right { text-align: right; }
|
||||
td.org-left { text-align: left; }
|
||||
td.org-center { text-align: center; }
|
||||
dt { font-weight: bold; }
|
||||
.footpara { display: inline; }
|
||||
.footdef { margin-bottom: 1em; }
|
||||
.figure { padding: 1em; }
|
||||
.figure p { text-align: center; }
|
||||
.equation-container {
|
||||
display: table;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.equation {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.equation-label {
|
||||
display: table-cell;
|
||||
text-align: right;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.inlinetask {
|
||||
padding: 10px;
|
||||
border: 2px solid gray;
|
||||
margin: 10px;
|
||||
background: #ffffcc;
|
||||
}
|
||||
#org-div-home-and-up
|
||||
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
||||
textarea { overflow-x: auto; }
|
||||
.linenr { font-size: smaller }
|
||||
.code-highlighted { background-color: #ffff00; }
|
||||
.org-info-js_info-navigation { border-style: none; }
|
||||
#org-info-js_console-label
|
||||
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
||||
.org-info-js_search-highlight
|
||||
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
||||
.org-svg { }
|
||||
</style>
|
||||
<style>pre.src { background-color: #1e1e2e; color: #cdd6f4; padding: 1em; border-radius: 4px; }</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content" class="content">
|
||||
<h1 class="title">Droidnix: A Dendritic NixOS + Home Manager Configuration</h1>
|
||||
<div id="table-of-contents" role="doc-toc">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents" role="doc-toc">
|
||||
<ul>
|
||||
<li><a href="#org2a14da7">Table of Contents</a></li>
|
||||
<li><a href="#introduction">Introduction   <span class="tag"><span class="intro">intro</span></span></a>
|
||||
<ul>
|
||||
<li><a href="#org8c4f1c0">What is Droidnix</a></li>
|
||||
<li><a href="#org08fa7b0">Folder Structure and Goals</a></li>
|
||||
<li><a href="#org03049a9">First Setup</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#the-assets-folder">The Assets Folder   <span class="tag"><span class="assets">assets</span></span></a>
|
||||
<ul>
|
||||
<li><a href="#orga675ca3"><code>.assets/common/</code></a></li>
|
||||
<li><a href="#org70a0001"><code>.assets/hyprland/</code></a></li>
|
||||
<li><a href="#orga565fa1"><code>.assets/mangowc/</code></a></li>
|
||||
<li><a href="#org5cc3767"><code>.assets/machines/</code></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#the-actual-code">The Actual Code   <span class="tag"><span class="code">code</span></span></a>
|
||||
<ul>
|
||||
<li><a href="#orga20ebb2"><code>flake.nix</code></a></li>
|
||||
<li><a href="#orgb72ee88"><code>generated/common/nixos/hardware/placeholder.nix</code></a></li>
|
||||
<li><a href="#org7efee89"><code>generated/common/nixos/packages/placeholder.nix</code></a></li>
|
||||
<li><a href="#org95faeb1"><code>generated/common/nixos/security/placeholder.nix</code></a></li>
|
||||
<li><a href="#org9cc54db"><code>generated/common/nixos/services/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgb98fa38"><code>generated/common/nixos/users/placeholder.nix</code></a></li>
|
||||
<li><a href="#org0d016b8"><code>generated/common/home-manager/programs/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgf540d96"><code>generated/common/home-manager/shell/placeholder.nix</code></a></li>
|
||||
<li><a href="#org9254d7b"><code>generated/common/home-manager/starship/placeholder.nix</code></a></li>
|
||||
<li><a href="#org917d2e6"><code>generated/common/templates/placeholder.nix</code></a></li>
|
||||
<li><a href="#org9a30cdb"><code>generated/common/themes/fonts/placeholder.nix</code></a></li>
|
||||
<li><a href="#orge5bf24e"><code>generated/common/themes/gtk/placeholder.nix</code></a></li>
|
||||
<li><a href="#org8a10849"><code>generated/common/themes/icons/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgfbec20b"><code>generated/common/themes/shells/placeholder.nix</code></a></li>
|
||||
<li><a href="#org237c374"><code>generated/hyprland/nixos/window-manager/placeholder.nix</code></a></li>
|
||||
<li><a href="#org419feaa"><code>generated/hyprland/nixos/plugins/placeholder.nix</code></a></li>
|
||||
<li><a href="#org967b4b0"><code>generated/hyprland/home-manager/programs/placeholder.nix</code></a></li>
|
||||
<li><a href="#orge1ffc11"><code>generated/hyprland/home-manager/scripts/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgaa7bda5"><code>generated/hyprland/themes/hypr/placeholder.nix</code></a></li>
|
||||
<li><a href="#org717b54a"><code>generated/hyprland/themes/rofi/placeholder.nix</code></a></li>
|
||||
<li><a href="#orge9d1115"><code>generated/hyprland/themes/waybar/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgf936e82"><code>generated/hyprland/overrides/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgde312fa"><code>generated/mangowc/nixos/window-manager/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgf3b4406"><code>generated/mangowc/nixos/plugins/placeholder.nix</code></a></li>
|
||||
<li><a href="#orga40668b"><code>generated/mangowc/home-manager/programs/placeholder.nix</code></a></li>
|
||||
<li><a href="#orga265532"><code>generated/mangowc/home-manager/scripts/placeholder.nix</code></a></li>
|
||||
<li><a href="#orgbba1af6"><code>generated/mangowc/themes/generated/mangowc/placeholder.nix</code></a></li>
|
||||
<li><a href="#org36f69b6"><code>generated/mangowc/themes/waybar/placeholder.nix</code></a></li>
|
||||
<li><a href="#org34b1186"><code>generated/mangowc/themes/wofi/placeholder.nix</code></a></li>
|
||||
<li><a href="#org623dfcf"><code>generated/mangowc/overrides/placeholder.nix</code></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org2a14da7" class="outline-2">
|
||||
<h2 id="org2a14da7">Table of Contents</h2>
|
||||
<div class="outline-text-2" id="text-org2a14da7">
|
||||
<p>
|
||||
<a href="#introduction">Introduction</a>
|
||||
<a href="#the-assets-folder">The Assets Folder</a>
|
||||
<a href="#the-actual-code">The Actual Code</a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
—
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-introduction" class="outline-2">
|
||||
<h2 id="introduction">Introduction   <span class="tag"><span class="intro">intro</span></span></h2>
|
||||
<div class="outline-text-2" id="text-introduction">
|
||||
</div>
|
||||
<div id="outline-container-org8c4f1c0" class="outline-3">
|
||||
<h3 id="org8c4f1c0">What is Droidnix</h3>
|
||||
<div class="outline-text-3" id="text-org8c4f1c0">
|
||||
<p>
|
||||
Droidnix is a modular, declarative NixOS + Home Manager configuration system. It allows users to choose between <code>Hyprland</code> and <code>Mangowc</code> as their window manager, with shared and WM-specific configurations managed via Emacs Org and Nix Flakes. The project is designed for reproducibility, maintainability, and cross-machine compatibility.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org08fa7b0" class="outline-3">
|
||||
<h3 id="org08fa7b0">Folder Structure and Goals</h3>
|
||||
<div class="outline-text-3" id="text-org08fa7b0">
|
||||
<p>
|
||||
The Droidnix repository is organized into two main parts:
|
||||
</p>
|
||||
<ol class="org-ol">
|
||||
<li><code>.assets/</code>: Static, non-generated files (e.g., configs, scripts, themes).</li>
|
||||
<li>Generated folders (<code>common</code>, <code>hyprland</code>, <code>mangowc</code>): NixOS and Home Manager configurations, generated from Org files.</li>
|
||||
</ol>
|
||||
|
||||
<pre class="example" id="org34bd328">
|
||||
.
|
||||
├── assets
|
||||
│ ├── common
|
||||
│ │ ├── conf
|
||||
│ │ │ └── base.conf
|
||||
│ │ ├── emacs
|
||||
│ │ │ └── setup_emacs.sh
|
||||
│ │ └── scripts
|
||||
│ ├── hyprland
|
||||
│ │ ├── conf
|
||||
│ │ ├── scripts
|
||||
│ │ └── themes
|
||||
│ ├── machines
|
||||
│ │ ├── maindroid
|
||||
│ │ │ └── configuration.nix
|
||||
│ │ └── traveldroid
|
||||
│ │ └── configuration.nix
|
||||
│ └── mangowc
|
||||
│ ├── conf
|
||||
│ ├── scripts
|
||||
│ └── themes
|
||||
├── flake.nix
|
||||
├── generated
|
||||
│ ├── common
|
||||
│ │ ├── home-manager
|
||||
│ │ │ ├── programs
|
||||
│ │ │ ├── shell
|
||||
│ │ │ └── starship
|
||||
│ │ ├── nixos
|
||||
│ │ │ ├── hardware
|
||||
│ │ │ ├── packages
|
||||
│ │ │ ├── security
|
||||
│ │ │ ├── services
|
||||
│ │ │ └── users
|
||||
│ │ ├── templates
|
||||
│ │ └── themes
|
||||
│ │ ├── fonts
|
||||
│ │ ├── gtk
|
||||
│ │ ├── icons
|
||||
│ │ └── shells
|
||||
│ ├── hyprland
|
||||
│ │ ├── home-manager
|
||||
│ │ │ ├── programs
|
||||
│ │ │ └── scripts
|
||||
│ │ ├── nixos
|
||||
│ │ │ ├── plugins
|
||||
│ │ │ └── window-manager
|
||||
│ │ ├── overrides
|
||||
│ │ └── themes
|
||||
│ │ ├── hypr
|
||||
│ │ ├── rofi
|
||||
│ │ └── waybar
|
||||
│ └── mangowc
|
||||
│ ├── home-manager
|
||||
│ │ ├── programs
|
||||
│ │ └── scripts
|
||||
│ ├── nixos
|
||||
│ │ ├── plugins
|
||||
│ │ └── window-manager
|
||||
│ ├── overrides
|
||||
│ └── themes
|
||||
│ ├── mangowc
|
||||
│ ├── waybar
|
||||
│ └── wofi
|
||||
├── README.html
|
||||
└── README.org
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org03049a9" class="outline-3">
|
||||
<h3 id="org03049a9">First Setup</h3>
|
||||
<div class="outline-text-3" id="text-org03049a9">
|
||||
<ol class="org-ol">
|
||||
<li>Clone this repository.</li>
|
||||
<li>Run the setup script: <code>./setup_droidnix.sh</code>.</li>
|
||||
<li>Edit <code>.assets/common/conf/base.conf</code> to choose your window manager (<code>wm = "hyprland"</code> or <code>wm = "mangowc"</code>).</li>
|
||||
<li>Tangle this Org file to generate Nix configurations: <code>C-c C-v t</code> in Emacs or use this: <code>emacs README.org --batch -f org-babel-tangle && emacs --batch --eval "(setq org-html-htmlize-output-type nil)" README.org -f org-html-export-to-html</code></li>
|
||||
<li>Build and switch: <code>sudo nixos-rebuild switch --flake .#<hostname></code>.</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
—
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-the-assets-folder" class="outline-2">
|
||||
<h2 id="the-assets-folder">The Assets Folder   <span class="tag"><span class="assets">assets</span></span></h2>
|
||||
<div class="outline-text-2" id="text-the-assets-folder">
|
||||
<p>
|
||||
The <code>.assets/</code> folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orga675ca3" class="outline-3">
|
||||
<h3 id="orga675ca3"><code>.assets/common/</code></h3>
|
||||
<div class="outline-text-3" id="text-orga675ca3">
|
||||
<p>
|
||||
This folder contains files shared across both window managers, such as wallpapers, shell configs, and common scripts.
|
||||
</p>
|
||||
|
||||
<ul class="org-ul">
|
||||
<li><code>conf/base.conf</code>: Defines the window manager choice and other global settings.</li>
|
||||
<li><code>scripts/</code>: System-wide scripts (e.g., utilities, helpers).</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org70a0001" class="outline-3">
|
||||
<h3 id="org70a0001"><code>.assets/hyprland/</code></h3>
|
||||
<div class="outline-text-3" id="text-org70a0001">
|
||||
<p>
|
||||
Hyprland-specific assets, including configs, themes, and scripts.
|
||||
</p>
|
||||
|
||||
<ul class="org-ul">
|
||||
<li><code>conf/</code>: Hyprland configuration files (e.g., <code>hyprland.conf</code>).</li>
|
||||
<li><code>themes/</code>: Hyprland-specific theme scripts.</li>
|
||||
<li><code>scripts/</code>: Hyprland-specific scripts.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orga565fa1" class="outline-3">
|
||||
<h3 id="orga565fa1"><code>.assets/mangowc/</code></h3>
|
||||
<div class="outline-text-3" id="text-orga565fa1">
|
||||
<p>
|
||||
Mangowc-specific assets, including configs, themes, and scripts.
|
||||
</p>
|
||||
|
||||
<ul class="org-ul">
|
||||
<li><code>conf/</code>: Mangowc configuration files.</li>
|
||||
<li><code>themes/</code>: Mangowc-specific theme scripts.</li>
|
||||
<li><code>scripts/</code>: Mangowc-specific scripts.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org5cc3767" class="outline-3">
|
||||
<h3 id="org5cc3767"><code>.assets/machines/</code></h3>
|
||||
<div class="outline-text-3" id="text-org5cc3767">
|
||||
<p>
|
||||
Machine-specific NixOS configurations (e.g., <code>configuration.nix</code> for <code>maindroid</code> and <code>traveldroid</code>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
—
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-the-actual-code" class="outline-2">
|
||||
<h2 id="the-actual-code">The Actual Code   <span class="tag"><span class="code">code</span></span></h2>
|
||||
<div class="outline-text-2" id="text-the-actual-code">
|
||||
<p>
|
||||
This section contains the Org blocks for tangling Nix code into the generated folders.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orga20ebb2" class="outline-3">
|
||||
<h3 id="orga20ebb2"><code>flake.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orga20ebb2">
|
||||
<p>
|
||||
The Nix flake definition for Droidnix.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{
|
||||
description = "Droidnix: A dendritic NixOS + Home Manager configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
|
||||
# Your flake outputs here
|
||||
};
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgb72ee88" class="outline-3">
|
||||
<h3 id="orgb72ee88"><code>generated/common/nixos/hardware/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgb72ee88">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/nixos/hardware/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your hardware configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org7efee89" class="outline-3">
|
||||
<h3 id="org7efee89"><code>generated/common/nixos/packages/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org7efee89">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/nixos/packages/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your package configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org95faeb1" class="outline-3">
|
||||
<h3 id="org95faeb1"><code>generated/common/nixos/security/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org95faeb1">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/nixos/security/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your security configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org9cc54db" class="outline-3">
|
||||
<h3 id="org9cc54db"><code>generated/common/nixos/services/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org9cc54db">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/nixos/services/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your service configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgb98fa38" class="outline-3">
|
||||
<h3 id="orgb98fa38"><code>generated/common/nixos/users/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgb98fa38">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/nixos/users/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your user configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org0d016b8" class="outline-3">
|
||||
<h3 id="org0d016b8"><code>generated/common/home-manager/programs/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org0d016b8">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/home-manager/programs/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your program configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgf540d96" class="outline-3">
|
||||
<h3 id="orgf540d96"><code>generated/common/home-manager/shell/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgf540d96">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/home-manager/shell/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org9254d7b" class="outline-3">
|
||||
<h3 id="org9254d7b"><code>generated/common/home-manager/starship/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org9254d7b">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/home-manager/starship/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your starship configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org917d2e6" class="outline-3">
|
||||
<h3 id="org917d2e6"><code>generated/common/templates/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org917d2e6">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/templates/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your template configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org9a30cdb" class="outline-3">
|
||||
<h3 id="org9a30cdb"><code>generated/common/themes/fonts/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org9a30cdb">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/themes/fonts/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your font configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orge5bf24e" class="outline-3">
|
||||
<h3 id="orge5bf24e"><code>generated/common/themes/gtk/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orge5bf24e">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/themes/gtk/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your GTK theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org8a10849" class="outline-3">
|
||||
<h3 id="org8a10849"><code>generated/common/themes/icons/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org8a10849">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/themes/icons/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your icon configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgfbec20b" class="outline-3">
|
||||
<h3 id="orgfbec20b"><code>generated/common/themes/shells/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgfbec20b">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/common/themes/shells/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org237c374" class="outline-3">
|
||||
<h3 id="org237c374"><code>generated/hyprland/nixos/window-manager/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org237c374">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/nixos/window-manager/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland window manager configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org419feaa" class="outline-3">
|
||||
<h3 id="org419feaa"><code>generated/hyprland/nixos/plugins/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org419feaa">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/nixos/plugins/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland plugin configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org967b4b0" class="outline-3">
|
||||
<h3 id="org967b4b0"><code>generated/hyprland/home-manager/programs/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org967b4b0">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/home-manager/programs/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland program configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orge1ffc11" class="outline-3">
|
||||
<h3 id="orge1ffc11"><code>generated/hyprland/home-manager/scripts/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orge1ffc11">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/home-manager/scripts/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland script configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgaa7bda5" class="outline-3">
|
||||
<h3 id="orgaa7bda5"><code>generated/hyprland/themes/hypr/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgaa7bda5">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/themes/hypr/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org717b54a" class="outline-3">
|
||||
<h3 id="org717b54a"><code>generated/hyprland/themes/rofi/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org717b54a">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/themes/rofi/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Rofi theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orge9d1115" class="outline-3">
|
||||
<h3 id="orge9d1115"><code>generated/hyprland/themes/waybar/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orge9d1115">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/themes/waybar/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgf936e82" class="outline-3">
|
||||
<h3 id="orgf936e82"><code>generated/hyprland/overrides/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgf936e82">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/hyprland/overrides/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland overrides here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgde312fa" class="outline-3">
|
||||
<h3 id="orgde312fa"><code>generated/mangowc/nixos/window-manager/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgde312fa">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/nixos/window-manager/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc window manager configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgf3b4406" class="outline-3">
|
||||
<h3 id="orgf3b4406"><code>generated/mangowc/nixos/plugins/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgf3b4406">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/nixos/plugins/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc plugin configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orga40668b" class="outline-3">
|
||||
<h3 id="orga40668b"><code>generated/mangowc/home-manager/programs/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orga40668b">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/home-manager/programs/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc program configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orga265532" class="outline-3">
|
||||
<h3 id="orga265532"><code>generated/mangowc/home-manager/scripts/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orga265532">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/home-manager/scripts/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc script configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgbba1af6" class="outline-3">
|
||||
<h3 id="orgbba1af6"><code>generated/mangowc/themes/generated/mangowc/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-orgbba1af6">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/themes/generated/mangowc/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org36f69b6" class="outline-3">
|
||||
<h3 id="org36f69b6"><code>generated/mangowc/themes/waybar/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org36f69b6">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/themes/waybar/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org34b1186" class="outline-3">
|
||||
<h3 id="org34b1186"><code>generated/mangowc/themes/wofi/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org34b1186">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/themes/wofi/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Wofi theme configurations here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org623dfcf" class="outline-3">
|
||||
<h3 id="org623dfcf"><code>generated/mangowc/overrides/placeholder.nix</code></h3>
|
||||
<div class="outline-text-3" id="text-org623dfcf">
|
||||
<p>
|
||||
This is a placeholder for the description of <code>generated/mangowc/overrides/placeholder.nix</code>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-nix">{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc overrides here
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Henro Veijer</p>
|
||||
<p class="date">Created: 2026-03-05 do 21:30</p>
|
||||
<p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+288
-448
@@ -1,448 +1,288 @@
|
||||
#+title: Droidnix: A Dendritic NixOS + Home Manager Configuration
|
||||
#+author: Henro Veijer
|
||||
#+options: toc:t num:nil htmlize:nil
|
||||
#+language: en
|
||||
#+html_head: <style>pre.src { background-color: #1e1e2e; color: #cdd6f4; padding: 1em; border-radius: 4px; }</style>
|
||||
|
||||
|
||||
* Table of Contents
|
||||
[[#introduction][Introduction]]
|
||||
[[#the-assets-folder][The Assets Folder]]
|
||||
[[#the-actual-code][The Actual Code]]
|
||||
|
||||
---
|
||||
|
||||
* Introduction :intro:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: introduction
|
||||
:END:
|
||||
** What is Droidnix
|
||||
Droidnix is a modular, declarative NixOS + Home Manager configuration system. It allows users to choose between =Hyprland= and =Mangowc= as their window manager, with shared and WM-specific configurations managed via Emacs Org and Nix Flakes. The project is designed for reproducibility, maintainability, and cross-machine compatibility.
|
||||
|
||||
** Folder Structure and Goals
|
||||
The Droidnix repository is organized into two main parts:
|
||||
1. =.assets/=: Static, non-generated files (e.g., configs, scripts, themes).
|
||||
2. Generated folders (=common=, =hyprland=, =mangowc=): NixOS and Home Manager configurations, generated from Org files.
|
||||
|
||||
#+BEGIN_EXAMPLE
|
||||
.
|
||||
├── assets
|
||||
│ ├── common
|
||||
│ │ ├── conf
|
||||
│ │ │ └── base.conf
|
||||
│ │ ├── emacs
|
||||
│ │ │ └── setup_emacs.sh
|
||||
│ │ └── scripts
|
||||
│ ├── hyprland
|
||||
│ │ ├── conf
|
||||
│ │ ├── scripts
|
||||
│ │ └── themes
|
||||
│ ├── machines
|
||||
│ │ ├── maindroid
|
||||
│ │ │ └── configuration.nix
|
||||
│ │ └── traveldroid
|
||||
│ │ └── configuration.nix
|
||||
│ └── mangowc
|
||||
│ ├── conf
|
||||
│ ├── scripts
|
||||
│ └── themes
|
||||
├── flake.nix
|
||||
├── generated
|
||||
│ ├── common
|
||||
│ │ ├── home-manager
|
||||
│ │ │ ├── programs
|
||||
│ │ │ ├── shell
|
||||
│ │ │ └── starship
|
||||
│ │ ├── nixos
|
||||
│ │ │ ├── hardware
|
||||
│ │ │ ├── packages
|
||||
│ │ │ ├── security
|
||||
│ │ │ ├── services
|
||||
│ │ │ └── users
|
||||
│ │ ├── templates
|
||||
│ │ └── themes
|
||||
│ │ ├── fonts
|
||||
│ │ ├── gtk
|
||||
│ │ ├── icons
|
||||
│ │ └── shells
|
||||
│ ├── hyprland
|
||||
│ │ ├── home-manager
|
||||
│ │ │ ├── programs
|
||||
│ │ │ └── scripts
|
||||
│ │ ├── nixos
|
||||
│ │ │ ├── plugins
|
||||
│ │ │ └── window-manager
|
||||
│ │ ├── overrides
|
||||
│ │ └── themes
|
||||
│ │ ├── hypr
|
||||
│ │ ├── rofi
|
||||
│ │ └── waybar
|
||||
│ └── mangowc
|
||||
│ ├── home-manager
|
||||
│ │ ├── programs
|
||||
│ │ └── scripts
|
||||
│ ├── nixos
|
||||
│ │ ├── plugins
|
||||
│ │ └── window-manager
|
||||
│ ├── overrides
|
||||
│ └── themes
|
||||
│ ├── mangowc
|
||||
│ ├── waybar
|
||||
│ └── wofi
|
||||
├── README.html
|
||||
└── README.org
|
||||
#+END_EXAMPLE
|
||||
|
||||
** First Setup
|
||||
1. Clone this repository.
|
||||
2. Run the setup script: =./setup_droidnix.sh=.
|
||||
3. Edit =.assets/common/conf/base.conf= to choose your window manager (=wm = "hyprland"= or =wm = "mangowc"=).
|
||||
4. Tangle this Org file to generate Nix configurations: =C-c C-v t= in Emacs or use this: =emacs README.org --batch -f org-babel-tangle && emacs --batch --eval "(setq org-html-htmlize-output-type nil)" README.org -f org-html-export-to-html=
|
||||
5. Build and switch: =sudo nixos-rebuild switch --flake .#<hostname>=.
|
||||
|
||||
---
|
||||
|
||||
* The Assets Folder :assets:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: the-assets-folder
|
||||
:END:
|
||||
The =.assets/= folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly.
|
||||
|
||||
** =.assets/common/=
|
||||
This folder contains files shared across both window managers, such as wallpapers, shell configs, and common scripts.
|
||||
|
||||
- =conf/base.conf=: Defines the window manager choice and other global settings.
|
||||
- =scripts/=: System-wide scripts (e.g., utilities, helpers).
|
||||
|
||||
** =.assets/hyprland/=
|
||||
Hyprland-specific assets, including configs, themes, and scripts.
|
||||
|
||||
- =conf/=: Hyprland configuration files (e.g., =hyprland.conf=).
|
||||
- =themes/=: Hyprland-specific theme scripts.
|
||||
- =scripts/=: Hyprland-specific scripts.
|
||||
|
||||
** =.assets/mangowc/=
|
||||
Mangowc-specific assets, including configs, themes, and scripts.
|
||||
|
||||
- =conf/=: Mangowc configuration files.
|
||||
- =themes/=: Mangowc-specific theme scripts.
|
||||
- =scripts/=: Mangowc-specific scripts.
|
||||
|
||||
** =.assets/machines/=
|
||||
Machine-specific NixOS configurations (e.g., =configuration.nix= for =maindroid= and =traveldroid=).
|
||||
|
||||
---
|
||||
|
||||
* The Actual Code :code:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: the-actual-code
|
||||
:END:
|
||||
This section contains the Org blocks for tangling Nix code into the generated folders.
|
||||
|
||||
** =flake.nix=
|
||||
The Nix flake definition for Droidnix.
|
||||
|
||||
#+begin_src nix :tangle flake.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{
|
||||
description = "Droidnix: A dendritic NixOS + Home Manager configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
|
||||
# Your flake outputs here
|
||||
};
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/nixos/hardware/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/nixos/hardware/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/nixos/hardware/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your hardware configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/nixos/packages/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/nixos/packages/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/nixos/packages/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your package configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/nixos/security/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/nixos/security/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/nixos/security/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your security configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/nixos/services/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/nixos/services/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/nixos/services/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your service configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/nixos/users/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/nixos/users/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/nixos/users/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your user configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/home-manager/programs/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/home-manager/programs/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/home-manager/programs/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your program configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/home-manager/shell/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/home-manager/shell/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/home-manager/shell/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/home-manager/starship/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/home-manager/starship/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/home-manager/starship/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your starship configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/templates/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/templates/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/templates/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your template configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/themes/fonts/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/themes/fonts/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/themes/fonts/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your font configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/themes/gtk/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/themes/gtk/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/themes/gtk/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your GTK theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/themes/icons/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/themes/icons/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/themes/icons/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your icon configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/common/themes/shells/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/common/themes/shells/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/common/themes/shells/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/nixos/window-manager/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/nixos/window-manager/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/nixos/window-manager/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland window manager configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/nixos/plugins/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/nixos/plugins/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/nixos/plugins/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland plugin configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/home-manager/programs/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/home-manager/programs/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/home-manager/programs/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland program configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/home-manager/scripts/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/home-manager/scripts/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/home-manager/scripts/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland script configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/themes/hypr/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/themes/hypr/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/themes/hypr/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/themes/rofi/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/themes/rofi/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/themes/rofi/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Rofi theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/themes/waybar/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/themes/waybar/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/themes/waybar/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/hyprland/overrides/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/hyprland/overrides/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/hyprland/overrides/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland overrides here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/nixos/window-manager/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/nixos/window-manager/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/nixos/window-manager/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc window manager configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/nixos/plugins/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/nixos/plugins/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/nixos/plugins/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc plugin configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/home-manager/programs/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/home-manager/programs/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/home-manager/programs/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc program configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/home-manager/scripts/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/home-manager/scripts/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/home-manager/scripts/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc script configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/themes/generated/mangowc/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/themes/generated/mangowc/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/themes/generated/mangowc/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/themes/waybar/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/themes/waybar/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/themes/waybar/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/themes/wofi/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/themes/wofi/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/themes/wofi/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Wofi theme configurations here
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** =generated/mangowc/overrides/placeholder.nix=
|
||||
This is a placeholder for the description of =generated/mangowc/overrides/placeholder.nix=.
|
||||
|
||||
#+begin_src nix :tangle generated/mangowc/overrides/placeholder.nix :noweb tangle :mkdirp yes :eval never-html
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc overrides here
|
||||
}
|
||||
#+end_src
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Droidnix: Install Emacs and configure for Nix/Org tangling, HTML export
|
||||
# For NixOS systems with no Emacs installed
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Install Emacs and dependencies via nix-shell
|
||||
echo "Installing Emacs and dependencies via nix-shell..."
|
||||
nix-shell -p emacs git --run "
|
||||
# Create a minimal Emacs config for package installation
|
||||
TEMP_CONFIG=\$(mktemp /tmp/droidnix-emacs-setup.XXXXXX.el)
|
||||
cat > \"\$TEMP_CONFIG\" << 'EOC'
|
||||
;; Minimal config for installing packages
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '(\"melpa\" . \"https://melpa.org/packages/\") t)
|
||||
(package-initialize)
|
||||
EOC
|
||||
|
||||
# Install Emacs packages in batch mode
|
||||
echo 'Installing Emacs packages...'
|
||||
emacs --batch \\
|
||||
--load \"\$TEMP_CONFIG\" \\
|
||||
--eval '(package-refresh-contents)' \\
|
||||
--eval '(package-install 'use-package)' \\
|
||||
--eval '(package-install 'org)' \\
|
||||
--eval '(package-install 'nix-mode)' \\
|
||||
--eval '(package-install 'htmlize)' \\
|
||||
--eval '(package-install 'catppuccin-theme)' \\
|
||||
--eval '(package-install 'org-bullets)' \\
|
||||
--eval '(package-install 'magit)' \\
|
||||
--eval '(package-install 'company)' \\
|
||||
--eval '(package-install 'flycheck)' \\
|
||||
--eval '(package-install 'doom-modeline)' \\
|
||||
--eval '(package-install 'which-key)' \\
|
||||
--eval '(package-install 'projectile)' \\
|
||||
--eval '(package-install 'ivy)' \\
|
||||
--eval '(package-install 'counsel)' \\
|
||||
--eval '(package-install 'all-the-icons)' \\
|
||||
--eval '(package-install 'doom-themes)' \\
|
||||
--eval '(package-install 'treemacs)' \\
|
||||
--eval '(package-install 'lsp-mode)' \\
|
||||
--eval '(package-install 'dashboard)'
|
||||
|
||||
# Create a post-install config for interactive use
|
||||
USER_EMACSCONFIG=\"\${HOME}/.emacs.d/init.el\"
|
||||
if [ ! -f \"\$USER_EMACSCONFIG\" ]; then
|
||||
mkdir -p \"\${HOME}/.emacs.d\"
|
||||
cat > \"\$USER_EMACSCONFIG\" << 'EOC'
|
||||
;; Droidnix Emacs Configuration for NixOS
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '(\"melpa\" . \"https://melpa.org/packages/\") t)
|
||||
(package-initialize)
|
||||
|
||||
;; Basic UI improvements
|
||||
(tool-bar-mode -1)
|
||||
(menu-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(setq inhibit-startup-message t)
|
||||
(setq make-backup-files nil)
|
||||
(setq auto-save-default nil)
|
||||
|
||||
;; Enable Catppuccin Mocha theme
|
||||
(when (fboundp 'load-theme)
|
||||
(load-theme 'catppuccin-mocha t)
|
||||
(setq catppuccin-disable-term-colors nil)
|
||||
(setq catppuccin-enable-bold t)
|
||||
(setq catppuccin-enable-italic t))
|
||||
|
||||
;; Enable Doom Modeline
|
||||
(when (fboundp 'doom-modeline-mode)
|
||||
(doom-modeline-mode 1))
|
||||
|
||||
;; Enable All The Icons
|
||||
(when (fboundp 'all-the-icons-install-fonts)
|
||||
(all-the-icons-install-fonts)
|
||||
(global-all-the-icons-mode))
|
||||
|
||||
;; Enable Treemacs
|
||||
(when (fboundp 'treemacs)
|
||||
(treemacs-mode)
|
||||
(setq treemacs-width 30)
|
||||
(setq treemacs-position 'left)
|
||||
(setq treemacs-space-between-root-nodes nil)
|
||||
(setq treemacs-indent-level 2)
|
||||
(setq treemacs-file-follow-delay 0.1)
|
||||
(setq treemacs-git-icon-enabled t)
|
||||
(setq treemacs-project-follow t)
|
||||
(setq treemacs-display-project-root t)
|
||||
(setq treemacs-show-hidden-files t))
|
||||
|
||||
;; Enable Company for autocomplete
|
||||
(when (fboundp 'company-mode)
|
||||
(global-company-mode)
|
||||
(setq company-idle-delay 0.1)
|
||||
(setq company-minimum-prefix-length 1))
|
||||
|
||||
;; Enable Flycheck for syntax checking
|
||||
(when (fboundp 'flycheck-mode)
|
||||
(global-flycheck-mode)
|
||||
(setq flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
(setq flycheck-display-errors-delay 0.5))
|
||||
|
||||
;; Enable Ivy + Counsel for better completion
|
||||
(when (fboundp 'ivy-mode)
|
||||
(ivy-mode 1)
|
||||
(setq ivy-use-virtual-buffers t)
|
||||
(setq ivy-count-format \"(%d/%d) \")
|
||||
(setq ivy-height 10)
|
||||
(when (fboundp 'counsel-mode)
|
||||
(counsel-mode 1)))
|
||||
|
||||
;; Enable Projectile for project management
|
||||
(when (fboundp 'projectile-mode)
|
||||
(projectile-mode +1)
|
||||
(define-key projectile-mode-map (kbd \"C-c p\") 'projectile-command-map)
|
||||
(setq projectile-completion-system 'ivy)
|
||||
(setq projectile-switch-project-action 'projectile-dired))
|
||||
|
||||
;; Enable Which Key for keybindings help
|
||||
(when (fboundp 'which-key-mode)
|
||||
(which-key-mode 1)
|
||||
(setq which-key-idle-delay 0.5)
|
||||
(setq which-key-show-major-modes nil))
|
||||
|
||||
;; Configure Org Mode
|
||||
(require 'org)
|
||||
(require 'ob-shell) ; Required for shell code blocks
|
||||
(require 'ob-nix) ; Required for nix code blocks
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(nix . t)
|
||||
(shell . t)
|
||||
(python . t)
|
||||
(dockerfile . t)))
|
||||
(setq org-babel-tangle-lang-exts '((\"nix\" . \"nix\")))
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-src-tab-act-as-tab t)
|
||||
(setq org-edit-src-content-indentation 0)
|
||||
(setq org-startup-indented t)
|
||||
(setq org-startup-folded nil)
|
||||
(setq org-ellipsis \"⤵\")
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-image-actual-width nil)
|
||||
(setq org-html-htmlize-output-type 'css)
|
||||
(setq org-export-with-toc nil)
|
||||
(setq org-todo-keywords '(\"TODO\" \"DOING\" \"|\" \"DONE\" \"CANCELED\"))
|
||||
(setq org-log-done 'time)
|
||||
(setq org-directory \"~/org\")
|
||||
(when (fboundp 'org-bullets-mode)
|
||||
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
||||
|
||||
;; Enable Magit for Git
|
||||
(when (fboundp 'magit-version)
|
||||
(setq magit-display-buffer-function 'magit-display-buffer-fullscreen)
|
||||
(setq magit-last-seen-setup-instruction \"1.4.0\"))
|
||||
|
||||
;; Enable LSP Mode for language server support
|
||||
(when (fboundp 'lsp-mode)
|
||||
(lsp-mode 1)
|
||||
(setq lsp-keymap-prefix \"C-c l\")
|
||||
(setq lsp-enable-snippets nil)
|
||||
(setq lsp-enable-indentation nil)
|
||||
(setq lsp-enable-on-type-formatting nil)
|
||||
(setq lsp-lens-enable nil)
|
||||
(setq lsp-signature-auto-activate nil))
|
||||
|
||||
;; Enable Dashboard
|
||||
(when (fboundp 'dashboard-refresh-buffer)
|
||||
(dashboard-mode 1)
|
||||
(setq dashboard-items '((recents . 5)
|
||||
(projects . 5)
|
||||
(agenda . 5)
|
||||
(bookmarks . 5)))
|
||||
(setq dashboard-center-content t)
|
||||
(setq dashboard-banner-logo-title \"Droidnix Configuration\"))
|
||||
|
||||
;; Enable Nix Mode
|
||||
(when (fboundp 'nix-mode)
|
||||
(setq auto-mode-alist (cons '(\\\".nix\\'\\\" . nix-mode) auto-mode-alist))
|
||||
(add-to-list 'auto-mode-alist '(\\\".nix\\'\\\" . nix-mode)))
|
||||
|
||||
;; Custom keybindings
|
||||
(global-set-key (kbd \"C-c t\") 'treemacs)
|
||||
(global-set-key (kbd \"C-c p\") 'projectile-command-map)
|
||||
(global-set-key (kbd \"C-c g\") 'magit-status)
|
||||
(global-set-key (kbd \"C-c d\") 'dashboard-refresh-buffer)
|
||||
(global-set-key (kbd \"C-c b\") 'ivy-switch-buffer)
|
||||
(global-set-key (kbd \"C-c f\") 'find-file)
|
||||
(global-set-key (kbd \"C-c s\") 'save-buffer)
|
||||
(global-set-key (kbd \"C-c q\") 'kill-buffer)
|
||||
(global-set-key (kbd \"C-c w\") 'widen)
|
||||
(global-set-key (kbd \"C-c n\") 'narrow-to-region)
|
||||
|
||||
;; Nix-specific configurations
|
||||
(setq nix-indent-width 2)
|
||||
(setq nix-continuation-indent-width 4)
|
||||
|
||||
;; HTML export settings for Org
|
||||
(setq org-html-head-include-default-style nil)
|
||||
(setq org-html-head-extra "
|
||||
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.css\">
|
||||
<script src=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.js\"></script>
|
||||
<style>
|
||||
.tree { font-family: monospace; white-space: pre; }
|
||||
#table-of-contents { display: none; }
|
||||
.org-src-container { background-color: #313244; color: #cdd6f4; padding: 1em; border-radius: 5px; }
|
||||
pre.src { background-color: #313244; padding: 1em; border-radius: 5px; }
|
||||
</style>")
|
||||
|
||||
;; Function to wrap tree output in div for HTML export
|
||||
(defun my/org-wrap-tree-in-div ()
|
||||
\"Wrap the Nix tree output in a div with class 'tree' for HTML export.\"
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward \"#+RESULTS:\\n#+BEGIN_EXAMPLE\\n\\(.*?\\n\\)#+END_EXAMPLE\" nil t)
|
||||
(goto-char (match-beginning 1))
|
||||
(insert \"#+HTML: <div class=\\\"tree\\\">\\n\")
|
||||
(goto-char (match-end 1))
|
||||
(insert \"#+HTML: </div>\\n\"))))
|
||||
|
||||
;; Add hook to automatically wrap tree output on export
|
||||
(add-hook 'org-export-before-processing-hook 'my/org-wrap-tree-in-div)
|
||||
|
||||
;; Set default mode for new buffers
|
||||
(setq-default major-mode 'text-mode)
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq default-tab-width 2)
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Enable line numbers globally
|
||||
(global-display-line-numbers-mode 1)
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; Configure fill column indicator
|
||||
(setq display-fill-column-indicator t)
|
||||
(setq display-fill-column-indicator-character ?│)
|
||||
(setq fill-column 80)
|
||||
|
||||
;; Enable delete-selection-mode for more intuitive editing
|
||||
(delete-selection-mode 1)
|
||||
|
||||
;; Configure modeline
|
||||
(setq display-time-day-and-date t)
|
||||
(setq display-time-24hr-format t)
|
||||
|
||||
;; Configure frame appearance
|
||||
(setq default-frame-alist '((fullscreen . maximized)
|
||||
(alpha . (95 95))
|
||||
(vertical-scroll-bars . nil)
|
||||
(tool-bar-lines . 0)
|
||||
(menu-bar-lines . 0)
|
||||
(line-spacing . 3)
|
||||
(font . \"Fira Code-12\")))
|
||||
EOC
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm \"\$TEMP_CONFIG\"
|
||||
|
||||
echo ''
|
||||
echo 'Emacs and all packages are now installed and configured!'
|
||||
echo ''
|
||||
echo 'Installed packages:'
|
||||
echo ' ✅ Catppuccin Mocha (theme)'
|
||||
echo ' ✅ Org mode + Org Bullets'
|
||||
echo ' ✅ Magit (Git interface)'
|
||||
echo ' ✅ Company (autocomplete)'
|
||||
echo ' ✅ Flycheck (syntax checking)'
|
||||
echo ' ✅ Doom Modeline (status bar)'
|
||||
echo ' ✅ Which Key (keybindings help)'
|
||||
echo ' ✅ Projectile (project management)'
|
||||
echo ' ✅ Ivy + Counsel (completion framework)'
|
||||
echo ' ✅ All The Icons (pretty icons)'
|
||||
echo ' ✅ Treemacs (file tree)'
|
||||
echo ' ✅ LSP Mode (language server)'
|
||||
echo ' ✅ ob-shell (shell support for Org Babel)'
|
||||
echo ' ✅ ob-nix (Nix support for Org Babel)'
|
||||
echo ' ✅ Dashboard (start page)'
|
||||
echo ' ✅ tree (for directory visualization)'
|
||||
echo ''
|
||||
echo 'You can now:'
|
||||
echo '1. Tangle Org files: emacs README.org --batch -f org-babel-tangle'
|
||||
echo '2. Export to HTML: emacs -Q --batch README.org -f org-html-export-to-html'
|
||||
echo '3. Open Emacs: emacs'
|
||||
"
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Droidnix: Complete Emacs setup for Nix/Org tangling, HTML export, and a great editing experience
|
||||
# Installs packages in batch mode and configures them for interactive use.
|
||||
# For NixOS systems
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Install Emacs (if not already installed)
|
||||
|
||||
# Install Emacs and git via nix-shell (no apt-get)
|
||||
if ! command -v emacs &> /dev/null; then
|
||||
echo "Emacs not found. Installing Emacs..."
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y emacs
|
||||
echo "Emacs not found. Installing Emacs and git via nix-shell..."
|
||||
nix-shell -p emacs git --run "$0" "$@"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create a minimal Emacs config for package installation
|
||||
@@ -18,10 +19,12 @@ cat > "$TEMP_CONFIG" << 'EOF'
|
||||
;; Minimal config for installing packages
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
|
||||
(package-initialize)
|
||||
EOF
|
||||
|
||||
# Install packages in batch mode
|
||||
echo "Installing Emacs packages..."
|
||||
emacs --batch \
|
||||
--load "$TEMP_CONFIG" \
|
||||
--eval "(package-refresh-contents)" \
|
||||
@@ -43,19 +46,26 @@ emacs --batch \
|
||||
--eval "(package-install 'doom-themes)" \
|
||||
--eval "(package-install 'treemacs)" \
|
||||
--eval "(package-install 'lsp-mode)" \
|
||||
--eval "(package-install 'nix-mode)" \
|
||||
--eval "(package-install 'emacs-dashboard)"
|
||||
--eval "(package-install 'dashboard)"
|
||||
|
||||
# Create a post-install config for interactive use
|
||||
USER_EMACSCONFIG="${HOME}/.emacs.d/init.el"
|
||||
if [ ! -f "$USER_EMACSCONFIG" ]; then
|
||||
mkdir -p "${HOME}/.emacs.d"
|
||||
cat > "$USER_EMACSCONFIG" << 'EOF'
|
||||
;; Droidnix Emacs Configuration
|
||||
;; Droidnix Emacs Configuration for NixOS
|
||||
(require 'package)
|
||||
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||
(package-initialize)
|
||||
|
||||
;; Basic UI improvements
|
||||
(tool-bar-mode -1) ; Disable toolbar
|
||||
(menu-bar-mode -1) ; Disable menu bar
|
||||
(scroll-bar-mode -1) ; Disable scroll bar
|
||||
(setq inhibit-startup-message t) ; Disable startup message
|
||||
(setq make-backup-files nil) ; Disable backup files
|
||||
(setq auto-save-default nil) ; Disable auto-save files
|
||||
|
||||
;; Enable Catppuccin Mocha theme
|
||||
(when (fboundp 'load-theme)
|
||||
(ignore-errors
|
||||
@@ -75,91 +85,217 @@ if [ ! -f "$USER_EMACSCONFIG" ]; then
|
||||
|
||||
;; Enable Treemacs
|
||||
(when (fboundp 'treemacs)
|
||||
(treemacs-mode))
|
||||
(treemacs-mode)
|
||||
(setq treemacs-width 30)
|
||||
(setq treemacs-position 'left)
|
||||
(setq treemacs-space-between-root-nodes nil)
|
||||
(setq treemacs-indent-level 2)
|
||||
(setq treemacs-file-follow-delay 0.1)
|
||||
(setq treemacs-git-icon-enabled t)
|
||||
(setq treemacs-project-follow t)
|
||||
(setq treemacs-display-project-root t)
|
||||
(setq treemacs-show-hidden-files t))
|
||||
|
||||
;; Enable Company for autocomplete
|
||||
(when (fboundp 'company-mode)
|
||||
(global-company-mode))
|
||||
(global-company-mode)
|
||||
(setq company-idle-delay 0.1)
|
||||
(setq company-minimum-prefix-length 1))
|
||||
|
||||
;; Enable Flycheck for syntax checking
|
||||
(when (fboundp 'flycheck-mode)
|
||||
(global-flycheck-mode))
|
||||
(global-flycheck-mode)
|
||||
(setq flycheck-check-syntax-automatically '(save mode-enabled))
|
||||
(setq flycheck-display-errors-delay 0.5))
|
||||
|
||||
;; Enable Ivy + Counsel for better completion
|
||||
(when (fboundp 'ivy-mode)
|
||||
(ivy-mode 1)
|
||||
(setq ivy-use-virtual-buffers t)
|
||||
(setq ivy-count-format "(%d/%d) ")
|
||||
(setq ivy-height 10)
|
||||
(when (fboundp 'counsel-mode)
|
||||
(counsel-mode 1)))
|
||||
|
||||
;; Enable Projectile for project management
|
||||
(when (fboundp 'projectile-mode)
|
||||
(projectile-mode +1)
|
||||
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map))
|
||||
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
|
||||
(setq projectile-completion-system 'ivy)
|
||||
(setq projectile-switch-project-action 'projectile-dired))
|
||||
|
||||
;; Enable Which Key for keybindings help
|
||||
(when (fboundp 'which-key-mode)
|
||||
(which-key-mode 1))
|
||||
(which-key-mode 1)
|
||||
(setq which-key-idle-delay 0.5)
|
||||
(setq which-key-show-major-modes nil))
|
||||
|
||||
;; Enable Org Babel for Nix
|
||||
;; Configure Org Mode with Babel support for Nix and Shell
|
||||
(require 'org)
|
||||
(require 'ob-shell) ; Required for shell code blocks
|
||||
(require 'ob-nix) ; Required for nix code blocks
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t)
|
||||
(nix . t)
|
||||
(shell . t)))
|
||||
(shell . t)
|
||||
(python . t)
|
||||
(dockerfile . t)))
|
||||
(setq org-babel-tangle-lang-exts '(("nix" . "nix")))
|
||||
|
||||
;; Enable Org Bullets for better lists
|
||||
(setq org-src-fontify-natively t)
|
||||
(setq org-src-tab-act-as-tab t)
|
||||
(setq org-edit-src-content-indentation 0)
|
||||
(setq org-startup-indented t)
|
||||
(setq org-startup-folded nil)
|
||||
(setq org-ellipsis "⤵")
|
||||
(setq org-hide-emphasis-markers t)
|
||||
(setq org-image-actual-width nil)
|
||||
(setq org-html-htmlize-output-type 'css)
|
||||
(setq org-export-with-toc nil)
|
||||
(setq org-todo-keywords '("TODO" "DOING" "|" "DONE" "CANCELED"))
|
||||
(setq org-log-done 'time)
|
||||
(setq org-directory "~/org")
|
||||
(when (fboundp 'org-bullets-mode)
|
||||
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
||||
|
||||
;; Enable Magit for Git
|
||||
(when (fboundp 'magit-version)
|
||||
(setq magit-display-buffer-function 'magit-display-buffer-fullscreen))
|
||||
(setq magit-display-buffer-function 'magit-display-buffer-fullscreen)
|
||||
(setq magit-last-seen-setup-instruction "1.4.0"))
|
||||
|
||||
;; Enable LSP Mode for language server support
|
||||
(when (fboundp 'lsp-mode)
|
||||
(lsp-mode 1)
|
||||
(setq lsp-keymap-prefix "C-c l"))
|
||||
(setq lsp-keymap-prefix "C-c l")
|
||||
(setq lsp-enable-snippets nil)
|
||||
(setq lsp-enable-indentation nil)
|
||||
(setq lsp-enable-on-type-formatting nil)
|
||||
(setq lsp-lens-enable nil)
|
||||
(setq lsp-signature-auto-activate nil))
|
||||
|
||||
;; Enable Dashboard
|
||||
(when (fboundp 'dashboard-refresh-buffer)
|
||||
(dashboard-mode 1))
|
||||
(dashboard-mode 1)
|
||||
(setq dashboard-items '((recents . 5)
|
||||
(projects . 5)
|
||||
(agenda . 5)
|
||||
(bookmarks . 5)))
|
||||
(setq dashboard-center-content t)
|
||||
(setq dashboard-banner-logo-title "Droidnix Configuration"))
|
||||
|
||||
;; Enable Nix Mode
|
||||
(when (fboundp 'nix-mode)
|
||||
(setq auto-mode-alist (cons '("\\.nix\\'" . nix-mode) auto-mode-alist)))
|
||||
(setq auto-mode-alist (cons '("\\.nix\\'" . nix-mode) auto-mode-alist))
|
||||
(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-mode)))
|
||||
|
||||
;; Custom keybindings
|
||||
(global-set-key (kbd "C-c t") 'treemacs)
|
||||
(global-set-key (kbd "C-c p") 'projectile-command-map)
|
||||
(global-set-key (kbd "C-c g") 'magit-status)
|
||||
(global-set-key (kbd "C-c d") 'dashboard-refresh-buffer)
|
||||
(global-set-key (kbd "C-c b") 'ivy-switch-buffer)
|
||||
(global-set-key (kbd "C-c f") 'find-file)
|
||||
(global-set-key (kbd "C-c s") 'save-buffer)
|
||||
(global-set-key (kbd "C-c q") 'kill-buffer)
|
||||
(global-set-key (kbd "C-c w") 'widen)
|
||||
(global-set-key (kbd "C-c n") 'narrow-to-region)
|
||||
|
||||
;; Nix-specific configurations
|
||||
(setq nix-indent-width 2)
|
||||
(setq nix-continuation-indent-width 4)
|
||||
|
||||
;; HTML export settings for Org
|
||||
(setq org-html-head-include-default-style nil)
|
||||
(setq org-html-head-extra "
|
||||
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.css\">
|
||||
<script src=\"https://cdn.jsdelivr.net/npm/tree.js@1.0.0/dist/tree.min.js\"></script>
|
||||
<style>
|
||||
.tree { font-family: monospace; white-space: pre; }
|
||||
#table-of-contents { display: none; }
|
||||
.org-src-container { background-color: #313244; color: #cdd6f4; padding: 1em; border-radius: 5px; }
|
||||
pre.src { background-color: #313244; padding: 1em; border-radius: 5px; }
|
||||
</style>")
|
||||
|
||||
;; Function to wrap tree output in div for HTML export
|
||||
(defun my/org-wrap-tree-in-div ()
|
||||
"Wrap the Nix tree output in a div with class 'tree' for HTML export."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "#+RESULTS:\n#+BEGIN_EXAMPLE\n\\(.*?\n\\)#+END_EXAMPLE" nil t)
|
||||
(goto-char (match-beginning 1))
|
||||
(insert "#+HTML: <div class=\"tree\">\n")
|
||||
(goto-char (match-end 1))
|
||||
(insert "#+HTML: </div>\n"))))
|
||||
|
||||
;; Add hook to automatically wrap tree output on export
|
||||
(add-hook 'org-export-before-processing-hook 'my/org-wrap-tree-in-div)
|
||||
|
||||
;; Set default mode for new buffers
|
||||
(setq-default major-mode 'text-mode)
|
||||
(setq-default indent-tabs-mode nil)
|
||||
(setq default-tab-width 2)
|
||||
(setq tab-width 2)
|
||||
|
||||
;; Enable line numbers globally
|
||||
(global-display-line-numbers-mode 1)
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; Configure fill column indicator
|
||||
(setq display-fill-column-indicator t)
|
||||
(setq display-fill-column-indicator-character ?│)
|
||||
(setq fill-column 80)
|
||||
|
||||
;; Enable delete-selection-mode for more intuitive editing
|
||||
(delete-selection-mode 1)
|
||||
|
||||
;; Configure modeline
|
||||
(setq display-time-day-and-date t)
|
||||
(setq display-time-24hr-format t)
|
||||
|
||||
;; Configure frame appearance
|
||||
(setq default-frame-alist '((fullscreen . maximized)
|
||||
(alpha . (95 95))
|
||||
(vertical-scroll-bars . nil)
|
||||
(tool-bar-lines . 0)
|
||||
(menu-bar-lines . 0)
|
||||
(line-spacing . 3)
|
||||
(font . "Fira Code-12")))
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm "$TEMP_CONFIG"
|
||||
|
||||
echo ""
|
||||
echo "Emacs setup complete with Catppuccin Mocha and all plugins!"
|
||||
echo ""
|
||||
echo "Installed packages:"
|
||||
echo " - Catppuccin Mocha (theme)"
|
||||
echo " - Org mode + Org Bullets"
|
||||
echo " - Magit (Git interface)"
|
||||
echo " - Company (autocomplete)"
|
||||
echo " - Flycheck (syntax checking)"
|
||||
echo " - Doom Modeline (status bar)"
|
||||
echo " - Which Key (keybindings help)"
|
||||
echo " - Projectile (project management)"
|
||||
echo " - Ivy + Counsel (completion framework)"
|
||||
echo " - All The Icons (pretty icons)"
|
||||
echo " - Treemacs (file tree)"
|
||||
echo " - LSP Mode (language server)"
|
||||
echo " - Emacs Dashboard (start page)"
|
||||
echo " ✅ Catppuccin Mocha (theme)"
|
||||
echo " ✅ Org mode + Org Bullets + Org Babel (Nix/Shell support)"
|
||||
echo " ✅ Magit (Git interface)"
|
||||
echo " ✅ Company (autocomplete)"
|
||||
echo " ✅ Flycheck (syntax checking)"
|
||||
echo " ✅ Doom Modeline (status bar)"
|
||||
echo " ✅ Which Key (keybindings help)"
|
||||
echo " ✅ Projectile (project management)"
|
||||
echo " ✅ Ivy + Counsel (completion framework)"
|
||||
echo " ✅ All The Icons (pretty icons)"
|
||||
echo " ✅ Treemacs (file tree)"
|
||||
echo " ✅ LSP Mode (language server)"
|
||||
echo " ✅ ob-shell + ob-nix (Org Babel support)"
|
||||
echo " ✅ Dashboard (start page)"
|
||||
echo " ✅ tree.js (for collapsible directory trees in HTML export)"
|
||||
echo ""
|
||||
echo "You can now:"
|
||||
echo "1. Tangle Org files: emacs README.org --batch -f org-babel-tangle"
|
||||
echo "2. Export to HTML: emacs -Q --batch --eval '(setq org-html-htmlize-output-type nil)' README.org -f org-html-export-to-html"
|
||||
echo "3. Open Emacs interactively for the full experience with all plugins"
|
||||
echo "After this, use the Emacs config in ./assets/common/emacs.nix for future setups."
|
||||
echo "1. Tangle Org files: emacs README.org --batch -f org-babel-tangle"
|
||||
echo "2. Export to HTML: emacs -Q --batch README.org -f org-html-export-to-html"
|
||||
echo "3. Open Emacs: emacs"
|
||||
echo ""
|
||||
echo "The configuration includes:"
|
||||
echo "- Proper Org Babel support for shell and Nix"
|
||||
echo "- Tree.js integration for collapsible directory trees in HTML export"
|
||||
echo "- Custom keybindings for common operations"
|
||||
echo "- Enhanced UI with Treemacs, Doom Modeline, and Catppuccin theme"
|
||||
echo "- Optimized settings for Nix development"
|
||||
echo "- HTML export with embedded CSS for better styling"
|
||||
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Install Neovim and Neovide using nix-env with the correct attribute path for NixOS
|
||||
echo "Installing Neovim and Neovide..."
|
||||
nix-env -iA nixos.neovim nixos.neovide
|
||||
|
||||
# Create Neovim config directory
|
||||
NVIM_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/nvim"
|
||||
mkdir -p "$NVIM_CONFIG_DIR"
|
||||
|
||||
# Install packer.nvim (plugin manager)
|
||||
PACKER_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/nvim/site/pack/packer/start/packer.nvim"
|
||||
if [ ! -d "$PACKER_DIR" ]; then
|
||||
echo "Installing packer.nvim..."
|
||||
git clone --depth 1 https://github.com/wbthomason/packer.nvim "$PACKER_DIR"
|
||||
fi
|
||||
|
||||
# Write minimal init.lua for literate NixOS
|
||||
cat > "$NVIM_CONFIG_DIR/init.lua" << 'EOF'
|
||||
-- Enable filetype detection, syntax highlighting, and indenting
|
||||
vim.cmd([[
|
||||
filetype plugin indent on
|
||||
syntax on
|
||||
]])
|
||||
|
||||
-- Leader key
|
||||
vim.g.mapleader = " "
|
||||
|
||||
-- Install plugins with Packer
|
||||
local fn = vim.fn
|
||||
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
||||
local packer_bootstrap = false
|
||||
|
||||
if fn.empty(fn.glob(install_path)) > 0 then
|
||||
packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
||||
vim.cmd [[packadd packer.nvim]]
|
||||
end
|
||||
|
||||
require('packer').startup(function(use)
|
||||
-- Plugin manager
|
||||
use 'wbthomason/packer.nvim'
|
||||
|
||||
-- Catppuccin theme
|
||||
use { 'catppuccin/nvim', as = 'catppuccin' }
|
||||
|
||||
-- Orgmode for literate NixOS
|
||||
use {
|
||||
'nvim-orgmode/orgmode',
|
||||
config = function()
|
||||
require('orgmode').setup({
|
||||
org_agenda_files = {'~/Documents/org/*'},
|
||||
org_default_notes_file = '~/Documents/org/notes.org',
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
-- Treesitter (better syntax highlighting)
|
||||
use {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
run = ':TSUpdate',
|
||||
config = function()
|
||||
require('nvim-treesitter.configs').setup({
|
||||
ensure_installed = {'nix', 'org'},
|
||||
highlight = { enable = true },
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
-- LSP (for Nix language server)
|
||||
use {
|
||||
'neovim/nvim-lspconfig',
|
||||
config = function()
|
||||
require('lspconfig').nil_ls.setup({})
|
||||
end
|
||||
}
|
||||
|
||||
-- Telescope (fuzzy finder)
|
||||
use {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
requires = {{'nvim-lua/plenary.nvim'}}
|
||||
}
|
||||
|
||||
-- Automatically set up after cloning packer.nvim
|
||||
if packer_bootstrap then
|
||||
require('packer').sync()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Set Catppuccin theme
|
||||
vim.cmd.colorscheme('catppuccin-mocha')
|
||||
|
||||
-- Keybindings for orgmode
|
||||
vim.api.nvim_set_keymap('n', '<leader>oo', '<cmd>lua require("orgmode").action("agenda.prompt")<cr>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>oc', '<cmd>lua require("orgmode").action("capture.prompt")<cr>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>ot', '<cmd>lua require("orgmode").action("tangle.current_file")<cr>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>oe', '<cmd>lua require("orgmode").action("export.current_file")<cr>', { noremap = true, silent = true })
|
||||
|
||||
-- Auto-install LSP and Treesitter parsers on first run
|
||||
vim.api.nvim_create_autocmd('BufEnter', {
|
||||
pattern = {'*.nix', '*.org'},
|
||||
callback = function()
|
||||
vim.cmd('TSInstall! nix')
|
||||
vim.cmd('TSInstall! org')
|
||||
end,
|
||||
})
|
||||
EOF
|
||||
|
||||
# Install nil (Nix language server)
|
||||
echo "Installing nil (Nix language server)..."
|
||||
nix-env -iA nixos.nil
|
||||
|
||||
# Install Neovide config (optional)
|
||||
NEOVIDE_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/neovide"
|
||||
mkdir -p "$NEOVIDE_CONFIG_DIR"
|
||||
cat > "$NEOVIDE_CONFIG_DIR/config.toml" << 'EOF'
|
||||
[editor]
|
||||
theme = "catppuccin-mocha"
|
||||
EOF
|
||||
|
||||
echo "Setup complete!"
|
||||
echo "Run 'nvim' or 'neovide' to start."
|
||||
echo "In Neovim, run ':PackerSync' to install plugins."
|
||||
@@ -1,4 +0,0 @@
|
||||
# Maindroid NixOS Configuration
|
||||
{ ... }: {
|
||||
# Your NixOS configuration for maindroid
|
||||
}
|
||||
Regular → Executable
+6
-3
@@ -1,4 +1,7 @@
|
||||
# Traveldroid NixOS Configuration
|
||||
{ ... }: {
|
||||
# Your NixOS configuration for traveldroid
|
||||
{ user, ... } : {
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
hostname,
|
||||
pkgs,
|
||||
lib,
|
||||
modulesPath,
|
||||
user,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
../../hardware/hardware.nix
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/811D-0676";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; }
|
||||
];
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
../../home
|
||||
];
|
||||
home.packages = with pkgs; [
|
||||
brightnessctl
|
||||
];
|
||||
wayland.windowManager.hyprland = {
|
||||
extraConfig = ''
|
||||
# Default portable monitor rule
|
||||
monitor=DP-1,3840x1080@144,1920x0,1
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
description = "Droidnix: A dendritic NixOS + Home Manager configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs: {
|
||||
# Your flake outputs here
|
||||
};
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your shell configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your starship configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your starship configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your hardware configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your hardware configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your package configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your package configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your security configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your security configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your service configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your service configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your user configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your user configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your template configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your font configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your font configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your GTK theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your GTK theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your icon configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your icon configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your shell theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your shell theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Hyprland program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland script configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Hyprland plugin configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland plugin configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Hyprland configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland window manager configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland overrides here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Hyprland theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Hyprland theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Rofi theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Mangowc program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc program configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc script configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Mangowc plugin configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc plugin configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Mangowc configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc window manager configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc overrides here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ lib, config, ... }:
|
||||
{
|
||||
# Your Mangowc theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Mangowc theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Waybar theme configurations here
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
{ pkgs, user, ... }:
|
||||
{
|
||||
# Your Wofi theme configurations here
|
||||
}
|
||||
Reference in New Issue
Block a user