Start logging the nix config
This commit is contained in:
commit
423d9e231f
43
dconf.nix
Normal file
43
dconf.nix
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"org/gnome/shell/extensions/pop-shell" = {
|
||||||
|
tile-move-down-global=["<Alt><Shift>j"];
|
||||||
|
tile-move-up-global=["<Alt><Shift>k"];
|
||||||
|
tile-move-left-global=["<Alt><Shift>h"];
|
||||||
|
tile-move-right-global=["<Alt><Shift>l"];
|
||||||
|
focus-down=["<Alt>j"];
|
||||||
|
focus-up=["<Alt>k"];
|
||||||
|
focus-left=["<Alt>h"];
|
||||||
|
focus-right=["<Alt>l"];
|
||||||
|
tile-orientation=["<Alt>o"];
|
||||||
|
tile-floating=["<Alt>g"];
|
||||||
|
tile-stacking-global=["<Alt>s"];
|
||||||
|
|
||||||
|
active-hint=true;
|
||||||
|
active-hint-border-radius=true;
|
||||||
|
show-title=false;
|
||||||
|
smart-gaps=true;
|
||||||
|
snap-to-grid=true;
|
||||||
|
tile-by-default=true;
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||||
|
custom-keybindings = ["/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"];
|
||||||
|
screensaver = ["<Alt>Escape"];
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
|
||||||
|
binding="<Alt>t";
|
||||||
|
command="kitty";
|
||||||
|
name="Terminal";
|
||||||
|
};
|
||||||
|
"org/gnome/settings-daemon/plugins/power" = {
|
||||||
|
ambient-enabled = false;
|
||||||
|
};
|
||||||
|
"org/gnome/mutter" = {
|
||||||
|
dynamic-workspaces=false;
|
||||||
|
overlay-key="Alt_L";
|
||||||
|
# Enable fractional scaling
|
||||||
|
experimental-features=["scale-monitor-framebuffer"];
|
||||||
|
};
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
show-battery-percentage=true;
|
||||||
|
};
|
||||||
|
}
|
109
home.nix
Normal file
109
home.nix
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
home.sessionVariables = {
|
||||||
|
NNN_FIFO = "/tmp/nnn.fifo";
|
||||||
|
LANG = "en_US.UTF-8";
|
||||||
|
EDITOR = "nvim";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
};
|
||||||
|
home.keyboard.layout = "us";
|
||||||
|
home.keyboard.variant = "3l";
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
restic
|
||||||
|
ripgrep
|
||||||
|
libqalculate
|
||||||
|
clapper
|
||||||
|
git-annex
|
||||||
|
git-annex-remote-rclone
|
||||||
|
qrencode
|
||||||
|
gnomeExtensions.blur-my-shell
|
||||||
|
gnomeExtensions.burn-my-windows
|
||||||
|
gnomeExtensions.pop-shell
|
||||||
|
gnomeExtensions.firefox-pip-always-on-top
|
||||||
|
];
|
||||||
|
editorconfig = {
|
||||||
|
enable = true;
|
||||||
|
settings."*" = {
|
||||||
|
indent_style = "tab";
|
||||||
|
indent_size = 4;
|
||||||
|
end_of_line = "lf";
|
||||||
|
charset = "utf-8";
|
||||||
|
max_line_length = 90;
|
||||||
|
trim_trailing_whitespace = true;
|
||||||
|
insert_final_newline = false;
|
||||||
|
};
|
||||||
|
settings."{*.{md,gmi,adoc},COMMIT_EDITMSG}" = {
|
||||||
|
max_line_length = 0;
|
||||||
|
};
|
||||||
|
settings."*.{elm,lisp,yml,purs}" = {
|
||||||
|
indent_style = "space";
|
||||||
|
indent_size = 2;
|
||||||
|
};
|
||||||
|
settings."*.{wat,nix}" = {
|
||||||
|
indent_size = 2;
|
||||||
|
};
|
||||||
|
settings."*.asm" = {
|
||||||
|
indent_style = "tab";
|
||||||
|
indent_size = "tab";
|
||||||
|
max_line_length = 80;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
lfs.enable = true;
|
||||||
|
signing.key = "ACABBABE77B76F6301F4ACF97A0F4799BF91C8C1";
|
||||||
|
signing.signByDefault = true;
|
||||||
|
userName = "Emi Simpson";
|
||||||
|
userEmail = "emi@alchemi.dev";
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultbranch = "main";
|
||||||
|
diff.algorithm = "patience";
|
||||||
|
core.compression = 9;
|
||||||
|
core.editor = "nvim";
|
||||||
|
pull.rebase = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
programs.kitty = import programs/kitty.nix pkgs;
|
||||||
|
programs.password-store = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.pass.withExtensions (exts: [ exts.pass-otp ]);
|
||||||
|
};
|
||||||
|
programs.fish = import programs/fish.nix pkgs;
|
||||||
|
programs.firefox = import programs/firefox.nix pkgs;
|
||||||
|
programs.nnn = {
|
||||||
|
enable = true;
|
||||||
|
plugins.mappings = {
|
||||||
|
p = "preview-tui";
|
||||||
|
};
|
||||||
|
plugins.src = (pkgs.fetchFromGitHub {
|
||||||
|
owner = "jarun";
|
||||||
|
repo = "nnn";
|
||||||
|
rev = "0c23406";
|
||||||
|
sha256 = "sha256-Hpc8YaJeAzJoEi7aJ6DntH2VLkoR6ToP6tPYn3llR7k=";
|
||||||
|
}) + "/plugins";
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
tree
|
||||||
|
file
|
||||||
|
unzip
|
||||||
|
bat
|
||||||
|
ffmpeg
|
||||||
|
ffmpegthumbnailer
|
||||||
|
poppler_utils
|
||||||
|
glow
|
||||||
|
w3m
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs.neovim = import programs/neovim.nix pkgs;
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
programs.jq.enable = true;
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
maxCacheTtl = 180; # Seconds
|
||||||
|
pinentryFlavor = "gnome3";
|
||||||
|
};
|
||||||
|
# Package broken as of 2022-12-14
|
||||||
|
# services.etesync-dav.enable = true;
|
||||||
|
services.syncthing.enable = true;
|
||||||
|
dconf.settings = import ./dconf.nix;
|
||||||
|
home.stateVersion = "22.11";
|
||||||
|
targets.genericLinux.enable = true;
|
||||||
|
}
|
222
nixos.nix
Normal file
222
nixos.nix
Normal file
|
@ -0,0 +1,222 @@
|
||||||
|
# sudo nix-channel --add https://github.com/NixOS/nixos-hardware/archive/master.tar.gz nixos-hardware
|
||||||
|
# sudo nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager
|
||||||
|
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
networking.hostName = "kudzu";
|
||||||
|
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
#
|
||||||
|
# DON'T FORGET to add your hardware config too
|
||||||
|
# https://github.com/NixOS/nixos-hardware/
|
||||||
|
#
|
||||||
|
# Also make sure to move the swap configuration to the hardware config
|
||||||
|
/etc/nixos/hardware-configuration.nix
|
||||||
|
<home-manager/nixos>
|
||||||
|
];
|
||||||
|
|
||||||
|
# Bootloader
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||||
|
|
||||||
|
boot.kernelParams = [
|
||||||
|
# Power efficiency
|
||||||
|
# https://wiki.archlinux.org/title/Power_management#Kernel_parameters
|
||||||
|
"nmi_watchdog=0"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.kernel.sysctl = {
|
||||||
|
# Set IO batching to 2 minutes for power reasons
|
||||||
|
"vm.dirty_writeback_centisecs" = 12000;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Setup keyfile
|
||||||
|
boot.initrd.secrets = {
|
||||||
|
"/crypto_keyfile.bin" = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/New_York";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
i18n.extraLocaleSettings = {
|
||||||
|
LC_ADDRESS = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||||
|
LC_MEASUREMENT = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "en_US.UTF-8";
|
||||||
|
LC_NAME = "en_US.UTF-8";
|
||||||
|
LC_NUMERIC = "en_US.UTF-8";
|
||||||
|
LC_PAPER = "en_US.UTF-8";
|
||||||
|
LC_TELEPHONE = "en_US.UTF-8";
|
||||||
|
LC_TIME = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
services.logind.lidSwitch = "ignore";
|
||||||
|
|
||||||
|
# Enable the GNOME Desktop Environment.
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
services.xserver.desktopManager.gnome = {
|
||||||
|
enable = true;
|
||||||
|
extraGSettingsOverrides = ''
|
||||||
|
# Favorite apps in gnome-shell
|
||||||
|
# [org.gnome.shell]
|
||||||
|
# favorite-apps=['org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop']
|
||||||
|
|
||||||
|
[org.gnome.desktop.input-sources]
|
||||||
|
show-all-sources=true
|
||||||
|
sources=[('xkb', 'us'), ('xkb', 'us+3l')]
|
||||||
|
|
||||||
|
[org.gnome.desktop.wm.preferences]
|
||||||
|
num-workspaces=5
|
||||||
|
|
||||||
|
[org.gnome.desktop.wm.keybindings]
|
||||||
|
# Pop shell bindings
|
||||||
|
minimize=['<Alt>comma']
|
||||||
|
switch-to-workspace-left=@as []
|
||||||
|
switch-to-workspace-right=@as []
|
||||||
|
maximize=@as []
|
||||||
|
unmaximize=@as []
|
||||||
|
move-to-monitor-up=@as []
|
||||||
|
move-to-monitor-down=@as []
|
||||||
|
move-to-monitor-left=@as []
|
||||||
|
move-to-monitor-right=@as []
|
||||||
|
switch-to-workspace-down=@as []
|
||||||
|
switch-to-workspace-up=@as []
|
||||||
|
toggle-fullscreen=['<Alt>m']
|
||||||
|
close=['<Alt>q']
|
||||||
|
switch-to-workspace-1=@as ['<Alt>1']
|
||||||
|
switch-to-workspace-2=@as ['<Alt>2']
|
||||||
|
switch-to-workspace-3=@as ['<Alt>3']
|
||||||
|
switch-to-workspace-4=@as ['<Alt>4']
|
||||||
|
switch-to-workspace-5=@as ['<Alt>5']
|
||||||
|
move-to-workspace-1=@as ['<Alt><Shift>1']
|
||||||
|
move-to-workspace-2=@as ['<Alt><Shift>2']
|
||||||
|
move-to-workspace-3=@as ['<Alt><Shift>3']
|
||||||
|
move-to-workspace-4=@as ['<Alt><Shift>4']
|
||||||
|
move-to-workspace-5=@as ['<Alt><Shift>5']
|
||||||
|
|
||||||
|
[org.gnome.shell.keybindings]
|
||||||
|
open-application-menu=@as []
|
||||||
|
toggle-message-tray=@as []
|
||||||
|
toggle-overview=@as []
|
||||||
|
|
||||||
|
[org.gnome.mutter.keybindings]
|
||||||
|
toggle-tiled-left=@as []
|
||||||
|
toggle-tiled-right=@as []
|
||||||
|
'';
|
||||||
|
extraGSettingsOverridePackages = [
|
||||||
|
pkgs.gsettings-desktop-schemas # for org.gnome.desktop
|
||||||
|
pkgs.gnome.gnome-shell # for org.gnome.shell
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
services.xserver = {
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "3l";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
# If you want to use JACK applications, uncomment this
|
||||||
|
#jack.enable = true;
|
||||||
|
|
||||||
|
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||||
|
# no need to redefine it in your config for now)
|
||||||
|
#media-session.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.ember = {
|
||||||
|
uid = 1312;
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Ember";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" ];
|
||||||
|
shell = pkgs.fish;
|
||||||
|
};
|
||||||
|
home-manager.users.ember = import ./home.nix;
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wget
|
||||||
|
gnumake
|
||||||
|
htop
|
||||||
|
wl-clipboard
|
||||||
|
unzip
|
||||||
|
vlc
|
||||||
|
gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-libav gst_all_1.gst-vaapi gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-good gst_all_1.gst-plugins-ugly
|
||||||
|
];
|
||||||
|
environment.gnome.excludePackages = with pkgs.gnome; [
|
||||||
|
gnome-terminal
|
||||||
|
gnome-music
|
||||||
|
gedit
|
||||||
|
geary
|
||||||
|
totem
|
||||||
|
];
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
services = {
|
||||||
|
flatpak = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
fwupd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
networking.firewall.enable = false;
|
||||||
|
networking.hosts = {
|
||||||
|
"162.255.119.254" = ["www.librepunk.club"];
|
||||||
|
"129.21.49.69" = ["www.librepunk.club"];
|
||||||
|
};
|
||||||
|
|
||||||
|
# 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. It‘s 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 = "22.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
# Set up hardware acceleration
|
||||||
|
# https://nixos.wiki/wiki/Accelerated_Video_Playback
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
intel-compute-runtime
|
||||||
|
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||||
|
vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
|
||||||
|
vaapiVdpau
|
||||||
|
libvdpau-va-gl
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
60
programs/firefox.nix
Normal file
60
programs/firefox.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
pkgs: {
|
||||||
|
enable = true;
|
||||||
|
profiles = { nixos = {
|
||||||
|
name = "NixOS Profile";
|
||||||
|
settings = {
|
||||||
|
"media.ffmpeg.vaapi.enabled" = true;
|
||||||
|
"browser.startup.homepage" = "https://ipfs.io/ipfs/QmcnP6Fa2cs8SMLAMC12caF1pFoso4ZKU8FLKagFtKGfa1";
|
||||||
|
"browser.cache.disk.capacity" = 536870912; # 1 GiB
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
};
|
||||||
|
search.force = true;
|
||||||
|
search.default = "DuckDuckGo";
|
||||||
|
search.engines = {
|
||||||
|
"Library Genesis" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://libgen.rs/search.php";
|
||||||
|
params = [
|
||||||
|
{name = "req"; value = "{searchTerms}";}
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
iconUpdateURL = "https://libgen.rs/favicon.ico";
|
||||||
|
updateInterval = 7 * 24 * 60 * 60 * 1000; # every week
|
||||||
|
definedAliases = [ "!lg" ];
|
||||||
|
};
|
||||||
|
"YouTube" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://youtube.com/results";
|
||||||
|
params = [
|
||||||
|
{name = "search_query"; value = "{searchTerms}";}
|
||||||
|
{name = "page"; value = "{startPage}";}
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
iconUpdateURL = "https://www.youtube.com/favicon.ico";
|
||||||
|
updateInterval = 7 * 24 * 60 * 60 * 1000; # every week
|
||||||
|
definedAliases = [ "!yt" ];
|
||||||
|
};
|
||||||
|
"ArchWiki" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://wiki.archlinux.org/index.php";
|
||||||
|
params = [
|
||||||
|
{name = "search"; value = "{searchTerms}";}
|
||||||
|
{name = "title"; value = "Special:Search";}
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
iconUpdateURL = "https://wiki.archlinux.org/favicon.ico";
|
||||||
|
updateInterval = 7 * 24 * 60 * 60 * 1000; # every week
|
||||||
|
definedAliases = [ "!a" ];
|
||||||
|
};
|
||||||
|
"NixOS Wiki" = {
|
||||||
|
urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }];
|
||||||
|
iconUpdateURL = "https://nixos.wiki/favicon.png";
|
||||||
|
updateInterval = 7 * 24 * 60 * 60 * 1000; # every week
|
||||||
|
definedAliases = [ "!nix" ];
|
||||||
|
};
|
||||||
|
"Wikipedia (en)".metaData.alias = "!w";
|
||||||
|
"Google".metaData.alias = "!g";
|
||||||
|
"Bing".metaData.hidden = true;
|
||||||
|
};
|
||||||
|
};};
|
||||||
|
}
|
116
programs/fish.nix
Normal file
116
programs/fish.nix
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
pkgs: {
|
||||||
|
enable = true;
|
||||||
|
plugins = [
|
||||||
|
{
|
||||||
|
name = "bang-bang";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "oh-my-fish";
|
||||||
|
repo = "plugin-bang-bang";
|
||||||
|
rev = "816c66d";
|
||||||
|
hash = "sha256-35xXBWCciXl4jJrFUUN5NhnHdzk6+gAxetPxXCv4pDc=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
shellAliases = {
|
||||||
|
clip = "kitty +kitten clipboard";
|
||||||
|
l = "ls -lah --hyperlink=auto";
|
||||||
|
icat = "kitty +kitten icat";
|
||||||
|
rust-musl-builder = "fish -c 'docker run --rm -it -v (pwd):/home/rust/src ekidd/rust-musl-builder cargo build --release'";
|
||||||
|
lonk = "qrencode -t utf8i";
|
||||||
|
s = "kitty +kitten ssh";
|
||||||
|
weather = "curl wttr.in/43.0844,-77.6749";
|
||||||
|
};
|
||||||
|
shellInit = ''
|
||||||
|
set -x PATH ~/.cargo/bin/ ~/go/bin ~/.local/bin ~/.gem/ruby/*/bin /var/lib/flatpak/exports/bin/ $PATH
|
||||||
|
set -x KEYFILE ~/.config/void/keyfile
|
||||||
|
|
||||||
|
set fish_color_command magenta
|
||||||
|
set fish_color_normal white
|
||||||
|
set fish_color_param ffffff
|
||||||
|
set fish_color_quote blue
|
||||||
|
set fish_color_redirection green
|
||||||
|
set fish_color_end b4a8c8
|
||||||
|
set fish_color_comment black
|
||||||
|
set fish_color_operator green
|
||||||
|
set fish_color_escape yellow
|
||||||
|
set fish_color_autosuggestion 91889b
|
||||||
|
|
||||||
|
set fish_greeting ""
|
||||||
|
|
||||||
|
# echo "You're cute and loved <3"
|
||||||
|
# echo "You seriously are incredibly wonderful and you mean so much to me, you've made my life so much brighter and i never wanna let you go <3"
|
||||||
|
'';
|
||||||
|
functions = {
|
||||||
|
n = {
|
||||||
|
description = "support nnn quit and change directory";
|
||||||
|
wraps = "nnn";
|
||||||
|
body = ''
|
||||||
|
# Block nesting of nnn in subshells
|
||||||
|
if test -n "$NNNLVL"
|
||||||
|
if [ (expr $NNNLVL + 0) -ge 1 ]
|
||||||
|
echo "nnn is already running"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
set -x NNN_TMPFILE '.nnn.tmp'
|
||||||
|
nnn $argv
|
||||||
|
if test -e $NNN_TMPFILE
|
||||||
|
source $NNN_TMPFILE
|
||||||
|
rm $NNN_TMPFILE
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
fish_prompt = ''
|
||||||
|
# Theme based on Bira theme from oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh/blob/master/themes/bira.zsh-theme
|
||||||
|
# Some code stolen from oh-my-fish clearance theme: https://github.com/bpinto/oh-my-fish/blob/master/themes/clearance/
|
||||||
|
# Further modification by Ember, to make the colors cooler
|
||||||
|
|
||||||
|
function __user_host
|
||||||
|
set -l content
|
||||||
|
echo -n (set_color --bold cyan)
|
||||||
|
echo -n $USER@(hostname|cut -d . -f 1) (set color normal)
|
||||||
|
end
|
||||||
|
|
||||||
|
function __current_path
|
||||||
|
echo -n (set_color --bold red) (pwd) (set_color normal)
|
||||||
|
end
|
||||||
|
|
||||||
|
function _git_branch_name
|
||||||
|
echo (command git symbolic-ref HEAD 2> /dev/null | sed -e 's|^refs/heads/||')
|
||||||
|
end
|
||||||
|
|
||||||
|
function _git_is_dirty
|
||||||
|
echo (command git status -s --ignore-submodules=dirty 2> /dev/null)
|
||||||
|
end
|
||||||
|
|
||||||
|
function __git_status
|
||||||
|
if [ (_git_branch_name) ]
|
||||||
|
set -l git_branch (_git_branch_name)
|
||||||
|
|
||||||
|
if [ (_git_is_dirty) ]
|
||||||
|
set git_info '['$git_branch"*"']'
|
||||||
|
else
|
||||||
|
set git_info '['$git_branch']'
|
||||||
|
end
|
||||||
|
|
||||||
|
echo -n (set_color white) $git_info (set_color normal)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function fish_right_prompt
|
||||||
|
set -l st $status
|
||||||
|
|
||||||
|
if [ $st != 0 ];
|
||||||
|
echo (set_color red) ↵ $st(set_color normal)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
echo -n (set_color white)"╭─"(set_color normal)
|
||||||
|
__user_host
|
||||||
|
__current_path
|
||||||
|
__git_status
|
||||||
|
echo -e '''
|
||||||
|
echo (set_color white)"╰─"(set_color --bold white)"\$ "(set_color normal)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
61
programs/kitty.nix
Normal file
61
programs/kitty.nix
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
pkgs: {
|
||||||
|
enable = true;
|
||||||
|
font.name = "Comic Mono";
|
||||||
|
font.package = pkgs.comic-mono;
|
||||||
|
font.size = 13;
|
||||||
|
settings = {
|
||||||
|
hide_window_decorations = true;
|
||||||
|
tab_bar_style = "powerline";
|
||||||
|
tab_powerline_style = "slanted";
|
||||||
|
window_padding_width = 5;
|
||||||
|
allow_remote_control = true;
|
||||||
|
listen_on = "unix:/tmp/kitty";
|
||||||
|
enabled_layouts = "splits";
|
||||||
|
close_on_child_death = true;
|
||||||
|
scrollback_lines = 4000;
|
||||||
|
repaint_delay = 17;
|
||||||
|
input_delay = 17;
|
||||||
|
shell = "fish";
|
||||||
|
editor = "nvim";
|
||||||
|
|
||||||
|
foreground = "#ffffff";
|
||||||
|
background = "#201B27";
|
||||||
|
selection_foreground = "#201B27";
|
||||||
|
selection_background = "#ffffff";
|
||||||
|
|
||||||
|
# Old Lavender (Comments)
|
||||||
|
color0 = "#91889b";
|
||||||
|
color8 = "#91889b";
|
||||||
|
|
||||||
|
# Hot Pink (Functions, Attributes, Highlights)
|
||||||
|
color1 = "#ff52bf";
|
||||||
|
color9 = "#ff52bf";
|
||||||
|
|
||||||
|
# Pearl Aqua (Operators, Tags)
|
||||||
|
color2 = "#3feabf";
|
||||||
|
color10 = "#3feabf";
|
||||||
|
|
||||||
|
# Mustard (Builtins, Constants)
|
||||||
|
color3 = "#ffe261";
|
||||||
|
color11 = "#ffe261";
|
||||||
|
|
||||||
|
# Powder Blue (Strings)
|
||||||
|
color4 = "#acdfef";
|
||||||
|
color12 = "#acdfef";
|
||||||
|
|
||||||
|
# African Violet (Numbers, Types)
|
||||||
|
color5 = "#d887f5";
|
||||||
|
color13 = "#d887f5";
|
||||||
|
|
||||||
|
# Maximum Blue (Keywords, Properties)
|
||||||
|
color6 = "#1ed3ec";
|
||||||
|
color14 = "#1ed3ec";
|
||||||
|
|
||||||
|
# Unnamed (Cool Mystery Purposes ig)
|
||||||
|
color7 = "#716385";
|
||||||
|
color15 = "#716385";
|
||||||
|
|
||||||
|
# Roman Siler (Punctuation)
|
||||||
|
# b4a8c8
|
||||||
|
};
|
||||||
|
}
|
220
programs/neovim.nix
Normal file
220
programs/neovim.nix
Normal file
|
@ -0,0 +1,220 @@
|
||||||
|
with builtins;
|
||||||
|
|
||||||
|
let
|
||||||
|
mkSettings = s:
|
||||||
|
concatStringsSep
|
||||||
|
"\n"
|
||||||
|
(attrValues
|
||||||
|
(mapAttrs
|
||||||
|
(k: v:
|
||||||
|
if typeOf v == "bool" then
|
||||||
|
if v then "set ${k}" else "set no${k}"
|
||||||
|
else
|
||||||
|
"set ${k}=${toString v}")
|
||||||
|
s
|
||||||
|
)
|
||||||
|
);
|
||||||
|
boolToString = b: if b then "true" else "false";
|
||||||
|
toLuaTable = as:
|
||||||
|
"{" +
|
||||||
|
( concatStringsSep
|
||||||
|
", "
|
||||||
|
( filter
|
||||||
|
(attr: !isNull attr)
|
||||||
|
( attrValues
|
||||||
|
( mapAttrs
|
||||||
|
(k: v: if v then "${k}=true" else null)
|
||||||
|
as
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) +
|
||||||
|
"}";
|
||||||
|
mkMapping = {
|
||||||
|
mode,
|
||||||
|
binding,
|
||||||
|
command,
|
||||||
|
nowait?false,
|
||||||
|
silent?false,
|
||||||
|
unique?false,
|
||||||
|
expr?false
|
||||||
|
}:
|
||||||
|
"vim.api.nvim_set_keymap(${toJSON mode}, ${toJSON binding}, ${toJSON command}, ${toLuaTable {inherit nowait silent unique expr;}})";
|
||||||
|
mkMappings =
|
||||||
|
m:
|
||||||
|
"lua << END-OF-KEYBINDS\n" +
|
||||||
|
(concatStringsSep "\n" (map mkMapping m)) +
|
||||||
|
"\nEND-OF-KEYBINDS";
|
||||||
|
mkRuntimes = rs:
|
||||||
|
if rs == [] then "" else
|
||||||
|
"set runtimepath+=" +
|
||||||
|
( concatStringsSep
|
||||||
|
","
|
||||||
|
(map (rt: "${rt}") rs)
|
||||||
|
);
|
||||||
|
mkVimHeader = h: "\"\"\"\"\"\"\"\" ${h} \"\"\"\"\"\"\"\"\"";
|
||||||
|
mkVimSection = section:
|
||||||
|
(concatStringsSep "\n\n\n"
|
||||||
|
(filter
|
||||||
|
(v: !isNull v)
|
||||||
|
(attrValues
|
||||||
|
(mapAttrs
|
||||||
|
(k: v: if "" == v then null else (mkVimHeader k) + "\n" + v)
|
||||||
|
section
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
mkVimSections = sections: concatStringsSep "\n\n\n" (map mkVimSection sections);
|
||||||
|
mkConfig = { settings?{}, mappings?[], runtimes?[], extra?"" }:
|
||||||
|
mkVimSections [
|
||||||
|
{"ADDITIONAL RUNTIME DIRS" = mkRuntimes runtimes;}
|
||||||
|
{"SETTINGS" = mkSettings settings;}
|
||||||
|
{"KEY BINGINGS" = mkMappings mappings;}
|
||||||
|
{"MANUAL SETTINGS" = extra;}
|
||||||
|
];
|
||||||
|
in
|
||||||
|
pkgs: {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
editorconfig-nvim
|
||||||
|
vim-airline
|
||||||
|
vim-airline-themes
|
||||||
|
lsp_signature-nvim
|
||||||
|
nvim-colorizer-lua
|
||||||
|
nnn-vim
|
||||||
|
nvim-surround
|
||||||
|
hop-nvim
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
nvim-ts-rainbow
|
||||||
|
nvim-lspconfig
|
||||||
|
];
|
||||||
|
extraConfig = mkConfig {
|
||||||
|
settings = {
|
||||||
|
number = true;
|
||||||
|
expandtab = false;
|
||||||
|
linebreak = true;
|
||||||
|
display = "lastline";
|
||||||
|
comments = "s1:/*,mb:*,ex:*/,:///\\ #,:///,://!,://,b:#,:%,:XCOMM,n:>,b:-,b:*";
|
||||||
|
tgc = true;
|
||||||
|
tw = 90;
|
||||||
|
foldmethod = "expr";
|
||||||
|
foldexpr = "nvim_treesitter#foldexpr()";
|
||||||
|
foldminlines = 10;
|
||||||
|
foldnestmax = 2;
|
||||||
|
};
|
||||||
|
mappings = [
|
||||||
|
{
|
||||||
|
mode = "";
|
||||||
|
binding = "<C-t>";
|
||||||
|
command = "<Cmd>:tab split<CR>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<C-n>";
|
||||||
|
command = "<cmd>call nnn#pick(expand('%:p:h'))<CR>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<C-h>";
|
||||||
|
command = "<cmd>HopWord<CR>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<C-l>";
|
||||||
|
command = "<cmd>HopChar2<CR>";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "i";
|
||||||
|
binding = "<Tab>";
|
||||||
|
command = "coc#pum#visible() ? coc#pum#next(1) : CheckBackspace() ? \"\\<Tab>\" : coc#refresh()";
|
||||||
|
silent = true;
|
||||||
|
expr = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "i";
|
||||||
|
binding = "<S-Tab>";
|
||||||
|
command = "coc#pum#visible() ? coc#pum#prev(1) : \"\\<C-h>\"";
|
||||||
|
expr = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "i";
|
||||||
|
binding = "<CR>";
|
||||||
|
command = "coc#pum#visible() ? coc#pum#confirm() : \"\\<C-g>u\\<CR>\\<c-r>=coc#on_enter()\\<CR>\"";
|
||||||
|
silent = true;
|
||||||
|
expr = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<C-Space>";
|
||||||
|
command = "coc#refresh()";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "[g";
|
||||||
|
command = "<Plug>(coc-diagnostic-prev)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "]g";
|
||||||
|
command = "<Plug>(coc-diagnostic-next)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "gd";
|
||||||
|
command = "<Plug>(coc-definition)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "gy";
|
||||||
|
command = "<Plug>(coc-type-definition)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "gi";
|
||||||
|
command = "<Plug>(coc-implementation)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "gr";
|
||||||
|
command = "<Plug>(coc-references)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "K";
|
||||||
|
command = ":call ShowDocumentation()<CR>";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "...";
|
||||||
|
command = "<Plug>(coc-codeaction-cursor)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<Space>rn";
|
||||||
|
command = "<Plug>(coc-rename)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
binding = "<Space>cl";
|
||||||
|
command = "<Plug>(coc-codelens-action)";
|
||||||
|
silent = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
runtimes = [neovim/laserwave];
|
||||||
|
extra = builtins.readFile neovim/init.vim;
|
||||||
|
};
|
||||||
|
coc.enable = true;
|
||||||
|
coc.settings = {
|
||||||
|
};
|
||||||
|
}
|
31
programs/neovim/init.vim
Normal file
31
programs/neovim/init.vim
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
:colo laserwave
|
||||||
|
:let g:airline_theme="fruit_punch"
|
||||||
|
:let g:EditorConfig_exclude_patterns = ['scp://.*']
|
||||||
|
:let g:instant_username = "Emi"
|
||||||
|
|
||||||
|
lua << EOF
|
||||||
|
require'colorizer'.setup()
|
||||||
|
|
||||||
|
require('hop').setup()
|
||||||
|
|
||||||
|
require'nvim-treesitter.configs'.setup {
|
||||||
|
highlight = {
|
||||||
|
enable = true, -- false will disable the whole extension
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
" https://github.com/neoclide/coc.nvim
|
||||||
|
" Used in keybindings
|
||||||
|
function! CheckBackspace() abort
|
||||||
|
let col = col('.') - 1
|
||||||
|
return !col || getline('.')[col - 1] =~# '\s'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ShowDocumentation()
|
||||||
|
if CocAction('hasProvider', 'hover')
|
||||||
|
call CocActionAsync('doHover')
|
||||||
|
else
|
||||||
|
call feedkeys('K', 'in')
|
||||||
|
endif
|
||||||
|
endfunction
|
58
programs/neovim/laserwave/colors/laserwave.vim
Normal file
58
programs/neovim/laserwave/colors/laserwave.vim
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
" Vim color file
|
||||||
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
|
" Last Change: 2001 Jul 23
|
||||||
|
|
||||||
|
" This is the default color scheme. It doesn't define the Normal
|
||||||
|
" highlighting, it uses whatever the colors used to be.
|
||||||
|
|
||||||
|
" Set 'background' back to the default. The value can't always be estimated
|
||||||
|
" and is then guessed.
|
||||||
|
hi clear Normal
|
||||||
|
set bg&
|
||||||
|
|
||||||
|
" Remove all existing highlighting and set the defaults.
|
||||||
|
hi clear
|
||||||
|
|
||||||
|
" Load the syntax highlighting defaults, if it's enabled.
|
||||||
|
if exists("syntax_on")
|
||||||
|
syntax reset
|
||||||
|
endif
|
||||||
|
|
||||||
|
hi Normal guibg=#201b27
|
||||||
|
hi Comment guifg=#91889b
|
||||||
|
hi Constant guifg=#ffe261
|
||||||
|
hi String guifg=#acdfef
|
||||||
|
hi Number guifg=#d887f5
|
||||||
|
hi Type guifg=#d887f5
|
||||||
|
hi Special guifg=#ff52bf
|
||||||
|
hi Statement guifg=#1ed3ec
|
||||||
|
hi PreProc guifg=#716385
|
||||||
|
hi Todo guifg=black guibg=#ff52bf
|
||||||
|
hi Identifier guifg=#ffffff
|
||||||
|
hi Function guifg=#ff52bf
|
||||||
|
hi Operator guifg=#3feabf
|
||||||
|
hi Delimiter guifg=#7b6995
|
||||||
|
|
||||||
|
hi TSProperty guifg=#1ed3ec
|
||||||
|
hi TSAttribute guifg=#ff52bf
|
||||||
|
hi TSField guifg=#ff52bf
|
||||||
|
hi TSTag guifg=#3feabf
|
||||||
|
hi TSFuncBuiltin guifg=#ffe261
|
||||||
|
hi TSTypeBuiltin guifg=#ffe261
|
||||||
|
hi TSConstBuiltin guifg=#ffe261
|
||||||
|
hi TSVariableBuiltin guifg=#ffe261
|
||||||
|
|
||||||
|
hi LineNr guifg=grey
|
||||||
|
hi Pmenu guifg=white guibg=#483051
|
||||||
|
hi ColorColumn guibg=#2A2432
|
||||||
|
|
||||||
|
hi LspDiagnosticsUnderlineError gui=undercurl guisp=#ff52bf
|
||||||
|
hi LspDiagnosticsUnderlineWarning gui=undercurl guisp=#ffe261
|
||||||
|
hi LspDiagnosticsUnderlineInformation gui=undercurl guisp=#1ed3ec
|
||||||
|
hi LspDiagnosticsUnderlineHint gui=undercurl guisp=#91889b
|
||||||
|
|
||||||
|
hi IndentBlanklineChar guifg=#483051
|
||||||
|
|
||||||
|
let colors_name = "laserwave"
|
||||||
|
|
||||||
|
" vim: sw=2
|
Loading…
Reference in a new issue