V3WQEWE7CRZIAFG7ATQRGM3XXBHCBDNYFTLQ5O676Z56BODXE5BAC
{
stylix = {
targets.vscode.enable = false;
};
}
{
base00 = "1f1926";
base01 = "6a3740";
base02 = "ab4d47";
base03 = "e8834c";
base04 = "eca6ac";
base05 = "ebe0e4";
base06 = "fcedec";
base07 = "fbefef";
base08 = "ffff00";
base09 = "00ff00";
base0A = "0000ff";
base0B = "f85a59";
base0C = "79B995";
base0D = "b05000";
base0E = "7c94f4";
base0F = "7f007f";
scheme = "Eclipse";
author = "Caedesyth";
slug = "caedesyth";
}
{
base00 = "1f1926";
base01 = "6a3740";
base02 = "ab4d47";
base03 = "e8834c";
base04 = "eca6ac";
base05 = "ebe0e4";
base06 = "fcedec";
base07 = "fbefef";
base08 = "f9585b";
base09 = "e96953";
base0A = "f35e62";
base0B = "f85a59";
base0C = "fb5752";
base0D = "ec655c";
base0E = "fe535b";
base0F = "f35f53";
scheme = "Stylix";
author = "Stylix";
slug = "stylix";
}
{
scheme = "EclipseGenerated2";
author = "Evan:Flavours";
base00 = "401e23";
base01 = "64474b";
base02 = "877073";
base03 = "aa999a";
base04 = "cdc2c2";
base05 = "f0ebea";
base06 = "f2eeed";
base07 = "f4f1f0";
base08 = "6c7c76";
base09 = "7d795c";
base0A = "856ea7";
base0B = "5374ce";
base0C = "7c94f4";
base0D = "5874cb";
base0E = "eb9fa6";
base0F = "f8e5e2";
}
{
scheme = "Eclipse";
author = "Evan:Flavours";
base00 = "1f1926";
base01 = "64474b";
base02 = "ab4d47";
base03 = "e8834c";
base04 = "eca6ac";
base05 = "f0ebea";
base06 = "f2eeed";
base07 = "f4f1f0";
base08 = "6c7c76";
base09 = "7d795c";
base0A = "856ea7";
base0B = "5374ce";
base0C = "7c94f4";
base0D = "5874cb";
base0E = "eb9fa6";
base0F = "f8e5e2";
}
{pkgs, ...}: let
mono-font = {
package = pkgs.nerdfonts.override {fonts = ["ComicShannsMono"];};
name = "ComicShannsMono Nerd Font";
};
in {
# Enable Stylix
stylix = {
enable = true;
image = ./bastien-griven-crystal.jpg;
#base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-macchiato.yaml";
base16Scheme = "${pkgs.base16-schemes}/share/themes/monokai.yaml";
#base16Scheme = import ./eclipse-generated-2.nix;
polarity = "dark";
# Cursors
cursor = {
name = "Vimix-cursors";
package = pkgs.vimix-cursors;
};
# Fonts
fonts = {
serif = mono-font;
sansSerif = mono-font;
monospace = mono-font;
emoji = {
package = pkgs.twitter-color-emoji;
name = "Twitter Color Emoji";
};
};
};
}
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA9WIzX3nskhqhsxsX1jBlDWiKU7Ij/Iz5nTTGDYl22L typhon@typhon
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIByugDtrlIdwaBwKBWSWmBGyUrvYgB72jxqkfj321/nf muko@muko
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI0YnYRwWci57gO+ULfgbmqMiMy0wGiK4V2tK8W10CZ6QZxcbkIqhvGmD2a067TeozqccTHp4YMdo4+2aJVTUEoyel8nKeC9JvjnOCKwf8N4IUrS2Eq45tqOzdhaLyDYfyhHjJJax/zHW8gQ4guh5gFgeOyyHcw+M7EeeCoXnDaYseR7cylvdLATIDMV90fKW+c8BMccYWNM6Mj8VkSgos+qCdf2aBdfA0Vr8pEa0J+c7X0p8w89xVgSDPc5W0/RD+icE4lu0r0xiY2Y/J2yuq/VWr4slpPyt3/uO9yCWMjVPRmSbDCkInTI09Wxy0Ojpm/mh6UjIacnwfGvz+FVwf ssh-key-2023-08-27
{ lib, config, pkgs, ... }:
{
# My mixed modules
cady = {
};
# Nix only settings
nix = {
# IF isNixos - why store these in git, yknow? They should be static.
# In that case - put it in the flake.
imports = [ /etc/nixos/hardware-configuration.nix ];
};
# Home only settings
home = {
};
};
{
description = "caedesyth system flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
nixvim.url = "github:nix-community/nixvim";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
nixvim.inputs.home-manager.follows = "home-manager";
stylix.url = "github:danth/stylix";
stylix.inputs.nixpkgs.follows = "nixpkgs";
stylix.inputs.home-manager.follows = "home-manager";
foundryvtt.url = "github:reckenrode/nix-foundryvtt";
foundryvtt.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
{
self,
nixpkgs,
home-manager,
stylix,
...
}@inputs:
let
inherit (self) outputs;
system = "x86_64-linux";
flakeroot = ./.;
mkNixosConfiguration =
profile:
nixpkgs.lib.nixosSystem {
specialArgs = {
inherit
inputs
outputs
profile
rootPath
;
};
modules = [
"./${profile.hostname}.nix"
/etc/nixos/hardware-configuration.nix
] ++ (profile.extraPkgs ? [ ]);
};
mkHomeConfiguration =
profile:
home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
extraSpecialArgs = {
inherit
inputs
outputs
profile
rootPath
;
};
modules = [
import "./${profile.username}.nix"
./home
(./hosts + "/${profile.hostname}" + /home.nix)
stylix.homeManagerModules.stylix
./stylix
./stylix/home.nix
] ++ (profile.extraHomePkgs ? [ ]);
};
muko = mkProfile {
hostname = "muko";
username = "muko";
isNixos = true;
extraPkgs = [
./nix/nvidia.nix
./nix/plasma.nix
];
extraHomePkgs = [ ];
};
typhon = mkProfile {
hostname = "typhon";
username = "typhon";
isNixos = true;
extraPkgs = [
inputs.foundryvtt.nixosModules.foundryvtt
];
extraHomePkgs = [ ];
};
in
{
nixosConfigurations = {
muko = mkNixosConfiguration muko;
typhon = mkNixosConfiguration typhon;
};
homeConfigurations = {
muko = mkHomeConfiguration muko;
typhon = mkHomeConfiguration typhon;
};
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style;
}
{
config,
pkgs,
inputs,
...
}:
{
home.username = "vimjoyer";
home.homeDirectory = "/home/vimjoyer";
home.stateVersion = "22.11"; # Please read the comment before changing.
nixpkgs = {
overlays = [
(final: prev: {
vimPlugins = prev.vimPlugins // {
own-onedark-nvim = prev.vimUtils.buildVimPlugin {
name = "onedark";
src = inputs.plugin-onedark;
};
};
})
];
};
programs.neovim =
let
toLua = str: "lua << EOF\n${str}\nEOF\n";
toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
in
{
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
extraPackages = with pkgs; [
lua-language-server
rnix-lsp
xclip
wl-clipboard
];
plugins = with pkgs.vimPlugins; [
{
plugin = nvim-lspconfig;
config = toLuaFile ./nvim/plugin/lsp.lua;
}
{
plugin = comment-nvim;
config = toLua "require(\"Comment\").setup()";
}
{
plugin = gruvbox-nvim;
config = "colorscheme gruvbox";
}
neodev-nvim
nvim-cmp
{
plugin = nvim-cmp;
config = toLuaFile ./nvim/plugin/cmp.lua;
}
{
plugin = telescope-nvim;
config = toLuaFile ./nvim/plugin/telescope.lua;
}
telescope-fzf-native-nvim
cmp_luasnip
cmp-nvim-lsp
luasnip
friendly-snippets
lualine-nvim
nvim-web-devicons
{
plugin = (
nvim-treesitter.withPlugins (p: [
p.tree-sitter-nix
p.tree-sitter-vim
p.tree-sitter-bash
p.tree-sitter-lua
p.tree-sitter-python
p.tree-sitter-json
])
);
config = toLuaFile ./nvim/plugin/treesitter.lua;
}
vim-nix
# {
# plugin = vimPlugins.own-onedark-nvim;
# config = "colorscheme onedark";
# }
];
extraLuaConfig = ''
${builtins.readFile ./nvim/options.lua}
'';
# extraLuaConfig = ''
# ${builtins.readFile ./nvim/options.lua}
# ${builtins.readFile ./nvim/plugin/lsp.lua}
# ${builtins.readFile ./nvim/plugin/cmp.lua}
# ${builtins.readFile ./nvim/plugin/telescope.lua}
# ${builtins.readFile ./nvim/plugin/treesitter.lua}
# ${builtins.readFile ./nvim/plugin/other.lua}
# '';
};
programs.home-manager.enable = true;
}
{
description = "My flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
plugin-onedark.url = "github:navarasu/onedark.nvim";
plugin-onedark.flake = false;
};
outputs =
{ self, nixpkgs, ... }@inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
};
in
{
homeConfigurations."vimjoyer" = inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./nixos/home.nix ];
extraSpecialArgs = {
inherit inputs;
};
};
};
}
{
config,
lib,
pkgs,
profile,
...
}: {
options.cady.emulator = {
enable = lib.mkEnableOption "Enables QEMU+KVM+virt-manager Emulator";
};
config = lib.mkMerge [
(lib.mkIf config.cady.emulator.enable {
# QEMU+KVM. We'll see how it goes from here. There are also dconf settings written to home.nix.
virtualisation.libvirtd = {
enable = true;
onBoot = "start";
qemu.vhostUserPackages = with pkgs; [virtiofsd];
};
programs.virt-manager.enable = true;
users.users.${profile.username}.extraGroups = ["libvirtd"];
})
];
}
{
pkgs,
lib,
config,
...
}:
{
options.cady = {
ports = {
enable = lib.mkEnableOption "Cady's funny port stuff (firewall config module.)";
both = lib.mkOption {
default =
[
];
example = [
25565
25566
];
type = lib.types.listOf lib.types.int;
description = "Additional ports to open for both TCP and UDP";
};
tcp = lib.mkOption {
default = [ ];
example = [
80
];
type = lib.types.listOf lib.types.int;
description = "Additional ports to open for TCP";
};
udp = lib.mkOption {
default = [ ];
example = [
6969
];
type = lib.types.listOf lib.types.int;
description = "Additional ports to open for UDP";
};
};
ssh.enable = lib.mkEnableOption "Enable SSH service";
nextdns = {
enable = lib.mkEnableOption "The NextDNS nameserver overrides.";
servers = lib.mkOption {
default = [
"45.90.28.0#fbd51c.dns.nextdns.io"
"2a07:a8c0::#fbd51c.dns.nextdns.io"
"45.90.30.0#fbd51c.dns.nextdns.io"
"2a07:a8c1::#fbd51c.dns.nextdns.io"
];
example = [
"idk some ip addresses"
"maybe some more"
];
type = lib.types.listOf lib.types.str;
description = "A list of fallback domains preconfigured to align with NextDNS.";
};
};
};
config = lib.mkMerge [
(lib.mkIf config.cady.nextdns.enable {
# NextDNS setup
networking.nameservers = config.cady.nextdns.servers;
services.resolved = {
enable = true;
dnssec = "true";
domains = [ "~." ];
fallbackDns = config.cady.nextdns.servers;
dnsovertls = "true";
};
})
(lib.mkIf (config.cady.ports.enable) (
let
both = config.cady.ports.both;
tcp = config.cady.ports.tcp ++ lib.optionals config.cady.ssh.enable [ 9125 ];
udp = config.cady.ports.udp;
in
{
networking.firewall.enable = true;
networking.firewall.allowedTCPPorts = both ++ tcp;
networking.firewall.allowedUDPPorts = both ++ udp;
}
))
(lib.mkIf (config.cady.ssh.enable) ({
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
};
ports = [ 9125 ];
};
}))
];
}
{
config,
lib,
pkgs,
...
}:
{
options.cady.nvidia.enable = lib.mkEnableOption "Nvidia Graphics Settings";
config = lib.mkIf config.cady.nvidia.enable {
# Enable OpenGL
hardware.graphics = {
enable = true;
# driSupport = true;
# driSupport32Bit = true;
};
# Load Nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = [ "nvidia" ];
# Seems like a good idea.
hardware.enableAllFirmware = true;
hardware.nvidia = {
# Modesetting is required
modesetting.enable = true;
nvidiaPersistenced = true;
# These options are all experimental and buggy.
# See https://nixos.wiki/wiki/Nvidia for more info
powerManagement = {
enable = true;
};
open = false;
# Enable the Nvidia settings menu through nvidia-settings
nvidiaSettings = true;
# May need to switch to appropriate driver
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.stable;
};
# Taken from https://github.com/tolgaerok/nixos-kde/blob/0a3541eb07c183a8c1979e024abe3bebcbfd8fe2/core%2Fgpu%2Fnvidia%2Fnvidia-stable-opengl%2Fdefault.nix
boot.extraModprobeConfig =
"options nvidia "
+ lib.concatStringsSep " " [
# nvidia assume that by default your CPU does not support PAT,
# but this is effectively never the case in 2023
"NVreg_UsePageAttributeTable=1"
# This may be a noop, but it's somewhat uncertain
"NVreg_EnablePCIeGen3=1"
# This is sometimes needed for ddc/ci support, see
# https://www.ddcutil.com/nvidia/
#
# Current monitor does not support it, but this is useful for
# the future
"NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100"
# When (if!) I get another nvidia GPU, check for resizeable bar
# settings
];
# Set environment variables related to NVIDIA graphics
environment.variables = {
# Required to run the correct GBM backend for nvidia GPUs on wayland
GBM_BACKEND = "nvidia-drm";
# Apparently, without this nouveau may attempt to be used instead
# (despite it being blacklisted)
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
# Hardware cursors are currently broken on nvidia
LIBVA_DRIVER_NAME = "nvidia";
WLR_NO_HARDWARE_CURSORS = "1";
NIXOS_OZONE_WL = "1";
__GL_THREADED_OPTIMIZATION = "1";
__GL_SHADER_CACHE = "1";
# Hardware acceleration in firefox
NVD_BACKEND = "direct";
MOZ_DISABLE_RDD_SANDBOX = "1";
};
# Packages related to NVIDIA graphics
environment.systemPackages = with pkgs; [
clinfo
gwe
nvtopPackages.nvidia
virtualglLib
vulkan-loader
vulkan-tools
];
};
}
{
pkgs,
lib,
config,
...
}:
{
options.cady = {
desktop = lib.mkOption {
type = lib.types.enum [
"Gnome"
"Plasma"
"Hyprland"
];
default = "Gnome";
description = "Cady style preconfigured DE (Only Gnome or Plasma for now)";
};
remote.enable = lib.mkEnableOption "Enable XRDP";
};
config = lib.mkMerge [
(lib.mkIf (config.cady.remote.enable) {
# services.sunshine = {
# enable = true;
# openFirewall = true;
# capSysAdmin = true;
# };
})
(lib.mkIf (config.cady.desktop == "Gnome") {
# Enable the X11 windowing system and disable xterm.
services.xserver = {
enable = true;
excludePackages = with pkgs; [ xterm ];
};
# Enable the GNOME Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# Exclude GNOME default applications
environment.gnome.excludePackages = with pkgs; [
gnome-disk-utility
gnome-backgrounds
gnome-user-docs
gnome-tour
# gnome-text-editor
gnome-calculator
gnome-calendar
gnome-contacts
gnome-font-viewer
gnome-maps
gnome-music
gnome-weather
gnome-connections
gnome-software
orca
simple-scan
# snapshot
# totem
yelp
epiphany
geary
evince
];
# Workaround for GNOME autologin: https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
# Pop!_OS shell is really nice actually.
environment.systemPackages =
with pkgs;
with pkgs.gnomeExtensions;
[
pop-shell
blur-my-shell
undecorate
gsnap
gparted
];
})
(lib.mkIf (config.cady.desktop == "Plasma") {
# Enable the X11 windowing system and disable xterm.
services.xserver = {
enable = true;
excludePackages = with pkgs; [ xterm ];
};
# Enable KDE Plasma
# services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
# Plasma Packages
environment.systemPackages =
with pkgs;
with kdePackages;
[
plasma-browser-integration
];
environment.plasma6.excludePackages = with pkgs.kdePackages; [
elisa
kate
];
})
];
}
{
profile,
lib,
config,
inputs,
...
}: {
imports = [
./nvidia.nix
./ports.nix
./desktop.nix
./virt.nix
];
options.cady = {
defaults = lib.mkEnableOption "Cady Universal Defaults!!";
autoUpdate = lib.mkEnableOption "Auto update my flake!";
};
config = lib.mkMerge [
(lib.mkIf config.cady.autoUpdate {
# Automatic updates?? Actually enabled?
system.autoUpgrade = {
enable = true;
flake = inputs.self.outPath;
flags = [
"--update-input"
"nixpkgs"
"-L"
];
dates = "16:00";
randomizedDelaySec = "45min";
};
})
(lib.mkIf config.cady.defaults {
# A user profile is nice to have
users.users.${profile.username} = {
isNormalUser = true;
description = "Woah!! epic user account!!";
extraGroups = [
"networkmanager"
"wheel"
];
};
# Host name
networking.hostName = profile.hostname;
# Enable automatic login for the user
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = profile.username;
# Sudoers change for wheel
security.sudo.wheelNeedsPassword = false;
security.sudo.configFile = "${profile.username} ALL=(ALL) NOPASSWD:ALL";
security.polkit.adminIdentities = [];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Always should have a browser.
programs.firefox.enable = true;
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/London";
# Select internationalisation properties.
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "gb";
variant = "";
};
# Configure console keymap
console.keyMap = "uk";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.extraConfig."51-disable-suspension.conf" = {
session.suspend-timeout-seconds = 0;
};
};
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;
# Enable ZSA keyboard support
hardware.keyboard.zsa.enable = true;
# Tell more things to run on wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
# Enable flakes
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
})
];
}
{
inputs,
outputs,
lib,
pkgs,
config,
...
}:
{
options.cady.home = {
defaults = lib.mkEnableOption "Cady Universal Home Defaults!!";
userDirsOverride = lib.mkEnableOption "apparently i hate uppercase now";
};
config = lib.mkMerge [
(lib.mkIf config.cady.home.defaults {
nixpkgs.config.allowUnfree = true;
# QEMU + KVM autostart, see nix/common.nix for extra setup.
dconf.settings = {
"org/virt-manager/virt-manager/connections" = {
autoconnect = [ "qemu:///system" ];
uris = [ "qemu:///system" ];
};
};
# Enable home-manager and git
programs.home-manager.enable = true;
programs.git = {
enable = true;
userEmail = lib.mkDefault "evanev7@gmail.com";
userName = lib.mkDefault "caedesyth";
};
# Move .gtkrc-2.0 out of home and into .config, in line with gtk 3 and 4.
gtk.gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
# Disable news message
news.display = "silent";
# Reload systemd units when reloading home-manager
systemd.user.startServices = "sd-switch";
})
(lib.mkIf config.cady.home.userDirsOverride {
xdg.userDirs =
let
filesDir = "/mysc/files";
in
{
enable = true;
createDirectories = true;
desktop = "${config.home.homeDirectory}/desktop";
documents = "${config.home.homeDirectory}" + filesDir;
download = "${config.home.homeDirectory}/downloads";
music = "${config.home.homeDirectory}" + filesDir;
pictures = "${config.home.homeDirectory}" + filesDir;
publicShare = "${config.home.homeDirectory}/mysc/public";
templates = "${config.home.homeDirectory}/mysc/templates";
videos = "${config.home.homeDirectory}" + filesDir;
extraConfig = {
XDG_PROJECTS_DIR = "${config.home.homeDirectory}/projects";
};
};
gtk.gtk3.bookmarks = builtins.map (file: "file://${config.home.homeDirectory}/${file}") [
"desktop"
"downloads"
"nixos"
"projects"
];
})
];
}
{
dconf = {
enable = true;
settings = {
"org/gnome/desktop/wm/keybindings" = {
switch-to-workspace-down = [ "disabled" ];
switch-to-workspace-up = [ "disabled" ];
};
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = with pkgs.gnomeExtensions; [
"blur-my-shell@aunetx"
"pop-shell@system76.com"
];
};
};
};
}
{ config, pkgs, lib, ... }:
# Thanks sleepy@discourse.nixos.org!
# Taken from https://discourse.nixos.org/t/declare-firefox-extensions-and-settings/36265/5
{
# Might eventually include extensions. Probably not though.
options.cady = {
firefox = {
enable = lib.mkEnableOption "Firefox defaults";
userChromePath = lib.mkOption {
type = lib.types.path;
description = "Path to userChrome.css";
};
extraPrefs = lib.mkOption {
description = "Additional options for Firefox preferences, loaded globally.";
type = lib.types.attrs;
default = {};
};
};
};
config = lib.mkMerge [
(lib.mkIf (config.cady.firefox.enable) {
# ---- sidebery is stored in firefox sync ----
# My own code, no longer sleepy.
# https://discourse.nixos.org/t/anyone-using-firefox-gnome-theme-successfully-with-nixos-home-manager/19248 massively helped!!
home.file.".mozilla/firefox/default/chrome/userChrome.css".source = config.cady.firefox.userChromePath;
programs.firefox = {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
# add policies here...
# ---- EXTENSIONS ----
ExtensionSettings = {
# "*".installation_mode = "blocked"; # blocks all addons except the ones specified below
# # uBlock Origin:
# "uBlock0@raymondhill.net" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
# installation_mode = "force_installed";
# };
# # add extensions here...
};
# ---- PREFERENCES ----
# Set preferences shared by all profiles.
Preferences = {
"browser.contentblocking.category" = {
Value = "strict";
};
"extensions.pocket.enabled" = false;
"extensions.screenshots.disabled" = true;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.snippets" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.system.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
# add global preferences here...
"layout.css.color-mix.enabled" = true;
"layout.css.light-dark.enabled" = true;
"layout.css.has-selector.enabled" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.tabs.allow_transparent_browser" = true;
} // config.cady.firefox.extraPrefs;
};
};
# ---- PROFILES ----
# Switch profiles via about:profiles page.
# For options that are available in Home-Manager see
# https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles
profiles = {
default = {
# choose a profile name; directory is /home/<user>/.mozilla/firefox/profile_0
id = 0; # 0 is the default profile; see also option "isDefault"
name = "default"; # name as listed in about:profiles
isDefault = true; # can be omitted; true if profile ID is 0
settings = {
# specify profile-specific preferences here; check about:config for options
};
};
};
};
})
];
}
{
imports = [
./console.nix
./firefox.nix
./home.nix
];
}
{
config,
pkgs,
lib,
...
}: {
options.cady = {
console = {
defaults = lib.mkEnableOption "The Cady approved defaults for a snazzy console time";
shellAliases = lib.mkOption {
description = "Shell Aliases for Bash";
type = lib.types.attrs;
default = {
"n" = "nvim";
};
};
starship = {
enable = lib.mkEnableOption "Enable starship console line";
direnv = lib.mkEnableOption "Include direnv when in an active flake in Starship";
};
};
};
config = lib.mkMerge [
(lib.mkIf config.cady.console.defaults {
programs.bash = {
enable = true;
shellAliases = config.cady.console.shellAliases;
bashrcExtra = ''
if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
exec tmux
fi
'';
};
programs.direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv.enable = true;
};
programs.kitty = {
enable = true;
settings = {
background_opacity = lib.mkForce "0.8";
background_blur = "1";
dynamic_background_opacity = "yes";
background_tint = "0";
cursor_trail = "1";
};
};
programs.tmux = {
enable = true;
mouse = true;
plugins = with pkgs.tmuxPlugins; [
gruvbox
sensible
vim-tmux-navigator
better-mouse-mode
sidebar
];
extraConfig = ''
set -g @resurrect-strategy-nvim 'session'
'';
};
})
(lib.mkIf (config.cady.console.defaults && config.cady.console.starship.enable) {
programs.starship = {
enable = true;
settings =
{
}
// (
if config.cady.console.starship.direnv
then {
custom.direnv = {
format = "[\\[direnv\\]]($style) ";
style = "fg:yellow dimmed";
when = "env | grep -E '^DIRENV_FILE='";
};
}
else {}
);
};
})
];
}
{
config,
pkgs,
inputs,
rootPath,
...
}:
{
programs.neovim =
let
toLua = str: "lua << EOF\n${str}\nEOF\n";
toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
configPath = rootPath + /config/nvim;
in
{
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
extraPackages = with pkgs; [
nil
xclip
wl-clipboard
];
plugins = with pkgs.vimPlugins; [
{
plugin = vim-tmux-navigator;
}
{
plugin = nvim-lspconfig;
config = toLuaFile (configPath + /plugin/lsp.lua);
}
{
plugin = comment-nvim;
config = toLua "require(\"Comment\").setup()";
}
{
plugin = gruvbox-nvim;
config = "colorscheme gruvbox";
}
neodev-nvim
nvim-cmp
{
plugin = nvim-cmp;
config = toLuaFile (configPath + /plugin/cmp.lua);
}
{
plugin = telescope-nvim;
config = toLuaFile (configPath + /plugin/telescope.lua);
}
telescope-fzf-native-nvim
cmp_luasnip
cmp-nvim-lsp
luasnip
friendly-snippets
lualine-nvim
nvim-web-devicons
{
plugin = (
nvim-treesitter.withPlugins (p: [
p.tree-sitter-nix
p.tree-sitter-vim
p.tree-sitter-bash
p.tree-sitter-lua
p.tree-sitter-python
p.tree-sitter-json
p.tree-sitter-rust
])
);
config = toLuaFile (configPath + /plugin/treesitter.lua);
}
vim-nix
# {
# plugin = vimPlugins.own-onedark-nvim;
# config = "colorscheme onedark";
# }
];
extraLuaConfig = ''
${builtins.readFile (configPath + /options.lua)}
'';
# extraLuaConfig = ''
# ${builtins.readFile ./nvim/options.lua}
# ${builtins.readFile ./nvim/plugin/lsp.lua}
# ${builtins.readFile ./nvim/plugin/cmp.lua}
# ${builtins.readFile ./nvim/plugin/telescope.lua}
# ${builtins.readFile ./nvim/plugin/treesitter.lua}
# ${builtins.readFile ./nvim/plugin/other.lua}
# '';
};
}
{
lib,
unstablePkgs,
pkgs,
rootPath,
...
}: {
home.packages = with pkgs; [
nixfmt-rfc-style
betterdiscordctl
vesktop
(pkgs.makeDesktopItem {
name = "discord";
exec = "env -u NIXOS_OZONE_WL ${pkgs.discord}/bin/discord --use-gl=desktop";
desktopName = "Discord";
icon = "${pkgs.tela-circle-icon-theme}/share/icons/Tela-circle/scalable/apps/discord.svg";
})
google-chrome
gimp
obsidian
unstablePkgs.godot_4
keymapp
thunderbird
vlc
];
cady = {
firefox = {
enable = true;
userChromePath = rootPath + /config/firefox/userChrome.css;
};
console = {
defaults = true;
shellAliases = {
"n" = "nvim";
};
starship = {
enable = true;
direnv = true;
};
};
home = {
defaults = true;
userDirsOverride = true;
};
};
imports = [
];
# Check here https://github.com/NotAShelf/nvf/blob/main/configuration.nix
programs.nvf = {
enable = true;
settings.vim = {
# keymaps = [
# Check https://github.com/NotAShelf/nvf/blob/main/modules/neovim/mappings/config.nix
# for how this converts into LUA and what options are available.
# {
#key = "<leader>m";
#mode = "n";
#silent = true;
#action = ":make<CR>";
# }
#];
viAlias = true;
vimAlias = true;
lsp = {
enable = true;
formatOnSave = true;
lspkind.enable = true;
lightbulb.enable = true;
};
spellcheck.enable = true;
theme = {
enable = true;
name = "rose-pine";
style = "moon";
transparent = true;
};
visuals = {
nvim-scrollbar.enable = true;
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
fidget-nvim.enable = true;
highlight-undo.enable = true;
cellular-automaton.enable = true;
};
autocomplete.nvim-cmp = {
enable = true;
sourcePlugins = [
"rustaceanvim"
"obsidian-nvim"
"nvim-web-devicons"
];
};
autopairs.nvim-autopairs.enable = true;
statusline.lualine.enable = true;
telescope.enable = true;
languages = {
enableLSP = true;
enableTreesitter = true;
enableFormat = true;
enableExtraDiagnostics = true;
rust = {
enable = true;
crates.enable = true;
};
nix.enable = true;
sql.enable = true;
clang.enable = true;
ts.enable = true;
python.enable = true;
zig.enable = true;
markdown.enable = true;
dart.enable = true;
lua.enable = true;
bash.enable = true;
css.enable = true;
kotlin.enable = true;
haskell.enable = true;
};
};
};
programs.vscode = {
enable = true;
package = pkgs.vscodium.fhs;
extensions = with pkgs.vscode-extensions; [
];
# userSettings = import ./config/codium/settings.nix;
};
# Disable VSCode target
stylix.targets.vscode.enable = false;
xdg.configFile."VSCodium/User/settings.json".source = lib.mkForce (
rootPath + /config/codium/settings.json
);
home = {
username = "typhon";
homeDirectory = "/home/typhon";
stateVersion = "24.05";
};
}
# 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"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/a5362508-f87e-48ed-8f6f-587331aa9d95";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/5AF2-DCE2";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];
# 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.enp3s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
{
pkgs,
profile,
rootPath,
inputs,
...
}: {
cady = {
defaults = true;
# My modules!!
nvidia.enable = true;
# Firewall + port forwarding
ports.enable = true;
ports.both = [
6567
34197
25565
30000
];
ssh.enable = true;
nextdns.enable = true;
# Desktop Environment
desktop = "Gnome";
autoUpdate = true;
};
environment.systemPackages = with pkgs; [
wget
git
pijul
nix-plugin-pijul
bash
home-manager
lshw
pciutils
inxi
gnumake
bottom
ripgrep
fd
lazygit
bacon
xdg-user-dirs
just
vimix-cursors
gparted
];
services.foundryvtt = {
enable = true;
minifyStaticFiles = true;
package = inputs.foundryvtt.packages.${pkgs.system}.foundryvtt_12;
};
# Enable steam and stuff
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
services.tailscale = {
enable = true;
openFirewall = true;
};
users.users.${profile.username} = {
openssh.authorizedKeys.keyFiles = [
(rootPath + /ssh/gtnh.key.pub)
(rootPath + /ssh/muko.pub)
(rootPath + /ssh/typhon.pub)
];
};
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Don't change it!!
system.stateVersion = "24.05";
}
{
lib,
pkgs,
rootPath,
unstablePkgs,
...
}: {
home.packages = with pkgs; [
nixfmt-rfc-style
(pkgs.makeDesktopItem {
name = "discord";
exec = "env -u NIXOS_OZONE_WL ${pkgs.discord}/bin/discord --use-gl=desktop";
desktopName = "Discord";
icon = "${pkgs.tela-circle-icon-theme}/share/icons/Tela-circle/scalable/apps/discord.svg";
})
android-studio
gimp
obsidian
unstablePkgs.godot
keymapp
pijul
nix-plugin-pijul
parsec-bin
vlc
];
cady = {
firefox = {
enable = true;
userChromePath = rootPath + /config/firefox/userChrome.css;
};
console = {
defaults = true;
# TODO: make a decision
shellAliases = {
"n" = "nvim";
};
starship = {
enable = true;
direnv = true;
};
};
home = {
defaults = true;
userDirsOverride = true;
};
};
imports = [
];
# Check here https://github.com/NotAShelf/nvf/blob/main/configuration.nix
programs.nvf = {
enable = true;
settings.vim = {
# keymaps = [
# Check https://github.com/NotAShelf/nvf/blob/main/modules/neovim/mappings/config.nix
# for how this converts into LUA and what options are available.
# {
#key = "<leader>m";
#mode = "n";
#silent = true;
#action = ":make<CR>";
# }
#];
viAlias = true;
vimAlias = true;
lsp = {
enable = true;
formatOnSave = true;
lspkind.enable = true;
lightbulb.enable = true;
};
spellcheck.enable = true;
theme = {
enable = true;
name = "rose-pine";
style = "moon";
transparent = true;
};
visuals = {
nvim-scrollbar.enable = true;
nvim-web-devicons.enable = true;
nvim-cursorline.enable = true;
fidget-nvim.enable = true;
highlight-undo.enable = true;
cellular-automaton.enable = true;
};
autocomplete.nvim-cmp = {
enable = true;
sourcePlugins = [
"rustaceanvim"
"obsidian-nvim"
"nvim-web-devicons"
];
};
autopairs.nvim-autopairs.enable = true;
statusline.lualine.enable = true;
telescope.enable = true;
languages = {
enableLSP = true;
enableTreesitter = true;
enableFormat = true;
enableExtraDiagnostics = true;
rust = {
enable = true;
crates.enable = true;
};
nix.enable = true;
sql.enable = true;
clang.enable = true;
ts.enable = true;
python.enable = true;
#zig.enable = true;
markdown.enable = true;
#dart.enable = true;
lua.enable = true;
bash.enable = true;
css.enable = true;
kotlin.enable = true;
haskell.enable = true;
};
};
};
programs.vscode = {
enable = true;
package = pkgs.vscodium.fhs;
extensions = with pkgs.vscode-extensions; [
];
# userSettings = import ./config/codium/settings.nix;
};
xdg.configFile."VSCodium/User/settings.json".source = lib.mkForce (
rootPath + /config/codium/settings.json
);
home = {
username = "muko";
homeDirectory = "/home/muko";
stateVersion = "24.05";
};
}
# 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"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/78f61f99-b742-41b7-9bd1-a424faf06aea";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/1A5B-E2D7";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
# 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.enp2s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
{
pkgs,
profile,
rootPath,
inputs,
...
}: {
cady = {
defaults = true;
# My modules!!
nvidia.enable = true;
ssh.enable = true;
nextdns.enable = true;
# Desktop Environment
desktop = "Plasma";
autoUpdate = true;
};
environment.systemPackages = with pkgs; [
wget
git
bash
home-manager
bottom
ripgrep
fd
lazygit
bacon
xdg-user-dirs
just
thunderbird
vimix-cursors
];
# Enable steam and stuff
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
services.tailscale = {
enable = true;
openFirewall = true;
};
users.users.${profile.username} = {
openssh.authorizedKeys.keyFiles = [
(rootPath + /ssh/gtnh.key.pub)
(rootPath + /ssh/muko.pub)
(rootPath + /ssh/typhon.pub)
];
};
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable nvidia prime
hardware.nvidia.prime = {
# Very system specific! See https://nixos.wiki/wiki/Nvidia for more info
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
# Enable KWallet automatically
security.pam.services.kwallet = {
name = "kdewallet";
enableKwallet = true;
};
# Don't change it!!
system.stateVersion = "23.11";
}
require('nvim-treesitter.configs').setup {
ensure_installed = {},
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
}
require('telescope').setup({
extensions = {
fzf = {
fuzzy = true, -- false will only do exact matching
override_generic_sorter = true, -- override the generic sorter
override_file_sorter = true, -- override the file sorter
case_mode = "smart_case", -- or "ignore_case" or "respect_case"
-- the default case_mode is "smart_case"
}
}
})
require('telescope').load_extension('fzf')
-- Lualine
require("lualine").setup({
icons_enabled = true,
theme = 'onedark',
})
-- Colorscheme
vim.cmd("colorscheme gruvbox")
-- Comment
require("Comment").setup()
local on_attach = function(_, bufnr)
local bufmap = function(keys, func)
vim.keymap.set('n', keys, func, { buffer = bufnr })
end
bufmap('<leader>r', vim.lsp.buf.rename)
bufmap('<leader>a', vim.lsp.buf.code_action)
bufmap('gd', vim.lsp.buf.definition)
bufmap('gD', vim.lsp.buf.declaration)
bufmap('gI', vim.lsp.buf.implementation)
bufmap('<leader>D', vim.lsp.buf.type_definition)
bufmap('gr', require('telescope.builtin').lsp_references)
bufmap('<leader>s', require('telescope.builtin').lsp_document_symbols)
bufmap('<leader>S', require('telescope.builtin').lsp_dynamic_workspace_symbols)
bufmap('K', vim.lsp.buf.hover)
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
vim.lsp.buf.format()
end, {})
end
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
require('neodev').setup()
require('lspconfig').lua_ls.setup {
on_attach = on_attach,
capabilities = capabilities,
root_dir = function()
return vim.loop.cwd()
end,
cmd = { "lua-lsp" },
settings = {
Lua = {
workspace = { checkThirdParty = false },
telemetry = { enable = false },
},
}
}
local cmp = require('cmp')
local luasnip = require('luasnip')
require('luasnip.loaders.from_vscode').lazy_load()
luasnip.config.setup {}
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete {},
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_locally_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.locally_jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.o.clipboard = 'unnamedplus'
vim.o.number = true
-- vim.o.relativenumber = true
vim.o.signcolumn = 'yes'
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.updatetime = 300
vim.o.termguicolors = true
vim.o.mouse = 'a'
/* Sidebery */
#main-window .tabbrowser-tab {
visibility: collapse;
}
#main-window #tabs-newtab-button {
visibility: collapse;
}
#main-window #alltabs-button {
visibility: collapse;
}
/* will need fiddling if below is enabled*/
#main-window .titlebar-button {
height: 42px;
}
/* Looks good on windows, looks ASS on GNOME anyway
#main-window[tabsintitlebar="true"] #nav-bar {
margin-right: 137px;
}
*/
#main-window #nav-bar {
margin-top: -44px;
}
#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"] #sidebar-header {
visibility: collapse;
}
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* Show sidebar only when the cursor is over it */
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */
#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]{
--uc-sidebar-width: 50px;
--uc-sidebar-hover-width: 250px;
--uc-autohide-sidebar-delay: 100ms; /* Wait 0.6s before hiding sidebar */
--uc-autohide-transition-duration: 300ms;
--uc-autohide-transition-type: cubic-bezier(0.8, 0, 0.2, 1);
--browser-area-z-index-sidebar: 3;
position: relative;
min-width: var(--uc-sidebar-width) !important;
width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important;
z-index: var(--browser-area-z-index-sidebar,3);
}
#sidebar-box[positionend]{ direction: rtl }
#sidebar-box[positionend] > *{ direction: ltr }
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr }
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
#main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; }
#sidebar-splitter{ display: none }
#sidebar-header{
overflow: hidden;
color: var(--chrome-color, inherit) !important;
padding-inline: 0 !important;
}
#sidebar-header::before,
#sidebar-header::after{
content: "";
display: flex;
padding-left: 8px;
}
#sidebar-header,
#sidebar{
transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
min-width: var(--uc-sidebar-width) !important;
will-change: min-width;
}
#sidebar-box:hover > #sidebar-header,
#sidebar-box:hover > #sidebar{
min-width: var(--uc-sidebar-hover-width) !important;
transition-delay: 0ms !important;
}
.sidebar-panel{
background-color: transparent !important;
color: var(--newtab-text-primary-color) !important;
}
.sidebar-panel #search-box{
-moz-appearance: none !important;
background-color: rgba(249,249,250,0.1) !important;
color: inherit !important;
}
/* Add sidebar divider and give it background */
/*
#sidebar,
#sidebar-header{
background-color: inherit !important;
border-inline: 1px solid rgb(80,80,80);
border-inline-width: 0px 1px;
}
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl),
#sidebar-box[positionend] > *{
border-inline-width: 1px 0px;
}
*/
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{
inset-inline: auto 0px !important;
}
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{
margin-inline: 0px !important;
border-left-style: solid !important;
}
{
"redhat.telemetry.enabled" = "false";
"git.openRepositoryInParentFolders" = "never";
"workbench.colorTheme" = "Catppuccin Macchiato";
"remote.SSH.remotePlatform" = {
"192.168.1.73" = "linux";
};
"dart.debugExternalPackageLibraries" = "false";
"dart.debugSdkLibraries" = "false";
"jupyter.askForKernelRestart" = "false";
"editor.formatOnSave" = "true";
"editor.defaultFormatter" = "ms-python.black-formatter";
"[rust]" = {
"editor.defaultFormatter" = "rust-lang.rust-analyzer";
};
"supermaven.enableFixWithSupermaven" = "false";
"files.readonlyInclude" = {
"*/.cargo/registry/src/*/*.rs" = "true";
"*/lib/rustlib/src/rust/library/*/*.rs" = "true";
};
"gruvboxMaterial.darkContrast" = "hard";
"gruvboxMaterial.darkWorkbench" = "flat";
"sync.gist" = "018a6296ccb3c3c4570c447035e76a38";
"sync.autoUpload" = "true";
"sync.autoDownload" = "true";
"git.autofetch" = "true";
"editor.inlayHints.enabled" = "offUnlessPressed";
"workbench.activityBar.location" = "hidden";
"workbench.iconTheme" = "catppuccin-macchiato";
"editor.fontLigatures" = "true";
}
{
"redhat.telemetry.enabled": false,
"git.openRepositoryInParentFolders": "never",
"dart.debugExternalPackageLibraries": false,
"dart.debugSdkLibraries": false,
"jupyter.askForKernelRestart": false,
"editor.formatOnSave": true,
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
},
"supermaven.enableFixWithSupermaven": false,
"files.readonlyInclude": {
"*/.cargo/registry/src/*/*.rs": true,
"*/lib/rustlib/src/rust/library/*/*.rs": true
},
"git.autofetch": true,
"editor.inlayHints.enabled": "offUnlessPressed",
"workbench.activityBar.location": "bottom",
"editor.fontLigatures": true,
"window.titleBarStyle": "custom",
"chat.commandCenter.enabled": false,
"workbench.preferredLightColorTheme": "Catppuccin Latte",
"workbench.preferredDarkColorTheme": "Catppuccin Frappé",
"workbench.iconTheme": "catppuccin-frappe",
"window.autoDetectColorScheme": true
}