initial commit (because syncthing)
This commit is contained in:
commit
e8613514eb
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
result
|
||||||
|
*/result
|
15
README.md
Normal file
15
README.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Maddie's NixFiles
|
||||||
|
A Nix flake for my system configuration - WIP.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
- `./maddie` - A folder for my home-manager configs (aka my user)
|
||||||
|
- `./maddie/macos` - Specifically macOS (darwin) home configuration
|
||||||
|
- `./maddie/nixos` - Specifically NixOS home configuration
|
||||||
|
- `./maddie/common` - Home configuration available on all systems
|
||||||
|
- `./systems` - A folder for my system-wide configs
|
||||||
|
- `./systems/mmacbookpro/` - System configuration for my MacBook Pro (M.MacBookPro)
|
||||||
|
- `./systems/mdesktop` - System configuration for my desktop (M.Desktop)
|
||||||
|
- `overlays.nix` - A file for my nixpkgs overlays
|
||||||
|
|
||||||
|
## Many thanks
|
||||||
|
- ❤️ Thanks to @Minion3665 who helped me make this config
|
67
flake.lock
Normal file
67
flake.lock
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"darwin": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1700795494,
|
||||||
|
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
|
||||||
|
"owner": "LnL7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "LnL7",
|
||||||
|
"repo": "nix-darwin",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"home-manager": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702110869,
|
||||||
|
"narHash": "sha256-hgbzPjIMLYJf3Ekq9qZCpDcIZn1BZmOp7d6PMkIWknU=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"rev": "7db6291d95693374d408f4877c265ec7481f222b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "home-manager",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1701693815,
|
||||||
|
"narHash": "sha256-7BkrXykVWfkn6+c1EhFA3ko4MLi3gVG0p9G96PNnKTM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "09ec6a0881e1a36c29d67497693a67a16f4da573",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nixpkgs",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"darwin": "darwin",
|
||||||
|
"home-manager": "home-manager",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
81
flake.nix
Normal file
81
flake.nix
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
description = "Maddie's Nix configurations";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
# Home manager
|
||||||
|
home-manager.url = "github:nix-community/home-manager";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
darwin.url = "github:LnL7/nix-darwin";
|
||||||
|
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, home-manager, darwin }:
|
||||||
|
let
|
||||||
|
username = "maddie";
|
||||||
|
utils = import ./utils nixpkgs;
|
||||||
|
|
||||||
|
nixpkgs_x86_64 = import nixpkgs {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
config.allowUnsupportedSystem = false;
|
||||||
|
config.allowBroken = false;
|
||||||
|
config.permittedInsecurePackages = [
|
||||||
|
"libgcrypt-1.8.10"
|
||||||
|
"libxls-1.6.2"
|
||||||
|
];
|
||||||
|
overlays = import ./overlays.nix;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs_aarch64_darwin = import nixpkgs {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
config.allowUnsupportedSystem = false;
|
||||||
|
config.allowBroken = false;
|
||||||
|
overlays = import ./overlays.nix;
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs_aarch64_linux = import nixpkgs {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
config.allowUnsupportedSystem = false;
|
||||||
|
config.allowBroken = false;
|
||||||
|
overlays = import ./overlays.nix;
|
||||||
|
system = "aarch64-linux";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations."MDesktop" = nixpkgs.lib.nixosSystem
|
||||||
|
{
|
||||||
|
specialArgs = { inherit username; };
|
||||||
|
pkgs = nixpkgs_x86_64;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.users.${username}.imports = utils.nixFilesIn ./maddie/common ++ utils.nixFilesIn ./maddie/nixos;
|
||||||
|
home-manager.extraSpecialArgs = { inherit username; pkgs = nixpkgs_x86_64; };
|
||||||
|
}
|
||||||
|
] ++ utils.nixFilesIn ./systems/mdesktop;
|
||||||
|
};
|
||||||
|
|
||||||
|
darwinConfigurations."MMacBookPro" = darwin.lib.darwinSystem
|
||||||
|
{
|
||||||
|
pkgs = nixpkgs_aarch64_darwin;
|
||||||
|
specialArgs = { inherit username; };
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
modules = [
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.${username}.imports = utils.nixFilesIn ./maddie/common ++ utils.nixFilesIn ./maddie/macos;
|
||||||
|
home-manager.extraSpecialArgs = { inherit username; pkgs = nixpkgs_aarch64_darwin; };
|
||||||
|
}
|
||||||
|
] ++ utils.nixFilesIn ./systems/mmacbookpro;
|
||||||
|
};
|
||||||
|
|
||||||
|
formatter.x86_64-linux = nixpkgs_x86_64.legacyPackages.x86_64-linux.nixpkgs-fmt;
|
||||||
|
formatter.aarch64-darwin = nixpkgs_aarch64_darwin.legacyPackages.aarch64-darwin.nixpkgs-fmt;
|
||||||
|
formatter.aarch64-linux = nixpkgs_aarch64_linux.legacyPackages.aarch64-linux.nixpkgs-fmt;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
8
maddie/common/browser.nix
Normal file
8
maddie/common/browser.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
amfora
|
||||||
|
lynx
|
||||||
|
];
|
||||||
|
}
|
12
maddie/common/btop.nix
Normal file
12
maddie/common/btop.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.btop = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
color_theme = "TTY";
|
||||||
|
theme_background = false;
|
||||||
|
truecolor = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
maddie/common/code.nix
Normal file
7
maddie/common/code.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
go # Go
|
||||||
|
];
|
||||||
|
}
|
8
maddie/common/editor.nix
Normal file
8
maddie/common/editor.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Misc editors
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
vis
|
||||||
|
];
|
||||||
|
}
|
18
maddie/common/emacs.nix
Normal file
18
maddie/common/emacs.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
tree-sitter
|
||||||
|
emacs29
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile."emacs/init.el" = {
|
||||||
|
source = ./emacs/init.el;
|
||||||
|
};
|
||||||
|
xdg.configFile."emacs/early-init.el" = {
|
||||||
|
source = ./emacs/early-init.el;
|
||||||
|
};
|
||||||
|
xdg.configFile."emacs/emacs.png" = {
|
||||||
|
source = ./emacs/emacs.png;
|
||||||
|
};
|
||||||
|
}
|
1
maddie/common/emacs/.#init 2.el
Symbolic link
1
maddie/common/emacs/.#init 2.el
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
maddie@MMacBookPro.1240
|
0
maddie/common/emacs/early-init.el
Normal file
0
maddie/common/emacs/early-init.el
Normal file
BIN
maddie/common/emacs/emacs.png
Normal file
BIN
maddie/common/emacs/emacs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 141 KiB |
238
maddie/common/emacs/init.el
Normal file
238
maddie/common/emacs/init.el
Normal file
@ -0,0 +1,238 @@
|
|||||||
|
;; MELPA
|
||||||
|
(package-initialize)
|
||||||
|
(add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/"))
|
||||||
|
|
||||||
|
;; Evil
|
||||||
|
(use-package evil
|
||||||
|
:ensure t
|
||||||
|
:init
|
||||||
|
(setq evil-want-keybinding nil)
|
||||||
|
:config
|
||||||
|
(evil-set-undo-system 'undo-redo)
|
||||||
|
(evil-mode 1))
|
||||||
|
|
||||||
|
;; Evil collection
|
||||||
|
(use-package evil-collection
|
||||||
|
:ensure t
|
||||||
|
:after evil
|
||||||
|
:config
|
||||||
|
(setq evil-collection-mode-list '(dashboard dired))
|
||||||
|
(evil-collection-init))
|
||||||
|
|
||||||
|
;; Dashboard
|
||||||
|
(use-package dashboard
|
||||||
|
:ensure t
|
||||||
|
:init ;; tweak dashboard config before loading it
|
||||||
|
(setq dashboard-set-heading-icons t)
|
||||||
|
(setq dashboard-set-file-icons t)
|
||||||
|
(setq dashboard-banner-logo-title "Welcome back to Emacs, Maddie!")
|
||||||
|
(setq dashboard-startup-banner 'logo) ;; use standard emacs logo as banner
|
||||||
|
;;(setq dashboard-startup-banner "~/.config/emacs/emacs.png") ;; use custom image as banner
|
||||||
|
(setq dashboard-center-content nil) ;; set to 't' for centered content
|
||||||
|
(setq dashboard-items '((recents . 5)
|
||||||
|
(agenda . 5 )
|
||||||
|
(bookmarks . 3)
|
||||||
|
;; (projects . 3)
|
||||||
|
(registers . 3)))
|
||||||
|
:config
|
||||||
|
(dashboard-setup-startup-hook)
|
||||||
|
(dashboard-modify-heading-icons '((recents . "file-text")
|
||||||
|
(bookmarks . "book"))))
|
||||||
|
|
||||||
|
;; Command completion
|
||||||
|
(use-package vertico
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(vertico-mode 1))
|
||||||
|
|
||||||
|
;; Rust
|
||||||
|
(use-package rust-mode
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
;; Nix
|
||||||
|
(use-package nix-mode
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
;; Git
|
||||||
|
(use-package magit
|
||||||
|
:ensure t
|
||||||
|
:bind (("C-x g" . magit-status)
|
||||||
|
("C-x C-g" . magit-status)))
|
||||||
|
|
||||||
|
;; Markdown mode
|
||||||
|
(use-package markdown-mode
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
;; Treemacs
|
||||||
|
(use-package treemacs
|
||||||
|
:ensure t
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(with-eval-after-load 'winum
|
||||||
|
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
|
||||||
|
:config
|
||||||
|
(progn
|
||||||
|
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0)
|
||||||
|
treemacs-deferred-git-apply-delay 0.5
|
||||||
|
treemacs-directory-name-transformer #'identity
|
||||||
|
treemacs-display-in-side-window t
|
||||||
|
treemacs-eldoc-display 'simple
|
||||||
|
treemacs-file-event-delay 2000
|
||||||
|
treemacs-file-extension-regex treemacs-last-period-regex-value
|
||||||
|
treemacs-file-follow-delay 0.2
|
||||||
|
treemacs-file-name-transformer #'identity
|
||||||
|
treemacs-follow-after-init t
|
||||||
|
treemacs-expand-after-init t
|
||||||
|
treemacs-find-workspace-method 'find-for-file-or-pick-first
|
||||||
|
treemacs-git-command-pipe ""
|
||||||
|
treemacs-goto-tag-strategy 'refetch-index
|
||||||
|
treemacs-header-scroll-indicators '(nil . "^^^^^^")
|
||||||
|
treemacs-hide-dot-git-directory t
|
||||||
|
treemacs-indentation 2
|
||||||
|
treemacs-indentation-string " "
|
||||||
|
treemacs-is-never-other-window nil
|
||||||
|
treemacs-max-git-entries 5000
|
||||||
|
treemacs-missing-project-action 'ask
|
||||||
|
treemacs-move-forward-on-expand nil
|
||||||
|
treemacs-no-png-images nil
|
||||||
|
treemacs-no-delete-other-windows t
|
||||||
|
treemacs-project-follow-cleanup nil
|
||||||
|
treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory)
|
||||||
|
treemacs-position 'left
|
||||||
|
treemacs-read-string-input 'from-child-frame
|
||||||
|
treemacs-recenter-distance 0.1
|
||||||
|
treemacs-recenter-after-file-follow nil
|
||||||
|
treemacs-recenter-after-tag-follow nil
|
||||||
|
treemacs-recenter-after-project-jump 'always
|
||||||
|
treemacs-recenter-after-project-expand 'on-distance
|
||||||
|
treemacs-litter-directories '("/node_modules" "/.venv" "/.cask")
|
||||||
|
treemacs-project-follow-into-home nil
|
||||||
|
treemacs-show-cursor nil
|
||||||
|
treemacs-show-hidden-files t
|
||||||
|
treemacs-silent-filewatch nil
|
||||||
|
treemacs-silent-refresh nil
|
||||||
|
treemacs-sorting 'alphabetic-asc
|
||||||
|
treemacs-select-when-already-in-treemacs 'move-back
|
||||||
|
treemacs-space-between-root-nodes t
|
||||||
|
treemacs-tag-follow-cleanup t
|
||||||
|
treemacs-tag-follow-delay 1.5
|
||||||
|
treemacs-text-scale nil
|
||||||
|
treemacs-user-mode-line-format nil
|
||||||
|
treemacs-user-header-line-format nil
|
||||||
|
treemacs-wide-toggle-width 70
|
||||||
|
treemacs-width 35
|
||||||
|
treemacs-width-increment 1
|
||||||
|
treemacs-width-is-initially-locked t
|
||||||
|
treemacs-workspace-switch-cleanup nil)
|
||||||
|
|
||||||
|
(treemacs-resize-icons 22)
|
||||||
|
(treemacs-follow-mode t)
|
||||||
|
(treemacs-filewatch-mode t)
|
||||||
|
(treemacs-fringe-indicator-mode 'always)
|
||||||
|
(when treemacs-python-executable
|
||||||
|
(treemacs-git-commit-diff-mode t))
|
||||||
|
|
||||||
|
(treemacs-hide-gitignored-files-mode nil))
|
||||||
|
:bind
|
||||||
|
(:map global-map
|
||||||
|
("M-0" . treemacs-select-window)
|
||||||
|
("C-x t 1" . treemacs-delete-other-windows)
|
||||||
|
("C-x t t" . treemacs)
|
||||||
|
("C-x t d" . treemacs-select-directory)
|
||||||
|
("C-x t B" . treemacs-bookmark)
|
||||||
|
("C-x t C-t" . treemacs-find-file)
|
||||||
|
("C-x t M-t" . treemacs-find-tag)))
|
||||||
|
|
||||||
|
(use-package treemacs-evil
|
||||||
|
:after (treemacs evil)
|
||||||
|
:ensure t)
|
||||||
|
|
||||||
|
;; Keybindings
|
||||||
|
(use-package general
|
||||||
|
:ensure t
|
||||||
|
:config
|
||||||
|
(general-evil-setup t))
|
||||||
|
|
||||||
|
(nvmap :prefix "SPC"
|
||||||
|
"b b" '(ibuffer :which-key "Ibuffer")
|
||||||
|
"b c" '(clone-indirect-buffer-other-window :which-key "Clone indirect buffer other window")
|
||||||
|
"b k" '(kill-current-buffer :which-key "Kill current buffer")
|
||||||
|
"b n" '(next-buffer :which-key "Next buffer")
|
||||||
|
"b p" '(previous-buffer :which-key "Previous buffer")
|
||||||
|
"b B" '(ibuffer-list-buffers :which-key "Ibuffer list buffers")
|
||||||
|
"b K" '(kill-buffer :which-key "Kill buffer"))
|
||||||
|
|
||||||
|
;; Set backup and autosave directories
|
||||||
|
(setq backup-directory-alist
|
||||||
|
`(("." . "~/.local/share/emacs/backups")))
|
||||||
|
(setq auto-save-file-name-transforms
|
||||||
|
`((".*" "~/.local/share/emacs/auto-save-list/" t)))
|
||||||
|
|
||||||
|
;; Disable the bell
|
||||||
|
(setq visible-bell nil
|
||||||
|
ring-bell-function #'ignore)
|
||||||
|
|
||||||
|
;; Font
|
||||||
|
(set-face-attribute 'default nil
|
||||||
|
:font "Iosevka Nerd Font"
|
||||||
|
:height 150
|
||||||
|
:weight 'medium)
|
||||||
|
(add-to-list 'default-frame-alist '(font . "Iosevka Nerd Font-13"))
|
||||||
|
|
||||||
|
;; UI
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
(scroll-bar-mode -1)
|
||||||
|
(column-number-mode 1)
|
||||||
|
(global-display-line-numbers-mode 1)
|
||||||
|
(setq display-line-numbers-type 'relative)
|
||||||
|
(setq inhibit-startup-screen t)
|
||||||
|
(setq dired-listing-switches "-alh")
|
||||||
|
|
||||||
|
;; Editor
|
||||||
|
(setq scroll-preserve-screen-position nil)
|
||||||
|
(setq scroll-conservatively 101)
|
||||||
|
(setq default-tab-width 2)
|
||||||
|
|
||||||
|
;; Themes
|
||||||
|
(use-package gruber-darker-theme
|
||||||
|
:ensure t)
|
||||||
|
(use-package atom-one-dark-theme
|
||||||
|
:ensure t)
|
||||||
|
(load-theme 'gruber-darker t)
|
||||||
|
|
||||||
|
;; Setting garbage collection threshold
|
||||||
|
(setq gc-cons-threshold 402653184
|
||||||
|
gc-cons-percentage 0.6)
|
||||||
|
|
||||||
|
;; Profile emacs startup
|
||||||
|
(add-hook 'emacs-startup-hook
|
||||||
|
(lambda ()
|
||||||
|
(message "*** Emacs loaded in %s with %d garbage collections."
|
||||||
|
(format "%.2f seconds"
|
||||||
|
(float-time
|
||||||
|
(time-subtract after-init-time before-init-time)))
|
||||||
|
gcs-done)))
|
||||||
|
|
||||||
|
;; Silence compiler warnings as they can be pretty disruptive
|
||||||
|
(if (boundp 'comp-deferred-compilation)
|
||||||
|
(setq comp-deferred-compilation nil)
|
||||||
|
(setq native-comp-deferred-compilation nil))
|
||||||
|
;; In noninteractive sessions, prioritize non-byte-compiled source files to
|
||||||
|
;; prevent the use of stale byte-code. Otherwise, it saves us a little IO time
|
||||||
|
;; to skip the mtime checks on every *.elc file.
|
||||||
|
(setq load-prefer-newer noninteractive)
|
||||||
|
|
||||||
|
(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
|
||||||
|
'(markdown-mode atom-one-dark-theme treemacs-evil treemacs gruber-darker-theme gruber-darker nix-mode vertico evil evil-collection dashboard general)))
|
||||||
|
(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.
|
||||||
|
)
|
16
maddie/common/esa.nix
Normal file
16
maddie/common/esa.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableAliases = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--group-directories-first"
|
||||||
|
"--time-style=long-iso"
|
||||||
|
"--git"
|
||||||
|
"-h"
|
||||||
|
"-g"
|
||||||
|
];
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
}
|
9
maddie/common/fetch.nix
Normal file
9
maddie/common/fetch.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pridefetch # System stats with pride flags
|
||||||
|
neofetch # Generic system stats
|
||||||
|
pfetch # Simple system stats
|
||||||
|
];
|
||||||
|
}
|
51
maddie/common/git.nix
Normal file
51
maddie/common/git.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gh
|
||||||
|
git-review
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/bin/git-sync" = {
|
||||||
|
source = ./git/git-sync.sh;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
lfs.enable = true;
|
||||||
|
|
||||||
|
userName = "Madeleine";
|
||||||
|
userEmail = "maddie@spyhoodle.me";
|
||||||
|
signing = {
|
||||||
|
key = "FA50688B9EB6D8AA070C8241C296DE8C9053683F";
|
||||||
|
signByDefault = true;
|
||||||
|
gpgPath = "/run/current-system/sw/bin/gpg";
|
||||||
|
};
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
graph = "log --graph --oneline --decorate";
|
||||||
|
unstage = "reset HEAD --";
|
||||||
|
co = "checkout";
|
||||||
|
br = "branch";
|
||||||
|
ci = "commit";
|
||||||
|
st = "status";
|
||||||
|
ps = "push";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "development";
|
||||||
|
pull.rebase = "merges";
|
||||||
|
core.sshCommand = "/run/current-system/sw/bin/ssh";
|
||||||
|
};
|
||||||
|
|
||||||
|
ignores = [
|
||||||
|
"**/.DS_Store"
|
||||||
|
"**/._.DS_Store"
|
||||||
|
".DS_Store"
|
||||||
|
"._.DS_Store"
|
||||||
|
"**/*.swp"
|
||||||
|
"*.swp"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
6
maddie/common/git/git-sync.sh
Normal file
6
maddie/common/git/git-sync.sh
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
git add .
|
||||||
|
git commit -am "$(date -I)"
|
||||||
|
git pull
|
||||||
|
git push
|
21
maddie/common/helix.nix
Normal file
21
maddie/common/helix.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.helix = {
|
||||||
|
enable = true;
|
||||||
|
/* languages = [
|
||||||
|
{
|
||||||
|
name = "rust";
|
||||||
|
auto-format = true;
|
||||||
|
}
|
||||||
|
]; */
|
||||||
|
settings = {
|
||||||
|
theme = "onedark";
|
||||||
|
keys.normal = {
|
||||||
|
space.space = "file_picker";
|
||||||
|
space.w = ":w";
|
||||||
|
space.q = ":q";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
19
maddie/common/htop.nix
Normal file
19
maddie/common/htop.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.htop = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.htop-vim;
|
||||||
|
settings = {
|
||||||
|
hide_kernel_threads = 1;
|
||||||
|
hide_userland_threads = 1;
|
||||||
|
highlight_base_name = 1;
|
||||||
|
show_cpu_usage = 1;
|
||||||
|
show_cpu_frequency = 1;
|
||||||
|
show_cpu_temperature = 1;
|
||||||
|
degree_fahrenheit = 0;
|
||||||
|
enable_mouse = 1;
|
||||||
|
tree_view = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
maddie/common/java.nix
Normal file
7
maddie/common/java.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
jdk8
|
||||||
|
];
|
||||||
|
}
|
77
maddie/common/kakoune.nix
Normal file
77
maddie/common/kakoune.nix
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.kakoune = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
numberLines = {
|
||||||
|
enable = true;
|
||||||
|
relative = true;
|
||||||
|
|
||||||
|
};
|
||||||
|
scrollOff.lines = 3;
|
||||||
|
showWhitespace.enable = false;
|
||||||
|
tabStop = 4;
|
||||||
|
colorScheme = "one-dark";
|
||||||
|
ui = {
|
||||||
|
statusLine = "top";
|
||||||
|
assistant = "cat";
|
||||||
|
enableMouse = true;
|
||||||
|
setTitle = true;
|
||||||
|
};
|
||||||
|
hooks = [
|
||||||
|
{
|
||||||
|
name = "WinSetOption";
|
||||||
|
option = "filetype=nix";
|
||||||
|
commands = ''
|
||||||
|
set-option window indentwidth 2
|
||||||
|
set-option window formatcmd nixpkgs-fmt
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
plugins = with pkgs.kakounePlugins; [
|
||||||
|
kakoune-rainbow
|
||||||
|
powerline-kak
|
||||||
|
auto-pairs-kak
|
||||||
|
pkgs.kak-lsp
|
||||||
|
];
|
||||||
|
extraConfig = ''
|
||||||
|
# Tabs
|
||||||
|
hook global InsertChar \t %{ exec -draft h@ }
|
||||||
|
add-highlighter global/ show-whitespaces -tab '│' -tabpad '╌'
|
||||||
|
|
||||||
|
# Kak-LSP
|
||||||
|
eval %sh{kak-lsp --kakoune -s $kak_session}
|
||||||
|
lsp-enable
|
||||||
|
|
||||||
|
# Modeline
|
||||||
|
declare-option bool lsp_enabled false
|
||||||
|
declare-option -hidden str lsp_modeline_progress ""
|
||||||
|
define-command -hidden -params 6 -override lsp-handle-progress %{
|
||||||
|
set-option global lsp_modeline_progress %sh{
|
||||||
|
if ! "$6"; then
|
||||||
|
echo "$2\$\{5:+" ($5%)"}\$\{4:+": $4"}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare-option -hidden str modeline_git_branch
|
||||||
|
hook global WinDisplay .* %{
|
||||||
|
set-option window modeline_git_branch %sh{
|
||||||
|
branch=$(git -C "\$\{kak_buffile%/*}" rev-parse --abbrev-ref HEAD 2>/dev/null)
|
||||||
|
if [ -n "$branch" ]; then
|
||||||
|
printf "$branch "
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set-option global modelinefmt '%opt{lsp_modeline_progress} {StatusLine}{string}%opt{modeline_git_branch}{type}%sh{ [ -n "$kak_opt_filetype" ] && echo "$kak_opt_filetype " }{default}%val{bufname}{{context_info}}{default} {{mode_info}} {meta}%val{cursor_line}:%val{cursor_char_column}'
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."kak/colors" = {
|
||||||
|
source = ./kakoune/colors;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
}
|
93
maddie/common/kakoune/colors/one-dark-16.kak
Normal file
93
maddie/common/kakoune/colors/one-dark-16.kak
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value yellow
|
||||||
|
set-face global type yellow
|
||||||
|
set-face global variable red
|
||||||
|
set-face global module yellow
|
||||||
|
set-face global function blue
|
||||||
|
set-face global string green
|
||||||
|
set-face global keyword magenta
|
||||||
|
set-face global operator white
|
||||||
|
set-face global attribute cyan
|
||||||
|
set-face global comment white+d
|
||||||
|
set-face global documentation white+d
|
||||||
|
set-face global meta cyan
|
||||||
|
set-face global builtin yellow
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title yellow
|
||||||
|
set-face global header green
|
||||||
|
set-face global mono cyan
|
||||||
|
set-face global block magenta
|
||||||
|
set-face global link blue
|
||||||
|
set-face global bullet yellow
|
||||||
|
set-face global list white
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default white
|
||||||
|
set-face global PrimarySelection black,blue
|
||||||
|
set-face global SecondarySelection black,green
|
||||||
|
set-face global PrimaryCursor black,white
|
||||||
|
set-face global SecondaryCursor black,cyan
|
||||||
|
set-face global PrimaryCursorEol black,red
|
||||||
|
set-face global SecondaryCursorEol black,red
|
||||||
|
set-face global LineNumbers white
|
||||||
|
set-face global LineNumberCursor yellow
|
||||||
|
set-face global LineNumbersWrapped black
|
||||||
|
set-face global MenuForeground blue
|
||||||
|
set-face global MenuBackground default
|
||||||
|
set-face global MenuInfo green
|
||||||
|
set-face global Information default
|
||||||
|
set-face global Error red
|
||||||
|
set-face global StatusLine default
|
||||||
|
set-face global StatusLineMode yellow
|
||||||
|
set-face global StatusLineInfo blue
|
||||||
|
set-face global StatusLineValue white
|
||||||
|
set-face global StatusCursor black,blue
|
||||||
|
set-face global Prompt blue
|
||||||
|
set-face global MatchingChar +bu
|
||||||
|
set-face global BufferPadding black
|
||||||
|
set-face global Whitespace white+d
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint +d@type
|
||||||
|
set-face global parameter +i@variable
|
||||||
|
set-face global enum cyan
|
||||||
|
set-face global InlayDiagnosticError red
|
||||||
|
set-face global InlayDiagnosticWarning yellow
|
||||||
|
set-face global InlayDiagnosticInfo blue
|
||||||
|
set-face global InlayDiagnosticHint white
|
||||||
|
set-face global LineFlagError red
|
||||||
|
set-face global LineFlagWarning yellow
|
||||||
|
set-face global LineFlagInfo blue
|
||||||
|
set-face global LineFlagHint white
|
||||||
|
set-face global DiagnosticError +u
|
||||||
|
set-face global DiagnosticWarning +u
|
||||||
|
set-face global DiagnosticInfo +u
|
||||||
|
set-face global DiagnosticHint +u
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors yellow magenta blue }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
117
maddie/common/kakoune/colors/one-dark.kak
Normal file
117
maddie/common/kakoune/colors/one-dark.kak
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# One Dark
|
||||||
|
|
||||||
|
declare-option str fg "abb2bf"
|
||||||
|
declare-option str bg "282c34"
|
||||||
|
declare-option str subbg "373c47"
|
||||||
|
|
||||||
|
declare-option str lightred "e06c75"
|
||||||
|
declare-option str darkred "be5046"
|
||||||
|
declare-option str green "98c379"
|
||||||
|
declare-option str lightorange "e5c07b"
|
||||||
|
declare-option str darkorange "d19a66"
|
||||||
|
declare-option str blue "61afef"
|
||||||
|
declare-option str magenta "c678dd"
|
||||||
|
declare-option str cyan "56b6c2"
|
||||||
|
|
||||||
|
declare-option str comment "5c6370"
|
||||||
|
declare-option str hint "ffffff"
|
||||||
|
|
||||||
|
declare-option str cursoralpha "80"
|
||||||
|
declare-option str selectionalpha "40"
|
||||||
|
|
||||||
|
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
|
||||||
|
declare-option str menuselection "405770"
|
||||||
|
|
||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value "rgb:%opt{darkorange}"
|
||||||
|
set-face global type "rgb:%opt{lightorange}"
|
||||||
|
set-face global variable "rgb:%opt{lightred}"
|
||||||
|
set-face global module "rgb:%opt{lightorange}"
|
||||||
|
set-face global function "rgb:%opt{blue}"
|
||||||
|
set-face global string "rgb:%opt{green}"
|
||||||
|
set-face global keyword "rgb:%opt{magenta}"
|
||||||
|
set-face global operator "rgb:%opt{fg}"
|
||||||
|
set-face global attribute "rgb:%opt{cyan}"
|
||||||
|
set-face global comment "rgb:%opt{comment}"
|
||||||
|
set-face global documentation "rgb:%opt{comment}"
|
||||||
|
set-face global meta "rgb:%opt{cyan}"
|
||||||
|
set-face global builtin "rgb:%opt{lightorange}"
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title "rgb:%opt{darkorange}"
|
||||||
|
set-face global header "rgb:%opt{green}"
|
||||||
|
set-face global mono "rgb:%opt{cyan}"
|
||||||
|
set-face global block "rgb:%opt{magenta}"
|
||||||
|
set-face global link "rgb:%opt{blue}"
|
||||||
|
set-face global bullet "rgb:%opt{lightorange}"
|
||||||
|
set-face global list "rgb:%opt{fg}"
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
|
||||||
|
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
|
||||||
|
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
|
||||||
|
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
|
||||||
|
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
|
||||||
|
set-face global LineNumbers "rgb:%opt{comment}"
|
||||||
|
set-face global LineNumberCursor "rgb:%opt{darkorange}"
|
||||||
|
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
|
||||||
|
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global MenuInfo "rgb:%opt{green}"
|
||||||
|
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global Error "rgb:%opt{lightred}"
|
||||||
|
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global StatusLineMode "rgb:%opt{darkorange}"
|
||||||
|
set-face global StatusLineInfo "rgb:%opt{blue}"
|
||||||
|
set-face global StatusLineValue "rgb:%opt{fg}"
|
||||||
|
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global Prompt "rgb:%opt{blue}"
|
||||||
|
set-face global MatchingChar "default,rgb:%opt{subbg}"
|
||||||
|
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global Whitespace "rgb:%opt{comment}"
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint "+d@type"
|
||||||
|
set-face global parameter "+i@variable"
|
||||||
|
set-face global enum "rgb:%opt{cyan}"
|
||||||
|
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
|
||||||
|
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
|
||||||
|
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
|
||||||
|
set-face global LineFlagError "rgb:%opt{lightred}"
|
||||||
|
set-face global LineFlagWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global LineFlagInfo "rgb:%opt{blue}"
|
||||||
|
set-face global LineFlagHint "rgb:%opt{hint}"
|
||||||
|
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
|
||||||
|
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
|
||||||
|
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
|
||||||
|
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
101
maddie/common/kakoune/colors/one-darker-16.kak
Normal file
101
maddie/common/kakoune/colors/one-darker-16.kak
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value yellow
|
||||||
|
set-face global type yellow
|
||||||
|
set-face global variable white
|
||||||
|
set-face global module yellow
|
||||||
|
set-face global function blue
|
||||||
|
set-face global string green
|
||||||
|
set-face global keyword magenta
|
||||||
|
set-face global operator red
|
||||||
|
set-face global attribute cyan
|
||||||
|
set-face global comment white+d
|
||||||
|
set-face global documentation white+d
|
||||||
|
set-face global meta cyan
|
||||||
|
set-face global builtin yellow
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title yellow
|
||||||
|
set-face global header green
|
||||||
|
set-face global mono cyan
|
||||||
|
set-face global block magenta
|
||||||
|
set-face global link blue
|
||||||
|
set-face global bullet yellow
|
||||||
|
set-face global list white
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default white
|
||||||
|
set-face global PrimarySelection black,blue
|
||||||
|
set-face global SecondarySelection black,green
|
||||||
|
set-face global PrimaryCursor black,white
|
||||||
|
set-face global SecondaryCursor black,cyan
|
||||||
|
set-face global PrimaryCursorEol black,red
|
||||||
|
set-face global SecondaryCursorEol black,red
|
||||||
|
set-face global LineNumbers white
|
||||||
|
set-face global LineNumberCursor yellow
|
||||||
|
set-face global LineNumbersWrapped black
|
||||||
|
set-face global MenuForeground blue
|
||||||
|
set-face global MenuBackground default
|
||||||
|
set-face global MenuInfo green
|
||||||
|
set-face global Information default
|
||||||
|
set-face global Error red
|
||||||
|
set-face global StatusLine default
|
||||||
|
set-face global StatusLineMode yellow
|
||||||
|
set-face global StatusLineInfo blue
|
||||||
|
set-face global StatusLineValue white
|
||||||
|
set-face global StatusCursor black,blue
|
||||||
|
set-face global Prompt blue
|
||||||
|
set-face global MatchingChar +bu
|
||||||
|
set-face global BufferPadding black
|
||||||
|
set-face global Whitespace white+d
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint +d@type
|
||||||
|
set-face global parameter +i@variable
|
||||||
|
set-face global enum cyan
|
||||||
|
set-face global InlayDiagnosticError red
|
||||||
|
set-face global InlayDiagnosticWarning yellow
|
||||||
|
set-face global InlayDiagnosticInfo blue
|
||||||
|
set-face global InlayDiagnosticHint white
|
||||||
|
set-face global LineFlagError red
|
||||||
|
set-face global LineFlagWarning yellow
|
||||||
|
set-face global LineFlagInfo blue
|
||||||
|
set-face global LineFlagHint white
|
||||||
|
set-face global DiagnosticError +u
|
||||||
|
set-face global DiagnosticWarning +u
|
||||||
|
set-face global DiagnosticInfo +u
|
||||||
|
set-face global DiagnosticHint +u
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors yellow magenta blue }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Hardcoded selection + bg colors
|
||||||
|
# set-face global PrimarySelection default,rgb:2a3f53
|
||||||
|
# set-face global SecondarySelection default,rgb:384435
|
||||||
|
# set-face global PrimaryCursor default,rgb:3c6487
|
||||||
|
# set-face global SecondaryCursor default,rgb:586e4c
|
||||||
|
# set-face global PrimaryCursorEol default,rgb:7c434a
|
||||||
|
# set-face global SecondaryCursorEol default,rgb:7c434a
|
125
maddie/common/kakoune/colors/one-darker.kak
Normal file
125
maddie/common/kakoune/colors/one-darker.kak
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
# One Darker
|
||||||
|
# This theme is a personalized implementation of One Dark.
|
||||||
|
# Changes include:
|
||||||
|
# - Darker background color
|
||||||
|
# - Variables are white instead of red
|
||||||
|
# - Operators are red instead of white
|
||||||
|
# - Comments are more visible
|
||||||
|
|
||||||
|
# COLORS
|
||||||
|
|
||||||
|
declare-option str fg "abb2bf"
|
||||||
|
declare-option str bg "181a1f"
|
||||||
|
declare-option str subbg "272b33"
|
||||||
|
|
||||||
|
declare-option str lightred "e06c75"
|
||||||
|
declare-option str darkred "be5046"
|
||||||
|
declare-option str green "98c379"
|
||||||
|
declare-option str lightorange "e5c07b"
|
||||||
|
declare-option str darkorange "d19a66"
|
||||||
|
declare-option str blue "61afef"
|
||||||
|
declare-option str magenta "c678dd"
|
||||||
|
declare-option str cyan "56b6c2"
|
||||||
|
|
||||||
|
declare-option str comment "70798a"
|
||||||
|
declare-option str hint "ffffff"
|
||||||
|
|
||||||
|
declare-option str cursoralpha "80"
|
||||||
|
declare-option str selectionalpha "40"
|
||||||
|
|
||||||
|
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
|
||||||
|
declare-option str menuselection "344b61"
|
||||||
|
|
||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value "rgb:%opt{darkorange}"
|
||||||
|
set-face global type "rgb:%opt{lightorange}"
|
||||||
|
set-face global variable "rgb:%opt{fg}"
|
||||||
|
set-face global module "rgb:%opt{lightorange}"
|
||||||
|
set-face global function "rgb:%opt{blue}"
|
||||||
|
set-face global string "rgb:%opt{green}"
|
||||||
|
set-face global keyword "rgb:%opt{magenta}"
|
||||||
|
set-face global operator "rgb:%opt{lightred}"
|
||||||
|
set-face global attribute "rgb:%opt{cyan}"
|
||||||
|
set-face global comment "rgb:%opt{comment}"
|
||||||
|
set-face global documentation "rgb:%opt{comment}"
|
||||||
|
set-face global meta "rgb:%opt{cyan}"
|
||||||
|
set-face global builtin "rgb:%opt{lightorange}"
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title "rgb:%opt{darkorange}"
|
||||||
|
set-face global header "rgb:%opt{green}"
|
||||||
|
set-face global mono "rgb:%opt{cyan}"
|
||||||
|
set-face global block "rgb:%opt{magenta}"
|
||||||
|
set-face global link "rgb:%opt{blue}"
|
||||||
|
set-face global bullet "rgb:%opt{lightorange}"
|
||||||
|
set-face global list "rgb:%opt{fg}"
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
|
||||||
|
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
|
||||||
|
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
|
||||||
|
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
|
||||||
|
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
|
||||||
|
set-face global LineNumbers "rgb:%opt{comment}"
|
||||||
|
set-face global LineNumberCursor "rgb:%opt{darkorange}"
|
||||||
|
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
|
||||||
|
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global MenuInfo "rgb:%opt{green}"
|
||||||
|
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global Error "rgb:%opt{lightred}"
|
||||||
|
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global StatusLineMode "rgb:%opt{darkorange}"
|
||||||
|
set-face global StatusLineInfo "rgb:%opt{blue}"
|
||||||
|
set-face global StatusLineValue "rgb:%opt{fg}"
|
||||||
|
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global Prompt "rgb:%opt{blue}"
|
||||||
|
set-face global MatchingChar "default,rgb:%opt{subbg}"
|
||||||
|
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global Whitespace "rgb:%opt{comment}"
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint "+d@type"
|
||||||
|
set-face global parameter "+i@variable"
|
||||||
|
set-face global enum "rgb:%opt{cyan}"
|
||||||
|
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
|
||||||
|
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
|
||||||
|
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
|
||||||
|
set-face global LineFlagError "rgb:%opt{lightred}"
|
||||||
|
set-face global LineFlagWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global LineFlagInfo "rgb:%opt{blue}"
|
||||||
|
set-face global LineFlagHint "rgb:%opt{hint}"
|
||||||
|
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
|
||||||
|
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
|
||||||
|
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
|
||||||
|
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
93
maddie/common/kakoune/colors/one-light-16.kak
Normal file
93
maddie/common/kakoune/colors/one-light-16.kak
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value yellow
|
||||||
|
set-face global type yellow
|
||||||
|
set-face global variable red
|
||||||
|
set-face global module yellow
|
||||||
|
set-face global function blue
|
||||||
|
set-face global string green
|
||||||
|
set-face global keyword magenta
|
||||||
|
set-face global operator black
|
||||||
|
set-face global attribute cyan
|
||||||
|
set-face global comment black+d
|
||||||
|
set-face global documentation black+d
|
||||||
|
set-face global meta cyan
|
||||||
|
set-face global builtin yellow
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title yellow
|
||||||
|
set-face global header green
|
||||||
|
set-face global mono cyan
|
||||||
|
set-face global block magenta
|
||||||
|
set-face global link blue
|
||||||
|
set-face global bullet yellow
|
||||||
|
set-face global list white
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default black
|
||||||
|
set-face global PrimarySelection black,blue
|
||||||
|
set-face global SecondarySelection black,green
|
||||||
|
set-face global PrimaryCursor black,white
|
||||||
|
set-face global SecondaryCursor black,cyan
|
||||||
|
set-face global PrimaryCursorEol black,red
|
||||||
|
set-face global SecondaryCursorEol black,red
|
||||||
|
set-face global LineNumbers black
|
||||||
|
set-face global LineNumberCursor yellow
|
||||||
|
set-face global LineNumbersWrapped white
|
||||||
|
set-face global MenuForeground blue
|
||||||
|
set-face global MenuBackground default
|
||||||
|
set-face global MenuInfo green
|
||||||
|
set-face global Information default
|
||||||
|
set-face global Error red
|
||||||
|
set-face global StatusLine default
|
||||||
|
set-face global StatusLineMode yellow
|
||||||
|
set-face global StatusLineInfo blue
|
||||||
|
set-face global StatusLineValue white
|
||||||
|
set-face global StatusCursor black,blue
|
||||||
|
set-face global Prompt blue
|
||||||
|
set-face global MatchingChar +bu
|
||||||
|
set-face global BufferPadding white
|
||||||
|
set-face global Whitespace black+d
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint +d@type
|
||||||
|
set-face global parameter +i@variable
|
||||||
|
set-face global enum cyan
|
||||||
|
set-face global InlayDiagnosticError red
|
||||||
|
set-face global InlayDiagnosticWarning yellow
|
||||||
|
set-face global InlayDiagnosticInfo blue
|
||||||
|
set-face global InlayDiagnosticHint white
|
||||||
|
set-face global LineFlagError red
|
||||||
|
set-face global LineFlagWarning yellow
|
||||||
|
set-face global LineFlagInfo blue
|
||||||
|
set-face global LineFlagHint white
|
||||||
|
set-face global DiagnosticError +u
|
||||||
|
set-face global DiagnosticWarning +u
|
||||||
|
set-face global DiagnosticInfo +u
|
||||||
|
set-face global DiagnosticHint +u
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors yellow magenta blue }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
117
maddie/common/kakoune/colors/one-light.kak
Normal file
117
maddie/common/kakoune/colors/one-light.kak
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
# One Light
|
||||||
|
|
||||||
|
declare-option str fg "4b4c54"
|
||||||
|
declare-option str bg "fafafa"
|
||||||
|
declare-option str subbg "e6e6e6"
|
||||||
|
|
||||||
|
declare-option str lightred "e45649"
|
||||||
|
declare-option str darkred "ca1243"
|
||||||
|
declare-option str green "50a14f"
|
||||||
|
declare-option str lightorange "c18401"
|
||||||
|
declare-option str darkorange "986801"
|
||||||
|
declare-option str blue "4078f2"
|
||||||
|
declare-option str magenta "a626a4"
|
||||||
|
declare-option str cyan "0184bc"
|
||||||
|
|
||||||
|
declare-option str comment "a0a1a7"
|
||||||
|
declare-option str hint "000000"
|
||||||
|
|
||||||
|
declare-option str cursoralpha "80"
|
||||||
|
declare-option str selectionalpha "40"
|
||||||
|
|
||||||
|
# Menus do not support transparency, so we must hardcode the selection + sub bg colors
|
||||||
|
declare-option str menuselection "bbc9e8"
|
||||||
|
|
||||||
|
# CODE
|
||||||
|
|
||||||
|
set-face global value "rgb:%opt{darkorange}"
|
||||||
|
set-face global type "rgb:%opt{lightorange}"
|
||||||
|
set-face global variable "rgb:%opt{lightred}"
|
||||||
|
set-face global module "rgb:%opt{lightorange}"
|
||||||
|
set-face global function "rgb:%opt{blue}"
|
||||||
|
set-face global string "rgb:%opt{green}"
|
||||||
|
set-face global keyword "rgb:%opt{magenta}"
|
||||||
|
set-face global operator "rgb:%opt{fg}"
|
||||||
|
set-face global attribute "rgb:%opt{cyan}"
|
||||||
|
set-face global comment "rgb:%opt{comment}"
|
||||||
|
set-face global documentation "rgb:%opt{comment}"
|
||||||
|
set-face global meta "rgb:%opt{cyan}"
|
||||||
|
set-face global builtin "rgb:%opt{lightorange}"
|
||||||
|
|
||||||
|
# MARKUP
|
||||||
|
|
||||||
|
set-face global title "rgb:%opt{darkorange}"
|
||||||
|
set-face global header "rgb:%opt{green}"
|
||||||
|
set-face global mono "rgb:%opt{cyan}"
|
||||||
|
set-face global block "rgb:%opt{magenta}"
|
||||||
|
set-face global link "rgb:%opt{blue}"
|
||||||
|
set-face global bullet "rgb:%opt{lightorange}"
|
||||||
|
set-face global list "rgb:%opt{fg}"
|
||||||
|
|
||||||
|
# BUILTIN
|
||||||
|
|
||||||
|
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}"
|
||||||
|
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}"
|
||||||
|
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}"
|
||||||
|
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}"
|
||||||
|
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}"
|
||||||
|
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}"
|
||||||
|
set-face global LineNumbers "rgb:%opt{comment}"
|
||||||
|
set-face global LineNumberCursor "rgb:%opt{darkorange}"
|
||||||
|
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}"
|
||||||
|
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global MenuInfo "rgb:%opt{green}"
|
||||||
|
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global Error "rgb:%opt{lightred}"
|
||||||
|
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}"
|
||||||
|
set-face global StatusLineMode "rgb:%opt{darkorange}"
|
||||||
|
set-face global StatusLineInfo "rgb:%opt{blue}"
|
||||||
|
set-face global StatusLineValue "rgb:%opt{fg}"
|
||||||
|
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}"
|
||||||
|
set-face global Prompt "rgb:%opt{blue}"
|
||||||
|
set-face global MatchingChar "default,rgb:%opt{subbg}"
|
||||||
|
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}"
|
||||||
|
set-face global Whitespace "rgb:%opt{comment}"
|
||||||
|
|
||||||
|
# PLUGINS
|
||||||
|
|
||||||
|
# kak-lsp
|
||||||
|
set-face global InlayHint "+d@type"
|
||||||
|
set-face global parameter "+i@variable"
|
||||||
|
set-face global enum "rgb:%opt{cyan}"
|
||||||
|
set-face global InlayDiagnosticError "rgb:%opt{lightred}"
|
||||||
|
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global InlayDiagnosticInfo "rgb:%opt{blue}"
|
||||||
|
set-face global InlayDiagnosticHint "rgb:%opt{hint}"
|
||||||
|
set-face global LineFlagError "rgb:%opt{lightred}"
|
||||||
|
set-face global LineFlagWarning "rgb:%opt{lightorange}"
|
||||||
|
set-face global LineFlagInfo "rgb:%opt{blue}"
|
||||||
|
set-face global LineFlagHint "rgb:%opt{hint}"
|
||||||
|
set-face global DiagnosticError ",,rgb:%opt{lightred}+c"
|
||||||
|
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c"
|
||||||
|
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c"
|
||||||
|
set-face global DiagnosticHint ",,rgb:%opt{hint}+u"
|
||||||
|
# Infobox faces
|
||||||
|
set-face global InfoDefault Information
|
||||||
|
set-face global InfoBlock block
|
||||||
|
set-face global InfoBlockQuote block
|
||||||
|
set-face global InfoBullet bullet
|
||||||
|
set-face global InfoHeader header
|
||||||
|
set-face global InfoLink link
|
||||||
|
set-face global InfoLinkMono header
|
||||||
|
set-face global InfoMono mono
|
||||||
|
set-face global InfoRule comment
|
||||||
|
set-face global InfoDiagnosticError InlayDiagnosticError
|
||||||
|
set-face global InfoDiagnosticHint InlayDiagnosticHint
|
||||||
|
set-face global InfoDiagnosticInformation InlayDiagnosticInfo
|
||||||
|
set-face global InfoDiagnosticWarning InlayDiagnosticWarning
|
||||||
|
|
||||||
|
# kak-rainbower
|
||||||
|
try %{ set-option global rainbow_colors "rgb:%opt{lightorange}" "rgb:%opt{magenta}" "rgb:%opt{blue}" }
|
||||||
|
|
||||||
|
# For backwards compatibility
|
||||||
|
define-command -override -hidden one-enable-fancy-underlines %{
|
||||||
|
echo -debug "one-enable-fancy-underlines is deprecated - curly underlines are enabled by default"
|
||||||
|
}
|
8
maddie/common/latex.nix
Normal file
8
maddie/common/latex.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
#texliveFull
|
||||||
|
texlive.combined.scheme-full
|
||||||
|
];
|
||||||
|
}
|
26
maddie/common/lf.nix
Normal file
26
maddie/common/lf.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.lf = {
|
||||||
|
enable = true;
|
||||||
|
previewer.source = ./lf/scope;
|
||||||
|
settings = {
|
||||||
|
relativenumber = true;
|
||||||
|
number = true;
|
||||||
|
hidden = false;
|
||||||
|
preview = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"lf/icons" = {
|
||||||
|
source = ./lf/icons;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ueberzug
|
||||||
|
file
|
||||||
|
];
|
||||||
|
}
|
93
maddie/common/lf/icons
Normal file
93
maddie/common/lf/icons
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
di
|
||||||
|
fi
|
||||||
|
tw
|
||||||
|
ow
|
||||||
|
ln
|
||||||
|
or
|
||||||
|
ex
|
||||||
|
*.txt
|
||||||
|
*.mom
|
||||||
|
*.me
|
||||||
|
*.ms
|
||||||
|
*.avif
|
||||||
|
*.png
|
||||||
|
*.webp
|
||||||
|
*.ico
|
||||||
|
*.gif
|
||||||
|
*.tif
|
||||||
|
*.tiff
|
||||||
|
*.jpg
|
||||||
|
*.jpe
|
||||||
|
*.jpeg
|
||||||
|
*.heif
|
||||||
|
*.svg
|
||||||
|
*.xcf
|
||||||
|
*.gpg
|
||||||
|
*.pdf
|
||||||
|
*.djvu
|
||||||
|
*.epub
|
||||||
|
*.csv
|
||||||
|
*.xlsx
|
||||||
|
*.tex
|
||||||
|
*.md
|
||||||
|
*.mp3
|
||||||
|
*.opus
|
||||||
|
*.ogg
|
||||||
|
*.m4a
|
||||||
|
*.flac
|
||||||
|
*.wav
|
||||||
|
*.mkv
|
||||||
|
*.mp4
|
||||||
|
*.webm
|
||||||
|
*.mpeg
|
||||||
|
*.avi
|
||||||
|
*.mov
|
||||||
|
*.mpg
|
||||||
|
*.wmv
|
||||||
|
*.m4b
|
||||||
|
*.flv
|
||||||
|
*.zip
|
||||||
|
*.rar
|
||||||
|
*.7z
|
||||||
|
*.tar
|
||||||
|
*.gz
|
||||||
|
*.z64
|
||||||
|
*.v64
|
||||||
|
*.n64
|
||||||
|
*.gdi
|
||||||
|
*.gba
|
||||||
|
*.nes
|
||||||
|
*.exe
|
||||||
|
*.1
|
||||||
|
*.nfo
|
||||||
|
*.info
|
||||||
|
*.log
|
||||||
|
*.iso
|
||||||
|
*.img
|
||||||
|
*.bib
|
||||||
|
*.part
|
||||||
|
*.torrent
|
||||||
|
*.gitignore
|
||||||
|
*.jar
|
||||||
|
*.java
|
||||||
|
*.r
|
||||||
|
*.R
|
||||||
|
*.rmd
|
||||||
|
*.Rmd
|
||||||
|
*.m
|
||||||
|
*.rs
|
||||||
|
*.go
|
||||||
|
*.c
|
||||||
|
*.cpp
|
||||||
|
*.h
|
||||||
|
*.py
|
||||||
|
*.js
|
||||||
|
*.json
|
||||||
|
*.ts
|
||||||
|
*.sh
|
||||||
|
*.html
|
||||||
|
*.css
|
||||||
|
*.xml
|
||||||
|
*.php
|
||||||
|
*.nix
|
||||||
|
*.vim
|
52
maddie/common/lf/scope
Normal file
52
maddie/common/lf/scope
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# File preview handler for lf.
|
||||||
|
|
||||||
|
set -C -f
|
||||||
|
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
|
||||||
|
|
||||||
|
image() {
|
||||||
|
if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then
|
||||||
|
printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
|
||||||
|
else
|
||||||
|
mediainfo "$6"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
ifub() {
|
||||||
|
[ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Note that the cache file name is a function of file information, meaning if
|
||||||
|
# an image appears in multiple places across the machine, it will not have to
|
||||||
|
# be regenerated once seen.
|
||||||
|
|
||||||
|
case "$(file --dereference --brief --mime-type -- "$1")" in
|
||||||
|
image/avif) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||||
|
[ ! -f "$CACHE" ] && convert "$1" "$CACHE.jpg"
|
||||||
|
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;;
|
||||||
|
image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;;
|
||||||
|
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
|
||||||
|
text/troff) man ./ "$1" | col -b ;;
|
||||||
|
text/* | */xml | application/json) bat --terminal-width "$(($4-2))" -f "$1" ;;
|
||||||
|
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
|
||||||
|
video/* )
|
||||||
|
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||||
|
[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
|
||||||
|
image "$CACHE" "$2" "$3" "$4" "$5" "$1"
|
||||||
|
;;
|
||||||
|
*/pdf)
|
||||||
|
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||||
|
[ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
|
||||||
|
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
|
||||||
|
;;
|
||||||
|
*/epub+zip|*/mobi*)
|
||||||
|
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||||
|
[ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg"
|
||||||
|
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
|
||||||
|
;;
|
||||||
|
application/*zip) atool --list -- "$1" ;;
|
||||||
|
*opendocument*) odt2txt "$1" ;;
|
||||||
|
application/pgp-encrypted) gpg -d -- "$1" ;;
|
||||||
|
esac
|
||||||
|
exit 1
|
14
maddie/common/lsp.nix
Normal file
14
maddie/common/lsp.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nodejs
|
||||||
|
sumneko-lua-language-server
|
||||||
|
nodePackages.bash-language-server
|
||||||
|
nodePackages.vim-language-server
|
||||||
|
nodePackages.pyright
|
||||||
|
/* rust-analyzer */
|
||||||
|
rnix-lsp
|
||||||
|
universal-ctags
|
||||||
|
];
|
||||||
|
}
|
9
maddie/common/media.nix
Normal file
9
maddie/common/media.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
imagemagick # Manipulates images
|
||||||
|
libheif # Manage .heif files from phones
|
||||||
|
ffmpeg # Video manipulator
|
||||||
|
];
|
||||||
|
}
|
12
maddie/common/mommy.nix
Normal file
12
maddie/common/mommy.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.zsh.initExtra = ''
|
||||||
|
precmd() { [ $? -ne 0 ] && $HOME/.local/bin/mommy -n }
|
||||||
|
'';
|
||||||
|
|
||||||
|
home.file.".local/bin/mommy" = {
|
||||||
|
source = ./mommy/shell-mommy.sh;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
}
|
77
maddie/common/mommy/shell-mommy.sh
Normal file
77
maddie/common/mommy/shell-mommy.sh
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
usage() { printf "usage: $0 [-pn]\n -p: positive response\n -n: negative response\n"; }
|
||||||
|
[ $# -eq 0 ] && usage && exit 0;
|
||||||
|
|
||||||
|
[ -z "$MOMMYS_LITTLE" ] && MOMMYS_LITTLE="girl"
|
||||||
|
[ -z "$MOMMYS_PRONOUN" ] && MOMMYS_PRONOUN="her"
|
||||||
|
[ -z "$MOMMYS_ROLE" ] && MOMMYS_ROLE="mommy"
|
||||||
|
[ -z "$MOMMY_COLOR" ] && MOMMY_COLOR='\e[38;5;217m'
|
||||||
|
COLOR_RESET='\e[0m'
|
||||||
|
|
||||||
|
negative() {
|
||||||
|
RESPONSES=(
|
||||||
|
"do you need $MOMMYS_ROLE's help~? ❤️"
|
||||||
|
"don't give up, my love~ ❤️"
|
||||||
|
"don't worry, $MOMMYS_ROLE is here to help you~ ❤️"
|
||||||
|
"I believe in you, my sweet $MOMMYS_LITTLE~ ❤️"
|
||||||
|
"it's okay to make mistakes, my dear~ ❤️"
|
||||||
|
"just a little further, sweetie~ ❤️"
|
||||||
|
"let's try again together, okay~? ❤️"
|
||||||
|
"$MOMMYS_ROLE believes in you, and knows you can overcome this~ ❤️"
|
||||||
|
"$MOMMYS_ROLE believes in you~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is always here for you, no matter what~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is here to help you through it~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is proud of you for trying, no matter what the outcome~ ❤️"
|
||||||
|
"$MOMMYS_ROLE knows it's tough, but you can do it~ ❤️"
|
||||||
|
"$MOMMYS_ROLE knows $MOMMYS_PRONOUN little $MOMMYS_LITTLE can do better~ ❤️"
|
||||||
|
"$MOMMYS_ROLE knows you can do it, even if it's tough~ ❤️"
|
||||||
|
"$MOMMYS_ROLE knows you're feeling down, but you'll get through it~ ❤️"
|
||||||
|
"$MOMMYS_ROLE knows you're trying your best~ ❤️"
|
||||||
|
"$MOMMYS_ROLE loves you, and is here to support you~ ❤️"
|
||||||
|
"$MOMMYS_ROLE still loves you no matter what~ ❤️"
|
||||||
|
"you're doing your best, and that's all that matters to $MOMMYS_ROLE~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is always here to encourage you~ ❤️"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
positive() {
|
||||||
|
RESPONSES=(
|
||||||
|
"*pats your head*"
|
||||||
|
"awe, what a good $MOMMYS_LITTLE~\n$MOMMYS_ROLE knew you could do it~ ❤️"
|
||||||
|
"good $MOMMYS_LITTLE~\n$MOMMYS_ROLE's so proud of you~ ❤️"
|
||||||
|
"keep up the good work, my love~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is proud of the progress you've made~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is so grateful to have you as $MOMMYS_PRONOUN little $MOMMYS_LITTLE~ ❤️"
|
||||||
|
"I'm so proud of you, my love~ ❤️"
|
||||||
|
"$MOMMYS_ROLE is so proud of you~ ❤️"
|
||||||
|
"$MOMMYS_ROLE loves seeing $MOMMYS_PRONOUN little $MOMMYS_LITTLE succeed~ ❤️"
|
||||||
|
"$MOMMYS_ROLE thinks $MOMMYS_PRONOUN little $MOMMYS_LITTLE earned a big hug~ ❤️"
|
||||||
|
"that's a good $MOMMYS_LITTLE~ ❤️"
|
||||||
|
"you did an amazing job, my dear~ ❤️"
|
||||||
|
"you're such a smart cookie~ ❤️"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
mommy_says() {
|
||||||
|
says=$1
|
||||||
|
printf "$MOMMY_COLOR$says$COLOR_RESET\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
random() {
|
||||||
|
[ $1 == "positive" ] && positive
|
||||||
|
[ $1 == "negative" ] && negative
|
||||||
|
|
||||||
|
index=$(($RANDOM % ${#RESPONSES[@]}))
|
||||||
|
response="${RESPONSES[$index]}"
|
||||||
|
|
||||||
|
mommy_says "$response"
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts "pn" options; do
|
||||||
|
case $options in
|
||||||
|
p) random "positive" ;;
|
||||||
|
n) random "negative" ;;
|
||||||
|
*) usage; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
13
maddie/common/neovim.nix
Normal file
13
maddie/common/neovim.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."nvim" = {
|
||||||
|
source = ./neovim;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
}
|
1
maddie/common/neovim/.gitignore
vendored
Normal file
1
maddie/common/neovim/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
plugin
|
21
maddie/common/neovim/LICENSE
Normal file
21
maddie/common/neovim/LICENSE
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 SpyHoodle
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
22
maddie/common/neovim/README.md
Normal file
22
maddie/common/neovim/README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Maddie's NeoVim config
|
||||||
|
A clean, fast, feature-rich IDE layer for my needs in [NeoVim](https://neovim.io/).<br>
|
||||||
|
Written in Lua, designed for NeoVim v0.7.0 or higher.
|
||||||
|
|
||||||
|
## Some highlights
|
||||||
|
- Written entirely in Lua, making it clean and modern for NeoVim
|
||||||
|
- Uses [impatient.nvim](https://github.com/lewis6991/impatient.nvim) which greatly improves startup performance
|
||||||
|
- Uses the latest NeoVim LSP features & tree-sitter for highlighting
|
||||||
|
- Neat, small and structured files that are easy to read with some commenting
|
||||||
|
- Helpful features for programming such as highlighting indents & whitespaces
|
||||||
|
- Features for writing prose and taking notes, such as [vimwiki](https://github.com/vimwiki/vimwiki) and [orgmode](https://github.com/nvim-orgmode/orgmode)
|
||||||
|
- Extensible Lua written NeoVim specific package manager from [packer.nvim](https://github.com/wbthomason/packer.nvim)
|
||||||
|
- Modern standard Lua plugins such as [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) and [nvim-tree](https://github.com/kyazdani42/nvim-tree.lua)
|
||||||
|
- Fixed scrolling in terminals like st with patches and smooth scrolling
|
||||||
|
- Extra configuration for [Neovide](https://github.com/neovide/neovide), a graphical NeoVim client
|
||||||
|
- Shortcuts for tabs & splits with the leader key as space
|
||||||
|
- System clipboard, mouse and scrolling support
|
||||||
|
|
||||||
|
## Work in progress!
|
||||||
|
I'm constantly updating and changing this configuration, by adding new plugins and settings.<br>
|
||||||
|
I likely won't make changes to make the config more acceptable and general to the public.<br>
|
||||||
|
Made with ❤️ and 🏳️⚧️.
|
253
maddie/common/neovim/init.lua
Normal file
253
maddie/common/neovim/init.lua
Normal file
@ -0,0 +1,253 @@
|
|||||||
|
-- Basic vim config
|
||||||
|
require('basics')
|
||||||
|
require('keymaps')
|
||||||
|
require('colours')
|
||||||
|
|
||||||
|
-- Packages
|
||||||
|
return require('packer').startup(function(use)
|
||||||
|
-- Neovim package manager
|
||||||
|
use 'wbthomason/packer.nvim'
|
||||||
|
|
||||||
|
-- Atom's One Dark theme
|
||||||
|
use 'navarasu/onedark.nvim'
|
||||||
|
|
||||||
|
-- Gruvbox theme
|
||||||
|
use 'ellisonleao/gruvbox.nvim'
|
||||||
|
|
||||||
|
-- VSCode theme
|
||||||
|
use 'Mofiqul/vscode.nvim'
|
||||||
|
|
||||||
|
-- Everforest theme
|
||||||
|
use 'sainnhe/everforest'
|
||||||
|
|
||||||
|
-- Smooth scrolling
|
||||||
|
use 'psliwka/vim-smoothie'
|
||||||
|
|
||||||
|
-- Comments in any language
|
||||||
|
use 'tpope/vim-commentary'
|
||||||
|
|
||||||
|
-- Surrounding
|
||||||
|
use 'tpope/vim-surround'
|
||||||
|
|
||||||
|
-- Repeating
|
||||||
|
use 'tpope/vim-repeat'
|
||||||
|
|
||||||
|
-- Vim-wiki
|
||||||
|
use 'vimwiki/vimwiki'
|
||||||
|
|
||||||
|
-- Rainbow brackets
|
||||||
|
use 'p00f/nvim-ts-rainbow'
|
||||||
|
|
||||||
|
-- Git bindings
|
||||||
|
use 'tpope/vim-fugitive'
|
||||||
|
|
||||||
|
-- Latex
|
||||||
|
use 'lervag/vimtex'
|
||||||
|
|
||||||
|
-- Easy alignment
|
||||||
|
use 'junegunn/vim-easy-align'
|
||||||
|
|
||||||
|
|
||||||
|
-- Transparent background
|
||||||
|
use {
|
||||||
|
'xiyaowong/nvim-transparent',
|
||||||
|
config = function()
|
||||||
|
vim.g.transparent_enabled = false
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Zen mode
|
||||||
|
use {
|
||||||
|
"folke/zen-mode.nvim",
|
||||||
|
config = function()
|
||||||
|
require('zen-mode').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Autosaving
|
||||||
|
use {
|
||||||
|
'pocco81/auto-save.nvim',
|
||||||
|
config = function()
|
||||||
|
require('auto-save').setup({
|
||||||
|
enabled = true,
|
||||||
|
execution_message = {
|
||||||
|
message = function()
|
||||||
|
return ('>w< autosaved at ' .. vim.fn.strftime('%H:%M:%S'))
|
||||||
|
end,
|
||||||
|
cleaning_interval = 1250
|
||||||
|
},
|
||||||
|
trigger_events = { 'InsertLeave', 'TextChanged' }
|
||||||
|
})
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Git signs
|
||||||
|
use {
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
config = function()
|
||||||
|
require('gitsigns').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Github Copilot
|
||||||
|
use {
|
||||||
|
'zbirenbaum/copilot.lua',
|
||||||
|
event = { 'VimEnter' },
|
||||||
|
config = function()
|
||||||
|
vim.defer_fn(function()
|
||||||
|
require('copilot').setup()
|
||||||
|
end, 100)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Liveshare
|
||||||
|
use {
|
||||||
|
'jbyuki/instant.nvim',
|
||||||
|
config = function()
|
||||||
|
vim.g.instant_username = "Maddie"
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Fuzzy finder
|
||||||
|
use {
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
requires = { 'nvim-lua/plenary.nvim' }
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Auto-pairs
|
||||||
|
use {
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
config = function()
|
||||||
|
require('nvim-autopairs').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Highlight whitespaces
|
||||||
|
use {
|
||||||
|
'ntpeters/vim-better-whitespace',
|
||||||
|
config = function()
|
||||||
|
vim.g.better_whitespace_filetypes_blacklist = { 'startify' }
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Highlight indents
|
||||||
|
use {
|
||||||
|
'nathanaelkane/vim-indent-guides',
|
||||||
|
config = function()
|
||||||
|
vim.g.indent_guides_enable_on_vim_startup = 1
|
||||||
|
vim.g.indent_guides_exclude_filetypes = { 'help', 'NvimTree', 'startify' }
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Color hex codes
|
||||||
|
use {
|
||||||
|
'norcalli/nvim-colorizer.lua',
|
||||||
|
config = function()
|
||||||
|
require('colorizer').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Statusbar line
|
||||||
|
use {
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
requires = { 'kyazdani42/nvim-web-devicons', opt = true },
|
||||||
|
config = function()
|
||||||
|
require('lualine').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- File browser
|
||||||
|
use {
|
||||||
|
'kyazdani42/nvim-tree.lua',
|
||||||
|
requires = { 'kyazdani42/nvim-web-devicons' },
|
||||||
|
config = function()
|
||||||
|
require('nvim-tree').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Org-mode
|
||||||
|
use {
|
||||||
|
'nvim-orgmode/orgmode',
|
||||||
|
config = function()
|
||||||
|
require('orgmode').setup()
|
||||||
|
require('orgmode').setup_ts_grammar()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Speedup neovim startup
|
||||||
|
use {
|
||||||
|
'lewis6991/impatient.nvim',
|
||||||
|
config = function()
|
||||||
|
require('impatient')
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Rust tools
|
||||||
|
use 'neovim/nvim-lspconfig'
|
||||||
|
use {
|
||||||
|
'simrat39/rust-tools.nvim',
|
||||||
|
config = function()
|
||||||
|
require('rust-tools').setup()
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
-- -- Language Server Protocol
|
||||||
|
-- use {
|
||||||
|
-- 'neovim/nvim-lspconfig',
|
||||||
|
-- config = function()
|
||||||
|
-- require('lspconfig').pyright.setup{}
|
||||||
|
-- require('lspconfig').rnix.setup{}
|
||||||
|
-- require('lspconfig').bashls.setup{}
|
||||||
|
-- require('lspconfig').vimls.setup{}
|
||||||
|
-- require('lspconfig').sumneko_lua.setup {
|
||||||
|
-- settings = {
|
||||||
|
-- Lua = {
|
||||||
|
-- diagnostics = {
|
||||||
|
-- globals = { 'vim' }
|
||||||
|
-- }
|
||||||
|
-- }
|
||||||
|
-- }
|
||||||
|
-- }
|
||||||
|
-- end
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- Code completion
|
||||||
|
use 'L3MON4D3/LuaSnip'
|
||||||
|
use 'rafamadriz/friendly-snippets'
|
||||||
|
use 'zbirenbaum/copilot-cmp'
|
||||||
|
use 'hrsh7th/cmp-nvim-lsp'
|
||||||
|
use 'hrsh7th/cmp-nvim-lua'
|
||||||
|
use 'hrsh7th/cmp-buffer'
|
||||||
|
use 'hrsh7th/cmp-path'
|
||||||
|
use 'hrsh7th/cmp-cmdline'
|
||||||
|
use {
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
requires = { 'kyazdani42/nvim-web-devicons' },
|
||||||
|
config = function()
|
||||||
|
require('plugins.cmp')
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Treesitter for highlighting
|
||||||
|
use {
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
config = function()
|
||||||
|
require('nvim-treesitter.configs').setup {
|
||||||
|
ensure_installed = { 'cpp', 'lua', 'go', 'rust', 'python', 'nix', 'vim', 'markdown', 'html', 'css' },
|
||||||
|
sync_install = true,
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
rainbow = {
|
||||||
|
enable = true,
|
||||||
|
extended_mode = true
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
enable = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
}
|
||||||
|
end)
|
36
maddie/common/neovim/lua/basics.lua
Normal file
36
maddie/common/neovim/lua/basics.lua
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
-- Vim settings
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.o.encoding = 'utf8'
|
||||||
|
vim.o.background = 'dark'
|
||||||
|
vim.o.relativenumber = true
|
||||||
|
vim.o.number = true
|
||||||
|
vim.o.wrap = false
|
||||||
|
vim.o.expandtab = true
|
||||||
|
vim.o.incsearch = true
|
||||||
|
vim.o.scrolloff = 5
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
vim.o.cursorline = true
|
||||||
|
vim.o.ignorecase = true
|
||||||
|
vim.o.swapfile = false
|
||||||
|
vim.o.undofile = true
|
||||||
|
vim.o.splitbelow = true
|
||||||
|
vim.o.splitright = true
|
||||||
|
vim.o.errorbells = false
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
vim.o.showmode = false
|
||||||
|
vim.o.showtabline = 1
|
||||||
|
vim.o.signcolumn = 'auto'
|
||||||
|
vim.o.clipboard = 'unnamedplus'
|
||||||
|
vim.o.mouse = 'a'
|
||||||
|
vim.o.go = 'a'
|
||||||
|
|
||||||
|
-- Netrw
|
||||||
|
vim.g["netrw_banner"] = 0
|
||||||
|
vim.g["netrw_liststyle"] = 3
|
||||||
|
vim.g["netrw_winsize"] = 25
|
||||||
|
|
||||||
|
-- Neovide
|
||||||
|
vim.o.guifont = 'JetBrainsMono Nerd Font:h12'
|
||||||
|
vim.g.neovide_cursor_vfx_mode = 'railgun'
|
||||||
|
vim.g.neovide_remember_window_size = true
|
1
maddie/common/neovim/lua/colours.lua
Normal file
1
maddie/common/neovim/lua/colours.lua
Normal file
@ -0,0 +1 @@
|
|||||||
|
vim.cmd([[colorscheme onedark]])
|
59
maddie/common/neovim/lua/keymaps.lua
Normal file
59
maddie/common/neovim/lua/keymaps.lua
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
-- Neat variables
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
local term_opts = { silent = true }
|
||||||
|
local keymap = vim.api.nvim_set_keymap
|
||||||
|
|
||||||
|
-- Custom/special keymaps
|
||||||
|
keymap('n', '<leader>c', ':sp<CR> :term<CR> :resize 20N<CR> i', term_opts)
|
||||||
|
keymap('n', '<leader>r', ':luafile %<CR>:PackerSync<CR>', term_opts)
|
||||||
|
keymap('n', '<leader>h', ':nohl<CR>', term_opts)
|
||||||
|
keymap('n', '<leader>z', ':ZenMode<CR>:set wrap<CR>:set linebreak<CR>', term_opts)
|
||||||
|
keymap('n', '<leader>Z', ':ZenMode<CR>:set nowrap<CR>:set nolinebreak<CR>', term_opts)
|
||||||
|
keymap('n', '<C-c>', ':Telescope colorscheme<CR>', term_opts)
|
||||||
|
keymap('n', '<C-q>', ':wqa<CR>', term_opts)
|
||||||
|
keymap('n', '<C-s>', ':w<CR>', term_opts)
|
||||||
|
keymap('n', 'U', ':redo<CR>', term_opts)
|
||||||
|
|
||||||
|
-- Window management
|
||||||
|
keymap('n', '<leader>vs', ':vs<CR>', opts)
|
||||||
|
keymap('n', '<leader>hs', ':sp<CR>', opts)
|
||||||
|
keymap('n', '<leader>tn', ':tabnew<CR>', opts)
|
||||||
|
keymap('n', '<leader>th', ':tabprev<CR>', opts)
|
||||||
|
keymap('n', '<leader>tj', ':tabprev<CR>', opts)
|
||||||
|
keymap('n', '<leader>tk', ':tabnext<CR>', opts)
|
||||||
|
keymap('n', '<leader>tl', ':tabnext<CR>', opts)
|
||||||
|
keymap('n', '<leader>to', ':tabo<CR>', opts)
|
||||||
|
keymap('n', '<leader>tc', ':tabc<CR>', opts)
|
||||||
|
|
||||||
|
-- Window navigation
|
||||||
|
keymap('n', '<C-Tab>', '<C-w>w', opts)
|
||||||
|
keymap('n', '<C-h>', '<C-w>h', opts)
|
||||||
|
keymap('n', '<C-j>', '<C-w>j', opts)
|
||||||
|
keymap('n', '<C-k>', '<C-w>k', opts)
|
||||||
|
keymap('n', '<C-l>', '<C-w>l', opts)
|
||||||
|
|
||||||
|
-- Buffer navigation
|
||||||
|
keymap('n', '<S-l>', ':bnext<CR>', opts)
|
||||||
|
keymap('n', '<S-h>', ':bprevious<CR>', opts)
|
||||||
|
|
||||||
|
-- Stay in visual mode when indenting
|
||||||
|
keymap('v', '<', '<gv', opts)
|
||||||
|
keymap('v', '>', '>gv', opts)
|
||||||
|
|
||||||
|
-- When moving up or down, move physical lines not file lines
|
||||||
|
keymap('n', 'j', 'gj', opts)
|
||||||
|
keymap('n', 'k', 'gk', opts)
|
||||||
|
|
||||||
|
-- NvimTree
|
||||||
|
keymap('n', '<C-n>', ':NvimTreeToggle<CR>', term_opts)
|
||||||
|
|
||||||
|
-- Telescope
|
||||||
|
keymap('n', '<C-f>', '<cmd>lua require("telescope.builtin").find_files()<CR>', opts)
|
||||||
|
keymap('n', '<leader>ff', '<cmd>lua require("telescope.builtin").find_files()<CR>', opts)
|
||||||
|
keymap('n', '<leader>fg', '<cmd>lua require("telescope.builtin").live_grep()<CR>', opts)
|
||||||
|
keymap('n', '<leader>fb', '<cmd>lua require("telescope.builtin").buffers()<CR>', opts)
|
||||||
|
keymap('n', '<leader>fh', '<cmd>lua require("telescope.builtin").help_tags()<CR>', opts)
|
||||||
|
|
||||||
|
-- Easy alignment
|
||||||
|
keymap('n', 'ga', ':EasyAlign', opts)
|
||||||
|
keymap('v', 'ga', ':EasyAlign', opts)
|
117
maddie/common/neovim/lua/plugins/cmp.lua
Normal file
117
maddie/common/neovim/lua/plugins/cmp.lua
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
local cmp = require('cmp')
|
||||||
|
local luasnip = require('luasnip')
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
|
||||||
|
local check_backspace = function()
|
||||||
|
local col = vim.fn.col "." - 1
|
||||||
|
return col == 0 or vim.fn.getline("."):sub(col, col):match "%s"
|
||||||
|
end
|
||||||
|
|
||||||
|
local kind_icons = {
|
||||||
|
Text = "",
|
||||||
|
Method = "m",
|
||||||
|
Function = "",
|
||||||
|
Constructor = "",
|
||||||
|
Field = "",
|
||||||
|
Variable = "",
|
||||||
|
Class = "",
|
||||||
|
Interface = "",
|
||||||
|
Module = "",
|
||||||
|
Property = "",
|
||||||
|
Unit = "",
|
||||||
|
Value = "",
|
||||||
|
Enum = "",
|
||||||
|
Keyword = "",
|
||||||
|
Snippet = "",
|
||||||
|
Color = "",
|
||||||
|
File = "",
|
||||||
|
Reference = "",
|
||||||
|
Folder = "",
|
||||||
|
EnumMember = "",
|
||||||
|
Constant = "",
|
||||||
|
Struct = "",
|
||||||
|
Event = "",
|
||||||
|
Operator = "",
|
||||||
|
TypeParameter = "",
|
||||||
|
}
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
["<C-k>"] = cmp.mapping.select_prev_item(),
|
||||||
|
["<C-j>"] = cmp.mapping.select_next_item(),
|
||||||
|
["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
|
||||||
|
["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
|
||||||
|
["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
|
||||||
|
["<C-y>"] = cmp.config.disable,
|
||||||
|
["<C-e>"] = cmp.mapping {
|
||||||
|
i = cmp.mapping.abort(),
|
||||||
|
c = cmp.mapping.close(),
|
||||||
|
},
|
||||||
|
["<CR>"] = cmp.mapping.confirm { select = true },
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expandable() then
|
||||||
|
luasnip.expand()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
elseif check_backspace() then
|
||||||
|
fallback()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, {
|
||||||
|
"i",
|
||||||
|
"s",
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
formatting = {
|
||||||
|
fields = { "kind", "abbr", "menu" },
|
||||||
|
format = function(entry, vim_item)
|
||||||
|
vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
|
||||||
|
vim_item.menu = ({
|
||||||
|
nvim_lsp = "[LSP]",
|
||||||
|
nvim_lua = "[NVIM_LUA]",
|
||||||
|
copilot = "[Copilot]",
|
||||||
|
luasnip = "[Snippet]",
|
||||||
|
buffer = "[Buffer]",
|
||||||
|
path = "[Path]",
|
||||||
|
})[entry.source.name]
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = "nvim_lsp" },
|
||||||
|
{ name = "nvim_lua" },
|
||||||
|
{ name = "copilot" },
|
||||||
|
{ name = "luasnip" },
|
||||||
|
{ name = "buffer" },
|
||||||
|
{ name = "path" },
|
||||||
|
},
|
||||||
|
confirm_opts = {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = false,
|
||||||
|
},
|
||||||
|
experimental = {
|
||||||
|
ghost_text = false,
|
||||||
|
native_menu = false,
|
||||||
|
},
|
||||||
|
cmp.config.window.bordered()
|
||||||
|
}
|
6
maddie/common/neovim/spell/en.utf-8.add
Normal file
6
maddie/common/neovim/spell/en.utf-8.add
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
macOS
|
||||||
|
JS
|
||||||
|
add evelyne
|
||||||
|
evelyne
|
||||||
|
camhs
|
||||||
|
Vernova
|
BIN
maddie/common/neovim/spell/en.utf-8.add.spl
Normal file
BIN
maddie/common/neovim/spell/en.utf-8.add.spl
Normal file
Binary file not shown.
19
maddie/common/newsboat.nix
Normal file
19
maddie/common/newsboat.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, ...}:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.newsboat = {
|
||||||
|
enable = true;
|
||||||
|
urls = [
|
||||||
|
{
|
||||||
|
title = "Gitea - Evelyne";
|
||||||
|
tags = [ "git" ];
|
||||||
|
url = "https://git.spyhoodle.me/evelyne.rss";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
title = "Gitea - Maddie";
|
||||||
|
tags = [ "git" ];
|
||||||
|
url = "https://git.spyhoodle.me/maddie.rss";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
14
maddie/common/passwords.nix
Normal file
14
maddie/common/passwords.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.password-store = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
PASSWORD_STORE_DIR = "${config.xdg.dataHome}/password-store";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
PASSWORD_STORE_DIR = "${config.xdg.dataHome}/password-store";
|
||||||
|
};
|
||||||
|
}
|
8
maddie/common/processes.nix
Normal file
8
maddie/common/processes.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xorg.xkill # Kill X11 programs with mouse
|
||||||
|
killall # Kill programs
|
||||||
|
];
|
||||||
|
}
|
24
maddie/common/python.nix
Normal file
24
maddie/common/python.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
packages = ps: with ps; [
|
||||||
|
numpy
|
||||||
|
matplotlib
|
||||||
|
tkinter
|
||||||
|
pillow
|
||||||
|
psycopg
|
||||||
|
passlib
|
||||||
|
pyotp
|
||||||
|
aiosmtplib
|
||||||
|
argon2_cffi
|
||||||
|
python-dotenv
|
||||||
|
python-lsp-server
|
||||||
|
openrgb-python
|
||||||
|
pdftotext
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.python311.withPackages packages)
|
||||||
|
];
|
||||||
|
}
|
15
maddie/common/rust.nix
Normal file
15
maddie/common/rust.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rustup
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
sessionVariables = {
|
||||||
|
CARGO_HOME = "${config.xdg.dataHome}/cargo";
|
||||||
|
RUSTUP_HOME = "${config.xdg.dataHome}/rustup";
|
||||||
|
};
|
||||||
|
sessionPath = [ "${config.home.sessionVariables.CARGO_HOME}/bin" ];
|
||||||
|
};
|
||||||
|
}
|
62
maddie/common/shell.nix
Normal file
62
maddie/common/shell.nix
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
# Aliases
|
||||||
|
shellAliases = {
|
||||||
|
# Core Programs
|
||||||
|
cp = "cp -iv";
|
||||||
|
mv = "mv -iv";
|
||||||
|
rm = "rm -vI";
|
||||||
|
mkd = "mkdir -pv";
|
||||||
|
c = "clear";
|
||||||
|
e = "exit";
|
||||||
|
|
||||||
|
# CLI Shortcuts
|
||||||
|
v = "nvim";
|
||||||
|
vi = "nvim";
|
||||||
|
ka = "killall";
|
||||||
|
xw = "xwallpaper";
|
||||||
|
nf = "neofetch";
|
||||||
|
tf = "pridefetch -f trans";
|
||||||
|
pf = "pfetch";
|
||||||
|
i = "inertia";
|
||||||
|
|
||||||
|
# System shortcuts
|
||||||
|
heif-convert-dir = "for file in *.heic; do heif-convert -q 100 $file \${file/%.heic/.jpg}; done";
|
||||||
|
unfuck-wifi = "doas systemctl restart wpa_supplicant.service";
|
||||||
|
search = "f=$(fzf) && cd \"$f\" 2>/dev/null || xdg-open \"$f\" >/dev/null 2>&1";
|
||||||
|
cdt = "cd $(mktemp -d)";
|
||||||
|
sx = "startx ~/.xprofile";
|
||||||
|
sdn = "doas shutdown -h now";
|
||||||
|
kys = "kill $(pidof '$@')";
|
||||||
|
|
||||||
|
# Nix system shortucts
|
||||||
|
nix-system-update = "nix flake update $NIXFILES && doas nixos-rebuild switch --flake $NIXFILES";
|
||||||
|
|
||||||
|
# For colour
|
||||||
|
btop = "btop --utf-force";
|
||||||
|
grep = "grep --color=auto";
|
||||||
|
diff = "diff --color=auto";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
sessionVariables = {
|
||||||
|
# Locale
|
||||||
|
LANG = "en_GB.UTF-8";
|
||||||
|
LC_ALL = "en_GB.UTF-8";
|
||||||
|
|
||||||
|
# Define nixfiles location
|
||||||
|
NIXFILES = "$HOME/Development/Personal/NixFiles";
|
||||||
|
|
||||||
|
# Java windows
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Default $PATH
|
||||||
|
sessionPath = [
|
||||||
|
# Add ~/.local/bin to $PATH
|
||||||
|
"$HOME/.local/bin"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
7
maddie/common/smart-home.nix
Normal file
7
maddie/common/smart-home.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
home-assistant-cli
|
||||||
|
];
|
||||||
|
}
|
26
maddie/common/ssh.nix
Normal file
26
maddie/common/ssh.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ config, pkgs, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# SSH
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
matchBlocks = {
|
||||||
|
lambda = {
|
||||||
|
identityFile = "~/.ssh/id_ed25519_sk";
|
||||||
|
hostname = "home.spyhoodle.me";
|
||||||
|
user = "maddie";
|
||||||
|
};
|
||||||
|
pinea = {
|
||||||
|
identityFile = "~/.ssh/id_ed25519_sk";
|
||||||
|
hostname = "ssh.pinea.dev";
|
||||||
|
user = "maddie";
|
||||||
|
};
|
||||||
|
clicks = {
|
||||||
|
identityFile = "~/.ssh/clickscodes";
|
||||||
|
hostname = "git.clicks.codes";
|
||||||
|
port = 29418;
|
||||||
|
user = "maddie";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
3
maddie/common/ssh/maddie.pub
Normal file
3
maddie/common/ssh/maddie.pub
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIA1jTkcMhBQQoYqNVLofrNnTbB8RCyzSYmdsnPeoOineAAAABHNzaDo= spy@luna (yubikey)
|
||||||
|
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBO9WsQUnglNetqekCoA6WT0wYNxpUVyNxuktPOHJPBCLJmU9P+YErE915vj4HlYcuOW9UhVajQzLQTcelgs/O8w= M.iPad (Termius)
|
||||||
|
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBD44bc9OdsIxwNBkdIN5Ce+Wer2gWi+QRcFdOV7+ScIo1QS29wkQJxU90ItcKwqiv+oTBlipV2NSH/YroBSHhQI= M.iPad (Secure ShellFish)
|
10
maddie/common/tmux.nix
Normal file
10
maddie/common/tmux.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
clock24 = true;
|
||||||
|
mouse = true;
|
||||||
|
terminal = "screen-256color";
|
||||||
|
};
|
||||||
|
}
|
21
maddie/common/xdg.nix
Normal file
21
maddie/common/xdg.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
sessionVariables = {
|
||||||
|
# Force use of XDG Dir Spec
|
||||||
|
CUDA_CACHE_PATH = "${config.xdg.cacheHome}/nv";
|
||||||
|
LESSHISTFILE = "${config.xdg.configHome}/less/history";
|
||||||
|
LESSKEY = "${config.xdg.configHome}/less/keys";
|
||||||
|
WINEPREFIX = "${config.xdg.dataHome}/wine";
|
||||||
|
_JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${config.xdg.configHome}/java";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
# Force use of XDG Dir Spec
|
||||||
|
wget = "wget --hsts-file='${config.xdg.dataHome}/wget-hsts'";
|
||||||
|
rxrdb = "xrdb -load '${config.xdg.configHome}/.config/X11/xresources'";
|
||||||
|
nvidia-settings = "nvidia-settings --config='${config.xdg.configHome}'/nvidia/settings";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
13
maddie/common/yt-dlp.nix
Normal file
13
maddie/common/yt-dlp.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.yt-dlp.enable = true;
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
flac
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/bin/ytdlp-music" = {
|
||||||
|
source = ./yt-dlp/ytdlp-music.sh;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
}
|
25
maddie/common/yt-dlp/ytdlp-music.sh
Executable file
25
maddie/common/yt-dlp/ytdlp-music.sh
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
printf "YT URL: " && read url
|
||||||
|
printf "Title: " && read title
|
||||||
|
printf "Artist: " && read artist
|
||||||
|
printf "Album: " && read album
|
||||||
|
|
||||||
|
# Download file from youtube
|
||||||
|
yt-dlp -x --no-playlist --embed-thumbnail --no-embed-metadata --audio-quality 0 --audio-format flac -o "$title.flac" "$url"
|
||||||
|
|
||||||
|
# Set metadata flags
|
||||||
|
metaflac --set-tag="TITLE=$title" --set-tag="ARTIST=$artist" --set-tag="ALBUM=$album" "$title.flac"
|
||||||
|
|
||||||
|
# Export thumbnail
|
||||||
|
metaflac --export-picture-to="$title.png" "$title.flac"
|
||||||
|
|
||||||
|
# Convert png to jpg
|
||||||
|
mogrify -format jpg "$title.png"
|
||||||
|
rm -rf "$title.png"
|
||||||
|
|
||||||
|
# Convert to square
|
||||||
|
convert "$title.jpg" -gravity center -crop 1:1 "$title.jpg"
|
||||||
|
|
||||||
|
# Move the files to the correct directory
|
||||||
|
mv "$title.flac" "$title.jpg" $HOME/Music/Library/Liked
|
123
maddie/common/zsh.nix
Normal file
123
maddie/common/zsh.nix
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.zsh = {
|
||||||
|
# Use the zsh shell
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
# Basic config settings
|
||||||
|
enableAutosuggestions = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
autocd = true;
|
||||||
|
/* defaultKeymap = "vicmd"; */
|
||||||
|
dotDir = ".config/zsh";
|
||||||
|
history = {
|
||||||
|
size = 9999999;
|
||||||
|
expireDuplicatesFirst = true;
|
||||||
|
extended = true;
|
||||||
|
path = "${config.xdg.cacheHome}/zsh/history";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh init extras
|
||||||
|
initExtra = ''
|
||||||
|
# Disable Ctrl-S to freeze terminal
|
||||||
|
stty stop undef
|
||||||
|
|
||||||
|
# Tab completion
|
||||||
|
zstyle ':completion:*' menu select # Use a menu
|
||||||
|
_comp_options+=(globdots) # Include hidden files
|
||||||
|
|
||||||
|
# Change cursor shape for different vi modes
|
||||||
|
export KEYTIMEOUT=1
|
||||||
|
function zle-keymap-select () {
|
||||||
|
case $KEYMAP in
|
||||||
|
vicmd) echo -ne '\e[1 q';; # block
|
||||||
|
viins|main) echo -ne '\e[5 q';; # beam
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
zle -N zle-keymap-select
|
||||||
|
zle-line-init() {
|
||||||
|
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
|
||||||
|
echo -ne "\e[5 q"
|
||||||
|
}
|
||||||
|
zle -N zle-line-init
|
||||||
|
echo -ne '\e[5 q' # Use beam shape cursor on startup.
|
||||||
|
preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.starship = {
|
||||||
|
# Use the starship prompt
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
format = lib.concatStrings [
|
||||||
|
# Directory
|
||||||
|
"$directory"
|
||||||
|
|
||||||
|
# VCS
|
||||||
|
"$git_branch"
|
||||||
|
"$git_commit"
|
||||||
|
"$git_state"
|
||||||
|
"$git_metrics"
|
||||||
|
"$git_status"
|
||||||
|
"$hg_branch"
|
||||||
|
|
||||||
|
# Languages
|
||||||
|
"$package"
|
||||||
|
"$c"
|
||||||
|
"$rust"
|
||||||
|
"$golang"
|
||||||
|
"$haskell"
|
||||||
|
"$python"
|
||||||
|
"$java"
|
||||||
|
"$kotlin"
|
||||||
|
"$lua"
|
||||||
|
"$dart"
|
||||||
|
"$nim"
|
||||||
|
"$nodejs"
|
||||||
|
"$swift"
|
||||||
|
"$zig"
|
||||||
|
"$nix_shell"
|
||||||
|
"$conda"
|
||||||
|
"$spack"
|
||||||
|
|
||||||
|
# Prompt line
|
||||||
|
"$line_break"
|
||||||
|
"$username"
|
||||||
|
"$hostname"
|
||||||
|
"$localip"
|
||||||
|
"$cmd_duration"
|
||||||
|
"$memory_usage"
|
||||||
|
"$jobs"
|
||||||
|
"$character"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Prompt character
|
||||||
|
character = {
|
||||||
|
success_symbol = "-> [λ](bold purple)";
|
||||||
|
error_symbol = "-> [λ](bold red)";
|
||||||
|
vimcmd_symbol = "-> [λ](bold green)";
|
||||||
|
};
|
||||||
|
|
||||||
|
# When in a deep directory or git repo
|
||||||
|
directory.truncation_symbol = ".../";
|
||||||
|
|
||||||
|
# Git widgets
|
||||||
|
git_metrics.disabled = false;
|
||||||
|
git_status = {
|
||||||
|
ahead = "->";
|
||||||
|
behind = "<-";
|
||||||
|
diverged = "<->";
|
||||||
|
renamed = ">>";
|
||||||
|
deleted = "x";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable other starship widgets
|
||||||
|
memory_usage.disabled = false;
|
||||||
|
localip.disabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
maddie/macos/home.nix
Normal file
10
maddie/macos/home.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ config, username, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
homeDirectory = lib.mkForce "/Users/${username}";
|
||||||
|
stateVersion = "23.05";
|
||||||
|
};
|
||||||
|
}
|
510
maddie/macos/iterm2.nix
Normal file
510
maddie/macos/iterm2.nix
Normal file
@ -0,0 +1,510 @@
|
|||||||
|
{ config, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
targets.darwin.defaults."com.googlecode.iterm2" = {
|
||||||
|
"PreventEscapeSequenceFromClearingHistory" = 0;
|
||||||
|
"NoSyncHaveExplainedHowToAddTouchbarControls" = 1;
|
||||||
|
"NoSyncTipsDisabled" = 1;
|
||||||
|
"SoundForEsc" = 0;
|
||||||
|
"VisualIndicatorForEsc" = 0;
|
||||||
|
"Custom Color Presets" = {
|
||||||
|
"One Dark" = {
|
||||||
|
"Ansi 0 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.168627455830574";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.1450980454683304";
|
||||||
|
"Red Component" = "0.1294117718935013";
|
||||||
|
};
|
||||||
|
"Ansi 1 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"Ansi 10 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4745098054409027";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7647058963775635";
|
||||||
|
"Red Component" = "0.5960784554481506";
|
||||||
|
};
|
||||||
|
"Ansi 11 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4823529422283173";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7529411911964417";
|
||||||
|
"Red Component" = "0.8980392217636108";
|
||||||
|
};
|
||||||
|
"Ansi 12 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Ansi 13 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.8666666746139526";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4705882370471954";
|
||||||
|
"Red Component" = "0.7764706015586853";
|
||||||
|
};
|
||||||
|
"Ansi 14 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7607843279838562";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7137255072593689";
|
||||||
|
"Red Component" = "0.3372549116611481";
|
||||||
|
};
|
||||||
|
"Ansi 15 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Ansi 2 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4745098054409027";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7647058963775635";
|
||||||
|
"Red Component" = "0.5960784554481506";
|
||||||
|
};
|
||||||
|
"Ansi 3 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4823529422283173";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7529411911964417";
|
||||||
|
"Red Component" = "0.8980392217636108";
|
||||||
|
};
|
||||||
|
"Ansi 4 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Ansi 5 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.8666666746139526";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4705882370471954";
|
||||||
|
"Red Component" = "0.7764706015586853";
|
||||||
|
};
|
||||||
|
"Ansi 6 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7607843279838562";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7137255072593689";
|
||||||
|
"Red Component" = "0.3372549116611481";
|
||||||
|
};
|
||||||
|
"Ansi 7 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Ansi 8 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4627451002597809";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4627451002597809";
|
||||||
|
"Red Component" = "0.4627451002597809";
|
||||||
|
};
|
||||||
|
"Ansi 9 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"Background Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.168627455830574";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.1450980454683304";
|
||||||
|
"Red Component" = "0.1294117718935013";
|
||||||
|
};
|
||||||
|
"Badge Color" = {
|
||||||
|
"Alpha Component" = "0.5";
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"Bold Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Guide Color" = {
|
||||||
|
"Alpha Component" = "0.1764705882352941";
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Text Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Foreground Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Link Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Selected Text Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Selection Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.2666666805744171";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.2196078449487686";
|
||||||
|
"Red Component" = "0.196078434586525";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"Default Bookmark Guid" = "B038731D-3A7A-44EC-A1C5-8777EB3270A7";
|
||||||
|
GlobalTouchBarMap = {
|
||||||
|
"touchbar:0C8EAB5C-C453-4AEA-9DA6-05D596F01730" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "❄️";
|
||||||
|
Text = "nix shell\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"touchbar:2DDE7A3B-26B0-4748-AED2-A453238DFF5C" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "🗑️";
|
||||||
|
Text = "clear\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"touchbar:5527C3C6-A03F-4CA5-B7C1-A9B52CC89BED" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "⬆️";
|
||||||
|
Text = "git push\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"touchbar:A34F65B2-B5FE-4B8F-904C-BFF3D76D352F" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "✍️";
|
||||||
|
Text = "git add .; git commit\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"touchbar:B8063C42-FFC8-4735-9A1B-7B5F4D477D90" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "🧐";
|
||||||
|
Text = "git status\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"touchbar:E6F32724-CABD-4079-BC0E-95C2BB50BEB7" = {
|
||||||
|
Action = 12;
|
||||||
|
Label = "⬇️";
|
||||||
|
Text = "git pull\\n";
|
||||||
|
Version = 1;
|
||||||
|
};
|
||||||
|
"NSTouchBarConfig: full screen" = {
|
||||||
|
CurrentItems = [
|
||||||
|
"touchbar:B8063C42-FFC8-4735-9A1B-7B5F4D477D90/v0"
|
||||||
|
"touchbar:A34F65B2-B5FE-4B8F-904C-BFF3D76D352F/v0"
|
||||||
|
"touchbar:5527C3C6-A03F-4CA5-B7C1-A9B52CC89BED/v0"
|
||||||
|
"touchbar:E6F32724-CABD-4079-BC0E-95C2BB50BEB7/v0"
|
||||||
|
"NSTouchBarItemIdentifierFlexibleSpace"
|
||||||
|
"touchbar:0C8EAB5C-C453-4AEA-9DA6-05D596F01730/v0"
|
||||||
|
"touchbar:2DDE7A3B-26B0-4748-AED2-A453238DFF5C/v0"
|
||||||
|
"NSTouchBarItemIdentifierOtherItemsProxy"
|
||||||
|
];
|
||||||
|
DefaultItems = [
|
||||||
|
"iTermTouchBarIdentifierManPage"
|
||||||
|
"iTermTouchBarIdentifierColorPreset"
|
||||||
|
"iTermTouchBarIdentifierFunctionKeys"
|
||||||
|
"NSTouchBarItemIdentifierFlexibleSpace"
|
||||||
|
"NSTouchBarItemIdentifierOtherItemsProxy"
|
||||||
|
"iTermTouchBarIdentifierAddMark"
|
||||||
|
"iTermTouchBarIdentifierPreviousMark"
|
||||||
|
"iTermTouchBarIdentifierNextMark"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"NSTouchBarConfig: regular" = {
|
||||||
|
CurrentItems = [
|
||||||
|
"touchbar:B8063C42-FFC8-4735-9A1B-7B5F4D477D90/v0"
|
||||||
|
"touchbar:A34F65B2-B5FE-4B8F-904C-BFF3D76D352F/v0"
|
||||||
|
"touchbar:5527C3C6-A03F-4CA5-B7C1-A9B52CC89BED/v0"
|
||||||
|
"touchbar:E6F32724-CABD-4079-BC0E-95C2BB50BEB7/v0"
|
||||||
|
"NSTouchBarItemIdentifierFlexibleSpace"
|
||||||
|
"touchbar:0C8EAB5C-C453-4AEA-9DA6-05D596F01730/v0"
|
||||||
|
"touchbar:2DDE7A3B-26B0-4748-AED2-A453238DFF5C/v0"
|
||||||
|
"NSTouchBarItemIdentifierOtherItemsProxy"
|
||||||
|
];
|
||||||
|
DefaultItems = [
|
||||||
|
"iTermTouchBarIdentifierManPage"
|
||||||
|
"iTermTouchBarIdentifierColorPreset"
|
||||||
|
"iTermTouchBarIdentifierFunctionKeys"
|
||||||
|
"NSTouchBarItemIdentifierFlexibleSpace"
|
||||||
|
"NSTouchBarItemIdentifierOtherItemsProxy"
|
||||||
|
"iTermTouchBarIdentifierAddMark"
|
||||||
|
"iTermTouchBarIdentifierPreviousMark"
|
||||||
|
"iTermTouchBarIdentifierNextMark"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"New Bookmarks" = [{
|
||||||
|
"Ansi 0 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.168627455830574";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.1450980454683304";
|
||||||
|
"Red Component" = "0.1294117718935013";
|
||||||
|
};
|
||||||
|
"Ansi 1 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"Ansi 10 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4745098054409027";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7647058963775635";
|
||||||
|
"Red Component" = "0.5960784554481506";
|
||||||
|
};
|
||||||
|
"Ansi 11 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4823529422283173";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7529411911964417";
|
||||||
|
"Red Component" = "0.8980392217636108";
|
||||||
|
};
|
||||||
|
"Ansi 12 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Ansi 13 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.8666666746139526";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4705882370471954";
|
||||||
|
"Red Component" = "0.7764706015586853";
|
||||||
|
};
|
||||||
|
"Ansi 14 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7607843279838562";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7137255072593689";
|
||||||
|
"Red Component" = "0.3372549116611481";
|
||||||
|
};
|
||||||
|
"Ansi 15 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Ansi 2 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4745098054409027";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7647058963775635";
|
||||||
|
"Red Component" = "0.5960784554481506";
|
||||||
|
};
|
||||||
|
"Ansi 3 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4823529422283173";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7529411911964417";
|
||||||
|
"Red Component" = "0.8980392217636108";
|
||||||
|
};
|
||||||
|
"Ansi 4 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Ansi 5 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.8666666746139526";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4705882370471954";
|
||||||
|
"Red Component" = "0.7764706015586853";
|
||||||
|
};
|
||||||
|
"Ansi 6 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7607843279838562";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.7137255072593689";
|
||||||
|
"Red Component" = "0.3372549116611481";
|
||||||
|
};
|
||||||
|
"Ansi 7 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Ansi 8 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4627451002597809";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4627451002597809";
|
||||||
|
"Red Component" = "0.4627451002597809";
|
||||||
|
};
|
||||||
|
"Ansi 9 Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"BM Growl" = 1;
|
||||||
|
"Background Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.168627455830574";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.1450980454683304";
|
||||||
|
"Red Component" = "0.1294117718935013";
|
||||||
|
};
|
||||||
|
"Background Image Location" = "";
|
||||||
|
"Badge Color" = {
|
||||||
|
"Alpha Component" = "0.5";
|
||||||
|
"Blue Component" = "0.4588235318660736";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.4235294163227081";
|
||||||
|
"Red Component" = "0.8784313797950745";
|
||||||
|
};
|
||||||
|
"Blinking Cursor" = 0;
|
||||||
|
Blur = 1;
|
||||||
|
"Blur Radius" = "49.63241356382979";
|
||||||
|
"Bold Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Character Encoding" = 4;
|
||||||
|
"Close Sessions On End" = 1;
|
||||||
|
Columns = 80;
|
||||||
|
Command = "";
|
||||||
|
"Cursor Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Guide Color" = {
|
||||||
|
"Alpha Component" = "0.1764705882352941";
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Text Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Cursor Type" = 1;
|
||||||
|
"Custom Command" = "No";
|
||||||
|
"Custom Directory" = "No";
|
||||||
|
"Default Bookmark" = "No";
|
||||||
|
"Description" = "Default";
|
||||||
|
"Disable Window Resizing" = 1;
|
||||||
|
"Flashing Bell" = 0;
|
||||||
|
"Foreground Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Guid" = "B038731D-3A7A-44EC-A1C5-8777EB3270A7";
|
||||||
|
"Horizontal Spacing" = 1;
|
||||||
|
"Icon" = 0;
|
||||||
|
"Idle Code" = 0;
|
||||||
|
"Link Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.9372549057006836";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.686274528503418";
|
||||||
|
"Red Component" = "0.3803921639919281";
|
||||||
|
};
|
||||||
|
"Mouse Reporting" = 1;
|
||||||
|
"Name" = "Default";
|
||||||
|
"Non Ascii Font" = "Monaco 12";
|
||||||
|
"Non-ASCII Anti Aliased" = 1;
|
||||||
|
"Normal Font" = "JetBrainsMonoNerdFontComplete-Regular 12";
|
||||||
|
"Option Key Sends" = 0;
|
||||||
|
"Prompt Before Closing 2" = 0;
|
||||||
|
"Right Option Key Sends" = 0;
|
||||||
|
"Rows" = 25;
|
||||||
|
"Screen" = "-1";
|
||||||
|
"Scrollback Lines" = 1000;
|
||||||
|
"Selected Text Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.7490196228027344";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.6980392336845398";
|
||||||
|
"Red Component" = "0.6705882549285889";
|
||||||
|
};
|
||||||
|
"Selection Color" = {
|
||||||
|
"Alpha Component" = 1;
|
||||||
|
"Blue Component" = "0.2666666805744171";
|
||||||
|
"Color Space" = "sRGB";
|
||||||
|
"Green Component" = "0.2196078449487686";
|
||||||
|
"Red Component" = "0.196078434586525";
|
||||||
|
};
|
||||||
|
"Send Code When Idle" = 0;
|
||||||
|
"Shortcut" = "";
|
||||||
|
"Silence Bell" = 1;
|
||||||
|
"Sync Title" = 0;
|
||||||
|
"Terminal Type" = "xterm-256color";
|
||||||
|
"Transparency" = "0.3756482712765958";
|
||||||
|
"Unlimited Scrollback" = 0;
|
||||||
|
"Use Bold Font" = 1;
|
||||||
|
"Use Bright Bold" = 1;
|
||||||
|
"Use Italic Font" = 1;
|
||||||
|
"Use Non-ASCII Font" = 0;
|
||||||
|
"Vertical Spacing" = 1;
|
||||||
|
"Visual Bell" = 1;
|
||||||
|
"Window Type" = 0;
|
||||||
|
"Working Directory" = "/Users/${username}";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
maddie/macos/ssh.nix
Normal file
9
maddie/macos/ssh.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ config, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# Use Secretive as the ssh IdentityAgent on all hosts
|
||||||
|
programs.ssh.extraConfig = ''
|
||||||
|
Host *
|
||||||
|
IdentityAgent /Users/${username}/Library/Containers/com.maxgoedjen.Secretive.SecretAgent/Data/socket.ssh
|
||||||
|
'';
|
||||||
|
}
|
33
maddie/macos/tower.nix
Normal file
33
maddie/macos/tower.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
targets.darwin.defaults."com.fournova.Tower3" = {
|
||||||
|
"GTUserDefaultsAppAppearance" = 0;
|
||||||
|
"GTUserDefaultsAutoFetchTimeInterval" = 0;
|
||||||
|
"GTUserDefaultsBodyLineWrappingMode" = "soft";
|
||||||
|
"GTUserDefaultsCommitOptionSignOff" = 0;
|
||||||
|
"GTUserDefaultsDarkTheme" = "Default";
|
||||||
|
"GTUserDefaultsDefaultTerminalApplication" = "com.googlecode.iterm2";
|
||||||
|
"GTUserDefaultsDetailHeaderExpanded" = 1;
|
||||||
|
"GTUserDefaultsDialogueOptionPullUseRebase" = 0;
|
||||||
|
"GTUserDefaultsDiffWarningThreshold" = 20000;
|
||||||
|
"GTUserDefaultsGettingStartedPassed" = 1;
|
||||||
|
"GTUserDefaultsGitBinary" = "/usr/bin/git";
|
||||||
|
"GTUserDefaultsHideWindowTitle" = 0;
|
||||||
|
"GTUserDefaultsHistoryVerifiesGPGSignatures" = 1;
|
||||||
|
"GTUserDefaultsHistoryVerifiesGPGSignaturesInitialActivation" = 1;
|
||||||
|
"GTUserDefaultsLastApplicationVersion" = 351;
|
||||||
|
"GTUserDefaultsLightTheme" = "Default";
|
||||||
|
"GTUserDefaultsMigrationsAzureDevOpsServerHostURLMigration" = 1;
|
||||||
|
"GTUserDefaultsMigrationsCommitViewSizeMigration" = 1;
|
||||||
|
"GTUserDefaultsRepositoryFinderInitialized" = 1;
|
||||||
|
"GTUserDefaultsUpdatesReleaseChannel" = "stable";
|
||||||
|
"GTUserDefaultsUpdatesReleaseChannelReset" = 1;
|
||||||
|
"GTUserDefaultsUserProfilesInitialized" = 1;
|
||||||
|
"MSAppCenter310AppCenterUserDefaultsMigratedKey" = 1;
|
||||||
|
"MSAppCenter310CrashesUserDefaultsMigratedKey" = 1;
|
||||||
|
"NSNavLastRootDirectory" = "~/Documents/Education/Notes";
|
||||||
|
"NSNavPanelExpandedSizeForOpenMode" = "{800, 611}";
|
||||||
|
"NSNavPanelMediaBrowserTypeForOpenModeKey" = 1;
|
||||||
|
};
|
||||||
|
}
|
7
maddie/nixos/android.nix
Normal file
7
maddie/nixos/android.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
android-studio
|
||||||
|
];
|
||||||
|
}
|
15
maddie/nixos/audio.nix
Normal file
15
maddie/nixos/audio.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
pulsemixer # TUI sound mixer
|
||||||
|
playerctl # Manages media players
|
||||||
|
pamixer # CLI sound mixer
|
||||||
|
cava # Music visualiser
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/bin/volume" = {
|
||||||
|
source = ./audio/volume.sh;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
}
|
24
maddie/nixos/audio/volume.sh
Executable file
24
maddie/nixos/audio/volume.sh
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
COMMAND="$@"
|
||||||
|
[ -z $COMMAND ] && echo "usage: volume [up|down|mute]" && exit 1
|
||||||
|
|
||||||
|
if [ $COMMAND = "up" ]; then
|
||||||
|
pamixer --allow-boost -i 5
|
||||||
|
elif [ $COMMAND = "down" ]; then
|
||||||
|
pamixer --allow-boost -d 5
|
||||||
|
elif [ $COMMAND = "mute" ]; then
|
||||||
|
pamixer -t
|
||||||
|
else
|
||||||
|
echo "volume: command not found" && exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
MUTED="$(pamixer --get-mute)"
|
||||||
|
if [ $MUTED = "true" ]; then
|
||||||
|
MUTE_CHAR="!"
|
||||||
|
else
|
||||||
|
MUTE_CHAR=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
VOLUME=$(pamixer --get-volume)
|
||||||
|
echo "$VOLUME""$MUTE_CHAR" > /tmp/volume.fifo
|
7
maddie/nixos/awesome.nix
Normal file
7
maddie/nixos/awesome.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
xsession.windowManager.awesome = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
12
maddie/nixos/bosskey.nix
Normal file
12
maddie/nixos/bosskey.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
slock
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/bin/bosskey" = {
|
||||||
|
source = ./bosskey/bosskey.sh;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
}
|
39
maddie/nixos/bosskey/bosskey.sh
Executable file
39
maddie/nixos/bosskey/bosskey.sh
Executable file
@ -0,0 +1,39 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while getopts "lrpm:u:" options; do
|
||||||
|
case $options in
|
||||||
|
m)
|
||||||
|
devices=$OPTARG
|
||||||
|
if echo "$devices" | grep "mic" &>/dev/null; then
|
||||||
|
# Mute the microphone
|
||||||
|
pamixer --default-source --mute
|
||||||
|
fi
|
||||||
|
if echo "$devices" | grep "vol" &>/dev/null; then
|
||||||
|
# Mute the volume
|
||||||
|
pamixer --mute
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
u)
|
||||||
|
devices=$OPTARG
|
||||||
|
if echo "$devices"| grep "mic" &>/dev/null; then
|
||||||
|
# Mute the microphone
|
||||||
|
pamixer --default-source --unmute
|
||||||
|
fi
|
||||||
|
if echo "$devices" | grep "vol" &>/dev/null; then
|
||||||
|
# Unmute the volume
|
||||||
|
pamixer --unmute
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
p)
|
||||||
|
# Pause any playing media
|
||||||
|
playerctl pause
|
||||||
|
;;
|
||||||
|
|
||||||
|
l)
|
||||||
|
# Lock the screen using slock(1)
|
||||||
|
slock
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
7
maddie/nixos/calculator.nix
Normal file
7
maddie/nixos/calculator.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nodePackages.insect
|
||||||
|
];
|
||||||
|
}
|
29
maddie/nixos/chromium.nix
Normal file
29
maddie/nixos/chromium.nix
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
commandLineArgs = [
|
||||||
|
"--enable-logging=stderr"
|
||||||
|
"--ignore-gpu-blocklist"
|
||||||
|
];
|
||||||
|
extensions = [
|
||||||
|
# Dark Reader
|
||||||
|
{ id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; }
|
||||||
|
# uBlock Origin
|
||||||
|
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; }
|
||||||
|
# I still don't care about cookies
|
||||||
|
{ id = "edibdbjcniadpccecjdfdjjppcpchdlm"; }
|
||||||
|
# NoScript
|
||||||
|
{ id = "doojmbjmlfjjnbmnoijecmcbfeoakpjm"; }
|
||||||
|
# Reddit Enhancement Suite
|
||||||
|
{ id = "kbmfpngjjgdllneeigpgjifpgocmfgmb"; }
|
||||||
|
# Old Reddit Redirect
|
||||||
|
{ id = "dneaehbmnbhcippjikoajpoabadpodje"; }
|
||||||
|
# Return Youtube Dislike
|
||||||
|
{ id = "gebbhagfogifgggkldgodflihgfeippi"; }
|
||||||
|
# Vimium
|
||||||
|
{ id = "dbepggeogbaibhgnhhndojpepiihcmeb"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
7
maddie/nixos/cider.nix
Normal file
7
maddie/nixos/cider.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
cider
|
||||||
|
];
|
||||||
|
}
|
16
maddie/nixos/dmenu.nix
Normal file
16
maddie/nixos/dmenu.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
dmenu
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".local/bin/dmenu" = {
|
||||||
|
source = ./dmenu;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionPath = [
|
||||||
|
"$HOME/.local/bin/dmenu"
|
||||||
|
];
|
||||||
|
}
|
317
maddie/nixos/dmenu/dmenu-bluetooth
Executable file
317
maddie/nixos/dmenu/dmenu-bluetooth
Executable file
@ -0,0 +1,317 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# _ _ _ _ _ _
|
||||||
|
# __| |_ __ ___ ___ _ __ _ _ | |__ | |_ _ ___| |_ ___ ___ | |_ | |__
|
||||||
|
# / _` | '_ ` _ \ / _ \ '_ \| | | |_____| '_ \| | | | |/ _ \ __/ _ \ / _ \| __|| '_ \
|
||||||
|
# | (_| | | | | | | __/ | | | |_| |_____| |_) | | |_| | __/ || (_) | (_) | |_ | | | |
|
||||||
|
# \__,_|_| |_| |_|\___|_| |_|\__,_| |_.__/|_|\__,_|\___|\__\___/ \___/ \__||_| |_|
|
||||||
|
#
|
||||||
|
# Author: Nick Clyde (clydedroid)
|
||||||
|
# dmenu support by: Layerex
|
||||||
|
#
|
||||||
|
# A script that generates a dmenu menu that uses bluetoothctl to
|
||||||
|
# connect to bluetooth devices and display status info.
|
||||||
|
#
|
||||||
|
# Inspired by networkmanager-dmenu (https://github.com/firecat53/networkmanager-dmenu)
|
||||||
|
# Thanks to x70b1 (https://github.com/polybar/polybar-scripts/tree/master/polybar-scripts/system-bluetooth-bluetoothctl)
|
||||||
|
#
|
||||||
|
# Depends on:
|
||||||
|
# Arch repositories: dmenu, bluez-utils (contains bluetoothctl)
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
divider="---------"
|
||||||
|
goback="Back"
|
||||||
|
|
||||||
|
# Checks if bluetooth controller is powered on
|
||||||
|
power_on() {
|
||||||
|
if bluetoothctl show | grep -F -q "Powered: yes"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles power state
|
||||||
|
toggle_power() {
|
||||||
|
if power_on; then
|
||||||
|
bluetoothctl power off
|
||||||
|
show_menu
|
||||||
|
else
|
||||||
|
if rfkill list bluetooth | grep -F -q 'blocked: yes'; then
|
||||||
|
rfkill unblock bluetooth && sleep 3
|
||||||
|
fi
|
||||||
|
bluetoothctl power on
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if controller is scanning for new devices
|
||||||
|
scan_on() {
|
||||||
|
if bluetoothctl show | grep -F -q "Discovering: yes"; then
|
||||||
|
echo "Scan: on"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Scan: off"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles scanning state
|
||||||
|
toggle_scan() {
|
||||||
|
if scan_on; then
|
||||||
|
kill "$(pgrep -F -f "bluetoothctl scan on")"
|
||||||
|
bluetoothctl scan off
|
||||||
|
show_menu
|
||||||
|
else
|
||||||
|
bluetoothctl scan on &
|
||||||
|
echo "Scanning..."
|
||||||
|
sleep 5
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if controller is able to pair to devices
|
||||||
|
pairable_on() {
|
||||||
|
if bluetoothctl show | grep -F -q "Pairable: yes"; then
|
||||||
|
echo "Pairable: on"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Pairable: off"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles pairable state
|
||||||
|
toggle_pairable() {
|
||||||
|
if pairable_on; then
|
||||||
|
bluetoothctl pairable off
|
||||||
|
show_menu
|
||||||
|
else
|
||||||
|
bluetoothctl pairable on
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if controller is discoverable by other devices
|
||||||
|
discoverable_on() {
|
||||||
|
if bluetoothctl show | grep -F -q "Discoverable: yes"; then
|
||||||
|
echo "Discoverable: on"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Discoverable: off"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles discoverable state
|
||||||
|
toggle_discoverable() {
|
||||||
|
if discoverable_on; then
|
||||||
|
bluetoothctl discoverable off
|
||||||
|
show_menu
|
||||||
|
else
|
||||||
|
bluetoothctl discoverable on
|
||||||
|
show_menu
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if a device is connected
|
||||||
|
device_connected() {
|
||||||
|
device_info=$(bluetoothctl info "$1")
|
||||||
|
if echo "$device_info" | grep -F -q "Connected: yes"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles device connection
|
||||||
|
toggle_connection() {
|
||||||
|
if device_connected "$1"; then
|
||||||
|
bluetoothctl disconnect "$1"
|
||||||
|
# device_menu "$device"
|
||||||
|
else
|
||||||
|
bluetoothctl connect "$1"
|
||||||
|
# device_menu "$device"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if a device is paired
|
||||||
|
device_paired() {
|
||||||
|
device_info=$(bluetoothctl info "$1")
|
||||||
|
if echo "$device_info" | grep -F -q "Paired: yes"; then
|
||||||
|
echo "Paired: yes"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Paired: no"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles device paired state
|
||||||
|
toggle_paired() {
|
||||||
|
if device_paired "$1"; then
|
||||||
|
bluetoothctl remove "$1"
|
||||||
|
device_menu "$device"
|
||||||
|
else
|
||||||
|
bluetoothctl pair "$1"
|
||||||
|
device_menu "$device"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Checks if a device is trusted
|
||||||
|
device_trusted() {
|
||||||
|
device_info=$(bluetoothctl info "$1")
|
||||||
|
if echo "$device_info" | grep -F -q "Trusted: yes"; then
|
||||||
|
echo "Trusted: yes"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "Trusted: no"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Toggles device connection
|
||||||
|
toggle_trust() {
|
||||||
|
if device_trusted "$1"; then
|
||||||
|
bluetoothctl untrust "$1"
|
||||||
|
device_menu "$device"
|
||||||
|
else
|
||||||
|
bluetoothctl trust "$1"
|
||||||
|
device_menu "$device"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Prints a short string with the current bluetooth status
|
||||||
|
# Useful for status bars like polybar, etc.
|
||||||
|
print_status() {
|
||||||
|
if power_on; then
|
||||||
|
printf ''
|
||||||
|
|
||||||
|
mapfile -t paired_devices < <(bluetoothctl paired-devices | grep -F Device | cut -d ' ' -f 2)
|
||||||
|
counter=0
|
||||||
|
|
||||||
|
for device in "${paired_devices[@]}"; do
|
||||||
|
if device_connected "$device"; then
|
||||||
|
device_alias="$(bluetoothctl info "$device" | grep -F "Alias" | cut -d ' ' -f 2-)"
|
||||||
|
|
||||||
|
if [ $counter -gt 0 ]; then
|
||||||
|
printf ", %s" "$device_alias"
|
||||||
|
else
|
||||||
|
printf " %s" "$device_alias"
|
||||||
|
fi
|
||||||
|
|
||||||
|
((counter++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf "\n"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# A submenu for a specific device that allows connecting, pairing, and trusting
|
||||||
|
device_menu() {
|
||||||
|
device=$1
|
||||||
|
|
||||||
|
# Get device name and mac address
|
||||||
|
device_name="$(echo "$device" | cut -d ' ' -f 3-)"
|
||||||
|
mac="$(echo "$device" | cut -d ' ' -f 2)"
|
||||||
|
|
||||||
|
# Build options
|
||||||
|
if device_connected "$mac"; then
|
||||||
|
connected="Connected: yes"
|
||||||
|
else
|
||||||
|
connected="Connected: no"
|
||||||
|
fi
|
||||||
|
paired=$(device_paired "$mac")
|
||||||
|
trusted=$(device_trusted "$mac")
|
||||||
|
options="$connected\n$paired\n$trusted\n$divider\n$goback\nExit"
|
||||||
|
|
||||||
|
# Open dmenu menu, read chosen option
|
||||||
|
chosen="$(echo -e "$options" | run_dmenu "$device_name")"
|
||||||
|
|
||||||
|
# Match chosen option to command
|
||||||
|
case $chosen in
|
||||||
|
"" | "$divider")
|
||||||
|
echo "No option chosen."
|
||||||
|
;;
|
||||||
|
"$connected")
|
||||||
|
toggle_connection "$mac"
|
||||||
|
;;
|
||||||
|
"$paired")
|
||||||
|
toggle_paired "$mac"
|
||||||
|
;;
|
||||||
|
"$trusted")
|
||||||
|
toggle_trust "$mac"
|
||||||
|
;;
|
||||||
|
"$goback")
|
||||||
|
show_menu
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Opens a dmenu menu with current bluetooth status and options to connect
|
||||||
|
show_menu() {
|
||||||
|
# Get menu options
|
||||||
|
if power_on; then
|
||||||
|
power="Power: on"
|
||||||
|
|
||||||
|
# Human-readable names of devices, one per line
|
||||||
|
# If scan is off, will only list paired devices
|
||||||
|
devices=$(bluetoothctl devices | grep -F Device | cut -d ' ' -f 3-)
|
||||||
|
|
||||||
|
# Get controller flags
|
||||||
|
scan=$(scan_on)
|
||||||
|
pairable=$(pairable_on)
|
||||||
|
discoverable=$(discoverable_on)
|
||||||
|
|
||||||
|
# Options passed to dmenu
|
||||||
|
options="$devices\n$divider\n$power\n$scan\n$pairable\n$discoverable\nExit"
|
||||||
|
else
|
||||||
|
power="Power: off"
|
||||||
|
options="$power\nExit"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Open dmenu menu, read chosen option
|
||||||
|
chosen="$(echo -e "$options" | run_dmenu "Bluetooth")"
|
||||||
|
|
||||||
|
# Match chosen option to command
|
||||||
|
case $chosen in
|
||||||
|
"" | "$divider")
|
||||||
|
echo "No option chosen."
|
||||||
|
;;
|
||||||
|
"$power")
|
||||||
|
toggle_power
|
||||||
|
;;
|
||||||
|
"$scan")
|
||||||
|
toggle_scan
|
||||||
|
;;
|
||||||
|
"$discoverable")
|
||||||
|
toggle_discoverable
|
||||||
|
;;
|
||||||
|
"$pairable")
|
||||||
|
toggle_pairable
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
device=$(bluetoothctl devices | grep -F "$chosen")
|
||||||
|
# Open a submenu if a device is selected
|
||||||
|
if [[ $device ]]; then device_menu "$device"; fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
original_args=("$@")
|
||||||
|
|
||||||
|
# dmenu command to pipe into. Extra arguments to dmenu-bluetooth are passed through to dmenu. This
|
||||||
|
# allows the user to set fonts, sizes, colours, etc.
|
||||||
|
run_dmenu() {
|
||||||
|
dmenu "${original_args[@]}" -i -p "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--status)
|
||||||
|
print_status
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
show_menu
|
||||||
|
;;
|
||||||
|
esac
|
3
maddie/nixos/dmenu/dmenu-code
Executable file
3
maddie/nixos/dmenu/dmenu-code
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
st -e 'zsh' -c 'cd ~/Documents/Code/"$(exa -lh --icons ~/Documents/Code | tail -n +2 | dmenu -l 30 | sed "s|.* ||")"; zsh'
|
41
maddie/nixos/dmenu/dmenu-kdeconnect
Executable file
41
maddie/nixos/dmenu/dmenu-kdeconnect
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
NOTIFICATIONS_TITLE="KDE Connect"
|
||||||
|
NOTIFICATIONS_EXPIRE_TIME=1000
|
||||||
|
notify-send "$NOTIFICATIONS_TITLE" "Getting devices..." --expire-time="$NOTIFICATIONS_EXPIRE_TIME"
|
||||||
|
|
||||||
|
# Get available devices
|
||||||
|
devices="$(kdeconnect-cli -a)"
|
||||||
|
[ -z "$devices" ] && notify-send "$NOTIFICATIONS_TITLE" "No devices available" --expire-time="$NOTIFICATIONS_EXPIRE_TIME" && exit 1
|
||||||
|
|
||||||
|
# Let the user choose a device
|
||||||
|
device="$(echo "$devices" | sed 's/-\ //' | sed 's/:.*//' | dmenu -i -p "Devices:")"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]
|
||||||
|
then
|
||||||
|
# Send files to a device
|
||||||
|
📂File() {
|
||||||
|
file="$(zenity --file-selection)"
|
||||||
|
kdeconnect-cli -n "$device" --share "$file"
|
||||||
|
[ "$?" -eq 0 ] && notify-send "$NOTIFICATIONS_TITLE" "📂 Shared file: $file" --expire-time="$NOTIFICATIONS_EXPIRE_TIME"
|
||||||
|
[ "$?" -ne 0 ] && notify-send "$NOTIFICATIONS_TITLE" "📂 Failed to share file: $file" --expire-time="$NOTIFICATIONS_EXPIRE_TIME" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ping a device
|
||||||
|
📳Ping() {
|
||||||
|
kdeconnect-cli -n "$device" --ping
|
||||||
|
[ "$?" -eq 0 ] && notify-send "$NOTIFICATIONS_TITLE" "📳 Pinged device: $device" --expire-time="$NOTIFICATIONS_EXPIRE_TIME"
|
||||||
|
[ "$?" -ne 0 ] && notify-send "$NOTIFICATIONS_TITLE" "📳 Unable to ping device: $device" --expire-time="$NOTIFICATIONS_EXPIRE_TIME" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Make a device ring
|
||||||
|
☎️Ring() {
|
||||||
|
kdeconnect-cli -n "$device" --ring
|
||||||
|
[ "$?" -eq 0 ] && notify-send "$NOTIFICATIONS_TITLE" "☎️ Ringed device: $device" --expire-time="$NOTIFICATIONS_EXPIRE_TIME"
|
||||||
|
[ "$?" -ne 0 ] && notify-send "$NOTIFICATIONS_TITLE" "☎️ Unable to ring device: $device" --expire-time="$NOTIFICATIONS_EXPIRE_TIME" && exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show functions in dmenu and run the chosen function
|
||||||
|
func="$(declare -F | awk '{print $3}' | dmenu -i -p "$device":)"
|
||||||
|
[ -z "$func" ] || "$func"
|
||||||
|
fi
|
2
maddie/nixos/dmenu/dmenu-man
Executable file
2
maddie/nixos/dmenu/dmenu-man
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
man -t $(man -k . | dmenu -l 30 | awk '{print $1}') | ps2pdf - - | zathura -
|
67
maddie/nixos/dmenu/dmenu-mount
Executable file
67
maddie/nixos/dmenu/dmenu-mount
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Gives a dmenu prompt to mount unmounted drives and Android phones. If
|
||||||
|
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
|
||||||
|
# be prompted to give a mountpoint from already existsing directories. If you
|
||||||
|
# input a novel directory, it will prompt you to create that directory.
|
||||||
|
|
||||||
|
getmount() { \
|
||||||
|
[ -z "$chosen" ] && exit 1
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
|
||||||
|
test -z "$mp" && exit 1
|
||||||
|
if [ ! -d "$mp" ]; then
|
||||||
|
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
|
||||||
|
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
mountusb() { \
|
||||||
|
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?")" || exit 1
|
||||||
|
chosen="$(echo "$chosen" | awk '{print $1}')"
|
||||||
|
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
|
||||||
|
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
|
||||||
|
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
|
||||||
|
partitiontype="$(lsblk -no "fstype" "$chosen")"
|
||||||
|
case "$partitiontype" in
|
||||||
|
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
|
||||||
|
"exfat") sudo -A mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)";;
|
||||||
|
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" "$mp";;
|
||||||
|
esac
|
||||||
|
notify-send "💻 USB mounting" "$chosen mounted to $mp."
|
||||||
|
}
|
||||||
|
|
||||||
|
mountandroid() { \
|
||||||
|
chosen="$(echo "$anddrives" | dmenu -i -p "Which Android device?")" || exit 1
|
||||||
|
chosen="$(echo "$chosen" | cut -d : -f 1)"
|
||||||
|
getmount "$HOME -maxdepth 3 -type d"
|
||||||
|
simple-mtpfs --device "$chosen" "$mp"
|
||||||
|
echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" || exit 1
|
||||||
|
simple-mtpfs --device "$chosen" "$mp"
|
||||||
|
notify-send "🤖 Android Mounting" "Android device mounted to $mp."
|
||||||
|
}
|
||||||
|
|
||||||
|
asktype() { \
|
||||||
|
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Mount a USB drive or Android device?")" || exit 1
|
||||||
|
case $choice in
|
||||||
|
USB) mountusb ;;
|
||||||
|
Android) mountandroid ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
anddrives=$(simple-mtpfs -l 2>/dev/null)
|
||||||
|
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | grep 'part\|rom' | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
|
||||||
|
|
||||||
|
if [ -z "$usbdrives" ]; then
|
||||||
|
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
|
||||||
|
echo "Android device(s) detected."
|
||||||
|
mountandroid
|
||||||
|
else
|
||||||
|
if [ -z "$anddrives" ]; then
|
||||||
|
echo "USB drive(s) detected."
|
||||||
|
mountusb
|
||||||
|
else
|
||||||
|
echo "Mountable USB drive(s) and Android device(s) detected."
|
||||||
|
asktype
|
||||||
|
fi
|
||||||
|
fi
|
14
maddie/nixos/dmenu/dmenu-mpc
Executable file
14
maddie/nixos/dmenu/dmenu-mpc
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
playing=$(mpc current)
|
||||||
|
[ -z "$playing" ] && playing="Stopped"
|
||||||
|
|
||||||
|
▶️play() { mpc play ;}
|
||||||
|
⏸️pause() { mpc pause ;}
|
||||||
|
⏭️next() { mpc next ;}
|
||||||
|
⏮️prev() { mpc prev ;}
|
||||||
|
⏹️stop() { mpc stop ;}
|
||||||
|
🔄update() { mpc update ;}
|
||||||
|
|
||||||
|
func="$(declare -F | awk '{print $3}' | dmenu -i -p "$playing":)"
|
||||||
|
[ -z "$func" ] || "$func"
|
35
maddie/nixos/dmenu/dmenu-pass
Executable file
35
maddie/nixos/dmenu/dmenu-pass
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
shopt -s nullglob globstar
|
||||||
|
|
||||||
|
typeit=0
|
||||||
|
if [[ $1 == "--type" ]]; then
|
||||||
|
typeit=1
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $WAYLAND_DISPLAY ]]; then
|
||||||
|
dmenu=dmenu-wl
|
||||||
|
xdotool="ydotool type --file -"
|
||||||
|
elif [[ -n $DISPLAY ]]; then
|
||||||
|
dmenu=dmenu
|
||||||
|
xdotool="xdotool type --clearmodifiers --file -"
|
||||||
|
else
|
||||||
|
echo "Error: No Wayland or X11 display detected" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
prefix=${PASSWORD_STORE_DIR-~/.password-store}
|
||||||
|
password_files=( "$prefix"/**/*.gpg )
|
||||||
|
password_files=( "${password_files[@]#"$prefix"/}" )
|
||||||
|
password_files=( "${password_files[@]%.gpg}" )
|
||||||
|
|
||||||
|
password=$(printf '%s\n' "${password_files[@]}" | "$dmenu" "$@")
|
||||||
|
|
||||||
|
[[ -n $password ]] || exit
|
||||||
|
|
||||||
|
if [[ $typeit -eq 0 ]]; then
|
||||||
|
pass show -c "$password" 2>/dev/null
|
||||||
|
else
|
||||||
|
pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | $xdotool
|
||||||
|
fi
|
9
maddie/nixos/dmenu/dmenu-power
Executable file
9
maddie/nixos/dmenu/dmenu-power
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
poweroff() { systemctl shutdown ;}
|
||||||
|
restart() { killall -HUP dwm ;}
|
||||||
|
reboot() { system reboot ;}
|
||||||
|
lock() { bosskey ;}
|
||||||
|
|
||||||
|
func="$(declare -F | awk '{print $3}' | dmenu -i -p "Power:")"
|
||||||
|
[ -z "$func" ] || "$func"
|
18
maddie/nixos/dmenu/dmenu-unicode
Executable file
18
maddie/nixos/dmenu/dmenu-unicode
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# The famous "get a menu of emojis to copy" script.
|
||||||
|
|
||||||
|
# Get user selection via dmenu from emoji file.
|
||||||
|
chosen=$(cut -d ';' -f1 ~/.local/share/emoji-list | dmenu -i -l 30 | sed "s/ .*//")
|
||||||
|
|
||||||
|
# Exit if none chosen.
|
||||||
|
[ -z "$chosen" ] && exit
|
||||||
|
|
||||||
|
# If you run this command with an argument, it will automatically insert the
|
||||||
|
# character. Otherwise, show a message that the emoji has been copied.
|
||||||
|
if [ -n "$1" ]; then
|
||||||
|
xdotool type "$chosen"
|
||||||
|
else
|
||||||
|
printf "$chosen" | xclip -selection clipboard
|
||||||
|
notify-send "'$chosen' copied to clipboard." &
|
||||||
|
fi
|
7
maddie/nixos/drawterm.nix
Normal file
7
maddie/nixos/drawterm.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
drawterm
|
||||||
|
];
|
||||||
|
}
|
44
maddie/nixos/dunst.nix
Normal file
44
maddie/nixos/dunst.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.dunst = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
global = {
|
||||||
|
# Style
|
||||||
|
format = "<b>%s</b>\n%b";
|
||||||
|
font = "Iosevka 10";
|
||||||
|
width = 370;
|
||||||
|
height = 370;
|
||||||
|
offset = "0x50";
|
||||||
|
padding = 5;
|
||||||
|
frame_width = 2;
|
||||||
|
|
||||||
|
# Location
|
||||||
|
monitor = 0;
|
||||||
|
origin = "bottom-center";
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_low = {
|
||||||
|
background = "#121317";
|
||||||
|
foreground = "#D6DEEB";
|
||||||
|
frame_color = "#2C323D";
|
||||||
|
timeout = 3;
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_normal = {
|
||||||
|
background = "#121317";
|
||||||
|
foreground = "#D6DEEB";
|
||||||
|
frame_color = "#2C323D";
|
||||||
|
timeout = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
urgency_critical = {
|
||||||
|
background = "#121317";
|
||||||
|
foreground = "#D6DEEB";
|
||||||
|
frame_color = "#E06C75";
|
||||||
|
timeout = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
maddie/nixos/dwm.nix
Normal file
7
maddie/nixos/dwm.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
dwm # Suckless dynamic window manager
|
||||||
|
];
|
||||||
|
}
|
8
maddie/nixos/files.nix
Normal file
8
maddie/nixos/files.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ncdu_2 # Disk space manager
|
||||||
|
clifm # TUI file manager
|
||||||
|
];
|
||||||
|
}
|
8
maddie/nixos/games.nix
Normal file
8
maddie/nixos/games.nix
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gzdoom # Modern doom runner
|
||||||
|
pcsx2 # PS2 Emulator
|
||||||
|
];
|
||||||
|
}
|
7
maddie/nixos/gcolor2.nix
Normal file
7
maddie/nixos/gcolor2.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gcolor2 # Color viewer and eyedropper
|
||||||
|
];
|
||||||
|
}
|
25
maddie/nixos/gtk.nix
Normal file
25
maddie/nixos/gtk.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
font = {
|
||||||
|
package = pkgs.iosevka;
|
||||||
|
name = "Iosevka";
|
||||||
|
size = 10;
|
||||||
|
};
|
||||||
|
theme = {
|
||||||
|
package = pkgs.lounge-gtk-theme;
|
||||||
|
name = "Lounge-night-compact";
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
package = pkgs.whitesur-icon-theme;
|
||||||
|
name = "WhiteSur-dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gnome.zenity
|
||||||
|
libsForQt5.breeze-gtk
|
||||||
|
];
|
||||||
|
}
|
10
maddie/nixos/home.nix
Normal file
10
maddie/nixos/home.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ config, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
}
|
12
maddie/nixos/jetbrains.nix
Normal file
12
maddie/nixos/jetbrains.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
jetbrains.clion
|
||||||
|
jetbrains.goland
|
||||||
|
jetbrains.webstorm
|
||||||
|
jetbrains.datagrip
|
||||||
|
jetbrains.rust-rover
|
||||||
|
jetbrains.pycharm-professional
|
||||||
|
];
|
||||||
|
}
|
10
maddie/nixos/kdeconnect.nix
Normal file
10
maddie/nixos/kdeconnect.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.kdeconnect.enable = true;
|
||||||
|
|
||||||
|
home.file.".xprofile".text = ''
|
||||||
|
# Start kdeconnect when entering a graphical session
|
||||||
|
systemctl restart --user kdeconnect.service &
|
||||||
|
'';
|
||||||
|
}
|
12
maddie/nixos/librewolf.nix
Normal file
12
maddie/nixos/librewolf.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.librewolf = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
"browser.uidensity" = 1;
|
||||||
|
"webgl.disabled" = false;
|
||||||
|
"privacy.resistFingerprinting" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
12
maddie/nixos/messaging.nix
Normal file
12
maddie/nixos/messaging.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
schildichat-desktop # Matrix client, fork of element
|
||||||
|
signal-desktop # Signal client
|
||||||
|
cinny-desktop # Pretty matrix client
|
||||||
|
discord-canary # Discord client
|
||||||
|
ripcord # Better discord client
|
||||||
|
nheko # Better matrix client
|
||||||
|
];
|
||||||
|
}
|
9
maddie/nixos/minecraft.nix
Normal file
9
maddie/nixos/minecraft.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
prismlauncher # Minecraft launcher
|
||||||
|
minecraft # Actual minecraft
|
||||||
|
/*jdk # Needed for running minecraft servers */
|
||||||
|
];
|
||||||
|
}
|
41
maddie/nixos/mpd.nix
Normal file
41
maddie/nixos/mpd.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ config, pkgs, username, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.mpd = {
|
||||||
|
enable = true;
|
||||||
|
musicDirectory = "${config.home.homeDirectory}/Music";
|
||||||
|
extraConfig = ''
|
||||||
|
auto_update "yes"
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "pipewire"
|
||||||
|
name "PipeWire Sound Server"
|
||||||
|
}
|
||||||
|
|
||||||
|
audio_output {
|
||||||
|
type "fifo"
|
||||||
|
name "Visualizer feed"
|
||||||
|
path "/tmp/mpd.fifo"
|
||||||
|
format "44100:16:2"
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mpdris2 = {
|
||||||
|
enable = true;
|
||||||
|
multimediaKeys = true;
|
||||||
|
notifications = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
mpc_cli
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.ncmpcpp = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ncmpcpp_directory = "${config.home.homeDirectory}/.local/share/ncmpcpp";
|
||||||
|
lyrics_directory = "${config.home.homeDirectory}/.local/share/lyrics";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
maddie/nixos/mpv.nix
Normal file
10
maddie/nixos/mpv.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
programs.mpv = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
loop-file = "inf";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
7
maddie/nixos/neovide.nix
Normal file
7
maddie/nixos/neovide.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
neovide
|
||||||
|
];
|
||||||
|
}
|
16
maddie/nixos/nsxiv.nix
Normal file
16
maddie/nixos/nsxiv.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nsxiv
|
||||||
|
];
|
||||||
|
xdg.configFile."nsxiv" = {
|
||||||
|
source = ./nsxiv;
|
||||||
|
};
|
||||||
|
xresources.properties = {
|
||||||
|
"Nsxiv.window.foreground" = "#D6DEEB";
|
||||||
|
"Nsxiv.window.background" = "#1E2127";
|
||||||
|
"Nsxiv.bar.background" = "#2C323D";
|
||||||
|
"Nsxiv.bar.foreground" = "#D6DEEB";
|
||||||
|
};
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user