This commit is contained in:
Xory 2026-01-03 17:43:42 +02:00
parent 8c9eed18e6
commit b458b67238
83 changed files with 1115 additions and 5026 deletions

753
a.txt Normal file
View file

@ -0,0 +1,753 @@
===== START FILE: ./flake.nix =====
# flake.nix
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable/";
nixos-hardware.url = "github:NixOS/nixos-hardware/";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
impermanence.url = "github:nix-community/impermanence";
};
outputs =
{ self, nixpkgs, home-manager, impermanence, disko, ... } @ inputs:
let
system = "x86_64-linux";
username = "xory";
opentrack-overlay = import ./overlays/opentrack.nix;
mkNixosHost = hostName:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
{ nixpkgs.overlays = [ opentrack-overlay ]; }
disko.nixosModules.disko
impermanence.nixosModules.impermanence
./configuration.nix
./hosts/${hostName}/config.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit inputs; };
# Imports the common home.nix from root
home-manager.users.${username} = import ./home.nix;
}
];
};
in {
nixosConfigurations = nixpkgs.lib.mapAttrs'
(name: value: {
name = name;
value = mkNixosHost name;
})
(nixpkgs.lib.filterAttrs (name: value: value == "directory")
(builtins.readDir ./hosts));
};
}
===== END FILE: ./flake.nix =====
===== START FILE: ./home.nix =====
{ config, pkgs, ... }:
{
home.username = "xory";
home.homeDirectory = "/home/xory";
home.packages = with pkgs; [
neovim
fastfetch
git
cava
kdePackages.qtwebsockets
(python313.withPackages (python-pkgs: [
python313Packages.websockets
python313Packages.requests # basic python test env
]))
simplex-chat-desktop
qbittorrent
ffmpeg
yt-dlp
prismlauncher
keepassxc
(wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
obs-vaapi
obs-gstreamer
obs-vkcapture
wlrobs
obs-pipewire-audio-capture
];
})
mpv
kdePackages.kdenlive
gimp
inkscape
krita
distrobox
screen
arduino-ide
(lutris.override {
extraLibraries = pkgs: [
wineWowPackages.stable
winetricks
];
})
libadwaita # fucking winetricks
zenity
woeusb-ng
ntfs3g
hyprpaper
hyprsunset
grim
slurp
input-leap
viber
hyprpolkitagent
pulsemixer
feh
opentrack
aitrack
progress
croc
libarchive
];
home.file = {
".config/nvim/init.lua" = {
enable = true;
source = ./config/nvim/init.lua;
};
".config/hypr" = {
enable = true;
recursive = true;
source = ./config/hypr;
};
".config/waybar" = {
enable = true;
recursive = true;
source = ./config/waybar;
};
".config/wofi" = {
enable = true;
recursive = true;
source = ./config/wofi;
};
};
programs.zsh = {
enable = true;
enableCompletion = true;
shellAliases = {
"rebuild" = "sudo nixos-rebuild switch --flake ~/dots";
};
syntaxHighlighting.enable = true;
};
programs.starship.enable = true;
programs.kitty = {
enable = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Inconsolata Nerd Font";
package = pkgs.nerd-fonts.inconsolata;
};
settings.background_opacity = 0.8;
};
# TODO: Fix up Neovim
# programs.vscode = {
# enable = true;
# extensions = with pkgs.vscode-extensions; [
# catppuccin.catppuccin-vsc
# catppuccin.catppuccin-vsc-icons
# dbaeumer.vscode-eslint
# rust-lang.rust-analyzer
# ms-python.python
# biomejs.biome
# ];
# };
wayland.windowManager.hyprland.enable = true;
programs.waybar.enable = true;
programs.wofi.enable = true;
services.dunst.enable = true;
home.stateVersion = "25.05";
}
===== END FILE: ./home.nix =====
===== START FILE: ./hosts/voidspear/hardware/hardware-configuration.nix =====
# 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 = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# 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.enp42s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
===== END FILE: ./hosts/voidspear/hardware/hardware-configuration.nix =====
===== START FILE: ./hosts/voidspear/hardware/disko.nix =====
{
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
# Critical for Samsung NVMe longevity/performance
settings.allowDiscards = true;
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
};
};
zpool = {
zroot = {
type = "zpool";
options = {
ashift = "12";
autotrim = "on";
};
rootFsOptions = {
acltype = "posixacl";
xattr = "sa";
dnodesize = "auto";
compression = "zstd";
normalization = "formD";
relatime = "on";
canmount = "off";
"com.sun:auto-snapshot" = "false";
};
datasets = {
# Ephemeral root (rolls back to blank on boot)
"root" = {
type = "zfs_fs";
mountpoint = "/";
options.mountpoint = "legacy";
postCreateHook = "zfs snapshot zroot/root@blank";
};
# Nix store
"nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options.mountpoint = "legacy";
options."com.sun:auto-snapshot" = "false";
};
# Persistent data
"persist" = {
type = "zfs_fs";
mountpoint = "/persist";
options.mountpoint = "legacy";
};
# Home directories
"home" = {
type = "zfs_fs";
mountpoint = "/home";
options.mountpoint = "legacy";
};
};
};
};
};
}
===== END FILE: ./hosts/voidspear/hardware/disko.nix =====
===== START FILE: ./hosts/voidspear/config.nix =====
{ config, pkgs, lib, inputs, ... }:
{
imports = [
./hardware/hardware-configuration.nix
./hardware/disko.nix
];
networking.hostName = "voidspear";
networking.hostID = "ec82a76e";
# nVidia drivers.
hardware.graphics.extraPackages = with pkgs; [
libvdpau-va-gl
];
services.xserver.videoDrivers = [ "nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
boot.blacklistedKernelModules = [ "nouveau" ];
services.ollama.acceleration = "cuda";
}
===== END FILE: ./hosts/voidspear/config.nix =====
===== START FILE: ./hosts/nullstar/hardware/hardware-configuration.nix =====
# 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 = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# 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.enp42s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
===== END FILE: ./hosts/nullstar/hardware/hardware-configuration.nix =====
===== START FILE: ./hosts/nullstar/hardware/disko.nix =====
{
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
# Disable this if you do not want to allow TRIM requests to pass through LUKS
# (Security vs SSD longevity trade-off)
settings.allowDiscards = true;
# Uncomment if you want to use a keyfile during install:
# settings.keyFile = "/tmp/secret.key";
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
};
};
zpool = {
zroot = {
type = "zpool";
options = {
ashift = "12";
autotrim = "on";
};
rootFsOptions = {
acltype = "posixacl";
xattr = "sa";
dnodesize = "auto";
compression = "zstd";
normalization = "formD";
relatime = "on";
canmount = "off";
# Prevent auto-snapshotting by default (enable explicitly on datasets that need it)
"com.sun:auto-snapshot" = "false";
};
datasets = {
# The ephemeral root dataset.
# We create a blank snapshot immediately so you can rollback to it on boot.
"root" = {
type = "zfs_fs";
mountpoint = "/";
options.mountpoint = "legacy";
postCreateHook = "zfs snapshot zroot/root@blank";
};
# The Nix Store (reproducible, doesn't need backing up usually)
"nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options.mountpoint = "legacy";
options."com.sun:auto-snapshot" = "false";
};
# Persisted state (for impermanence)
"persist" = {
type = "zfs_fs";
mountpoint = "/persist";
options.mountpoint = "legacy";
# Enable snapshots for data safety if using sanoid/syncoid
# options."com.sun:auto-snapshot" = "true";
};
# Home directories
"home" = {
type = "zfs_fs";
mountpoint = "/home";
options.mountpoint = "legacy";
# options."com.sun:auto-snapshot" = "true";
};
};
};
};
};
}
===== END FILE: ./hosts/nullstar/hardware/disko.nix =====
===== START FILE: ./hosts/nullstar/config.nix =====
{ config, pkgs, lib, inputs, ... }:
{
imports =
[
./hardware/hardware-configuration.nix
./hardware/disko.nix
(inputs.nixos-hardware.nixosModules.framework-16-7040-amd)
];
services.fwupd.enable = true;
networking.hostName = "nullstar";
networking.hostID = "322d5212";
# Enable FL16 Input modules
hardware.inputmodule.enable = true;
hardware.keyboard.qmk.enable = true;
hardware.graphics.extraPackages = with pkgs; [
libvdpau-va-gl
rocmPackages.clr.icd
];
services.ollama.acceleration = "rocm";
environment.systemPackages = with pkgs; [
framework-tool
inputmodule-control
];
}
===== END FILE: ./hosts/nullstar/config.nix =====
===== START FILE: ./configuration.nix =====
# 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, lib, inputs, ... }:
{
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.postDeviceCommands = lib.mkAfter ''
zfs rollback -r zroot/root@blank
'';
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
environment.persistence."/persist" = {
enable = true;
hideMounts = true;
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/nixos"
"/var/lib/libvirt"
"/var/lib/ollama-models"
"/var/lib/flatpak"
"/var/lib/tailscale"
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
"/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_rsa"
];
};
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Athens";
# 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";
};
# Define a user account. Don't forget to set a password with passwd.
programs.zsh.enable = true; # home-manager already installs this but nixos complains w/o it
users.users.xory = {
isNormalUser = true;
description = "xory";
extraGroups = [ "networkmanager" "wheel" "docker" "libvirt" "dialout" ];
shell = pkgs.zsh;
initialHashedPassword = "redacted";
};
# tailscale
services.tailscale.enable = true;
# nix-ld
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
libGL
SDL2
];
# Firejail
# TODO: add this back
# Enable the KDE Plasma Desktop Environment.
# I keep this enabled even if I main Hyprland because of QT.
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
services.displayManager.defaultSession = "hyprland";
# Enable Hyprland.
programs.hyprland.enable = true;
services.flatpak.enable = true;
# Enable CUPS to print documents.
services.printing.enable = true;
services.printing.drivers = [ pkgs.hplip ];
programs.gnupg.agent.enable = true;
# Enable sound with pipewire.
services.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;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General.Experimental = true;
General.FastConnectable = true;
Policy.AutoEnable = true;
};
};
# AMDGPU stuff
hardware.graphics = {
enable = true;
enable32Bit = true;
};
services.ollama.enable = true;
services.ollama.models = "/var/lib/ollama-models";
# Enable automatic login for the user.
# We temporarily keep this enabled because I plan to switch to LVM on LUKS.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "xory";
# Install firefox.
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
neovim
git
];
programs.steam.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 2d";
};
programs.virt-manager.enable = true;
virtualisation.libvirtd = {
enable = true;
qemu = {
vhostUserPackages = with pkgs; [ virtiofsd ];
swtpm.enable = true;
};
};
virtualisation.spiceUSBRedirection.enable = true;
virtualisation.docker.enable = true;
services = {
syncthing = {
enable = true;
group = "users";
user = "xory";
};
};
services.openssh.enable = true; # TODO: add key-based auth
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 8000 8080 25565 ];
networking.firewall.allowedUDPPorts = [ 8000 8080 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# 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 = "25.05"; # Did you read the comment?
}
===== END FILE: ./configuration.nix =====
===== START FILE: ./overlays/opentrack.nix =====
# ./overlays/opentrack.nix
self: super: {
opentrack = super.opentrack.overrideAttrs (oldAttrs: {
# 1. Add dependencies for building (onnxruntime) and wrapping (makeWrapper)
nativeBuildInputs = oldAttrs.nativeBuildInputs or [] ++ [ super.makeWrapper ];
buildInputs = oldAttrs.buildInputs or [] ++ [ self.onnxruntime ];
# 2. Enable the neuralnet tracker feature during compile time
cmakeFlags = oldAttrs.cmakeFlags or [] ++ [ "-DSDK_NEURALNET=ON" ];
# 3. After installation, create a wrapper around the main binary
postInstall = (oldAttrs.postInstall or "") + ''
# Construct the full library path from all runtime dependencies
lib_path="${super.lib.makeLibraryPath [
super.qt5.qtbase
super.qt5.qtwayland
super.opencv
self.onnxruntime
super.procps
super.libevdev
]}"
# Construct the full Qt plugin path
qt_plugin_path="${super.qt5.qtbase.bin}/lib/qt-${super.qt5.qtbase.version}/plugins:${super.qt5.qtwayland}/lib/qt-${super.qt5.qtwayland.version}/plugins"
# Use makeWrapper to prepend the environment variables to the executable
# This modifies the binary at $out/bin/opentrack so it ALWAYS runs with this environment
wrapProgram $out/bin/opentrack \
--prefix LD_LIBRARY_PATH : "$lib_path" \
--prefix QT_PLUGIN_PATH : "$qt_plugin_path"
'';
});
}
===== END FILE: ./overlays/opentrack.nix =====

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Before After
Before After

View file

@ -5,19 +5,45 @@
{ config, pkgs, lib, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.initrd.systemd.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.supportedFilesystems = [ "zfs "];
boot.initrd.systemd.services.rollback = {
description = "Rollback ZFS root";
wantedBy = [ "initrd.target" ];
after = [ "zfs-import-zroot.service" ];
before = [ "sysroot.mount" ];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
script = ''
zfs rollback -r zroot/root@blank && echo "Rollback complete"
'';
};
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "voidspear"; # Define your hostname.
environment.persistence."/persist" = {
enable = true;
hideMounts = true;
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/nixos"
"/var/lib/libvirt"
"/var/lib/ollama-models"
"/var/lib/flatpak"
"/var/lib/tailscale"
"/etc/NetworkManager/system-connections"
"/etc/ssh"
];
files = [
"/etc/machine-id"
];
};
# Enable networking
networking.networkmanager.enable = true;
@ -47,9 +73,12 @@
description = "xory";
extraGroups = [ "networkmanager" "wheel" "docker" "libvirt" "dialout" ];
shell = pkgs.zsh;
initialHashedPassword = "$6$JXLpG5JYMJgZndm9$0sC8uPJ99cYL.hNv3DFQ20ky8tiZoxioe9GlMEanTwAD99LJ175/bHtN6Bm6bYsQG1BVGRdmphnXEcWS9ApoK0";
initialHashedPassword = "$6$JXLpG5JYMJgZndm9$0sC8uPJ99cYL.hNv3DFQ20ky8tiZoxioe9GlMEanTwAD99LJ175/bHtN6Bm6bYsQG1BVGRdmphnXEcWS9ApoK0"; # this is defined declaratively, i don't use passwd.
};
# tailscale
services.tailscale.enable = true;
# nix-ld
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
@ -58,49 +87,22 @@
];
# Firejail
programs.firejail = {
enable = true;
wrappedBinaries =
let
apps = {
firefox = {};
"signal-desktop-bin" = { name = "signal-desktop"; };
vesktop = {};
spotify = {};
obsidian = {};
};
in
lib.mapAttrs (pkg: conf:
let
binName = conf.name or pkg;
in
{
executable = "${pkgs.${pkg}}/bin/${binName}";
profile = "${pkgs.firejail}/etc/firejail/${binName}.profile";
extraArgs = [
"--env=GTK_THEME=Adwaita:dark"
];
}) apps;
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
# TODO: add this back
# Enable the KDE Plasma Desktop Environment.
# I keep this enabled even if I main Hyprland because of QT.
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
services.displayManager.defaultSession = "hyprland";
services.desktopManager.plasma6.enable = true;
# Enable Hyprland.
programs.hyprland.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
services.flatpak.enable = true;
# Enable CUPS to print documents.
# services.printing.enable = true;
services.printing.enable = true;
services.printing.drivers = [ pkgs.hplip ];
programs.gnupg.agent.enable = true;
@ -130,16 +132,17 @@
};
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# tailscale
services.tailscale.enable = true;
# AMDGPU stuff
hardware.graphics = {
enable = true;
enable32Bit = true;
};
services.ollama.enable = true;
services.ollama.acceleration = "cuda";
services.ollama.models = "/var/lib/ollama-models";
# Enable automatic login for the user.
# We temporarily keep this enabled because I plan to switch to LVM on LUKS.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "xory";
@ -158,18 +161,6 @@
git
];
# nVidia drivers.
hardware.graphics.enable = true;
services.xserver.videoDrivers = [ "nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
boot.blacklistedKernelModules = [ "nouveau" ];
programs.steam.enable = true;
nix.gc = {
@ -194,11 +185,9 @@
enable = true;
group = "users";
user = "xory";
dataDir = "/home/xory/Sync"; # Default folder for new synced folders
configDir = "/home/xory/Sync/.config/syncthing"; # Folder for Syncthing's settings and keys
};
};
services.openssh.enable = true; # TODO: add key-based auth
services.openssh.enable = true; # TODO: add declarative key-based auth
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
@ -210,12 +199,9 @@
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 8000 22000 ];
networking.firewall.allowedUDPPorts = [ 8000 22000 21027 ];
networking.firewall.allowedTCPPorts = [ 8000 8080 25565 ];
networking.firewall.allowedUDPPorts = [ 8000 8080 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
nix.settings.experimental-features = [ "nix-command" "flakes" ];

View file

@ -1,16 +1,22 @@
# flake.nix
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable/";
nixos-hardware.url = "github:NixOS/nixos-hardware/";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
impermanence.url = "github:nix-community/impermanence";
};
outputs =
{ self, nixpkgs, home-manager, impermanence, ... } @ inputs:
{ self, nixpkgs, home-manager, impermanence, disko, ... } @ inputs:
let
system = "x86_64-linux";
username = "xory";
@ -23,14 +29,19 @@
specialArgs = { inherit inputs; };
modules = [
{ nixpkgs.overlays = [ opentrack-overlay ]; }
disko.nixosModules.disko
impermanence.nixosModules.impermanence
./hosts/${hostName}/configuration.nix
./hosts/${hostName}/hardware-configuration.nix
./configuration.nix
./hosts/${hostName}/config.nix
home-manager.nixosModules.home-manager {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.${username} = import ./hosts/${hostName}/home.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
# Imports the common home.nix from root
home-manager.users.${username} = import ./home.nix;
}
];
};

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, pkgs, inputs, ... }:
{
home.username = "xory";
home.homeDirectory = "/home/xory";
@ -104,17 +104,18 @@
settings.background_opacity = 0.8;
};
programs.vscode = {
enable = true;
extensions = with pkgs.vscode-extensions; [
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
dbaeumer.vscode-eslint
rust-lang.rust-analyzer
ms-python.python
biomejs.biome
];
};
# TODO: Fix up Neovim
# programs.vscode = {
# enable = true;
# extensions = with pkgs.vscode-extensions; [
# catppuccin.catppuccin-vsc
# catppuccin.catppuccin-vsc-icons
# dbaeumer.vscode-eslint
# rust-lang.rust-analyzer
# ms-python.python
# biomejs.biome
# ];
# };
wayland.windowManager.hyprland.enable = true;
programs.waybar.enable = true;

View file

@ -1,99 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{ "catppuccin/nvim", name = "catppuccin" },
{ "williamboman/mason.nvim", opts = {} },
{ "williamboman/mason-lspconfig.nvim", opts = {} },
"neovim/nvim-lspconfig",
"mfussenegger/nvim-dap",
{ "jay-babu/mason-nvim-dap.nvim", opts = {} },
{"nvim-treesitter/nvim-treesitter", lazy = false, branch = "main", build = ":TSUpdate", opts = {}},
{ "nvim-tree/nvim-tree.lua", opts = {} },
"nvim-tree/nvim-web-devicons",
"romgrk/barbar.nvim",
{ "nvim-lualine/lualine.nvim", opts = {} },
{ "windwp/nvim-autopairs", opts = {} },
"neovim/nvim-lspconfig",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/nvim-cmp",
"hrsh7th/vim-vsnip",
"voldikss/vim-floaterm",
{
'IogaMaster/neocord',
event = "VeryLazy",
opts = {}
}
})
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.smarttab = true
vim.o.cursorline = true
vim.o.laststatus = 3
vim.o.background = "dark"
vim.o.termguicolors = true
vim.o.number = true
vim.o.relativenumber = true
vim.cmd.colorscheme "catppuccin-mocha"
vim.o.guifont = "CaskaydiaCove Nerd Font:h11"
vim.diagnostic.config({
virtual_text = true, -- Show inline error messages
signs = true, -- Show signs in the gutter
underline = true, -- Underline errors
update_in_insert = false,
severity_sort = true,
})
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
}, {
{ name = 'buffer' },
})
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
require("mason-lspconfig").setup({
function (server_name)
require("lspconfig")[server_name].setup({
capabilities = capabilities
})
end,
})

View file

@ -1,155 +0,0 @@
# 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, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
networking.hostName = "nixvm"; # 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;
# Set your time zone.
time.timeZone = "Europe/Athens";
# 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.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Enable CUPS to print documents.
# services.printing.enable = true;
programs.gnupg.agent.enable = true;
# Enable sound with pipewire.
services.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;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
programs.zsh.enable = true; # home-manager already installs this but nixos complains w/o it
users.users.xory = {
isNormalUser = true;
description = "xory";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
kdePackages.kate
# thunderbird
];
shell = pkgs.zsh;
};
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "xory";
# Install firefox.
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
neovim
git
];
services.qemuGuest.enable = true;
services.spice-vdagentd.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 2d";
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# 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;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# 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 = "25.05"; # Did you read the comment?
}

View file

@ -1,37 +0,0 @@
# 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 + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/ae26f9c8-bbc0-49e6-b792-20f10277367c";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/0160-925B";
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.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View file

@ -1,39 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "xory";
home.homeDirectory = "/home/xory";
home.packages = with pkgs; [
neovim
fastfetch
firefox
git
];
home.file = {
".config/nvim/init.lua" = {
enable = true;
source = ./config/nvim/init.lua;
};
};
programs.zsh = {
enable = true;
enableCompletion = true;
shellAliases = {
"rebuild" = "sudo nixos-rebuild switch --flake ~/dots";
};
syntaxHighlighting.enable = true;
};
programs.starship.enable = true;
programs.kitty = {
enable = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Inconsolata Nerd Font";
package = pkgs.nerd-fonts.inconsolata;
};
};
home.stateVersion = "25.05";
}

31
hosts/nullstar/config.nix Normal file
View file

@ -0,0 +1,31 @@
{ config, pkgs, lib, inputs, ... }:
{
imports =
[
./hardware/hardware-configuration.nix
./hardware/disko.nix
(inputs.nixos-hardware.nixosModules.framework-16-7040-amd)
];
services.fwupd.enable = true;
networking.hostName = "nullstar";
networking.hostID = "322d5212";
# Enable FL16 Input modules
hardware.inputmodule.enable = true;
hardware.keyboard.qmk.enable = true;
hardware.graphics.extraPackages = with pkgs; [
libvdpau-va-gl
rocmPackages.clr.icd
];
services.ollama.acceleration = "rocm";
environment.systemPackages = with pkgs; [
framework-tool
inputmodule-control
];
}

View file

@ -1,274 +0,0 @@
# 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, lib, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
(inputs.nixos-hardware.nixosModules.framework-16-7040-amd)
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
environment.persistence."/persistent" = {
enable = true;
hideMounts = true;
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/nixos"
"/var/lib/libvirt"
"/var/lib/ollama-models"
"/var/lib/flatpak"
"/var/lib/tailscale"
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
];
};
services.fwupd.enable = true;
networking.hostName = "nullstar"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Athens";
# 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";
};
# Define a user account. Don't forget to set a password with passwd.
programs.zsh.enable = true; # home-manager already installs this but nixos complains w/o it
users.users.xory = {
isNormalUser = true;
description = "xory";
extraGroups = [ "networkmanager" "wheel" "docker" "libvirt" "dialout" ];
shell = pkgs.zsh;
initialHashedPassword = "$6$JXLpG5JYMJgZndm9$0sC8uPJ99cYL.hNv3DFQ20ky8tiZoxioe9GlMEanTwAD99LJ175/bHtN6Bm6bYsQG1BVGRdmphnXEcWS9ApoK0";
};
# tailscale
services.tailscale.enable = true;
# nix-ld
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
libGL
SDL2
];
# Firejail
programs.firejail = {
enable = true;
wrappedBinaries =
let
apps = {
firefox = {};
"signal-desktop-bin" = { name = "signal-desktop"; };
# UPDATE: Add specific flags for Vesktop here
vesktop = {
extraArgs = [
# Allow talking to the portal for screen sharing requests
"--dbus-user.talk=org.freedesktop.portal.*"
# Ensure access to the PipeWire socket (required for the video stream)
"--whitelist=\${RUNUSER}/pipewire-0"
];
};
spotify = {};
obsidian = {};
};
in
lib.mapAttrs (pkg: conf:
let
binName = conf.name or pkg;
# Define default args applied to all apps
defaultArgs = [
"--env=GTK_THEME=Adwaita:dark"
];
in
{
executable = "${pkgs.${pkg}}/bin/${binName}";
profile = "${pkgs.firejail}/etc/firejail/${binName}.profile";
# UPDATE: Merge default args with app-specific args
extraArgs = defaultArgs ++ (conf.extraArgs or []);
}) apps;
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
# services.desktopManager.plasma6.enable = true;
# Enable Hyprland.
programs.hyprland.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
services.flatpak.enable = true;
# Enable CUPS to print documents.
services.printing.enable = true;
services.printing.drivers = [ pkgs.hplip ];
programs.gnupg.agent.enable = true;
# Enable sound with pipewire.
services.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;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General.Experimental = true;
General.FastConnectable = true;
Policy.AutoEnable = true;
};
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Enable FL16 Input modules
hardware.inputmodule.enable = true;
hardware.keyboard.qmk.enable = true;
# AMDGPU stuff
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libvdpau-va-gl
rocmPackages.clr.icd
];
};
services.ollama.enable = true;
services.ollama.acceleration = "rocm";
services.ollama.models = "/var/lib/ollama-models";
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "xory";
# Install firefox.
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
neovim
git
framework-tool
inputmodule-control
];
programs.steam.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 2d";
};
programs.virt-manager.enable = true;
virtualisation.libvirtd = {
enable = true;
qemu = {
vhostUserPackages = with pkgs; [ virtiofsd ];
swtpm.enable = true;
};
};
virtualisation.spiceUSBRedirection.enable = true;
virtualisation.docker.enable = true;
services = {
syncthing = {
enable = true;
group = "users";
user = "xory";
dataDir = "/home/xory/Sync"; # Default folder for new synced folders
configDir = "/home/xory/Sync/.config/syncthing"; # Folder for Syncthing's settings and keys
};
};
services.openssh.enable = true; # TODO: add key-based auth
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 8000 22000 ];
networking.firewall.allowedUDPPorts = [ 8000 22000 21027 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# 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 = "25.05"; # Did you read the comment?
}

View file

@ -1,69 +0,0 @@
# 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 = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
#fileSystems."/" =
#{ device = "/dev/disk/by-uuid/1578f380-e588-419b-ace0-f63e6a48ca39";
#fsType = "ext4";
#};
#fileSystems."/boot" =
#{ device = "/dev/disk/by-uuid/4CB1-40B6";
#fsType = "vfat";
#options = [ "fmask=0077" "dmask=0077" ];
#};
#swapDevices = [ ];
fileSystems."/" = {
device = "none";
fsType = "tmpfs";
options = [ "size=3G" "mode=755" ];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/64fd3fe5-cef2-4526-b38a-cdc1de944dc3";
fsType = "ext4";
neededForBoot = true;
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/e938d890-b222-474a-aed9-4e0401d8a20b";
fsType = "ext4";
neededForBoot = true;
};
fileSystems."/persistent" = {
device = "/dev/disk/by-uuid/3c28c036-bab7-4ba5-92fe-c5de69378b8b";
fsType = "ext4";
neededForBoot = true;
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/4BAD-C86B";
fsType = "vfat";
};
# 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.enp42s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,96 @@
{
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
# Disable this if you do not want to allow TRIM requests to pass through LUKS
# (Security vs SSD longevity trade-off)
settings.allowDiscards = true;
# Uncomment if you want to use a keyfile during install:
# settings.keyFile = "/tmp/secret.key";
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
};
};
zpool = {
zroot = {
type = "zpool";
options = {
ashift = "12";
autotrim = "on";
};
rootFsOptions = {
acltype = "posixacl";
xattr = "sa";
dnodesize = "auto";
compression = "zstd";
normalization = "formD";
relatime = "on";
canmount = "off";
# Prevent auto-snapshotting by default (enable explicitly on datasets that need it)
"com.sun:auto-snapshot" = "false";
};
datasets = {
# The ephemeral root dataset.
# We create a blank snapshot immediately so you can rollback to it on boot.
"root" = {
type = "zfs_fs";
mountpoint = "/";
options.mountpoint = "legacy";
postCreateHook = "zfs snapshot zroot/root@blank";
};
# The Nix Store (reproducible, doesn't need backing up usually)
"nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options.mountpoint = "legacy";
options."com.sun:auto-snapshot" = "false";
};
# Persisted state (for impermanence)
"persist" = {
type = "zfs_fs";
mountpoint = "/persist";
options.mountpoint = "legacy";
# Enable snapshots for data safety if using sanoid/syncoid
# options."com.sun:auto-snapshot" = "true";
};
# Home directories
"home" = {
type = "zfs_fs";
mountpoint = "/home";
options.mountpoint = "legacy";
# options."com.sun:auto-snapshot" = "true";
};
};
};
};
};
}

View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# 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.enp42s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,28 @@
{ config, pkgs, lib, inputs, ... }:
{
imports = [
./hardware/hardware-configuration.nix
./hardware/disko.nix
];
networking.hostName = "voidspear";
networking.hostID = "ec82a76e";
# nVidia drivers.
hardware.graphics.extraPackages = with pkgs; [
libvdpau-va-gl
];
services.xserver.videoDrivers = [ "nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
boot.blacklistedKernelModules = [ "nouveau" ];
services.ollama.acceleration = "cuda";
}

View file

@ -1,303 +0,0 @@
# autogenerated = 1 # remove this line to remove the warning
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor=,preferred,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$menu = wofi --conf "/home/xory/.config/wofi/config/config" --style "/home/xory/.config/wofi/src/mocha/style.css" --show run
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
exec-once = hyprpaper &
exec-once = waybar &
exec-once = dunst &
exec-once = systemctl --user start hyprpolkitagent
exec-once = systemctl --user start hyprsunset
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 10
gaps_out = 10
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(f38ba8ff) rgba(89dcebff) 45deg
col.inactive_border = rgba(a6adc8aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
xwayland {
force_zero_scaling = true
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us,gr
kb_variant =
kb_model =
kb_options = grp:alt_shift_toggle
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod SHIFT, RETURN, exec, $terminal
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, F, fullscreen,
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, exec, $menu
bind = $mainMod, R, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View file

@ -1,2 +0,0 @@
preload = /home/xory/wallpaper.jpg
wallpaper = ,/home/xory/wallpaper.jpg

View file

@ -1,23 +0,0 @@
max-gamma = 150
profile {
time = 20:00
temperature = 3500
}
profile {
time = 21:00
temperature = 2500
gamma = 0.8
}
profile {
time = 24:00
temperature = 1500
gamma = 0.7
}
profile {
time = 6:00
identity = true
}

View file

@ -1,91 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{ "catppuccin/nvim", name = "catppuccin" },
"neovim/nvim-lspconfig",
{"nvim-treesitter/nvim-treesitter", lazy = false, branch = "main", build = ":TSUpdate", opts = {}},
{ "nvim-tree/nvim-tree.lua", opts = {} },
"nvim-tree/nvim-web-devicons",
"romgrk/barbar.nvim",
{ "nvim-lualine/lualine.nvim", opts = {} },
{ "windwp/nvim-autopairs", opts = {} },
"neovim/nvim-lspconfig",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/nvim-cmp",
"hrsh7th/vim-vsnip",
"voldikss/vim-floaterm",
{
'IogaMaster/neocord',
event = "VeryLazy",
opts = {}
}
})
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.smarttab = true
vim.o.cursorline = true
vim.o.laststatus = 3
vim.o.background = "dark"
vim.o.termguicolors = true
vim.o.number = true
vim.o.relativenumber = true
vim.cmd.colorscheme "catppuccin-mocha"
vim.o.guifont = "CaskaydiaCove Nerd Font:h11"
vim.diagnostic.config({
virtual_text = true, -- Show inline error messages
signs = true, -- Show signs in the gutter
underline = true, -- Underline errors
update_in_insert = false,
severity_sort = true,
})
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
}, {
{ name = 'buffer' },
})
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
vim.lsp.enable("rust_analyzer")
vim.lsp.enable("pylsp")
vim.lsp.enable("biome")
vim.lsp.enable("eslint")
vim.lsp.enable("ccls")

View file

@ -1,27 +0,0 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

View file

@ -1,197 +0,0 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces",
"hyprland/window"
],
"modules-center": [],
"modules-right": [
"pulseaudio",
"network",
"cpu",
"memory",
"temperature",
"hyprland/language",
"clock",
"tray"
],
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%d-%m-%Y}",
"format": "{:%I:%M %p}"
},
"cpu": {
"format": " {usage}%",
"tooltip": false
},
"memory": {
"format": " {}%"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"hwmon-path": "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp3_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-full": "{icon} {capacity}%",
"format-charging": "󰂄 {capacity}%",
"format-plugged": "󰂅 {capacity}%",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "󰈀 {ipaddr}/{cidr}",
"format-linked": "󱚵 {ifname} (No IP)",
"format-disconnected": "󱛅 Disconnected",
"format-alt": "{ifname}: {ipaddr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": " {volume}%",
"format-bluetooth": "  {volume}%",
"format-bluetooth-muted": " ",
"format-muted": " ",
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

View file

@ -1,103 +0,0 @@
@import "catppuccin.css";
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Inconsolata Nerd Font;
font-size: 13px;
}
window#waybar {
background-color: @base;
color: @text;
transition-property: background-color;
transition-duration: .5s;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
}
#workspaces {
background-color: @crust;
padding: 2px;
margin: 5px;
border-radius: 10px;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @sky;
font-size: 11px;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#pulseaudio,
#battery,
#network,
#cpu,
#memory,
#temperature,
#backlight,
#language,
#battery,
#clock,
#tray {
background-color: @mantle;
padding: 5px;
margin: 3px;
border-radius: 10px;
}
#pulseaudio { color: @maroon; }
#network { color: @sapphire; }
#cpu { color: @flamingo; }
#memory { color: @blue; }
#temperature { color: @red; }
#backlight { color: @teal; }
#language { color: @rosewater; }
#battery { color: @lavender; }
#clock { color: @pink; }

View file

@ -1,34 +0,0 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
charset = utf-8
indent_size = 2
indent_style = space
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# go
[*.go]
indent_style = tab
indent_size = 4
# python
[*.{ini,py,py.tpl,rst}]
indent_size = 4
# rust
[*.rs]
indent_size = 4
# documentation, utils
[*.{md,mdx,diff}]
trim_trailing_whitespace = false
# windows shell scripts
[*.{cmd,bat,ps1}]
end_of_line = crlf

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2021 Catppuccin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,87 +0,0 @@
<h3 align="center">
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
Catppuccin for <a href="https://hg.sr.ht/~scoopta/wofi">Wofi</a>
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
</h3>
<p align="center">
<a href="https://github.com/quantumfate/wofi/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/template?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
<a href="https://github.com/quantumfate/wofi/issues"><img src="https://img.shields.io/github/issues/catppuccin/template?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
<a href="https://github.com/quantumfate/wofi/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/template?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/preview.webp"/>
</p>
## Previews
<details>
<summary>🌻 Latte</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/latte.webp"/>
</details>
<details>
<summary>🪴 Frappé</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/frappe.webp"/>
</details>
<details>
<summary>🌺 Macchiato</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/macchiato.webp"/>
</details>
<details>
<summary>🌿 Mocha</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/mocha.webp"/>
</details>
## Usage
1. Clone this repository locally to your desired location. Typically something like `~/.config/`
2. Launch Wofi with your desired flavor (e.g. `latte`, `frappe`, `macchiato` or `mocha`).
```bash
wofi --conf <your-path-to-wofi>/config --style <your-path-to-wofi>/<flavor>/style.css
```
I'm personally using a bash script:
```bash
#!/usr/bin/env bash
CONFIG="$HOME/.config/hypr/wofi/config/config"
STYLE="$HOME/.config/hypr/wofi/src/mocha/style.css"
if [[ ! $(pidof wofi) ]]; then
wofi --conf "${CONFIG}" --style "${STYLE}"
else
pkill wofi
fi
```
- Q: **_"Which flavor of CSS is supported."_**\
A: [GTK CSS](https://docs.gtk.org/gtk3/). Note that hsl-colors are not supported.
- Q: **_"Where can I find CSS targets for theme customization."_**\
A: On the [Wofi page](https://hg.sr.ht/~scoopta/wofi) and on the [man page](https://man.archlinux.org/man/wofi.7.en).
- Q: **_"My CSS imports are not working."_**\
A: Please read the [Wofi configuration](https://man.archlinux.org/man/wofi.5.en#CONFIG_OPTIONS) options. Especially in regards to `style` and `stylesheet`. We avoid import statements for simplicity.
## 💝 Thanks to
- [quantumfate](https://github.com/quantumfate)
&nbsp;
<p align="center">
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />
</p>
<p align="center">
Copyright &copy; 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
</p>
<p align="center">
<a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,314 +0,0 @@
:root {
--ctp-latte-rosewater: #dc8a78;
--ctp-latte-rosewater-rgb: rgb(220, 138, 120);
--ctp-latte-rosewater-hsl: hsl(11, 59%, 67%);
--ctp-frappe-rosewater: #f2d5cf;
--ctp-frappe-rosewater-rgb: rgb(242, 213, 207);
--ctp-frappe-rosewater-hsl: hsl(10, 57%, 88%);
--ctp-macchiato-rosewater: #f4dbd6;
--ctp-macchiato-rosewater-rgb: rgb(244, 219, 214);
--ctp-macchiato-rosewater-hsl: hsl(10, 58%, 90%);
--ctp-mocha-rosewater: #f5e0dc;
--ctp-mocha-rosewater-rgb: rgb(245, 224, 220);
--ctp-mocha-rosewater-hsl: hsl(10, 56%, 91%);
--ctp-latte-flamingo: #dd7878;
--ctp-latte-flamingo-rgb: rgb(221, 120, 120);
--ctp-latte-flamingo-hsl: hsl(0, 60%, 67%);
--ctp-frappe-flamingo: #eebebe;
--ctp-frappe-flamingo-rgb: rgb(238, 190, 190);
--ctp-frappe-flamingo-hsl: hsl(0, 59%, 84%);
--ctp-macchiato-flamingo: #f0c6c6;
--ctp-macchiato-flamingo-rgb: rgb(240, 198, 198);
--ctp-macchiato-flamingo-hsl: hsl(0, 58%, 86%);
--ctp-mocha-flamingo: #f2cdcd;
--ctp-mocha-flamingo-rgb: rgb(242, 205, 205);
--ctp-mocha-flamingo-hsl: hsl(0, 59%, 88%);
--ctp-latte-pink: #ea76cb;
--ctp-latte-pink-rgb: rgb(234, 118, 203);
--ctp-latte-pink-hsl: hsl(316, 73%, 69%);
--ctp-frappe-pink: #f4b8e4;
--ctp-frappe-pink-rgb: rgb(244, 184, 228);
--ctp-frappe-pink-hsl: hsl(316, 73%, 84%);
--ctp-macchiato-pink: #f5bde6;
--ctp-macchiato-pink-rgb: rgb(245, 189, 230);
--ctp-macchiato-pink-hsl: hsl(316, 74%, 85%);
--ctp-mocha-pink: #f5c2e7;
--ctp-mocha-pink-rgb: rgb(245, 194, 231);
--ctp-mocha-pink-hsl: hsl(316, 72%, 86%);
--ctp-latte-mauve: #8839ef;
--ctp-latte-mauve-rgb: rgb(136, 57, 239);
--ctp-latte-mauve-hsl: hsl(266, 85%, 58%);
--ctp-frappe-mauve: #ca9ee6;
--ctp-frappe-mauve-rgb: rgb(202, 158, 230);
--ctp-frappe-mauve-hsl: hsl(277, 59%, 76%);
--ctp-macchiato-mauve: #c6a0f6;
--ctp-macchiato-mauve-rgb: rgb(198, 160, 246);
--ctp-macchiato-mauve-hsl: hsl(267, 83%, 80%);
--ctp-mocha-mauve: #cba6f7;
--ctp-mocha-mauve-rgb: rgb(203, 166, 247);
--ctp-mocha-mauve-hsl: hsl(267, 84%, 81%);
--ctp-latte-red: #d20f39;
--ctp-latte-red-rgb: rgb(210, 15, 57);
--ctp-latte-red-hsl: hsl(347, 87%, 44%);
--ctp-frappe-red: #e78284;
--ctp-frappe-red-rgb: rgb(231, 130, 132);
--ctp-frappe-red-hsl: hsl(359, 68%, 71%);
--ctp-macchiato-red: #ed8796;
--ctp-macchiato-red-rgb: rgb(237, 135, 150);
--ctp-macchiato-red-hsl: hsl(351, 74%, 73%);
--ctp-mocha-red: #f38ba8;
--ctp-mocha-red-rgb: rgb(243, 139, 168);
--ctp-mocha-red-hsl: hsl(343, 81%, 75%);
--ctp-latte-maroon: #e64553;
--ctp-latte-maroon-rgb: rgb(230, 69, 83);
--ctp-latte-maroon-hsl: hsl(355, 76%, 59%);
--ctp-frappe-maroon: #ea999c;
--ctp-frappe-maroon-rgb: rgb(234, 153, 156);
--ctp-frappe-maroon-hsl: hsl(358, 66%, 76%);
--ctp-macchiato-maroon: #ee99a0;
--ctp-macchiato-maroon-rgb: rgb(238, 153, 160);
--ctp-macchiato-maroon-hsl: hsl(355, 71%, 77%);
--ctp-mocha-maroon: #eba0ac;
--ctp-mocha-maroon-rgb: rgb(235, 160, 172);
--ctp-mocha-maroon-hsl: hsl(350, 65%, 77%);
--ctp-latte-peach: #fe640b;
--ctp-latte-peach-rgb: rgb(254, 100, 11);
--ctp-latte-peach-hsl: hsl(22, 99%, 52%);
--ctp-frappe-peach: #ef9f76;
--ctp-frappe-peach-rgb: rgb(239, 159, 118);
--ctp-frappe-peach-hsl: hsl(20, 79%, 70%);
--ctp-macchiato-peach: #f5a97f;
--ctp-macchiato-peach-rgb: rgb(245, 169, 127);
--ctp-macchiato-peach-hsl: hsl(21, 86%, 73%);
--ctp-mocha-peach: #fab387;
--ctp-mocha-peach-rgb: rgb(250, 179, 135);
--ctp-mocha-peach-hsl: hsl(23, 92%, 75%);
--ctp-latte-yellow: #df8e1d;
--ctp-latte-yellow-rgb: rgb(223, 142, 29);
--ctp-latte-yellow-hsl: hsl(35, 77%, 49%);
--ctp-frappe-yellow: #e5c890;
--ctp-frappe-yellow-rgb: rgb(229, 200, 144);
--ctp-frappe-yellow-hsl: hsl(40, 62%, 73%);
--ctp-macchiato-yellow: #eed49f;
--ctp-macchiato-yellow-rgb: rgb(238, 212, 159);
--ctp-macchiato-yellow-hsl: hsl(40, 70%, 78%);
--ctp-mocha-yellow: #f9e2af;
--ctp-mocha-yellow-rgb: rgb(249, 226, 175);
--ctp-mocha-yellow-hsl: hsl(41, 86%, 83%);
--ctp-latte-green: #40a02b;
--ctp-latte-green-rgb: rgb(64, 160, 43);
--ctp-latte-green-hsl: hsl(109, 58%, 40%);
--ctp-frappe-green: #a6d189;
--ctp-frappe-green-rgb: rgb(166, 209, 137);
--ctp-frappe-green-hsl: hsl(96, 44%, 68%);
--ctp-macchiato-green: #a6da95;
--ctp-macchiato-green-rgb: rgb(166, 218, 149);
--ctp-macchiato-green-hsl: hsl(105, 48%, 72%);
--ctp-mocha-green: #a6e3a1;
--ctp-mocha-green-rgb: rgb(166, 227, 161);
--ctp-mocha-green-hsl: hsl(115, 54%, 76%);
--ctp-latte-teal: #179299;
--ctp-latte-teal-rgb: rgb(23, 146, 153);
--ctp-latte-teal-hsl: hsl(183, 74%, 35%);
--ctp-frappe-teal: #81c8be;
--ctp-frappe-teal-rgb: rgb(129, 200, 190);
--ctp-frappe-teal-hsl: hsl(172, 39%, 65%);
--ctp-macchiato-teal: #8bd5ca;
--ctp-macchiato-teal-rgb: rgb(139, 213, 202);
--ctp-macchiato-teal-hsl: hsl(171, 47%, 69%);
--ctp-mocha-teal: #94e2d5;
--ctp-mocha-teal-rgb: rgb(148, 226, 213);
--ctp-mocha-teal-hsl: hsl(170, 57%, 73%);
--ctp-latte-sky: #04a5e5;
--ctp-latte-sky-rgb: rgb(4, 165, 229);
--ctp-latte-sky-hsl: hsl(197, 97%, 46%);
--ctp-frappe-sky: #99d1db;
--ctp-frappe-sky-rgb: rgb(153, 209, 219);
--ctp-frappe-sky-hsl: hsl(189, 48%, 73%);
--ctp-macchiato-sky: #91d7e3;
--ctp-macchiato-sky-rgb: rgb(145, 215, 227);
--ctp-macchiato-sky-hsl: hsl(189, 59%, 73%);
--ctp-mocha-sky: #89dceb;
--ctp-mocha-sky-rgb: rgb(137, 220, 235);
--ctp-mocha-sky-hsl: hsl(189, 71%, 73%);
--ctp-latte-sapphire: #209fb5;
--ctp-latte-sapphire-rgb: rgb(32, 159, 181);
--ctp-latte-sapphire-hsl: hsl(189, 70%, 42%);
--ctp-frappe-sapphire: #85c1dc;
--ctp-frappe-sapphire-rgb: rgb(133, 193, 220);
--ctp-frappe-sapphire-hsl: hsl(199, 55%, 69%);
--ctp-macchiato-sapphire: #7dc4e4;
--ctp-macchiato-sapphire-rgb: rgb(125, 196, 228);
--ctp-macchiato-sapphire-hsl: hsl(199, 66%, 69%);
--ctp-mocha-sapphire: #74c7ec;
--ctp-mocha-sapphire-rgb: rgb(116, 199, 236);
--ctp-mocha-sapphire-hsl: hsl(199, 76%, 69%);
--ctp-latte-blue: #1e66f5;
--ctp-latte-blue-rgb: rgb(30, 102, 245);
--ctp-latte-blue-hsl: hsl(220, 91%, 54%);
--ctp-frappe-blue: #8caaee;
--ctp-frappe-blue-rgb: rgb(140, 170, 238);
--ctp-frappe-blue-hsl: hsl(222, 74%, 74%);
--ctp-macchiato-blue: #8aadf4;
--ctp-macchiato-blue-rgb: rgb(138, 173, 244);
--ctp-macchiato-blue-hsl: hsl(220, 83%, 75%);
--ctp-mocha-blue: #89b4fa;
--ctp-mocha-blue-rgb: rgb(137, 180, 250);
--ctp-mocha-blue-hsl: hsl(217, 92%, 76%);
--ctp-latte-lavender: #7287fd;
--ctp-latte-lavender-rgb: rgb(114, 135, 253);
--ctp-latte-lavender-hsl: hsl(231, 97%, 72%);
--ctp-frappe-lavender: #babbf1;
--ctp-frappe-lavender-rgb: rgb(186, 187, 241);
--ctp-frappe-lavender-hsl: hsl(239, 66%, 84%);
--ctp-macchiato-lavender: #b7bdf8;
--ctp-macchiato-lavender-rgb: rgb(183, 189, 248);
--ctp-macchiato-lavender-hsl: hsl(234, 82%, 85%);
--ctp-mocha-lavender: #b4befe;
--ctp-mocha-lavender-rgb: rgb(180, 190, 254);
--ctp-mocha-lavender-hsl: hsl(232, 97%, 85%);
--ctp-latte-text: #4c4f69;
--ctp-latte-text-rgb: rgb(76, 79, 105);
--ctp-latte-text-hsl: hsl(234, 16%, 35%);
--ctp-frappe-text: #c6d0f5;
--ctp-frappe-text-rgb: rgb(198, 208, 245);
--ctp-frappe-text-hsl: hsl(227, 70%, 87%);
--ctp-macchiato-text: #cad3f5;
--ctp-macchiato-text-rgb: rgb(202, 211, 245);
--ctp-macchiato-text-hsl: hsl(227, 68%, 88%);
--ctp-mocha-text: #cdd6f4;
--ctp-mocha-text-rgb: rgb(205, 214, 244);
--ctp-mocha-text-hsl: hsl(226, 64%, 88%);
--ctp-latte-subtext1: #5c5f77;
--ctp-latte-subtext1-rgb: rgb(92, 95, 119);
--ctp-latte-subtext1-hsl: hsl(233, 13%, 41%);
--ctp-frappe-subtext1: #b5bfe2;
--ctp-frappe-subtext1-rgb: rgb(181, 191, 226);
--ctp-frappe-subtext1-hsl: hsl(227, 44%, 80%);
--ctp-macchiato-subtext1: #b8c0e0;
--ctp-macchiato-subtext1-rgb: rgb(184, 192, 224);
--ctp-macchiato-subtext1-hsl: hsl(228, 39%, 80%);
--ctp-mocha-subtext1: #bac2de;
--ctp-mocha-subtext1-rgb: rgb(186, 194, 222);
--ctp-mocha-subtext1-hsl: hsl(227, 35%, 80%);
--ctp-latte-subtext0: #6c6f85;
--ctp-latte-subtext0-rgb: rgb(108, 111, 133);
--ctp-latte-subtext0-hsl: hsl(233, 10%, 47%);
--ctp-frappe-subtext0: #a5adce;
--ctp-frappe-subtext0-rgb: rgb(165, 173, 206);
--ctp-frappe-subtext0-hsl: hsl(228, 29%, 73%);
--ctp-macchiato-subtext0: #a5adcb;
--ctp-macchiato-subtext0-rgb: rgb(165, 173, 203);
--ctp-macchiato-subtext0-hsl: hsl(227, 27%, 72%);
--ctp-mocha-subtext0: #a6adc8;
--ctp-mocha-subtext0-rgb: rgb(166, 173, 200);
--ctp-mocha-subtext0-hsl: hsl(228, 24%, 72%);
--ctp-latte-overlay2: #7c7f93;
--ctp-latte-overlay2-rgb: rgb(124, 127, 147);
--ctp-latte-overlay2-hsl: hsl(232, 10%, 53%);
--ctp-frappe-overlay2: #949cbb;
--ctp-frappe-overlay2-rgb: rgb(148, 156, 187);
--ctp-frappe-overlay2-hsl: hsl(228, 22%, 66%);
--ctp-macchiato-overlay2: #939ab7;
--ctp-macchiato-overlay2-rgb: rgb(147, 154, 183);
--ctp-macchiato-overlay2-hsl: hsl(228, 20%, 65%);
--ctp-mocha-overlay2: #9399b2;
--ctp-mocha-overlay2-rgb: rgb(147, 153, 178);
--ctp-mocha-overlay2-hsl: hsl(228, 17%, 64%);
--ctp-latte-overlay1: #8c8fa1;
--ctp-latte-overlay1-rgb: rgb(140, 143, 161);
--ctp-latte-overlay1-hsl: hsl(231, 10%, 59%);
--ctp-frappe-overlay1: #838ba7;
--ctp-frappe-overlay1-rgb: rgb(131, 139, 167);
--ctp-frappe-overlay1-hsl: hsl(227, 17%, 58%);
--ctp-macchiato-overlay1: #8087a2;
--ctp-macchiato-overlay1-rgb: rgb(128, 135, 162);
--ctp-macchiato-overlay1-hsl: hsl(228, 15%, 57%);
--ctp-mocha-overlay1: #7f849c;
--ctp-mocha-overlay1-rgb: rgb(127, 132, 156);
--ctp-mocha-overlay1-hsl: hsl(230, 13%, 55%);
--ctp-latte-overlay0: #9ca0b0;
--ctp-latte-overlay0-rgb: rgb(156, 160, 176);
--ctp-latte-overlay0-hsl: hsl(228, 11%, 65%);
--ctp-frappe-overlay0: #737994;
--ctp-frappe-overlay0-rgb: rgb(115, 121, 148);
--ctp-frappe-overlay0-hsl: hsl(229, 13%, 52%);
--ctp-macchiato-overlay0: #6e738d;
--ctp-macchiato-overlay0-rgb: rgb(110, 115, 141);
--ctp-macchiato-overlay0-hsl: hsl(230, 12%, 49%);
--ctp-mocha-overlay0: #6c7086;
--ctp-mocha-overlay0-rgb: rgb(108, 112, 134);
--ctp-mocha-overlay0-hsl: hsl(231, 11%, 47%);
--ctp-latte-surface2: #acb0be;
--ctp-latte-surface2-rgb: rgb(172, 176, 190);
--ctp-latte-surface2-hsl: hsl(227, 12%, 71%);
--ctp-frappe-surface2: #626880;
--ctp-frappe-surface2-rgb: rgb(98, 104, 128);
--ctp-frappe-surface2-hsl: hsl(228, 13%, 44%);
--ctp-macchiato-surface2: #5b6078;
--ctp-macchiato-surface2-rgb: rgb(91, 96, 120);
--ctp-macchiato-surface2-hsl: hsl(230, 14%, 41%);
--ctp-mocha-surface2: #585b70;
--ctp-mocha-surface2-rgb: rgb(88, 91, 112);
--ctp-mocha-surface2-hsl: hsl(233, 12%, 39%);
--ctp-latte-surface1: #bcc0cc;
--ctp-latte-surface1-rgb: rgb(188, 192, 204);
--ctp-latte-surface1-hsl: hsl(225, 14%, 77%);
--ctp-frappe-surface1: #51576d;
--ctp-frappe-surface1-rgb: rgb(81, 87, 109);
--ctp-frappe-surface1-hsl: hsl(227, 15%, 37%);
--ctp-macchiato-surface1: #494d64;
--ctp-macchiato-surface1-rgb: rgb(73, 77, 100);
--ctp-macchiato-surface1-hsl: hsl(231, 16%, 34%);
--ctp-mocha-surface1: #45475a;
--ctp-mocha-surface1-rgb: rgb(69, 71, 90);
--ctp-mocha-surface1-hsl: hsl(234, 13%, 31%);
--ctp-latte-surface0: #ccd0da;
--ctp-latte-surface0-rgb: rgb(204, 208, 218);
--ctp-latte-surface0-hsl: hsl(223, 16%, 83%);
--ctp-frappe-surface0: #414559;
--ctp-frappe-surface0-rgb: rgb(65, 69, 89);
--ctp-frappe-surface0-hsl: hsl(230, 16%, 30%);
--ctp-macchiato-surface0: #363a4f;
--ctp-macchiato-surface0-rgb: rgb(54, 58, 79);
--ctp-macchiato-surface0-hsl: hsl(230, 19%, 26%);
--ctp-mocha-surface0: #313244;
--ctp-mocha-surface0-rgb: rgb(49, 50, 68);
--ctp-mocha-surface0-hsl: hsl(237, 16%, 23%);
--ctp-latte-base: #eff1f5;
--ctp-latte-base-rgb: rgb(239, 241, 245);
--ctp-latte-base-hsl: hsl(220, 23%, 95%);
--ctp-frappe-base: #303446;
--ctp-frappe-base-rgb: rgb(48, 52, 70);
--ctp-frappe-base-hsl: hsl(229, 19%, 23%);
--ctp-macchiato-base: #24273a;
--ctp-macchiato-base-rgb: rgb(36, 39, 58);
--ctp-macchiato-base-hsl: hsl(232, 23%, 18%);
--ctp-mocha-base: #1e1e2e;
--ctp-mocha-base-rgb: rgb(30, 30, 46);
--ctp-mocha-base-hsl: hsl(240, 21%, 15%);
--ctp-latte-mantle: #e6e9ef;
--ctp-latte-mantle-rgb: rgb(230, 233, 239);
--ctp-latte-mantle-hsl: hsl(220, 22%, 92%);
--ctp-frappe-mantle: #292c3c;
--ctp-frappe-mantle-rgb: rgb(41, 44, 60);
--ctp-frappe-mantle-hsl: hsl(231, 19%, 20%);
--ctp-macchiato-mantle: #1e2030;
--ctp-macchiato-mantle-rgb: rgb(30, 32, 48);
--ctp-macchiato-mantle-hsl: hsl(233, 23%, 15%);
--ctp-mocha-mantle: #181825;
--ctp-mocha-mantle-rgb: rgb(24, 24, 37);
--ctp-mocha-mantle-hsl: hsl(240, 21%, 12%);
--ctp-latte-crust: #dce0e8;
--ctp-latte-crust-rgb: rgb(220, 224, 232);
--ctp-latte-crust-hsl: hsl(220, 21%, 89%);
--ctp-frappe-crust: #232634;
--ctp-frappe-crust-rgb: rgb(35, 38, 52);
--ctp-frappe-crust-hsl: hsl(229, 20%, 17%);
--ctp-macchiato-crust: #181926;
--ctp-macchiato-crust-rgb: rgb(24, 25, 38);
--ctp-macchiato-crust-hsl: hsl(236, 23%, 12%);
--ctp-mocha-crust: #11111b;
--ctp-mocha-crust-rgb: rgb(17, 17, 27);
--ctp-mocha-crust-hsl: hsl(240, 23%, 9%);
}

View file

@ -1,11 +0,0 @@
show=drun
width=750
height=400
always_parse_args=true
show_all=false
term=kitty
hide_scroll=true
print_command=true
insensitive=true
prompt=
columns=2

View file

@ -1,164 +0,0 @@
@define-color rosewater #f2d5cf;
@define-color rosewater-rgb rgb(242, 213, 207);
@define-color flamingo #eebebe;
@define-color flamingo-rgb rgb(238, 190, 190);
@define-color pink #f4b8e4;
@define-color pink-rgb rgb(244, 184, 228);
@define-color mauve #ca9ee6;
@define-color mauve-rgb rgb(202, 158, 230);
@define-color red #e78284;
@define-color red-rgb rgb(231, 130, 132);
@define-color maroon #ea999c;
@define-color maroon-rgb rgb(234, 153, 156);
@define-color peach #ef9f76;
@define-color peach-rgb rgb(239, 159, 118);
@define-color yellow #e5c890;
@define-color yellow-rgb rgb(229, 200, 144);
@define-color green #a6d189;
@define-color green-rgb rgb(166, 209, 137);
@define-color teal #81c8be;
@define-color teal-rgb rgb(129, 200, 190);
@define-color sky #99d1db;
@define-color sky-rgb rgb(153, 209, 219);
@define-color sapphire #85c1dc;
@define-color sapphire-rgb rgb(133, 193, 220);
@define-color blue #8caaee;
@define-color blue-rgb rgb(140, 170, 238);
@define-color lavender #babbf1;
@define-color lavender-rgb rgb(186, 187, 241);
@define-color text #c6d0f5;
@define-color text-rgb rgb(198, 208, 245);
@define-color subtext1 #b5bfe2;
@define-color subtext1-rgb rgb(181, 191, 226);
@define-color subtext0 #a5adce;
@define-color subtext0-rgb rgb(165, 173, 206);
@define-color overlay2 #949cbb;
@define-color overlay2-rgb rgb(148, 156, 187);
@define-color overlay1 #838ba7;
@define-color overlay1-rgb rgb(131, 139, 167);
@define-color overlay0 #737994;
@define-color overlay0-rgb rgb(115, 121, 148);
@define-color surface2 #626880;
@define-color surface2-rgb rgb(98, 104, 128);
@define-color surface1 #51576d;
@define-color surface1-rgb rgb(81, 87, 109);
@define-color surface0 #414559;
@define-color surface0-rgb rgb(65, 69, 89);
@define-color base #303446;
@define-color base-rgb rgb(48, 52, 70);
@define-color mantle #292c3c;
@define-color mantle-rgb rgb(41, 44, 60);
@define-color crust #232634;
@define-color crust-rgb rgb(35, 38, 52);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #dc8a78;
@define-color rosewater-rgb rgb(220, 138, 120);
@define-color flamingo #dd7878;
@define-color flamingo-rgb rgb(221, 120, 120);
@define-color pink #ea76cb;
@define-color pink-rgb rgb(234, 118, 203);
@define-color mauve #8839ef;
@define-color mauve-rgb rgb(136, 57, 239);
@define-color red #d20f39;
@define-color red-rgb rgb(210, 15, 57);
@define-color maroon #e64553;
@define-color maroon-rgb rgb(230, 69, 83);
@define-color peach #fe640b;
@define-color peach-rgb rgb(254, 100, 11);
@define-color yellow #df8e1d;
@define-color yellow-rgb rgb(223, 142, 29);
@define-color green #40a02b;
@define-color green-rgb rgb(64, 160, 43);
@define-color teal #179299;
@define-color teal-rgb rgb(23, 146, 153);
@define-color sky #04a5e5;
@define-color sky-rgb rgb(4, 165, 229);
@define-color sapphire #209fb5;
@define-color sapphire-rgb rgb(32, 159, 181);
@define-color blue #1e66f5;
@define-color blue-rgb rgb(30, 102, 245);
@define-color lavender #7287fd;
@define-color lavender-rgb rgb(114, 135, 253);
@define-color text #4c4f69;
@define-color text-rgb rgb(76, 79, 105);
@define-color subtext1 #5c5f77;
@define-color subtext1-rgb rgb(92, 95, 119);
@define-color subtext0 #6c6f85;
@define-color subtext0-rgb rgb(108, 111, 133);
@define-color overlay2 #7c7f93;
@define-color overlay2-rgb rgb(124, 127, 147);
@define-color overlay1 #8c8fa1;
@define-color overlay1-rgb rgb(140, 143, 161);
@define-color overlay0 #9ca0b0;
@define-color overlay0-rgb rgb(156, 160, 176);
@define-color surface2 #acb0be;
@define-color surface2-rgb rgb(172, 176, 190);
@define-color surface1 #bcc0cc;
@define-color surface1-rgb rgb(188, 192, 204);
@define-color surface0 #ccd0da;
@define-color surface0-rgb rgb(204, 208, 218);
@define-color base #eff1f5;
@define-color base-rgb rgb(239, 241, 245);
@define-color mantle #e6e9ef;
@define-color mantle-rgb rgb(230, 233, 239);
@define-color crust #dce0e8;
@define-color crust-rgb rgb(220, 224, 232);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #f4dbd6;
@define-color rosewater-rgb rgb(244, 219, 214);
@define-color flamingo #f0c6c6;
@define-color flamingo-rgb rgb(240, 198, 198);
@define-color pink #f5bde6;
@define-color pink-rgb rgb(245, 189, 230);
@define-color mauve #c6a0f6;
@define-color mauve-rgb rgb(198, 160, 246);
@define-color red #ed8796;
@define-color red-rgb rgb(237, 135, 150);
@define-color maroon #ee99a0;
@define-color maroon-rgb rgb(238, 153, 160);
@define-color peach #f5a97f;
@define-color peach-rgb rgb(245, 169, 127);
@define-color yellow #eed49f;
@define-color yellow-rgb rgb(238, 212, 159);
@define-color green #a6da95;
@define-color green-rgb rgb(166, 218, 149);
@define-color teal #8bd5ca;
@define-color teal-rgb rgb(139, 213, 202);
@define-color sky #91d7e3;
@define-color sky-rgb rgb(145, 215, 227);
@define-color sapphire #7dc4e4;
@define-color sapphire-rgb rgb(125, 196, 228);
@define-color blue #8aadf4;
@define-color blue-rgb rgb(138, 173, 244);
@define-color lavender #b7bdf8;
@define-color lavender-rgb rgb(183, 189, 248);
@define-color text #cad3f5;
@define-color text-rgb rgb(202, 211, 245);
@define-color subtext1 #b8c0e0;
@define-color subtext1-rgb rgb(184, 192, 224);
@define-color subtext0 #a5adcb;
@define-color subtext0-rgb rgb(165, 173, 203);
@define-color overlay2 #939ab7;
@define-color overlay2-rgb rgb(147, 154, 183);
@define-color overlay1 #8087a2;
@define-color overlay1-rgb rgb(128, 135, 162);
@define-color overlay0 #6e738d;
@define-color overlay0-rgb rgb(110, 115, 141);
@define-color surface2 #5b6078;
@define-color surface2-rgb rgb(91, 96, 120);
@define-color surface1 #494d64;
@define-color surface1-rgb rgb(73, 77, 100);
@define-color surface0 #363a4f;
@define-color surface0-rgb rgb(54, 58, 79);
@define-color base #24273a;
@define-color base-rgb rgb(36, 39, 58);
@define-color mantle #1e2030;
@define-color mantle-rgb rgb(30, 32, 48);
@define-color crust #181926;
@define-color crust-rgb rgb(24, 25, 38);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #f5e0dc;
@define-color rosewater-rgb rgb(245, 224, 220);
@define-color flamingo #f2cdcd;
@define-color flamingo-rgb rgb(242, 205, 205);
@define-color pink #f5c2e7;
@define-color pink-rgb rgb(245, 194, 231);
@define-color mauve #cba6f7;
@define-color mauve-rgb rgb(203, 166, 247);
@define-color red #f38ba8;
@define-color red-rgb rgb(243, 139, 168);
@define-color maroon #eba0ac;
@define-color maroon-rgb rgb(235, 160, 172);
@define-color peach #fab387;
@define-color peach-rgb rgb(250, 179, 135);
@define-color yellow #f9e2af;
@define-color yellow-rgb rgb(249, 226, 175);
@define-color green #a6e3a1;
@define-color green-rgb rgb(166, 227, 161);
@define-color teal #94e2d5;
@define-color teal-rgb rgb(148, 226, 213);
@define-color sky #89dceb;
@define-color sky-rgb rgb(137, 220, 235);
@define-color sapphire #74c7ec;
@define-color sapphire-rgb rgb(116, 199, 236);
@define-color blue #89b4fa;
@define-color blue-rgb rgb(137, 180, 250);
@define-color lavender #b4befe;
@define-color lavender-rgb rgb(180, 190, 254);
@define-color text #cdd6f4;
@define-color text-rgb rgb(205, 214, 244);
@define-color subtext1 #bac2de;
@define-color subtext1-rgb rgb(186, 194, 222);
@define-color subtext0 #a6adc8;
@define-color subtext0-rgb rgb(166, 173, 200);
@define-color overlay2 #9399b2;
@define-color overlay2-rgb rgb(147, 153, 178);
@define-color overlay1 #7f849c;
@define-color overlay1-rgb rgb(127, 132, 156);
@define-color overlay0 #6c7086;
@define-color overlay0-rgb rgb(108, 112, 134);
@define-color surface2 #585b70;
@define-color surface2-rgb rgb(88, 91, 112);
@define-color surface1 #45475a;
@define-color surface1-rgb rgb(69, 71, 90);
@define-color surface0 #313244;
@define-color surface0-rgb rgb(49, 50, 68);
@define-color base #1e1e2e;
@define-color base-rgb rgb(30, 30, 46);
@define-color mantle #181825;
@define-color mantle-rgb rgb(24, 24, 37);
@define-color crust #11111b;
@define-color crust-rgb rgb(17, 17, 27);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -0,0 +1,88 @@
{
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypted";
# Critical for Samsung NVMe longevity/performance
settings.allowDiscards = true;
content = {
type = "zfs";
pool = "zroot";
};
};
};
};
};
};
};
zpool = {
zroot = {
type = "zpool";
options = {
ashift = "12";
autotrim = "on";
};
rootFsOptions = {
acltype = "posixacl";
xattr = "sa";
dnodesize = "auto";
compression = "zstd";
normalization = "formD";
relatime = "on";
canmount = "off";
"com.sun:auto-snapshot" = "false";
};
datasets = {
# Ephemeral root (rolls back to blank on boot)
"root" = {
type = "zfs_fs";
mountpoint = "/";
options.mountpoint = "legacy";
postCreateHook = "zfs snapshot zroot/root@blank";
};
# Nix store
"nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options.mountpoint = "legacy";
options."com.sun:auto-snapshot" = "false";
};
# Persistent data
"persist" = {
type = "zfs_fs";
mountpoint = "/persist";
options.mountpoint = "legacy";
};
# Home directories
"home" = {
type = "zfs_fs";
mountpoint = "/home";
options.mountpoint = "legacy";
};
};
};
};
};
}

View file

@ -1,6 +1,3 @@
# 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, ... }:
{
@ -13,19 +10,6 @@
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/1578f380-e588-419b-ace0-f63e6a48ca39";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4CB1-40B6";
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

View file

@ -1,113 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "xory";
home.homeDirectory = "/home/xory";
home.packages = with pkgs; [
neovim
fastfetch
git
cava
kdePackages.qtwebsockets
(python313.withPackages (python-pkgs: [
python313Packages.websockets
python313Packages.requests # basic python test env
]))
simplex-chat-desktop
qbittorrent
ffmpeg
yt-dlp
prismlauncher
keepassxc
(wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
obs-vaapi
obs-gstreamer
obs-vkcapture
wlrobs
obs-pipewire-audio-capture
];
})
mpv
kdePackages.kdenlive
gimp
inkscape
krita
distrobox
screen
arduino-ide
(lutris.override {
extraLibraries = pkgs: [
wineWowPackages.stable
winetricks
];
})
libadwaita # fucking winetricks
zenity
woeusb-ng
ntfs3g
hyprpaper
hyprsunset
grim
slurp
input-leap
viber
hyprpolkitagent
pulsemixer
feh
opentrack
aitrack
progress
croc
libarchive
];
home.file = {
".config/nvim/init.lua" = {
enable = true;
source = ./config/nvim/init.lua;
};
".config/hypr" = {
enable = true;
recursive = true;
source = ./config/hypr;
};
".config/waybar" = {
enable = true;
recursive = true;
source = ./config/waybar;
};
".config/wofi" = {
enable = true;
recursive = true;
source = ./config/wofi;
};
};
programs.zsh = {
enable = true;
enableCompletion = true;
shellAliases = {
"rebuild" = "sudo nixos-rebuild switch --flake ~/dots";
};
syntaxHighlighting.enable = true;
};
programs.starship.enable = true;
programs.kitty = {
enable = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Inconsolata Nerd Font";
package = pkgs.nerd-fonts.inconsolata;
};
settings.background_opacity = 0.8;
};
wayland.windowManager.hyprland.enable = true;
programs.waybar.enable = true;
programs.wofi.enable = true;
services.dunst.enable = true;
home.stateVersion = "25.05";
}

View file

@ -1,303 +0,0 @@
# autogenerated = 1 # remove this line to remove the warning
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
# source = ~/.config/hypr/myColors.conf
################
### MONITORS ###
################
# See https://wiki.hypr.land/Configuring/Monitors/
monitor=,preferred,auto,auto
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
$menu = wofi --conf "/home/xory/.config/wofi/config/config" --style "/home/xory/.config/wofi/src/mocha/style.css" --show run
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
# exec-once = $terminal
# exec-once = nm-applet &
# exec-once = waybar & hyprpaper & firefox
exec-once = hyprpaper &
exec-once = waybar &
exec-once = dunst &
exec-once = systemctl --user start hyprpolkitagent
exec-once = systemctl --user start hyprsunset
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 10
gaps_out = 10
border_size = 2
# https://wiki.hypr.land/Configuring/Variables/#variable-types for info about colors
col.active_border = rgba(f38ba8ff) rgba(89dcebff) 45deg
col.inactive_border = rgba(a6adc8aa)
# Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false
# Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 10
rounding_power = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#blur
blur {
enabled = true
size = 3
passes = 1
vibrancy = 0.1696
}
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# Default animations, see https://wiki.hypr.land/Configuring/Animations/ for more
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 4.79, easeOutQuint
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 1.21, almostLinear, fade
animation = workspacesOut, 1, 1.94, almostLinear, fade
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
}
xwayland {
force_zero_scaling = true
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us,gr
kb_variant =
kb_model =
kb_options = grp:alt_shift_toggle
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
}
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod SHIFT, RETURN, exec, $terminal
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, F, fullscreen,
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, exec, $menu
bind = $mainMod, R, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

View file

@ -1,2 +0,0 @@
preload = /home/xory/wallpaper.png
wallpaper = ,/home/xory/wallpaper.png

View file

@ -1,23 +0,0 @@
max-gamma = 150
profile {
time = 20:00
temperature = 3500
}
profile {
time = 21:00
temperature = 2500
gamma = 0.8
}
profile {
time = 24:00
temperature = 1500
gamma = 0.7
}
profile {
time = 6:00
identity = true
}

View file

@ -1,91 +0,0 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
{ "catppuccin/nvim", name = "catppuccin" },
"neovim/nvim-lspconfig",
{"nvim-treesitter/nvim-treesitter", lazy = false, branch = "main", build = ":TSUpdate", opts = {}},
{ "nvim-tree/nvim-tree.lua", opts = {} },
"nvim-tree/nvim-web-devicons",
"romgrk/barbar.nvim",
{ "nvim-lualine/lualine.nvim", opts = {} },
{ "windwp/nvim-autopairs", opts = {} },
"neovim/nvim-lspconfig",
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-path",
"hrsh7th/cmp-cmdline",
"hrsh7th/nvim-cmp",
"hrsh7th/vim-vsnip",
"voldikss/vim-floaterm",
{
'IogaMaster/neocord',
event = "VeryLazy",
opts = {}
}
})
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.smarttab = true
vim.o.cursorline = true
vim.o.laststatus = 3
vim.o.background = "dark"
vim.o.termguicolors = true
vim.o.number = true
vim.o.relativenumber = true
vim.cmd.colorscheme "catppuccin-mocha"
vim.o.guifont = "CaskaydiaCove Nerd Font:h11"
vim.diagnostic.config({
virtual_text = true, -- Show inline error messages
signs = true, -- Show signs in the gutter
underline = true, -- Underline errors
update_in_insert = false,
severity_sort = true,
})
local cmp = require'cmp'
cmp.setup({
snippet = {
expand = function(args)
vim.fn["vsnip#anonymous"](args.body)
end,
},
mapping = cmp.mapping.preset.insert({
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
}, {
{ name = 'buffer' },
})
})
local capabilities = require("cmp_nvim_lsp").default_capabilities()
vim.lsp.enable("rust_analyzer")
vim.lsp.enable("pylsp")
vim.lsp.enable("biome")
vim.lsp.enable("eslint")
vim.lsp.enable("ccls")

View file

@ -1,27 +0,0 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

View file

@ -1,198 +0,0 @@
// -*- mode: jsonc -*-
{
// "layer": "top", // Waybar at top layer
// "position": "bottom", // Waybar position (top|bottom|left|right)
"height": 30, // Waybar height (to be removed for auto height)
// "width": 1280, // Waybar width
"spacing": 4, // Gaps between modules (4px)
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces",
"hyprland/window"
],
"modules-center": [],
"modules-right": [
"pulseaudio",
"network",
"cpu",
"memory",
"temperature",
"hyprland/language",
"battery",
"clock",
"tray"
],
// Modules configuration
// "sway/workspaces": {
// "disable-scroll": true,
// "all-outputs": true,
// "warp-on-scroll": false,
// "format": "{name}: {icon}",
// "format-icons": {
// "1": "",
// "2": "",
// "3": "",
// "4": "",
// "5": "",
// "urgent": "",
// "focused": "",
// "default": ""
// }
// },
"keyboard-state": {
"numlock": true,
"capslock": true,
"format": "{name} {icon}",
"format-icons": {
"locked": "",
"unlocked": ""
}
},
"sway/mode": {
"format": "<span style=\"italic\">{}</span>"
},
"sway/scratchpad": {
"format": "{icon} {count}",
"show-empty": false,
"format-icons": ["", ""],
"tooltip": true,
"tooltip-format": "{app}: {title}"
},
"mpd": {
"format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ",
"format-disconnected": "Disconnected ",
"format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ",
"unknown-tag": "N/A",
"interval": 5,
"consume-icons": {
"on": " "
},
"random-icons": {
"off": "<span color=\"#f53c3c\"></span> ",
"on": " "
},
"repeat-icons": {
"on": " "
},
"single-icons": {
"on": "1 "
},
"state-icons": {
"paused": "",
"playing": ""
},
"tooltip-format": "MPD (connected)",
"tooltip-format-disconnected": "MPD (disconnected)"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10,
// "icons": {
// "blueman": "bluetooth",
// "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png"
// }
},
"clock": {
// "timezone": "America/New_York",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "{:%d-%m-%Y}",
"format": "{:%I:%M %p}"
},
"cpu": {
"format": " {usage}%",
"tooltip": false
},
"memory": {
"format": " {}%"
},
"temperature": {
// "thermal-zone": 2,
// "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
"hwmon-path": "/sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon1/temp3_input",
"critical-threshold": 80,
// "format-critical": "{temperatureC}°C {icon}",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""]
},
"backlight": {
// "device": "acpi_video1",
"format": "{icon} {percent}%",
"format-icons": ["", "", "", "", "", "", "", "", ""]
},
"battery": {
"states": {
// "good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-full": "{icon} {capacity}%",
"format-charging": "󰂄 {capacity}%",
"format-plugged": "󰂅 {capacity}%",
"format-alt": "{time} {icon}",
// "format-good": "", // An empty format will hide the module
// "format-full": "",
"format-icons": ["", "", "", "", ""]
},
"battery#bat2": {
"bat": "BAT2"
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "",
"balanced": "",
"power-saver": ""
}
},
"network": {
// "interface": "wlp2*", // (Optional) To force the use of this interface
"format-wifi": " {essid} ({signalStrength}%)",
"format-ethernet": "󰈀 {ipaddr}/{cidr}",
"format-linked": "󱚵 {ifname} (No IP)",
"format-disconnected": "󱛅 Disconnected",
"format-alt": "{ifname}: {ipaddr}"
},
"pulseaudio": {
// "scroll-step": 1, // %, can be a float
"format": " {volume}%",
"format-bluetooth": "  {volume}%",
"format-bluetooth-muted": " ",
"format-muted": " ",
"on-click": "pavucontrol"
},
"custom/media": {
"format": "{icon} {text}",
"return-type": "json",
"max-length": 40,
"format-icons": {
"spotify": "",
"default": "🎜"
},
"escape": true,
"exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder
// "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name
},
"custom/power": {
"format" : "⏻ ",
"tooltip": false,
"menu": "on-click",
"menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder
"menu-actions": {
"shutdown": "shutdown",
"reboot": "reboot",
"suspend": "systemctl suspend",
"hibernate": "systemctl hibernate"
}
}
}

View file

@ -1,103 +0,0 @@
@import "catppuccin.css";
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: FontAwesome, Inconsolata Nerd Font;
font-size: 13px;
}
window#waybar {
background-color: @base;
color: @text;
transition-property: background-color;
transition-duration: .5s;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
}
#workspaces {
background-color: @crust;
padding: 2px;
margin: 5px;
border-radius: 10px;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: @sky;
font-size: 11px;
}
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
box-shadow: inset 0 -3px #ffffff;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
/* Using steps() instead of linear as a timing function to limit cpu usage */
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#pulseaudio,
#battery,
#network,
#cpu,
#memory,
#temperature,
#backlight,
#language,
#battery,
#clock,
#tray {
background-color: @mantle;
padding: 5px;
margin: 3px;
border-radius: 10px;
}
#pulseaudio { color: @maroon; }
#network { color: @sapphire; }
#cpu { color: @flamingo; }
#memory { color: @blue; }
#temperature { color: @red; }
#backlight { color: @teal; }
#language { color: @rosewater; }
#battery { color: @lavender; }
#clock { color: @pink; }

View file

@ -1,34 +0,0 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
charset = utf-8
indent_size = 2
indent_style = space
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# go
[*.go]
indent_style = tab
indent_size = 4
# python
[*.{ini,py,py.tpl,rst}]
indent_size = 4
# rust
[*.rs]
indent_size = 4
# documentation, utils
[*.{md,mdx,diff}]
trim_trailing_whitespace = false
# windows shell scripts
[*.{cmd,bat,ps1}]
end_of_line = crlf

View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2021 Catppuccin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,87 +0,0 @@
<h3 align="center">
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/logos/exports/1544x1544_circle.png" width="100" alt="Logo"/><br/>
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
Catppuccin for <a href="https://hg.sr.ht/~scoopta/wofi">Wofi</a>
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/misc/transparent.png" height="30" width="0px"/>
</h3>
<p align="center">
<a href="https://github.com/quantumfate/wofi/stargazers"><img src="https://img.shields.io/github/stars/catppuccin/template?colorA=363a4f&colorB=b7bdf8&style=for-the-badge"></a>
<a href="https://github.com/quantumfate/wofi/issues"><img src="https://img.shields.io/github/issues/catppuccin/template?colorA=363a4f&colorB=f5a97f&style=for-the-badge"></a>
<a href="https://github.com/quantumfate/wofi/contributors"><img src="https://img.shields.io/github/contributors/catppuccin/template?colorA=363a4f&colorB=a6da95&style=for-the-badge"></a>
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/preview.webp"/>
</p>
## Previews
<details>
<summary>🌻 Latte</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/latte.webp"/>
</details>
<details>
<summary>🪴 Frappé</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/frappe.webp"/>
</details>
<details>
<summary>🌺 Macchiato</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/macchiato.webp"/>
</details>
<details>
<summary>🌿 Mocha</summary>
<img src="https://raw.githubusercontent.com/quantumfate/wofi/main/assets/mocha.webp"/>
</details>
## Usage
1. Clone this repository locally to your desired location. Typically something like `~/.config/`
2. Launch Wofi with your desired flavor (e.g. `latte`, `frappe`, `macchiato` or `mocha`).
```bash
wofi --conf <your-path-to-wofi>/config --style <your-path-to-wofi>/<flavor>/style.css
```
I'm personally using a bash script:
```bash
#!/usr/bin/env bash
CONFIG="$HOME/.config/hypr/wofi/config/config"
STYLE="$HOME/.config/hypr/wofi/src/mocha/style.css"
if [[ ! $(pidof wofi) ]]; then
wofi --conf "${CONFIG}" --style "${STYLE}"
else
pkill wofi
fi
```
- Q: **_"Which flavor of CSS is supported."_**\
A: [GTK CSS](https://docs.gtk.org/gtk3/). Note that hsl-colors are not supported.
- Q: **_"Where can I find CSS targets for theme customization."_**\
A: On the [Wofi page](https://hg.sr.ht/~scoopta/wofi) and on the [man page](https://man.archlinux.org/man/wofi.7.en).
- Q: **_"My CSS imports are not working."_**\
A: Please read the [Wofi configuration](https://man.archlinux.org/man/wofi.5.en#CONFIG_OPTIONS) options. Especially in regards to `style` and `stylesheet`. We avoid import statements for simplicity.
## 💝 Thanks to
- [quantumfate](https://github.com/quantumfate)
&nbsp;
<p align="center">
<img src="https://raw.githubusercontent.com/catppuccin/catppuccin/main/assets/footers/gray0_ctp_on_line.svg?sanitize=true" />
</p>
<p align="center">
Copyright &copy; 2021-present <a href="https://github.com/catppuccin" target="_blank">Catppuccin Org</a>
</p>
<p align="center">
<a href="https://github.com/catppuccin/catppuccin/blob/main/LICENSE"><img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&logoColor=d9e0ee&colorA=363a4f&colorB=b7bdf8"/></a>
</p>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View file

@ -1,314 +0,0 @@
:root {
--ctp-latte-rosewater: #dc8a78;
--ctp-latte-rosewater-rgb: rgb(220, 138, 120);
--ctp-latte-rosewater-hsl: hsl(11, 59%, 67%);
--ctp-frappe-rosewater: #f2d5cf;
--ctp-frappe-rosewater-rgb: rgb(242, 213, 207);
--ctp-frappe-rosewater-hsl: hsl(10, 57%, 88%);
--ctp-macchiato-rosewater: #f4dbd6;
--ctp-macchiato-rosewater-rgb: rgb(244, 219, 214);
--ctp-macchiato-rosewater-hsl: hsl(10, 58%, 90%);
--ctp-mocha-rosewater: #f5e0dc;
--ctp-mocha-rosewater-rgb: rgb(245, 224, 220);
--ctp-mocha-rosewater-hsl: hsl(10, 56%, 91%);
--ctp-latte-flamingo: #dd7878;
--ctp-latte-flamingo-rgb: rgb(221, 120, 120);
--ctp-latte-flamingo-hsl: hsl(0, 60%, 67%);
--ctp-frappe-flamingo: #eebebe;
--ctp-frappe-flamingo-rgb: rgb(238, 190, 190);
--ctp-frappe-flamingo-hsl: hsl(0, 59%, 84%);
--ctp-macchiato-flamingo: #f0c6c6;
--ctp-macchiato-flamingo-rgb: rgb(240, 198, 198);
--ctp-macchiato-flamingo-hsl: hsl(0, 58%, 86%);
--ctp-mocha-flamingo: #f2cdcd;
--ctp-mocha-flamingo-rgb: rgb(242, 205, 205);
--ctp-mocha-flamingo-hsl: hsl(0, 59%, 88%);
--ctp-latte-pink: #ea76cb;
--ctp-latte-pink-rgb: rgb(234, 118, 203);
--ctp-latte-pink-hsl: hsl(316, 73%, 69%);
--ctp-frappe-pink: #f4b8e4;
--ctp-frappe-pink-rgb: rgb(244, 184, 228);
--ctp-frappe-pink-hsl: hsl(316, 73%, 84%);
--ctp-macchiato-pink: #f5bde6;
--ctp-macchiato-pink-rgb: rgb(245, 189, 230);
--ctp-macchiato-pink-hsl: hsl(316, 74%, 85%);
--ctp-mocha-pink: #f5c2e7;
--ctp-mocha-pink-rgb: rgb(245, 194, 231);
--ctp-mocha-pink-hsl: hsl(316, 72%, 86%);
--ctp-latte-mauve: #8839ef;
--ctp-latte-mauve-rgb: rgb(136, 57, 239);
--ctp-latte-mauve-hsl: hsl(266, 85%, 58%);
--ctp-frappe-mauve: #ca9ee6;
--ctp-frappe-mauve-rgb: rgb(202, 158, 230);
--ctp-frappe-mauve-hsl: hsl(277, 59%, 76%);
--ctp-macchiato-mauve: #c6a0f6;
--ctp-macchiato-mauve-rgb: rgb(198, 160, 246);
--ctp-macchiato-mauve-hsl: hsl(267, 83%, 80%);
--ctp-mocha-mauve: #cba6f7;
--ctp-mocha-mauve-rgb: rgb(203, 166, 247);
--ctp-mocha-mauve-hsl: hsl(267, 84%, 81%);
--ctp-latte-red: #d20f39;
--ctp-latte-red-rgb: rgb(210, 15, 57);
--ctp-latte-red-hsl: hsl(347, 87%, 44%);
--ctp-frappe-red: #e78284;
--ctp-frappe-red-rgb: rgb(231, 130, 132);
--ctp-frappe-red-hsl: hsl(359, 68%, 71%);
--ctp-macchiato-red: #ed8796;
--ctp-macchiato-red-rgb: rgb(237, 135, 150);
--ctp-macchiato-red-hsl: hsl(351, 74%, 73%);
--ctp-mocha-red: #f38ba8;
--ctp-mocha-red-rgb: rgb(243, 139, 168);
--ctp-mocha-red-hsl: hsl(343, 81%, 75%);
--ctp-latte-maroon: #e64553;
--ctp-latte-maroon-rgb: rgb(230, 69, 83);
--ctp-latte-maroon-hsl: hsl(355, 76%, 59%);
--ctp-frappe-maroon: #ea999c;
--ctp-frappe-maroon-rgb: rgb(234, 153, 156);
--ctp-frappe-maroon-hsl: hsl(358, 66%, 76%);
--ctp-macchiato-maroon: #ee99a0;
--ctp-macchiato-maroon-rgb: rgb(238, 153, 160);
--ctp-macchiato-maroon-hsl: hsl(355, 71%, 77%);
--ctp-mocha-maroon: #eba0ac;
--ctp-mocha-maroon-rgb: rgb(235, 160, 172);
--ctp-mocha-maroon-hsl: hsl(350, 65%, 77%);
--ctp-latte-peach: #fe640b;
--ctp-latte-peach-rgb: rgb(254, 100, 11);
--ctp-latte-peach-hsl: hsl(22, 99%, 52%);
--ctp-frappe-peach: #ef9f76;
--ctp-frappe-peach-rgb: rgb(239, 159, 118);
--ctp-frappe-peach-hsl: hsl(20, 79%, 70%);
--ctp-macchiato-peach: #f5a97f;
--ctp-macchiato-peach-rgb: rgb(245, 169, 127);
--ctp-macchiato-peach-hsl: hsl(21, 86%, 73%);
--ctp-mocha-peach: #fab387;
--ctp-mocha-peach-rgb: rgb(250, 179, 135);
--ctp-mocha-peach-hsl: hsl(23, 92%, 75%);
--ctp-latte-yellow: #df8e1d;
--ctp-latte-yellow-rgb: rgb(223, 142, 29);
--ctp-latte-yellow-hsl: hsl(35, 77%, 49%);
--ctp-frappe-yellow: #e5c890;
--ctp-frappe-yellow-rgb: rgb(229, 200, 144);
--ctp-frappe-yellow-hsl: hsl(40, 62%, 73%);
--ctp-macchiato-yellow: #eed49f;
--ctp-macchiato-yellow-rgb: rgb(238, 212, 159);
--ctp-macchiato-yellow-hsl: hsl(40, 70%, 78%);
--ctp-mocha-yellow: #f9e2af;
--ctp-mocha-yellow-rgb: rgb(249, 226, 175);
--ctp-mocha-yellow-hsl: hsl(41, 86%, 83%);
--ctp-latte-green: #40a02b;
--ctp-latte-green-rgb: rgb(64, 160, 43);
--ctp-latte-green-hsl: hsl(109, 58%, 40%);
--ctp-frappe-green: #a6d189;
--ctp-frappe-green-rgb: rgb(166, 209, 137);
--ctp-frappe-green-hsl: hsl(96, 44%, 68%);
--ctp-macchiato-green: #a6da95;
--ctp-macchiato-green-rgb: rgb(166, 218, 149);
--ctp-macchiato-green-hsl: hsl(105, 48%, 72%);
--ctp-mocha-green: #a6e3a1;
--ctp-mocha-green-rgb: rgb(166, 227, 161);
--ctp-mocha-green-hsl: hsl(115, 54%, 76%);
--ctp-latte-teal: #179299;
--ctp-latte-teal-rgb: rgb(23, 146, 153);
--ctp-latte-teal-hsl: hsl(183, 74%, 35%);
--ctp-frappe-teal: #81c8be;
--ctp-frappe-teal-rgb: rgb(129, 200, 190);
--ctp-frappe-teal-hsl: hsl(172, 39%, 65%);
--ctp-macchiato-teal: #8bd5ca;
--ctp-macchiato-teal-rgb: rgb(139, 213, 202);
--ctp-macchiato-teal-hsl: hsl(171, 47%, 69%);
--ctp-mocha-teal: #94e2d5;
--ctp-mocha-teal-rgb: rgb(148, 226, 213);
--ctp-mocha-teal-hsl: hsl(170, 57%, 73%);
--ctp-latte-sky: #04a5e5;
--ctp-latte-sky-rgb: rgb(4, 165, 229);
--ctp-latte-sky-hsl: hsl(197, 97%, 46%);
--ctp-frappe-sky: #99d1db;
--ctp-frappe-sky-rgb: rgb(153, 209, 219);
--ctp-frappe-sky-hsl: hsl(189, 48%, 73%);
--ctp-macchiato-sky: #91d7e3;
--ctp-macchiato-sky-rgb: rgb(145, 215, 227);
--ctp-macchiato-sky-hsl: hsl(189, 59%, 73%);
--ctp-mocha-sky: #89dceb;
--ctp-mocha-sky-rgb: rgb(137, 220, 235);
--ctp-mocha-sky-hsl: hsl(189, 71%, 73%);
--ctp-latte-sapphire: #209fb5;
--ctp-latte-sapphire-rgb: rgb(32, 159, 181);
--ctp-latte-sapphire-hsl: hsl(189, 70%, 42%);
--ctp-frappe-sapphire: #85c1dc;
--ctp-frappe-sapphire-rgb: rgb(133, 193, 220);
--ctp-frappe-sapphire-hsl: hsl(199, 55%, 69%);
--ctp-macchiato-sapphire: #7dc4e4;
--ctp-macchiato-sapphire-rgb: rgb(125, 196, 228);
--ctp-macchiato-sapphire-hsl: hsl(199, 66%, 69%);
--ctp-mocha-sapphire: #74c7ec;
--ctp-mocha-sapphire-rgb: rgb(116, 199, 236);
--ctp-mocha-sapphire-hsl: hsl(199, 76%, 69%);
--ctp-latte-blue: #1e66f5;
--ctp-latte-blue-rgb: rgb(30, 102, 245);
--ctp-latte-blue-hsl: hsl(220, 91%, 54%);
--ctp-frappe-blue: #8caaee;
--ctp-frappe-blue-rgb: rgb(140, 170, 238);
--ctp-frappe-blue-hsl: hsl(222, 74%, 74%);
--ctp-macchiato-blue: #8aadf4;
--ctp-macchiato-blue-rgb: rgb(138, 173, 244);
--ctp-macchiato-blue-hsl: hsl(220, 83%, 75%);
--ctp-mocha-blue: #89b4fa;
--ctp-mocha-blue-rgb: rgb(137, 180, 250);
--ctp-mocha-blue-hsl: hsl(217, 92%, 76%);
--ctp-latte-lavender: #7287fd;
--ctp-latte-lavender-rgb: rgb(114, 135, 253);
--ctp-latte-lavender-hsl: hsl(231, 97%, 72%);
--ctp-frappe-lavender: #babbf1;
--ctp-frappe-lavender-rgb: rgb(186, 187, 241);
--ctp-frappe-lavender-hsl: hsl(239, 66%, 84%);
--ctp-macchiato-lavender: #b7bdf8;
--ctp-macchiato-lavender-rgb: rgb(183, 189, 248);
--ctp-macchiato-lavender-hsl: hsl(234, 82%, 85%);
--ctp-mocha-lavender: #b4befe;
--ctp-mocha-lavender-rgb: rgb(180, 190, 254);
--ctp-mocha-lavender-hsl: hsl(232, 97%, 85%);
--ctp-latte-text: #4c4f69;
--ctp-latte-text-rgb: rgb(76, 79, 105);
--ctp-latte-text-hsl: hsl(234, 16%, 35%);
--ctp-frappe-text: #c6d0f5;
--ctp-frappe-text-rgb: rgb(198, 208, 245);
--ctp-frappe-text-hsl: hsl(227, 70%, 87%);
--ctp-macchiato-text: #cad3f5;
--ctp-macchiato-text-rgb: rgb(202, 211, 245);
--ctp-macchiato-text-hsl: hsl(227, 68%, 88%);
--ctp-mocha-text: #cdd6f4;
--ctp-mocha-text-rgb: rgb(205, 214, 244);
--ctp-mocha-text-hsl: hsl(226, 64%, 88%);
--ctp-latte-subtext1: #5c5f77;
--ctp-latte-subtext1-rgb: rgb(92, 95, 119);
--ctp-latte-subtext1-hsl: hsl(233, 13%, 41%);
--ctp-frappe-subtext1: #b5bfe2;
--ctp-frappe-subtext1-rgb: rgb(181, 191, 226);
--ctp-frappe-subtext1-hsl: hsl(227, 44%, 80%);
--ctp-macchiato-subtext1: #b8c0e0;
--ctp-macchiato-subtext1-rgb: rgb(184, 192, 224);
--ctp-macchiato-subtext1-hsl: hsl(228, 39%, 80%);
--ctp-mocha-subtext1: #bac2de;
--ctp-mocha-subtext1-rgb: rgb(186, 194, 222);
--ctp-mocha-subtext1-hsl: hsl(227, 35%, 80%);
--ctp-latte-subtext0: #6c6f85;
--ctp-latte-subtext0-rgb: rgb(108, 111, 133);
--ctp-latte-subtext0-hsl: hsl(233, 10%, 47%);
--ctp-frappe-subtext0: #a5adce;
--ctp-frappe-subtext0-rgb: rgb(165, 173, 206);
--ctp-frappe-subtext0-hsl: hsl(228, 29%, 73%);
--ctp-macchiato-subtext0: #a5adcb;
--ctp-macchiato-subtext0-rgb: rgb(165, 173, 203);
--ctp-macchiato-subtext0-hsl: hsl(227, 27%, 72%);
--ctp-mocha-subtext0: #a6adc8;
--ctp-mocha-subtext0-rgb: rgb(166, 173, 200);
--ctp-mocha-subtext0-hsl: hsl(228, 24%, 72%);
--ctp-latte-overlay2: #7c7f93;
--ctp-latte-overlay2-rgb: rgb(124, 127, 147);
--ctp-latte-overlay2-hsl: hsl(232, 10%, 53%);
--ctp-frappe-overlay2: #949cbb;
--ctp-frappe-overlay2-rgb: rgb(148, 156, 187);
--ctp-frappe-overlay2-hsl: hsl(228, 22%, 66%);
--ctp-macchiato-overlay2: #939ab7;
--ctp-macchiato-overlay2-rgb: rgb(147, 154, 183);
--ctp-macchiato-overlay2-hsl: hsl(228, 20%, 65%);
--ctp-mocha-overlay2: #9399b2;
--ctp-mocha-overlay2-rgb: rgb(147, 153, 178);
--ctp-mocha-overlay2-hsl: hsl(228, 17%, 64%);
--ctp-latte-overlay1: #8c8fa1;
--ctp-latte-overlay1-rgb: rgb(140, 143, 161);
--ctp-latte-overlay1-hsl: hsl(231, 10%, 59%);
--ctp-frappe-overlay1: #838ba7;
--ctp-frappe-overlay1-rgb: rgb(131, 139, 167);
--ctp-frappe-overlay1-hsl: hsl(227, 17%, 58%);
--ctp-macchiato-overlay1: #8087a2;
--ctp-macchiato-overlay1-rgb: rgb(128, 135, 162);
--ctp-macchiato-overlay1-hsl: hsl(228, 15%, 57%);
--ctp-mocha-overlay1: #7f849c;
--ctp-mocha-overlay1-rgb: rgb(127, 132, 156);
--ctp-mocha-overlay1-hsl: hsl(230, 13%, 55%);
--ctp-latte-overlay0: #9ca0b0;
--ctp-latte-overlay0-rgb: rgb(156, 160, 176);
--ctp-latte-overlay0-hsl: hsl(228, 11%, 65%);
--ctp-frappe-overlay0: #737994;
--ctp-frappe-overlay0-rgb: rgb(115, 121, 148);
--ctp-frappe-overlay0-hsl: hsl(229, 13%, 52%);
--ctp-macchiato-overlay0: #6e738d;
--ctp-macchiato-overlay0-rgb: rgb(110, 115, 141);
--ctp-macchiato-overlay0-hsl: hsl(230, 12%, 49%);
--ctp-mocha-overlay0: #6c7086;
--ctp-mocha-overlay0-rgb: rgb(108, 112, 134);
--ctp-mocha-overlay0-hsl: hsl(231, 11%, 47%);
--ctp-latte-surface2: #acb0be;
--ctp-latte-surface2-rgb: rgb(172, 176, 190);
--ctp-latte-surface2-hsl: hsl(227, 12%, 71%);
--ctp-frappe-surface2: #626880;
--ctp-frappe-surface2-rgb: rgb(98, 104, 128);
--ctp-frappe-surface2-hsl: hsl(228, 13%, 44%);
--ctp-macchiato-surface2: #5b6078;
--ctp-macchiato-surface2-rgb: rgb(91, 96, 120);
--ctp-macchiato-surface2-hsl: hsl(230, 14%, 41%);
--ctp-mocha-surface2: #585b70;
--ctp-mocha-surface2-rgb: rgb(88, 91, 112);
--ctp-mocha-surface2-hsl: hsl(233, 12%, 39%);
--ctp-latte-surface1: #bcc0cc;
--ctp-latte-surface1-rgb: rgb(188, 192, 204);
--ctp-latte-surface1-hsl: hsl(225, 14%, 77%);
--ctp-frappe-surface1: #51576d;
--ctp-frappe-surface1-rgb: rgb(81, 87, 109);
--ctp-frappe-surface1-hsl: hsl(227, 15%, 37%);
--ctp-macchiato-surface1: #494d64;
--ctp-macchiato-surface1-rgb: rgb(73, 77, 100);
--ctp-macchiato-surface1-hsl: hsl(231, 16%, 34%);
--ctp-mocha-surface1: #45475a;
--ctp-mocha-surface1-rgb: rgb(69, 71, 90);
--ctp-mocha-surface1-hsl: hsl(234, 13%, 31%);
--ctp-latte-surface0: #ccd0da;
--ctp-latte-surface0-rgb: rgb(204, 208, 218);
--ctp-latte-surface0-hsl: hsl(223, 16%, 83%);
--ctp-frappe-surface0: #414559;
--ctp-frappe-surface0-rgb: rgb(65, 69, 89);
--ctp-frappe-surface0-hsl: hsl(230, 16%, 30%);
--ctp-macchiato-surface0: #363a4f;
--ctp-macchiato-surface0-rgb: rgb(54, 58, 79);
--ctp-macchiato-surface0-hsl: hsl(230, 19%, 26%);
--ctp-mocha-surface0: #313244;
--ctp-mocha-surface0-rgb: rgb(49, 50, 68);
--ctp-mocha-surface0-hsl: hsl(237, 16%, 23%);
--ctp-latte-base: #eff1f5;
--ctp-latte-base-rgb: rgb(239, 241, 245);
--ctp-latte-base-hsl: hsl(220, 23%, 95%);
--ctp-frappe-base: #303446;
--ctp-frappe-base-rgb: rgb(48, 52, 70);
--ctp-frappe-base-hsl: hsl(229, 19%, 23%);
--ctp-macchiato-base: #24273a;
--ctp-macchiato-base-rgb: rgb(36, 39, 58);
--ctp-macchiato-base-hsl: hsl(232, 23%, 18%);
--ctp-mocha-base: #1e1e2e;
--ctp-mocha-base-rgb: rgb(30, 30, 46);
--ctp-mocha-base-hsl: hsl(240, 21%, 15%);
--ctp-latte-mantle: #e6e9ef;
--ctp-latte-mantle-rgb: rgb(230, 233, 239);
--ctp-latte-mantle-hsl: hsl(220, 22%, 92%);
--ctp-frappe-mantle: #292c3c;
--ctp-frappe-mantle-rgb: rgb(41, 44, 60);
--ctp-frappe-mantle-hsl: hsl(231, 19%, 20%);
--ctp-macchiato-mantle: #1e2030;
--ctp-macchiato-mantle-rgb: rgb(30, 32, 48);
--ctp-macchiato-mantle-hsl: hsl(233, 23%, 15%);
--ctp-mocha-mantle: #181825;
--ctp-mocha-mantle-rgb: rgb(24, 24, 37);
--ctp-mocha-mantle-hsl: hsl(240, 21%, 12%);
--ctp-latte-crust: #dce0e8;
--ctp-latte-crust-rgb: rgb(220, 224, 232);
--ctp-latte-crust-hsl: hsl(220, 21%, 89%);
--ctp-frappe-crust: #232634;
--ctp-frappe-crust-rgb: rgb(35, 38, 52);
--ctp-frappe-crust-hsl: hsl(229, 20%, 17%);
--ctp-macchiato-crust: #181926;
--ctp-macchiato-crust-rgb: rgb(24, 25, 38);
--ctp-macchiato-crust-hsl: hsl(236, 23%, 12%);
--ctp-mocha-crust: #11111b;
--ctp-mocha-crust-rgb: rgb(17, 17, 27);
--ctp-mocha-crust-hsl: hsl(240, 23%, 9%);
}

View file

@ -1,11 +0,0 @@
show=drun
width=750
height=400
always_parse_args=true
show_all=false
term=kitty
hide_scroll=true
print_command=true
insensitive=true
prompt=
columns=2

View file

@ -1,164 +0,0 @@
@define-color rosewater #f2d5cf;
@define-color rosewater-rgb rgb(242, 213, 207);
@define-color flamingo #eebebe;
@define-color flamingo-rgb rgb(238, 190, 190);
@define-color pink #f4b8e4;
@define-color pink-rgb rgb(244, 184, 228);
@define-color mauve #ca9ee6;
@define-color mauve-rgb rgb(202, 158, 230);
@define-color red #e78284;
@define-color red-rgb rgb(231, 130, 132);
@define-color maroon #ea999c;
@define-color maroon-rgb rgb(234, 153, 156);
@define-color peach #ef9f76;
@define-color peach-rgb rgb(239, 159, 118);
@define-color yellow #e5c890;
@define-color yellow-rgb rgb(229, 200, 144);
@define-color green #a6d189;
@define-color green-rgb rgb(166, 209, 137);
@define-color teal #81c8be;
@define-color teal-rgb rgb(129, 200, 190);
@define-color sky #99d1db;
@define-color sky-rgb rgb(153, 209, 219);
@define-color sapphire #85c1dc;
@define-color sapphire-rgb rgb(133, 193, 220);
@define-color blue #8caaee;
@define-color blue-rgb rgb(140, 170, 238);
@define-color lavender #babbf1;
@define-color lavender-rgb rgb(186, 187, 241);
@define-color text #c6d0f5;
@define-color text-rgb rgb(198, 208, 245);
@define-color subtext1 #b5bfe2;
@define-color subtext1-rgb rgb(181, 191, 226);
@define-color subtext0 #a5adce;
@define-color subtext0-rgb rgb(165, 173, 206);
@define-color overlay2 #949cbb;
@define-color overlay2-rgb rgb(148, 156, 187);
@define-color overlay1 #838ba7;
@define-color overlay1-rgb rgb(131, 139, 167);
@define-color overlay0 #737994;
@define-color overlay0-rgb rgb(115, 121, 148);
@define-color surface2 #626880;
@define-color surface2-rgb rgb(98, 104, 128);
@define-color surface1 #51576d;
@define-color surface1-rgb rgb(81, 87, 109);
@define-color surface0 #414559;
@define-color surface0-rgb rgb(65, 69, 89);
@define-color base #303446;
@define-color base-rgb rgb(48, 52, 70);
@define-color mantle #292c3c;
@define-color mantle-rgb rgb(41, 44, 60);
@define-color crust #232634;
@define-color crust-rgb rgb(35, 38, 52);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #dc8a78;
@define-color rosewater-rgb rgb(220, 138, 120);
@define-color flamingo #dd7878;
@define-color flamingo-rgb rgb(221, 120, 120);
@define-color pink #ea76cb;
@define-color pink-rgb rgb(234, 118, 203);
@define-color mauve #8839ef;
@define-color mauve-rgb rgb(136, 57, 239);
@define-color red #d20f39;
@define-color red-rgb rgb(210, 15, 57);
@define-color maroon #e64553;
@define-color maroon-rgb rgb(230, 69, 83);
@define-color peach #fe640b;
@define-color peach-rgb rgb(254, 100, 11);
@define-color yellow #df8e1d;
@define-color yellow-rgb rgb(223, 142, 29);
@define-color green #40a02b;
@define-color green-rgb rgb(64, 160, 43);
@define-color teal #179299;
@define-color teal-rgb rgb(23, 146, 153);
@define-color sky #04a5e5;
@define-color sky-rgb rgb(4, 165, 229);
@define-color sapphire #209fb5;
@define-color sapphire-rgb rgb(32, 159, 181);
@define-color blue #1e66f5;
@define-color blue-rgb rgb(30, 102, 245);
@define-color lavender #7287fd;
@define-color lavender-rgb rgb(114, 135, 253);
@define-color text #4c4f69;
@define-color text-rgb rgb(76, 79, 105);
@define-color subtext1 #5c5f77;
@define-color subtext1-rgb rgb(92, 95, 119);
@define-color subtext0 #6c6f85;
@define-color subtext0-rgb rgb(108, 111, 133);
@define-color overlay2 #7c7f93;
@define-color overlay2-rgb rgb(124, 127, 147);
@define-color overlay1 #8c8fa1;
@define-color overlay1-rgb rgb(140, 143, 161);
@define-color overlay0 #9ca0b0;
@define-color overlay0-rgb rgb(156, 160, 176);
@define-color surface2 #acb0be;
@define-color surface2-rgb rgb(172, 176, 190);
@define-color surface1 #bcc0cc;
@define-color surface1-rgb rgb(188, 192, 204);
@define-color surface0 #ccd0da;
@define-color surface0-rgb rgb(204, 208, 218);
@define-color base #eff1f5;
@define-color base-rgb rgb(239, 241, 245);
@define-color mantle #e6e9ef;
@define-color mantle-rgb rgb(230, 233, 239);
@define-color crust #dce0e8;
@define-color crust-rgb rgb(220, 224, 232);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #f4dbd6;
@define-color rosewater-rgb rgb(244, 219, 214);
@define-color flamingo #f0c6c6;
@define-color flamingo-rgb rgb(240, 198, 198);
@define-color pink #f5bde6;
@define-color pink-rgb rgb(245, 189, 230);
@define-color mauve #c6a0f6;
@define-color mauve-rgb rgb(198, 160, 246);
@define-color red #ed8796;
@define-color red-rgb rgb(237, 135, 150);
@define-color maroon #ee99a0;
@define-color maroon-rgb rgb(238, 153, 160);
@define-color peach #f5a97f;
@define-color peach-rgb rgb(245, 169, 127);
@define-color yellow #eed49f;
@define-color yellow-rgb rgb(238, 212, 159);
@define-color green #a6da95;
@define-color green-rgb rgb(166, 218, 149);
@define-color teal #8bd5ca;
@define-color teal-rgb rgb(139, 213, 202);
@define-color sky #91d7e3;
@define-color sky-rgb rgb(145, 215, 227);
@define-color sapphire #7dc4e4;
@define-color sapphire-rgb rgb(125, 196, 228);
@define-color blue #8aadf4;
@define-color blue-rgb rgb(138, 173, 244);
@define-color lavender #b7bdf8;
@define-color lavender-rgb rgb(183, 189, 248);
@define-color text #cad3f5;
@define-color text-rgb rgb(202, 211, 245);
@define-color subtext1 #b8c0e0;
@define-color subtext1-rgb rgb(184, 192, 224);
@define-color subtext0 #a5adcb;
@define-color subtext0-rgb rgb(165, 173, 203);
@define-color overlay2 #939ab7;
@define-color overlay2-rgb rgb(147, 154, 183);
@define-color overlay1 #8087a2;
@define-color overlay1-rgb rgb(128, 135, 162);
@define-color overlay0 #6e738d;
@define-color overlay0-rgb rgb(110, 115, 141);
@define-color surface2 #5b6078;
@define-color surface2-rgb rgb(91, 96, 120);
@define-color surface1 #494d64;
@define-color surface1-rgb rgb(73, 77, 100);
@define-color surface0 #363a4f;
@define-color surface0-rgb rgb(54, 58, 79);
@define-color base #24273a;
@define-color base-rgb rgb(36, 39, 58);
@define-color mantle #1e2030;
@define-color mantle-rgb rgb(30, 32, 48);
@define-color crust #181926;
@define-color crust-rgb rgb(24, 25, 38);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,164 +0,0 @@
@define-color rosewater #f5e0dc;
@define-color rosewater-rgb rgb(245, 224, 220);
@define-color flamingo #f2cdcd;
@define-color flamingo-rgb rgb(242, 205, 205);
@define-color pink #f5c2e7;
@define-color pink-rgb rgb(245, 194, 231);
@define-color mauve #cba6f7;
@define-color mauve-rgb rgb(203, 166, 247);
@define-color red #f38ba8;
@define-color red-rgb rgb(243, 139, 168);
@define-color maroon #eba0ac;
@define-color maroon-rgb rgb(235, 160, 172);
@define-color peach #fab387;
@define-color peach-rgb rgb(250, 179, 135);
@define-color yellow #f9e2af;
@define-color yellow-rgb rgb(249, 226, 175);
@define-color green #a6e3a1;
@define-color green-rgb rgb(166, 227, 161);
@define-color teal #94e2d5;
@define-color teal-rgb rgb(148, 226, 213);
@define-color sky #89dceb;
@define-color sky-rgb rgb(137, 220, 235);
@define-color sapphire #74c7ec;
@define-color sapphire-rgb rgb(116, 199, 236);
@define-color blue #89b4fa;
@define-color blue-rgb rgb(137, 180, 250);
@define-color lavender #b4befe;
@define-color lavender-rgb rgb(180, 190, 254);
@define-color text #cdd6f4;
@define-color text-rgb rgb(205, 214, 244);
@define-color subtext1 #bac2de;
@define-color subtext1-rgb rgb(186, 194, 222);
@define-color subtext0 #a6adc8;
@define-color subtext0-rgb rgb(166, 173, 200);
@define-color overlay2 #9399b2;
@define-color overlay2-rgb rgb(147, 153, 178);
@define-color overlay1 #7f849c;
@define-color overlay1-rgb rgb(127, 132, 156);
@define-color overlay0 #6c7086;
@define-color overlay0-rgb rgb(108, 112, 134);
@define-color surface2 #585b70;
@define-color surface2-rgb rgb(88, 91, 112);
@define-color surface1 #45475a;
@define-color surface1-rgb rgb(69, 71, 90);
@define-color surface0 #313244;
@define-color surface0-rgb rgb(49, 50, 68);
@define-color base #1e1e2e;
@define-color base-rgb rgb(30, 30, 46);
@define-color mantle #181825;
@define-color mantle-rgb rgb(24, 24, 37);
@define-color crust #11111b;
@define-color crust-rgb rgb(17, 17, 27);
* {
font-family: 'Inconsolata Nerd Font', monospace;
font-size: 14px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @lavender;
border-radius: 0.1em;
background-color: @base;
animation: slideIn 0.5s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.1em;
color: @text;
background-color: @base;
animation: fadeIn 0.5s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @lavender;
}
/* Selected Entry */
#entry:selected {
border: 0.11em solid @lavender;
}
#entry:selected #text {
color: @mauve;
}
#entry:drop(active) {
background-color: @lavender!important;
}

View file

@ -1,233 +0,0 @@
# 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, lib, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Use latest kernel.
boot.kernelPackages = pkgs.linuxPackages_latest;
environment.persistence."/persist" = {
enable = true;
hideMounts = true;
directories = [
"/var/log"
"/var/lib/bluetooth"
"/var/lib/nixos"
"/var/lib/libvirt"
"/etc/NetworkManager/system-connections"
];
files = [
"/etc/machine-id"
];
};
services.fwupd.enable = true;
networking.hostName = "yeva"; # Define your hostname.
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Athens";
# 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";
};
# Define a user account. Don't forget to set a password with passwd.
programs.zsh.enable = true; # home-manager already installs this but nixos complains w/o it
users.users.xory = {
isNormalUser = true;
description = "xory";
extraGroups = [ "networkmanager" "wheel" "docker" "libvirt" "dialout" ];
shell = pkgs.zsh;
initialHashedPassword = "$6$JXLpG5JYMJgZndm9$0sC8uPJ99cYL.hNv3DFQ20ky8tiZoxioe9GlMEanTwAD99LJ175/bHtN6Bm6bYsQG1BVGRdmphnXEcWS9ApoK0";
};
# ZeroTier
services.zerotierone.enable = true;
services.zerotierone.joinNetworks = [ "b3ce837c63" "363c67c55a726a89" ];
# nix-ld
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
libGL
SDL2
];
# Firejail
programs.firejail = {
enable = true;
wrappedBinaries =
let
apps = {
firefox = {};
"signal-desktop-bin" = { name = "signal-desktop"; };
vesktop = {};
spotify = {};
obsidian = {};
};
in
lib.mapAttrs (pkg: conf:
let
binName = conf.name or pkg;
in
{
executable = "${pkgs.${pkg}}/bin/${binName}";
profile = "${pkgs.firejail}/etc/firejail/${binName}.profile";
extraArgs = [
"--env=GTK_THEME=Adwaita:dark"
];
}) apps;
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm.enable = true;
# services.desktopManager.plasma6.enable = true;
# Enable Hyprland.
programs.hyprland.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
# Enable CUPS to print documents.
# services.printing.enable = true;
programs.gnupg.agent.enable = true;
# Enable sound with pipewire.
services.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;
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General.Experimental = true;
General.FastConnectable = true;
Policy.AutoEnable = true;
};
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Enable automatic login for the user.
services.displayManager.autoLogin.enable = true;
services.displayManager.autoLogin.user = "xory";
# Install firefox.
programs.firefox.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
neovim
git
framework-tool
inputmodule-control
];
programs.steam.enable = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 2d";
};
programs.virt-manager.enable = true;
virtualisation.libvirtd.enable = true;
virtualisation.libvirtd.qemu.swtpm.enable = true;
virtualisation.libvirtd.qemu.vhostUserPackages = [ pkgs.virtiofsd ];
virtualisation.spiceUSBRedirection.enable = true;
virtualisation.docker.enable = true;
services = {
syncthing = {
enable = true;
group = "users";
user = "xory";
dataDir = "/home/xory/Sync"; # Default folder for new synced folders
configDir = "/home/xory/Sync/.config/syncthing"; # Folder for Syncthing's settings and keys
};
};
services.openssh.enable = true; # TODO: add key-based auth
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ 8000 22000 ];
networking.firewall.allowedUDPPorts = [ 8000 22000 21027 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# 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 = "25.05"; # Did you read the comment?
}

View file

@ -1,59 +0,0 @@
# 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" ];
boot.initrd.kernelModules = [ "dm-snapshot" "cryptd" ];
boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/200718ce-94cf-459d-8dc6-a740d21db404";
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "none";
fsType = "tmpfs";
options = [ "size=4G" ];
};
fileSystems."/persist" =
{
device = "/dev/disk/by-uuid/582e1f64-6395-4815-a3f2-f37835523d9c";
fsType = "ext4";
neededForBoot = true;
};
fileSystems."/nix" =
{ device = "/dev/disk/by-uuid/10203712-12cb-40ba-a97d-ab3b2c8497e7";
fsType = "ext4";
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/e1cf3d21-564b-4d4d-9814-65f26d5c1e2c";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/4CFE-E0C6";
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.eno0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wwp0s20f0u6.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -1,95 +0,0 @@
{ config, pkgs, ... }:
{
home.username = "xory";
home.homeDirectory = "/home/xory";
home.packages = with pkgs; [
neovim
fastfetch
git
cava
kdePackages.qtwebsockets
(python313.withPackages (python-pkgs: [
python313Packages.websockets
python313Packages.requests # basic python test env
]))
simplex-chat-desktop
qbittorrent
ffmpeg
yt-dlp
prismlauncher
keepassxc
obs-studio
mpv
kdePackages.kdenlive
gimp
inkscape
krita
distrobox
screen
arduino-ide
(lutris.override {
extraLibraries = pkgs: [
wineWowPackages.stable
];
})
woeusb-ng
ntfs3g
hyprpaper
hyprsunset
grim
slurp
input-leap
viber
hyprpolkitagent
];
home.file = {
".config/nvim/init.lua" = {
enable = true;
source = ./config/nvim/init.lua;
};
".config/hypr" = {
enable = true;
recursive = true;
source = ./config/hypr;
};
".config/waybar" = {
enable = true;
recursive = true;
source = ./config/waybar;
};
".config/wofi" = {
enable = true;
recursive = true;
source = ./config/wofi;
};
};
programs.zsh = {
enable = true;
enableCompletion = true;
shellAliases = {
"rebuild" = "sudo nixos-rebuild switch --flake ~/dots";
};
syntaxHighlighting.enable = true;
};
programs.starship.enable = true;
programs.kitty = {
enable = true;
themeFile = "Catppuccin-Mocha";
font = {
name = "Inconsolata Nerd Font";
package = pkgs.nerd-fonts.inconsolata;
};
settings.background_opacity = 0.8;
};
wayland.windowManager.hyprland.enable = true;
programs.waybar.enable = true;
programs.wofi.enable = true;
services.dunst.enable = true;
home.stateVersion = "25.05";
}