moved around dotfiles to focus around nix configuration, as most of my systems already utilize Nix/NixOS in some capacity.
This commit is contained in:
parent
eb01c9561f
commit
890c29afca
28 changed files with 47 additions and 255 deletions
48
nix/flake.lock
generated
Executable file
48
nix/flake.lock
generated
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"nodes": {
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1757809953,
|
||||
"narHash": "sha256-29mlXbfAJhz9cWVrPP4STvVPDVZFCfCOmaIN5lFJa+Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "17a10049486f6698fca32097d8f52c0c895542b0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1756542300,
|
||||
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
30
nix/flake.nix
Executable file
30
nix/flake.nix
Executable file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
description = "System flake";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
outputs = { self, nixpkgs, ... }@inputs: {
|
||||
nixosConfigurations = {
|
||||
mecca = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {inherit inputs;};
|
||||
modules = [
|
||||
./hosts/common.nix
|
||||
./hosts/mecca/configuration.nix
|
||||
];
|
||||
};
|
||||
cantor = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
specialArgs = {inherit inputs;};
|
||||
modules = [
|
||||
./hosts/common.nix
|
||||
./hosts/cantor/configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
18
nix/hosts/cantor/configuration.nix
Executable file
18
nix/hosts/cantor/configuration.nix
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
{ config, pkgs, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../modules/kanata/kanata.nix
|
||||
../../modules/laptop.nix
|
||||
../../modules/efi.nix
|
||||
../../modules/hypr.nix
|
||||
../../modules/syncthing.nix
|
||||
];
|
||||
|
||||
networking.hostName = "cantor";
|
||||
# Overriding this, as the touchpad doesn't work properly anymore.
|
||||
services.libinput.enable = lib.mkForce false;
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
46
nix/hosts/cantor/hardware-configuration.nix
Executable file
46
nix/hosts/cantor/hardware-configuration.nix
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/b6a3dc2d-983b-4be5-a1ae-e834b786377f";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/12CE-A600";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
|
||||
fileSystems."/data/hdd" =
|
||||
{ device = "/dev/disk/by-uuid/8db7c071-8946-4619-96fd-83259ae8d228";
|
||||
fsType = "xfs";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/222e2b22-388c-490a-845f-35f774c395a8"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
94
nix/hosts/common.nix
Executable file
94
nix/hosts/common.nix
Executable file
|
|
@ -0,0 +1,94 @@
|
|||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
# Set default user lunita
|
||||
users.users.lunita = {
|
||||
isNormalUser = true;
|
||||
description = "Lunita";
|
||||
extraGroups = [ "networkmanager" "wheel" "syncthing" ];
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
users = {
|
||||
"lunita" = import ./home.nix;
|
||||
};
|
||||
};
|
||||
# Enable automatic system updates
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
flake = inputs.self.outPath;
|
||||
flags = [
|
||||
"--update-input"
|
||||
"nixpkgs"
|
||||
"-L" # print build logs
|
||||
];
|
||||
dates = "weekly";
|
||||
randomizedDelaySec = "45min";
|
||||
};
|
||||
# Automate Nix garbage collection
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
# Allow non-free software (RMS will be mad at me :<)
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Enable nix-command and flakes
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes"];
|
||||
# using piprewire cuz embrace muh modernity
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
# Basic configuration stuff - WiFi, Xserver keyboard layout, Stylix
|
||||
networking.networkmanager.enable = true;
|
||||
time.timeZone = "America/St_Thomas"; # Timezone => AST
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
services.xserver.xkb = {
|
||||
layout = "us";
|
||||
variant = "";
|
||||
};
|
||||
# Zsh
|
||||
programs.zsh.enable = true;
|
||||
# Browser
|
||||
programs.firefox.enable = true;
|
||||
# Flatpak
|
||||
services.flatpak.enable = true;
|
||||
# Tailscale
|
||||
services.tailscale.enable = true;
|
||||
# GPG
|
||||
programs.gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
# OpenSSH
|
||||
services.openssh.enable = true;
|
||||
# Hardware acceleration support
|
||||
hardware.graphics.extraPackages = with pkgs; [
|
||||
intel-media-driver
|
||||
];
|
||||
# Enable udisks2 for removable media support
|
||||
services.udisks2.enable = true;
|
||||
# Can't disable sudo due to dependency for nixos-rebuild
|
||||
# security.sudo.enable = false;
|
||||
# Setup doas
|
||||
security.doas = {
|
||||
enable = true;
|
||||
extraRules = [{
|
||||
users = ["lunita"];
|
||||
keepEnv = true;
|
||||
noPass = true;
|
||||
}];
|
||||
};
|
||||
|
||||
# System package definitions
|
||||
environment.systemPackages = with pkgs; [
|
||||
neovim # Terminal text editor
|
||||
wget # coreutil for some script compatibility
|
||||
wiremix # TUI mixer for pipewire
|
||||
];
|
||||
}
|
||||
95
nix/hosts/dots/.emacs.d/init.el
Executable file
95
nix/hosts/dots/.emacs.d/init.el
Executable file
|
|
@ -0,0 +1,95 @@
|
|||
; Setting default Emacs window dimensions
|
||||
(push '(tool-bar-lines . 0) default-frame-alist)
|
||||
(push '(width . 75) default-frame-alist)
|
||||
(push '(height . 30) default-frame-alist)
|
||||
;; Setting default font
|
||||
(set-frame-font
|
||||
(cond
|
||||
((member "Monocraft" (font-family-list)) "Monocraft")
|
||||
((member "Miracode" (font-family-list)) "Miracode")
|
||||
((member "Cascadia Mono-16" (font-family-list)) "Cascadia Mono")
|
||||
(t nil)
|
||||
)
|
||||
t t
|
||||
)
|
||||
;; Set default tab width (in spaces)
|
||||
(setq-default tab-width 2)
|
||||
;; Store customizations in a separate file
|
||||
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
|
||||
;; Load it if the file exists
|
||||
(when (file-exists-p custom-file)
|
||||
(load custom-file))
|
||||
;; Setup MELPA
|
||||
(require 'package) (setq package-archives '(("melpa" . "https://melpa.org/packages/") ("org" . "https://orgmode.org/elpa/") ("elpa" . "https://elpa.gnu.org/packages/")))
|
||||
;; Setup package.el
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-refresh-contents)
|
||||
(package-install 'use-package)
|
||||
(eval-when-compile
|
||||
(unless (bound-and-true-p package--initialized)
|
||||
(package-initialize))
|
||||
(require 'use-package)))
|
||||
(setq use-package-always-ensure t)
|
||||
;; For up to date org mode.
|
||||
(use-package org)
|
||||
;; Enable Org mode
|
||||
(require 'org)
|
||||
;; Enable Babel for specific languages
|
||||
(org-babel-do-load-languages
|
||||
'org-babel-load-languages
|
||||
'((emacs-lisp . t) ;; Elisp support
|
||||
(scheme . t) ;; Scheme Lisp support
|
||||
(lisp . t) ;; Common Lisp support
|
||||
(lua . t) ;; Lua support
|
||||
(latex . t) ;; Latex support
|
||||
(shell . t)) ;; Posix Shell support
|
||||
)
|
||||
;; Set the default export directory
|
||||
(setq org-export-directory "~/org_exports/")
|
||||
;; Show inline images in org documents
|
||||
(setq org-startup-with-inline-images t)
|
||||
;; Set default directory based on operating system
|
||||
(cond
|
||||
;; If using Windows
|
||||
((eq system-type 'windows-nt)
|
||||
(setq default-directory (format "C:\\Users\\%s\\Documents" (user-login-name))))
|
||||
;; If using GNU/Linux
|
||||
((eq system-type 'gnu/linux)
|
||||
(setq default-directory (format "/home/%s" (user-login-name))))
|
||||
;; If using macOS
|
||||
((eq system-type 'darwin)
|
||||
(setq default-directory (format "/Users/%s" (user-login-name))))
|
||||
)
|
||||
;; Themeing
|
||||
(use-package gruvbox-theme) ;; Gruvbox is comfy
|
||||
(load-theme 'gruvbox-dark-hard) ;; Dark because I'm a parasite
|
||||
; For Unix-like operating systems only running the GUI.
|
||||
(add-to-list 'default-frame-alist '(alpha-background . 80))
|
||||
(use-package doom-modeline
|
||||
:ensure t
|
||||
:init (doom-modeline-mode 1))
|
||||
;; Technically useless but cute for fullscreen editing.
|
||||
(use-package nyan-mode
|
||||
:init
|
||||
(nyan-mode))
|
||||
;; Requires the JetBrains Mono font be installed on the system.
|
||||
(add-to-list 'default-frame-alist '(font . "JetBrains Mono-12"))
|
||||
;; I've been using Neovim a lot lately, so I'm using Evil mode for the
|
||||
;; time being. I think XFK is technically better, but it messes with
|
||||
;; my muscle memory a bit, and I need to be able to get stuff done,
|
||||
;; frankly. I'm already wasting time configuring Emacs (*  ̄︿ ̄)
|
||||
(use-package evil
|
||||
:init ;; tweak evil's configuration before loading it
|
||||
(setq evil-want-keybinding nil)
|
||||
(setq evil-vsplit-window-right t)
|
||||
(setq evil-split-window-below t)
|
||||
(evil-mode)
|
||||
)
|
||||
;; MINIMALISM
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
;; Misc stuff
|
||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(column-number-mode 1)
|
||||
(setq make-backup-files nil)
|
||||
(setq global-visual-line-mode t)
|
||||
19
nix/hosts/dots/ghostty/config
Executable file
19
nix/hosts/dots/ghostty/config
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
font-family = "Miracode"
|
||||
background-opacity = 0.8
|
||||
theme = "IC_Orange_PPL"
|
||||
|
||||
mouse-hide-while-typing = true
|
||||
|
||||
keybind = ctrl+n=new_window
|
||||
keybind = ctrl+h=goto_split:left
|
||||
keybind = ctrl+j=goto_split:down
|
||||
keybind = ctrl+k=goto_split:up
|
||||
keybind = ctrl+l=goto_split:right
|
||||
|
||||
keybind = ctrl+shift+h=new_split:left
|
||||
keybind = ctrl+shift+j=new_split:down
|
||||
keybind = ctrl+shift+k=new_split:up
|
||||
keybind = ctrl+shift+l=new_split:right
|
||||
keybind = ctrl+f=toggle_split_zoom
|
||||
|
||||
window-save-state = always
|
||||
BIN
nix/hosts/dots/hypr/bg.jpg
Executable file
BIN
nix/hosts/dots/hypr/bg.jpg
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
238
nix/hosts/dots/hypr/hyprland.conf
Executable file
238
nix/hosts/dots/hypr/hyprland.conf
Executable file
|
|
@ -0,0 +1,238 @@
|
|||
ecosystem:no_update_news = true
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Monitors/
|
||||
monitor=,preferred,auto,auto
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
$terminal = ghostty
|
||||
$browser = firefox
|
||||
$fileManager = lf
|
||||
|
||||
############################
|
||||
### AUTO STARTUP ###
|
||||
############################
|
||||
exec-once = bash ~/.config/hypr/start.sh
|
||||
exec-once = $terminal
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hypr.land/Configuring/Variables/
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 15
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
decoration {
|
||||
rounding = 10
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 0.70
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hypr.land/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
misc {
|
||||
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
gestures {
|
||||
workspace_swipe = true;
|
||||
}
|
||||
|
||||
###################
|
||||
### Keybindings ###
|
||||
###################
|
||||
$mainMod = SUPER Control_L Alt_L Shift # Primary mod key is Hyper key
|
||||
$secMod = SUPER # Secondary mod key is Super
|
||||
$tMod = Alt # Third mod key is Alt
|
||||
bind = $mainMod, T, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod, Escape, exit,
|
||||
bind = $secMod, S, exec, grim -l 0 -g "$(slurp)" - | wl-copy
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, B, exec, $browser
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, D, exec, rofi -show drun -show-icons
|
||||
|
||||
# Move focus with Alt + arrow keys
|
||||
bind = $tMod, H, movefocus, l
|
||||
bind = $tMod, L, movefocus, r
|
||||
bind = $tMod, K, movefocus, u
|
||||
bind = $tMod, J, movefocus, d
|
||||
|
||||
# Switch workspaces with Alt + [Q-P]
|
||||
bind = $tMod, Q, workspace, 1
|
||||
bind = $tMod, W, workspace, 2
|
||||
bind = $tMod, E, workspace, 3
|
||||
bind = $tMod, R, workspace, 4
|
||||
bind = $tMod, T, workspace, 5
|
||||
bind = $tMod, Y, workspace, 6
|
||||
bind = $tMod, U, workspace, 7
|
||||
bind = $tMod, I, workspace, 8
|
||||
bind = $tMod, O, workspace, 9
|
||||
bind = $tMod, P, workspace, 10
|
||||
|
||||
# Move active window to a workspace with Alt + Shift + [Q-P]
|
||||
bind = $tMod SHIFT, Q, movetoworkspace, 1
|
||||
bind = $tMod SHIFT, W, movetoworkspace, 2
|
||||
bind = $tMod SHIFT, E, movetoworkspace, 3
|
||||
bind = $tMod SHIFT, R, movetoworkspace, 4
|
||||
bind = $tMod SHIFT, T, movetoworkspace, 5
|
||||
bind = $tMod SHIFT, Y, movetoworkspace, 6
|
||||
bind = $tMod SHIFT, U, movetoworkspace, 7
|
||||
bind = $tMod SHIFT, I, movetoworkspace, 8
|
||||
bind = $tMod SHIFT, O, movetoworkspace, 9
|
||||
bind = $tMod SHIFT, P, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $tMod, S, togglespecialworkspace, magic
|
||||
bind = $tMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
6
nix/hosts/dots/hypr/start.sh
Executable file
6
nix/hosts/dots/hypr/start.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/usr/bin/env bash
|
||||
# Wallpaper daemon (swww)
|
||||
swww-daemon &
|
||||
swww img ~/.config/hypr/bg.jpg &
|
||||
waybar &
|
||||
dunst
|
||||
58
nix/hosts/dots/mpv/mpv.conf
Executable file
58
nix/hosts/dots/mpv/mpv.conf
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
profile=gpu-hq
|
||||
vo=gpu-next
|
||||
opengl-es=yes
|
||||
|
||||
[image]
|
||||
osc=no
|
||||
sub-auto=no
|
||||
audio-file=no
|
||||
term-status-msg=
|
||||
loop-file=inf
|
||||
no-pause
|
||||
video-aspect-override=no
|
||||
geometry=720x360
|
||||
|
||||
[extension.png]
|
||||
profile=image
|
||||
|
||||
[extension.jpg]
|
||||
profile=image
|
||||
|
||||
[extension.jpeg]
|
||||
profile=image
|
||||
|
||||
[extension.webp]
|
||||
profile=image
|
||||
|
||||
[extension.gif]
|
||||
profile=image
|
||||
|
||||
[audio]
|
||||
volume=50
|
||||
geometry=300x300
|
||||
|
||||
[extension.mp3]
|
||||
profile=audio
|
||||
|
||||
[extension.ogg]
|
||||
profile=audio
|
||||
|
||||
[extension.flac]
|
||||
profile=audio
|
||||
|
||||
[extension.wav]
|
||||
profile=audio
|
||||
|
||||
[vids]
|
||||
geometry=640x300
|
||||
volume=50
|
||||
|
||||
[extension.webm]
|
||||
profile=vids
|
||||
loop-file=inf
|
||||
|
||||
[extension.mp4]
|
||||
profile=vids
|
||||
|
||||
[extension.mkv]
|
||||
profile=vids
|
||||
862
nix/hosts/dots/neofetch/config.conf
Executable file
862
nix/hosts/dots/neofetch/config.conf
Executable file
|
|
@ -0,0 +1,862 @@
|
|||
print_info() {
|
||||
info title
|
||||
info underline
|
||||
|
||||
info "OS" distro
|
||||
info "Host" model
|
||||
# info "Kernel" kernel
|
||||
info "Uptime" uptime
|
||||
# info "Packages" packages
|
||||
# info "Shell" shell
|
||||
info "Resolution" resolution
|
||||
# info "DE" de
|
||||
# info "WM" wm
|
||||
# info "WM Theme" wm_theme
|
||||
# info "Theme" theme
|
||||
# info "Icons" icons
|
||||
# info "Terminal" term
|
||||
# info "Terminal Font" term_font
|
||||
info "CPU" cpu
|
||||
# info "GPU" gpu
|
||||
info "Memory" memory
|
||||
|
||||
# info "GPU Driver" gpu_driver # Linux/macOS only
|
||||
# info "CPU Usage" cpu_usage
|
||||
info "Disk" disk
|
||||
info "Battery" battery
|
||||
# info "Font" font
|
||||
info "Song" song
|
||||
[[ "$player" ]] && prin "Music Player" "$player"
|
||||
info "Local IP" local_ip
|
||||
# info "Public IP" public_ip
|
||||
# info "Users" users
|
||||
# info "Locale" locale # This only works on glibc systems.
|
||||
|
||||
info cols
|
||||
}
|
||||
|
||||
# Title
|
||||
|
||||
|
||||
# Hide/Show Fully qualified domain name.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --title_fqdn
|
||||
title_fqdn="off"
|
||||
|
||||
|
||||
# Kernel
|
||||
|
||||
|
||||
# Shorten the output of the kernel function.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --kernel_shorthand
|
||||
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
|
||||
#
|
||||
# Example:
|
||||
# on: '4.8.9-1-ARCH'
|
||||
# off: 'Linux 4.8.9-1-ARCH'
|
||||
kernel_shorthand="on"
|
||||
|
||||
|
||||
# Distro
|
||||
|
||||
|
||||
# Shorten the output of the distro function
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --distro_shorthand
|
||||
# Supports: Everything except Windows and Haiku
|
||||
distro_shorthand="off"
|
||||
|
||||
# Show/Hide OS Architecture.
|
||||
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --os_arch
|
||||
#
|
||||
# Example:
|
||||
# on: 'Arch Linux x86_64'
|
||||
# off: 'Arch Linux'
|
||||
os_arch="off"
|
||||
|
||||
|
||||
# Uptime
|
||||
|
||||
|
||||
# Shorten the output of the uptime function
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --uptime_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: '2 days, 10 hours, 3 mins'
|
||||
# tiny: '2d 10h 3m'
|
||||
# off: '2 days, 10 hours, 3 minutes'
|
||||
uptime_shorthand="tiny"
|
||||
|
||||
|
||||
# Memory
|
||||
|
||||
|
||||
# Show memory pecentage in output.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --memory_percent
|
||||
#
|
||||
# Example:
|
||||
# on: '1801MiB / 7881MiB (22%)'
|
||||
# off: '1801MiB / 7881MiB'
|
||||
memory_percent="off"
|
||||
|
||||
# Change memory output unit.
|
||||
#
|
||||
# Default: 'mib'
|
||||
# Values: 'kib', 'mib', 'gib'
|
||||
# Flag: --memory_unit
|
||||
#
|
||||
# Example:
|
||||
# kib '1020928KiB / 7117824KiB'
|
||||
# mib '1042MiB / 6951MiB'
|
||||
# gib: ' 0.98GiB / 6.79GiB'
|
||||
memory_unit="gib"
|
||||
|
||||
|
||||
# Packages
|
||||
|
||||
|
||||
# Show/Hide Package Manager names.
|
||||
#
|
||||
# Default: 'tiny'
|
||||
# Values: 'on', 'tiny' 'off'
|
||||
# Flag: --package_managers
|
||||
#
|
||||
# Example:
|
||||
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
|
||||
# tiny: '908 (pacman, flatpak, snap)'
|
||||
# off: '908'
|
||||
package_managers="on"
|
||||
|
||||
|
||||
# Shell
|
||||
|
||||
|
||||
# Show the path to $SHELL
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_path
|
||||
#
|
||||
# Example:
|
||||
# on: '/bin/bash'
|
||||
# off: 'bash'
|
||||
shell_path="off"
|
||||
|
||||
# Show $SHELL version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_version
|
||||
#
|
||||
# Example:
|
||||
# on: 'bash 4.4.5'
|
||||
# off: 'bash'
|
||||
shell_version="on"
|
||||
|
||||
|
||||
# CPU
|
||||
|
||||
|
||||
# CPU speed type
|
||||
#
|
||||
# Default: 'bios_limit'
|
||||
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
|
||||
# Flag: --speed_type
|
||||
# Supports: Linux with 'cpufreq'
|
||||
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
|
||||
speed_type="bios_limit"
|
||||
|
||||
# CPU speed shorthand
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'.
|
||||
# Flag: --speed_shorthand
|
||||
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
|
||||
#
|
||||
# Example:
|
||||
# on: 'i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'i7-6500U (4) @ 3.100GHz'
|
||||
speed_shorthand="on"
|
||||
|
||||
# Enable/Disable CPU brand in output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U'
|
||||
# off: 'i7-6500U (4)'
|
||||
cpu_brand="on"
|
||||
|
||||
# CPU Speed
|
||||
# Hide/Show CPU speed.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_speed
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'Intel i7-6500U (4)'
|
||||
cpu_speed="on"
|
||||
|
||||
# CPU Cores
|
||||
# Display CPU cores in output
|
||||
#
|
||||
# Default: 'logical'
|
||||
# Values: 'logical', 'physical', 'off'
|
||||
# Flag: --cpu_cores
|
||||
# Support: 'physical' doesn't work on BSD.
|
||||
#
|
||||
# Example:
|
||||
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
|
||||
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
|
||||
# off: 'Intel i7-6500U @ 3.1GHz'
|
||||
cpu_cores="logical"
|
||||
|
||||
# CPU Temperature
|
||||
# Hide/Show CPU temperature.
|
||||
# Note the temperature is added to the regular CPU function.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'C', 'F', 'off'
|
||||
# Flag: --cpu_temp
|
||||
# Supports: Linux, BSD
|
||||
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
|
||||
# coretemp kernel module. This only supports newer Intel processors.
|
||||
#
|
||||
# Example:
|
||||
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
|
||||
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
|
||||
# off: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
cpu_temp="C"
|
||||
|
||||
|
||||
# GPU
|
||||
|
||||
|
||||
# Enable/Disable GPU Brand
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'AMD HD 7950'
|
||||
# off: 'HD 7950'
|
||||
gpu_brand="on"
|
||||
|
||||
# Which GPU to display
|
||||
#
|
||||
# Default: 'all'
|
||||
# Values: 'all', 'dedicated', 'integrated'
|
||||
# Flag: --gpu_type
|
||||
# Supports: Linux
|
||||
#
|
||||
# Example:
|
||||
# all:
|
||||
# GPU1: AMD HD 7950
|
||||
# GPU2: Intel Integrated Graphics
|
||||
#
|
||||
# dedicated:
|
||||
# GPU1: AMD HD 7950
|
||||
#
|
||||
# integrated:
|
||||
# GPU1: Intel Integrated Graphics
|
||||
gpu_type="all"
|
||||
|
||||
|
||||
# Resolution
|
||||
|
||||
|
||||
# Display refresh rate next to each monitor
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --refresh_rate
|
||||
# Supports: Doesn't work on Windows.
|
||||
#
|
||||
# Example:
|
||||
# on: '1920x1080 @ 60Hz'
|
||||
# off: '1920x1080'
|
||||
refresh_rate="on"
|
||||
|
||||
|
||||
# Gtk Theme / Icons / Font
|
||||
|
||||
|
||||
# Shorten output of GTK Theme / Icons / Font
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix, Adwaita'
|
||||
# off: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
gtk_shorthand="off"
|
||||
|
||||
|
||||
# Enable/Disable gtk2 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk2
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Adwaita [GTK3]'
|
||||
gtk2="on"
|
||||
|
||||
# Enable/Disable gtk3 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk3
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Numix [GTK2]'
|
||||
gtk3="on"
|
||||
|
||||
|
||||
# IP Address
|
||||
|
||||
|
||||
# Website to ping for the public IP
|
||||
#
|
||||
# Default: 'http://ident.me'
|
||||
# Values: 'url'
|
||||
# Flag: --ip_host
|
||||
public_ip_host="http://ident.me"
|
||||
|
||||
# Public IP timeout.
|
||||
#
|
||||
# Default: '2'
|
||||
# Values: 'int'
|
||||
# Flag: --ip_timeout
|
||||
public_ip_timeout=2
|
||||
|
||||
|
||||
# Desktop Environment
|
||||
|
||||
|
||||
# Show Desktop Environment version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --de_version
|
||||
de_version="on"
|
||||
|
||||
|
||||
# Disk
|
||||
|
||||
|
||||
# Which disks to display.
|
||||
# The values can be any /dev/sdXX, mount point or directory.
|
||||
# NOTE: By default we only show the disk info for '/'.
|
||||
#
|
||||
# Default: '/'
|
||||
# Values: '/', '/dev/sdXX', '/path/to/drive'.
|
||||
# Flag: --disk_show
|
||||
#
|
||||
# Example:
|
||||
# disk_show=('/' '/dev/sdb1'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
|
||||
#
|
||||
# disk_show=('/'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
#
|
||||
disk_show=('/')
|
||||
|
||||
# Disk subtitle.
|
||||
# What to append to the Disk subtitle.
|
||||
#
|
||||
# Default: 'mount'
|
||||
# Values: 'mount', 'name', 'dir', 'none'
|
||||
# Flag: --disk_subtitle
|
||||
#
|
||||
# Example:
|
||||
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
|
||||
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
|
||||
#
|
||||
# mount: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# dir: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# none: 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
disk_subtitle="mount"
|
||||
|
||||
# Disk percent.
|
||||
# Show/Hide disk percent.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --disk_percent
|
||||
#
|
||||
# Example:
|
||||
# on: 'Disk (/): 74G / 118G (66%)'
|
||||
# off: 'Disk (/): 74G / 118G'
|
||||
disk_percent="on"
|
||||
|
||||
|
||||
# Song
|
||||
|
||||
|
||||
# Manually specify a music player.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'player-name'
|
||||
# Flag: --music_player
|
||||
#
|
||||
# Available values for 'player-name':
|
||||
#
|
||||
# amarok
|
||||
# audacious
|
||||
# banshee
|
||||
# bluemindo
|
||||
# clementine
|
||||
# cmus
|
||||
# deadbeef
|
||||
# deepin-music
|
||||
# dragon
|
||||
# elisa
|
||||
# exaile
|
||||
# gnome-music
|
||||
# gmusicbrowser
|
||||
# gogglesmm
|
||||
# guayadeque
|
||||
# io.elementary.music
|
||||
# iTunes
|
||||
# juk
|
||||
# lollypop
|
||||
# mocp
|
||||
# mopidy
|
||||
# mpd
|
||||
# muine
|
||||
# netease-cloud-music
|
||||
# olivia
|
||||
# playerctl
|
||||
# pogo
|
||||
# pragha
|
||||
# qmmp
|
||||
# quodlibet
|
||||
# rhythmbox
|
||||
# sayonara
|
||||
# smplayer
|
||||
# spotify
|
||||
# strawberry
|
||||
# tauonmb
|
||||
# tomahawk
|
||||
# vlc
|
||||
# xmms2d
|
||||
# xnoise
|
||||
# yarock
|
||||
music_player="auto"
|
||||
|
||||
# Format to display song information.
|
||||
#
|
||||
# Default: '%artist% - %album% - %title%'
|
||||
# Values: '%artist%', '%album%', '%title%'
|
||||
# Flag: --song_format
|
||||
#
|
||||
# Example:
|
||||
# default: 'Song: Jet - Get Born - Sgt Major'
|
||||
song_format="%artist% - %album% - %title%"
|
||||
|
||||
# Print the Artist, Album and Title on separate lines
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --song_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Artist: The Fratellis'
|
||||
# 'Album: Costello Music'
|
||||
# 'Song: Chelsea Dagger'
|
||||
#
|
||||
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
|
||||
song_shorthand="off"
|
||||
|
||||
# 'mpc' arguments (specify a host, password etc).
|
||||
#
|
||||
# Default: ''
|
||||
# Example: mpc_args=(-h HOST -P PASSWORD)
|
||||
mpc_args=()
|
||||
|
||||
|
||||
# Text Colors
|
||||
|
||||
|
||||
# Text Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --colors
|
||||
#
|
||||
# Each number represents a different part of the text in
|
||||
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
|
||||
#
|
||||
# Example:
|
||||
# colors=(distro) - Text is colored based on Distro colors.
|
||||
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
|
||||
colors=(distro)
|
||||
|
||||
|
||||
# Text Options
|
||||
|
||||
|
||||
# Toggle bold text
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bold
|
||||
bold="on"
|
||||
|
||||
# Enable/Disable Underline
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --underline
|
||||
underline_enabled="on"
|
||||
|
||||
# Underline character
|
||||
#
|
||||
# Default: '-'
|
||||
# Values: 'string'
|
||||
# Flag: --underline_char
|
||||
underline_char="-"
|
||||
|
||||
|
||||
# Info Separator
|
||||
# Replace the default separator with the specified string.
|
||||
#
|
||||
# Default: ':'
|
||||
# Flag: --separator
|
||||
#
|
||||
# Example:
|
||||
# separator="->": 'Shell-> bash'
|
||||
# separator=" =": 'WM = dwm'
|
||||
separator=":"
|
||||
|
||||
|
||||
# Color Blocks
|
||||
|
||||
|
||||
# Color block range
|
||||
# The range of colors to print.
|
||||
#
|
||||
# Default: '0', '15'
|
||||
# Values: 'num'
|
||||
# Flag: --block_range
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# Display colors 0-7 in the blocks. (8 colors)
|
||||
# neofetch --block_range 0 7
|
||||
#
|
||||
# Display colors 0-15 in the blocks. (16 colors)
|
||||
# neofetch --block_range 0 15
|
||||
block_range=(0 15)
|
||||
|
||||
# Toggle color blocks
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --color_blocks
|
||||
color_blocks="on"
|
||||
|
||||
# Color block width in spaces
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num'
|
||||
# Flag: --block_width
|
||||
block_width=3
|
||||
|
||||
# Color block height in lines
|
||||
#
|
||||
# Default: '1'
|
||||
# Values: 'num'
|
||||
# Flag: --block_height
|
||||
block_height=1
|
||||
|
||||
# Color Alignment
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'num'
|
||||
# Flag: --col_offset
|
||||
#
|
||||
# Number specifies how far from the left side of the terminal (in spaces) to
|
||||
# begin printing the columns, in case you want to e.g. center them under your
|
||||
# text.
|
||||
# Example:
|
||||
# col_offset="auto" - Default behavior of neofetch
|
||||
# col_offset=7 - Leave 7 spaces then print the colors
|
||||
col_offset="auto"
|
||||
|
||||
# Progress Bars
|
||||
|
||||
|
||||
# Bar characters
|
||||
#
|
||||
# Default: '-', '='
|
||||
# Values: 'string', 'string'
|
||||
# Flag: --bar_char
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_char 'elapsed' 'total'
|
||||
# neofetch --bar_char '-' '='
|
||||
bar_char_elapsed="-"
|
||||
bar_char_total="="
|
||||
|
||||
# Toggle Bar border
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bar_border
|
||||
bar_border="on"
|
||||
|
||||
# Progress bar length in spaces
|
||||
# Number of chars long to make the progress bars.
|
||||
#
|
||||
# Default: '15'
|
||||
# Values: 'num'
|
||||
# Flag: --bar_length
|
||||
bar_length=15
|
||||
|
||||
# Progress bar colors
|
||||
# When set to distro, uses your distro's logo colors.
|
||||
#
|
||||
# Default: 'distro', 'distro'
|
||||
# Values: 'distro', 'num'
|
||||
# Flag: --bar_colors
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_colors 3 4
|
||||
# neofetch --bar_colors distro 5
|
||||
bar_color_elapsed="distro"
|
||||
bar_color_total="distro"
|
||||
|
||||
|
||||
# Info display
|
||||
# Display a bar with the info.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'bar', 'infobar', 'barinfo', 'off'
|
||||
# Flags: --cpu_display
|
||||
# --memory_display
|
||||
# --battery_display
|
||||
# --disk_display
|
||||
#
|
||||
# Example:
|
||||
# bar: '[---=======]'
|
||||
# infobar: 'info [---=======]'
|
||||
# barinfo: '[---=======] info'
|
||||
# off: 'info'
|
||||
cpu_display="off"
|
||||
memory_display="off"
|
||||
battery_display="off"
|
||||
disk_display="off"
|
||||
|
||||
|
||||
# Backend Settings
|
||||
|
||||
|
||||
# Image backend.
|
||||
#
|
||||
# Default: 'ascii'
|
||||
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
|
||||
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
|
||||
# Flag: --backend
|
||||
image_backend="ascii"
|
||||
|
||||
# Image Source
|
||||
#
|
||||
# Which image or ascii file to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
|
||||
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
|
||||
# Flag: --source
|
||||
#
|
||||
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
|
||||
# In ascii mode, distro ascii art will be used and in an image mode, your
|
||||
# wallpaper will be used.
|
||||
image_source="auto"
|
||||
|
||||
|
||||
# Ascii Options
|
||||
|
||||
|
||||
# Ascii distro
|
||||
# Which distro's ascii art to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'distro_name'
|
||||
# Flag: --ascii_distro
|
||||
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
|
||||
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
|
||||
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
|
||||
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
|
||||
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
|
||||
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
|
||||
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
|
||||
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
|
||||
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
|
||||
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
|
||||
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
|
||||
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
|
||||
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
|
||||
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
|
||||
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
|
||||
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
|
||||
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
|
||||
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
|
||||
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
|
||||
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
|
||||
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
|
||||
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
|
||||
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
|
||||
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
|
||||
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
|
||||
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
|
||||
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
|
||||
# and IRIX have ascii logos
|
||||
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
|
||||
# Use '{distro name}_old' to use the old logos.
|
||||
# NOTE: Ubuntu has flavor variants.
|
||||
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
|
||||
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
|
||||
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
|
||||
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
|
||||
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
|
||||
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
|
||||
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
|
||||
# postmarketOS, and Void have a smaller logo variant.
|
||||
# Use '{distro name}_small' to use the small variants.
|
||||
ascii_distro="GNU"
|
||||
|
||||
# Ascii Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --ascii_colors
|
||||
#
|
||||
# Example:
|
||||
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
|
||||
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
|
||||
ascii_colors=(distro)
|
||||
|
||||
# Bold ascii logo
|
||||
# Whether or not to bold the ascii logo.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --ascii_bold
|
||||
ascii_bold="on"
|
||||
|
||||
|
||||
# Image Options
|
||||
|
||||
|
||||
# Image loop
|
||||
# Setting this to on will make neofetch redraw the image constantly until
|
||||
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --loop
|
||||
image_loop="off"
|
||||
|
||||
# Thumbnail directory
|
||||
#
|
||||
# Default: '~/.cache/thumbnails/neofetch'
|
||||
# Values: 'dir'
|
||||
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
|
||||
|
||||
# Crop mode
|
||||
#
|
||||
# Default: 'normal'
|
||||
# Values: 'normal', 'fit', 'fill'
|
||||
# Flag: --crop_mode
|
||||
#
|
||||
# See this wiki page to learn about the fit and fill options.
|
||||
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
|
||||
crop_mode="normal"
|
||||
|
||||
# Crop offset
|
||||
# Note: Only affects 'normal' crop mode.
|
||||
#
|
||||
# Default: 'center'
|
||||
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
|
||||
# 'east', 'southwest', 'south', 'southeast'
|
||||
# Flag: --crop_offset
|
||||
crop_offset="center"
|
||||
|
||||
# Image size
|
||||
# The image is half the terminal width by default.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', '00px', '00%', 'none'
|
||||
# Flags: --image_size
|
||||
# --size
|
||||
image_size="auto"
|
||||
|
||||
# Gap between image and text
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num', '-num'
|
||||
# Flag: --gap
|
||||
gap=3
|
||||
|
||||
# Image offsets
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: '0'
|
||||
# Values: 'px'
|
||||
# Flags: --xoffset
|
||||
# --yoffset
|
||||
yoffset=0
|
||||
xoffset=0
|
||||
|
||||
# Image background color
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: ''
|
||||
# Values: 'color', 'blue'
|
||||
# Flag: --bg_color
|
||||
background_color=
|
||||
|
||||
|
||||
# Misc Options
|
||||
|
||||
# Stdout mode
|
||||
# Turn off all colors and disables image backend (ASCII/Image).
|
||||
# Useful for piping into another command.
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
stdout="off"
|
||||
140
nix/hosts/dots/nvim/init.lua
Executable file
140
nix/hosts/dots/nvim/init.lua
Executable file
|
|
@ -0,0 +1,140 @@
|
|||
-- ===================================
|
||||
-- | General Neovim Configuration |
|
||||
-- ===================================
|
||||
-- I won't lie to you, I vibecoded the boilerplate for this stuff.
|
||||
-- Aside from Emacs, I don't really like having to configure my editors
|
||||
-- very much. Basic understanding of the config is all I really prioritize.
|
||||
vim.opt.number = true -- Show line numbers
|
||||
vim.opt.relativenumber = true -- Show relative line numbers
|
||||
vim.opt.tabstop = 2 -- A tab is 2 spaces
|
||||
vim.opt.shiftwidth = 2 -- Indent is 2 spaces
|
||||
vim.opt.expandtab = true -- Use spaces instead of tabs
|
||||
vim.opt.termguicolors = true -- Enable terminal colors
|
||||
vim.opt.scrolloff = 8 -- Lines above/below cursor
|
||||
vim.opt.signcolumn = "yes" -- Always show the sign column
|
||||
-- Set the leader key to space. This is a crucial step for custom mappings.
|
||||
vim.g.mapleader = " "
|
||||
-- ====================================
|
||||
-- | Plugin Management with lazy.nvim |
|
||||
-- ====================================
|
||||
-- The configuration below bootstraps lazy.nvim if it's not already installed.
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({
|
||||
"git", "clone", "--filter=blob:none",
|
||||
"https://github.com/folke/lazy.nvim.git", lazypath
|
||||
})
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
-- Setup the plugins you need.
|
||||
require("lazy").setup({
|
||||
-- For background transparency
|
||||
{ 'xiyaowong/transparent.nvim' },
|
||||
-- === The colorscheme plugin is specified here. ===
|
||||
-- Gruvbox theme plugin. It will be automatically installed by lazy.nvim.
|
||||
{ 'ellisonleao/gruvbox.nvim', config = function()
|
||||
-- Ensure the background is set to 'dark' for the gruvbox colorscheme.
|
||||
vim.o.background = 'dark'
|
||||
-- Load the colorscheme.
|
||||
vim.cmd.colorscheme("gruvbox")
|
||||
end },
|
||||
-- Treesitter plugin for syntax highlighting.
|
||||
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
|
||||
-- Autocomplete plugins
|
||||
{ "hrsh7th/nvim-cmp" },
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "L3MON4D3/LuaSnip" },
|
||||
{ "neovim/nvim-lspconfig" },
|
||||
-- Plugin to automatically close paired characters like (), {}, [], and ""
|
||||
{ 'echasnovski/mini.pairs' },
|
||||
-- File tree and icon plugins
|
||||
{
|
||||
'nvim-tree/nvim-tree.lua',
|
||||
version = '*',
|
||||
lazy = false,
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
config = function()
|
||||
-- The setup call for the nvim-tree plugin.
|
||||
require('nvim-tree').setup {}
|
||||
end
|
||||
},
|
||||
})
|
||||
-- Transparent configuration
|
||||
require('transparent').setup({
|
||||
enable = true, -- boolean: enable transparent
|
||||
extra_groups = { -- table: additional groups to clear
|
||||
'Normal', 'NormalNC', 'Comment', 'Constant', 'Identifier',
|
||||
'Statement', 'PreProc', 'Type', 'Special', 'Underlined',
|
||||
'Todo', 'String', 'Function', 'Conditional', 'Repeat',
|
||||
'Operator', 'Structure', 'LineNr', 'SignColumn', 'EndOfBuffer'
|
||||
},
|
||||
})
|
||||
-- Treesitter configuration.
|
||||
require("nvim-treesitter.configs").setup({
|
||||
highlight = { enable = true },
|
||||
-- You can specify languages to install with `ensure_installed`.
|
||||
-- e.g., ensure_installed = { "lua", "python", "javascript" },
|
||||
})
|
||||
-- Autocomplete (cmp) configuration.
|
||||
local cmp = require("cmp")
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args) require("luasnip").lsp_expand(args.body) end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<Tab>"] = cmp.mapping.select_next_item(),
|
||||
["<S-Tab>"] = cmp.mapping.select_prev_item(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||
}),
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
},
|
||||
})
|
||||
-- Mini.pairs configuration.
|
||||
-- This simple setup is all that's needed for the basic functionality.
|
||||
require('mini.pairs').setup({})
|
||||
-- ===================================
|
||||
-- | Custom Keymaps |
|
||||
-- ===================================
|
||||
-- Keymaps are custom commands mapped to a specific key combination.
|
||||
-- The "<leader>" prefix will be replaced with your leader key, which is "space".
|
||||
-- Split creation keymaps
|
||||
vim.keymap.set('n', '<leader>sv', ':vsplit<CR>', { desc = 'Create a vertical split' })
|
||||
vim.keymap.set('n', '<leader>ss', ':split<CR>', { desc = 'Create a horizontal split' })
|
||||
-- Buffer navigation
|
||||
-- <leader>bh/j/k/l to navigate between buffers
|
||||
vim.keymap.set('n', '<leader>bh', ':bprev<CR>', { desc = 'Go to previous buffer' })
|
||||
vim.keymap.set('n', '<leader>bl', ':bnext<CR>', { desc = 'Go to next buffer' })
|
||||
-- The following mappings are less common, but fulfill your request.
|
||||
vim.keymap.set('n', '<leader>bj', ':bnext<CR>', { desc = 'Go to next buffer' })
|
||||
vim.keymap.set('n', '<leader>bk', ':bprev<CR>', { desc = 'Go to previous buffer' })
|
||||
-- Split navigation
|
||||
-- <leader>sh/j/k/l to move between splits
|
||||
vim.keymap.set('n', '<leader>sh', '<C-w>h', { desc = 'Move to left split' })
|
||||
vim.keymap.set('n', '<leader>sj', '<C-w>j', { desc = 'Move to split below' })
|
||||
vim.keymap.set('n', '<leader>sk', '<C-w>k', { desc = 'Move to split above' })
|
||||
vim.keymap.set('n', '<leader>sl', '<C-w>l', { desc = 'Move to right split' })
|
||||
-- Normal mode keymaps
|
||||
-- Save the current file.
|
||||
vim.keymap.set('n', '<leader>w', ':w<CR>', { desc = 'Save file' })
|
||||
-- Force quit the current window without saving.
|
||||
vim.keymap.set('n', '<leader>q', ':q!<CR>', { desc = 'Force quit window' })
|
||||
-- Save and quit.
|
||||
vim.keymap.set('n', '<leader>x', ':wq<CR>', { desc = 'Save and quit' })
|
||||
-- Save all open buffers.
|
||||
vim.keymap.set('n', '<leader>wa', ':wa<CR>', { desc = 'Save all buffers' })
|
||||
-- Close all windows except the current one.
|
||||
vim.keymap.set('n', '<leader>o', ':only<CR>', { desc = 'Close all other windows' })
|
||||
-- Toggle the file tree.
|
||||
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<CR>', { desc = 'Toggle file tree' })
|
||||
-- Select the entire file content.
|
||||
vim.keymap.set('n', '<leader>a', 'ggVG', { desc = 'Select entire file' })
|
||||
-- Various commands to compile different file types.
|
||||
-- Groff => PDF
|
||||
vim.keymap.set('n', '<leader>cg', ':!groff -ms -e %:t -T pdf > %:r.pdf<CR>', { desc = 'Compile Groff file to PDF' })
|
||||
-- Typst => PDF
|
||||
vim.keymap.set('n', '<leader>ct', ':!typst compile %:t<CR>', { desc = 'Compile Typst file to PDF'} )
|
||||
-- Keybinding to toggle transparency
|
||||
vim.api.nvim_set_keymap('n', '<leader>tt', ':TransparentToggle<CR>', { noremap = true, silent = true })
|
||||
250
nix/hosts/dots/waybar/config
Executable file
250
nix/hosts/dots/waybar/config
Executable file
|
|
@ -0,0 +1,250 @@
|
|||
[{
|
||||
"height": 40,
|
||||
"spacing": 5,
|
||||
|
||||
"modules-left": [
|
||||
"group/Utilities",
|
||||
"group/workspaces",
|
||||
"mpris"
|
||||
],
|
||||
"modules-center": [
|
||||
"group/windows"
|
||||
],
|
||||
"modules-right": [
|
||||
"group/cpuram",
|
||||
"group/system"
|
||||
],
|
||||
|
||||
"custom/openbracket": {
|
||||
"format": "[",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/closebracket": {
|
||||
"format": "]",
|
||||
"tooltip": false
|
||||
},
|
||||
"custom/split": {
|
||||
"format": "|",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"group/Utilities":{
|
||||
"orientation": "horizontal",
|
||||
"modules":[
|
||||
"custom/openbracket",
|
||||
"idle_inhibitor",
|
||||
"custom/split",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
|
||||
"group/workspaces":{
|
||||
"orientation": "horizontal",
|
||||
"modules":[
|
||||
"hyprland/workspaces",
|
||||
]
|
||||
},
|
||||
"hyprland/workspaces": {
|
||||
"all-outputs": true,
|
||||
"warp-on-scroll": false,
|
||||
"enable-bar-scroll": true,
|
||||
"disable-scroll-wraparound": true,
|
||||
"active-only": false,
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"1": "I",
|
||||
"2": "II",
|
||||
"3": "III",
|
||||
"4": "IV",
|
||||
"5": "V",
|
||||
"6": "VI",
|
||||
"7": "VII",
|
||||
"8": "VIII",
|
||||
"9": "IX",
|
||||
"10": "X",
|
||||
"default": "•"
|
||||
}
|
||||
},
|
||||
|
||||
"mpris": {
|
||||
"format": "[ {status_icon} | {dynamic} ]",
|
||||
"interval": 1,
|
||||
"dynamic-len": 40,
|
||||
"status-icons": {
|
||||
"playing": "▶",
|
||||
"paused": "⏸",
|
||||
"stopped": ""
|
||||
},
|
||||
"dynamic-order": ["artist"]
|
||||
},
|
||||
|
||||
|
||||
"group/windows": {
|
||||
"orientation":"horizontal",
|
||||
"modules":[
|
||||
"custom/openbracket",
|
||||
"hyprland/window",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
"hyprland/window": {
|
||||
"format": "{title}",
|
||||
"max-length": 40,
|
||||
"min-length": 20,
|
||||
"all-outputs": true
|
||||
},
|
||||
|
||||
|
||||
|
||||
"group/cpuram": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"custom/openbracket",
|
||||
"cpu",
|
||||
"custom/split",
|
||||
"memory",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
"cpu": {
|
||||
"format": "CPU:{usage}%",
|
||||
"tooltip": false,
|
||||
"interval": 2,
|
||||
"on-click": "kitty -e btop",
|
||||
},
|
||||
"memory":{
|
||||
"format": "RAM:{}%",
|
||||
"tooltip": false,
|
||||
"interval": 2,
|
||||
"on-click": "kitty -e btop",
|
||||
},
|
||||
|
||||
"group/brightvol": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"custom/openbracket",
|
||||
"backlight",
|
||||
"custom/split",
|
||||
"wireplumber",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
"wireplumber": {
|
||||
"scroll-step": 5,
|
||||
"format": "{icon}{volume}%",
|
||||
"format-bluetooth": "{icon}{volume}% ",
|
||||
"format-bluetooth-muted": " {icon}",
|
||||
"format-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": [" :", " :", " :"]
|
||||
},
|
||||
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle",
|
||||
"on-click-right": "pavucontrol"
|
||||
},
|
||||
"backlight": {
|
||||
"format": "{icon}:{percent}%",
|
||||
"format-icons": ["", "", "🌙"],
|
||||
"on-click": "~/.config/waybar/scripts/brightness_slider.sh"
|
||||
},
|
||||
|
||||
"group/system": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"custom/openbracket",
|
||||
"clock",
|
||||
"custom/split",
|
||||
"network",
|
||||
"custom/bluetooth",
|
||||
"custom/clipboard",
|
||||
"battery",
|
||||
"custom/swaync",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
"clock": {
|
||||
"format": "{:%I:%M}",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"onclick" : "kalender"
|
||||
},
|
||||
"custom/clipboard": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "~/.config/waybar/scripts/clipboard_menu.sh"
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{icon} {capacity}%",
|
||||
"format-full": "{icon} {capacity}%",
|
||||
"format-charging": " {capacity}%",
|
||||
"format-plugged": " {capacity}%",
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"on-click": "wlogout"
|
||||
},
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
},
|
||||
"custom/swaync": {
|
||||
"format": "",
|
||||
"exec": "swaync-client -swb",
|
||||
"on-click": "swaync-client --toggle-panel",
|
||||
"interval": 0
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"network": {
|
||||
"interface": "wlan0",
|
||||
"format-wifi": "{icon}",
|
||||
"format-ethernet": " LAN",
|
||||
"format-disconnected": "",
|
||||
"tooltip-format": "{ipaddr}\n{ssid} ({signalStrength}%)",
|
||||
"on-click": "kitty -e nmtui",
|
||||
"format-icons": [ "", "", "", "", "" ]
|
||||
},
|
||||
"custom/bluetooth": {
|
||||
"format": "{}",
|
||||
"exec": "~/.config/waybar/scripts/bluetooth_status.sh",
|
||||
"interval": 5,
|
||||
"on-click": "blueman-manager"
|
||||
},
|
||||
"group/clock": {
|
||||
"orientation": "horizontal",
|
||||
"modules": [
|
||||
"custom/openbracket",
|
||||
"clock",
|
||||
"custom/closebracket"
|
||||
]
|
||||
},
|
||||
"custom/cava": {
|
||||
"exec": "~/.config/waybar/scripts/cava_wrapper.sh",
|
||||
"format": "♪ {}",
|
||||
"restart-interval": 1,
|
||||
"max-length": 50,
|
||||
"on-click": "pkill cava"
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 14,
|
||||
"spacing": 10
|
||||
},
|
||||
"custom/notifications": {
|
||||
"format": "",
|
||||
"tooltip": false,
|
||||
"on-click": "~/.config/waybar/scripts/notification_center.sh"
|
||||
}
|
||||
}]
|
||||
193
nix/hosts/dots/waybar/style.css
Executable file
193
nix/hosts/dots/waybar/style.css
Executable file
|
|
@ -0,0 +1,193 @@
|
|||
/* colors defined at top for easy configuring */
|
||||
@define-color background #2C2A24;
|
||||
@define-color second-background #3A372F;
|
||||
@define-color text #DDD5C4;
|
||||
@define-color borders #A0907A;
|
||||
@define-color focused #D08B57;
|
||||
@define-color focused2 #BFAA80;
|
||||
@define-color color1 #7699A3;
|
||||
@define-color color2 #8D7AAE;
|
||||
@define-color color3 #78997A;
|
||||
@define-color urgent #B05A5A;
|
||||
|
||||
|
||||
/* font declared */
|
||||
* {
|
||||
font-family: "Miracode";
|
||||
font-size: 15px;
|
||||
}
|
||||
#custom-openbracket,
|
||||
#custom-closebracket{
|
||||
margin: 0 5px ;
|
||||
}
|
||||
|
||||
/* idk what all this does */
|
||||
window#waybar {
|
||||
background-color: transparent;
|
||||
border-bottom: 0;
|
||||
color: @text;
|
||||
transition: background-color 0.5s;
|
||||
}
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
window#waybar.empty #window {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
|
||||
/* configuring the modules */
|
||||
.modules-left {
|
||||
margin: 10px 0 0 10px;
|
||||
padding: 0 0 0 7px;
|
||||
background-color: @background;
|
||||
border: 2px solid @focused;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.modules-center {
|
||||
margin: 10px 0 0 0;
|
||||
padding: 0 10px 0 10px;
|
||||
background-color: @background;
|
||||
border: 2px solid @focused;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.modules-right {
|
||||
margin: 10px 10px 0 0;
|
||||
padding: 0 10px 0 10px;
|
||||
background-color: @background;
|
||||
border: 2px solid @focused;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* whats this?? */
|
||||
button {
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
/* left island */
|
||||
|
||||
/* menu pannel */
|
||||
#custom-arch,
|
||||
#custom-powerprofile,
|
||||
#custom-themeswitcher{
|
||||
padding-right: 10px;
|
||||
padding-left: 5px;
|
||||
font-size: 15px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
#custom-arch:hover {
|
||||
color: @color1;
|
||||
}
|
||||
#custom-powerprofile:hover{
|
||||
color: @color1
|
||||
}
|
||||
#custom-themeswitcher:hover {
|
||||
color: @color1;
|
||||
}
|
||||
|
||||
/* workspace pannel */
|
||||
#workspaces button {
|
||||
padding: 0 2px;
|
||||
background-color: transparent;
|
||||
color: @text;
|
||||
border-radius: 0;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
background-color: @second-background;
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @focused2;
|
||||
background-color: @second-background;
|
||||
}
|
||||
#workspaces button.urgent {
|
||||
background-color: @urgent;
|
||||
}
|
||||
|
||||
/* no idea what this does */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* media player */
|
||||
#mpris {
|
||||
margin: 0 0 0 5px;
|
||||
padding: 0 9px ;
|
||||
background-color: @background;
|
||||
color: @text;
|
||||
}
|
||||
#mpris.playing {
|
||||
background-color: @color3;
|
||||
border-radius: 2px;
|
||||
color: @background;
|
||||
}
|
||||
|
||||
|
||||
/* center module */
|
||||
#window{
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
/* Right Island */
|
||||
|
||||
/* module general styles */
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#custom-clipboard,
|
||||
#custom-bluetooth,
|
||||
#network {
|
||||
padding: 0 10px ;
|
||||
}
|
||||
#clock:hover,
|
||||
#battery:hover,
|
||||
#custom-cpu:hover,
|
||||
#custom-clipboard:hover,
|
||||
#custom-bluetooth:hover,
|
||||
#network:hover,
|
||||
#idle_inhibitor:hover,
|
||||
#custom-swaync:hover,
|
||||
#backlight:hover,
|
||||
#wireplumber:hover{
|
||||
color: @color1;
|
||||
}
|
||||
#idle_inhibitor{
|
||||
padding: 0 10px 0 0;
|
||||
}
|
||||
#custom-powerprofile{
|
||||
padding: 0 8px 0 4px;
|
||||
}
|
||||
/* Remaining Modules */
|
||||
#backlight,
|
||||
#wireplumber{
|
||||
padding: 0 5px;
|
||||
}
|
||||
#wireplumber.muted {
|
||||
background-color: @color2;
|
||||
}
|
||||
#custom-swaync {
|
||||
padding: 0 10px 0 5px;
|
||||
font-size: 16px; /* same scale as other icons */
|
||||
color: @text;
|
||||
}
|
||||
#battery.charging,
|
||||
#battery.plugged {
|
||||
background-color: @focused2 ;
|
||||
color: @background;
|
||||
}
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: @urgent;
|
||||
color: @text;
|
||||
animation: blink 0.5s steps(12) infinite alternate;
|
||||
}
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: @second-background;
|
||||
color: @text;
|
||||
}
|
||||
}
|
||||
153
nix/hosts/home.nix
Executable file
153
nix/hosts/home.nix
Executable file
|
|
@ -0,0 +1,153 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.username = "lunita";
|
||||
home.homeDirectory = "/home/lunita";
|
||||
|
||||
home.stateVersion = "25.05";
|
||||
|
||||
xdg.userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
};
|
||||
gtk = {
|
||||
enable = true;
|
||||
colorScheme = "dark";
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
|
||||
shellAliases = {
|
||||
c = "clear";
|
||||
nf = "neofetch";
|
||||
v = "nvim";
|
||||
d = "cd ~/Documents";
|
||||
D = "cd ~/Downloads";
|
||||
dot = "cd ~/dotfiles";
|
||||
g = "git";
|
||||
};
|
||||
|
||||
initContent = ''
|
||||
# '~' => goto base of user home directory
|
||||
alias ~='cd ~'
|
||||
# Vim keybinds
|
||||
bindkey -v
|
||||
# Preferred editor for local and remote sessions
|
||||
if [[ -n $SSH_CONNECTION ]]; then
|
||||
export EDITOR='vim'
|
||||
else
|
||||
export EDITOR='nvim'
|
||||
fi
|
||||
# Set TERM for Ghostty ssh workaround
|
||||
if [[ "$TERM_PROGRAM" == "ghostty" ]]; then
|
||||
export TERM=xterm-256color
|
||||
fi
|
||||
# Run Hyprland if applicable
|
||||
if [[ "$(tty)" == "/dev/tty"* ]] && command -v Hyprland &> /dev/null; then
|
||||
exec Hyprland
|
||||
fi
|
||||
'';
|
||||
|
||||
history.size = 10000;
|
||||
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" ];
|
||||
theme = "lambda";
|
||||
};
|
||||
};
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "lulusilly";
|
||||
userEmail = "lunita@puppygirl.onl";
|
||||
aliases = {
|
||||
ci = "commit -m";
|
||||
co = "checkout";
|
||||
s = "status";
|
||||
pu = "push origin master";
|
||||
po = "push origin main";
|
||||
rmc = "rm -r --cached";
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
# Librewolf comes with safe defaults already, so minimal changes are necessary.
|
||||
programs.librewolf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"webgl.disabled" = false;
|
||||
# "privacy.clearOnShutdown.history" = false;
|
||||
# "privacy.clearOnShutdown.cookies" = false;
|
||||
"network.cookie.lifetimePolicy" = 0;
|
||||
};
|
||||
};
|
||||
|
||||
services.udiskie = {
|
||||
enable = true;
|
||||
settings = {
|
||||
program_options = {
|
||||
file_manager = "${pkgs.kdePackages.dolphin}/bin/dolphin";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
tree # Nice file tree views w/ permissions
|
||||
linux-wifi-hotspot # For hotspotting while over ethernet
|
||||
neofetch # Muh epic r1ce!!!
|
||||
hyfetch # basically neofetch but with queer flags
|
||||
htop # OG resource manager
|
||||
btop # Pretty resource manager
|
||||
imagemagick # For converting images into other fmts
|
||||
sxiv # Minimal image viewer
|
||||
mpv # Media player
|
||||
zathura # PDF/CBZ/EPUB/DJVU reader
|
||||
tmux # Tride and true terminal multiplexer
|
||||
obsidian # For epic note taking (really just mediocre journaling)
|
||||
keepassxc # Secure password manager
|
||||
syncthing # File syncing
|
||||
ghostty # Terminal emulator
|
||||
irssi # Terminal IRC client
|
||||
nyxt # Customizable browser
|
||||
cmus # C Music Player (TUI)
|
||||
deadbeef # Closest thing to foobar2000 native on Linux
|
||||
nicotine-plus # FOSS client for SoulSeek
|
||||
kdePackages.dolphin # GUI File Manager
|
||||
# Fonts
|
||||
nerd-fonts.jetbrains-mono
|
||||
miracode
|
||||
monocraft
|
||||
];
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
home.file = {
|
||||
# Ghostty
|
||||
".config/ghostty/config" .source = dotfiles/ghostty/config;
|
||||
# Neovim
|
||||
".config/nvim/init.lua" .source = dotfiles/nvim/init.lua;
|
||||
# Emacs
|
||||
".emacs.d/init.el" .source = dotfiles/.emacs.d/init.el;
|
||||
# MPV
|
||||
".config/mpv/mpv.conf" .source = dotfiles/mpv/mpv.conf;
|
||||
# Btop
|
||||
".config/btop/btop.conf" .source = dotfiles/btop/btop.conf;
|
||||
# Neofetch
|
||||
".config/neofetch/config.conf" .source = dotfiles/neofetch/config.conf;
|
||||
# Hyprland
|
||||
".config/hypr/bg.jpg" .source = dotfiles/hypr/bg.jpg;
|
||||
".config/hypr/hyprland.conf" .source = dotfiles/hypr/hyprland.conf;
|
||||
".config/hypr/start.sh" .source = dotfiles/hypr/start.sh;
|
||||
# Waybar
|
||||
".config/waybar/config" .source = dotfiles/waybar/config;
|
||||
".config/waybar/style.css" .source = dotfiles/waybar/style.css;
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
16
nix/hosts/mecca/configuration.nix
Executable file
16
nix/hosts/mecca/configuration.nix
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
{ config, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../modules/kanata.nix
|
||||
../../modules/efi.nix
|
||||
../../modules/laptop.nix
|
||||
../../modules/hypr.nix
|
||||
];
|
||||
|
||||
networking.hostName = "mecca";
|
||||
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
41
nix/hosts/mecca/hardware-configuration.nix
Executable file
41
nix/hosts/mecca/hardware-configuration.nix
Executable file
|
|
@ -0,0 +1,41 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/9c7f9128-0371-4b7b-b0fb-86aeabe0491a";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/BE22-C08F";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/8380ab37-d79c-4b25-888b-d457596dcfae"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
8
nix/modules/efi.nix
Executable file
8
nix/modules/efi.nix
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
{ config, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
# SystemD-boot is good enough
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
systemd.tpm2.enable = false;
|
||||
}
|
||||
25
nix/modules/hypr.nix
Executable file
25
nix/modules/hypr.nix
Executable file
|
|
@ -0,0 +1,25 @@
|
|||
{ config, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
# Hyprland looks nice so I'm using it
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
waybar # Status bar
|
||||
libnotify # Desktop notifications
|
||||
swww # Wallpaper manager
|
||||
brightnessctl # For laptop backlight brightness control
|
||||
grim # screenshot utility
|
||||
slurp # select utility
|
||||
wl-clipboard # xclip alternative
|
||||
rofi-wayland # Dmenu replacement for Wayland
|
||||
ghostty # Terminal emulator
|
||||
];
|
||||
}
|
||||
164
nix/modules/kanata/conf.kbd
Executable file
164
nix/modules/kanata/conf.kbd
Executable file
|
|
@ -0,0 +1,164 @@
|
|||
#|
|
||||
Kanata Config
|
||||
○ Ergonomic (kinda?) 34-key QWERTY layout
|
||||
○ GACS home-row mods
|
||||
○ Layers for function, number, media, and symbol keys
|
||||
○ Dedicated (and non-intrusive!) standard layout toggle for reliant tasks
|
||||
○ Decently commented for beginners and seasoned veterans alike.
|
||||
|
||||
FEEL FREE TO FORK!!!
|
||||
|#
|
||||
(defcfg
|
||||
concurrent-tap-hold yes
|
||||
movemouse-smooth-diagonals yes
|
||||
)
|
||||
#|
|
||||
Trying to be minimal in order to reduce constant editing
|
||||
of layer keys, not to mention how ugly having a 60% layout
|
||||
is when you have mapped keys in the grid.
|
||||
|#
|
||||
(defsrc
|
||||
caps
|
||||
q w e r t y u i o p
|
||||
a s d f g h j k l scln
|
||||
z x c v b n m , . /
|
||||
lalt spc ralt
|
||||
)
|
||||
;; Variables for clean code
|
||||
(defvar
|
||||
tap-time 200
|
||||
hold-time 250
|
||||
chord-time 50
|
||||
)
|
||||
;; Bindings
|
||||
(defalias
|
||||
;; Normal keyboard layer for gaming/other normie usage
|
||||
normie (layer-switch norm)
|
||||
;; Key chord definitions
|
||||
chw (chord ch w)
|
||||
che (chord ch e)
|
||||
chi (chord ch i)
|
||||
cho (chord ch o)
|
||||
chs (chord ch s)
|
||||
chd (chord ch d)
|
||||
chk (chord ch k)
|
||||
chl (chord ch l)
|
||||
ch_lalt (chord ch lalt)
|
||||
ch_ralt (chord ch ralt)
|
||||
;; Remap Caps to Escape/Nav layer
|
||||
navlayer (layer-while-held nav)
|
||||
caps (tap-hold $tap-time $hold-time (tap-dance 200 (esc caps)) @navlayer)
|
||||
;; Home row mods
|
||||
a (tap-hold $tap-time $hold-time a lmet)
|
||||
s (tap-hold $tap-time $hold-time s lalt)
|
||||
d (tap-hold $tap-time $hold-time d lctl)
|
||||
f (tap-hold $tap-time $hold-time f lsft)
|
||||
j (tap-hold $tap-time $hold-time j rsft)
|
||||
k (tap-hold $tap-time $hold-time k lctl)
|
||||
l (tap-hold $tap-time $hold-time l lalt)
|
||||
scln (tap-hold $tap-time $hold-time scln rmet)
|
||||
;; Numpad layer
|
||||
numpad (layer-while-held num)
|
||||
g (tap-hold $tap-time $hold-time g @numpad)
|
||||
;; Function key layer
|
||||
fnkeys (layer-while-held fn)
|
||||
h (tap-hold $tap-time $hold-time h @fnkeys)
|
||||
#|
|
||||
Hyper key when V or M are held down to allow for either hand to
|
||||
use hyper key for AHK/Raycast shortcuts.
|
||||
|#
|
||||
v (tap-hold $tap-time $hold-time v (multi lsft lctl lalt))
|
||||
m (tap-hold $tap-time $hold-time m (multi lsft lctl lalt))
|
||||
;; Holding Spacebar activates symbol layer
|
||||
symbols (layer-while-held symbol)
|
||||
spc (tap-hold $tap-time $hold-time spc @symbols)
|
||||
;; Media layer when Z or / are held.
|
||||
medialy (layer-while-held md)
|
||||
z (tap-hold $tap-time $hold-time z @medialy)
|
||||
/ (tap-hold $tap-time $hold-time / @medialy)
|
||||
)
|
||||
;; Chord definitions. Kind of weird to read as a layperson
|
||||
;; so I provided sufficient comments for general understanding.
|
||||
(defchords ch $chord-time
|
||||
(w ) w ;; W => W
|
||||
( e) e ;; E => E
|
||||
(w e) ret ;; W + E => Enter
|
||||
(i ) i ;; I => I
|
||||
( o) o ;; O => O
|
||||
(i o) bspc ;; I + O => Backspace
|
||||
(s ) @s ;; S => S
|
||||
( d) @d ;; D => D
|
||||
(s d) tab ;; S + D => Tab
|
||||
(k ) @k ;; K => K (See defalias)
|
||||
( l) @l ;; L => L (See defalias)
|
||||
(k l) esc ;; K + L => Escape
|
||||
(lalt ) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lalt)) ;; LAlt => Hyper Key, LAlt × 2 => LAlt
|
||||
( ralt) (tap-dance $tap-time ((multi lsft lctl lalt lmet) lalt)) ;; RAlt => Hyper Key, RAlt × 2 => RAlt
|
||||
#|
|
||||
Put simply, the below line allows for toggling a no-bind
|
||||
layer for when you may require a standard layout (such as
|
||||
playing Street Fighter, Counter Strike, etc.) by pressing
|
||||
both alt keys at the same time. You can toggle back to the
|
||||
base layer by holding both alts at the same time, as to allow
|
||||
for normal functionality when holding either key down for a shortcut.
|
||||
|#
|
||||
(lalt ralt) (tap-hold $tap-time $hold-time @normie (layer-switch base))
|
||||
)
|
||||
;; Base layer with all binds enabled
|
||||
(deflayer base
|
||||
@caps
|
||||
q @chw @che r t y u @chi @cho p
|
||||
@a @chs @chd @f @g @h @j @chk @chl @scln
|
||||
@z x c @v b n @m , . @/
|
||||
@ch_lalt @spc @ch_ralt
|
||||
)
|
||||
;; Navigation layer
|
||||
(deflayer nav
|
||||
_
|
||||
mbck (movemouse-up 3 3) mfwd _ _ _ mlft mrgt pgup pgdn
|
||||
(movemouse-left 3 3) (movemouse-down 3 3) (movemouse-right 3 3) _ home left down up right end
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
;; Numpad Layer
|
||||
(deflayer num
|
||||
_
|
||||
_ _ _ _ _ _ 7 8 9 _
|
||||
_ _ _ _ _ _ 4 5 6 0 _
|
||||
_ _ _ _ _ 1 2 3 _
|
||||
_ _ _
|
||||
)
|
||||
;; Function key layer
|
||||
(deflayer fn
|
||||
_
|
||||
f1 f2 f3 f4 _ _ _ _ _ _
|
||||
f5 f6 f7 f8 _ _ _ _ _ _ _
|
||||
f9 f10 f11 f12 _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
;; Symbol layer
|
||||
(deflayer symbol
|
||||
_
|
||||
S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 S-9 S-0
|
||||
- S-= S-[ S-] [ ] S-` S-scln S-\ \
|
||||
= _ _ ` _ S-- _ _ ' S-'
|
||||
_ _ _
|
||||
)
|
||||
;; Aformentioned standard layer with combo binds for toggling back
|
||||
;; to base layer.
|
||||
(deflayer norm
|
||||
esc
|
||||
q w e r t y u i o p
|
||||
a s d f g h j k l scln
|
||||
z x c v b n m , . /
|
||||
@ch_lalt spc @ch_ralt
|
||||
)
|
||||
;; Media layer
|
||||
;; NOTE: On Windows the brdn and brup keys cause Kanata to crash for some reason as of kanata_gui 1.8.1
|
||||
(deflayer md
|
||||
_
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
prev pp next mute vold volu brdn brup ins del
|
||||
_ _ _ _ _ _ _ _ _ _
|
||||
_ _ _
|
||||
)
|
||||
32
nix/modules/kanata/kanata.nix
Executable file
32
nix/modules/kanata/kanata.nix
Executable file
|
|
@ -0,0 +1,32 @@
|
|||
{ config, libs, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
# Kanata setup
|
||||
# Mostly copied from https://dev.to/shanu-kumawat/how-to-set-up-kanata-on-nixos-a-step-by-step-guide-1jkc
|
||||
boot.kernelModules = [ "uinput" ]; # Enable uinput kernel module
|
||||
hardware.uinput.enable = true; # Enable uinput
|
||||
# Set up udev rules for uinput
|
||||
services.udev.extraRules = ''
|
||||
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
|
||||
'';
|
||||
users.groups.uinput = { }; # ensure uinput group exists
|
||||
# Add Kanata service user to necessary groups
|
||||
systemd.services.kanata-internalKeyboard.serviceConfig = {
|
||||
SupplementaryGroups = [
|
||||
"input"
|
||||
"uinput"
|
||||
];
|
||||
};
|
||||
# Kanata configuration
|
||||
services.kanata = {
|
||||
enable = true;
|
||||
keyboards = {
|
||||
internalKeyboard = {
|
||||
devices = [
|
||||
"/dev/input/by-path/platform-i8042-serio-0-event-kbd"
|
||||
];
|
||||
configFile = ./conf.kbd;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
36
nix/modules/laptop.nix
Executable file
36
nix/modules/laptop.nix
Executable file
|
|
@ -0,0 +1,36 @@
|
|||
{ config, lib, pkgs, inputs, ...}:
|
||||
|
||||
{
|
||||
services.libinput.enable = true; # for laptop touchpad
|
||||
# Laptop battery optimizations
|
||||
services.tlp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
CPU_SCALING_GOVERNOR_ON_AC = "performance";
|
||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||
|
||||
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
||||
|
||||
CPU_MIN_PERF_ON_AC = 0;
|
||||
CPU_MAX_PERF_ON_AC = 100;
|
||||
CPU_MIN_PERF_ON_BAT = 0;
|
||||
CPU_MAX_PERF_ON_BAT = 20;
|
||||
|
||||
START_CHARGE_THRESH_BAT0 = 40; # 40 and below it starts to charge
|
||||
STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging
|
||||
};
|
||||
};
|
||||
services.auto-cpufreq.enable = true;
|
||||
services.auto-cpufreq.settings = {
|
||||
battery = {
|
||||
governor = "powersave";
|
||||
turbo = "never";
|
||||
};
|
||||
charger = {
|
||||
governor = "performance";
|
||||
turbo = "auto";
|
||||
};
|
||||
};
|
||||
powerManagement.powertop.enable = true;
|
||||
}
|
||||
11
nix/modules/syncthing.nix
Executable file
11
nix/modules/syncthing.nix
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
{ config, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
user = "lunita";
|
||||
group = "syncthing";
|
||||
dataDir = "/home/lunita/Sync";
|
||||
configDir = "/home/lunita/.config/syncthing";
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue