This commit is contained in:
Schrottkatze 2023-09-09 01:10:22 +02:00
parent 9d44504c4e
commit 5938c92ec6
17 changed files with 1177 additions and 154 deletions

View file

@ -30,9 +30,9 @@ with builtins;
wget git neofetch pciutils zip unzip gnutar iw btop nodejs jdk8 jdk11
jdk libsecret gh nix-prefetch-scripts fzf glab openal
jdk libsecret gh nix-prefetch-scripts fzf glab ripgrep
sl lolcat appimage-run git-crypt file whois p7zip file nmap cmatrix tree
socat
socat smartmontools
];
};
@ -82,7 +82,7 @@ with builtins;
users.users.jade = {
isNormalUser = true;
extraGroups = [ "wheel" "input" "uinput" "libvirtd" "adbusers" ];
extraGroups = [ "wheel" "input" "uinput" "libvirtd" "adbusers" "dialout" "plugdev" ];
packages = [
pkgs.marksman
];
@ -93,6 +93,6 @@ users.users.jade = {
algorithm = "zstd";
};
users.defaultUserShell = pkgs.zsh;
users.defaultUserShell = pkgs.nushell.override { additionalFeatures = (p: p ++ ["dataframe"]); };
}

View file

@ -43,6 +43,23 @@
}
];
};
catbook-j = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;
};
system = "x86_64-linux";
modules = [
./hosts/catbook-j/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jade = { nixosConfig, pkgs, ... }: {
home.sessionVariables.TZ = nixosConfig.time.timeZone;
home.stateVersion = "${nixosConfig.system.stateVersion}";
};
}
];
};
potatobook-g = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs;

View file

@ -24,6 +24,8 @@ import XMonad.Prompt
import XMonad.Prompt.Layout
import Graphics.X11.ExtraTypes.XF86
import Control.Monad (when)
-- The preferred terminal program, which is used in a binding below and by
-- certain contrib modules.
--
@ -76,9 +78,11 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
-- rofiing
, ((modm, xK_d), spawn "rofi -show drun")
, ((modm .|. shiftMask, xK_e), spawn "rofi -show \"desktopctl\" -modes \"desktopctl:$(which desktopctl)\"")
, ((modm, xK_m), spawn "menu-qalc")
, ((modm, xK_i), spawn "rofimoji -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy")
, ((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons")
, ((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark")
, ((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy")
, ((modm, xK_o), spawn "rofi -show searchwolf -modes searchwolf:searchwolf -theme gruvbox-dark")
-- screenshotting
-- TODO: Fix/rewrite window-screenshot.sh
@ -87,6 +91,8 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
, ((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots")
, ((modm, xK_t), spawn "ocr-screenshot.sh")
, ((modm .|. shiftMask, xK_t), spawn "DEVICE=\"MELF0410:00 1FD2:7007\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi")
-- Reset the layouts on the current workspace to default
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- , ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
@ -117,13 +123,13 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
, ((modm , xK_period), sendMessage (IncMasterN (-1)))
-- Brightness n stuff
, ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+")
, ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-")
, ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle")
, ((0, xF86XK_MonBrightnessUp), spawn "brightnessctl set +10%")
, ((0, xF86XK_MonBrightnessDown), spawn "brightnessctl set 10%-")
, ((0, xF86XK_KbdBrightnessUp), spawn "brightnessctl -d \"kbd_backlight\" set +10%")
, ((0, xF86XK_KbdBrightnessDown), spawn "brightnessctl -d \"kbd_backlight\" set 10%-")
-- , ((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+")
-- , ((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-")
-- , ((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle")
-- , ((0, xF86XK_MonBrightnessUp), spawn "brightnessctl set +10%")
-- , ((0, xF86XK_MonBrightnessDown), spawn "brightnessctl set 10%-")
-- , ((0, xF86XK_KbdBrightnessUp), spawn "brightnessctl -d \"kbd_backlight\" set +10%")
-- , ((0, xF86XK_KbdBrightnessDown), spawn "brightnessctl -d \"kbd_backlight\" set 10%-")
-- Toggle the status bar gap
-- Use this binding with avoidStruts from Hooks.ManageDocks.
@ -137,7 +143,6 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
--, ((modm , xK_q ), spawn "xmonad --recompile; xmonad --restart")
-- Run xmessage with a summary of the default keybindings (useful for beginners)
, ((modm .|. shiftMask, xK_slash ), spawn ("echo \"" ++ help ++ "\" | xmessage -file -"))
]
++
@ -148,15 +153,15 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++
-- ++
--
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--
[((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
| (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
-- [((m .|. modm, key), screenWorkspace sc >>= flip whenJust (windows . f))
-- | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
-- , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
------------------------------------------------------------------------
@ -246,6 +251,11 @@ myManageHook = composeAll
--
myEventHook = mempty
focusChangeHook (FocusChangeEvent {ev_event_type=t, ev_window=window}) = do
when (t == focusIn) $ spawn "notify-send 'focusIn'"
when (t == focusOut) $ spawn "notify-send 'focusOut'"
return $ All True
------------------------------------------------------------------------
-- Status bars and logging
@ -269,6 +279,8 @@ myStartupHook = do
spawn "pkill nm-applet; nm-applet"
spawn "mullvad-vpn --background"
------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.
@ -293,7 +305,7 @@ defaults = def
, workspaces = myWorkspaces
, normalBorderColor = myNormalBorderColor
, focusedBorderColor = myFocusedBorderColor
-- , clientMask = focusChangeMask .|. XMonad.clientMask
-- key bindings
, keys = myKeys
, mouseBindings = myMouseBindings
@ -305,53 +317,3 @@ defaults = def
, startupHook = myStartupHook
}
-- | Finally, a copy of the default bindings in simple textual tabular format.
help :: String
help = unlines ["The default modifier key is 'alt'. Default keybindings:",
"",
"-- launching and killing programs",
"mod-Shift-Enter Launch xterminal",
"mod-p Launch dmenu",
"mod-Shift-p Launch gmrun",
"mod-Shift-c Close/kill the focused window",
"mod-Space Rotate through the available layout algorithms",
"mod-Shift-Space Reset the layouts on the current workSpace to default",
"mod-n Resize/refresh viewed windows to the correct size",
"",
"-- move focus up or down the window stack",
"mod-Tab Move focus to the next window",
"mod-Shift-Tab Move focus to the previous window",
"mod-j Move focus to the next window",
"mod-k Move focus to the previous window",
"mod-m Move focus to the master window",
"",
"-- modifying the window order",
"mod-Return Swap the focused window and the master window",
"mod-Shift-j Swap the focused window with the next window",
"mod-Shift-k Swap the focused window with the previous window",
"",
"-- resizing the master/slave ratio",
"mod-h Shrink the master area",
"mod-l Expand the master area",
"",
"-- floating layer support",
"mod-t Push window back into tiling; unfloat and re-tile it",
"",
"-- increase or decrease number of windows in the master area",
"mod-comma (mod-,) Increment the number of windows in the master area",
"mod-period (mod-.) Deincrement the number of windows in the master area",
"",
"-- quit, or restart",
"mod-Shift-q Quit xmonad",
"mod-q Restart xmonad",
"mod-[1..9] Switch to workSpace N",
"",
"-- Workspaces & screens",
"mod-Shift-[1..9] Move client to workspace N",
"mod-{w,e,r} Switch to physical/Xinerama screens 1, 2, or 3",
"mod-Shift-{w,e,r} Move client to screen 1, 2, or 3",
"",
"-- Mouse bindings: default actions bound to mouse events",
"mod-button1 Set the window to floating mode and move by dragging",
"mod-button2 Raise the window to the top of the stack",
"mod-button3 Set the window to floating mode and resize by dragging"]

View file

@ -0,0 +1,119 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
let
evremap = pkgs.rustPlatform.buildRustPackage {
pname = "evremap";
version = "0.1.0";
src = pkgs.fetchFromGitHub {
owner = "wez";
repo = "evremap";
rev = "4480c4eda223b98899b0fbd926bc34f7bd0e1a18";
sha256 = "sha256-BxSrphgW1n465FX6bKVkq6O0XE2JqanfSYlsGwWUWkQ=";
};
cargoHash = "";
cargoLock.lockFile = ../../other/evremap.Cargo.lock;
postPatch = ''
cp ${../../other/evremap.Cargo.lock} Cargo.lock
'';
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = [ pkgs.libevdev ];
};
in {
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
../../common.nix
../../modules
];
jade = {
flatpak.enable = true;
desktop = {
enable = true;
compositing.enable = true;
creative.enable = true;
syncthing.enable = true;
kdeconnect.enable = true;
cloud.enable = true;
social.enable = true;
mail.enable = true;
gaming.enable = true;
};
helix.enable = true;
zellij.enable = true;
terminal.enable = true;
# zsh.enable = true;
};
hardware.trackpoint = {
enable = true;
# device = "MELF0410:00 1FD2:7007";
device = "DELL081C:00 044E:121F Mouse";
sensitivity = 255;
};
boot.resumeDevice = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
boot.kernelParams = [ "resume_offset=7380652" ];
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
hardware.bluetooth.enable = true;
services.blueman.enable = true;
services.xserver.libinput.touchpad.tapping = false;
environment.systemPackages = [ pkgs.vivaldi pkgs.vivaldi-ffmpeg-codecs pkgs.plantuml ];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Setup keyfile
boot.initrd.secrets = {
"/crypto_keyfile.bin" = null;
};
systemd.services = {
evremap = {
script = "${evremap}/bin/evremap remap ${../../other/remaps-catbook.toml}";
wantedBy = ["multi-user.target"];
};
};
services.xserver.displayManager.autoLogin = {
enable = true;
user = "jade";
};
networking.hostName = "catbook-j"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
i18n.extraLocaleSettings = {
LC_ADDRESS = "de_DE.UTF-8";
LC_IDENTIFICATION = "de_DE.UTF-8";
LC_MEASUREMENT = "de_DE.UTF-8";
LC_MONETARY = "de_DE.UTF-8";
LC_NAME = "de_DE.UTF-8";
LC_NUMERIC = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
}

View file

@ -0,0 +1,58 @@
# 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" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
fsType = "btrfs";
options = [ "subvol=@" "compress=zstd:3" "noatime" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd:3" ];
};
fileSystems."/swap" =
{ device = "/dev/disk/by-uuid/4f9e8afa-f8d7-40bf-b3ea-17e8e8fbb694";
fsType = "btrfs";
options = [ "subvol=@/@swap" "noatime" ];
};
boot.initrd.luks.devices."luks-9cd75cce-6829-4db8-8c5c-a9fb9ec3e122".device = "/dev/disk/by-uuid/9cd75cce-6829-4db8-8c5c-a9fb9ec3e122";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/C6CA-5DE8";
fsType = "vfat";
};
swapDevices = [{
device = "/swap/swapfile";
size = (1024 * 12);
}];
# 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;
# networking.interfaces.wwp0s20f0u2i12.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -13,6 +13,7 @@
jack.enable = true;
};
};
sound.mediaKeys.enable = true;
home-manager.users.jade = { pkgs, ... }: {
home.packages = with pkgs; [
pavucontrol

View file

@ -7,10 +7,10 @@ in with lib; {
};
config = mkIf cfg.enable {
home-manager.users.jade = { pkgs, ... }: {
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
# services.nextcloud-client = {
# enable = true;
# startInBackground = true;
# };
programs.rbw = {
enable = true;
settings = {

View file

@ -15,11 +15,9 @@ in with lib; {
shadowOffsets = [ (-40) (-30) ];
shadowOpacity = 0.2;
shadowExclude = [
"class_g = 'Conky'"
"class_g ?= 'Notify-osd'"
"class_g = 'Cairo-clock'"
"_GTK_FRAME_EXTENTS@:c"
"class_g != 'Rofi'"
"!(class_g = 'Rofi' || class_g = 'Dunst')"
];
vSync = true;

View file

@ -84,7 +84,7 @@ in with lib; {
virtualisation.libvirtd.enable = true;
environment.systemPackages = with pkgs; [ gnome.gdm ];
# environment.systemPackages = with pkgs; [ gnome.gdm ];
services = {
printing.enable = true;
gnome.gnome-keyring.enable = true;
@ -140,10 +140,66 @@ in with lib; {
# also useful:
# - every custom script its own flake n stuff
programs.xss-lock = {
enable = true;
lockerCommand = "${pkgs.i3lock}/bin/i3lock";
};
services.illum.enable = true;
services.avahi.enable = true;
services.smartd = {
enable = true;
notifications.x11.enable = true;
notifications.test = true;
};
home-manager.users.jade = { pkgs, ... }: {
programs.rofi.theme = ../../other/rofi-themes/applauncher.rasi;
programs.bat = {
# TODO: more config
enable = true;
};
programs.exa = {
# TODO: more config
enable = true;
};
programs.nushell = {
enable = true;
package = config.users.defaultUserShell;
configFile.source = ../../other/config.nu;
};
programs.ripgrep = {
enable = true;
};
services.dunst = {
enable = true;
settings = {
global = {
dmenu = "${pkgs.rofi}/bin/rofi -theme gruvbox-dark -dmenu -p dunst";
browser = "${pkgs.librewolf}/bin/librewolf";
mouse_left_click = "context";
mouse_middle_click = "close_current";
background = "#282828";
foreground = "#ebdbb2";
frame_color = "#504945";
frame_width = 2;
};
};
};
programs.rofi = {
enable = true;
theme = ../../other/rofi-themes/applauncher.rasi;
};
home.packages = with pkgs; [
i3lock-fancy rofi rofimoji feh xorg.xinput dunst arandr flameshot
#nushell
nu_scripts direnv
magic-wormhole-rs
# carapace completer
carapace
i3lock rofimoji feh xorg.xinput arandr flameshot
tesseract5 imagemagick xclip xmacro libwacom wacomtablet xorg.xev
# categories
@ -154,14 +210,14 @@ in with lib; {
# from environment.systemPackages cleanup
font-manager xdotool xorg.xwininfo gparted librewolf firefox uhk-agent
cool-retro-term xdg-desktop-portal-gtk nheko obsidian virt-manager
ddccontrol-db firebird-emu godot gitg gpick qdirstat ffmpeg_5
cool-retro-term xdg-desktop-portal-gtk obsidian zettlr virt-manager
ddccontrol-db firebird-emu gitg gpick qdirstat ffmpeg_5
# external
libnotify i3lock-fancy rofi rofimoji feh xorg.xinput dunst arandr
libnotify i3lock rofi rofimoji feh xorg.xinput arandr
flameshot tesseract5 imagemagick xclip kitty xmacro
brightnessctl drawing libqalculate ddgr jq brillo
brightnessctl drawing libqalculate ddgr jq
# custom scripts
window-screenshot desktop-ctl em-record em-play em-play-loop

View file

@ -3,7 +3,7 @@
{
config = {
networking = {
networkmanager.wifi.backend = "iwd";
networkmanager.wifi.backend = "wpa_supplicant";
extraHosts = ''
127.0.0.1 www.youtube.com
127.0.0.1 www.reddit.com
@ -37,16 +37,6 @@
mullvad-vpn
speedtest-cli
];
xsession.windowManager.i3.config.startup = [
{
command = "pkill nm-applet; nm-applet";
always = true;
}
{
command = "mullvad-vpn --background";
always = true;
}
];
};
};
}

View file

@ -7,10 +7,10 @@ in with lib; {
};
config = mkIf cfg.enable {
home-manager.users.jade = { pkgs, ... }: {
programs.nheko.enable = true;
home.packages = with pkgs; [
evolutionWithPlugins
schildichat-desktop
mumble
];
};
};

View file

@ -31,10 +31,19 @@ in with lib; {
};
};
languages = {
language = [{
language = [
{
name = "rust";
config = { rust-analyzer.check.command = "clippy"; };
}];
}
{
name = "php";
file-types = [ "php" ];
language-server = {
command = "psalm";
args = ["--language-server"];
};
}
];
};
};
};

View file

@ -6,7 +6,6 @@ in with lib; {
enable = mkEnableOption "Enable zsh";
};
config = mkIf cfg.enable {
programs.zsh.enable = true;
home-manager.users.jade = { pkgs,... } : {
home.packages = with pkgs; [
thefuck

795
other/config.nu Normal file
View file

@ -0,0 +1,795 @@
# Nushell Config File
#
# version = "0.84.0"
# For more information on defining custom themes, see
# https://www.nushell.sh/book/coloring_and_theming.html
# And here is the theme collection
# https://github.com/nushell/nu_scripts/tree/main/themes
let dark_theme = {
# color for nushell primitives
separator: white
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
header: green_bold
empty: blue
# Closures can be used to choose colors for specific values.
# The value (in this case, a bool) is piped into the closure.
# eg) {|| if $in { 'light_cyan' } else { 'light_gray' } }
bool: light_cyan
int: white
filesize: cyan
duration: white
date: purple
range: white
float: white
string: white
nothing: white
binary: white
cellpath: white
row_index: green_bold
record: white
list: white
block: white
hints: dark_gray
search_result: {bg: red fg: white}
shape_and: purple_bold
shape_binary: purple_bold
shape_block: blue_bold
shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green
shape_datetime: cyan_bold
shape_directory: cyan
shape_external: cyan
shape_externalarg: green_bold
shape_filepath: cyan
shape_flag: blue_bold
shape_float: purple_bold
# shapes are used to change the cli syntax highlighting
shape_garbage: { fg: white bg: red attr: b}
shape_globpattern: cyan_bold
shape_int: purple_bold
shape_internalcall: cyan_bold
shape_list: cyan_bold
shape_literal: blue
shape_match_pattern: green
shape_matching_brackets: { attr: u }
shape_nothing: light_cyan
shape_operator: yellow
shape_or: purple_bold
shape_pipe: purple_bold
shape_range: yellow_bold
shape_record: cyan_bold
shape_redirection: purple_bold
shape_signature: green_bold
shape_string: green
shape_string_interpolation: cyan_bold
shape_table: blue_bold
shape_variable: purple
shape_vardecl: purple
}
let light_theme = {
# color for nushell primitives
separator: dark_gray
leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off
header: green_bold
empty: blue
# Closures can be used to choose colors for specific values.
# The value (in this case, a bool) is piped into the closure.
# eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } }
bool: dark_cyan
int: dark_gray
filesize: cyan_bold
duration: dark_gray
date: purple
range: dark_gray
float: dark_gray
string: dark_gray
nothing: dark_gray
binary: dark_gray
cellpath: dark_gray
row_index: green_bold
record: white
list: white
block: white
hints: dark_gray
search_result: {fg: white bg: red}
shape_and: purple_bold
shape_binary: purple_bold
shape_block: blue_bold
shape_bool: light_cyan
shape_closure: green_bold
shape_custom: green
shape_datetime: cyan_bold
shape_directory: cyan
shape_external: cyan
shape_externalarg: green_bold
shape_filepath: cyan
shape_flag: blue_bold
shape_float: purple_bold
# shapes are used to change the cli syntax highlighting
shape_garbage: { fg: white bg: red attr: b}
shape_globpattern: cyan_bold
shape_int: purple_bold
shape_internalcall: cyan_bold
shape_list: cyan_bold
shape_literal: blue
shape_match_pattern: green
shape_matching_brackets: { attr: u }
shape_nothing: light_cyan
shape_operator: yellow
shape_or: purple_bold
shape_pipe: purple_bold
shape_range: yellow_bold
shape_record: cyan_bold
shape_redirection: purple_bold
shape_signature: green_bold
shape_string: green
shape_string_interpolation: cyan_bold
shape_table: blue_bold
shape_variable: purple
shape_vardecl: purple
}
# External completer example
let carapace_completer = {|spans|
carapace $spans.0 nushell $spans | from json
}
# The default config record. This is where much of your global configuration is setup.
$env.config = {
show_banner: false # true or false to enable or disable the welcome banner at startup
ls: {
use_ls_colors: true # use the LS_COLORS environment variable to colorize output
clickable_links: true # enable or disable clickable links. Your terminal has to support links.
}
rm: {
always_trash: true # always act as if -t was given. Can be overridden with -p
}
cd: {
abbreviations: true # allows `cd s/o/f` to expand to `cd some/other/folder`
}
table: {
mode: reinforced # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other
index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column
show_empty: true # show 'empty list' and 'empty record' placeholders for command output
padding: { left: 1, right: 1 } # a left right padding of each column in a table
trim: {
methodology: wrapping # wrapping or truncating
wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology
truncating_suffix: "..." # A suffix used by the 'truncating' methodology
}
header_on_separator: false # show header text on separator/border line
}
# datetime_format determines what a datetime rendered in the shell would look like.
# Behavior without this configuration point will be to "humanize" the datetime display,
# showing something like "a day ago."
datetime_format: {
# normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables
# table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format
}
explore: {
try: {
border_color: {fg: "white"}
},
status_bar_background: {fg: "#ebdbb2", bg: "#504945"},
command_bar_text: {fg: "#ebdbb2"},
highlight: {fg: "black", bg: "yellow"},
status: {
error: {fg: "white", bg: "red"},
warn: {}
info: {}
},
table: {
split_line: {fg: "#404040"},
selected_cell: {},
selected_row: {},
selected_column: {},
show_cursor: true,
line_head_top: true,
line_head_bottom: true,
line_shift: true,
line_index: true,
},
config: {
border_color: {fg: "white"}
cursor_color: {fg: "black", bg: "light_yellow"}
},
}
history: {
max_size: 100_000 # Session has to be reloaded for this to take effect
sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file
file_format: "sqlite" # "sqlite" or "plaintext"
isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions.
}
completions: {
case_sensitive: false # set to true to enable case-sensitive completions
quick: true # set this to false to prevent auto-selecting completions when only one remains
partial: true # set this to false to prevent partial filling of the prompt
algorithm: "fuzzy" # prefix or fuzzy
external: {
enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow
max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options
completer: $carapace_completer # check 'carapace_completer' above as an example
}
}
filesize: {
metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard)
format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto
}
cursor_shape: {
emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line (line is the default)
vi_insert: line # block, underscore, line , blink_block, blink_underscore, blink_line (block is the default)
vi_normal: block # block, underscore, line, blink_block, blink_underscore, blink_line (underscore is the default)
}
color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record
use_grid_icons: true
footer_mode: "25" # always, never, number_of_rows, auto
float_precision: 2 # the precision for displaying floats in tables
buffer_editor: "" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL
use_ansi_coloring: true
bracketed_paste: true # enable bracketed paste, currently useless on windows
edit_mode: vi # emacs, vi
shell_integration: false # enables terminal shell integration. Off by default, as some terminals have issues with this.
render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt.
hooks: {
pre_prompt: [{ ||
let direnv = (direnv export json | from json)
let direnv = if ($direnv | length) == 1 { $direnv } else { {} }
$direnv | load-env
}] # run before the prompt is shown
pre_execution: [{ null }] # run before the repl input is run
env_change: {
PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input
}
display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline
command_not_found: { null } # return an error message when a command is not found
}
menus: [
# Configuration for default nushell menus
# Note the lack of source parameter
{
name: completion_menu
only_buffer_difference: false
marker: "| "
type: {
layout: columnar
columns: 4
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
}
{
name: history_menu
only_buffer_difference: true
marker: "? "
type: {
layout: list
page_size: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
}
{
name: help_menu
only_buffer_difference: true
marker: "? "
type: {
layout: description
columns: 4
col_width: 20 # Optional value. If missing all the screen width is used to calculate column width
col_padding: 2
selection_rows: 4
description_rows: 10
}
style: {
text: green
selected_text: green_reverse
description_text: yellow
}
}
]
keybindings: [
{
name: completion_menu
modifier: none
keycode: tab
mode: [emacs vi_normal vi_insert]
event: {
until: [
{ send: menu name: completion_menu }
{ send: menunext }
]
}
}
{
name: history_menu
modifier: control
keycode: char_r
mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: history_menu }
}
{
name: help_menu
modifier: none
keycode: f1
mode: [emacs, vi_insert, vi_normal]
event: { send: menu name: help_menu }
}
{
name: completion_previous_menu
modifier: shift
keycode: backtab
mode: [emacs, vi_normal, vi_insert]
event: { send: menuprevious }
}
{
name: next_page_menu
modifier: control
keycode: char_x
mode: emacs
event: { send: menupagenext }
}
{
name: undo_or_previous_page_menu
modifier: control
keycode: char_z
mode: emacs
event: {
until: [
{ send: menupageprevious }
{ edit: undo }
]
}
}
{
name: escape
modifier: none
keycode: escape
mode: [emacs, vi_normal, vi_insert]
event: { send: esc } # NOTE: does not appear to work
}
{
name: cancel_command
modifier: control
keycode: char_c
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrlc }
}
{
name: quit_shell
modifier: control
keycode: char_d
mode: [emacs, vi_normal, vi_insert]
event: { send: ctrld }
}
{
name: clear_screen
modifier: control
keycode: char_l
mode: [emacs, vi_normal, vi_insert]
event: { send: clearscreen }
}
{
name: search_history
modifier: control
keycode: char_q
mode: [emacs, vi_normal, vi_insert]
event: { send: searchhistory }
}
{
name: open_command_editor
modifier: control
keycode: char_o
mode: [emacs, vi_normal, vi_insert]
event: { send: openeditor }
}
{
name: move_up
modifier: none
keycode: up
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menuup}
{send: up}
]
}
}
{
name: move_down
modifier: none
keycode: down
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menudown}
{send: down}
]
}
}
{
name: move_left
modifier: none
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menuleft}
{send: left}
]
}
}
{
name: move_right_or_take_history_hint
modifier: none
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{send: menuright}
{send: right}
]
}
}
{
name: move_one_word_left
modifier: control
keycode: left
mode: [emacs, vi_normal, vi_insert]
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: control
keycode: right
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: move_to_line_start
modifier: none
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_start
modifier: control
keycode: char_a
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_end_or_take_history_hint
modifier: none
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{edit: movetolineend}
]
}
}
{
name: move_to_line_end_or_take_history_hint
modifier: control
keycode: char_e
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: historyhintcomplete}
{edit: movetolineend}
]
}
}
{
name: move_to_line_start
modifier: control
keycode: home
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolinestart}
}
{
name: move_to_line_end
modifier: control
keycode: end
mode: [emacs, vi_normal, vi_insert]
event: {edit: movetolineend}
}
{
name: move_up
modifier: control
keycode: char_p
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menuup}
{send: up}
]
}
}
{
name: move_down
modifier: control
keycode: char_t
mode: [emacs, vi_normal, vi_insert]
event: {
until: [
{send: menudown}
{send: down}
]
}
}
{
name: delete_one_character_backward
modifier: none
keycode: backspace
mode: [emacs, vi_insert]
event: {edit: backspace}
}
{
name: delete_one_word_backward
modifier: control
keycode: backspace
mode: [emacs, vi_insert]
event: {edit: backspaceword}
}
{
name: delete_one_character_forward
modifier: none
keycode: delete
mode: [emacs, vi_insert]
event: {edit: delete}
}
{
name: delete_one_character_forward
modifier: control
keycode: delete
mode: [emacs, vi_insert]
event: {edit: delete}
}
{
name: delete_one_character_forward
modifier: control
keycode: char_h
mode: [emacs, vi_insert]
event: {edit: backspace}
}
{
name: delete_one_word_backward
modifier: control
keycode: char_w
mode: [emacs, vi_insert]
event: {edit: backspaceword}
}
{
name: move_left
modifier: none
keycode: backspace
mode: vi_normal
event: {edit: moveleft}
}
{
name: newline_or_run_command
modifier: none
keycode: enter
mode: emacs
event: {send: enter}
}
{
name: move_left
modifier: control
keycode: char_b
mode: emacs
event: {
until: [
{send: menuleft}
{send: left}
]
}
}
{
name: move_right_or_take_history_hint
modifier: control
keycode: char_f
mode: emacs
event: {
until: [
{send: historyhintcomplete}
{send: menuright}
{send: right}
]
}
}
{
name: redo_change
modifier: control
keycode: char_g
mode: emacs
event: {edit: redo}
}
{
name: undo_change
modifier: control
keycode: char_z
mode: emacs
event: {edit: undo}
}
{
name: paste_before
modifier: control
keycode: char_y
mode: emacs
event: {edit: pastecutbufferbefore}
}
{
name: cut_word_left
modifier: control
keycode: char_w
mode: emacs
event: {edit: cutwordleft}
}
{
name: cut_line_to_end
modifier: control
keycode: char_k
mode: emacs
event: {edit: cuttoend}
}
{
name: cut_line_from_start
modifier: control
keycode: char_u
mode: emacs
event: {edit: cutfromstart}
}
{
name: swap_graphemes
modifier: control
keycode: char_t
mode: emacs
event: {edit: swapgraphemes}
}
{
name: move_one_word_left
modifier: alt
keycode: left
mode: emacs
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: right
mode: emacs
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: move_one_word_left
modifier: alt
keycode: char_b
mode: emacs
event: {edit: movewordleft}
}
{
name: move_one_word_right_or_take_history_hint
modifier: alt
keycode: char_f
mode: emacs
event: {
until: [
{send: historyhintwordcomplete}
{edit: movewordright}
]
}
}
{
name: delete_one_word_forward
modifier: alt
keycode: delete
mode: emacs
event: {edit: deleteword}
}
{
name: delete_one_word_backward
modifier: alt
keycode: backspace
mode: emacs
event: {edit: backspaceword}
}
{
name: delete_one_word_backward
modifier: alt
keycode: char_m
mode: emacs
event: {edit: backspaceword}
}
{
name: cut_word_to_right
modifier: alt
keycode: char_d
mode: emacs
event: {edit: cutwordright}
}
{
name: upper_case_word
modifier: alt
keycode: char_u
mode: emacs
event: {edit: uppercaseword}
}
{
name: lower_case_word
modifier: alt
keycode: char_l
mode: emacs
event: {edit: lowercaseword}
}
{
name: capitalize_char
modifier: alt
keycode: char_c
mode: emacs
event: {edit: capitalizechar}
}
]
}
# STOLEN FROM: https://www.grailbox.com/2023/07/autostart-zellij-in-nushell/
# zellij
def start_zellij [] {
if 'ZELLIJ' not-in ($env | columns) {
if 'ZELLIJ_AUTO_ATTACH' in ($env | columns) and $env.ZELLIJ_AUTO_ATTACH == 'true' {
zellij attach -c
} else {
zellij
}
if 'ZELLIJ_AUTO_EXIT' in ($env | columns) and $env.ZELLIJ_AUTO_EXIT == 'true' {
exit
}
}
}
start_zellij
alias gnix = cd ~/nix-configs;
alias grepo = cd ~/Documents/repos;
alias wh = wormhole-rs;

22
other/remaps-catbook.toml Normal file
View file

@ -0,0 +1,22 @@
device_name = "AT Translated Set 2 keyboard"
[[remap]]
input = [ "KEY_Y" ]
output = [ "KEY_Z" ]
[[remap]]
input = [ "KEY_Z" ]
output = [ "KEY_Y" ]
[[remap]]
input = [ "KEY_LEFTALT" ]
output = [ "KEY_LEFTMETA" ]
[[remap]]
input = [ "KEY_LEFTMETA" ]
output = [ "KEY_LEFTALT" ]
[[dual_role]]
input = "KEY_CAPSLOCK"
hold = ["KEY_LEFTCTRL"]
tap = ["KEY_ESC"]

View file

@ -1,7 +1,6 @@
{ pkgs, ... }:
pkgs.writeShellScriptBin "desktopctl" ''
run() {
case $@ in
case $@ in
"Lock Screen")
nohup sh -c "i3lock-fancy" > /dev/null &
exit 0
@ -18,21 +17,19 @@ pkgs.writeShellScriptBin "desktopctl" ''
systemctl reboot
exit 0
;;
esac
esac
# resizes grid
echo -en "\0theme\x1flistview,inputbar,message{columns:4;lines:1;}\n"
# resizes window, moves it to top of screen, adjusts rounded corners
echo -en "\0theme\x1fwindow{width:800px;location:north;y-offset:24px;border-radius:0 0 12px 12px;}\n"
# swaps grid and input bar
echo -en "\0theme\x1fmainbox{children:[listview,inputbar];}\n"
# fixes brown line below input bar
echo -en "\0theme\x1finputbar{margin:0;}\n"
# resizes grid
echo -en "\0theme\x1flistview,inputbar,message{columns:4;lines:1;}\n"
# resizes window, moves it to top of screen, adjusts rounded corners
echo -en "\0theme\x1fwindow{width:800px;location:north;y-offset:24px;border-radius:0 0 12px 12px;}\n"
# swaps grid and input bar
echo -en "\0theme\x1fmainbox{children:[listview,inputbar];}\n"
# fixes brown line below input bar
echo -en "\0theme\x1finputbar{margin:0;}\n"
echo -en "Lock Screen\0icon\x1f${../../../other/assets/desktopctl/lock-screen.svg}\n"
echo -en "Log Out\0icon\x1f${../../../other/assets/desktopctl/logout.svg}\n"
echo -en "Shut Down\0icon\x1f${../../../other/assets/desktopctl/shutdown.svg}\n"
echo -en "Reboot\0icon\x1f${../../../other/assets/desktopctl/reboot.svg}\n"
}
rofi -show "desktopctl" -modes "desktopctl:run"
echo -en "Lock Screen\0icon\x1f${../../../other/assets/desktopctl/lock-screen.svg}\n"
echo -en "Log Out\0icon\x1f${../../../other/assets/desktopctl/logout.svg}\n"
echo -en "Shut Down\0icon\x1f${../../../other/assets/desktopctl/shutdown.svg}\n"
echo -en "Reboot\0icon\x1f${../../../other/assets/desktopctl/reboot.svg}\n"
''

View file

@ -12,7 +12,7 @@ case $ROFI_RETV in
exit 0
;;
2)
ddgrout=$(ddgr --json --num=25 "$@")
ddgrout=$(ddgr --json --num=25 "$@" --url-handler 'librewolf')
for i in $(echo $ddgrout | jq -r 'keys | @sh'); do
title=$(echo $ddgrout | jq -r .[$i].title)