add hp-14-bp1xx configuration file
This commit is contained in:
commit
22973a01ed
|
@ -0,0 +1,325 @@
|
||||||
|
#+TITLE: EMACS Configuration.
|
||||||
|
#+AUTHOR: Ayham Mamoun
|
||||||
|
#+EMAIL: ayhamaboualfadl@gmail.com
|
||||||
|
#+OPTIONS: toc:nil num:nil
|
||||||
|
|
||||||
|
* Configure =use-package=
|
||||||
|
|
||||||
|
Always compile the packages, and use the newest version available.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(require 'use-package-ensure)
|
||||||
|
(setq use-package-always-ensure t)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Workaround for a bug in EMACS 26. Where there is an issue installing some packages.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* Load Scripts
|
||||||
|
|
||||||
|
Load the typing-speed script.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(load-file (concat user-emacs-directory "scripts/typing_speed.el"))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* UI Prefrences
|
||||||
|
** Tweak EMACS' window
|
||||||
|
|
||||||
|
Disable menu, scrollbar and minibuffer scrollbar.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
(scroll-bar-mode -1)
|
||||||
|
(set-window-scroll-bars (minibuffer-window) nil nil)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Bind frame title to the name of the current project.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq frame-title-format '((:eval (projectile-project-name))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Load theme
|
||||||
|
|
||||||
|
Use 'monokai' theme.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun apply-theme ()
|
||||||
|
"Make frames just slightly transparent."
|
||||||
|
(interactive)
|
||||||
|
(load-theme 'monokai t))
|
||||||
|
|
||||||
|
(use-package monokai-theme
|
||||||
|
:config
|
||||||
|
(apply-theme))
|
||||||
|
(setq ;; foreground and background
|
||||||
|
monokai-foreground "#ABB2BF"
|
||||||
|
monokai-background "#282C34"
|
||||||
|
;; highlights and comments
|
||||||
|
monokai-comments "#F8F8F0"
|
||||||
|
monokai-emphasis "#282C34"
|
||||||
|
monokai-highlight "#FFB269"
|
||||||
|
monokai-highlight-alt "#1B1D1E"
|
||||||
|
monokai-highlight-line "#1B1D1E"
|
||||||
|
monokai-line-number "#F8F8F0"
|
||||||
|
;; colours
|
||||||
|
monokai-blue "#61AFEF"
|
||||||
|
monokai-cyan "#56B6C2"
|
||||||
|
monokai-green "#98C379"
|
||||||
|
monokai-gray "#3E4451"
|
||||||
|
monokai-violet "#C678DD"
|
||||||
|
monokai-red "#E06C75"
|
||||||
|
monokai-orange "#D19A66"
|
||||||
|
monokai-yellow "#E5C07B")
|
||||||
|
(setq monokai-height-minus-1 0.8
|
||||||
|
monokai-height-plus-1 1.1
|
||||||
|
monokai-height-plus-2 1.15
|
||||||
|
monokai-height-plus-3 1.2
|
||||||
|
monokai-height-plus-4 1.3)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Configure packages that modify the look
|
||||||
|
*** =powerline=
|
||||||
|
|
||||||
|
Install and use EMACS' =powerline=
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package powerline)
|
||||||
|
(powerline-default-theme)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Environment specific configuration
|
||||||
|
*** =ORG-mode= Environment
|
||||||
|
|
||||||
|
Replace =ORG-mode= ellipsis with a downward arrow.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq org-ellipsis "↲")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* Basic Configuration
|
||||||
|
|
||||||
|
Increase the garbage collector threshold, to speed up some operations.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq gc-cons-threshold 20000000)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Treat CamelCaseSubWords as seperate words.
|
||||||
|
Note: Check if this suits me.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'prog-mode-hook 'subword-mode)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
If a file starts with #!, make it executable.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
If saving a file in a directory doesn't exist, offer to create the parent directories recursively.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'before-save-hook
|
||||||
|
(lambda ()
|
||||||
|
(when buffer-file-name
|
||||||
|
(let ((dir (file-name-directory buffer-file-name)))
|
||||||
|
(when (and (not (file-exists-p dir)) y-or-n-p (format "Directory %s does not exist, Create it?" dir))
|
||||||
|
(make-directory dir t ))))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Require having a new line.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq require-final-newline t)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Make file sizes human-readable to dired buffers.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq-default dired-listing-switches "-alh")
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Refresh buffer when the file is changed, stoping buffers and file getting out of sync.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(global-auto-revert-mode t)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
When pressing the middle mouse button, paste where the curser is rather than where the mouse is.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq mouse-yank-at-point 1)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Better increase and decrease text scale.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(global-set-key (kbd "C-+") 'text-scale-increase)
|
||||||
|
(global-set-key (kbd "C--") 'text-scale-decrease)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Enable visual parantheses matching.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(show-paren-mode 1)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Enable Line numberings.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(global-display-line-numbers-mode)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Store backups and temperory files in =temporary-file-directory=.
|
||||||
|
=/tmp= on Unix. Warning: =/tmp= on most Unix-like systems is VOLATILE, IN-MEMORY storage.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq backup-directory-alist `((".*" . ,temporary-file-directory)))
|
||||||
|
(setq auto-save-file-name-transforms `((".*", temporary-file-directory t)))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* Packages Configuration
|
||||||
|
** =ag=
|
||||||
|
|
||||||
|
Set up =ag= on startup.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package ag)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =company=
|
||||||
|
|
||||||
|
Enable =company-mode= everywhere.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package company)
|
||||||
|
(add-hook 'after-init-hook 'global-company-mode)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Use =M-/= for completion.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(global-set-key (kbd "M-/") 'company-complete-common)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =flycheck=
|
||||||
|
|
||||||
|
Install flycheck.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package flycheck)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =magit=
|
||||||
|
|
||||||
|
Use magit for git repos managment.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package magit
|
||||||
|
:bind ("C-x g" . magit-status))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =projectile=
|
||||||
|
|
||||||
|
Use projectile for useful funcationality for project management.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package projectile)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =undo-tree=
|
||||||
|
|
||||||
|
Use =undo-tree=.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package undo-tree)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Environment Specific Packages.
|
||||||
|
*** =Lisp= Environment
|
||||||
|
|
||||||
|
Use =paredit=.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package paredit)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Use =rainbow-delimiters=.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package rainbow-delimiters)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
* Programming Environments Configuration
|
||||||
|
|
||||||
|
Use 4-spaced characters for tabs by default.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq-default tab-width 4)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Use subword mode.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package subword
|
||||||
|
:config (global-subword-mode 1))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =C/C++= Environment
|
||||||
|
|
||||||
|
Set the tab width when using C/C++ mode.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq-default c-basic-offset 4)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =Lisp= Environment
|
||||||
|
|
||||||
|
Uses lisp packages when lisp languages are enabled.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq lispy-mode-hooks
|
||||||
|
'(emacs-lisp-hook lisp-mode-hook))
|
||||||
|
|
||||||
|
(dolist (hook lispy-mode-hooks)
|
||||||
|
(add-hook hook (lambda()
|
||||||
|
(setq show-paren-style 'expression)
|
||||||
|
(paredit-mode)
|
||||||
|
(rainbow-delimeters-mode))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Set tab with
|
||||||
|
|
||||||
|
** =ORG-mode= Environment
|
||||||
|
This might not be a programming environment, but making a seperate section is an overkill.
|
||||||
|
|
||||||
|
Enable indentation in =org= source blocks.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(setq org-src-tab-acts-natively t)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** =sh= Environment
|
||||||
|
|
||||||
|
Indent with 4 spaces.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'sh-mode-hook
|
||||||
|
(lambda ()
|
||||||
|
(setq sh-basic-offset 4
|
||||||
|
sh-indentation 4)))
|
||||||
|
#+END_SRC
|
||||||
|
* Misc Configuration
|
||||||
|
|
||||||
|
Install =speed-type= for typing practice.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package speed-type)
|
||||||
|
#+END_SRC
|
|
@ -0,0 +1,26 @@
|
||||||
|
;; Configure package.el to include MELPA.
|
||||||
|
(require 'package)
|
||||||
|
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
||||||
|
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/") t)
|
||||||
|
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
|
||||||
|
(package-initialize)
|
||||||
|
|
||||||
|
;; Ensure that use-package is installed.
|
||||||
|
(when (not (package-installed-p 'use-package))
|
||||||
|
(package-refresh-contents)
|
||||||
|
(package-install 'use-package))
|
||||||
|
(require 'use-package)
|
||||||
|
|
||||||
|
(org-babel-load-file (concat user-emacs-directory "config.org"))
|
||||||
|
(custom-set-variables
|
||||||
|
;; custom-set-variables was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
'(package-selected-packages (quote (monokai-theme use-package magit))))
|
||||||
|
(custom-set-faces
|
||||||
|
;; custom-set-faces was added by Custom.
|
||||||
|
;; If you edit it by hand, you could mess it up, so be careful.
|
||||||
|
;; Your init file should contain only one such instance.
|
||||||
|
;; If there is more than one, they won't work right.
|
||||||
|
)
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
packageOverrides = pkgs: {
|
||||||
|
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Brightness
|
||||||
|
bindsym XF86MonBrightnessDown exec "brightnessctl set 2%-"
|
||||||
|
bindsym XF86MonBrightnessUp exec "brightnessctl set +2%"
|
||||||
|
|
||||||
|
# Volume
|
||||||
|
bindsym XF86AudioRaiseVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ +1%'
|
||||||
|
bindsym XF86AudioLowerVolume exec 'pactl set-sink-volume @DEFAULT_SINK@ -1%'
|
||||||
|
bindsym XF86AudioMute exec 'pactl set-sink-mute @DEFAULT_SINK@ toggle'
|
|
@ -0,0 +1,147 @@
|
||||||
|
{
|
||||||
|
// "layer": "top", // Waybar at top layer
|
||||||
|
// "position": "bottom", // Waybar position (top|bottom|left|right)
|
||||||
|
"height": 30, // Waybar height (to be removed for auto height)
|
||||||
|
// "width": 1280, // Waybar width
|
||||||
|
// Choose the order of the modules
|
||||||
|
"modules-left": ["sway/workspaces", "sway/mode", "custom/media"],
|
||||||
|
"modules-center": ["sway/window"],
|
||||||
|
"modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "sway/language", "battery", "battery#bat2", "clock", "tray"],
|
||||||
|
// Modules configuration
|
||||||
|
// "sway/workspaces": {
|
||||||
|
// "disable-scroll": true,
|
||||||
|
// "all-outputs": true,
|
||||||
|
// "format": "{name}: {icon}",
|
||||||
|
// "format-icons": {
|
||||||
|
// "1": "",
|
||||||
|
// "2": "",
|
||||||
|
// "3": "",
|
||||||
|
// "4": "",
|
||||||
|
// "5": "",
|
||||||
|
// "urgent": "",
|
||||||
|
// "focused": "",
|
||||||
|
// "default": ""
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
"sway/mode": {
|
||||||
|
"format": "<span style=\"italic\">{}</span>"
|
||||||
|
},
|
||||||
|
"mpd": {
|
||||||
|
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ ",
|
||||||
|
"format-disconnected": "Disconnected ",
|
||||||
|
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
|
||||||
|
"unknown-tag": "N/A",
|
||||||
|
"interval": 2,
|
||||||
|
"consume-icons": {
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"random-icons": {
|
||||||
|
"off": "<span color=\"#f53c3c\"></span> ",
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"repeat-icons": {
|
||||||
|
"on": " "
|
||||||
|
},
|
||||||
|
"single-icons": {
|
||||||
|
"on": "1 "
|
||||||
|
},
|
||||||
|
"state-icons": {
|
||||||
|
"paused": "",
|
||||||
|
"playing": ""
|
||||||
|
},
|
||||||
|
"tooltip-format": "MPD (connected)",
|
||||||
|
"tooltip-format-disconnected": "MPD (disconnected)"
|
||||||
|
},
|
||||||
|
"idle_inhibitor": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"activated": "",
|
||||||
|
"deactivated": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
// "icon-size": 21,
|
||||||
|
"spacing": 10
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
// "timezone": "America/New_York",
|
||||||
|
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||||
|
"format-alt": "{:%Y-%m-%d}"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"format": "{usage}% ",
|
||||||
|
"tooltip": false
|
||||||
|
},
|
||||||
|
"memory": {
|
||||||
|
"format": "{}% "
|
||||||
|
},
|
||||||
|
"temperature": {
|
||||||
|
// "thermal-zone": 2,
|
||||||
|
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
|
||||||
|
"critical-threshold": 80,
|
||||||
|
// "format-critical": "{temperatureC}°C {icon}",
|
||||||
|
"format": "{temperatureC}°C {icon}",
|
||||||
|
"format-icons": ["", "", ""]
|
||||||
|
},
|
||||||
|
"backlight": {
|
||||||
|
// "device": "acpi_video1",
|
||||||
|
"format": "{percent}% {icon}",
|
||||||
|
"format-icons": ["", ""]
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"states": {
|
||||||
|
// "good": 95,
|
||||||
|
"warning": 30,
|
||||||
|
"critical": 15
|
||||||
|
},
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-charging": "{capacity}% ",
|
||||||
|
"format-plugged": "{capacity}% ",
|
||||||
|
"format-alt": "{time} {icon}",
|
||||||
|
// "format-good": "", // An empty format will hide the module
|
||||||
|
// "format-full": "",
|
||||||
|
"format-icons": ["", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"battery#bat2": {
|
||||||
|
"bat": "BAT2"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
// "interface": "wlp2*", // (Optional) To force the use of this interface
|
||||||
|
"format-wifi": "{essid} ({signalStrength}%) ",
|
||||||
|
"format-ethernet": "{ifname}: {ipaddr}/{cidr} ",
|
||||||
|
"format-linked": "{ifname} (No IP) ",
|
||||||
|
"format-disconnected": "Disconnected ⚠",
|
||||||
|
"format-alt": "{ifname}: {ipaddr}/{cidr}"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
// "scroll-step": 1, // %, can be a float
|
||||||
|
"format": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
|
"format-muted": " {format_source}",
|
||||||
|
"format-source": "{volume}% ",
|
||||||
|
"format-source-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"hands-free": "",
|
||||||
|
"headset": "",
|
||||||
|
"phone": "",
|
||||||
|
"portable": "",
|
||||||
|
"car": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
},
|
||||||
|
"on-click": "pavucontrol"
|
||||||
|
},
|
||||||
|
"custom/media": {
|
||||||
|
"format": "{icon} {}",
|
||||||
|
"return-type": "json",
|
||||||
|
"max-length": 40,
|
||||||
|
"format-icons": {
|
||||||
|
"spotify": "",
|
||||||
|
"default": "🎜"
|
||||||
|
},
|
||||||
|
"escape": true,
|
||||||
|
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||||
|
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,230 @@
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
/* `otf-font-awesome` is required to be installed for icons */
|
||||||
|
font-family: Roboto, Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background-color: rgba(43, 48, 59, 0.5);
|
||||||
|
border-bottom: 3px solid rgba(100, 114, 125, 0.5);
|
||||||
|
color: #ffffff;
|
||||||
|
transition-property: background-color;
|
||||||
|
transition-duration: .5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.hidden {
|
||||||
|
opacity: 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
window#waybar.empty {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
window#waybar.solo {
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
window#waybar.termite {
|
||||||
|
background-color: #3F3F3F;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar.chromium {
|
||||||
|
background-color: #000000;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 5px;
|
||||||
|
background-color: transparent;
|
||||||
|
color: #ffffff;
|
||||||
|
/* Use box-shadow instead of border so the text isn't offset */
|
||||||
|
box-shadow: inset 0 -3px transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||||
|
#workspaces button:hover {
|
||||||
|
background: rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.focused {
|
||||||
|
background-color: #64727D;
|
||||||
|
box-shadow: inset 0 -3px #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mode {
|
||||||
|
background-color: #64727D;
|
||||||
|
border-bottom: 3px solid #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#memory,
|
||||||
|
#disk,
|
||||||
|
#temperature,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-media,
|
||||||
|
#tray,
|
||||||
|
#mode,
|
||||||
|
#idle_inhibitor,
|
||||||
|
#mpd {
|
||||||
|
padding: 0 10px;
|
||||||
|
margin: 0 4px;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
margin: 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If workspaces is the leftmost module, omit left margin */
|
||||||
|
.modules-left > widget:first-child > #workspaces {
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If workspaces is the rightmost module, omit right margin */
|
||||||
|
.modules-right > widget:last-child > #workspaces {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
background-color: #64727D;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.charging, #battery.plugged {
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #26A65B;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.critical:not(.charging) {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
color: #ffffff;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
|
||||||
|
label:focus {
|
||||||
|
background-color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu {
|
||||||
|
background-color: #2ecc71;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#memory {
|
||||||
|
background-color: #9b59b6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#disk {
|
||||||
|
background-color: #964B00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
background-color: #2980b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network.disconnected {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio {
|
||||||
|
background-color: #f1c40f;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio.muted {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media {
|
||||||
|
background-color: #66cc99;
|
||||||
|
color: #2a5c45;
|
||||||
|
min-width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media.custom-spotify {
|
||||||
|
background-color: #66cc99;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-media.custom-vlc {
|
||||||
|
background-color: #ffa000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature {
|
||||||
|
background-color: #f0932b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#temperature.critical {
|
||||||
|
background-color: #eb4d4b;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
background-color: #2980b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor {
|
||||||
|
background-color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
#idle_inhibitor.activated {
|
||||||
|
background-color: #ecf0f1;
|
||||||
|
color: #2d3436;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd {
|
||||||
|
background-color: #66cc99;
|
||||||
|
color: #2a5c45;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.disconnected {
|
||||||
|
background-color: #f53c3c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.stopped {
|
||||||
|
background-color: #90b1b1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mpd.paused {
|
||||||
|
background-color: #51a37a;
|
||||||
|
}
|
||||||
|
|
||||||
|
#language {
|
||||||
|
background: #00b093;
|
||||||
|
color: #740864;
|
||||||
|
padding: 0 5px;
|
||||||
|
margin: 0 5px;
|
||||||
|
min-width: 16px;
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
/etc/nixos/hardware-configuration.nix
|
||||||
|
../../profiles/desktop.nix
|
||||||
|
../../profiles/communication.nix
|
||||||
|
../../profiles/development.nix
|
||||||
|
../../profiles/notebook.nix
|
||||||
|
../../profiles/hardware.nix
|
||||||
|
../../profiles/security.nix
|
||||||
|
../../profiles/personal.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use GRUB 2 boot loader
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.version = 2;
|
||||||
|
boot.loader.grub.efiSupport = true;
|
||||||
|
boot.loader.grub.device = "/dev/sda";
|
||||||
|
boot.loader.grub.enableCryptodisk = true;
|
||||||
|
boot.loader.eif.canTouchEfiVariables = true;
|
||||||
|
boot.loader.eif.efiSysMountPoint = "/boot/efi";
|
||||||
|
boot.initrd.availableKernelModuels = [
|
||||||
|
"aes_x86_64"
|
||||||
|
"aesni_intel"
|
||||||
|
"cryptd"
|
||||||
|
];
|
||||||
|
|
||||||
|
# networking
|
||||||
|
networking = {
|
||||||
|
hostName = "thehill";
|
||||||
|
|
||||||
|
wireless.enable = true;
|
||||||
|
useDHCP = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# video drivers
|
||||||
|
hardware.opengl.enable = true;
|
||||||
|
hardware.opengl.extraPackages = [
|
||||||
|
amdvlk
|
||||||
|
pkgs.vaapiIntel
|
||||||
|
pkgs.libvdpau-va-gl
|
||||||
|
pkgs.vaapiVdpau
|
||||||
|
pkgs.intel-ocl
|
||||||
|
];
|
||||||
|
environment.variables.VK_ICD_FILENAMES =
|
||||||
|
"/run/opengl-driver/share/vulkan/icd.d/amd_icd64.json";
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
{ config, pkgs, libs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
"../services/grub.nix"
|
||||||
|
"../services/ntp.nix"
|
||||||
|
"../services/dns.nix"
|
||||||
|
"../services/localization.nix"
|
||||||
|
];
|
||||||
|
|
||||||
|
# mount tmpfs on /tmp
|
||||||
|
boot.tmpOnTmpfs = lib.mkDefault true;
|
||||||
|
|
||||||
|
# show IP on login screen
|
||||||
|
environment.etc."issue.d/ip.issue".text = "\\4\n";
|
||||||
|
networking.dhcpcd.runHook = "${pkgs.utillinux}/bin/agetty --reload";
|
||||||
|
|
||||||
|
# common user configuration
|
||||||
|
users.mutableUsers = false;
|
||||||
|
|
||||||
|
# install basic packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
htop
|
||||||
|
iotop
|
||||||
|
iftop
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
tcpdump
|
||||||
|
telnet
|
||||||
|
whois
|
||||||
|
file
|
||||||
|
lsof
|
||||||
|
inotify-tools
|
||||||
|
strace
|
||||||
|
gdb
|
||||||
|
xz
|
||||||
|
lz4
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
rsync
|
||||||
|
tealdeer
|
||||||
|
cheat
|
||||||
|
tmux
|
||||||
|
tree
|
||||||
|
dfc
|
||||||
|
pwgen
|
||||||
|
mkpasswd
|
||||||
|
jq
|
||||||
|
gitAndTools.gitFull
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.bash.enableCompletion = true;
|
||||||
|
|
||||||
|
system.copySystemConfiguration = true;
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# irc
|
||||||
|
irssi
|
||||||
|
# matrix
|
||||||
|
#element-desktop
|
||||||
|
# messengers
|
||||||
|
discord
|
||||||
|
# gnupg
|
||||||
|
gpa
|
||||||
|
# rss
|
||||||
|
newsboat
|
||||||
|
# video
|
||||||
|
mpv
|
||||||
|
youtube-dl
|
||||||
|
];
|
||||||
|
|
||||||
|
# setup newsboat
|
||||||
|
programs.newsboat = {
|
||||||
|
enable = true;
|
||||||
|
autoReload = yes;
|
||||||
|
reloadThreads = 4;
|
||||||
|
extraConfig = $'''
|
||||||
|
bind-key j down feedlist
|
||||||
|
bind-key k up feedlist
|
||||||
|
bind-key j next articlelist
|
||||||
|
bind-key k prev articlelist
|
||||||
|
bind-key J next-feed articlelist
|
||||||
|
bind-key K prev-feed articlelist
|
||||||
|
bind-key j down article
|
||||||
|
bind-key k up article
|
||||||
|
|
||||||
|
macro m set browser "mpv --ytdl %u --profile=360p > /dev/null &"; open-in-browser ; set browser "lynx -nocolor"
|
||||||
|
macro a set browser "echo %u | xclip -sel clip"; open-in-browser ; set browser "lynx -nocolor"
|
||||||
|
macro v set browser "curl %u | feh - &"; open-in-browser ; set browser "lynx -nocolor"
|
||||||
|
|
||||||
|
delete-played-files no
|
||||||
|
download-path "~/dox/pod/%h/%n"
|
||||||
|
max-downloads 4
|
||||||
|
player "nvlc"
|
||||||
|
color listfocus white black bold
|
||||||
|
color listfocus_unread white black bold
|
||||||
|
color info white black bold
|
||||||
|
|
||||||
|
unbind-key C feedlist
|
||||||
|
confirm-exit no
|
||||||
|
cleanup-on-quit no
|
||||||
|
$''';
|
||||||
|
urls = [
|
||||||
|
{ tags = [ "XKCD" ]; url = "https://xkcd.com/atom.xml"; }
|
||||||
|
{ tags = [ "Linux Journal" ]; url =
|
||||||
|
"https://www.linuxjournal.com/news.rss"; }
|
||||||
|
{ tags = [ "ItsFOSS" ]; url = "https://itsfoss.com/feed"; }
|
||||||
|
{ tags = [ "Opensource News" ]; url =
|
||||||
|
"https://opensource.org/news.xml"; }
|
||||||
|
{ tags = [ "WeLiveSecurity" ]; url =
|
||||||
|
"https://www.welivesecurity.com/feed"; }
|
||||||
|
{ tags = [ "ItsFOSS" ]; url = "https://itsfoss.com/feed"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,363 @@
|
||||||
|
{ config= pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
"./common.nix"
|
||||||
|
"../services/fonts"
|
||||||
|
"../users/sisyphus/base.nix"
|
||||||
|
];
|
||||||
|
|
||||||
|
# set up NUR
|
||||||
|
nixpkgs.config.packageOverrides = pkgs: {
|
||||||
|
nur = import (builtins.fetchTarball
|
||||||
|
"https://github.com/nix-community/NUR/archive/master.tar.gz") {
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# enable boot splash
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
|
||||||
|
# setup sway
|
||||||
|
wayland.windowManager.sway.enable = true;
|
||||||
|
programs.sway = {
|
||||||
|
enable = true;
|
||||||
|
wrapperFeatures.gtk = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
swaylock
|
||||||
|
swayidle
|
||||||
|
wl-clipboard
|
||||||
|
mako
|
||||||
|
alacritty
|
||||||
|
bemenu
|
||||||
|
wf-recorder
|
||||||
|
flashfocus
|
||||||
|
autotiling
|
||||||
|
waybar
|
||||||
|
kanshi
|
||||||
|
xwayland
|
||||||
|
];
|
||||||
|
extraOptions = [
|
||||||
|
"--my-next-gpu-wont-be-nvidia"
|
||||||
|
];
|
||||||
|
extraSessionCommands = ''
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
# needs qt5.qtwayland in systemPackages
|
||||||
|
export QT_QPA_PLATFORM=wayland
|
||||||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||||
|
# Fix for some Java AWT applications (e.g. Android Studio),
|
||||||
|
# use this if they aren't displayed properly:
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [ wl-clipboard ];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
gtk-engine-murrine
|
||||||
|
gtk_engines
|
||||||
|
gsettings-desktop-schemas
|
||||||
|
lxappearance
|
||||||
|
];
|
||||||
|
programs.qt5ct.enable = true;
|
||||||
|
systemd.user.services.swayidle = {
|
||||||
|
description = "Idle Manager for Wayland";
|
||||||
|
documentation = [ "man:swayidle(1)" ];
|
||||||
|
wantedBy = [ "sway-session.target" ];
|
||||||
|
partOf = [ "graphical-session.target" ];
|
||||||
|
path = [ pkgs.bash ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = '' ${pkgs.swayidle}/bin/swayidle -w -d \
|
||||||
|
timeout 300 '${pkgs.sway}/bin/swaymsg "output * dpms off"' \
|
||||||
|
resume '${pkgs.sway}/bin/swaymsg "output * dpms on"'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Here we but a shell script into path, which lets us start sway.service (after importing the environment of the login shell).
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
(
|
||||||
|
pkgs.writeTextFile {
|
||||||
|
name = "startsway";
|
||||||
|
destination = "/bin/startsway";
|
||||||
|
executable = true;
|
||||||
|
text = ''
|
||||||
|
#! ${pkgs.bash}/bin/bash
|
||||||
|
|
||||||
|
# first import environment variables from the login manager
|
||||||
|
systemctl --user import-environment
|
||||||
|
# then start the service
|
||||||
|
exec systemctl --user start sway.service
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
systemd.user.targets.sway-session = {
|
||||||
|
description = "Sway compositor session";
|
||||||
|
documentation = [ "man:systemd.special(7)" ];
|
||||||
|
bindsTo = [ "graphical-session.target" ];
|
||||||
|
wants = [ "graphical-session-pre.target" ];
|
||||||
|
after = [ "graphical-session-pre.target" ];
|
||||||
|
};
|
||||||
|
systemd.user.services.sway = {
|
||||||
|
description = "Sway - Wayland window manager";
|
||||||
|
documentation = [ "man:sway(5)" ];
|
||||||
|
bindsTo = [ "graphical-session.target" ];
|
||||||
|
wants = [ "graphical-session-pre.target" ];
|
||||||
|
after = [ "graphical-session-pre.target" ];
|
||||||
|
# We explicitly unset PATH here, as we want it to be set by
|
||||||
|
# systemctl --user import-environment in startsway
|
||||||
|
environment.PATH = lib.mkForce null;
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.dbus}/bin/dbus-run-session ${pkgs.sway}/bin/sway --debug
|
||||||
|
'';
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
|
TimeoutStopSec = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.redshift = {
|
||||||
|
enable = true;
|
||||||
|
# Redshift with wayland support isn't present in nixos-19.09 atm. You have to cherry-pick the commit from https://github.com/NixOS/nixpkgs/pull/68285 to do that.
|
||||||
|
package = pkgs.redshift-wlr;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.waybar.enable = true;
|
||||||
|
|
||||||
|
systemd.user.services.kanshi = {
|
||||||
|
description = "Kanshi output autoconfig ";
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
partOf = [ "graphical-session.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
# kanshi doesn't have an option to specifiy config file yet, so it looks
|
||||||
|
# at .config/kanshi/config
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.kanshi}/bin/kanshi
|
||||||
|
'';
|
||||||
|
RestartSec = 5;
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# setup firefox
|
||||||
|
program.firefox = {
|
||||||
|
enable = true;
|
||||||
|
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
privacy-badger
|
||||||
|
CookieAutoDelete
|
||||||
|
CanvasBlocker
|
||||||
|
uBlock
|
||||||
|
https-everywhere
|
||||||
|
cookiemaster
|
||||||
|
vimium-c
|
||||||
|
darkreader
|
||||||
|
treestyletab
|
||||||
|
];
|
||||||
|
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
|
||||||
|
forceWayland = true;
|
||||||
|
profiles.sisyphus = {
|
||||||
|
id = 0;
|
||||||
|
isDefault = true;
|
||||||
|
name = "sisyphus";
|
||||||
|
settings = {
|
||||||
|
"app.normandy.api_url" = "";
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
"app.update.auto" = false;
|
||||||
|
"beacon.enabled" = false;
|
||||||
|
"breakpad.reportURL" = "";
|
||||||
|
"browser.aboutConfig.showWarning" = false;
|
||||||
|
"browser.cache.offline.enable" = false;
|
||||||
|
"browser.crashReports.unsubmittedCheck.autoSubmit" = false;
|
||||||
|
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||||
|
"browser.crashReports.unsubmittedCheck.enabled" = false;
|
||||||
|
"browser.disableResetPrompt" = true;
|
||||||
|
"browser.newtab.preload" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||||
|
"browser.newtabpage.enabled" = false;
|
||||||
|
"browser.newtabpage.enhanced" = false;
|
||||||
|
"browser.newtabpage.introShown" = true;
|
||||||
|
"browser.safebrowsing.appRepURL" = "";
|
||||||
|
"browser.safebrowsing.blockedURIs.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.url" = "";
|
||||||
|
"browser.safebrowsing.enabled" = false;
|
||||||
|
"browser.safebrowsing.malware.enabled" = false;
|
||||||
|
"browser.safebrowsing.phishing.enabled" = false;
|
||||||
|
"browser.search.suggest.enabled" = false;
|
||||||
|
"browser.selfsupport.url" = "";
|
||||||
|
"browser.send_pings" = false;
|
||||||
|
"browser.sessionstore.privacy_level" = 2;
|
||||||
|
"browser.shell.checkDefaultBrowser" = false;
|
||||||
|
"browser.startup.homepage_override.mstone" = "ignore";
|
||||||
|
"browser.tabs.crashReporting.sendReport" = false;
|
||||||
|
"browser.urlbar.speculativeConnect.enabled" = false;
|
||||||
|
"browser.urlbar.trimURLs" = false;
|
||||||
|
"datareporting.healthreport.service.enabled" = false;
|
||||||
|
"datareporting.healthreport.uploadEnabled" = false;
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
"device.sensors.ambientLight.enabled" = false;
|
||||||
|
"device.sensors.enabled" = false;
|
||||||
|
"device.sensors.motion.enabled" = false;
|
||||||
|
"device.sensors.orientation.enabled" = false;
|
||||||
|
"device.sensors.proximity.enabled" = false;
|
||||||
|
"dom.battery.enabled" = false;
|
||||||
|
"dom.event.clipboardevents.enabled" = false;
|
||||||
|
"dom.webaudio.enabled" = false;
|
||||||
|
"experiments.activeExperiment" = false;
|
||||||
|
"experiments.enabled" = false;
|
||||||
|
"experiments.manifest.uri" = "";
|
||||||
|
"experiments.supported" = false;
|
||||||
|
"extensions.CanvasBlocker@kkapsner.de.whiteList" = "";
|
||||||
|
"extensions.ClearURLs@kevinr.whiteList" = "";
|
||||||
|
"extensions.Decentraleyes@ThomasRientjes.whiteList" = "";
|
||||||
|
"extensions.TemporaryContainers@stoically.whiteList" = "";
|
||||||
|
"extensions.autoDisableScopes" = 14;
|
||||||
|
"extensions.getAddons.cache.enabled" = false;
|
||||||
|
"extensions.getAddons.showPane" = false;
|
||||||
|
"extensions.greasemonkey.stats.optedin" = false;
|
||||||
|
"extensions.greasemonkey.stats.url" = "";
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
"extensions.shield-recipe-client.api_url" = "";
|
||||||
|
"extensions.shield-recipe-client.enabled" = false;
|
||||||
|
"extensions.webservice.discoverURL" = "";
|
||||||
|
"media.autoplay.default" = 1;
|
||||||
|
"media.autoplay.enabled" = false;
|
||||||
|
"media.eme.enabled" = false;
|
||||||
|
"media.gmp-widevinecdm.enabled" = false;
|
||||||
|
"media.navigator.enabled" = false;
|
||||||
|
"media.peerconnection.enabled" = false;
|
||||||
|
"media.video_stats.enabled" = false;
|
||||||
|
"network.allow-experiments" = false;
|
||||||
|
"network.captive-portal-service.enabled" = false;
|
||||||
|
"network.cookie.cookieBehavior" = 1;
|
||||||
|
"network.dns.disablePrefetch" = true;
|
||||||
|
"network.dns.disablePrefetchFromHTTPS" = true;
|
||||||
|
"network.http.referer.spoofSource" = true;
|
||||||
|
"network.http.speculative-parallel-limit" = 0;
|
||||||
|
"network.predictor.enable-prefetch" = false;
|
||||||
|
"network.predictor.enabled" = false;
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
"network.trr.mode" = 5;
|
||||||
|
"privacy.donottrackheader.enabled" = true;
|
||||||
|
"privacy.donottrackheader.value" = 1;
|
||||||
|
"privacy.firstparty.isolate" = true;
|
||||||
|
"privacy.resistFingerprinting" = true;
|
||||||
|
"privacy.trackingprotection.cryptomining.enabled" = true;
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.trackingprotection.fingerprinting.enabled" = true;
|
||||||
|
"privacy.trackingprotection.pbmode.enabled" = true;
|
||||||
|
"privacy.usercontext.about_newtab_segregation.enabled" = true;
|
||||||
|
"security.ssl.disable_session_identifiers" = true;
|
||||||
|
"services.sync.prefs.sync.browser.newtabpage.activity-stream.showSponsoredTopSite" = false;
|
||||||
|
"signon.autofillForms" = false;
|
||||||
|
"toolkit.telemetry.archive.enabled" = false;
|
||||||
|
"toolkit.telemetry.bhrPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.cachedClientID" = "";
|
||||||
|
"toolkit.telemetry.enabled" = false;
|
||||||
|
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
||||||
|
"toolkit.telemetry.hybridContent.enabled" = false;
|
||||||
|
"toolkit.telemetry.newProfilePing.enabled" = false;
|
||||||
|
"toolkit.telemetry.prompted" = 2;
|
||||||
|
"toolkit.telemetry.rejected" = true;
|
||||||
|
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
||||||
|
"toolkit.telemetry.server" = "";
|
||||||
|
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
||||||
|
"toolkit.telemetry.unified" = false;
|
||||||
|
"toolkit.telemetry.unifiedIsOptIn" = false;
|
||||||
|
"toolkit.telemetry.updatePing.enabled" = false;
|
||||||
|
"webgl.disabled" = true;
|
||||||
|
"webgl.renderer-string-override" = " ";
|
||||||
|
"webgl.vendor-string-override" = " ";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.pipewire.enable = true;
|
||||||
|
environment.sessionVariables = {
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
|
};
|
||||||
|
home.sessionVariables = {
|
||||||
|
MOZ_ENABLE_WAYLAND = 1;
|
||||||
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
|
};
|
||||||
|
xdg = {
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
gtkUsePortal = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
extensions = [
|
||||||
|
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
|
||||||
|
"gcbommkclmclpchllfjekcdonpmejbdp" # HTTPS Everywhere
|
||||||
|
];
|
||||||
|
extraOpts = {
|
||||||
|
"BrowserSignin" = 0;
|
||||||
|
"SyncDisabled" = true;
|
||||||
|
"PasswordManagerEnabled" = false;
|
||||||
|
"AutofillAddressEnabled" = false;
|
||||||
|
"AutofillCreditCardEnabled" = false;
|
||||||
|
"BuiltInDnsClientEnabled" = ffalse;
|
||||||
|
"MetricsReportingEnabled" = false;
|
||||||
|
"SearchSuggestEnabled" = false;
|
||||||
|
"AlternateErrorPagesEnabled" = false;
|
||||||
|
"SpellcheckEnabled" = true;
|
||||||
|
"SpellcheckLanguage" = [ "en-US" ]
|
||||||
|
"CloudPrintSubmitEnabled" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# setup zathura
|
||||||
|
programs.zathura.enable = true;
|
||||||
|
programs.zathura.options = {
|
||||||
|
default-bg = "#000000";
|
||||||
|
default-fg = "#FFFFFF";
|
||||||
|
};
|
||||||
|
|
||||||
|
# setup fish
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
# setup tmux
|
||||||
|
programs.tmux.enable = true;
|
||||||
|
programs.tmux.extraConfig = "
|
||||||
|
unbind C-b
|
||||||
|
set-option -g prefix C-a
|
||||||
|
bind-key C-a send-prefix
|
||||||
|
|
||||||
|
bind | split-window -h
|
||||||
|
bind - split-window -v
|
||||||
|
unbind '\"'
|
||||||
|
unbind %
|
||||||
|
|
||||||
|
bind -n M-h select-pane -L
|
||||||
|
bind -n M-l select-pane -R
|
||||||
|
bind -n M-k select-pane -U
|
||||||
|
bind -n M-j select-pane -D
|
||||||
|
|
||||||
|
set -g mouse on
|
||||||
|
|
||||||
|
set-option -g allow-rename on
|
||||||
|
|
||||||
|
bind-key r command-prompt -I \"#W\" "rename-window '%%'"
|
||||||
|
|
||||||
|
set -g default-terminal \"screen-256color\"";
|
||||||
|
|
||||||
|
enviornment.systemPackges = with pkgs; [
|
||||||
|
chromium
|
||||||
|
firefox
|
||||||
|
libreoffice
|
||||||
|
neofetch
|
||||||
|
flameshot
|
||||||
|
zathura
|
||||||
|
fish
|
||||||
|
];
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
pipenv
|
||||||
|
python
|
||||||
|
gcc
|
||||||
|
rustup
|
||||||
|
cargo
|
||||||
|
|
||||||
|
emacs
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
|
||||||
|
# setup htop
|
||||||
|
programs.htop.enable = true;
|
||||||
|
programs.htop.enableMouse = true;
|
||||||
|
programs.htop.hideThreads = true;
|
||||||
|
programs.htop.shadowOtherUsers = true;
|
||||||
|
programs.htop.showCpuFrequency = true;
|
||||||
|
programs.htop.treeView = true;
|
||||||
|
programs.htop.vimMode = true;
|
||||||
|
|
||||||
|
# setup emacs
|
||||||
|
programs.emacs.enable = true;
|
||||||
|
programs.emacs.package = "emacs";
|
||||||
|
programs.emacs.extraPackages = "epkgs: [ epkgs.use-package ]"
|
||||||
|
|
||||||
|
# setup neovim
|
||||||
|
programs.neovim.enable = true;
|
||||||
|
programs.neovim.viAlias = true;
|
||||||
|
programs.neovim.vimAlias = true;
|
||||||
|
programs.neovim.vimdiffAlias = true;
|
||||||
|
programs.neovim.configure = {
|
||||||
|
customRC = $'''
|
||||||
|
filetype plugin indent on
|
||||||
|
|
||||||
|
set t_Co =256
|
||||||
|
filetype plugin indent on
|
||||||
|
|
||||||
|
" Setup theme.
|
||||||
|
set t_Co=256
|
||||||
|
"colorscheme wal
|
||||||
|
let g:airline_themes='onedark'
|
||||||
|
|
||||||
|
" General
|
||||||
|
set textwidth=80
|
||||||
|
let mapleader = " "
|
||||||
|
set clipboard+=unnamed
|
||||||
|
set autoread
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set ignorecase
|
||||||
|
set smartcase
|
||||||
|
set incsearch
|
||||||
|
set magic
|
||||||
|
|
||||||
|
" Appearance
|
||||||
|
set number
|
||||||
|
set nowrap
|
||||||
|
set showbreak=↪
|
||||||
|
" toggle invisible characters
|
||||||
|
set list
|
||||||
|
"set listchars=tab:→\ ,eol:¬
|
||||||
|
"set listchars=tab:→\ ,eol:¬,trail:⋅,extends:❯,precedes:❮,space:·
|
||||||
|
set list
|
||||||
|
set ttyfast
|
||||||
|
|
||||||
|
" Leader keys
|
||||||
|
map <leader>e :bufdo e!<CR>
|
||||||
|
nnoremap <silent> <leader> :WhichKey '<Space>'<CR>
|
||||||
|
|
||||||
|
" Custom settings.
|
||||||
|
set mouse=a
|
||||||
|
set encoding=utf-8
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set timeoutlen=50
|
||||||
|
syntax on
|
||||||
|
set rnu
|
||||||
|
|
||||||
|
$''';
|
||||||
|
packages.myVimPackage = with pkgs.vimPlugins; {
|
||||||
|
start = [ ctrlp vimwiki vim-startify auto-pairs ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
lshw
|
||||||
|
usbutils
|
||||||
|
pciutils
|
||||||
|
pactl
|
||||||
|
];
|
||||||
|
programs.light.enable = true;
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
powerManagement.enable = true;
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, pkgs, libs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ "../users/sisyphus/personal.nix" ];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
virtmanager
|
||||||
|
]
|
||||||
|
|
||||||
|
virtualisation.docker.enable = true;
|
||||||
|
|
||||||
|
virtualisation.libvirtd = {
|
||||||
|
enable = true;
|
||||||
|
qemuPackage = pkgs.qemu_kvm;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,64 @@
|
||||||
|
{ config, pkgs, libs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Setup firewall
|
||||||
|
networking.firewall.enable = mkDefault true;
|
||||||
|
networking.firewall.package = mkDefault "pkgs.ufw";
|
||||||
|
networking.firewall.allowPing = mkDefault false;
|
||||||
|
|
||||||
|
# Apparmor
|
||||||
|
security.apparmor.enable = mkDefault true;
|
||||||
|
security.apparmor.confineSUIDApplications = mkDefault true;
|
||||||
|
security.audit.enable = mkDefault true;
|
||||||
|
security.auditd.enable = mkDefault true;
|
||||||
|
security.chromiumSuidSandbox.enable = mkDefault true;
|
||||||
|
|
||||||
|
# General Hardening
|
||||||
|
security.forcePageTableIsolation = mkDefault true;
|
||||||
|
security.hideProcessInformation = mkDefault true;
|
||||||
|
security.sudo.enable = mkDefault true;
|
||||||
|
|
||||||
|
# Kernel Hardening
|
||||||
|
boot.kernelPackages = mkDefault pkgs.linuxPackages_hardened;
|
||||||
|
security.protectKernelImage = mkDefault true;
|
||||||
|
nix.allowedUsers = mkDefault [ "@users" ];
|
||||||
|
environment.memoryAllocator.provider = mkDefault "scudo";
|
||||||
|
environment.variables.SCUDO_OPTIONS = mkDefault "ZeroContents=1";
|
||||||
|
security.lockKernelModules = mkDefault true;
|
||||||
|
# This is required by podman to run containers in rootless mode.
|
||||||
|
security.unprivilegedUsernsClone = mkDefault config.virtualisation.containers.enable;
|
||||||
|
security.virtualisation.flushL1DataCache = mkDefault "always";
|
||||||
|
boot.kernelParams = [
|
||||||
|
"slub_debug=FZP"
|
||||||
|
"page_poison=1"
|
||||||
|
"page_alloc.shuffle=1"
|
||||||
|
];
|
||||||
|
boot.kernel.sysctl."kernel.yama.ptrace_scope" = mkOverride 500 1;
|
||||||
|
boot.kernel.sysctl."kernel.kptr_restrict" = mkOverride 500 2;
|
||||||
|
boot.kernel.sysctl."net.core.bpf_jit_enable" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."kernel.ftrace_enabled" = mkDefault false;
|
||||||
|
# Enable strict reverse path filtering (that is, do not attempt to route
|
||||||
|
# packets that "obviously" do not belong to the iface's network; dropped
|
||||||
|
# packets are logged as martians).
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.all.log_martians" = mkDefault true;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.all.rp_filter" = mkDefault "1";
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.default.log_martians" = mkDefault true;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.default.rp_filter" = mkDefault "1";
|
||||||
|
# Ignore broadcast ICMP (mitigate SMURF)
|
||||||
|
boot.kernel.sysctl."net.ipv4.icmp_echo_ignore_broadcasts" = mkDefault true;
|
||||||
|
# Ignore incoming ICMP redirects (note: default is needed to ensure that the
|
||||||
|
# setting is applied to interfaces added after the sysctls are set)
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.all.accept_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.all.secure_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.default.accept_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.default.secure_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv6.conf.all.accept_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv6.conf.default.accept_redirects" = mkDefault false;
|
||||||
|
|
||||||
|
# Ignore outgoing ICMP redirects (this is ipv4 only)
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.all.send_redirects" = mkDefault false;
|
||||||
|
boot.kernel.sysctl."net.ipv4.conf.default.send_redirects" = mkDefault false;
|
||||||
|
|
||||||
|
# Sandboxing
|
||||||
|
programs.firejail.enable = true;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking.extraHosts = fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts";
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ "../users/sisyphus/base.nix" ];
|
||||||
|
xdg.configFile."sway/config".source = environment.variables.DOTFILES_LOC
|
||||||
|
+ "sway/config";
|
||||||
|
|
||||||
|
xdg.configFile."emacs".source = environment.variables.DOTFILES_LOC +
|
||||||
|
"emacs";
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"xdg/waybar/config".source = environment.variables.DOTFILES_LOC
|
||||||
|
+ "waybar/config";
|
||||||
|
"xdg/waybar/style.css".source = environment.variables.DOTFILES_LOC
|
||||||
|
+ "waybar/style.css";
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
fonts = {
|
||||||
|
enableDefaultFonts = true;
|
||||||
|
enableFontDir = true;
|
||||||
|
|
||||||
|
fonts = with pkgs; [
|
||||||
|
fira-mono
|
||||||
|
libertine
|
||||||
|
open-sans
|
||||||
|
twemoji-color-font
|
||||||
|
liberation_ttf
|
||||||
|
];
|
||||||
|
|
||||||
|
fontconfig = {
|
||||||
|
enable = true;
|
||||||
|
antialias = true;
|
||||||
|
defaultFonts = {
|
||||||
|
monospace = [ "Fira Mono" ];
|
||||||
|
serif = [ "Linux Libertine" ];
|
||||||
|
sansSerif = [ "Open Sans" ];
|
||||||
|
emoji = [ "Twitter Color Emoji" ];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
boot.loader.grub.enable = lib.mkDefault true;
|
||||||
|
boot.loader.grub.version = lib.mkDefault 2;
|
||||||
|
boot.loader.grub.memtest86.enable = lib.mkDefault false;
|
||||||
|
boot.loader.timeout = lib.mkDefault 2;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
i18n.defaultlocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
console = {
|
||||||
|
keyMap = "us";
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Asia/Riyadh";
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
nix = {
|
||||||
|
useSandbox = true;
|
||||||
|
trustedUsers = [
|
||||||
|
"root"
|
||||||
|
"@wheel"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.ntp.enable = true;
|
||||||
|
|
||||||
|
services.timesyncd = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
servers = [
|
||||||
|
"0.asia.pool.ntp.org"
|
||||||
|
"1.asia.pool.ntp.org"
|
||||||
|
"2.asia.pool.ntp.org"
|
||||||
|
"3.asia.pool.ntp.org"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ <home-manager/nixos> ];
|
||||||
|
|
||||||
|
users.users.sisyphus = {
|
||||||
|
isNormalUser = true;
|
||||||
|
home = "/home/sisyphus";
|
||||||
|
description = "";
|
||||||
|
extraGroups = [ "wheel" "networkmanager" "audio" "video" "docker" "libvirtd" ];
|
||||||
|
hashedPassword =
|
||||||
|
"$6$UElxymiLttxtbHbX$Jt.lWxlWc29MvJNYa97lB57iiMQdhhtDMpXXlRyP.3oFlkgfihhNHy9MRFdvMDCgKo.rXenSamIZyC.mEb/o20";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
|
||||||
|
home-manager.users.sisyphus = { pkgs, ... }: {
|
||||||
|
programs = {
|
||||||
|
bash = {
|
||||||
|
enable = true;
|
||||||
|
historyControl = [ "ignoredups" "ignorespace" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh.enable = true;
|
||||||
|
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# set up xdg variables
|
||||||
|
xdg.enable = true;
|
||||||
|
xdg.configHome = "~/.config";
|
||||||
|
xdg.dataHome = "~/.local/share";
|
||||||
|
xdg.cacheHome = "~/.cache";
|
||||||
|
|
||||||
|
xdg.userDirs.enable = true;
|
||||||
|
xdg.userDirs.createDirectories = true;
|
||||||
|
xdg.userDirs.desktop = "\$HOME/desk";
|
||||||
|
xdg.userDirs.documents = "\$HOME/dox";
|
||||||
|
xdg.userDirs.download = "\$HOME/dl";
|
||||||
|
xdg.userDirs.extraConfig = "\$HOME/misc";
|
||||||
|
xdg.userDirs.music = "\$HOME/muz";
|
||||||
|
xdg.userDirs.pictures = "\$HOME/pix";
|
||||||
|
xdg.userDirs.publicShare = "\$HOME/pub";
|
||||||
|
xdg.userDirs.templates = "\$HOME/templ";
|
||||||
|
xdg.userDirs.videos = "\$HOME/vidz";
|
||||||
|
|
||||||
|
# ~/ clean-up & generic env vars
|
||||||
|
environment = let config_loc = "~/.config/" in {
|
||||||
|
variables.EDITOR="/usr/share/dotfiles";
|
||||||
|
variables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
VISUAL = "emacs";
|
||||||
|
TERMINAL = "alacritty";
|
||||||
|
BROWSER = "firefox";
|
||||||
|
|
||||||
|
LESSHISTFILE = "-";
|
||||||
|
WGETRC = config_loc + "wgetrc";
|
||||||
|
PASSWORD_STORE_DIR = config_loc + "pass";
|
||||||
|
GNUPGHOME = config_loc + "gnupg";
|
||||||
|
|
||||||
|
DOTFILES_LOC = "/usr/share/dotfiles/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# aliases
|
||||||
|
home-manager.users.sisyphus = { pkgs, ... }: {
|
||||||
|
programs.bash.shellAliases = {
|
||||||
|
config = "git --git-dir=$HOME/.config/dotfiles
|
||||||
|
--work-tree=$HOME";
|
||||||
|
myip = "curl ipinfo.io/ip";
|
||||||
|
cp = "cp -iv";
|
||||||
|
rm = "rm -iv";
|
||||||
|
ll = "ls -lhA";
|
||||||
|
g = "g";
|
||||||
|
e = "$EDITOR";
|
||||||
|
v = "$VISUAL";
|
||||||
|
".." = "cd ..";
|
||||||
|
};
|
||||||
|
programs.fish.shellAliases = {
|
||||||
|
config = "git --git-dir=$HOME/.config/dotfiles
|
||||||
|
--work-tree=$HOME";
|
||||||
|
myip = "curl ipinfo.io/ip";
|
||||||
|
cp = "cp -iv";
|
||||||
|
rm = "rm -iv";
|
||||||
|
ll = "ls -lhA";
|
||||||
|
g = "g";
|
||||||
|
e = "$EDITOR";
|
||||||
|
v = "$VISUAL";
|
||||||
|
".." = "cd ..";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
{ config, pkgs, lib, ... }: {
|
||||||
|
imports = [ <home-manager/nixos> ];
|
||||||
|
|
||||||
|
home-manager.users.sisyphus = { pkgs, ... }: {
|
||||||
|
programs = {
|
||||||
|
obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs; [ obs-v4l2sink ];
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
userName = "ayham";
|
||||||
|
userEmail = "altffour@protonmail.com";
|
||||||
|
signing.key = "B4ADFA86EDF5CCE9";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# GPG
|
||||||
|
programs.gnupg.package = "pkgs.gnupg";
|
||||||
|
programs.gnupg.agent.enable = true;
|
||||||
|
programs.gnupg.agent.pinentryFlavor = "qt";
|
||||||
|
programs.gnupg.dirmngr.enable = true;
|
||||||
|
}
|
Loading…
Reference in New Issue